/* =========================================================
   AMALGAVERSE · site.css (Foundation; shared by every page)
   Moved from v0.2 home/index.html (SRC lines in brackets). Page CSS files must not restyle
   :root, html, body, .hud, .nav, .dock, footer.site, .btn*, .chip, or base .panel / .tx.
   Contents: tokens · base · fixed layers · skip link · HUD + site nav + Menu · buttons · layout ·
   transmissions · h1 · .choice · .m02 · .viewer · .gl-fallback · .season-strip · .theme / .titlecard ·
   countdown panel · end card · footer · dock · #fx tags · .mtag · responsive · reduced motion
   ========================================================= */

/* ---------- tokens + base [SRC 12–37] ---------- */
:root{
  color-scheme: dark;
  --void:#05070B; --hull:rgba(9,14,20,.88); --hull-solid:#090E14; --hull-2:rgba(12,19,27,.9);
  --starlight:#E9EEF2; --dust:#9AA9B5; --phosphor:#5CF2D6; --lunch:#FFB86B; --tally:#FF5A36; --atemporal:#9B7BFF;
  --line:rgba(92,242,214,.28); --line-2:rgba(154,169,181,.22);
  --f-display:'Archivo','Helvetica Neue','Segoe UI',system-ui,sans-serif;
  --f-script:'Courier Prime','Courier New',Courier,monospace;
  --f-mono:'Martian Mono',ui-monospace,'SFMono-Regular',Menlo,Consolas,monospace;
  --gl:max(16px, env(safe-area-inset-left,0px)); --gr:max(16px, env(safe-area-inset-right,0px));
  --st:env(safe-area-inset-top,0px); --sb:env(safe-area-inset-bottom,0px);
  --hud-h:56px; --cham:10px;
}
html{background:var(--void);overflow-x:clip;scroll-padding-top:calc(var(--hud-h) + var(--st) + 12px)}
body{margin:0;background:var(--void);color:var(--starlight);font:400 17px/1.6 var(--f-display);font-stretch:100%;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
*,*::before,*::after{box-sizing:border-box}
img{display:block;max-width:100%;height:auto}
a{color:var(--phosphor);text-underline-offset:4px;text-decoration-thickness:1px}
a:hover{color:#9ffbe9}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--phosphor);outline-offset:3px;box-shadow:0 0 0 6px rgba(92,242,214,.12)}
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.script, q.v, .v{font-family:var(--f-script)}
.mono{font-family:var(--f-mono);font-stretch:87.5%;font-variant-numeric:tabular-nums}
.amber{color:var(--lunch)}
.tally{color:var(--tally)}

/* ---------- fixed layers [SRC 39–52, 58–60] ---------- */
#scene{position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;z-index:0;display:block;pointer-events:none;
  opacity:0;transition:opacity .5s}
html.gl-on #scene{opacity:1}                                   /* first-frame fade: the shader compile never pops */
.bgplate{position:fixed;inset:0;z-index:0;pointer-events:none;background:
  radial-gradient(60% 50% at 72% 38%, rgba(42,27,85,.42), transparent 70%),
  radial-gradient(50% 45% at 82% 70%, rgba(11,58,58,.38), transparent 70%),
  url(../img/starfield-soft.jpg) center/cover no-repeat, var(--void);transition:opacity .8s}
.bgplate::after{content:"";position:absolute;inset:0;background:rgba(5,7,11,.35)}
html.gl-on .bgplate{opacity:0}
html.js:not(.no-gl):not(.gl-on) .bgplate{opacity:.6}
#twinkle{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;display:none}
html.no-gl #twinkle{display:block}
#fx{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden}
#fx > *{position:absolute;left:0;top:0;opacity:0;transition:opacity .35s;will-change:transform}
#fx .on{opacity:1}
#cut{position:fixed;inset:0;z-index:45;background:var(--void);opacity:0;pointer-events:none;transition:opacity .17s}
#cut.on{opacity:1}
/* page transitions: a class + transition out, an animation with BACKWARDS fill in (never forwards: it would pin #cut) */
html.leaving #cut{opacity:1}
html.arrive #cut{animation:cutIn .35s .05s backwards}
@keyframes cutIn{from{opacity:1}to{opacity:0}}
.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.045;mix-blend-mode:overlay}

/* ---------- skip link [SRC 71–73] ---------- */
.skiplink{position:fixed;z-index:70;left:calc(12px + env(safe-area-inset-left,0px));top:calc(8px + var(--st));padding:12px 16px;min-height:44px;background:var(--void);color:var(--phosphor);
  font:600 13px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--phosphor);transform:translateY(-200%)}
.skiplink:focus{transform:none}

