:root{
  /* Layout: a phone-sized story deck. One card fills the screen; tap the right side or swipe to move on. Each card earns a stamp in the passport; the last card turns the passport into a cafe perk. */
  --brown:#5f2e27;      /* CHASE brand */
  --cream:#d4cfbb;      /* CHASE brand */
  --bone:#e9e3d3;
  --milk:#f8f4ea;
  --ink:#2a1612;
  --cocoa:#170b09;
  --led-a:#ff4d8d; --led-b:#ffb340; --led-c:#7d5cff;   /* spin room LED show only */
  --f-display:"Big Shoulders Display","Arial Narrow","Helvetica Neue",Impact,sans-serif;
  --f-body:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-mono:"DM Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --r:18px;
  --logo:url("data:image/png;base64,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");
  color-scheme:light;
}
html,body{height:100%}
body{margin:0;background:var(--cocoa);color:var(--ink);font-family:var(--f-body);display:grid;place-items:center;overflow:hidden;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;cursor:pointer}
.app{position:relative;width:100%;max-width:460px;height:100%;overflow:hidden;background:var(--brown);user-select:none;-webkit-user-select:none}
/* open foldables and small tablets (Galaxy Z Fold open is about 904 x 968): use more of the width */
@media (min-width:600px){
  .app{max-width:680px}
  .choices,.drinks{grid-template-columns:repeat(4,1fr)}
  .plancard{flex-basis:62%}
  .photo{width:40%}
}
/* desktop browsers: show it as a phone */
@media (hover:hover) and (pointer:fine) and (min-width:620px) and (min-height:720px){
  .app{max-width:460px;height:min(100%,880px);border-radius:34px;box-shadow:0 40px 90px rgba(0,0,0,.55)}
  .choices,.drinks{grid-template-columns:1fr 1fr}
  .plancard{flex-basis:80%}
  .photo{width:45%}
}
.app[data-tone=dark]{--chrome:var(--milk);--track:rgba(248,244,234,.24)}
.app[data-tone=light]{--chrome:var(--brown);--track:rgba(95,46,39,.18)}

