/* Jianco landing — /assets/v2/landing.v1.css (immutable once deployed: ship later changes as landing.v2.css). Needs /assets/ui.css?v=4.
   Layering (root stacking context): #world palette + each scene's .back layer (decor, giant type, static coin) (z 0)
   < fixed transparent WebGL canvas #gl (z 1) < each scene's .front layer (copy, controls) (z 2) < #deck (z 3) < chrome (z 20)
   < loader (z 90). With JS and motion allowed (html.pin) the .back / .front layers are fixed to the viewport (section 4b);
   otherwise they have no box and each scene lays out in the page flow.
   Palette: DESIGN-V2 "Loanmeme mono". Structure and motion: LANDING-V2. */

@font-face{font-family:"Comfortaa";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/v2/fonts/Comfortaa-Bold.v1.woff2) format("woff2")}
@font-face{font-family:"Silkscreen";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/v2/fonts/Silkscreen-Regular.v1.woff2) format("woff2")}

/* ---------- 0. page, scroll model, tokens ---------- */
:root{
  --top-h:calc(64px + env(safe-area-inset-top));
  --bar:56px; --bar-b:calc(var(--bar) + env(safe-area-inset-bottom));
  --gut:16px;
  --band:0px;   /* the bottom band that holds the subtitle line and the keycap (desktop) */
  --chrome-ink:var(--i1); --chrome-inv:var(--paper); --chrome-bg:rgba(238,244,247,.9); --chrome-line:var(--ink);
  --ease-out:cubic-bezier(.2,.7,.2,1);
}
@media (min-width:720px){:root{--gut:32px}}
@media (min-width:800px){:root{--bar:60px}}
@media (min-width:1280px){:root{--gut:48px}}
@media (min-width:960px) and (min-height:600px){:root{--band:64px}}
/* one flick = one scene: native snap, mandatory only while the story is on screen (JS); proximity without JS, under reduced motion,
   and behind the ?snap=soft kill switch (JS settles proximity stops onto a scene) */