/* ---------- HUD = site nav [SRC 75–107; .acts → .nav] ---------- */
.hud{position:fixed;left:0;right:0;top:0;z-index:30;height:calc(var(--hud-h) + var(--st));padding-top:var(--st);
  padding-left:var(--gl);padding-right:var(--gr);display:flex;align-items:center;gap:14px;
  background:var(--void);border-bottom:1px solid var(--line)}
.hud::before{content:"";position:absolute;left:0;right:0;top:calc(100% + 1px);height:12px;pointer-events:none;background:linear-gradient(rgba(5,7,11,.85),rgba(5,7,11,0))}
.hud::after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:var(--prog,0%);background:var(--phosphor);opacity:.7}
.brand{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:var(--starlight);white-space:nowrap;min-height:44px;align-items:center}
.brand b{font:800 15px/1 var(--f-display);font-stretch:125%;letter-spacing:.2em}
.nav{display:none;gap:6px;margin-left:10px}
.nav a{position:relative;font:500 13px/1 var(--f-mono);font-stretch:87.5%;letter-spacing:.04em;text-transform:uppercase;color:rgba(233,238,242,.85);
  text-decoration:none;padding:16px 7px;white-space:nowrap}
.nav a:hover{color:var(--starlight)}
.nav a[aria-current="page"]{color:var(--starlight)}
.nav a[aria-current="page"]::after{content:"";position:absolute;left:7px;right:7px;bottom:6px;height:2px;background:var(--phosphor)}
.nav .nav-x{display:none}
.hud .sp{flex:1}
.chip{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 10px;border:1px solid var(--line-2);
  font:500 11.5px/1 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--starlight);text-decoration:none;white-space:nowrap;font-variant-numeric:tabular-nums}
.chip .pip{width:8px;height:8px;background:var(--lunch);box-shadow:0 0 10px var(--lunch);flex:none}
.chip.you{border-color:rgba(255,184,107,.45);color:var(--lunch)}
@media (hover:hover){a.chip.you:hover{color:#ffd29f;border-color:var(--lunch)}}
.chip.cd .dot{width:8px;height:8px;border-radius:50%;background:var(--dust);flex:none}
.chip.cd.live .dot,html.cd-live .chip.cd .dot{background:var(--tally);box-shadow:0 0 10px var(--tally)}
@media (hover:hover){a.chip:not(.you):hover{border-color:var(--phosphor);color:var(--starlight)}}   /* no sticky hover after a tap on touch screens */
.tbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:44px;padding:0 10px;background:none;border:1px solid transparent;
  color:var(--dust);font:500 11.5px/1 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;white-space:nowrap}
.tbtn:hover{color:var(--starlight);border-color:var(--line-2)}
.tbtn[aria-pressed="true"]{color:var(--phosphor)}
.tbtn svg{width:18px;height:18px}
.hud .follow{min-height:40px;font-size:12.5px;padding:0 14px}
@media (pointer:coarse){.chip,.hud .follow{min-height:44px}}
.tbtn .st,.btn .st{color:var(--dust);font-weight:500}
.hud .xicon{display:none}
.hud .damp-hud,.hud .snd{display:none}
/* Menu (< 1200 px): a fixed, non-modal panel under the HUD */
.hud .menu{border-color:var(--line-2);color:var(--starlight);gap:10px}
.hud .menu .bars{display:grid;gap:4px;width:16px}
.hud .menu .bars i{display:block;height:1.5px;background:currentColor;transition:transform .2s,opacity .2s}
html.navopen .hud .menu{border-color:var(--phosphor);color:var(--phosphor)}
html.navopen .hud .menu .bars i:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
html.navopen .hud .menu .bars i:nth-child(2){opacity:0}
html.navopen .hud .menu .bars i:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}

/* ---------- buttons [SRC 109–122] ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 20px;border:0;cursor:pointer;text-decoration:none;
  font:700 14px/1.1 var(--f-display);font-stretch:112%;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;
  clip-path:polygon(var(--cham) 0,100% 0,100% calc(100% - var(--cham)),calc(100% - var(--cham)) 100%,0 100%,0 var(--cham))}
.btn-primary{background:var(--tally);color:var(--void)}
.btn-primary:hover{background:#ff7a5c;color:var(--void)}
.btn-ghost{background:linear-gradient(var(--hull-solid),var(--hull-solid)) padding-box,linear-gradient(var(--phosphor),var(--phosphor)) border-box;border:1px solid transparent;color:var(--phosphor)}
.btn-ghost:hover{background:linear-gradient(#0d1a1f,#0d1a1f) padding-box,linear-gradient(var(--phosphor),var(--phosphor)) border-box;color:#9ffbe9}
.btn-quiet{background:none;border:1px solid var(--line-2);color:var(--starlight);clip-path:none}
.btn-quiet:hover{border-color:var(--phosphor);color:var(--starlight)}
.btn:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--phosphor),0 0 0 3px var(--void),0 0 0 5px var(--phosphor)}
.btn-sm{min-height:44px;padding:0 14px;font-size:12.5px}
.linkbtn{background:none;border:0;padding:10px 0;min-height:44px;color:var(--phosphor);cursor:pointer;text-decoration:underline;text-underline-offset:4px;font:500 15px/1.2 var(--f-display)}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}

/* ---------- layout primitives [SRC 124–153] ---------- */
main{position:relative;z-index:3}
.sec{position:relative}
.wrap{padding-left:var(--gl);padding-right:var(--gr)}
.col{max-width:640px;margin-left:clamp(0px,4.2vw,72px)}
.center{max-width:980px;margin:0 auto}
.panel{position:relative;background:var(--hull);padding:22px 24px;
  clip-path:polygon(var(--cham) 0,100% 0,100% calc(100% - var(--cham)),calc(100% - var(--cham)) 100%,0 100%,0 var(--cham));
  box-shadow:inset 0 0 0 1px var(--line)}