/* chrome */
.bars{position:absolute;z-index:6;top:10px;left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));display:flex;gap:4px;pointer-events:none}
.bars i{flex:1;height:3px;border-radius:3px;background:var(--track);overflow:hidden;position:relative}
.bars i::after{content:"";position:absolute;inset:0;background:var(--chrome);transform:scaleX(0);transform-origin:left;transition:transform .45s ease}
.bars i.done::after,.bars i.now::after{transform:none}
.head{position:absolute;z-index:6;top:22px;left:max(20px,env(safe-area-inset-left,0px));right:max(20px,env(safe-area-inset-right,0px));display:flex;justify-content:space-between;align-items:center;color:var(--chrome);pointer-events:none}
.logo{display:block;width:64px;height:39px;background:currentColor;-webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat}
.passport{display:flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em}
.passport .dots{display:flex;gap:4px}
.passport b{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--chrome);display:block}
.passport b.got{background:var(--chrome)}
.passport b.pop{animation:pop .6s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{0%{transform:scale(2.6)}100%{transform:scale(1)}}

.foot{position:absolute;z-index:6;left:0;right:0;bottom:0;padding-block:28px 16px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;align-items:center;gap:10px;background:linear-gradient(to top,var(--fade) 62%,transparent)}
.back{flex:0 0 52px;height:52px;border-radius:50%;border:1.5px solid var(--chrome);background:transparent;color:var(--chrome);display:grid;place-items:center}
.back[hidden]{display:none!important}
.next{flex:1;height:56px;border-radius:999px;border:0;background:var(--chrome);color:var(--fade);font-family:var(--f-display);font-weight:800;font-size:23px;letter-spacing:.05em;text-transform:uppercase;display:flex;align-items:center;justify-content:space-between;padding:0 24px;transition:opacity .2s,transform .15s}
.next:active{transform:scale(.98)}
.next[aria-disabled=true]{opacity:.35}
a.next{text-decoration:none;font-size:clamp(17px,5vw,23px)}
a.next[hidden]{display:none!important}
.review{background:var(--milk);color:var(--ink);border-radius:var(--r);padding:18px;display:flex;flex-direction:column;gap:8px}
.review .stars{display:flex;gap:4px;color:var(--led-b)}
.review b{font-family:var(--f-display);font-weight:900;font-size:28px;line-height:.95;text-transform:uppercase;color:var(--brown)}
.review p{font-size:14.5px;line-height:1.45}
.next.nudge{animation:nudge .4s}
@keyframes nudge{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
.hint{position:absolute;z-index:6;left:0;right:0;bottom:84px;text-align:center;font-family:var(--f-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--chrome);opacity:.8;pointer-events:none}

/* cards */
.deck{position:absolute;inset:0}
.card{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;padding-block:82px 128px;padding-left:max(22px,env(safe-area-inset-left,0px));padding-right:max(22px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:18px;touch-action:pan-y;scrollbar-width:none;--panel:rgba(255,255,255,.4)}
.card::-webkit-scrollbar{display:none}
.card>*{flex-shrink:0}
.bg-brown{background:var(--brown);color:var(--milk);--fg:var(--milk);--bg:var(--brown);--panel:rgba(0,0,0,.18);--line:rgba(248,244,234,.28)}
.bg-cream{background:var(--cream);color:var(--ink);--fg:var(--brown);--bg:var(--cream);--panel:rgba(255,255,255,.42);--line:rgba(95,46,39,.25)}
.bg-bone{background:var(--bone);color:var(--ink);--fg:var(--brown);--bg:var(--bone);--panel:rgba(255,255,255,.55);--line:rgba(95,46,39,.22)}
.bg-night{background:var(--cocoa);color:var(--milk);--fg:var(--milk);--bg:var(--cocoa);--panel:rgba(255,255,255,.06);--line:rgba(248,244,234,.2)}
.card.in-r{animation:inR .45s cubic-bezier(.2,.8,.2,1)}
.card.in-l{animation:inL .45s cubic-bezier(.2,.8,.2,1)}
@keyframes inR{from{transform:translateX(30%);opacity:.2}}
@keyframes inL{from{transform:translateX(-30%);opacity:.2}}
.card.fresh>*:not(.coverart):not(.haze){animation:rise .55s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--d,0) * 70ms + 80ms)}
@keyframes rise{from{transform:translateY(18px);opacity:0}}

.eyebrow{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;opacity:.78;display:flex;gap:10px;align-items:center}
.eyebrow .st{border:1.5px solid currentColor;border-radius:999px;padding:3px 8px;letter-spacing:.1em}
h1,h2,h3{margin:0;font-family:var(--f-display);text-transform:uppercase;text-wrap:balance}
.mega{font-weight:900;font-size:clamp(88px,28vw,128px);line-height:.82;letter-spacing:-.005em}
h2{font-weight:900;font-size:clamp(46px,13vw,62px);line-height:.9}
h3{font-weight:800;font-size:24px;line-height:1}
p{margin:0}
.lead{font-size:17px;line-height:1.45;max-width:34ch}
.small{font-size:14px;line-height:1.45;opacity:.82}
.panel{background:var(--panel);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px}
.row{display:flex;gap:10px;align-items:center}

/* cover */
.cycler{display:inline-block;color:var(--cream);animation:flip .5s cubic-bezier(.2,.8,.2,1)}
@keyframes flip{from{transform:translateY(40%) rotateX(70deg);opacity:0}}
.coverart{position:absolute;top:112px;right:max(14px,env(safe-area-inset-right,0px));width:clamp(110px,34vw,150px);aspect-ratio:1;pointer-events:none}
.coverart svg{width:100%;height:100%;display:block;overflow:visible;animation:iconIn .55s cubic-bezier(.2,1.4,.4,1)}
@keyframes iconIn{from{transform:scale(.4) rotate(-20deg);opacity:0}}
.coverart .ln{fill:none;stroke:var(--cream);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.coverart .fl{fill:var(--cream)}
.ic-fly,.ic-crank{transform-box:fill-box;transform-origin:center;animation:spin 1.1s linear infinite}
.ic-crank{transform-box:view-box;transform-origin:98px 138px}
.ic-carriage{animation:glide 2.4s ease-in-out infinite}
@keyframes glide{50%{transform:translateX(56px)}}
.ic-spring{transform-box:fill-box;transform-origin:left center;animation:stretch 2.4s ease-in-out infinite}
@keyframes stretch{50%{transform:scaleX(2.3)}}
.ic-lift{animation:lift 1.3s ease-in-out infinite}
@keyframes lift{50%{transform:translateY(-26px)}}
.ic-drop{animation:drip 1.3s ease-in infinite}
@keyframes drip{0%{transform:translateY(0);opacity:0}30%{opacity:1}100%{transform:translateY(30px);opacity:0}}
.ic-wave{animation:wave 2.2s linear infinite}
@keyframes wave{to{transform:translateX(-60px)}}
.ic-ice{transform-box:fill-box;transform-origin:center;animation:bob 2s ease-in-out infinite}
.ic-ice:nth-of-type(2){animation-delay:-.7s}.ic-ice:nth-of-type(3){animation-delay:-1.3s}
@keyframes bob{50%{transform:translateY(7px) rotate(8deg)}}
@keyframes spin{to{transform:rotate(360deg)}}
.cover-meta{display:flex;gap:8px;flex-wrap:wrap}
.tagpill{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;border:1.5px solid var(--line);border-radius:999px;padding:7px 11px}
.preview-pass{display:grid;grid-template-columns:repeat(var(--n,8),1fr);gap:6px;max-width:min(300px,calc(var(--n,8) * 38px))}
.preview-pass i{aspect-ratio:1;border-radius:50%;border:1.5px dashed var(--line)}

/* choices */
.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.choice{appearance:none;border:2px solid var(--fg);background:transparent;border-radius:var(--r);padding:14px;text-align:left;min-height:112px;display:flex;flex-direction:column;justify-content:space-between;gap:10px;transition:transform .15s,background .2s,color .2s}
.choice b{font-family:var(--f-display);font-size:31px;font-weight:900;text-transform:uppercase;line-height:.88}
.choice small{font-size:12.5px;line-height:1.3;opacity:.78}
.choice[aria-pressed=true]{background:var(--fg);color:var(--bg)}
.choice:active,.opt:active,.zone:active{transform:scale(.97)}
.kit{display:flex;flex-direction:column;gap:8px}
.kitem{appearance:none;width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;border:0;border-radius:14px;background:var(--panel);padding:12px 14px}
.kitem .box{flex:0 0 24px;height:24px;border-radius:50%;border:2px solid var(--fg);display:grid;place-items:center;margin-top:1px;transition:background .2s}
.kitem .box svg{opacity:0;transition:opacity .2s}
.kitem[aria-pressed=true] .box{background:var(--fg)}
.kitem[aria-pressed=true] .box svg{opacity:1}
.kitem[aria-pressed=true] strong{text-decoration:line-through;text-decoration-thickness:2px;opacity:.6}
.kitem strong{display:block;font-size:15.5px}
.kitem span{font-size:13.5px;opacity:.75;line-height:1.35}
.packed{font-family:var(--f-display);font-weight:900;font-size:28px;text-transform:uppercase;color:var(--fg);animation:pop .5s cubic-bezier(.2,1.6,.4,1)}

/* map */
.planwrap{perspective:1100px;margin-inline:-14px;margin-block:-6px;position:relative}
.photo{position:absolute;top:2%;right:3%;width:45%;aspect-ratio:4/3;max-width:100%;border-radius:14px;overflow:hidden;background:var(--milk);box-shadow:0 12px 26px rgba(42,22,18,.25);border:3px solid var(--milk);transform:scale(.6) rotate(4deg);opacity:0;transition:transform .4s cubic-bezier(.2,1.4,.4,1),opacity .25s;pointer-events:none}
.photo.show{transform:rotate(3deg);opacity:1;animation:photoIn .45s cubic-bezier(.2,1.4,.4,1)}
@keyframes photoIn{from{transform:scale(.5) rotate(-6deg);opacity:0}}
.photo img{width:100%;height:100%;object-fit:cover;display:block}
.photo .ph{width:100%;height:100%;display:grid;place-content:center;gap:4px;text-align:center;border:1.5px dashed rgba(95,46,39,.35);border-radius:10px;color:var(--brown);font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.photo .ph b{font-family:var(--f-display);font-size:18px;letter-spacing:.02em}
.photo .cap2{position:absolute;left:0;right:0;bottom:0;padding:14px 8px 6px;background:linear-gradient(transparent,rgba(23,11,9,.7));color:var(--milk);font-family:var(--f-display);font-weight:800;font-size:15px;text-transform:uppercase}
.tip .rigbox{pointer-events:none;max-width:320px;margin-top:4px}
.tip .rig{width:100%;height:auto;aspect-ratio:var(--ar,16/9)}
.tip .rig .bike{fill:rgba(95,46,39,.3)}
.tip .rig .pod{stroke:rgba(95,46,39,.5)}
.tip .rig .podlab{fill:var(--brown)}
.tip .layout{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;opacity:.7;margin-top:4px}
.plan{display:block;width:100%;height:auto;transform:rotateX(22deg);transform-origin:50% 65%;filter:drop-shadow(0 18px 18px rgba(42,22,18,.22));overflow:visible}
.plan .slab{fill:var(--milk);stroke:var(--brown);stroke-width:7;stroke-linejoin:round}
.plan .zone{fill:rgba(95,46,39,.07);stroke:rgba(95,46,39,.32);stroke-width:3;cursor:pointer;transition:fill .25s}
.plan .zone.mine{fill:var(--cream);animation:glow 1.6s ease-in-out infinite}
@keyframes glow{50%{fill:#c7bfa6}}
.plan .zone.sel{fill:var(--brown)}
.plan .water{cursor:pointer}
.plan .water circle{fill:var(--milk);stroke:var(--brown);stroke-width:5;animation:glow2 2s ease-in-out infinite}
.plan .water path{fill:var(--brown)}
.plan .water.sel circle{fill:var(--brown)}
.plan .water.sel path{fill:var(--milk)}
@keyframes glow2{50%{stroke-width:9}}
.plan .core{fill:rgba(95,46,39,.28)}
.plan .lab{font-family:var(--f-display);font-weight:800;font-size:42px;letter-spacing:.04em;text-transform:uppercase;fill:var(--brown);pointer-events:none;text-anchor:middle}
.plan .lab.sel{fill:var(--milk)}
.plan .lab.tiny{font-size:30px;opacity:.8}
.plan .leg1{fill:none;stroke:var(--brown);stroke-width:12;stroke-dasharray:2 22;stroke-linecap:round;opacity:.6}
.plan .leg2{fill:none;stroke:var(--brown);stroke-width:20;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:draw 1.6s .5s ease forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.plan .walker{fill:var(--brown);stroke:var(--milk);stroke-width:6}
.plan .ripple{fill:none;stroke:var(--brown);stroke-width:4;animation:ripple 1.6s ease-out infinite;transform-box:fill-box;transform-origin:center}
@keyframes ripple{from{transform:scale(.4);opacity:.9}to{transform:scale(2.4);opacity:0}}
.plan .pin{fill:var(--brown)}
.plan .pinlab{font-family:var(--f-mono);font-size:24px;fill:var(--brown);letter-spacing:.08em}
.steps{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;counter-reset:s}
.steps li{display:flex;gap:12px;align-items:baseline;counter-increment:s;font-size:15px;line-height:1.4}
.steps li::before{content:counter(s);flex:0 0 26px;height:26px;border-radius:50%;background:var(--fg);color:var(--bg);font-family:var(--f-mono);font-size:12px;display:grid;place-items:center;transform:translateY(-1px)}
.tip{min-height:74px}
.tip b{font-family:var(--f-display);font-weight:800;font-size:22px;text-transform:uppercase}

/* timing */
.clockrow{display:flex;gap:16px;align-items:center}
.clock{flex:0 0 104px;height:104px}
.clock .hand{transform-origin:50px 50px;animation:spin 6s linear infinite}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.opt{appearance:none;border:2px solid var(--fg);background:transparent;border-radius:14px;padding:14px 10px;font-weight:700;font-size:15px;transition:background .2s,color .2s,transform .15s}
.opt[aria-pressed=true]{background:var(--fg);color:var(--bg)}
.verdict{font-family:var(--f-display);font-weight:900;font-size:30px;text-transform:uppercase;line-height:.95;animation:pop .5s cubic-bezier(.2,1.6,.4,1)}
.seg{display:flex;padding:4px;border-radius:999px;border:1.5px solid var(--line);gap:2px}
.seg button{flex:1;border:0;background:transparent;padding:10px 6px;border-radius:999px;font-weight:600;font-size:13.5px;transition:background .2s,color .2s}
.seg button[aria-pressed=true]{background:var(--fg);color:var(--bg)}
.upgrade{border:1.5px dashed var(--line);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.upgrade b{font-family:var(--f-display);font-weight:800;font-size:20px;text-transform:uppercase}
.fee{background:var(--panel);border-radius:14px;padding:12px 8px;text-align:center;display:flex;flex-direction:column;gap:4px}
.fee b{font-family:var(--f-display);font-weight:900;font-size:30px;line-height:.9}
.fee span{font-size:12px;line-height:1.3;opacity:.78}

/* rooms */
.led{height:6px;border-radius:6px;background:linear-gradient(90deg,var(--led-a),var(--led-b),var(--led-c),var(--led-a));background-size:300% 100%;animation:led 3s linear infinite;box-shadow:0 0 22px rgba(255,77,141,.55)}
@keyframes led{to{background-position:300% 0}}
.bg-night .haze{position:absolute;inset:-20% -40% auto;height:70%;background:radial-gradient(closest-side,rgba(255,77,141,.30),transparent),radial-gradient(closest-side at 70% 60%,rgba(125,92,255,.28),transparent);animation:haze 7s ease-in-out infinite alternate;pointer-events:none;z-index:0}
@keyframes haze{to{transform:translateX(18%) translateY(6%)}}
.bg-night>*{position:relative;z-index:1}
.rig{width:100%;height:auto;display:block}
.rig .bike{fill:rgba(248,244,234,.22);cursor:pointer;transition:fill .2s}
.rig .bike.mine{fill:var(--led-b);filter:drop-shadow(0 0 6px var(--led-b))}
.rig .pod{fill:none;stroke:rgba(248,244,234,.45);stroke-width:2}
.rig .podlab,.rig .rowlab{font-family:var(--f-mono);font-size:9px;fill:rgba(248,244,234,.7);text-anchor:middle;letter-spacing:.1em}
.spot{fill:transparent;stroke:var(--brown);stroke-width:2;cursor:pointer;transition:fill .2s}
.spot.mine{fill:var(--brown)}
.rig .mirror{stroke:var(--brown);stroke-width:3;opacity:.5}
.rig .cap{font-family:var(--f-mono);font-size:9px;fill:var(--brown);text-anchor:middle;letter-spacing:.12em;opacity:.8}
.tub{fill:transparent;stroke:var(--brown);stroke-width:3;cursor:pointer;transition:fill .25s}
.tub.mine{fill:var(--brown)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{appearance:none;border:1.5px solid var(--fg);background:transparent;border-radius:999px;padding:8px 12px;font-size:13.5px;font-weight:600;transition:background .2s,color .2s}
.chip[aria-pressed=true]{background:var(--fg);color:var(--bg)}
.fact{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fact div{border-top:1.5px solid var(--line);padding-top:8px}
.fact b{display:block;font-family:var(--f-display);font-weight:900;font-size:34px;line-height:.9}
.fact span{font-size:12px;opacity:.75;line-height:1.3}

/* towel */
.towels{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.towel{border-radius:var(--r);padding:16px 14px;background:var(--milk);color:var(--ink);display:flex;flex-direction:column;gap:8px;min-height:150px;position:relative;overflow:hidden}
.towel::before{content:"";position:absolute;left:0;right:0;top:0;height:10px;background:repeating-linear-gradient(90deg,var(--brown) 0 6px,transparent 6px 12px);opacity:.35}
.towel .price{font-family:var(--f-display);font-weight:900;font-size:46px;line-height:.85;color:var(--brown)}
.towel .price.flip{animation:flip .45s cubic-bezier(.2,.8,.2,1)}
.towel small{font-size:12.5px;line-height:1.35;opacity:.75}

/* cafe */
.drinks{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.drink{appearance:none;border:0;border-radius:var(--r);min-height:118px;padding:14px;text-align:left;display:flex;flex-direction:column;justify-content:flex-end;gap:4px;position:relative;overflow:hidden;transition:transform .15s,box-shadow .2s}
.drink b{font-family:var(--f-display);font-weight:900;font-size:28px;text-transform:uppercase;line-height:.9;position:relative}
.drink small{font-size:12px;opacity:.8;position:relative}
.drink::after{content:"";position:absolute;right:-18px;top:-18px;width:84px;height:84px;border-radius:50%;background:rgba(255,255,255,.14)}
.drink[aria-pressed=true]{box-shadow:0 0 0 3px var(--milk),0 0 0 6px var(--brown) inset}
.drink[aria-pressed=true]::before{content:"Saved";position:absolute;top:12px;left:14px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;background:var(--milk);color:var(--ink);border-radius:999px;padding:3px 8px}
.d-coffee{background:#3b2219;color:var(--milk)}
.d-matcha{background:#6f7c4a;color:var(--milk)}
.d-protein{background:var(--milk);color:var(--ink)}
.d-bowl{background:#7b3a52;color:var(--milk)}
.credit{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.credit div{border:1.5px dashed var(--line);border-radius:14px;padding:12px;text-align:center}
.credit b{font-family:var(--f-display);font-weight:900;font-size:36px;line-height:.9;display:block}
.credit span{font-size:12px;opacity:.75}

/* account */
.btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.btn{appearance:none;border:0;border-radius:14px;background:var(--brown);color:var(--milk);padding:14px 12px;font-weight:700;font-size:14.5px;text-align:center;text-decoration:none;display:block}
.btn.ghost{background:transparent;color:var(--fg);border:1.5px solid var(--fg)}
details.help{background:var(--panel);border-radius:14px;padding:12px 14px}
details.help summary{font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between}
details.help summary::-webkit-details-marker{display:none}
details.help summary::after{content:"+";font-family:var(--f-mono)}
details.help[open] summary::after{content:"\2212"}
details.help p{margin-top:8px;font-size:14px;line-height:1.45;opacity:.85}

/* plans */
.rail{display:flex;align-items:stretch;gap:12px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;margin-inline:-22px;padding-inline:22px;padding-block:4px 8px;scrollbar-width:none;touch-action:pan-x pan-y}
.rail::-webkit-scrollbar{display:none}
.plancard{flex:0 0 80%;scroll-snap-align:center;border-radius:22px;padding:18px;background:var(--milk);color:var(--ink);display:flex;flex-direction:column;gap:10px;position:relative;text-decoration:none;transition:transform .15s}
.plancard:active{transform:scale(.98)}
.plancard .more{margin-top:auto;padding-top:6px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:6px}
.plancard.dark{background:var(--brown);color:var(--milk)}
.plancard .kind{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.plancard h3{font-size:30px}
.plancard .big{font-family:var(--f-display);font-weight:900;font-size:58px;line-height:.85}
.plancard .big.mid{font-size:40px}
.plancard ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:7px;font-size:14px;line-height:1.4}
.plancard li{display:flex;gap:8px}
.plancard li::before{content:"";flex:0 0 6px;height:6px;border-radius:50%;background:currentColor;margin-top:8px;opacity:.6}
.badge{position:absolute;top:16px;right:16px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;background:var(--led-b);color:var(--ink);border-radius:999px;padding:4px 9px}
.tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.tiers div{border-top:1.5px solid currentColor;padding-top:6px}
.tiers b{display:block;font-family:var(--f-display);font-weight:900;font-size:36px;line-height:.9}
.tiers span{font-size:11.5px;opacity:.75}
.raildots{display:flex;justify-content:center;gap:6px}
.raildots i{width:7px;height:7px;border-radius:50%;background:var(--line);transition:width .25s,background .25s}
.raildots i.on{width:20px;border-radius:4px;background:var(--fg)}
.textlink{color:inherit;font-weight:700;text-underline-offset:3px}

/* perk */
.stamps{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.stamp{aspect-ratio:1;border-radius:50%;border:2px solid var(--milk);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;font-family:var(--f-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;transform:rotate(var(--rot));position:relative}
.stamp::before{content:"";position:absolute;inset:4px;border-radius:50%;border:1px dashed rgba(248,244,234,.5)}
.stamps{max-width:420px}
.stamp svg{width:clamp(20px,6.5vw,30px);height:auto}
.card.fresh .stamp{animation:thunk .5s cubic-bezier(.2,1.6,.4,1) both;animation-delay:calc(var(--k) * 110ms + 300ms)}
@keyframes thunk{from{transform:rotate(var(--rot)) scale(2.2);opacity:0}}
.ticket{background:var(--milk);color:var(--ink);border-radius:22px;padding:20px 20px 18px;position:relative;display:flex;flex-direction:column;gap:12px}
.ticket .tear{position:relative}
.ticket .tear::before,.ticket .tear::after{content:"";position:absolute;top:-13px;width:24px;height:24px;border-radius:50%;background:var(--brown)}
.ticket .tear::before{left:-32px}.ticket .tear::after{right:-32px}
.claim{display:flex;flex-direction:column;gap:8px}
.claim label{font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--brown)}
.claim .field{display:flex;gap:8px}
.claim input{flex:1;min-width:0;height:50px;border-radius:12px;border:1.5px solid rgba(95,46,39,.35);background:#fff;color:var(--ink);padding:0 14px;font:inherit;font-size:16px;user-select:text;-webkit-user-select:text}
.claim input:focus{outline:none;border-color:var(--brown);box-shadow:0 0 0 3px rgba(95,46,39,.15)}
.claim .btn{flex:0 0 auto;padding:0 18px;height:50px;font-family:var(--f-display);font-weight:800;font-size:19px;letter-spacing:.04em;text-transform:uppercase}
.claim .err{color:#9b2318;font-size:13px}
.claim .fine{font-size:12px;opacity:.65;line-height:1.4}
.sent{font-size:13.5px;opacity:.8}
.welcome{font-size:18px;line-height:1.45;max-width:32ch}
.ticket .kind{font-family:var(--f-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--brown)}
.ticket .what{font-family:var(--f-display);font-weight:900;font-size:50px;line-height:.85;text-transform:uppercase;color:var(--brown)}
.ticket .tear{border-top:2px dashed rgba(42,22,18,.22);margin-top:6px}
.live{display:flex;justify-content:space-between;align-items:center;font-family:var(--f-mono);font-size:13px;font-variant-numeric:tabular-nums}
.live .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#2f8f4e;margin-right:7px;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:.2}}
.after{display:flex;flex-direction:column;gap:10px}
.after div{border-top:1.5px solid var(--line);padding-top:10px;font-size:14.5px;line-height:1.45}
.after b{display:block;font-family:var(--f-display);font-weight:800;font-size:20px;text-transform:uppercase}
.contact{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.cpill{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1.5px solid var(--line);border-radius:14px;padding:10px 12px;color:inherit;text-decoration:none;font-weight:600;font-size:14.5px;min-width:0}
.cpill.wa{justify-content:flex-start;background:var(--milk);color:var(--ink);border-color:var(--milk)}
.cpill .addr{user-select:text;-webkit-user-select:text;overflow-wrap:anywhere;min-width:0}
.cpill .copy{flex:0 0 auto;border:0;border-radius:999px;background:var(--milk);color:var(--ink);padding:6px 12px;font-weight:700;font-size:13px}
.inline-btn{appearance:none;border:0;background:none;padding:0;font-weight:700;text-decoration:underline;text-underline-offset:3px}
canvas.confetti{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:7}

.toast{position:absolute;z-index:9;left:50%;bottom:96px;transform:translate(-50%,20px);background:var(--ink);color:var(--milk);font-size:14px;padding:10px 16px;border-radius:999px;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;white-space:nowrap}
.toast.show{opacity:1;transform:translate(-50%,0)}
:focus-visible{outline:3px solid var(--led-b);outline-offset:2px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* stamps not yet collected */
.stamp.empty{opacity:.32;border-style:dashed}

/* universal page */
.cphoto{margin:0;border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;max-width:100%;background:var(--panel)}
.cphoto img{width:100%;height:100%;object-fit:cover;display:block}
.cphoto.bleed{margin:-82px calc(-1 * max(22px,env(safe-area-inset-right,0px))) 0 calc(-1 * max(22px,env(safe-area-inset-left,0px)));border-radius:0 0 28px 28px;aspect-ratio:auto;height:min(46vh,420px);max-width:none;position:relative}
.cphoto.bleed::after{content:"";position:absolute;inset:0 0 auto;height:110px;background:linear-gradient(rgba(23,11,9,.45),transparent)}
.layout-photo .eyebrow{margin-top:4px}
.layout-poster>.eyebrow{margin-top:auto}
.layout-poster .poster{position:absolute;inset:0;background-size:cover;background-position:center;z-index:0}
.layout-poster .poster::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(23,11,9,.35),rgba(23,11,9,.15) 30%,rgba(23,11,9,.88) 75%)}
.layout-poster>*:not(.poster){position:relative;z-index:1}
.ticks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.ticks li{display:flex;gap:12px;font-size:15.5px;line-height:1.4}
.ticks li::before{content:"";flex:0 0 9px;height:9px;border-radius:50%;background:var(--fg);margin-top:7px}
.opts.stack{grid-template-columns:1fr}
.btn.cta{background:var(--fg);color:var(--bg);display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-radius:999px;font-family:var(--f-display);font-weight:800;font-size:21px;letter-spacing:.04em;text-transform:uppercase}

