/* ============================================================
   MOTION STUDIO — "Null Gravity"
   Monochrome · cinematic · frosted glass · suspended motion
   ============================================================ */

:root{
  --void:#070708;
  --void-2:#0c0c0f;
  --silver:#9ea2aa;
  --ash:#5f636b;
  --milk:#e7e9ef;
  --bone:#f6f8fc;
  --glass:rgba(255,255,255,.07);
  --glass-edge:rgba(255,255,255,.28);
  --ease:cubic-bezier(.22,.61,.36,1);
  --serif:"Times New Roman", Georgia, serif;
  --sans:"Helvetica Neue", Arial, sans-serif;
  --mono:"SFMono-Regular", ui-monospace, Menlo, Consolas, monospace;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--void);
  color:var(--bone);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,video{display:block}

/* ----------------------------------------------------------------
   FIXED CINEMATIC STAGE — three clips stacked, crossfade on scroll
   ---------------------------------------------------------------- */
.stage{
  position:fixed;
  inset:0;
  width:100vw;
  height:100vh;            /* fallback */
  height:100dvh;
  z-index:0;
  background:var(--void);
  overflow:hidden;
}
/* the canvas is painted frame-by-frame by JS (cover-fit, never letterboxed) */
.film{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
}

/* legibility scrim + subtle film grain */
.stage-scrim{
  position:absolute; inset:0;
  background:
    radial-gradient(120% 90% at 50% 40%, transparent 38%, rgba(0,0,0,.42) 100%),
    linear-gradient(180deg, rgba(0,0,0,.30) 0%, transparent 28%, transparent 68%, rgba(0,0,0,.40) 100%);
  pointer-events:none;
}
.stage-grain{
  position:absolute; inset:-50%;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
  opacity:.05;
  mix-blend-mode:overlay;
  pointer-events:none;
}

/* ----------------------------------------------------------------
   PRELOADER — sequence loads behind a counting plate
   ---------------------------------------------------------------- */
.loader{
  position:fixed;
  inset:0;
  z-index:90;
  background:var(--void);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1.4rem;
  transition:opacity .8s var(--ease), visibility .8s var(--ease);
}
.loader.done{opacity:0; visibility:hidden; pointer-events:none}
.loader-mark{
  font-family:var(--mono);
  font-size:clamp(.7rem,1.7vw,.9rem);
  letter-spacing:.46em;
  text-indent:.46em;
  text-transform:uppercase;
  color:var(--bone);
}
.loader-bar{
  position:relative;
  width:min(280px,62vw);
  height:1px;
  background:rgba(255,255,255,.14);
  overflow:hidden;
}
.loader-bar span{
  position:absolute;
  inset:0 auto 0 0;
  width:0%;
  background:var(--bone);
  transition:width .25s linear;
}
.loader-pct{
  font-family:var(--serif);
  font-size:clamp(2.6rem,9vw,5rem);
  line-height:1;
  color:var(--bone);
  display:flex;
  align-items:flex-start;
  gap:.12em;
}
.loader-pct i{
  font-style:normal;
  font-family:var(--mono);
  font-size:.7rem;
  letter-spacing:.1em;
  color:var(--silver);
  margin-top:.4em;
}
.loader-sub{
  font-family:var(--mono);
  font-size:.62rem;
  letter-spacing:.34em;
  text-indent:.34em;
  text-transform:uppercase;
  color:var(--ash);
}

/* ----------------------------------------------------------------
   FLOW
   ---------------------------------------------------------------- */