.panel::before{content:"";position:absolute;left:0;top:0;width:15px;height:1px;background:var(--line);transform-origin:0 0;transform:translate(0,10px) rotate(-45deg)}
.seam::after{content:"";position:absolute;left:var(--cham);right:0;top:0;height:2px;background:linear-gradient(90deg,var(--phosphor),var(--lunch));opacity:.85}
.seam.violet::after{background:linear-gradient(90deg,var(--phosphor),var(--atemporal))}
.slug{display:flex;align-items:center;gap:12px;margin:0 0 14px;font:500 12px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.12em;text-transform:uppercase;color:var(--dust)}
.slug::before{content:"";width:22px;height:2px;background:var(--tally);flex:none}
.readout{font:500 12px/1.5 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--starlight)}
.readout .k{color:var(--dust)}
h1,h2,h3{margin:0;font-family:var(--f-display);text-wrap:balance}
h2{font-weight:800;font-stretch:125%;font-size:clamp(30px,4.4vw,60px);line-height:1.02;letter-spacing:-.01em;margin-bottom:16px}
h3{font-weight:700;font-stretch:112%;font-size:clamp(20px,1.7vw,24px);line-height:1.15}
p{margin:0 0 14px}
.lead{font-size:19px;color:var(--starlight)}
.muted{color:var(--dust)}
.small{font-size:14px;line-height:1.5}
blockquote{margin:0}
.quote{font:400 17px/1.55 var(--f-script);color:var(--starlight)}
.quote cite,.cite{display:block;margin-top:8px;font:500 12px/1.5 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--dust);font-style:normal}
.tag{display:inline-flex;align-items:center;gap:6px;font:600 11px/1 var(--f-mono);font-stretch:87.5%;letter-spacing:.1em;text-transform:uppercase;padding:6px 8px;border:1px solid var(--line-2);color:var(--dust);white-space:nowrap}
.tag.chosen{border-color:rgba(255,90,54,.6);color:#ff8c70}
.tag.you{border-color:rgba(255,184,107,.5);color:var(--lunch)}
.tag.nr{border-style:dashed}
@media (pointer:coarse){.cite a,.quote cite a{display:inline-flex;align-items:center;min-height:44px}}

/* ---------- transmissions (stills) [SRC 155–181] ---------- */
.tx{position:relative;margin:0 0 16px;background:#020304;overflow:hidden;
  clip-path:polygon(var(--cham) 0,100% 0,100% calc(100% - var(--cham)),calc(100% - var(--cham)) 100%,0 100%,0 var(--cham))}
.tx img{width:100%;height:100%;object-fit:cover;filter:saturate(.75) contrast(1.08) brightness(.92)}
.tx::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,.22) 0 1px,transparent 1px 3px),
  linear-gradient(180deg,rgba(92,242,214,.06),rgba(155,123,255,.08));mix-blend-mode:normal}
.tx::after{content:"";position:absolute;inset:8px;z-index:2;pointer-events:none;--c:rgba(233,238,242,.7);
  background:
   linear-gradient(var(--c),var(--c)) 0 0/16px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 0 0/1.5px 16px no-repeat,
   linear-gradient(var(--c),var(--c)) 100% 0/16px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 100% 0/1.5px 16px no-repeat,
   linear-gradient(var(--c),var(--c)) 0 100%/16px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 0 100%/1.5px 16px no-repeat,
   linear-gradient(var(--c),var(--c)) 100% 100%/16px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 100% 100%/1.5px 16px no-repeat}
