/* Diwali lift-off at Rishabh's: night terrace, cowboy on a bottle rocket. */
:root{
  --sky:#1b1747; --sky2:#120f36; --deep:#15123d; --ink:#0b0920; --cream:#fff1cc; --pink:#ff4d8d; --pink-d:#d61f66;
  --yel:#ffd23a; --cyan:#4fd6c9; --orange:#ff8a2a; --mari:#f7a21b; --lav:#cbbfe8; --wall:#2b2361; --floor:#251c5a;
  --muted:#c9c0ee; --ok:#7be0a6;
  --sans:'Syne',system-ui,-apple-system,'Segoe UI',sans-serif; --serif:'Fraunces',Georgia,serif;
  --gut:16px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--sky);color:var(--cream);font-family:var(--sans);font-size:17px;line-height:1.45;overflow-x:hidden}
img,svg{display:block}
em{font-family:var(--serif);font-style:italic;font-weight:600;font-variation-settings:'opsz' 144,'SOFT' 100}
button,input,textarea{font:inherit;color:inherit}
[hidden]{display:none !important}
.skip{position:absolute;left:-999px;top:8px;z-index:50;background:var(--yel);color:var(--ink);padding:10px 14px;border-radius:10px;font-weight:700}
.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--yel);outline-offset:3px}

/* ---------- kicker, buttons ---------- */
.kick{display:inline-flex;align-items:center;gap:10px;margin:0;font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--yel)}
.kick i{width:9px;height:9px;border-radius:50%;background:var(--pink);flex:none;animation:ping 1.3s ease-out infinite}
.kick.dark{color:var(--pink-d)}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(255,77,141,.6)}100%{box-shadow:0 0 0 12px rgba(255,77,141,0)}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:56px;padding:0 22px;border:3px solid var(--ink);border-radius:14px;font-weight:800;font-size:18px;color:var(--ink);text-decoration:none;cursor:pointer;box-shadow:5px 5px 0 var(--ink);transition:transform .12s,background-color .12s,box-shadow .12s;white-space:nowrap;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.btn svg{width:20px;height:20px;fill:var(--ink)}
.btn:hover{transform:translate(-1px,-2px) rotate(-1.2deg)}
.btn:active{transform:translate(4px,4px);box-shadow:1px 1px 0 var(--ink)}
.btn-pink{background:var(--pink)}.btn-pink:hover{background:var(--yel)}
.btn-yel{background:var(--yel)}.btn-yel:hover{background:var(--pink)}
.btn-ghost{background:transparent;color:var(--cream);border-color:var(--cream);box-shadow:5px 5px 0 var(--pink)}
.btn-ghost:hover{background:var(--cream);color:var(--ink)}
.btn[disabled]{opacity:.6;cursor:progress}
.linkish{background:none;border:0;padding:4px 0;color:var(--cyan);text-decoration:underline;text-underline-offset:3px;cursor:pointer;font-size:inherit}

/* ---------- hero grid ---------- */
.hero{position:relative;overflow:hidden;min-height:100vh;min-height:100svh;display:grid;
  grid-template-columns:minmax(0,1fr);grid-template-areas:"copy" "ride" "para" "gate";grid-template-rows:auto 1fr auto auto;
  background-color:var(--sky);background-image:radial-gradient(rgba(255,241,204,.08) 1.5px,transparent 2.1px);background-size:22px 22px}