html{scroll-behavior:auto;scroll-snap-type:y proximity}
html.js.story-in{scroll-snap-type:y mandatory}
html.js.story-in.snap-soft,html.js.story-in.rm{scroll-snap-type:y proximity}
html.js.deck-in,html.sheet-open{scroll-snap-type:none}
@media (prefers-reduced-motion:reduce){html.js.story-in{scroll-snap-type:y proximity}}
body.landing{background:#000;overflow-x:hidden;overflow-x:clip}
.landing .sprite{position:absolute;width:0;height:0;overflow:hidden}
.landing .micro{font:500 10.5px/1.4 var(--f-mono);letter-spacing:.16em;text-transform:uppercase}
.landing .micro b{font-weight:700;color:inherit}
html:not(.js) .js-only,html.js .no-js{display:none}
/* without JS the chrome cannot follow the scene, so it takes one dark treatment everywhere; skeletons never fill */
html:not(.js){--chrome-ink:var(--paper);--chrome-inv:var(--ink);--chrome-bg:rgba(10,10,10,.72);--chrome-line:rgba(250,250,247,.6)}
html:not(.js) .top{background:rgba(10,10,10,.92)}
html:not(.js) .sk{display:none}
html:not(.js) .picks{min-height:0}
/* chrome per scene: ink on mist / paper, paper on the dark scenes and the deck */
html[data-chrome="2"],html[data-chrome="4"]{--chrome-bg:rgba(250,250,247,.92)}
html[data-chrome="3"],html[data-chrome="5"],html[data-chrome="6"],html[data-chrome="7"]{--chrome-ink:var(--paper);--chrome-inv:var(--ink);--chrome-bg:rgba(10,10,10,.72);--chrome-line:rgba(250,250,247,.6)}

/* the 健 chop: inline SVG glyph (no CJK webfont), stamped edge through #chop-rough */
.chop{display:inline-grid;place-items:center;width:var(--s,56px);height:var(--s,56px);border-radius:calc(var(--s,56px) * .1);filter:url(#chop-rough);flex:none}
.chop svg{width:74%;height:74%}
.chop-paper{background:var(--paper);color:var(--ink)}
.chop-ink{background:var(--ink);color:var(--paper)}

/* landing buttons (the ui.css .btn stays for the deck) */
.lbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:var(--r-pill);border:1.5px solid transparent;font:600 14px/1 var(--f-ui);letter-spacing:.005em;white-space:nowrap;cursor:pointer;transition:background .15s,box-shadow .15s,translate .15s;-webkit-tap-highlight-color:transparent}
.lbtn svg{width:16px;height:16px;flex:none}
.lbtn.acid{background:var(--acid);color:var(--on-acid);border-color:var(--ink)}
.lbtn.acid:hover{background:var(--acid-press)}
.lbtn.acid:active{translate:0 1px}
.lbtn.ink-ghost{border-color:var(--ink);color:var(--i1);background:transparent}
.lbtn.ink-ghost:hover{background:rgba(10,10,10,.06)}
.lbtn.ink-ghost[aria-disabled="true"]{cursor:not-allowed}
.lbtn em{font:700 9.5px/1 var(--f-mono);font-style:normal;letter-spacing:.12em;text-transform:uppercase;background:var(--ink);color:var(--paper);padding:4px 6px;border-radius:4px}
.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--paper);flex:none}
.icon-btn svg{width:18px;height:18px}
.ca-pill{display:inline-flex;align-items:center;gap:10px;height:44px;min-width:0;padding:0 14px 0 6px;border-radius:var(--r-pill);color:var(--paper);border:1.5px solid transparent;background:linear-gradient(var(--ink),var(--ink)) padding-box,var(--irid-linear) border-box;cursor:pointer}
.ca-pill svg{margin-left:auto;width:15px;height:15px;opacity:.85;flex:none}
.ca-k{font:700 10.5px/1 var(--f-mono);letter-spacing:.1em;background:var(--paper);color:var(--ink);padding:7px 8px;border-radius:var(--r-pill);flex:none}
.ca-v{font:500 12.5px/1 var(--f-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* focus: cyan ring on dark, ink + cyan halo on mist / paper */
.landing :focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.landing :is(h1,h2,h3,section,#deck)[tabindex="-1"]:focus{outline:none;box-shadow:none}
.s1 :focus-visible,.s2 :focus-visible,.s4 :focus-visible,html:is([data-chrome="1"],[data-chrome="2"],[data-chrome="4"]) .top :focus-visible{outline:none;box-shadow:var(--focus-ring-light)}

/* ---------- 1. loader ---------- */
.ld{display:none}
html.js .ld{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:#000;color:var(--paper);animation:ld-failsafe .3s 3.2s forwards;will-change:transform}
html.ld-seen .ld,html.js .ld[data-state="done"]{display:none}
@media (prefers-reduced-motion:reduce){html.js .ld{display:none}}
@keyframes ld-failsafe{to{opacity:0;visibility:hidden}}
/* exit: the tiles carry the black and burst outward, then fall (JS sets --d, --bx, --by, --r, --r1 per tile) */
.ld-tiles{position:absolute;inset:0;display:none;grid-template-columns:repeat(var(--tc,8),1fr);grid-template-rows:repeat(var(--tr,6),1fr);pointer-events:none}
.ld-tiles i{display:block;background:#000;box-shadow:inset 0 0 0 1px rgba(255,255,255,.07);will-change:transform}
html.js .ld[data-state="out"]{background:transparent;pointer-events:none;animation:none}
.ld[data-state="out"] .ld-tiles{display:grid}
.ld[data-state="out"] :is(.ld-grid,.ld-shapes,.ld-bar,.ld-skip){display:none}
.ld[data-state="out"] .ld-mark{z-index:1;transition:opacity .18s,transform .3s cubic-bezier(.3,0,.8,.2);opacity:0;transform:scale(1.25)}
.ld[data-state="out"] .ld-tiles i{animation:ld-burst .78s var(--d,0s) both}
@keyframes ld-burst{
  0%{transform:none;animation-timing-function:cubic-bezier(.2,.7,.4,1)}
  22%{transform:translate3d(var(--bx),var(--by),0) rotate(var(--r1)) scale(.96);animation-timing-function:cubic-bezier(.5,0,.9,.4)}
  100%{transform:translate3d(calc(var(--bx) * 1.6),calc(var(--by) + 115vh),0) rotate(var(--r)) scale(.9)}}
.ld-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:100px 100px;background-position:center center}
.ld-shapes{position:absolute;inset:0;width:100%;height:100%;color:rgba(255,255,255,.06);animation:ld-shapes 2s ease-out forwards}
@keyframes ld-shapes{to{color:rgba(255,255,255,.16)}}
.ld-mark{position:relative;display:flex;align-items:center;gap:14px;padding:0 16px}
.ld-mark .chop{--s:52px}
.ld-t{display:flex;align-items:baseline;gap:10px;margin:0;white-space:nowrap}
.ld-t b{font:400 30px/1 var(--f-display);letter-spacing:.03em;color:var(--paper)}
.ld-type{font:700 19px/1 Comfortaa,var(--f-ui);color:var(--paper)}
.ld-u{animation:ld-blink 1s steps(1) infinite}
@keyframes ld-blink{50%{opacity:0}}
html.js .ld .ld-is,html.js .ld .ld-w{visibility:hidden}
html.js .ld[data-t] .ld-is,html.js .ld[data-t] .ld-w{visibility:visible}
.ld-w .nz{color:var(--dim)}
.ld-bar{position:absolute;left:50%;bottom:22%;width:min(240px,60vw);height:2px;background:#222;transform:translateX(-50%)}
.ld-bar i{position:absolute;left:0;top:0;bottom:0;width:100%;background:var(--paper);transform-origin:left;transform:scaleX(0);animation:ld-bar 2.3s cubic-bezier(.3,.1,.3,1) forwards}
@keyframes ld-bar{to{transform:scaleX(1)}}
.ld-skip{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom));min-width:64px;height:44px;padding:0 16px;border-radius:var(--r-pill);border:1px solid rgba(250,250,247,.28);color:var(--mut);font:500 11px/1 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;background:transparent}
.ld-skip:hover{color:var(--paper);border-color:var(--paper)}

/* ---------- 2. canvas + stills ---------- */
#gl{position:fixed;left:0;top:0;right:0;width:100%;height:100vh;height:100lvh;z-index:1;display:block;pointer-events:none;opacity:0;transition:opacity .15s ease}
html.gl-ready #gl{opacity:1}
html.gl-ready.gl-hide #gl{visibility:hidden}
html.gl-off #gl,html:not(.js) #gl{display:none}
/* the static coin renders: first paint, no-JS, no-WebGL, context lost; hidden once the 3D coin is up */
.still{position:absolute;z-index:0;margin:0;pointer-events:none;transition:opacity .15s ease}
.still img{display:block;width:100%;height:auto;max-width:none}
html.gl-ready .still{opacity:0}
html.gl-cut .still,html.gl-cut #gl{transition:none}
html.gl-ready.gl-lost .still{opacity:1}

/* ---------- 3. chrome: top bar + bottom bar ---------- */
.top{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;gap:10px;height:var(--top-h);padding:env(safe-area-inset-top) max(var(--gut),env(safe-area-inset-right)) 0 max(var(--gut),env(safe-area-inset-left));color:var(--chrome-ink);transition:color .5s,background .4s;pointer-events:none}
.top>*{pointer-events:auto}
html.deck-top .top{background:rgba(10,10,10,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.mark{display:inline-flex;align-items:center;gap:9px;min-height:44px;min-width:44px;color:inherit}
.mark-glyph{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:7px;background:var(--chrome-ink);color:var(--chrome-inv);transition:background .5s,color .5s;flex:none}
.mark-glyph svg{width:23px;height:23px}
.mark-word{font:400 21px/1 var(--f-display);letter-spacing:.03em}
.top-pill{position:absolute;left:50%;transform:translateX(-50%);padding:6px 10px;border-radius:var(--r-pill);background:var(--chrome-bg);color:var(--chrome-ink);white-space:nowrap;display:none;transition:background .5s,color .5s}
.top-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.top-link{display:inline-flex;align-items:center;gap:6px;height:44px;padding:0 16px;border:1.5px solid var(--chrome-line);border-radius:var(--r-pill);background:var(--chrome-bg);color:var(--chrome-ink);font:600 13.5px/1 var(--f-ui);white-space:nowrap;transition:background .5s,color .5s,border-color .5s}
.top-link svg{width:15px;height:15px}
.top-menu{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--chrome-line);background:var(--chrome-bg);color:var(--chrome-ink);transition:background .5s,color .5s,border-color .5s}
.top-menu svg{width:18px;height:18px}
@media (max-width:359px){.mark-word{display:none}}
@media (min-width:640px){.top-pill{display:block}}

.bar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:auto 1fr auto;align-items:center;height:var(--bar-b);padding:0 max(6px,env(safe-area-inset-right)) env(safe-area-inset-bottom) max(6px,env(safe-area-inset-left));background:#000;color:var(--paper)}
.bar-dots{display:flex;align-items:center;margin:0;padding:0;list-style:none}
.bdot{position:relative;display:grid;place-items:center;width:44px;height:44px}
.bdot::after{content:"";width:20px;height:20px;border-radius:50%;background:#6E6E69;transform:scale(.3);transition:transform .5s ease-out,background .5s ease-out,box-shadow .5s}
.bdot.passed::after{background:var(--paper)}
.bdot[aria-current]::after{background:var(--paper);transform:scale(.55);box-shadow:0 0 0 6px rgba(250,250,247,.14)}
.bdot:hover::after{background:var(--paper)}
.bar-x{grid-column:3;display:grid;place-items:center;width:44px;height:44px;color:var(--paper)}
.bar-x svg{width:18px;height:18px}
.bar-copy{display:none;margin:0;font:500 9.5px/1 var(--f-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--dim);white-space:nowrap}
@media (min-width:800px){
  .bar{grid-template-columns:1fr auto 1fr;padding-inline:max(24px,env(safe-area-inset-left))}
  .bar-x{grid-column:2}
  .bar-copy{display:block;grid-column:3;justify-self:end}
}
@media (max-width:1023px){.bar-copy span{display:none}}
/* chrome fades in with the loader exit; a failsafe shows it anyway */
html.js:not(.ld-done):not(.ld-seen) .top,html.js:not(.ld-done):not(.ld-seen) .bar{opacity:0;animation:chrome-failsafe .01s 3.4s forwards}
html.ld-done .top,html.ld-done .bar{animation:chrome-in .8s ease both}
@keyframes chrome-in{from{opacity:0}to{opacity:1}}
@keyframes chrome-failsafe{to{opacity:1}}
@media (prefers-reduced-motion:reduce){html.js .top,html.js .bar{opacity:1;animation:none}}

/* ---------- 4. scenes (shared) ---------- */
.scene{position:relative;min-height:100vh;min-height:100svh;overflow:hidden;overflow:clip;scroll-snap-align:start;scroll-snap-stop:always;padding:var(--pt,0) var(--px,0) var(--pb,0)}
/* each scene splits into a layer under the WebGL canvas (.back: decor, giant type, the static coin) and one above it (.front: copy and
   controls). In the flow layout (no JS, reduced motion) the wrappers have no box and the scene lays out as one column. */
.back,.front{display:contents}
.scene .bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;overflow:clip}
.scene .fg{position:relative;z-index:2}
.s1,.s2,.s4{color-scheme:light}
/* scroll-linked depth: --k = this scene's offset from rest (-1 below .. 0 at rest .. 1 above), set by JS */
html.js .scene .bg{transform:translate3d(0,calc(var(--k,0) * 16vh),0)}
/* enter / leave (time-based, on the committed scene index): .ent elements slide in */
html.js .scene .ent{transition:opacity .7s ease var(--ed,0s),translate .9s var(--ease-out) var(--ed,0s)}
html.js .scene:is([data-state="ready"],[data-state="passed"]) .ent{opacity:0;translate:var(--ex,0) var(--ey,28px)}
@media (prefers-reduced-motion:reduce){
  html.js .scene .bg{transform:none}
  html.js .scene .ent{transition:none}
  html.js .scene:is([data-state="ready"],[data-state="passed"]) .ent{opacity:1;translate:none}
}

/* ---------- 4b. the pinned world (JS, motion allowed: html.pin). Loanmeme never scrolls a scene away: the world changes in
   place. The sections stay in the flow as 100svh scroll and snap targets (ids, anchors, headings); their two layers are fixed to
   the viewport. One background (#world) crossfades its palette on the committed index; a scene's layers fade in when it
   becomes the viewing scene and out when it leaves, and the copy drifts at most 40px with the scroll. ---------- */
#world{display:none}
html.pin #world{display:block;position:fixed;left:0;right:0;top:0;height:100vh;height:100lvh;z-index:0;pointer-events:none;background-color:var(--scene-mist);transition:background-color 1s ease}
html.pin #world i{position:absolute;inset:0;opacity:0;transition:opacity 1s ease}
html.pin #world .w1{background:radial-gradient(90% 70% at 50% 48%,var(--scene-mist-hi),rgba(238,244,247,0) 70%)}
html.pin #world .w3{background:radial-gradient(38% 32% at 50% 56%,rgba(143,184,255,.09),transparent 70%)}
html.pin #world .w6{background:radial-gradient(80% 60% at 20% 60%,rgba(143,184,255,.12),transparent 60%),linear-gradient(#05070D,#000 70%)}
html.pin[data-scene="1"] #world .w1,html.pin[data-scene="3"] #world .w3,html.pin[data-scene="6"] #world .w6{opacity:1}
html.pin:is([data-scene="2"],[data-scene="4"]) #world{background-color:var(--scene-paper)}
html.pin:is([data-scene="3"],[data-scene="5"],[data-scene="6"]) #world{background-color:#000}
html.pin[data-scene="7"] #world{background-color:var(--bg)}
html.pin .scene{height:100vh;height:100svh;min-height:0;padding:0;background:none;overflow:visible}
html.pin .scene>:is(.back,.front){position:fixed;left:0;right:0;top:0;height:100vh;height:100svh;box-sizing:border-box;overflow:hidden;overflow:clip;
  display:inherit;flex-direction:inherit;justify-content:inherit;align-items:inherit;gap:inherit;padding:var(--pt,0) var(--px,0) var(--pb,0);
  opacity:0;transition:opacity .4s ease}
html.pin .scene>.back{z-index:0}
html.pin .scene>.front{z-index:2;translate:0 calc(var(--k,0) * -40px)}
html.pin .scene[data-state="viewing"]>:is(.back,.front){opacity:1;transition:opacity .8s ease .12s}
html.pin .scene:not([data-state="viewing"]) *{pointer-events:none!important}
html.pin.jump .scene>:is(.back,.front){transition:none!important}
/* the opaque deck covers the pinned world: stop painting its background and decor layers (controls stay focusable) */
html.pin.deck-top #world,html.pin.deck-top .scene>.back{visibility:hidden}
html.pin .scene .bg{transform:translate3d(0,calc(var(--k,0) * 24px),0)}
html.js.pin .hero-type{transform:translate3d(-50%,calc(var(--k,0) * -30px),0)}
html.pin .s1{--pt:var(--top-h)}

/* ---------- 5. S1 mist ---------- */
.s1{
  --W:calc(100vw - 16px);
  --lh:calc(var(--W) * 90 / 264);
  --cap:78px;
  --ctop:calc(var(--cap) + var(--lh) * .78);
  --cw:clamp(150px,calc((100svh - var(--ctop) - 300px) / 1.03),min(80vw,46svh));
  display:flex;flex-direction:column;justify-content:flex-end;
  --pt:calc(var(--ctop) + var(--cw) * 1.03);--px:0px;--pb:calc(var(--bar-b) + 16px);
  color:var(--i1);background:radial-gradient(90% 70% at 50% 48%,var(--scene-mist-hi) 0%,var(--scene-mist) 70%)}
.mist-dots{position:absolute;inset:0;background-image:radial-gradient(var(--scene-dots) 1.1px,transparent 1.6px);background-size:16px 16px;-webkit-mask-image:radial-gradient(90% 70% at 50% 45%,transparent 35%,#000 95%);mask-image:radial-gradient(90% 70% at 50% 45%,transparent 35%,#000 95%)}
.strokes{position:absolute;inset:0;width:100%;height:100%}
.xxx{position:absolute;width:64px;height:18px;color:#fff}
.xxx.x1{left:6%;top:30%}
.xxx.x2{right:8%;top:64%}
.dotgrid{position:absolute;width:132px;height:84px;background-image:radial-gradient(#fff 3.2px,transparent 3.8px);background-size:22px 22px}
.dotgrid.g1{right:4%;top:17%}
.shard{position:absolute;width:26px;height:26px;opacity:.95;filter:drop-shadow(0 6px 10px rgba(30,55,70,.18))}
.sh1{left:12%;top:47%;transform:rotate(-18deg)}
.sh2{right:14%;top:21%;width:20px;height:20px;transform:rotate(24deg)}
.sh3{right:31%;top:56%;width:18px;height:18px;transform:rotate(8deg)}
.scroll-ring{display:none}
.disc{position:absolute;left:50%;top:calc(var(--ctop) + var(--cw) * .53);width:calc(var(--cw) * 1.34);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:var(--glow-coin-halo),radial-gradient(closest-side,var(--scene-mist-disc) 0,var(--scene-mist-disc) 90%,rgba(195,215,225,0) 100%)}
.hero-word{position:absolute;inset:0;z-index:0;margin:0;font-size:0;pointer-events:none;
  -webkit-mask-image:linear-gradient(#000 calc(var(--cap) + var(--lh) + 40px),rgba(0,0,0,.35) calc(var(--cap) + var(--lh) * 2.2),transparent calc(var(--cap) + var(--lh) * 3.2));
  mask-image:linear-gradient(#000 calc(var(--cap) + var(--lh) + 40px),rgba(0,0,0,.35) calc(var(--cap) + var(--lh) * 2.2),transparent calc(var(--cap) + var(--lh) * 3.2))}
.hero-type{position:absolute;left:50%;width:var(--W);height:auto;max-width:none;transform:translateX(-50%);top:calc(var(--cap) - var(--W) * 118 / 264);overflow:visible}
.hero-type text,.hero-type use{font-family:var(--f-display)}
.hero-type .fill{fill:var(--ink)}
.hero-type .extrude use{fill:var(--scene-extrude)}
.hero-type .o-ink{fill:none;stroke:var(--ink);stroke-width:1.2px;stroke-opacity:.42;vector-effect:non-scaling-stroke}
.hero-type .o-irid{fill:none;stroke:url(#irid-h);stroke-width:2.4px;vector-effect:non-scaling-stroke}
html.js .hero-type{transform:translate3d(-50%,calc(var(--k,0) * 22vh),0)}
.still-hero{left:50%;top:var(--ctop);width:var(--cw);transform:translateX(-50%) rotate(-4deg);filter:var(--glow-coin-hero)}
.hud{display:grid;gap:12px;padding:0 var(--gut)}
.hero-eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--i3);margin:0}
.hero-eyebrow .dot{background:var(--ink);box-shadow:0 0 0 3px rgba(10,10,10,.12)}
.hero-eyebrow .dot.live{background:var(--acid-ink);box-shadow:0 0 0 3px rgba(47,107,0,.2)}
.hero-eyebrow .dot::after{display:none}
.hero-line{font:500 15px/1.45 var(--f-ui);color:var(--i1);max-width:36ch;margin:0}
.hl{background:linear-gradient(transparent 52%,var(--acid) 52%,var(--acid) 94%,transparent 94%);padding:0 2px;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.fast-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.fast-row .lbtn{padding:0 15px;flex:1 1 auto}
.fast-row .ca-pill{flex:1 1 150px}
.hero-oracle{margin:-2px 0 0;font:500 12px/1.45 var(--f-ui);color:var(--i2);max-width:52ch}
.hero-oracle b{font-weight:700;color:var(--i1)}
.ho-n{white-space:nowrap}
.ho-n:not(:empty)::before{content:" · "}
@media (max-height:620px) and (max-width:959px){.s1 .hero-eyebrow,.s1 .hero-oracle{display:none}.s1{--cap:74px;--pt:calc(var(--ctop) + var(--cw) * .72)}.s2 .file-b,.s2 .gloss{display:none}.s2{--foot:118px}.s3 .room-label{display:none}.s3 .scr-close,.s3 .scr-legs{display:none}}
@media (max-width:959px){.hero-line{justify-self:start;margin-left:-8px;padding:4px 8px;border-radius:10px;background:rgba(238,244,247,.84)}}

/* ---------- 6. S2 paper type: giant type under a big chrome coin (loanmeme S2). Every position is computed from the viewport,
   so the static coin, the WebGL coin (anchored to .still-chrome) and the script word line up in both layouts. ---------- */
.s2{--pt:calc(var(--top-h) + 8px);--px:var(--gut);--pb:calc(var(--bar-b) + 18px);
  --foot:150px;                                                        /* exhibit note + file row, above the bar (phones) */
  --ya:calc(var(--top-h) + 8px);                                       /* top of the type area */
  --avail:calc(100svh - var(--ya) - var(--bar-b) - var(--foot));       /* height of the type area */
  --l1:min(calc((100vw - 2 * var(--gut)) / 1.84),calc(var(--avail) / 2.02));
  --l2:calc(var(--l1) * .3732);
  --th:calc(var(--l1) * 1.68 + var(--l2) * .86);                       /* LUCK / IS / DOCUMENTED at line-height .84 */
  --ty:calc(var(--ya) + (var(--avail) - var(--th)) / 2);
  --cy:calc(var(--ty) + var(--l1) * 1.3);                              /* coin centre: over IS and DOCUMENTED */
  --cd:min(75vw,calc(var(--avail) * .82));                             /* coin diameter */
  display:flex;flex-direction:column;background:var(--scene-paper);color:var(--i1)}
.microtype{position:absolute;inset:-40% -60%;display:flex;flex-direction:column;justify-content:center;gap:4px;transform:rotate(-12deg) translateX(calc(var(--k,0) * -10%));font:400 34px/1 var(--f-display);color:var(--scene-microtype);white-space:nowrap;user-select:none;-webkit-user-select:none}
.microtype p{margin:0;display:flex;width:max-content}
.microtype p:nth-child(odd){margin-left:-12%}
.microtype p span{display:block;padding-right:.3em}
.microtype .ol{color:transparent;-webkit-text-stroke:1px var(--scene-microtype-line)}
html.js .s2[data-state="viewing"] .microtype p{animation:mq-left 60s linear infinite}
html.js .s2[data-state="viewing"] .microtype p:nth-child(even){animation-name:mq-right;animation-duration:74s}
@keyframes mq-left{to{transform:translateX(-50%)}}
@keyframes mq-right{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.s2 .shard{width:22px;height:22px}
.ts1{left:6%;top:12%;transform:rotate(-14deg)}
.ts2{right:9%;top:9%;width:30px!important;height:30px!important;transform:rotate(30deg)}
.ts3{left:44%;bottom:14%;transform:rotate(12deg)}
.type-block{position:absolute;left:0;right:0;top:var(--ty);z-index:0;display:flex;justify-content:center;pointer-events:none}
.big-type{position:relative;z-index:0;display:block;margin:0;font:400 10px/1 var(--f-display);text-transform:uppercase;color:var(--ink);letter-spacing:.004em;text-align:center}
.big-type .rows{display:flex;flex-direction:column;align-items:center}
.big-type .l{display:block;line-height:.84;white-space:nowrap}
.big-type .l1,.big-type .l-is-m{font-size:var(--l1)}
.big-type .l1 .is-d{display:none}
.big-type .l2{font-size:var(--l2);line-height:.86}
.ol-word{color:var(--paper);-webkit-text-stroke:max(2px,.012em) var(--ink)}
/* the script word sits in the front layer, over the coin's left edge, on its lime swipe */
.script{position:absolute;z-index:2;left:var(--gut);top:calc(var(--ty) + var(--l1) * .5);display:inline-block;transform:rotate(-9deg);transform-origin:left center;font:400 clamp(40px,12vw,64px)/1 var(--f-script);color:var(--ink);pointer-events:none}
.script .swipe{position:absolute;left:-8%;right:-6%;top:34%;bottom:4%;background:var(--acid);transform:skewX(-14deg) rotate(1.5deg);border-radius:3px 16px 5px 12px;z-index:-1;transform-origin:left center;transition:scale .6s var(--ease-out) .45s}
.script-w{position:relative}
html.js .s2:is([data-state="ready"],[data-state="passed"]) .swipe{scale:0 1}
.still-chrome{left:50%;top:calc(var(--cy) - var(--cd) / 2);width:calc(var(--cd) * 560 / 630);transform:translateX(-50%);filter:var(--glow-coin-paper)}
.coin-sheen{position:absolute;inset:0;background:var(--irid-sheen);background-size:260% 100%;background-position:36% 0;mix-blend-mode:color;opacity:.55;-webkit-mask:url(/assets/v2/img/coin-chrome-560.v1.webp) center/100% 100% no-repeat;mask:url(/assets/v2/img/coin-chrome-560.v1.webp) center/100% 100% no-repeat;pointer-events:none}
.chop-stamp{--s:56px;position:absolute;z-index:3;right:var(--gut);top:calc(var(--top-h) + 6px);transform:rotate(-9deg);box-shadow:0 8px 20px -8px rgba(10,10,10,.35);transition:scale .32s cubic-bezier(.5,0,.75,0) .55s,opacity .2s .55s}
html.js .s2:is([data-state="ready"],[data-state="passed"]) .chop-stamp{scale:1.9;opacity:0}
.scene .type-foot{position:absolute;left:var(--gut);right:var(--gut);bottom:calc(var(--bar-b) + 16px);z-index:2;display:grid;gap:10px}
.type-note{font:500 14.5px/1.45 var(--f-ui);color:var(--i2);max-width:46ch;background:rgba(250,250,247,.9);padding:4px 8px;margin:0 0 0 -8px;border-radius:8px;justify-self:start}
.type-note b{color:var(--i1);font-weight:700}
.gloss{display:block;margin-top:2px;color:var(--i1)}
.gloss [lang=zh]{font-weight:700}
.file-row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 24px;padding-top:10px;border-top:2px solid transparent;border-image:var(--irid-linear) 1;background:var(--scene-paper)}
.file-row .micro{font-size:10px;letter-spacing:.14em;color:var(--i3);margin:0}
.big-type .l1{--ex:-14vw;--ey:0px}.big-type .l-is-m{--ex:14vw;--ey:0px;--ed:.08s}.big-type .l2{--ex:-10vw;--ey:0px;--ed:.14s}
.file-row{--ed:.3s}

/* ---------- 7. S3 the Oracle room ---------- */
.s3{display:flex;flex-direction:column;--pt:calc(var(--top-h) + 4px);--px:var(--gut);--pb:calc(var(--bar-b) + 12px);background:radial-gradient(38% 32% at 50% 56%,rgba(143,184,255,.09),transparent 70%),var(--scene-room);color:var(--tx)}
.room-wire{position:absolute;inset:0;width:100%;height:100%}
.band{position:relative;z-index:2;margin:0;font:400 calc((100vw - 2 * var(--gut)) / 5.02)/.9 var(--f-display);color:#fff;text-transform:uppercase;white-space:nowrap;text-shadow:var(--glow-band);letter-spacing:.005em}
.band span{display:block}
.band2{position:absolute;left:-10%;right:-10%;bottom:calc(var(--bar-b) + 64px);margin:0;display:flex;width:max-content;font:400 46px/1 var(--f-display);color:#fff;white-space:nowrap;text-shadow:var(--glow-band);transform:rotate(-3deg)}
.band2 span{display:block;padding-right:.25em}
html.js .s3[data-state="viewing"] .band2{animation:mq-left 38s linear infinite}
.neon{position:absolute;width:48px;height:48px}
.neon.cool{filter:var(--glow-neon-cool)}
.neon.white{filter:drop-shadow(0 0 3px rgba(255,255,255,.9)) drop-shadow(0 0 12px rgba(255,255,255,.4))}
.n-hex{top:30%;left:5%;width:44px;height:44px}
.n-cube{top:36%;right:5%;width:52px;height:52px}
.n-oct{top:24%;right:8%;width:40px;height:40px}
.n-ring{top:47%;left:4%;width:46px;height:46px}
.n-tri{bottom:18%;right:8%;width:30px;height:30px}
.n-brk{top:calc(var(--top-h) + 2px);right:5%;width:30px;height:30px;display:none}
.tube{position:absolute;height:6px;border-radius:6px;background:#fff;box-shadow:0 0 10px #fff,0 0 34px rgba(255,255,255,.55)}
.tube.t1{width:96px;top:38%;left:-30px;transform:rotate(24deg)}
.tube.t2{width:70px;top:23%;right:3%;transform:rotate(-38deg)}
.tube.t3{width:84px;top:46%;right:-24px;transform:rotate(62deg)}
html.js .s3[data-state="viewing"] .neon{animation:neon-drift 7s ease-in-out infinite alternate}
html.js .s3[data-state="viewing"] .neon:nth-of-type(2n){animation-duration:9s;animation-direction:alternate-reverse}
@keyframes neon-drift{to{translate:0 -10px;rotate:8deg}}
.still-room{position:relative;width:min(52vw,34svh);margin:6px auto 0;filter:var(--glow-coin-room)}
.room-fg{display:flex;flex-direction:column;gap:12px;margin-top:auto}
.screen{position:relative;border-radius:var(--r-screen);border:1.5px solid transparent;background:linear-gradient(170deg,#141414 0%,#0A0A0A 55%,#060606 100%) padding-box,var(--irid-linear) border-box;box-shadow:var(--shadow-screen);padding:13px 15px 14px;overflow:hidden;color:var(--tx)}
.screen::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.03) 0 1px,transparent 1px 3px),linear-gradient(150deg,rgba(255,255,255,.07),transparent 38%);pointer-events:none}
html.js .s3[data-state="viewing"] .screen{animation:crt-on .6s steps(6,end) var(--ed,0s) both}
@keyframes crt-on{0%{opacity:0;filter:brightness(3)}30%{opacity:1}45%{opacity:.3}60%{opacity:1;filter:brightness(1.6)}100%{opacity:1;filter:none}}
.sc1{transform:rotate(-1.2deg)}
.sc2{--ed:.15s;transform:rotate(1.4deg);width:92%;margin-left:auto}
.sc3{display:none}
.scr-top{display:flex;align-items:center;gap:8px;font:500 10px/1 var(--f-mono);letter-spacing:.14em;color:var(--dim);text-transform:uppercase}
.scr-age{margin-left:auto;color:var(--mut);white-space:nowrap}
.scr-age.warn{color:var(--warn)}.scr-age.neg{color:var(--neg)}
.scr-title{margin:10px 0 4px;font:600 16px/1.3 var(--f-ui);color:var(--tx);text-transform:none;letter-spacing:0;text-wrap:balance;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
a.scr-hit{position:absolute;inset:0;z-index:1;border-radius:inherit}
a.scr-hit:focus-visible{outline-offset:-3px}
.scr-legs{margin:0;font:400 12px/1.4 var(--f-mono);color:var(--dim)}
.scr-link{color:var(--tx);text-decoration:underline;text-decoration-color:var(--line-ui);text-underline-offset:3px;position:relative;z-index:2}
.scr-row{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.scr-size{font:500 21px/1 var(--f-mono);color:var(--tx);letter-spacing:-.01em;white-space:nowrap}
.scr-size i,.pr-size i{font-style:normal;color:var(--dim);font-size:.68em;margin:0 .15em}
.scr-cap{font:400 11.5px/1.2 var(--f-mono);color:var(--dim);white-space:nowrap}
.scr-close{margin:9px 0 0;font:400 11.5px/1 var(--f-mono);color:var(--dim)}
.screen.stale .scr-title{color:var(--mut)}
.art{padding:8px 8px 10px}
.art img{display:block;width:100%;height:auto;border-radius:4px;filter:grayscale(1) contrast(1.25) brightness(.9)}
.art figcaption{margin-top:8px;font:500 9px/1 var(--f-mono);letter-spacing:.16em;color:var(--dim)}
.room-label{display:flex;flex-wrap:wrap;gap:0 12px;align-items:center;align-self:flex-start;margin:4px 0 0;padding:0 12px;border-radius:10px;background:rgba(0,0,0,.78);box-shadow:0 0 0 1px rgba(255,255,255,.06);color:var(--mut)}
.room-label .room-counts{padding-bottom:8px}
.room-status{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--mut)}
.room-status:hover{color:var(--tx)}
.see-all{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 2px;font:600 14px/1 var(--f-ui);color:var(--tx);text-decoration:underline;text-decoration-color:var(--line-ui);text-underline-offset:5px}
.see-all svg{width:16px;height:16px}
/* data semantics on the screens: tint + line + glyph, never a solid lime fill */
.vt{display:inline-grid;place-items:center;width:15px;height:15px;margin-right:4px;border-radius:3px;background:var(--mut);color:var(--ink);font:700 9.5px/1 var(--f-mono);letter-spacing:0;vertical-align:1px}
.mchip{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 9px;border-radius:var(--r-chip);font:700 13.5px/1 var(--f-mono);letter-spacing:-.01em;color:var(--tx);background:var(--chip-bg);border:1px solid var(--line-ui);white-space:nowrap}
.mchip svg{width:12px;height:12px}
.mchip.q{background:var(--pos-bg);color:var(--pos);border-color:var(--pos-line)}
.mchip.stale{background:var(--neg-bg);color:var(--neg);border-color:var(--neg-line);font:600 11px/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase}
.qq{display:block;margin-top:6px;font:600 9.5px/1.2 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--pos)}
.fdot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;box-shadow:inset 0 0 0 1.5px var(--dim)}
.fdot.fresh{background:var(--pos);box-shadow:0 0 0 3px var(--pos-bg)}
.fdot.late{background:linear-gradient(90deg,var(--warn) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--warn),0 0 0 3px var(--warn-bg)}
.fdot.asleep{background:transparent;box-shadow:inset 0 0 0 2px var(--neg),0 0 0 3px var(--neg-bg)}
/* phones show pick #1 only (LANDING-V2 §12); tall tablets keep both */
@media (max-width:959px){.sc2{display:none}.band2{bottom:auto;top:calc(var(--top-h) + 27svh);font-size:40px}.band{font-size:min(calc((100vw - 2 * var(--gut)) / 5.02),11svh)}.still-room{width:min(52vw,30svh)}}
@media (max-height:640px) and (max-width:959px){.band2,.room-label .room-counts{display:none}}
/* short phones (Safari with its toolbars is ~660 px tall): a smaller coin gap, no status line, no closing date */
@media (max-height:760px) and (max-width:959px){.s3 .still-room{width:min(44vw,21svh)}.s3 .band{font-size:min(calc((100vw - 2 * var(--gut)) / 5.02),9.5svh)}.s3 .room-label,.s3 .scr-close{display:none}.s3 .scr-row{margin-top:10px}}

/* ---------- 8. S4 grid paper: the coin toss ---------- */
.s4{display:flex;flex-direction:column;justify-content:flex-end;--pt:calc(var(--top-h) + 8px);--px:var(--gut);--pb:calc(var(--bar-b) + var(--band) + 16px);background:var(--scene-paper);color:var(--i1)}
.grid-paper{position:absolute;inset:0;background-image:linear-gradient(rgba(10,10,10,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(10,10,10,.07) 1px,transparent 1px),linear-gradient(rgba(10,10,10,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(10,10,10,.035) 1px,transparent 1px);background-size:96px 96px,96px 96px,24px 24px,24px 24px;background-position:center}
.doodles{position:absolute;inset:0;width:100%;height:100%;opacity:.8}
.px{position:absolute;margin:0;font:400 clamp(36px,10vw,112px)/.95 Silkscreen,var(--f-display);color:#fff;text-shadow:-1px -1px 0 var(--ink),1px -1px 0 var(--ink),-1px 1px 0 var(--ink),1px 1px 0 var(--ink),2px 2px 0 var(--ink),3px 3px 0 var(--ink),4px 4px 0 var(--ink),5px 5px 0 var(--ink),6px 6px 0 var(--ink),7px 7px 0 var(--ink);letter-spacing:0;white-space:nowrap}
.px span{display:block}
.px-a{left:var(--gut);top:calc(var(--top-h) + 6px);transform:rotate(-8deg) skewX(-6deg)}
.px-b{right:var(--gut);top:calc(var(--top-h) + 30vw + 40px);transform:rotate(7deg) skewX(6deg);transition:opacity .12s}
.px-b.flip{opacity:0}
.still-toss{left:50%;top:calc(var(--top-h) + 20%);width:min(46vw,30svh);transform:translateX(-50%) rotate(8deg);filter:drop-shadow(0 40px 30px rgba(10,10,10,.22))}
.toss-card{display:grid;gap:10px;max-width:500px;padding:18px 18px 18px;border-radius:var(--r-card);background:var(--paper);border:1.5px solid var(--ink);box-shadow:8px 8px 0 var(--ink);color:var(--i1)}
.toss-card .micro{color:var(--i3);margin:0}
.toss-card h2{margin:0;font:400 clamp(28px,7.2vw,40px)/.95 var(--f-display);text-transform:uppercase;letter-spacing:.005em;color:var(--i1)}
.toss-a{margin:0;font:400 15px/1.5 var(--f-ui);color:var(--i2)}
.toss-a b{color:var(--i1);font-weight:700}
.toss-math{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;font:500 12.5px/1.2 var(--f-mono);color:var(--i1)}
.toss-math>span{display:inline-flex;align-items:center;height:28px;padding:0 8px;border-radius:6px;background:#EFEFEA;border:1px solid #D9D9D2}
.toss-math>span.op{background:none;border:0;padding:0 2px;color:var(--i3)}
.toss-math .vt{background:var(--ink);color:var(--paper)}
.toss-card .lbtn{justify-self:start}
.toss-card{--ed:.1s}
.px-a{--ex:-12vw;--ey:0px}.px-b{--ex:12vw;--ey:0px;--ed:.1s}
@media (max-height:700px) and (max-width:959px){.toss-math,.toss-card .micro{display:none}.toss-card{padding:14px}.toss-a{font-size:14px}}
/* very short phones (320x568): the card would hide the coin; keep the question and the link to the full answer */
@media (max-height:620px) and (max-width:959px){.toss-a{display:none}.toss-card{gap:8px}.toss-card h2{font-size:26px}}

/* ---------- 9. S5 manifesto ---------- */
.s5{display:flex;flex-direction:column;--pt:calc(var(--top-h) + 6px);--px:var(--gut);--pb:calc(var(--bar-b) + var(--band) + 16px);background:#000;color:var(--tx)}
.void-grid{position:absolute;left:-50%;right:-50%;bottom:-10%;height:70%;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:64px 64px;transform:perspective(600px) rotateX(62deg);transform-origin:50% 100%;-webkit-mask-image:linear-gradient(transparent,#000 60%);mask-image:linear-gradient(transparent,#000 60%)}
.formula{position:absolute;margin:0;font:500 10px/1 var(--f-mono);letter-spacing:.18em;color:rgba(250,250,247,.35);white-space:nowrap}
.f1{left:4%;top:24%;transform:rotate(-14deg)}.f2{right:6%;top:18%;transform:rotate(9deg)}.f3{left:8%;top:62%;transform:rotate(6deg)}
.f4{right:4%;top:70%;transform:rotate(-8deg)}.f5{left:40%;top:12%;transform:rotate(-3deg)}.f6{right:30%;bottom:18%;transform:rotate(12deg)}
.still-man{left:50%;top:28%;width:min(58vw,34svh);transform:translateX(-50%) rotate(-10deg);filter:var(--glow-coin-room)}
.man{display:flex;flex-direction:column;gap:18px;flex:1}
.man-k{margin:0;color:var(--dim);font-size:10.5px}
.man-zh{display:flex;flex-direction:row-reverse;justify-content:center;align-items:flex-start;gap:8px;margin:0;padding:0;list-style:none;font:500 15px/1 var(--f-cjk);letter-spacing:.2em;color:#fff}
.man-zh li{display:flex;flex-direction:row-reverse;gap:6px}
.man-zh .col{position:relative;writing-mode:vertical-rl;padding:10px 6px}
.man-zh .col::before{content:"";position:absolute;inset:0;z-index:-1;background:rgba(10,10,10,.55);box-shadow:inset 0 0 0 1px rgba(250,250,247,.14);transform-origin:top;transition:transform 1.5s var(--ease-out) var(--bd,0s)}
.man-zh .last .col{color:var(--ink)}
.man-zh .last .col::before{background:var(--paper);box-shadow:none}
.man-zh .ch{display:inline-block;transition:opacity 2s ease var(--d,0s),translate 2s var(--ease-out) var(--d,0s)}
html.js .s5:is([data-state="ready"],[data-state="passed"]) .man-zh .ch{opacity:0;translate:15px 0}
html.js .s5:is([data-state="ready"],[data-state="passed"]) .man-zh .col::before{transform:scaleY(0)}
.man-en{margin:auto 0 0;padding:12px 14px;list-style:none;display:grid;gap:5px;max-width:560px;border-radius:12px;background:rgba(0,0,0,.66);box-shadow:0 0 0 1px rgba(255,255,255,.06)}
.man-en li{display:grid;grid-template-columns:26px 1fr;gap:6px;font:400 13px/1.4 var(--f-ui);color:var(--chip-fg);text-shadow:0 0 10px #000,0 0 2px #000}
.man-en li::before{content:attr(data-n);font:500 10px/1.9 var(--f-mono);letter-spacing:.1em;color:var(--dim)}
.man-en li.last{color:var(--paper);font-weight:600}
.man-en{--ed:.6s}
@media (max-height:700px) and (max-width:959px){.man-zh{font-size:13.5px;letter-spacing:.14em}.man-en li:nth-child(-n+3){display:none}}
@media (max-width:359px){.man-zh{font-size:13px;letter-spacing:.12em;gap:5px}.man-zh .col{padding:8px 4px}}
/* phones: the 3D formula rings pass behind the columns and the label, so both sit on dense plates */
@media (max-width:959px){.man-zh .col::before{background:rgba(10,10,10,.86)}.man-k{justify-self:start;align-self:flex-start;padding:4px 8px;border-radius:6px;background:rgba(0,0,0,.72)}}
/* phones: the pick title keeps the words that name the market (3 lines) */
@media (max-width:399px){.scr-title{-webkit-line-clamp:3}}
@media (prefers-reduced-motion:reduce){html.js .s5 .man-zh .ch{opacity:1!important;translate:none!important;transition:none}html.js .s5 .man-zh .col::before{transform:none!important;transition:none}}

/* ---------- 10. S6 outro ---------- */
.s6{display:flex;flex-direction:column;--pt:calc(var(--top-h) + 12px);--px:var(--gut);--pb:calc(var(--bar-b) + var(--band) + 20px);background:radial-gradient(80% 60% at 20% 60%,rgba(143,184,255,.12),transparent 60%),linear-gradient(#05070D,#000 70%);color:var(--tx)}
.stars{position:absolute;inset:0;background-image:radial-gradient(1.2px 1.2px at 20px 30px,#fff,transparent),radial-gradient(1px 1px at 120px 80px,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 60px 150px,#fff,transparent),radial-gradient(1px 1px at 170px 190px,rgba(255,255,255,.6),transparent),radial-gradient(1.2px 1.2px at 240px 60px,rgba(255,255,255,.9),transparent),radial-gradient(1px 1px at 300px 170px,rgba(255,255,255,.7),transparent);background-size:320px 220px;opacity:.75}
.comet{position:absolute;left:-6%;top:44%;width:34vw;height:34vw;max-width:460px;max-height:460px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.9),rgba(143,184,255,.55) 18%,rgba(201,162,255,.18) 45%,transparent 72%);filter:blur(2px)}
.comet::after{content:"";position:absolute;left:50%;top:50%;width:70vw;height:3px;background:linear-gradient(90deg,rgba(255,255,255,.8),rgba(143,184,255,.25) 40%,transparent);transform-origin:left center;transform:rotate(-14deg)}
.road{position:absolute;left:0;right:0;bottom:0;width:100%;height:70%}
.wind{position:absolute;height:1.5px;width:22vw;background:linear-gradient(90deg,transparent,rgba(250,250,247,.55),transparent);opacity:0}
.w1{top:30%;left:-25%}.w2{top:52%;left:-25%}.w3{top:66%;left:-25%}.w4{top:78%;left:-25%}
html.js .s6[data-state="viewing"] .wind{animation:wind 2.4s linear infinite}
html.js .s6[data-state="viewing"] .w2{animation-delay:.7s;animation-duration:1.9s}
html.js .s6[data-state="viewing"] .w3{animation-delay:1.3s;animation-duration:2.8s}
html.js .s6[data-state="viewing"] .w4{animation-delay:.4s;animation-duration:2.1s}
@keyframes wind{0%{opacity:0;translate:0 0}15%{opacity:1}100%{opacity:0;translate:160vw 0}}
.still-roll{left:50%;top:34%;width:min(44vw,26svh);transform:translateX(-50%) rotate(-18deg);filter:drop-shadow(0 0 40px rgba(143,184,255,.25))}
.outro{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;flex:1}
.outro-k{margin:0;color:var(--dim)}
.early{margin:0;font:400 clamp(52px,15vw,168px)/.88 var(--f-display);text-transform:uppercase;letter-spacing:.005em;color:#fff;text-shadow:0 0 40px rgba(255,255,255,.12)}
.early span{display:block}
.early .grad{background:var(--irid-linear);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}
.outro-sub{margin:0;max-width:34ch;padding:6px 12px;border-radius:10px;background:rgba(0,0,0,.6);font:400 15px/1.5 var(--f-ui);color:var(--chip-fg);text-shadow:0 0 14px #000,0 0 3px #000}
.outro-k{text-shadow:0 0 10px #000;padding:4px 10px;border-radius:8px;background:rgba(0,0,0,.6)}
.join{margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:10px}
@media (max-width:959px){.outro-sub{order:3;margin-top:auto}.join{order:4;margin-top:4px}}
.join-us{height:52px;padding:0 22px;font-size:16px;border-color:var(--acid);box-shadow:var(--glow-acid)}
.join-us .doc{width:18px;height:18px}
.long-arrow{position:relative;display:block;width:48px;height:2px;margin-left:6px;background:var(--ink);transition:translate .25s}
.long-arrow::after{content:"";position:absolute;right:-1px;top:-4px;width:9px;height:9px;border-top:2px solid var(--ink);border-right:2px solid var(--ink);transform:rotate(45deg)}
.join-us:hover .long-arrow{translate:5px 0}
.or-x{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border-radius:10px;background:rgba(0,0,0,.6);font:500 13px/1 var(--f-mono);letter-spacing:.06em;color:var(--chip-fg);text-shadow:0 0 10px #000,0 0 2px #000}
.or-x svg{width:14px;height:14px}
.or-x:hover{color:var(--tx)}
.early>span:first-child{--ex:0;--ey:24px}.early .grad{--ed:.12s}.outro-sub{--ed:.25s}.join{--ed:.35s}

/* ---------- 11. deck (normal scroll, opaque, above the canvas) ---------- */
#deck{position:relative;z-index:3;background:var(--bg);color:var(--tx);scroll-snap-align:start;padding:30px 0 var(--bar-b);overflow:hidden;overflow:clip}
.deck-band{overflow:hidden;background:var(--paper);color:var(--ink);transform:rotate(-1.6deg);margin:0 -20px;padding:8px 0;border-block:2px solid var(--ink)}
.deck-band p{display:flex;width:max-content;margin:0;font:400 26px/1 var(--f-display);letter-spacing:.01em;white-space:nowrap}
.deck-band span{display:block;padding-right:.3em}
html.js .deck-band p{animation:mq-left 40s linear infinite}
html.js:not(.deck-in) .deck-band p{animation-play-state:paused}
.dsec{padding:64px 0;border-bottom:1px solid var(--line-1);scroll-margin-top:calc(var(--top-h) + 8px)}
.dsec .wrap{max-width:1180px;padding-inline:var(--gut)}
.dhead{display:grid;gap:12px;margin-bottom:26px}
.eyebrow-m{margin:0;color:var(--dim)}
.dh{margin:0;font:400 clamp(46px,12.5vw,124px)/.88 var(--f-display);text-transform:uppercase;letter-spacing:.004em;color:var(--tx)}
.dh .ol{display:block;color:transparent;-webkit-text-stroke:1.5px var(--tx)}
.dlede{margin:0;max-width:64ch;color:var(--mut);font-size:15px;line-height:1.55}
@media (min-width:720px){.dsec{padding:96px 0}.dlede{font-size:16px}}
/* the teaser panel */
.tpanel{border:1px solid var(--line-2);border-radius:var(--r-card);background:var(--bg-1);box-shadow:var(--card-top);overflow:hidden}
.tp-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:12px 14px;border-bottom:1px solid var(--line-1)}
.tp-head .micro{color:var(--dim)}
.tp-head .status{max-width:100%}
.picks{display:flex;flex-direction:column;min-height:120px}
.sk-pick{height:96px;margin:10px 14px;border-radius:10px}
.prow{display:grid;grid-template-columns:20px minmax(0,1fr) 20px;grid-template-areas:"n q go" "n m go" "n s go";column-gap:10px;row-gap:10px;padding:16px 14px;border-top:1px solid var(--line-1);color:var(--tx);transition:background .15s}
.prow:first-child{border-top:0}
.prow:hover{background:var(--bg-2)}
.prow.first{box-shadow:inset 3px 0 0 var(--tx)}
.pr-n{grid-area:n;font:500 12px/1.5 var(--f-mono);color:var(--dim)}
.prow.first .pr-n{color:var(--tx)}
.pr-q{grid-area:q;min-width:0}
.pr-q b{display:block;font:600 15px/1.35 var(--f-ui);color:var(--tx)}
.prow.stale .pr-q b{color:var(--mut)}
.pr-legs{display:block;margin-top:5px;font:400 12px/1.6 var(--f-mono);color:var(--dim)}
.pr-tag{display:inline-flex;align-items:center;gap:6px;margin:3px 0 0 4px;padding:1px 7px;border-radius:5px;font:500 11px/1.5 var(--f-mono);white-space:nowrap}
.pr-tag.warn{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-line)}
.pr-tag.neg{background:var(--neg-bg);color:var(--neg);border:1px solid var(--neg-line)}
.pr-tag .fdot{width:7px;height:7px}
.pr-m{grid-area:m;display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px}
.pr-m .qq{margin:0}
.pr-s{grid-area:s;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;font:500 14px/1.2 var(--f-mono);color:var(--tx)}
.pr-s .pr-cap,.pr-s .pr-close{font-size:12px;color:var(--dim)}
.pr-size{white-space:nowrap}
.pr-go{grid-area:go;align-self:center;width:18px;height:18px;color:var(--mut)}
.tcounts{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line-1)}
.tcounts .ts{display:flex;flex-direction:column;gap:6px;padding:14px;border-top:1px solid var(--line-1)}
.tcounts .ts:nth-child(-n+2){border-top:0}
.tcounts .ts:nth-child(odd){border-right:1px solid var(--line-1)}
.tcounts .ts b{font:400 clamp(26px,7vw,40px)/1 var(--f-display);color:var(--tx);letter-spacing:.01em}
.tcounts .ts small{font:500 10px/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.tcounts .ts.sk{margin:10px;border-radius:8px;border:0!important;min-height:64px}
.tp-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:6px 14px;border-top:1px solid var(--line-1);font:400 12px/1.4 var(--f-mono);color:var(--mut)}
.tp-foot .nw{white-space:nowrap}
.tp-foot .link{display:inline-flex;align-items:center;min-height:44px}
.nojs-note{padding:16px 14px;color:var(--mut);font-size:14px}
.picks .blank{padding:32px 16px}
.dcta{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.dcta .btn svg{width:16px;height:16px;fill:none;stroke:none}
@media (min-width:720px){
  .prow{grid-template-columns:28px minmax(0,1fr) 150px 170px 20px;grid-template-areas:"n q m s go";column-gap:16px;padding:16px 18px;align-items:start}
  .pr-m{flex-direction:column;align-items:flex-start;gap:6px}
  .pr-s{flex-direction:column;align-items:flex-end;gap:5px;text-align:right}
  .tcounts{grid-template-columns:repeat(4,1fr)}
  .tcounts .ts{border-top:0;border-right:1px solid var(--line-1)}
  .tcounts .ts:last-child{border-right:0}
  .tp-head,.tp-foot{padding-inline:18px}
}
/* documented results */
.ledger-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line-2)}
.ledger-list li{display:grid;grid-template-columns:1fr;gap:4px;padding:16px 0;border-bottom:1px solid var(--line-2)}
.lk{font:500 10.5px/1.4 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.lq{font:400 15px/1.45 var(--f-ui);color:var(--mut)}
.la{font:400 clamp(26px,6vw,40px)/1 var(--f-display);text-transform:uppercase;letter-spacing:.01em;color:var(--tx)}
.ledger-list small{font:400 13px/1.4 var(--f-ui);color:var(--dim)}
@media (min-width:860px){.ledger-list li{grid-template-columns:170px minmax(0,1fr) minmax(0,1fr);align-items:baseline;column-gap:24px}.ledger-list small{grid-column:3}}
.stamp-line{display:flex;align-items:center;gap:16px;margin:28px 0 0;font:400 clamp(20px,3.2vw,30px)/1.05 var(--f-display);text-transform:uppercase;letter-spacing:.01em;color:var(--mut)}
.stamp-line b{font-weight:400;color:var(--tx)}
.stamp-line .chop{--s:52px;transform:rotate(-8deg)}
/* the address card: iridescent edge (film = decoration only) */
.landing .card.ca-card{border:1.5px solid transparent;background:linear-gradient(var(--bg-1),var(--bg-1)) padding-box,var(--irid-linear) border-box;box-shadow:var(--card-top);display:grid;gap:14px}
.landing .ca-card>.label{color:var(--mut)}
.landing .ca-card .cluster{margin-top:2px}
.landing .ca-field{border-color:var(--line-2);background:var(--bg)}
.landing .ca-field code{color:var(--tx)}
.landing .btn svg{width:16px;height:16px}
.landing .socials a{border-color:var(--line-2);background:transparent;color:var(--tx);font:600 13px/1 var(--f-ui);letter-spacing:.01em;text-transform:none}
.landing .socials a:hover{background:var(--bg-3);border-color:var(--line-ui)}
/* FAQ */
.landing .faq{border-bottom-color:var(--line-2)}
.landing .faq .a{font-size:15px;line-height:1.6}
@media (min-width:860px){.landing .faq-split{grid-template-columns:1fr 1.5fr}.landing .faq-split .dhead{position:sticky;top:calc(var(--top-h) + 24px)}.landing .faq-split .dh{font-size:clamp(46px,6.6vw,96px)}}
/* footer */
.landing footer.foot{padding:56px 0 0}
.landing footer.foot .wrap{max-width:1180px;padding-inline:var(--gut)}
.landing .tiny{color:var(--dim)}
.landing .big{font:400 clamp(64px,30vw,420px)/.9 var(--f-display);letter-spacing:.004em;-webkit-text-stroke:1.5px rgba(250,250,247,.3);margin:24px 0 calc(-.2 * .9em);padding-top:.06em;clip-path:inset(0 0 20% 0)}

/* ---------- 12. menu sheet + toast on the landing ---------- */
.landing .sheet .wordmark{gap:10px}
.landing .sheet .mark-glyph{background:var(--paper);color:var(--ink)}
.landing .sheet .ca-pill{max-width:100%}
.landing .toast{bottom:calc(var(--bar-b) + 12px)}
.landing .skip{z-index:95}

/* ---------- 13. >= 720px ---------- */
@media (min-width:720px){
  .fast-row .lbtn,.fast-row .ca-pill{flex:none}
  .toss-card{padding:22px 22px 22px}
}

/* ---------- 14. >= 960px: desktop compositions ---------- */
@media (min-width:960px){
  .s1{--W:min(84vw,1210px,134svh);--cap:100px;--cw:min(30vw,calc((100svh - var(--bar-b) - var(--ctop) - 12px) / 1.06));--pt:0px}
  .hud{grid-template-columns:minmax(0,470px) 1fr minmax(0,440px);align-items:end;gap:12px 24px;padding-bottom:4px}
  .hud .hero-eyebrow,.hud .hero-line{grid-column:1}
  .hud .fast-row{grid-column:3;grid-row:1/3;justify-content:flex-end}
  .hud .hero-oracle{grid-column:3;grid-row:3;justify-self:end;text-align:right;margin:0}
  .hero-line{font-size:17px}
  .scroll-ring{display:grid;place-items:center;position:absolute;left:var(--gut);top:46%;width:84px;height:84px;border-radius:50%;font:500 9.5px/1 var(--f-mono);letter-spacing:.22em;color:var(--i2)}
  .scroll-ring::before{content:"";position:absolute;inset:0;border-radius:50%;border:1px solid transparent;background:conic-gradient(from 0deg,rgba(10,10,10,.55),rgba(10,10,10,.08) 40%,rgba(10,10,10,.55)) border-box;-webkit-mask:linear-gradient(#000 0 0) padding-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) padding-box exclude,linear-gradient(#000 0 0);animation:ring 6s linear infinite}
  @keyframes ring{to{transform:rotate(360deg)}}
  .sh1{left:5%;top:66%}
  .xxx.x1{left:4%;top:24%}
  .xxx.x2{right:10%;top:62%}

  /* desktop: LUCK IS / DOCUMENTED across the width, the chrome coin at ~60% of the height in the middle, the exhibit note
     bottom-left in the band beside the subtitle line */
  .s2{--foot:0px;--avail:calc(100svh - var(--ya) - var(--bar-b) - var(--band) - 10px);
    --l1:min(calc((100vw - 2 * var(--gut)) / 2.62),calc(var(--avail) * .6));
    --l2:min(calc((100vw - 2 * var(--gut)) / 4.7),calc(var(--avail) * .31));
    --th:calc((var(--l1) + var(--l2)) * .84);
    --cy:calc(var(--ty) + var(--l1) * .86);
    --cd:min(60svh,calc(var(--avail) * .8),46vw)}
  .microtype{font-size:54px;gap:6px}
  .big-type .l1 .is-d{display:inline}
  .big-type .l-is-m{display:none}
  .script{left:max(var(--gut),5vw);top:calc(var(--ty) + var(--l1) * .48);font-size:min(8.6vw,124px);transform:rotate(-8deg)}
  .chop-stamp{--s:min(7vw,96px);right:max(var(--gut),5vw);top:calc(var(--ty) + var(--l1) * .9);transform:rotate(-8deg)}
  .scene .type-foot{right:auto;bottom:calc(var(--bar-b) + 14px);max-width:min(calc(30vw - var(--gut)),440px);gap:8px}
  .type-note{font-size:14px;max-width:none}
  .file-row{flex-direction:column;gap:2px}

  .s3{display:block;--pt:0px;--px:0px;--pb:0px}
  .band{position:absolute;left:0;right:0;top:calc(var(--top-h) + 3svh);text-align:center;font-size:min(9.4vw,17svh);transform:perspective(1200px) rotateX(8deg)}
  .band span{display:inline}
  .band2{bottom:calc(var(--bar-b) + 13svh);left:-4%;font-size:min(5.4vw,10svh);transform:rotate(-2deg)}
  .still-room{position:absolute;left:50%;top:54%;width:min(27vw,42svh);margin:0;transform:translate(-50%,-50%)}
  .scene .room-fg{position:absolute;inset:0;margin:0;display:block;pointer-events:none}
  .room-fg>*{pointer-events:auto}
  .screen{position:absolute}
  .sc1{left:4.5%;top:44%;width:min(26vw,380px);transform:perspective(1100px) rotateY(16deg) rotate(-1.5deg)}
  .sc2{display:block;right:4.5%;left:auto;top:50%;width:min(26vw,380px);margin:0;transform:perspective(1100px) rotateY(-16deg) rotate(1.5deg)}
  .sc3{display:block;right:23%;bottom:calc(var(--bar-b) + 3svh);width:min(10.5vw,150px);transform:perspective(900px) rotateY(-10deg) rotate(2deg)}
  .room-label{position:absolute;left:var(--gut);bottom:calc(var(--bar-b) + 16px);margin:0}
  .see-all{position:absolute;left:4.5%;top:calc(44% - 52px)}
  .n-hex{top:calc(var(--top-h) + 2%);left:36%;width:54px;height:54px}
  .n-cube{top:66%;left:30%;right:auto;width:64px;height:64px}
  .n-oct{top:calc(var(--top-h) + 6%);left:10%;right:auto;width:62px;height:62px}
  .n-ring{top:68%;left:3%;width:60px;height:60px}
  .n-tri{top:calc(var(--top-h) + 2%);bottom:auto;right:33%;width:40px;height:40px}
  .n-brk{display:block;top:72.5%;right:1.5%;width:44px;height:44px}
  .tube.t1{width:150px;top:27%;left:1.5%;transform:rotate(28deg)}
  .tube.t2{width:110px;top:auto;bottom:25%;right:37%;transform:rotate(-38deg)}
  .tube.t3{width:130px;top:33%;right:1%;transform:rotate(64deg)}

  .s4{justify-content:flex-end}
  .px{font-size:min(8.6vw,15svh)}
  .px-a{left:6%;top:calc(var(--top-h) + 6svh)}
  .px-b{right:7%;top:auto;bottom:calc(var(--bar-b) + 20svh)}
  .still-toss{top:26%;width:min(26vw,40svh)}
  .toss-card{max-width:500px}

  .s5{--pb:calc(var(--bar-b) + var(--band) + 20px)}
  .man{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,520px);grid-template-rows:auto 1fr auto;column-gap:40px;row-gap:22px}
  .man-k{grid-column:1/3}
  .man-zh{grid-column:2;grid-row:2;align-self:center;justify-content:flex-start;font-size:17px;letter-spacing:.35em;gap:12px}
  .man-zh .col{padding:14px 8px}
  .man-en{grid-column:2;grid-row:3;margin:0;max-width:500px}
  .man-en li{font-size:14px}
  .still-man{left:30%;top:50%;width:min(28vw,44svh);transform:translate(-50%,-50%) rotate(-10deg)}

  .s6{--pt:calc(var(--top-h) + 6svh)}
  .outro{align-items:flex-start;text-align:left;max-width:62vw}
  .early{font-size:min(10.4vw,18svh)}
  .join{flex-direction:row;align-items:center;gap:18px}
  .still-roll{left:70%;top:58%;bottom:auto;width:min(24vw,38svh);transform:translate(-50%,-50%) rotate(-18deg)}
  .outro-sub{font-size:16px;margin-left:-12px}

  .deck-band p{font-size:34px}
}
@media (min-width:1280px){
  .dh{font-size:clamp(46px,9vw,132px)}
}
@media (min-width:960px) and (max-height:760px){
  .sc1,.sc2{top:40%}
  .see-all{top:calc(40% - 50px)}
}

/* ---------- 14b. keycap + subtitles (loanmeme .launch-app and .subtitles). The keycap shows in scenes 2 to 5 only: scene 1 has
   the lime button in its HUD and scene 6 has Join us, and there is one lime action per viewport. Desktop: bottom right in the
   band above the bar, beside the subtitle line. Phones: it takes the top bar's Oracle slot. ---------- */
.keycap{position:fixed;z-index:21;right:max(var(--gut),6%);bottom:calc(var(--bar-b) + 14px);display:none;align-items:center;justify-content:center;min-width:150px;height:50px;padding:0 34px;border-radius:12px;
  background:var(--acid);color:var(--on-acid);font:700 16px/1 Comfortaa,var(--f-ui);letter-spacing:0;white-space:nowrap;text-decoration:none;-webkit-tap-highlight-color:transparent;
  box-shadow:0 0 0 1.5px var(--ink),inset 0 0 0 2px #E6FFA0,inset 0 -4px 0 #8FCB14,0 5px 0 #4F7A0A,0 9px 0 #22380A;
  opacity:0;visibility:hidden;transition:opacity .45s ease .25s,visibility 0s linear .7s,transform .15s,box-shadow .15s}
html.js .keycap{display:inline-flex}
html.js.kc-on .keycap{opacity:1;visibility:visible;transition:opacity .45s ease .25s,visibility 0s,transform .15s,box-shadow .15s}
.keycap:hover{background:var(--acid-press);transform:translateY(-2px);box-shadow:0 0 0 1.5px var(--ink),inset 0 0 0 2px #E6FFA0,inset 0 -4px 0 #8FCB14,0 7px 0 #4F7A0A,0 11px 0 #22380A}
.keycap:active{transform:translateY(4px);box-shadow:0 0 0 1.5px var(--ink),inset 0 0 0 2px #E6FFA0,inset 0 -3px 0 #8FCB14,0 1px 0 #4F7A0A,0 4px 0 #22380A}
.landing .keycap:focus-visible{outline:2px solid var(--focus);outline-offset:6px;box-shadow:0 0 0 1.5px var(--ink),inset 0 0 0 2px #E6FFA0,inset 0 -4px 0 #8FCB14,0 5px 0 #4F7A0A,0 9px 0 #22380A}
@media (max-width:959px),(max-height:599px){
  .keycap{top:calc(env(safe-area-inset-top) + 10px);bottom:auto;right:calc(max(var(--gut),env(safe-area-inset-right)) + 52px);min-width:0;height:40px;padding:0 16px;border-radius:10px;font-size:14px;
    box-shadow:0 0 0 1.5px var(--ink),inset 0 0 0 2px #E6FFA0,inset 0 -3px 0 #8FCB14,0 3px 0 #4F7A0A,0 6px 0 #22380A}
  html.js.kc-on .top-link{visibility:hidden}
}
@media (max-width:359px){.keycap{padding:0 12px;font-size:13px}}
html.js:not(.ld-done):not(.ld-seen) .keycap{visibility:hidden}
.subs{display:none}
@media (min-width:960px) and (min-height:600px){
  html.js .subs{display:block;position:fixed;left:50%;bottom:calc(var(--bar-b) + 18px);z-index:19;transform:translateX(-50%);width:max-content;max-width:min(40vw,580px);margin:0;text-align:center;pointer-events:none}
}
.subs span{font:400 15px/2 var(--f-ui);color:#fff;background:rgba(0,0,0,.9);padding:5px 10px;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.subs span:empty{display:none}
.subs .nz{color:var(--dim)}
.subs.out span{opacity:0;transition:opacity .4s}

/* deck focusables clear the fixed chrome when tabbing (WCAG 2.4.11): in the deck the scrollport's optimal viewing region
   excludes both bars (snap is off there, so this never moves a scene's snap position) */
html.deck-in{scroll-padding-block:calc(var(--top-h) + 8px) calc(var(--bar-b) + 12px)}
#deck :is(a[href],button,summary){scroll-margin-block:calc(var(--top-h) + 8px) calc(var(--bar-b) + 12px)}
.landing .faq{scroll-margin-top:calc(var(--top-h) + 8px)}
/* the menu sheet on short phones: the Oracle row and the socials stay on screen */
@media (max-height:640px){.landing .sheet-links a{min-height:48px;font-size:24px}.landing .sheet-links a.primary-row{margin-top:10px}}

/* ---------- 14c. phones in landscape (height under 500 px): a shorter chrome, the word sized by the height, one HUD row, the
   desktop two-row type in S2, one-line room headline, a side-by-side manifesto. Every first-screen control stays on screen. ---------- */
@media (orientation:landscape) and (max-height:500px) and (max-width:959px){
  :root{--bar:44px;--top-h:calc(52px + env(safe-area-inset-top))}
  .mark-glyph{width:30px;height:30px}
  .s1{--W:min(60vw,calc((100svh - var(--top-h) - var(--bar-b) - 84px) * 1.23));--cap:calc(var(--top-h) + 2px);
    --cw:clamp(96px,calc((100svh - var(--ctop) - var(--bar-b) - 70px) / 1.06),40vw);--pt:calc(var(--ctop) + var(--cw) * 1.03);--pb:calc(var(--bar-b) + 8px)}
  html.pin .s1{--pt:var(--top-h)}
  .s1 .hud{gap:6px}
  .s1 .hero-eyebrow,.s1 .hero-oracle{display:none}
  .s1 .hero-line{font-size:13px;max-width:none;padding:2px 8px}
  .s1 .fast-row{flex-wrap:nowrap;gap:6px}
  .s1 .fast-row .lbtn{padding:0 12px;flex:none}
  .s1 .fast-row .ca-pill{flex:none;max-width:170px}
  .s2{--foot:40px;
    --l1:min(calc((100vw - 2 * var(--gut)) / 2.62),calc(var(--avail) * .6));--l2:min(calc((100vw - 2 * var(--gut)) / 4.7),calc(var(--avail) * .31));
    --th:calc((var(--l1) + var(--l2)) * .84);--cy:calc(var(--ty) + var(--l1) * .86);--cd:min(calc(var(--avail) * .92),42vw)}
  .big-type .l1 .is-d{display:inline}
  .big-type .l-is-m{display:none}
  .s2 .type-note{display:none}
  .s2 .file-row{flex-direction:row;padding-top:6px}
  .script{top:calc(var(--ty) + var(--l1) * .42);font-size:min(7vw,14svh)}
  .chop-stamp{--s:44px}
  .s3 .band{font-size:min(calc((100vw - 2 * var(--gut)) / 10.4),12svh)}
  .s3 .band span{display:inline}
  .s3 .still-room{position:absolute;left:50%;top:calc(var(--top-h) + 12svh);width:min(24vw,40svh);margin:0;transform:translateX(-50%)}
  .s3 .room-fg{flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:8px 14px}
  .s3 .screen.sc1{flex:1 1 320px;max-width:62vw}
  .s3 .scr-title{margin-top:6px;-webkit-line-clamp:1}
  .s4 .toss-card{max-width:min(420px,56vw);gap:6px;padding:12px 14px}
  .s4 .toss-card h2{font-size:24px}
  .s5 .man{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto 1fr;column-gap:16px;row-gap:8px}
  .s5 .man-k{grid-column:1/3}
  .s5 .man-zh{grid-column:2;grid-row:2;align-self:start;font-size:11.5px;letter-spacing:.08em;gap:4px}
  .s5 .man-zh .col{padding:6px 3px}
  .s5 .man-en{grid-column:1;grid-row:2;align-self:end;margin:0}
  .s5 .man-en li{font-size:12px}
  .s6 .early{font-size:min(14vw,16svh)}
  .s6 .outro{gap:8px}
  .s6 .outro-k{display:none}
  .s6 .outro-sub{order:0;margin-top:0;font-size:13px}
  .s6 .join{order:0;flex-direction:row;margin-top:auto}
  .s6 .join-us{height:46px}
}

/* ---------- 15. 3D handoff: once the WebGL world is up it draws the shards, room neon, floor grid, doodles, pixel words,
   formula lines, stars and road; the DOM keeps the backgrounds, the type and every control. ---------- */
html.gl-ready:not(.gl-lost) :is(.shard,.s3 .room-wire,.s3 .neon,.s3 .tube,.s4 .grid-paper,.s4 .doodles,.s4 .px,.s5 .void-grid,.s5 .formula,.s6 .stars,.s6 .comet,.s6 .road,.s6 .wind){display:none}

/* ---------- 16. reduced motion: static poses, no marquees, no drift ---------- */
@media (prefers-reduced-motion:reduce){
  .microtype p,.band2,.deck-band p,.neon,.wind,.screen,.scroll-ring::before{animation:none!important}
  .swipe,.chop-stamp{transition:none!important;scale:1!important;opacity:1!important}
  html.js .hero-type{transform:translateX(-50%)}
}

/* ---------- 17. 404 (shares ui.css v4 + this file) ---------- */
.page-404 main.blank{min-height:100vh;min-height:100dvh;justify-content:center}
.page-404 .blank .h{font-size:clamp(28px,6vw,56px);line-height:.95;max-width:16ch}