.tx figcaption{position:absolute;left:0;right:0;bottom:0;z-index:3;display:flex;justify-content:space-between;gap:8px;align-items:center;padding:22px 14px 12px;
  background:linear-gradient(transparent,rgba(2,3,4,.85));font:500 11px/1.3 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:#cfd8df}
.meter{display:inline-flex;gap:2px;align-items:flex-end;flex:none}
.meter i{width:3px;background:var(--phosphor);opacity:.9}
.meter i:nth-child(1){height:4px}.meter i:nth-child(2){height:6px}.meter i:nth-child(3){height:8px}.meter i:nth-child(4){height:10px;opacity:.35}.meter i:nth-child(5){height:12px;opacity:.35}
.tx.w169{aspect-ratio:16/9}
.tx.portrait{aspect-ratio:430/640}
.novis{display:flex;align-items:center;justify-content:center;aspect-ratio:16/9;margin:0 0 14px;color:var(--dust);
  font:600 11px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.12em;text-transform:uppercase;text-align:center;border:1px dashed var(--line-2);
  background:repeating-linear-gradient(135deg,rgba(154,169,181,.05) 0 6px,transparent 6px 12px)}
@media (hover:hover) and (prefers-reduced-motion:no-preference){
  html:not(.rm) .tx:hover img{animation:hold .12s steps(2) 1}
}
@keyframes hold{50%{transform:translateY(-3%)}}

/* ---------- page H1 [SRC 189–190] ---------- */
h1{font-weight:800;font-stretch:125%;font-size:clamp(36px,4.6vw,68px);line-height:.98;letter-spacing:-.015em;margin:0 0 20px;text-shadow:0 2px 30px rgba(5,7,11,.85)}
h1 .you{color:var(--lunch);white-space:nowrap}
.dek{font-size:clamp(17px,1.3vw,19px);line-height:1.55;max-width:600px;color:var(--starlight);text-shadow:0 1px 16px rgba(5,7,11,.95)}

/* ---------- first-choice panel (home hero, crew #you) [SRC 192–196] ---------- */
.choice{max-width:600px;margin:18px 0 14px;padding:16px 20px 18px}
.choice .q{font:400 17px/1.5 var(--f-script);margin:6px 0 14px}
.choice .slug{margin-bottom:6px}
.choice .note{margin:12px 0 0;font-size:15px;color:var(--starlight);min-height:0}
.choice .note:empty{display:none}

/* ---------- compact Mission 02 countdown [SRC 197–209] ---------- */
/* the block rule skips .mtag: the #fx season tags (class="ftag mtag m02") share the m02 name but are not countdowns */
.m02:not(.mtag){display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;max-width:600px;margin:0 0 10px;padding:12px 16px 12px 18px;border-left:2px solid var(--phosphor);
  background:linear-gradient(90deg,rgba(9,14,20,.82),rgba(9,14,20,.35));text-shadow:0 1px 12px rgba(5,7,11,.95)}
/* the same hooks inside an end card (.finalcta) look identical on every page */
.m02 .m02go,.finalcta .m02go{display:grid;gap:4px;text-decoration:none;color:var(--starlight);min-height:44px}
.m02 .m02go:hover .m02d,.finalcta .m02go:hover .m02d{color:var(--phosphor)}
.m02 .lbl,.finalcta .lbl{display:flex;align-items:center;gap:8px;font:500 12px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.08em;text-transform:uppercase;color:var(--starlight)}
.finalcta .lbl{justify-content:center}
.m02 .lbl .dot,.finalcta .lbl .dot{width:8px;height:8px;border-radius:50%;background:var(--phosphor);box-shadow:0 0 10px var(--phosphor);flex:none}
.m02.live .lbl .dot,.finalcta.live .lbl .dot,html.cd-live .m02 .lbl .dot,html.cd-live .finalcta .lbl .dot{background:var(--tally);box-shadow:0 0 10px var(--tally)}
.m02d{font:500 clamp(26px,2.5vw,34px)/1 var(--f-mono);font-stretch:100%;font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:var(--starlight);transition:color .2s}
.m02d .u{font-size:.42em;color:var(--dust);letter-spacing:.08em;margin:0 .5em 0 .12em;vertical-align:.5em}
.m02 .loc,.finalcta .loc{font:500 12px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--dust)}
.m02 .m02follow{font:600 14px/1.2 var(--f-display);font-stretch:112%;letter-spacing:.05em;text-transform:uppercase;display:inline-flex;align-items:center;min-height:44px;color:var(--lunch)}
.m02 .m02follow:hover{color:#ffd29f}

/* ---------- in-page contents (each page's title card): boxed mono anchors, numbered, 44 px targets ---------- */
.toc{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0 0}
.toc a{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 11px;border:1px solid var(--line-2);background:rgba(5,7,11,.62);
  font:500 11px/1 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--starlight);text-decoration:none;white-space:nowrap}