.sky{position:absolute;inset:0;z-index:0;pointer-events:none}
.stars{position:absolute;inset:0;width:100%;height:100%}
.fx{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.toran{position:absolute;left:-20px;top:0;z-index:6;pointer-events:none;height:auto;max-width:none}
.sway{transform-box:fill-box;transform-origin:50% 0;animation:sway 2.6s ease-in-out infinite alternate}
@keyframes sway{from{transform:rotate(-7deg)}to{transform:rotate(7deg)}}
.tw{animation:tw 3s ease-in-out infinite alternate}
@keyframes tw{from{opacity:.2}to{opacity:1}}
.tw4{transform-box:fill-box;transform-origin:50% 50%;animation:tw4 2.4s ease-in-out infinite}
@keyframes tw4{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(.5) rotate(45deg);opacity:.6}}
.bl0,.bl1,.bl2{animation:blink 1.8s steps(1) infinite}.bl1{animation-delay:-.6s}.bl2{animation-delay:-1.2s}
@keyframes blink{0%{opacity:1}66%{opacity:.25}}

/* kandils */
.kandil{position:absolute;top:2px;z-index:5;pointer-events:none;transform-origin:50% 0;animation:kswing 3.4s ease-in-out infinite alternate}
.kandil svg{width:100%;height:auto}
.k1,.k3{display:none}.k1{left:41%;width:62px}.k2{right:4px;width:40px;animation-delay:-1.4s}.k3{left:94%;width:54px;animation-delay:-.7s}
@keyframes kswing{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
.kglow{animation:kglow 1.6s ease-in-out infinite alternate}
@keyframes kglow{from{opacity:.12}to{opacity:.32}}
.tails{transform-box:fill-box;transform-origin:50% 0;animation:sway 1.4s ease-in-out infinite alternate}

/* copy */
.copy{grid-area:copy;position:relative;z-index:4;padding:72px var(--gut) 0}
.h1{margin:12px 0 0;font-weight:800;font-size:clamp(40px,11.4vw,100px);line-height:.92;letter-spacing:-.035em;color:var(--cream);text-shadow:4px 4px 0 var(--pink)}
.h1 em{display:inline-block;font-weight:600;color:var(--yel);text-shadow:4px 4px 0 var(--ink);letter-spacing:-.02em;font-size:1.1em}
.sub{margin:16px 0 0;font-weight:600;font-size:clamp(16px,2.2vw,21px);line-height:1.4;max-width:34em;color:#e9e2ff}
.sub em{color:var(--yel);font-weight:500}
.h-landed{display:none}
.hero[data-state="landed"] .h-landed{display:inline}
.hero[data-state="landed"] p.h-landed{display:block}
.hero[data-state="landed"] .h-locked{display:none}
.coming{display:inline-block;margin:14px 0 0;background:var(--cyan);color:var(--ink);border:2.5px solid var(--ink);border-radius:999px;padding:5px 14px;font-weight:700;font-size:15px;box-shadow:3px 3px 0 var(--ink);transform:rotate(-2deg)}

/* ride */
.ride-fig{grid-area:ride;position:relative;z-index:2;align-self:end;justify-self:end;width:min(270px,68vw);margin:-44px 6px 0 0}
.ride-svg{width:100%;height:auto;overflow:visible}
.ride-rock{transform-box:fill-box;transform-origin:0% 100%;animation:rock 3.6s ease-in-out infinite}
@keyframes rock{0%,100%{transform:rotate(0)}50%{transform:rotate(-1.6deg)}}
.blabel{font:800 15px var(--sans);fill:var(--ink);letter-spacing:.04em}
.scarf{transform-box:fill-box;transform-origin:100% 50%;animation:scarf .45s ease-in-out infinite alternate}
@keyframes scarf{from{transform:skewY(-5deg) scaleY(.85)}to{transform:skewY(6deg) scaleY(1.1)}}
.lasso{transform-box:fill-box;transform-origin:50% 50%;animation:lasso .6s linear infinite}
@keyframes lasso{0%,100%{transform:scaleX(1) rotate(-4deg)}25%,75%{transform:scaleX(.55)}50%{transform:scaleX(1) rotate(4deg)}}
.foot{transform-box:fill-box}
.head-bob{transform-box:fill-box;transform-origin:50% 90%;animation:bob 1.1s ease-in-out infinite alternate}
@keyframes bob{from{transform:rotate(-3deg)}to{transform:rotate(3deg) translateY(-4px)}}
.head-fx{transform-box:fill-box;transform-origin:50% 90%}
.head-fx.no{animation:no .8s cubic-bezier(.3,.7,.4,1)}
.head-fx.no2{animation:no2 .8s cubic-bezier(.3,.7,.4,1)}
@keyframes no{12%{transform:rotate(-13deg)}28%{transform:rotate(12deg)}44%{transform:rotate(-8deg)}60%{transform:rotate(6deg)}78%{transform:rotate(-3deg)}}
@keyframes no2{12%{transform:rotate(-13deg)}28%{transform:rotate(12deg)}44%{transform:rotate(-8deg)}60%{transform:rotate(6deg)}78%{transform:rotate(-3deg)}}
.head-fx.yay,.chute-head.yay{animation:yay .7s cubic-bezier(.3,1.6,.5,1) 2}
@keyframes yay{40%{transform:translateY(-22px) rotate(-6deg)}}
.flame-go{opacity:0;transform-box:fill-box;transform-origin:100% 50%}
#ember .ember-halo{animation:halo .5s ease-in-out infinite alternate}
@keyframes halo{from{opacity:.25}to{opacity:.6}}
.smoke circle{fill:#9d96c7;stroke:var(--ink);stroke-width:2.5;opacity:0;transform-box:fill-box;animation:smoke 2.6s ease-out infinite}
.smoke circle:nth-child(2){animation-delay:-.65s}.smoke circle:nth-child(3){animation-delay:-1.3s}.smoke circle:nth-child(4){animation-delay:-1.95s}
@keyframes smoke{0%{transform:translate(0,0) scale(.4);opacity:0}15%{opacity:.85}100%{transform:translate(-28px,-110px) scale(1.7);opacity:0}}
.hero.burning .smoke circle{animation-duration:.9s}
.ride.rumble{animation:rumble .09s linear infinite}
@keyframes rumble{0%{transform:translate(-3px,1px)}50%{transform:translate(3px,-2px)}100%{transform:translate(-2px,2px)}}
.ride.go{animation:go 1.15s cubic-bezier(.55,0,.85,.35) forwards}
@keyframes go{0%{transform:translate(0,0)}100%{transform:translate(1500px,-1100px)}}
.ride.go .flame-go,.ride.rumble .flame-go{opacity:1;animation:flame .1s linear infinite alternate}
@keyframes flame{from{transform:scaleX(.8)}to{transform:scaleX(1.25)}}
.ride.gone{visibility:hidden}

.chute{position:absolute;left:0;bottom:1%;width:50%;height:auto;overflow:visible;visibility:hidden}
.hero[data-state="landed"] .chute{visibility:visible}
.chute.drop{animation:drop 1.4s cubic-bezier(.2,.8,.3,1) both}
@keyframes drop{from{transform:translate(70%,-160%) rotate(22deg)}72%{transform:translate(0,3%) rotate(-3deg)}to{transform:none}}
.chute-sway{transform-box:fill-box;transform-origin:50% 0;animation:csway 2.6s ease-in-out infinite alternate}
@keyframes csway{from{transform:rotate(-2.5deg)}to{transform:rotate(2.5deg)}}
.legs{transform-box:fill-box;transform-origin:50% 0;animation:csway .8s ease-in-out infinite alternate}
.chute-head{transform-box:fill-box;transform-origin:50% 100%}

.bubble{position:absolute;z-index:5;left:-44%;top:27%;width:54%;background:var(--cream);color:var(--ink);border:3px solid var(--ink);border-radius:20px;padding:10px 14px;font-weight:700;font-size:clamp(14px,1.5vw,19px);line-height:1.25;box-shadow:4px 4px 0 var(--pink);transform-origin:100% 100%}
.bubble::before,.bubble::after{content:'';position:absolute;background:inherit;border:3px solid var(--ink);border-radius:50%}
.bubble::before{width:16px;height:16px;right:14px;bottom:-24px}
.bubble::after{width:9px;height:9px;right:0;bottom:-40px}
.bubble em{color:var(--pink-d)}
.bubble.pop{animation:pop .45s cubic-bezier(.3,1.6,.5,1)}
.bubble.tease{background:var(--yel)}
@keyframes pop{from{opacity:0;transform:scale(.55)}to{opacity:1;transform:none}}
.hero[data-state="landed"] .bubble{left:44%;top:30%;width:52%;transform-origin:0 100%}
.hero[data-state="landed"] .bubble::before{left:14px;right:auto}
.hero[data-state="landed"] .bubble::after{left:0;right:auto}
.count{position:absolute;left:2%;top:34%;z-index:6;font-weight:800;font-size:clamp(80px,14vw,170px);line-height:1;color:var(--yel);text-shadow:6px 6px 0 var(--pink),-3px -3px 0 var(--ink);pointer-events:none}
.count.tick{animation:tick .8s ease-out both}
@keyframes tick{0%{transform:scale(1.8);opacity:0}20%{transform:scale(1);opacity:1}100%{transform:scale(.8);opacity:0}}

/* parapet + floor */
.parapet{grid-area:para;position:relative}
.skyline{position:absolute;left:0;bottom:100%;width:100%;height:clamp(110px,17vw,230px);z-index:1;pointer-events:none}
.ledge{position:relative;z-index:3;height:18px;background:var(--lav);border-top:3px solid var(--ink);border-bottom:3px solid var(--ink);box-shadow:inset 0 -5px 0 #a597c9}
.wall{position:relative;z-index:3;height:34px;background-color:var(--wall);background-image:radial-gradient(var(--sky2) 4px,transparent 4.5px);background-size:48px 25px;background-position:24px 12px;border-bottom:3px solid var(--ink)}
.lights{position:absolute;inset:0;width:100%;height:100%}
.diyas{position:absolute;left:0;right:0;bottom:calc(100% - 6px);display:flex;justify-content:space-around;padding:0 4px;pointer-events:none}
.diya{pointer-events:auto;width:46px;height:44px;padding:0;border:0;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;border-radius:12px}
.diya svg{width:100%;height:100%;overflow:visible}
.diya .flame,.diya .glow{opacity:0;transition:opacity .25s}
.diya .glow{opacity:0}
.diya[aria-pressed="true"] .flame{opacity:1;transform-box:fill-box;transform-origin:50% 100%;animation:flick .9s ease-in-out infinite}
.diya[aria-pressed="true"] .glow{opacity:.3;animation:glow 1.4s ease-in-out infinite alternate}
.diya.lit-now .flame{animation:ignite .5s cubic-bezier(.3,1.6,.5,1)}
@keyframes ignite{from{transform:scale(.2)}}
@keyframes flick{0%,100%{transform:scale(1) rotate(-2deg)}35%{transform:scale(.9,1.15) rotate(3deg)}70%{transform:scale(1.06,.92)}}
@keyframes glow{from{opacity:.18}to{opacity:.4}}
.diya:not([aria-pressed="true"]):hover svg{transform:translateY(-2px)}
.diya:nth-child(n+6){display:none}
.sparkpot{position:absolute;right:3%;bottom:calc(100% - 4px);width:52px;pointer-events:none}
.sparkpot svg{width:100%;height:auto;overflow:visible}
.fz{transform-box:fill-box;transform-origin:50% 50%;animation:fz .4s linear infinite}
@keyframes fz{0%{transform:scale(.35);opacity:1}100%{transform:scale(1.25) rotate(18deg);opacity:0}}
.floor{grid-row:4 / 5;grid-column:1 / -1;position:relative;z-index:1;background-color:var(--floor);background-image:linear-gradient(90deg,rgba(0,0,0,.18) 2px,transparent 2px),linear-gradient(rgba(0,0,0,.18) 2px,transparent 2px);background-size:56px 56px;overflow:hidden}
.rangoli{position:absolute;left:50%;bottom:-150px;width:min(560px,130%);transform:translateX(-50%);opacity:.95}

/* gate */
.gate{grid-area:gate;position:relative;z-index:4;padding:14px var(--gut) 26px}
.kick .k-long{display:none}
.copy .sub.h-locked{display:none}
.pass{display:grid;grid-template-columns:1.4fr 1fr 1fr;background:var(--cream);color:var(--ink);border:3px solid var(--ink);border-radius:14px;box-shadow:5px 5px 0 var(--pink);transform:rotate(-1.2deg);max-width:600px}
.pass>div{padding:9px 10px;border-right:2.5px dashed var(--ink);min-width:0}
.pass>div:last-child{border-right:0}
.pass small{display:block;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.pass b{display:block;font-size:clamp(14px,3.7vw,24px);font-weight:800;letter-spacing:-.02em;line-height:1.05;margin-top:3px;white-space:nowrap}
.pass span{display:block;font-family:var(--serif);font-style:italic;font-size:13px;margin-top:2px;line-height:1.15}
.code-form,.arm,.landed{margin-top:18px;max-width:600px}
.lab{display:block;margin:0 0 8px;font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--cyan)}
.row{display:flex;gap:10px}
.row .btn{padding:0 16px}
.code-in{flex:1;min-width:0;height:56px;border:3px solid var(--ink);border-radius:14px;background:#0f0c2c;color:var(--yel);padding:0 16px;font-weight:800;font-size:20px;letter-spacing:.12em;text-transform:uppercase;box-shadow:inset 0 0 0 2px var(--cyan),5px 5px 0 var(--ink);outline:none;caret-color:var(--pink)}
.code-in::placeholder{color:#7d75bd;letter-spacing:.02em;text-transform:none;font-weight:600;font-size:17px}
.code-in:focus{box-shadow:inset 0 0 0 2px var(--yel),5px 5px 0 var(--pink)}
.code-in.jolt{animation:jolt .45s ease}
@keyframes jolt{20%{transform:translateX(-10px)}40%{transform:translateX(9px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}
.msg{margin:10px 0 0;font-family:var(--serif);font-style:italic;font-size:16px;color:var(--muted);min-height:1.4em}
.gate .msg{display:table;background:rgba(18,15,54,.82);padding:3px 8px;border-radius:8px;margin-left:-8px}
.msg.bad{font-family:var(--sans);font-style:normal;font-weight:700;color:var(--cream)}
.msg.bad::before{content:'ABORT';display:inline-block;margin-right:8px;background:var(--pink);color:var(--ink);border:2px solid var(--ink);border-radius:6px;padding:1px 7px;font-size:12px;letter-spacing:.12em;vertical-align:2px}
.msg.wait::before{content:'HOLD ON';background:var(--yel)}
.btn-fuse{position:relative;overflow:hidden;width:100%;min-height:64px;background:var(--pink);font-size:19px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}
.btn-fuse .fill{position:absolute;inset:0;background:var(--yel);transform-origin:0 50%;transform:scaleX(0)}
.btn-fuse .fuse-label{position:relative}
.btn-fuse.holding{transform:translate(3px,3px);box-shadow:2px 2px 0 var(--ink)}
.btn-fuse:not(.holding){animation:callme 1.8s ease-out infinite}
@keyframes callme{0%{box-shadow:5px 5px 0 var(--ink),0 0 0 0 rgba(255,77,141,.55)}100%{box-shadow:5px 5px 0 var(--ink),0 0 0 16px rgba(255,77,141,0)}}
.venue-card{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--yel);color:var(--ink);border:3px solid var(--ink);border-radius:16px;box-shadow:6px 6px 0 var(--ink);padding:14px 16px;transform:rotate(1deg)}
.venue-card small{display:block;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.venue-card strong{display:block;font-size:clamp(26px,6vw,38px);font-weight:800;letter-spacing:-.03em;line-height:1;margin-top:4px}
.venue-card span{display:block;font-family:var(--serif);font-style:italic;font-size:19px;margin-top:3px}
.map{display:inline-flex;align-items:center;gap:8px;min-height:48px;background:var(--ink);color:var(--cream);text-decoration:none;font-weight:700;font-size:16px;padding:0 18px;border-radius:999px;box-shadow:3px 3px 0 var(--pink);white-space:nowrap}
.map:hover{background:var(--pink);color:var(--ink)}
.when{margin:16px 0 14px;font-family:var(--serif);font-style:italic;font-size:18px}
.landed .btn{margin-top:4px}
.rise{animation:rise .55s cubic-bezier(.3,1.4,.5,1) both}
@keyframes rise{from{opacity:0;transform:translateY(26px) scale(.95)}}

/* ---------- sections ---------- */
main section{position:relative;padding:72px var(--gut)}
.wrap{max-width:1120px;margin:0 auto}
h2{margin:12px 0 0;font-weight:800;font-size:clamp(34px,7vw,64px);line-height:.98;letter-spacing:-.035em;text-shadow:4px 4px 0 var(--pink)}
h2 em{color:var(--yel);text-shadow:4px 4px 0 var(--ink)}
.lede{max-width:40em;margin:14px 0 0;font-size:18px;color:#e9e2ff}

.seat{background:var(--deep);border-top:3px solid var(--ink)}
.card{background:var(--cream);color:var(--ink);border:3px solid var(--ink);border-radius:20px;box-shadow:8px 8px 0 var(--pink);padding:24px 18px}
.card h2{color:var(--ink);text-shadow:none;font-size:clamp(32px,6vw,52px)}
.card h2 em{color:var(--pink-d);text-shadow:none}
.card .lede{color:#3a3360}
.form-card{max-width:860px;margin:0 auto}
form .grid2{display:grid;grid-template-columns:1fr;gap:4px 18px;margin-top:18px}
.field{margin:12px 0 0;padding:0;border:0;min-width:0}
.field label,.field legend{display:block;padding:0;margin:0 0 7px;font-weight:700;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.opt{text-transform:none;letter-spacing:0;font-weight:600;opacity:.7}
.field input:not([type=radio]),.field textarea{width:100%;min-height:52px;border:3px solid var(--ink);border-radius:12px;background:#fff;padding:12px 14px;font-weight:600;font-size:17px;color:var(--ink);outline:none}
.field textarea{resize:vertical;min-height:72px}
.field input:focus,.field textarea:focus{box-shadow:4px 4px 0 var(--cyan)}
.field input[aria-invalid="true"]{border-color:#c4123f;box-shadow:4px 4px 0 var(--pink)}
.err{margin:6px 0 0;color:#b5103a;font-weight:700;font-size:14px;min-height:0}
.err:empty{display:none}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg input{position:absolute;opacity:0;width:1px;height:1px}
.seg label{margin:0;cursor:pointer;display:inline-flex;align-items:center;min-height:48px;padding:0 16px;border:3px solid var(--ink);border-radius:12px;background:#fff;font-size:16px;letter-spacing:0;text-transform:none;font-weight:700;transition:transform .1s}
.seg label:hover{transform:rotate(-2deg)}
.seg input:checked+label{background:var(--sky);color:var(--yel);box-shadow:3px 3px 0 var(--pink)}
.seg input:focus-visible+label{outline:3px solid var(--pink);outline-offset:3px}
.seg.num label{width:52px;justify-content:center;padding:0}
.form-card.declined .only-coming{display:none}
.hint{margin:0 0 12px;font-family:var(--serif);font-style:italic;font-size:17px;color:#3a3360}
.payload-row{display:grid;grid-template-columns:1fr;gap:16px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 14px 0 8px;border:3px solid var(--ink);border-radius:999px;background:#fff;font-weight:700;font-size:15px;cursor:pointer;transition:transform .12s,background-color .12s;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.chip svg{width:16px;height:38px}
.chip:hover{transform:rotate(-3deg)}
.chip[aria-pressed="true"]{background:var(--yel);box-shadow:3px 3px 0 var(--ink)}
.chip[aria-pressed="true"]::after{content:'';width:9px;height:14px;margin-left:2px;border:solid var(--ink);border-width:0 3px 3px 0;transform:rotate(40deg) translateY(-2px)}
.crate{position:relative;align-self:end;width:100%;max-width:300px;margin:0 auto;padding-top:56px}
.crate-bottles{position:absolute;left:10%;right:10%;top:0;height:100px;display:flex;align-items:flex-end;justify-content:center;gap:2px}
.crate-bottles svg{width:30px;height:76px;flex:none;margin-bottom:-28px}
.crate-bottles svg.in{animation:dropin .55s cubic-bezier(.3,1.5,.5,1) both}
.crate-bottles svg.out{animation:dropout .3s ease-in both}
@keyframes dropin{from{transform:translateY(-120px) rotate(-20deg);opacity:0}60%{opacity:1}}
@keyframes dropout{to{transform:translateY(-60px) rotate(20deg);opacity:0}}
.crate-front{position:relative;width:100%;height:auto}
.crate-t{font:800 16px var(--sans);fill:#ffe0b0;letter-spacing:.2em}
.crate-cap{margin:6px 0 0;text-align:center;font-family:var(--serif);font-style:italic;font-size:15px;color:#3a3360}
.form-foot{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;margin-top:22px}
.form-foot .msg{margin:0;color:#b5103a;font-family:var(--sans);font-style:normal;font-weight:700}
.form-foot .msg:empty{display:none}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.done-card{max-width:760px;margin:0 auto;text-align:left}
.done-card:focus{outline:none}
.done-card p{font-size:18px}
.venue-card.light{margin:18px 0}
.inbox{font-family:var(--serif);font-style:italic;color:#3a3360}

/* bar shelf */
.bar{background:var(--sky2);border-top:3px solid var(--ink)}
.shelf{position:relative;display:flex;flex-wrap:wrap;margin-top:36px}
.slot{position:relative;flex:1 1 25%;min-width:0;padding:0 4px 0;text-align:center;display:flex;flex-direction:column}
.slot .stack{order:1}.slot::after{order:2}.slot p{order:3}
.slot::after{content:'';display:block;height:16px;margin:0 -4px;background:#a8672e;border-top:3px solid var(--ink);border-bottom:3px solid var(--ink);box-shadow:0 6px 0 var(--ink)}
.slot p{margin:14px 0 22px;font-weight:700;font-size:14px;color:var(--muted)}
.slot p b{display:block;font-size:26px;line-height:1;color:var(--cream)}
.stack{position:relative;height:120px;display:flex;justify-content:center;align-items:flex-end}
.stack svg{width:36px;height:94px;flex:none;margin:0 -9px;transform:rotate(var(--t,0deg));transform-origin:50% 100%}
.stack svg.new{animation:dropin .6s cubic-bezier(.3,1.5,.5,1) both}
.stack .ghost{opacity:.22}
.stack .more{position:absolute;right:6px;top:6px;background:var(--pink);color:var(--ink);border:2px solid var(--ink);border-radius:999px;padding:1px 8px;font-weight:800;font-size:14px}
.plank{display:none}
.shelf-cap{margin:24px 0 0;font-family:var(--serif);font-style:italic;font-size:clamp(20px,3vw,28px);color:var(--yel)}

/* briefing */
.brief{background:var(--sky)}
.faq{display:grid;grid-template-columns:1fr;gap:16px;margin-top:30px}
.faq details{background:var(--cream);color:var(--ink);border:3px solid var(--ink);border-radius:16px;box-shadow:5px 5px 0 var(--pink);transform:rotate(var(--r));transition:transform .15s}
.faq details:nth-child(3n+2){box-shadow:5px 5px 0 var(--cyan)}
.faq details:nth-child(3n){box-shadow:5px 5px 0 var(--yel)}
.faq details[open]{transform:rotate(0)}
.faq summary{list-style:none;cursor:pointer;padding:16px 50px 16px 18px;font-weight:800;font-size:19px;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';position:absolute;right:16px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:2.5px solid var(--ink);border-radius:50%;display:grid;place-items:center;font-size:20px;line-height:1}
.faq details[open] summary::after{content:'\2212'}
.faq details p{margin:0;padding:0 18px 18px;font-size:17px}

/* footer */
.foot{position:relative;overflow:hidden;background:var(--sky2);border-top:3px solid var(--ink);padding:64px var(--gut) 0;text-align:center}
.foot-line{margin:0 auto;max-width:18em;font-weight:800;font-size:clamp(28px,6vw,52px);line-height:1.02;letter-spacing:-.03em;text-shadow:4px 4px 0 var(--pink)}
.foot-line em{color:var(--yel);text-shadow:4px 4px 0 var(--ink)}
.foot-sub{margin:14px 0 26px;font-family:var(--serif);font-style:italic;font-size:19px;color:var(--muted)}
.foot-ledge{position:relative;height:140px;margin-top:40px}
.foot-ledge .rangoli{top:10px;bottom:auto;width:min(620px,140%)}

/* ---------- ≥600 ---------- */
@media (min-width:600px){
  :root{--gut:32px}
  .ride-fig{width:min(340px,46vw);margin-top:-150px}
  .bubble{left:-44%;top:34%;width:46%}
  .row .btn{padding:0 22px}
  .kick .k-long{display:inline}
  .copy .sub.h-locked{display:block;max-width:25em}
  .hero[data-state="landed"] .copy .sub.h-locked{display:none}
  .k3{display:block;left:76%}.k2{right:auto;left:89%;width:58px}
  .wall{height:50px}
  .diya:nth-child(n+6){display:block}
  .diya{width:56px;height:52px}
  .slot{flex-basis:14.28%}
  .stack{height:160px}
  .stack svg{width:50px;height:130px;margin:0 -13px}
  form .grid2{grid-template-columns:1fr 1fr}
  .payload-row{grid-template-columns:1.4fr 1fr;align-items:end}
  .faq{grid-template-columns:1fr 1fr}
  .card{padding:32px 34px}
  .k3{left:62%}
}
/* ---------- desktop ---------- */
@media (min-width:960px){
  .hero{grid-template-columns:minmax(0,46fr) minmax(0,54fr);grid-template-areas:"copy ride" "gate ride" "para para" "floor floor";grid-template-rows:auto 1fr auto 110px}
  .floor{grid-area:floor}
  .copy{padding:92px 0 0 clamp(32px,5.5vw,96px)}
  .gate{padding:24px 0 34px clamp(32px,5.5vw,96px);align-self:end}
  .h1{font-size:clamp(64px,6.6vw,100px)}
  .ride-fig{justify-self:center;width:min(560px,46vw,calc((100svh - 270px) * .84));margin:0 0 0 -2vw}
  .diya{width:66px;height:60px}
  .bubble{left:64%;top:1%;width:40%;transform-origin:0 100%}
  .k3{display:none}.k1{display:block}
  .k2{left:93%}
  .bubble::before{left:18px;right:auto}.bubble::after{left:2px;right:auto}
  .rangoli{left:72%;width:620px;bottom:auto;top:-36px}
  .hero[data-state] .bubble{transform-origin:0 100%}
  .sparkpot{right:auto;left:46%;width:62px}
  .k1{left:45%}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none !important;transition:none !important}
  .diya[aria-pressed="true"] .flame{opacity:1}
}