main{position:relative; z-index:1}
.panel{
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* ---- SECTION 1 — HERO ---- */
.hero{
  position:relative;
  min-height:130vh;
  text-align:center;
}
/* the visible composition lives in the first viewport, then scrolls away */
.hero-inner{
  position:relative;
  height:100vh;
  height:100dvh;
  display:flex;
  flex-direction:column;
  padding:clamp(2rem,6vh,5rem) 1.5rem;
}

/* ---- CINEMATIC STATEMENTS — bold sans, suspended over the film ---- */
.statement{
  position:relative;
  z-index:1;
  min-height:120vh;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:14vh clamp(1.25rem,5vw,3rem);
}
.statement .line{
  font-family:var(--sans);
  font-weight:800;
  font-size:clamp(2.6rem,10vw,7.5rem);
  line-height:.98;
  letter-spacing:-.02em;
  color:var(--bone);
  text-shadow:0 2px 60px rgba(0,0,0,.6);
  opacity:0;
  will-change:opacity, transform;
}
.statement .line em{
  font-style:normal;
  color:var(--silver);
}
.statement .kick{
  font-family:var(--mono);
  font-size:clamp(.62rem,1.5vw,.8rem);
  letter-spacing:.5em;
  text-indent:.5em;
  text-transform:uppercase;
  color:var(--silver);
  margin-bottom:clamp(1.2rem,3vh,2rem);
  opacity:0;
}
.st-b .line{font-size:clamp(2.1rem,7.6vw,5.6rem); letter-spacing:-.01em}
.st-e .line{font-size:clamp(3.4rem,15vw,11rem); letter-spacing:-.03em}

/* top bar — hairline, brand left, glass button right */
.topbar{
  position:absolute;
  top:0; left:0; right:0;
  z-index:5;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:clamp(.9rem,2.2vh,1.4rem) clamp(1.25rem,4vw,2.6rem);
  border-top:2px solid #000;
  background:linear-gradient(180deg, rgba(0,0,0,.55), rgba(0,0,0,0));
}
.topbar::after{
  content:"";
  position:absolute;
  left:clamp(1.25rem,4vw,2.6rem);
  right:clamp(1.25rem,4vw,2.6rem);
  bottom:0;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.18), transparent);
}
.brand{
  font-family:var(--mono);
  font-size:clamp(.7rem,1.6vw,.84rem);
  letter-spacing:.34em;
  text-indent:.34em;
  text-transform:uppercase;
  color:var(--bone);
  white-space:nowrap;
  text-shadow:0 1px 14px rgba(0,0,0,.6);
}
.nav{
  display:flex;
  align-items:center;
  gap:clamp(1rem,2.6vw,2.1rem);
}
.nav-link{
  font-family:var(--mono);
  font-size:clamp(.6rem,1.3vw,.72rem);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--silver);
  text-decoration:none;
  white-space:nowrap;
  transition:color .35s var(--ease);
}
.nav-link:hover,.nav-link:focus-visible{color:var(--bone); outline:none}
@media (max-width:560px){ .nav-link{display:none} }