.toc a:hover{border-color:var(--phosphor);color:var(--starlight)}
.toc .n{color:var(--phosphor)}
.toc a.you{border-color:rgba(255,184,107,.45);color:var(--lunch)}
.toc a.you .n{color:var(--lunch)}
.toc a.you:hover{border-color:var(--lunch)}
.toc.centered{justify-content:center}

/* ---------- js / rm switches [SRC 214–217] ---------- */
.rm-only{display:none!important}
html.rm .rm-only{display:inline-flex!important}
html.rm [data-replay]:not(a){display:none!important}
html:not(.js) .js-only{display:none!important}
.hud.rise{animation:rise .55s cubic-bezier(.2,.7,.2,1) both}
@keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- viewer windows (stacked layouts: 3D lives here, never behind text) [SRC 220, 540–542, 563] ---------- */
.viewer{display:none}

/* ---------- WebGL fallbacks: hidden while three.js loads, shown for no-JS / no-GL / module error / slow GL ----------
   A fallback never takes or frees space: it sits absolutely inside a box that exists in every mode. */
.gl-fallback{visibility:hidden}
html:not(.js) .gl-fallback,html.no-gl .gl-fallback,html.scene-error .gl-fallback,html.gl-slow:not(.gl-on) .gl-fallback{visibility:visible}
.viewer .gl-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
.viewer .gl-fallback svg{width:auto;height:100%;max-width:100%;max-height:100%}
.gl-slot{position:relative}
.gl-slot > .gl-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}

/* ---------- season strip: 20 missions, a gap after ten, M01 complete, M02 next (core drives the M02 text) ---------- */
.season-strip{margin:16px 0 0;max-width:520px}
.season-strip .ss-cells{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(10,minmax(0,1fr)) 14px repeat(10,minmax(0,1fr));gap:4px;align-items:end}
.season-strip .ss-cells li{height:12px;border:1px solid rgba(154,169,181,.3);background:rgba(154,169,181,.06)}
.season-strip .ss-cells li:nth-child(11){grid-column:12}
.season-strip .ss-cells .ss-done{background:var(--phosphor);border-color:var(--phosphor);box-shadow:0 0 8px rgba(92,242,214,.45)}
.season-strip .ss-cells .ss-next{border-color:var(--lunch);background:rgba(255,184,107,.28);box-shadow:0 0 10px rgba(255,184,107,.45);animation:ssPulse 2s ease-in-out infinite}
html.cd-live .season-strip .ss-cells .ss-next{background:var(--lunch)}
@keyframes ssPulse{50%{box-shadow:0 0 2px rgba(255,184,107,.15)}}
html.rm .season-strip .ss-cells .ss-next{animation:none}
@media (prefers-reduced-motion:reduce){.season-strip .ss-cells .ss-next{animation:none}}
.season-strip .ss-key{display:flex;flex-wrap:wrap;gap:4px 18px;margin:10px 0 0;font:500 11.5px/1.5 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--dust)}
.season-strip .ss-key > span{display:inline-flex;align-items:center;gap:8px}
.season-strip .ss-key i{display:inline-block;width:12px;height:8px;border:1px solid rgba(154,169,181,.4)}
.season-strip .ss-key .k1{color:var(--starlight)}
.season-strip .ss-key .k1 i{background:var(--phosphor);border-color:var(--phosphor)}
.season-strip .ss-key .k2{color:var(--lunch)}
.season-strip .ss-key .k2 i{background:rgba(255,184,107,.5);border-color:var(--lunch)}

/* ---------- theme band + title card (mission-01, crew) [SRC 269–272, 279–286] ---------- */
.theme{min-height:34vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8vh 0;background:linear-gradient(180deg,transparent,rgba(5,7,11,.6) 30%,rgba(5,7,11,.6) 70%,transparent)}
.theme .big{font:800 clamp(22px,3.4vw,46px)/1.1 var(--f-display);font-stretch:125%;letter-spacing:.14em;text-transform:uppercase;margin:6px 0 10px;color:var(--starlight)}
.theme .slug{justify-content:center}
.theme .slug::after{content:"";width:22px;height:2px;background:var(--tally);flex:none}
.titlecard{position:relative;height:clamp(200px,34vh,360px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;perspective:900px}
.titlecard::before{content:"";position:absolute;left:50%;top:50%;width:min(980px,96vw);height:76%;transform:translate(-50%,-50%);z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side,rgba(5,7,11,.82),rgba(5,7,11,.55) 60%,rgba(5,7,11,0))}
.tc-sub,.tc-by{text-shadow:0 1px 10px rgba(5,7,11,1),0 0 3px rgba(5,7,11,1)}
.tc-name{font:900 clamp(28px,5vw,84px)/1 var(--f-display);font-stretch:125%;letter-spacing:.18em;margin:0 0 14px;white-space:nowrap;
  text-shadow:0 0 34px rgba(92,242,214,.28),0 2px 30px rgba(5,7,11,.8);transform-origin:50% 60%}
.tc-sub{font:400 17px/1.4 var(--f-script);color:var(--starlight);margin:0}
.tc-by{font:500 12px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.14em;text-transform:uppercase;color:var(--dust);margin-top:10px}

/* ---------- full countdown panel (how-to-play #next) [SRC 377–389] ---------- */
.cdp h2{margin-bottom:6px}
.digits{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:flex-end;margin:14px 0 6px}
.dg{display:flex;flex-direction:column;align-items:flex-start}
.dg b{font:500 clamp(36px,4.4vw,64px)/1 var(--f-mono);font-stretch:100%;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--starlight)}
.dg small{font:500 11px/1 var(--f-mono);letter-spacing:.16em;color:var(--dust);margin-top:8px}
.dsep{font:300 clamp(28px,3.4vw,48px)/1 var(--f-mono);color:var(--dust);padding-bottom:22px}
.zones{display:flex;flex-wrap:wrap;gap:6px 18px;font:500 12px/1.5 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--dust);margin:8px 0 16px}
.zones b{color:var(--starlight);font-weight:500}
.onair{display:none;align-items:center;gap:10px;font:700 13px/1 var(--f-mono);letter-spacing:.14em;color:var(--tally);margin-bottom:10px}
.onair::before{content:"";width:10px;height:10px;border-radius:50%;background:var(--tally);box-shadow:0 0 12px var(--tally)}
.is-live .onair{display:inline-flex}
.lastorder{border-left:2px solid var(--tally);padding-left:14px;margin:0 0 16px}
.season{font-size:15.5px;color:var(--starlight)}

/* ---------- end card [SRC 395–400] ---------- */
.endcredits{padding:12vh 0 6vh}
.finalcta{max-width:720px;margin:10px auto 0;text-align:center;padding:26px 24px 24px}
.finalcta .m02d{font-size:clamp(30px,3.6vw,46px);display:block;margin:10px 0 6px}
.finalcta .row{justify-content:center;margin-top:16px}
.finalcta .slug{justify-content:center}
.finalcta .m02go{justify-items:center}
.endcredits .center > .panel{margin-bottom:18px}

/* ---------- "Next on the Amalgaverse": the end card of every page (the pages read like a run of episodes) ---------- */
.nextpage{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:center;max-width:760px;margin:9vh 0 0;padding:22px 24px}
.endcredits .nextpage{margin-left:auto;margin-right:auto;text-align:left}
.nextpage .slug{margin-bottom:8px}
.nextpage .np-h{font-weight:800;font-stretch:125%;font-size:clamp(24px,2.4vw,34px);line-height:1.05;letter-spacing:-.01em;margin:0 0 10px}
.nextpage .np-h.long{font-size:clamp(21px,1.8vw,26px);line-height:1.12}
.nextpage .np-dek{font-size:16px;line-height:1.55;color:var(--starlight);margin:0 0 16px}
.nextpage .np-go{min-height:52px;font-size:15px;padding:0 24px}
.nextpage .np-art{position:relative}
.nextpage .np-txt{min-width:0}
.nextpage .np-still{margin:0;aspect-ratio:16/9}
.nextpage .np-still img{height:100%}
.nextpage .np-svg{display:flex;justify-content:center}
.nextpage .np-svg svg{width:100%;max-width:190px;height:auto}
.np-bars{list-style:none;margin:0;padding:12px 14px;display:grid;gap:9px;border:1px solid var(--line-2);background:rgba(5,7,11,.5)}
.np-bars li{display:grid;gap:4px;font:500 11px/1.2 var(--f-mono);font-stretch:87.5%;letter-spacing:.06em;text-transform:uppercase;color:var(--dust)}
.np-bars i{display:block;height:6px;width:var(--w);min-width:4px;background:var(--phosphor)}
.np-bars li.m{color:var(--lunch)}
.np-bars li.m i{background:var(--lunch)}