/* primary CTA — WhatsApp pill */
.cta-pill{
  font-family:var(--mono);
  font-size:clamp(.62rem,1.4vw,.74rem);
  letter-spacing:.22em;
  text-indent:.22em;
  text-transform:uppercase;
  color:#fff;
  text-decoration:none;
  white-space:nowrap;
  padding:.72em 1.5em;
  border-radius:999px;
  background:linear-gradient(180deg,#ff4d4d,#e11d1d);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 1px 0 rgba(255,255,255,.35) inset, 0 10px 28px -10px rgba(225,29,29,.7);
  transition:transform .4s var(--ease), box-shadow .4s var(--ease), filter .4s var(--ease);
}
.cta-pill:hover,.cta-pill:focus-visible{
  transform:translateY(-2px);
  filter:brightness(1.08);
  box-shadow:0 1px 0 rgba(255,255,255,.45) inset, 0 16px 36px -10px rgba(225,29,29,.85);
  outline:none;
}

.ticket{
  position:absolute;
  top:clamp(5rem,14vh,8rem);
  left:50%;
  transform:translateX(-50%);
  font-family:var(--serif);
  font-size:clamp(1.6rem,4.4vw,3rem);
  letter-spacing:.42em;
  text-indent:.42em;
  font-weight:400;
  color:var(--bone);
  text-decoration:none;
  white-space:nowrap;
  text-shadow:0 2px 30px rgba(0,0,0,.6);
  transition:letter-spacing .5s var(--ease), opacity .4s var(--ease), color .4s var(--ease);
}
.ticket::after{
  content:"";
  position:absolute;
  left:50%; bottom:-.5em;
  width:0; height:1px;
  background:var(--bone);
  transform:translateX(-50%);
  transition:width .5s var(--ease);
}
.ticket:hover,.ticket:focus-visible{
  letter-spacing:.5em; text-indent:.5em;
  color:#fff; outline:none;
}
.ticket:hover::after,.ticket:focus-visible::after{width:2.2em}

.enter{
  position:absolute;
  top:clamp(8rem,21vh,11.5rem);
  left:50%;
  transform:translateX(-50%);
  font-family:var(--mono);
  font-size:clamp(.62rem,1.4vw,.8rem);
  letter-spacing:.5em;
  text-indent:.5em;
  text-transform:uppercase;
  color:var(--silver);
  white-space:nowrap;
  animation:enterPulse 3.2s var(--ease) infinite;
}
@keyframes enterPulse{0%,100%{opacity:.45}50%{opacity:.95}}

.tagline{
  position:absolute;
  left:clamp(1.5rem,5vw,4.5rem);
  bottom:clamp(2.5rem,9vh,5.5rem);
  max-width:min(28ch,80vw);
  text-align:left;
  font-family:var(--serif);
  font-size:clamp(1.35rem,3.4vw,2.6rem);
  line-height:1.18;
  font-weight:400;
  letter-spacing:.01em;
  text-shadow:0 2px 24px rgba(0,0,0,.55);
}
.tagline span{
  display:inline-block;
  margin-top:.55em;
  font-family:var(--mono);
  font-size:clamp(.7rem,1.5vw,.92rem);
  line-height:1.7;
  letter-spacing:.12em;
  color:var(--silver);
  text-shadow:0 2px 16px rgba(0,0,0,.6);
}

/* scroll cue line */
.hero-inner::after{
  content:"";
  position:absolute;
  left:50%; bottom:1.4rem;
  width:1px; height:clamp(2rem,7vh,4rem);
  background:linear-gradient(var(--silver), transparent);
  transform:translateX(-50%);
  opacity:.6;
}

/* ---- SECTION 3 — SERVICES ---- */
.services{
  position:relative;
  padding:18vh clamp(1.25rem,5vw,4rem) 24vh;
  display:flex;
  flex-direction:column;
  align-items:center;
}
.services-head{
  text-align:center;
  margin-bottom:clamp(3rem,9vh,7rem);
}
.services-head .kicker{
  display:block;
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.5em;
  text-indent:.5em;
  color:var(--silver);
  margin-bottom:1.2rem;
}
.services-head h2{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(2rem,6vw,4.2rem);
  letter-spacing:.02em;
  text-shadow:0 2px 30px rgba(0,0,0,.5);
}

.cards{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(2.2rem,6vh,4.5rem);
  width:100%;
  max-width:560px;
  perspective:1600px;
}

.card{
  width:100%;
  padding:clamp(1.6rem,4vw,2.6rem) clamp(1.5rem,4vw,2.4rem);
  border-radius:20px;
  background:var(--glass);
  border:1px solid var(--glass-edge);
  -webkit-backdrop-filter:blur(22px) saturate(110%);
  backdrop-filter:blur(22px) saturate(110%);
  box-shadow:
    0 1px 0 rgba(255,255,255,.18) inset,
    0 30px 60px -20px rgba(0,0,0,.65),
    0 8px 24px -12px rgba(0,0,0,.55);
  /* hidden state — suspended, waiting to fall into place */
  opacity:0;
  transform:translateY(60px) rotateX(14deg) scale(.96);
  transform-origin:center top;
  transition:opacity .9s var(--ease), transform 1s var(--ease);
  will-change:opacity, transform;
}
.card.in{
  opacity:1;
  transform:translateY(0) rotateX(0) scale(1);
}
.card-no{
  display:block;
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.34em;
  color:var(--silver);
  margin-bottom:.7rem;
}
.card h3{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(1.35rem,3.6vw,1.95rem);
  line-height:1.15;
  margin-bottom:1.25rem;
  letter-spacing:.01em;
}
.card ul{
  list-style:none;
  display:flex;
  flex-direction:column;
  gap:.5rem;
}
.card li{
  font-size:clamp(.84rem,1.7vw,.95rem);
  line-height:1.45;
  color:var(--milk);
  padding-left:1.1rem;
  position:relative;
}
.card li::before{
  content:"";
  position:absolute;
  left:0; top:.62em;
  width:4px; height:4px;
  border-radius:50%;
  background:var(--silver);
  opacity:.7;
}

/* ---- SECTION 5 — CLOSING (black) ---- */
.closing{
  position:relative;
  z-index:2;
  min-height:100vh;
  min-height:100dvh;
  background:#000;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  text-align:center;
  padding:clamp(9vh,13vh,15vh) 1.5rem clamp(6vh,9vh,10vh);
  overflow:hidden;
}
/* title centers in the space above the cube; cube holds the lower zone */
.closing-title{margin-block:auto}
.closing-title h1{
  font-family:var(--serif);
  font-weight:400;
  font-size:clamp(2.6rem,11vw,8rem);
  letter-spacing:.06em;
  line-height:1;
  color:var(--bone);
}
.closing-title .city{
  margin-top:1.1rem;
  font-family:var(--sans);
  font-weight:300;
  font-size:clamp(1rem,3vw,1.6rem);
  letter-spacing:.7em;
  text-indent:.7em;
  text-transform:uppercase;
  color:var(--silver);
}
.closing-title .coords{
  margin-top:1.6rem;
  font-family:var(--mono);
  font-size:.7rem;
  letter-spacing:.3em;
  color:var(--ash);
}

/* floating 3D box — 4.7 x 4.7 cm frosted monolith */
.ticket-box{
  position:relative;
  margin-inline:auto;
  width:max-content;
  flex:none;
  background:none;
  border:none;
  cursor:pointer;
  text-decoration:none;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(1.8rem,4.5vh,2.8rem);
  padding:1.2rem 2rem 0;
}
.cube-stage{
  position:relative;
  width:4.7cm;
  height:4.7cm;
  perspective:900px;
  transition:transform .5s var(--ease);
}
/* ambient glow behind the cube */
.cube-stage::before{
  content:"";
  position:absolute;
  inset:-30%;
  background:radial-gradient(circle at 50% 45%, rgba(255,255,255,.16), transparent 62%);
  filter:blur(14px);
  pointer-events:none;
}
.cube{
  position:absolute;
  inset:0;
  transform-style:preserve-3d;
  transform:rotateX(-20deg) rotateY(0deg);
  animation:cubeFloat 16s ease-in-out infinite;
  will-change:transform;
}
.face{
  position:absolute;
  width:4.7cm; height:4.7cm;
  background:linear-gradient(135deg, rgba(255,255,255,.14), rgba(255,255,255,.02) 60%);
  border:1px solid rgba(255,255,255,.34);
  -webkit-backdrop-filter:blur(9px) saturate(120%);
  backdrop-filter:blur(9px) saturate(120%);
  box-shadow:
    inset 0 0 1px rgba(255,255,255,.8),
    inset 0 0 46px rgba(255,255,255,.07);
}
/* inner registration mark — echoes the Null Gravity plate */
.face::after{
  content:"";
  position:absolute;
  inset:18%;
  border:1px solid rgba(255,255,255,.10);
}
.face.front {transform:translateZ(2.35cm)}
.face.back  {transform:rotateY(180deg) translateZ(2.35cm)}
.face.right {transform:rotateY(90deg)  translateZ(2.35cm)}
.face.left  {transform:rotateY(-90deg) translateZ(2.35cm)}
.face.top   {transform:rotateX(90deg)  translateZ(2.35cm);
             background:linear-gradient(135deg, rgba(255,255,255,.30), rgba(255,255,255,.08))}
.face.bottom{transform:rotateX(-90deg) translateZ(2.35cm);
             background:rgba(255,255,255,.015)}
/* ground reflection */
.cube-shadow{
  position:absolute;
  left:50%; bottom:-1.1cm;
  width:5.4cm; height:1cm;
  transform:translateX(-50%);
  background:radial-gradient(ellipse at center, rgba(255,255,255,.12), transparent 70%);
  filter:blur(7px);
  animation:cubeShadow 16s ease-in-out infinite;
}
@keyframes cubeFloat{
  0%   {transform:translateY(0)     rotateX(-20deg) rotateY(0deg)}
  50%  {transform:translateY(-18px) rotateX(-12deg) rotateY(180deg)}
  100% {transform:translateY(0)     rotateX(-20deg) rotateY(360deg)}
}
@keyframes cubeShadow{
  0%,100%{transform:translateX(-50%) scale(1);   opacity:.8}
  50%    {transform:translateX(-50%) scale(.82);  opacity:.5}
}
.ticket-box:hover .cube-stage,
.ticket-box:focus-visible .cube-stage{transform:scale(1.07)}
.ticket-box:focus-visible{outline:none}
.cube-label{
  font-family:var(--mono);
  font-size:.64rem;
  letter-spacing:.46em;
  text-indent:.46em;
  color:var(--silver);
  transition:color .4s var(--ease);
}
.ticket-box:hover .cube-label,
.ticket-box:focus-visible .cube-label{color:var(--bone)}
.ticket-box:focus-visible{outline:1px solid var(--glass-edge); outline-offset:8px; border-radius:8px}

.closing-foot{
  margin-top:clamp(2.4rem,6vh,4rem);
  display:flex;
  align-items:center;
  gap:.9em;
  font-family:var(--mono);
  font-size:clamp(.66rem,1.5vw,.8rem);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--ash);
}
.closing-foot a{
  color:var(--bone);
  text-decoration:none;
  transition:color .35s var(--ease);
}
.closing-foot a:hover{color:#ff5d5d}

/* ----------------------------------------------------------------
   FLOATING 3D DEBRIS — suspended elements drifting behind the closing
   ---------------------------------------------------------------- */
.debris{
  position:absolute; inset:0;
  z-index:0;
  pointer-events:none;
  overflow:hidden;
  perspective:1100px;
}
.closing-title,.ticket-box,.closing-foot{position:relative; z-index:2}
.shape{
  position:absolute;
  transform-style:preserve-3d;
  opacity:.42;
  will-change:transform;
  animation:drift var(--dur,24s) ease-in-out infinite;
}
.shape .f{
  position:absolute; top:0; left:0;
  width:var(--s); height:var(--s);
  background:linear-gradient(135deg, rgba(255,255,255,.10), rgba(255,255,255,.012) 60%);
  border:1px solid rgba(255,255,255,.20);
  -webkit-backdrop-filter:blur(4px) saturate(120%);
  backdrop-filter:blur(4px) saturate(120%);
}
.shape.cube{width:var(--s); height:var(--s)}
.shape.cube .f.fr{transform:translateZ(calc(var(--s) / 2))}
.shape.cube .f.bk{transform:rotateY(180deg) translateZ(calc(var(--s) / 2))}
.shape.cube .f.ri{transform:rotateY(90deg)  translateZ(calc(var(--s) / 2))}
.shape.cube .f.le{transform:rotateY(-90deg) translateZ(calc(var(--s) / 2))}
.shape.cube .f.to{transform:rotateX(90deg)  translateZ(calc(var(--s) / 2))}
.shape.cube .f.bo{transform:rotateX(-90deg) translateZ(calc(var(--s) / 2))}
.shape.ring{
  width:var(--s); height:var(--s);
  border:1px solid rgba(255,255,255,.18);
  border-radius:50%;
  background:radial-gradient(circle at 50% 50%, transparent 56%, rgba(255,255,255,.05) 72%, transparent 80%);
}
@keyframes drift{
  0%   {transform:translate3d(0,0,0) rotateX(0deg) rotateY(0deg)}
  50%  {transform:translate3d(var(--dx,16px),var(--dy,-28px),0) rotateX(180deg) rotateY(170deg)}
  100% {transform:translate3d(0,0,0) rotateX(360deg) rotateY(360deg)}
}

/* ----------------------------------------------------------------
   CONTACT MODAL — frosted dialog opened from the cube
   ---------------------------------------------------------------- */
body.no-scroll{overflow:hidden}
.modal{
  position:fixed; inset:0;
  z-index:120;
  display:flex; align-items:center; justify-content:center;
  padding:clamp(1rem,4vw,2rem);
  opacity:0; visibility:hidden;
  transition:opacity .5s var(--ease), visibility .5s var(--ease);
}
.modal.open{opacity:1; visibility:visible}
.modal-backdrop{
  position:absolute; inset:0;
  background:rgba(4,4,6,.72);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
}
.modal-panel{
  position:relative;
  width:min(520px,100%);
  max-height:90vh; overflow-y:auto;
  padding:clamp(1.8rem,4vw,2.8rem);
  border-radius:22px;
  background:linear-gradient(180deg, rgba(22,22,26,.94), rgba(10,10,12,.97));
  border:1px solid var(--glass-edge);
  box-shadow:0 1px 0 rgba(255,255,255,.12) inset, 0 40px 90px -30px rgba(0,0,0,.85);
  transform:translateY(26px) scale(.98);
  transition:transform .5s var(--ease);
}
.modal.open .modal-panel{transform:translateY(0) scale(1)}
.modal-x{
  position:absolute; top:.9rem; right:1.1rem;
  width:2rem; height:2rem;
  background:none; border:none; cursor:pointer;
  color:var(--silver); font-size:1.6rem; line-height:1;
  transition:color .3s var(--ease);
}
.modal-x:hover{color:var(--bone)}
.modal-kick{
  font-family:var(--mono);
  font-size:.62rem; letter-spacing:.5em; text-indent:.5em;
  text-transform:uppercase; color:var(--silver);
  margin-bottom:.9rem;
}
.modal-panel h2{
  font-family:var(--serif); font-weight:400;
  font-size:clamp(1.7rem,5vw,2.6rem); letter-spacing:.01em;
  line-height:1.05; margin-bottom:1.6rem; color:var(--bone);
}
.field{margin-bottom:1.1rem; text-align:left}
.field label{
  display:block;
  font-family:var(--mono);
  font-size:.64rem; letter-spacing:.24em;
  text-transform:uppercase; color:var(--silver);
  margin-bottom:.5rem;
}
.field label i{font-style:normal; color:var(--ash); letter-spacing:.16em}
.field input,.field textarea{
  width:100%;
  font-family:var(--sans); font-size:.95rem;
  color:var(--bone);
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.16);
  border-radius:12px;
  padding:.8rem .95rem;
  resize:vertical;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
.field input:focus,.field textarea:focus{
  outline:none;
  border-color:var(--glass-edge);
  background:rgba(255,255,255,.07);
}
.budget{display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem}
.budget-opt{
  font-family:var(--mono); font-size:.72rem; letter-spacing:.03em;
  color:var(--silver); cursor:pointer;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.16);
  border-radius:10px;
  padding:.7rem .3rem;
  transition:color .3s var(--ease), border-color .3s var(--ease), background .3s var(--ease), box-shadow .3s var(--ease);
}
.budget-opt:hover{color:var(--bone); border-color:var(--glass-edge)}
.budget-opt.sel{
  color:#fff; border-color:transparent;
  background:linear-gradient(180deg,#ff4d4d,#e11d1d);
  box-shadow:0 8px 20px -10px rgba(225,29,29,.8);
}
.modal-submit{
  width:100%; margin-top:.6rem;
  font-family:var(--mono);
  font-size:.74rem; letter-spacing:.22em; text-indent:.22em;
  text-transform:uppercase; color:#fff; cursor:pointer;
  padding:1rem; border-radius:12px;
  border:1px solid rgba(255,255,255,.18);
  background:linear-gradient(180deg,#ff4d4d,#e11d1d);
  box-shadow:0 1px 0 rgba(255,255,255,.35) inset, 0 14px 30px -12px rgba(225,29,29,.7);
  transition:transform .3s var(--ease), filter .3s var(--ease);
}
.modal-submit:hover{transform:translateY(-2px); filter:brightness(1.08)}
.modal-note{
  margin-top:.9rem; text-align:center;
  font-family:var(--mono);
  font-size:.6rem; letter-spacing:.2em;
  text-transform:uppercase; color:var(--ash);
}
.field-error input,.field-error textarea,.field-error .budget{border-color:#ff5d5d}
.field-error .budget-opt{border-color:rgba(255,93,93,.5)}
@media (max-width:440px){ .budget{grid-template-columns:repeat(2,1fr)} }

/* ----------------------------------------------------------------
   RESPONSIVE
   ---------------------------------------------------------------- */
@media (max-width:640px){
  .ticket{letter-spacing:.28em; text-indent:.28em}
  .ticket:hover,.ticket:focus-visible{letter-spacing:.34em; text-indent:.34em}
  .tagline{
    left:50%; right:auto;
    transform:translateX(-50%);
    text-align:center;
    bottom:clamp(2rem,8vh,4rem);
    max-width:90vw;
  }
}

/* When GSAP drives opacity/transform per-frame, CSS transitions would fight it */
html.gsap-ready .card{transition:none}

/* ----------------------------------------------------------------
   REDUCED MOTION
   ---------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .card{transition:opacity .4s linear; transform:none}
  .card.in{transform:none}
  .enter{animation:none; opacity:.8}
  .statement .line,.statement .kick{opacity:1}
  .cube,.cube-shadow,.shape{animation:none}
  .stage-grain{display:none}
}