/* ---------- footer = end credits [SRC 399, 416–424] ---------- */
footer.site{position:relative;z-index:3;padding:6vh 0 calc(8vh + 20px)}
footer.site .closing-slug{justify-content:center;margin:0 0 18px}
footer.site .closing-slug::after{content:"";width:22px;height:2px;background:var(--tally);flex:none}
html[data-page="mission-01"] footer.site .closing-slug{display:none}
.closing{text-align:center;padding:6vh 0 2vh}
.closing .big{font:800 clamp(20px,3vw,40px)/1.15 var(--f-display);font-stretch:125%;letter-spacing:.14em;text-transform:uppercase}
.rollcred{text-align:center;max-width:720px;margin:0 auto;display:grid;gap:10px;font-size:15.5px;color:var(--dust)}
.rollcred p{margin:0}
.rollcred .main{color:var(--starlight);font-size:17px}
.footlinks{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 18px;margin:18px 0 10px}
.footlinks a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px}
footer.site .madeby{margin:6px 0 0;text-align:center;font:500 11px/1.4 var(--f-mono);font-stretch:87.5%;letter-spacing:.08em;text-transform:uppercase}
footer.site .madeby a{display:inline-flex;align-items:center;min-height:44px;color:var(--dust);opacity:.55;text-decoration:none}
footer.site .madeby a:hover,footer.site .madeby a:focus-visible{opacity:1;color:var(--starlight)}
.ctrls{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px}
.damp-cap{font-size:14px;color:var(--dust);text-align:center;max-width:520px;margin:10px auto 0}
.damp-cap .v{font-family:var(--f-script);color:var(--starlight)}

/* ---------- mobile dock [SRC 426–427] ---------- */
.dock{display:none}

/* ---------- 3D overlay tags (#fx children) [SRC 430–444] ---------- */
.ftag{font:500 11px/1.3 var(--f-mono);font-stretch:87.5%;letter-spacing:.08em;text-transform:uppercase;color:var(--starlight);white-space:nowrap;text-shadow:0 0 8px rgba(5,7,11,1),0 0 2px rgba(5,7,11,1)}
.ftag .k{color:var(--dust)}
.reticle{width:52px;height:52px;margin:-26px 0 0 -26px;--c:var(--lunch)}
.reticle > i{position:absolute;inset:0;transform:scale(1.45);opacity:.5;transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .8s;
  background:
   linear-gradient(var(--c),var(--c)) 0 0/12px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 0 0/1.5px 12px no-repeat,
   linear-gradient(var(--c),var(--c)) 100% 0/12px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 100% 0/1.5px 12px no-repeat,
   linear-gradient(var(--c),var(--c)) 0 100%/12px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 0 100%/1.5px 12px no-repeat,
   linear-gradient(var(--c),var(--c)) 100% 100%/12px 1.5px no-repeat,linear-gradient(var(--c),var(--c)) 100% 100%/1.5px 12px no-repeat}
.reticle.lock > i{transform:scale(1);opacity:1}
.reticle .ftag{position:absolute;left:62px;top:6px;color:var(--lunch);display:grid;gap:4px}
.reticle .ftag .k{opacity:0;transition:opacity .3s .55s}
.reticle.lock .ftag .k{opacity:1}
.reticle.flip .ftag{left:auto;right:62px;text-align:right}
.reticle.under .ftag{left:-6px;top:62px}
/* season-row tags (mission-01 lattice, how-to-play next) [SRC 464–466] */
.mtag{margin:16px 0 0 -12px}
.mtag.m01{margin:-34px 0 0 -40px}
.mtag.m02{color:var(--lunch)}

/* ---------- page scaffolding (template + M0 stubs; builders may keep or replace) ---------- */
.page-head{min-height:72vh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--hud-h) + 10vh) 0 8vh}
.stub-sec{padding:6vh 0 10vh}
.meta-line{font:500 12px/1.6 var(--f-mono);font-stretch:87.5%;letter-spacing:.08em;text-transform:uppercase;color:var(--dust);margin:-6px 0 16px;max-width:600px}
.stub-note{max-width:600px;padding:14px 16px;border:1px dashed var(--line-2);color:var(--dust);font-size:15.5px;background:rgba(5,7,11,.6)}

/* ---------- responsive ---------- */
/* HUD budget: every visible item must fit the row at every width (tools: qa2/t2/hudwidth.cjs sweeps 320–1519 px).
   The dampers and sound toggles also live in every footer, and Follow lives in the Menu panel and the footer,
   so the HUD drops them first when the row is short. */
@media (min-width:1440px){
  .hud .damp-hud,.hud .snd{display:inline-flex}
}
@media (min-width:761px) and (max-width:899px){
  .hud .follow{display:none}
  .hud .xicon{display:inline-flex;border-color:var(--line-2)}
}
@media (min-width:1200px){
  .nav{display:flex}
  .hud .menu{display:none}
}
@media (max-width:1199px){
  html.navopen .nav{display:flex;flex-direction:column;gap:0;position:fixed;left:0;right:0;top:calc(var(--hud-h) + var(--st));margin:0;z-index:31;
    padding:6px var(--gr) 14px var(--gl);background:var(--void);border-bottom:1px solid var(--line);box-shadow:0 18px 40px rgba(5,7,11,.8);
    max-height:calc(100svh - var(--hud-h) - var(--st) - 72px - var(--sb));overflow:auto;overscroll-behavior:contain}
  html.navopen .nav a{display:flex;align-items:center;min-height:52px;padding:0 4px 0 18px;font-size:13px;letter-spacing:.08em;border-bottom:1px solid rgba(154,169,181,.12)}
  html.navopen .nav a[aria-current="page"]::after{left:0;right:auto;top:50%;bottom:auto;width:8px;height:2px;margin-top:-1px}
  html.navopen .nav .nav-x{display:flex;color:var(--phosphor);border-bottom:0}
}
/* stacked layout (phones, small tablets, narrow windows): 3D lives in transparent viewer windows */
@media (max-width:1023px){
  .viewer{display:block;pointer-events:none;position:relative}
  .viewer-hero{height:30vh;height:30svh}
  .viewer-win{height:44vh;height:44svh;margin:14px 0}
}
@media (max-width:1519px) and (min-width:761px){
  .hud .follow .lbl-long,.hud .chip.you .lbl-long{display:none}
}
@media (max-width:760px){
  :root{--hud-h:56px}
  body{font-size:16px}
  .hud{gap:8px}
  .hud .chip.cd{display:none}
  .hud .follow,.hud .xicon{display:none}
  .chip.you{padding:0 8px}
  .viewer-hero{height:26vh;height:26svh}
  h1{font-size:clamp(30px,8.6vw,36px);margin-bottom:12px}
  .dek{font-size:16px;line-height:1.5}
  .choice{margin:12px 0 10px;padding:14px 14px 16px}
  .choice .q{font-size:15.5px;line-height:1.45;margin-bottom:12px}
  .choice .row .btn{flex:1}
  .toc{display:grid;grid-template-columns:1fr 1fr}
  .toc a{padding:0 10px}
  .toc.centered a{justify-content:center}
  .m02:not(.mtag){padding:10px 12px 10px 14px;gap:4px 16px}
  .m02d{font-size:26px}
  .panel{padding:18px 16px}
  .dg b{font-size:clamp(28px,8.4vw,42px)}
  .dsep{font-size:22px;padding-bottom:20px}
  .digits{gap:4px 6px}
  .titlecard{height:auto;padding:4vh 0}
  .tc-name{letter-spacing:.07em;white-space:normal;font-size:clamp(28px,8.4vw,40px);line-height:1.08}
  .theme{min-height:22vh}
  .endcredits{padding-bottom:4vh}
  .finalcta{padding:22px 16px}
  .nextpage{grid-template-columns:1fr;gap:16px;padding:18px 16px;margin-top:7vh}
  .nextpage .np-art{max-width:240px}
  .nextpage .np-go{width:100%}
  .toc a{font-size:12px}
  .season-strip .ss-key{font-size:12px}
  .dock{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;gap:8px;align-items:center;justify-content:space-between;
    padding:8px var(--gr) calc(8px + var(--sb)) var(--gl);background:rgba(5,7,11,.9);border-top:1px solid var(--line)}
  .dock .chip{min-height:44px;flex:1;justify-content:center}
  .dock .btn{min-height:44px;padding:0 14px;font-size:12.5px}
  html{scroll-padding-bottom:calc(72px + var(--sb))}
  main{padding-bottom:0}
  footer.site{padding-bottom:calc(84px + var(--sb))}
  html.intro .dock{visibility:hidden;animation:dockBack 0s 15s forwards}   /* failsafe if the home module never takes over */
}
@media (max-width:420px){
  .brand b{font-size:13px;letter-spacing:.16em}
  .hud .chip.you .lbl-long{display:none}
}
/* small phones (320 px): tighter row, the Menu button keeps its bars and a visually hidden label */
@media (max-width:359px){
  .hud{gap:6px}
  .brand b{font-size:12px;letter-spacing:.1em}
  .chip.you{padding:0 6px;gap:6px;font-size:10.5px}
  .hud .menu .mlbl{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .hud .menu{padding:0;width:44px}
}

@keyframes dockBack{to{visibility:visible}}

/* ---------- reduced motion [SRC 613–615] ---------- */
html.rm *,html.rm *::before,html.rm *::after{transition-duration:.001s!important;animation-duration:.001s!important;animation-delay:0s!important;scroll-behavior:auto!important}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* header: Opening (replays the cold open); label shows when the header has room */
.tbtn.opening{text-decoration:none;font:600 12.5px/1 var(--f-mono);font-stretch:87.5%;letter-spacing:.08em;text-transform:uppercase}
.tbtn.opening svg{width:14px;height:14px}
@media (max-width:1279px){.tbtn.opening .olbl{display:none}}
/* phones: no room in the header row, so Opening moves into the Menu panel */
.nav .nav-open{display:none}
@media (max-width:899px){.hud .tbtn.opening{display:none}html.navopen .nav .nav-open{display:flex}}
