/* ============================================================
   VFXMAGIC — flythrough site design system
   Extracted + extended from the day/night-flythrough hero concept.
   One stylesheet for the whole multi-page sandbox. Dark, cinematic,
   procedural — no photography anywhere; every visual is canvas/CSS.
   Palette: glacial cyan + copper key light on near-black ink.
   Type: Space Grotesk (display) · IBM Plex Sans (body) · IBM Plex Mono (chrome)
   ============================================================ */
:root{
  --ink:#06090f;
  --ink-2:#0a0e16;
  --ink-3:#10151f;
  --moon:#dfe6ee;
  --moon-dim:#97a3b2;
  --steel:#8593a3;            /* a11y: ≥4.5:1 on ink (was #5b6675 ≈3.4:1) */
  --glacial:#6fb7c9;
  --glacial-bright:#9adcee;
  --copper:#c98d57;
  --green:#36d399;            /* the logo's green "A" — used sparingly */
  --hairline:rgba(223,230,238,.10);
  --display:'Space Grotesk',sans-serif;
  --body:'IBM Plex Sans',sans-serif;
  --mono:'IBM Plex Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--ink);
  transition:background-color 1s ease;
  color:var(--moon);
  font-family:var(--body);
  font-weight:300;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
::selection{background:var(--glacial);color:var(--ink)}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid var(--glacial);outline-offset:3px}
img{max-width:100%;display:block}

/* skip-to-content — offscreen until focused (keyboard a11y) */
.skip-link{
  position:fixed;top:-40px;left:8px;z-index:200;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;
  background:var(--glacial);color:var(--ink);
  padding:9px 18px;border-radius:0 0 8px 8px;font-weight:500;
  box-shadow:0 8px 24px rgba(0,0,0,.5);
  transition:top .2s ease;
}
.skip-link:focus{top:8px;outline:2px solid var(--glacial-bright);outline-offset:2px}

/* ---------- NAV ---------- */
nav{
  position:fixed;top:0;left:0;right:0;z-index:60;
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 44px;
  /* day-state legibility: a faint top scrim so the links hold against a bright
     sky; reads as nothing over the night render (launch-eve audit 2026-08-20) */
  background:linear-gradient(180deg,rgba(6,9,15,.55),rgba(6,9,15,0));
  transition:background .4s,border-color .4s;
  border-bottom:1px solid transparent;
  /* at the top the bar is transparent — let clicks pass THROUGH its empty band to the hero beneath
     (e.g. the SOUND toggle sitting just under the logo); only its links/buttons capture clicks */
  pointer-events:none;
}
nav > *{pointer-events:auto}
nav.scrolled{
  background:var(--nav-bg,rgba(6,9,15,.85));
  backdrop-filter:blur(14px);
  border-bottom-color:var(--hairline);
  pointer-events:auto;   /* once it has a solid background, the whole bar blocks again */
}
.brand{display:flex;align-items:center;gap:0;line-height:0;position:relative}
.brand-logo{height:27px;width:auto;opacity:.96;transition:opacity .3s,filter .3s,transform .3s}
.brand:hover .brand-logo{opacity:1;filter:drop-shadow(0 0 14px rgba(111,183,201,.35))}

/* ============================================================
   HOME-LOGO "ACTIVE BUTTON" — on hover, a landing-page reveal style plays
   masked INSIDE the wordmark (the logo image stays; the animation rides on top).
   flythrough.js initChrome() injects the .brand-fx span + rolls one random fx-*
   class per page load, so different pages light the logo up differently.
   ============================================================ */
.brand-fx{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .25s ease;
  -webkit-mask:url('/assets/vfxmagic-logo-light.png') center/contain no-repeat;
          mask:url('/assets/vfxmagic-logo-light.png') center/contain no-repeat}
/* 1 · Liquid Sheen */
.fx-sheen .brand-fx{background:linear-gradient(100deg,#6fb7c9,#9adcee,#f5faff,#36d399,#c98d57,#6fb7c9);background-size:300% 100%}
.brand:hover.fx-sheen .brand-fx{opacity:1;animation:fxFlow 2.6s linear infinite}
/* 2 · Light Sweep */
.fx-sweep .brand-fx{background:linear-gradient(105deg,transparent 36%,rgba(255,255,255,.96) 50%,rgba(154,220,238,.65) 57%,transparent 68%);background-size:250% 100%}
.brand:hover.fx-sweep .brand-fx{opacity:1;animation:fxSweep 1.5s ease-in-out infinite}
.brand:hover.fx-sweep .brand-logo{filter:drop-shadow(0 0 8px rgba(154,220,238,.35))}
/* 3 · Colour Flow (the ground-lines cyan↔magenta↔gold) */
.fx-flow .brand-fx{background:linear-gradient(100deg,#99dbf5,#db73f5,#ffcd82,#99dbf5);background-size:300% 100%}
.brand:hover.fx-flow .brand-fx{opacity:1;animation:fxFlow 2.2s linear infinite}
/* 4 · Neon Sign (acts on the img) */
.brand:hover.fx-neon .brand-logo{opacity:1;animation:fxNeon 2.6s infinite}
/* 5 · Datamosh */
.brand:hover.fx-glitch .brand-logo{animation:fxGlitch .42s steps(1) infinite}
/* 6 · Rack Focus (one-shot on enter) */
.brand:hover.fx-rackfocus .brand-logo{animation:fxRack .7s ease-out 1}
/* 7 · Prism */
.fx-prism .brand-fx{background:linear-gradient(90deg,#ff5d8f,#ffcd82,#36d399,#9adcee,#9b8cff,#ff5d8f);background-size:300% 100%}
.brand:hover.fx-prism .brand-fx{opacity:1;animation:fxFlow 3s linear infinite, fxHue 6s linear infinite}
@keyframes fxFlow{from{background-position:0 0}to{background-position:300% 0}}
@keyframes fxSweep{from{background-position:135% 0}to{background-position:-45% 0}}
@keyframes fxHue{to{filter:hue-rotate(360deg)}}
@keyframes fxNeon{
  0%{filter:drop-shadow(0 0 2px rgba(54,211,153,.4))}
  3%{filter:none}
  7%{filter:drop-shadow(0 0 9px rgba(54,211,153,.9)) drop-shadow(0 0 16px rgba(154,220,238,.6))}
  9%{filter:drop-shadow(0 0 3px rgba(54,211,153,.5))}
  13%{filter:drop-shadow(0 0 11px rgba(54,211,153,.95)) drop-shadow(0 0 20px rgba(154,220,238,.7))}
  16%{filter:drop-shadow(0 0 4px rgba(54,211,153,.6))}
  100%{filter:drop-shadow(0 0 11px rgba(54,211,153,.85)) drop-shadow(0 0 20px rgba(154,220,238,.55))}
}
@keyframes fxGlitch{
  0%{filter:drop-shadow(2px 0 0 rgba(255,0,60,.85)) drop-shadow(-2px 0 0 rgba(0,180,255,.85));clip-path:inset(0 0 62% 0)}
  20%{filter:drop-shadow(-3px 0 0 rgba(255,0,60,.85)) drop-shadow(3px 0 0 rgba(0,180,255,.85));clip-path:inset(42% 0 22% 0)}
  40%{filter:drop-shadow(2px 0 0 rgba(255,0,60,.8)) drop-shadow(-2px 0 0 rgba(0,180,255,.8));clip-path:inset(72% 0 0 0)}
  55%{filter:none;clip-path:none}
  75%{filter:drop-shadow(-2px 0 0 rgba(255,0,60,.7)) drop-shadow(2px 0 0 rgba(0,180,255,.7));clip-path:inset(22% 0 52% 0)}
  100%{filter:none;clip-path:none}
}
@keyframes fxRack{0%{filter:blur(5px) brightness(1.5);transform:scale(1.06)}100%{filter:none;transform:scale(1)}}
@media (prefers-reduced-motion: reduce){
  .brand-fx{display:none}
  .brand:hover .brand-logo{animation:none!important}
}
.nav-links{display:flex;gap:34px;align-items:center}
.nav-links a{
  font-family:var(--mono);
  font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--moon-dim);transition:color .25s;position:relative;
}
.nav-links a:hover{color:var(--glacial-bright)}
.nav-links a.active{color:var(--moon)}
.nav-links a.active::after{
  content:'';position:absolute;left:0;right:0;bottom:-7px;height:1px;background:var(--glacial);
}
.nav-cta{
  display:inline-block;vertical-align:middle;
  border:1px solid var(--glacial);
  border-radius:999px;
  padding:9px 22px;
  color:var(--glacial-bright)!important;
  transition:background .3s,color .3s,box-shadow .3s;
}
.nav-cta:hover{background:var(--glacial);color:var(--ink)!important;box-shadow:0 0 24px rgba(111,183,201,.35)}
.nav-cta.active::after{display:none}
.menu-btn{display:none;background:none;border:none;color:var(--moon);font-size:1.4rem;cursor:pointer}
.mobile-menu{
  display:none;position:fixed;inset:0;z-index:59;
  background:rgba(6,9,15,.97);backdrop-filter:blur(16px);
  flex-direction:column;align-items:center;justify-content:center;gap:30px;
}
.mobile-menu.open{display:flex}
.mobile-menu a{font-family:var(--mono);font-size:1.05rem;letter-spacing:.18em;text-transform:uppercase;color:var(--moon-dim)}
.mobile-menu a:hover{color:var(--glacial-bright)}

/* ---------- HERO (full-bleed flythrough) ---------- */
.hero{
  position:relative;height:100vh;min-height:640px;
  overflow:hidden;
  cursor:none;
  isolation:isolate; /* the wire layer day-blends with 'screen' — keep that blend inside the hero's own stack */
}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.cvRender{z-index:1}
.cvWire{z-index:2}

/* viewfinder frame */
.vf{position:absolute;width:30px;height:30px;z-index:6;pointer-events:none;opacity:.5}
.vf::before,.vf::after{content:'';position:absolute;background:var(--glacial)}
.vf::before{width:100%;height:1px}
.vf::after{width:1px;height:100%}
.vf.tl{top:84px;left:30px}
.vf.tr{top:84px;right:30px;transform:scaleX(-1)}
.vf.bl{bottom:30px;left:30px;transform:scaleY(-1)}
.vf.br{bottom:30px;right:30px;transform:scale(-1)}
.hud{
  position:absolute;z-index:6;pointer-events:none;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.22em;
  color:rgba(111,183,201,.65);
}
.hud.tl{top:96px;left:74px}
.hud.tr{top:96px;right:74px;text-align:right}
.hud.bl{bottom:42px;left:74px}

/* the render lens (custom cursor) */
.lens{
  position:absolute;z-index:5;
  width:300px;height:300px;
  transform:translate(-50%,-50%);
  border:1px solid rgba(154,220,238,.55);
  border-radius:50%;
  pointer-events:none;
  box-shadow:0 0 40px rgba(111,183,201,.12), inset 0 0 60px rgba(111,183,201,.06);
}
.lens i{position:absolute;background:rgba(154,220,238,.7)}
.lens i.t{top:-8px;left:50%;width:1px;height:14px;transform:translateX(-.5px)}
.lens i.b{bottom:-8px;left:50%;width:1px;height:14px;transform:translateX(-.5px)}
.lens i.l{left:-8px;top:50%;height:1px;width:14px;transform:translateY(-.5px)}
.lens i.r{right:-8px;top:50%;height:1px;width:14px;transform:translateY(-.5px)}
.lens em{
  position:absolute;left:50%;bottom:-30px;transform:translateX(-50%);
  font-family:var(--mono);font-style:normal;font-size:.58rem;
  letter-spacing:.26em;color:var(--glacial-bright);
  white-space:nowrap;
}
.hero-content{
  position:absolute;inset:0;z-index:7;
  display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-start;
  padding:0 74px 11vh;
  pointer-events:none;
}

/* ---------- TIME-OF-DAY CONTROL ---------- */
.tod{
  position:absolute;right:74px;bottom:96px;z-index:8;
  width:330px;pointer-events:auto;cursor:auto;
  font-family:var(--mono);
  opacity:0;animation:rise .9s .9s forwards;
  /* never overlap the top menu: cap the panel so its top stays clear of the nav band (≈78px) and scroll
     inside as a last resort (the engine also auto-collapses sections to fit before it ever scrolls) */
  max-height:calc(100% - 192px);overflow-y:auto;overscroll-behavior:contain;
  scrollbar-width:none;-ms-overflow-style:none;
  /* glass control surface so it stays legible over bright scene elements (e.g. the moon glow
     on the smaller reel viewport) instead of the glow blooming through the controls */
  background:rgba(6,9,15,.5);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid var(--hairline);border-radius:14px;
  padding:16px 19px;
}
.tod::-webkit-scrollbar{width:0;height:0;display:none}
/* during an auto-fit measure pass, kill the body transitions so heights read true instantly */
.tod.measuring .tod-grounds-body{transition:none!important}
.tod-head{
  display:flex;justify-content:space-between;align-items:center;
  font-size:.66rem;letter-spacing:.22em;color:var(--glacial-bright);
  margin-bottom:10px;
}
.todLive{
  font-family:var(--mono);font-size:.55rem;letter-spacing:.22em;
  background:none;border:1px solid var(--hairline);border-radius:999px;
  color:var(--steel);padding:4px 12px;cursor:pointer;min-height:24px;
  transition:color .3s,border-color .3s,box-shadow .3s;
}
.todLive.on{
  color:var(--glacial-bright);border-color:var(--glacial);
  box-shadow:0 0 12px rgba(111,183,201,.3);
}
.tod input[type=range]{
  -webkit-appearance:none;appearance:none;
  width:100%;height:16px;background:transparent;cursor:ew-resize;display:block;
}
/* keyboard focus on the slider — fallback ring on the element + a glow on each thumb */
.tod input[type=range]:focus-visible{outline:2px solid var(--glacial);outline-offset:6px;border-radius:6px}
.tod input[type=range]:focus-visible::-webkit-slider-thumb{
  box-shadow:0 0 10px rgba(154,220,238,.55), 0 0 0 3px rgba(111,183,201,.55);
}
.tod input[type=range]:focus-visible::-moz-range-thumb{
  box-shadow:0 0 10px rgba(154,220,238,.55), 0 0 0 3px rgba(111,183,201,.55);
}
.tod input[type=range]::-webkit-slider-runnable-track{
  height:3px;border-radius:2px;
  background:var(--track,linear-gradient(90deg,#16283c,#16283c));
}
.tod input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:13px;height:13px;border-radius:50%;
  background:var(--ink);border:1px solid var(--glacial-bright);
  box-shadow:0 0 10px rgba(154,220,238,.55);
  margin-top:-5px;
}
.tod input[type=range]::-moz-range-track{
  height:3px;border-radius:2px;
  background:var(--track,linear-gradient(90deg,#16283c,#16283c));
}
.tod input[type=range]::-moz-range-thumb{
  width:11px;height:11px;border-radius:50%;
  background:var(--ink);border:1px solid var(--glacial-bright);
  box-shadow:0 0 10px rgba(154,220,238,.55);
}
.tod-ticks{
  display:flex;justify-content:space-between;
  font-size:.55rem;letter-spacing:.14em;color:var(--steel);
  margin-top:6px;
}
.tod-seasons{display:flex;gap:6px;margin-top:12px}
.tod-seasons button{
  flex:1;font-family:var(--mono);font-size:.52rem;letter-spacing:.16em;
  background:none;border:1px solid var(--hairline);border-radius:999px;
  color:var(--steel);padding:4px 0;cursor:pointer;min-height:24px;
  transition:color .3s,border-color .3s,box-shadow .3s;
}
.tod-seasons button:hover{color:var(--moon-dim)}
.tod-seasons button.on{
  color:var(--glacial-bright);border-color:var(--glacial);
  box-shadow:0 0 12px rgba(111,183,201,.3);
}
/* daytime ground picker — gradient swatches in the time-of-day panel */
.tod-grounds{margin-top:13px}
/* collapsible header bar — collapses the swatches down to just this bar */
.tod-grounds-bar{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;cursor:pointer;
  padding:3px 0;font-family:var(--mono);font-size:.56rem;letter-spacing:.16em;text-transform:uppercase;color:var(--steel)}
.tod-grounds-bar:hover{color:var(--moon-dim)}
.tod-grounds-bar b{margin-left:auto;color:var(--glacial-bright);font-weight:500;letter-spacing:.04em;text-transform:none;font-size:.7rem}
.tod-chev{width:8px;height:8px;border-right:1.5px solid var(--steel);border-bottom:1.5px solid var(--steel);
  transform:rotate(45deg);transition:transform .3s;flex:none;margin-left:2px}
.tod-grounds.collapsed .tod-chev{transform:rotate(-45deg)}
.tod-grounds-body{max-height:340px;overflow:hidden;transition:max-height .42s cubic-bezier(.4,0,.2,1),opacity .3s,margin .3s;opacity:1;margin-top:6px}
.tod-grounds.collapsed .tod-grounds-body{max-height:0;opacity:0;margin-top:0;pointer-events:none}
.tod-grounds-group{font-family:var(--mono);font-size:.46rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--moon-dim);margin:9px 0 5px;opacity:.7}
.tod-grounds-row{display:flex;gap:7px;margin-bottom:2px}
/* when a season look is overriding the picked ground, dim the swatch row to show it's not in control */
.tod-grounds.season-override .tod-grounds-body{opacity:.45}
/* panel title — clickable header; click to collapse the whole panel down to just the heading */
.tod-title{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;
  background:none;border:0;cursor:pointer;padding:0;margin-bottom:12px;text-align:left}
.tod-title .tt{display:block}
.tod-title .tt b{display:block;font-family:var(--display);font-weight:500;font-size:.98rem;color:var(--moon);letter-spacing:.01em}
.tod-title .tt em{font-style:normal;font-family:var(--mono);font-size:.5rem;letter-spacing:.22em;text-transform:uppercase;color:var(--steel)}
.tod-title-chev{flex:none}
.tod.collapsed-all .tod-title-chev{transform:rotate(-45deg)}
.tod.collapsed-all .tod-title{margin-bottom:0}
.tod.collapsed-all > :not(.tod-title){display:none!important}   /* fold everything but the heading */
/* Look / grade row */
.tod-grade{margin-top:13px}
.tod-grade-label{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px;
  font-family:var(--mono);font-size:.52rem;letter-spacing:.16em;text-transform:uppercase;color:var(--steel)}
.tod-grade-label b{color:var(--glacial-bright);font-weight:500;letter-spacing:.04em;text-transform:none;font-size:.66rem}
.tod-grade-row{display:flex;flex-wrap:wrap;gap:6px}
.tod-grade-chip{font-family:var(--mono);font-size:.54rem;letter-spacing:.1em;text-transform:uppercase;color:var(--steel);
  background:rgba(223,230,238,.04);border:1px solid var(--hairline);border-radius:999px;padding:5px 9px;cursor:pointer;transition:.2s}
.tod-grade-chip:hover{color:var(--moon-dim);border-color:rgba(223,230,238,.28)}
.tod-grade-chip.on{color:var(--ink);background:var(--glacial-bright);border-color:var(--glacial-bright)}
/* colour-grade overlay (sits above the scene canvases, below the HUD/content) */
.grade-ov{position:absolute;inset:0;z-index:3;pointer-events:none;transition:opacity .4s,background .4s}
/* film-grain preset description (small caption under the grain chips) */
.tod-grain-desc{font-family:var(--mono);font-size:.5rem;letter-spacing:.06em;color:var(--steel);margin-top:8px;line-height:1.5}
/* LETTERBOX matte — black bars + framing window over the scene, below the HUD/content (z:6 < hero-content z:7) */
.tod-letterbox{position:absolute;inset:0;z-index:6;pointer-events:none;display:none}
.tod-letterbox .lb-bar{position:absolute;background:#000}
.tod-letterbox .lb-top{top:0;left:0;right:0}
.tod-letterbox .lb-bottom{bottom:0;left:0;right:0}
.tod-letterbox .lb-left{top:0;bottom:0;left:0}
.tod-letterbox .lb-right{top:0;bottom:0;right:0}
.tod-letterbox .lb-win{position:absolute}
.tod-letterbox .lb-tk{position:absolute;width:15px;height:15px;border:0 solid rgba(255,255,255,.5)}
.tod-letterbox .lb-tl{top:9px;left:9px;border-top-width:1px;border-left-width:1px}
.tod-letterbox .lb-tr{top:9px;right:9px;border-top-width:1px;border-right-width:1px}
.tod-letterbox .lb-bl{bottom:9px;left:9px;border-bottom-width:1px;border-left-width:1px}
.tod-letterbox .lb-br{bottom:9px;right:9px;border-bottom-width:1px;border-right-width:1px}
.tod-letterbox .lb-label{position:absolute;left:50%;transform:translateX(-50%);
  font-family:var(--mono);font-size:.56rem;letter-spacing:.28em;text-transform:uppercase;
  color:rgba(255,255,255,.55);text-shadow:0 1px 2px rgba(0,0,0,.6);white-space:nowrap}
/* brush-size cursor ring (Photoshop/Affinity style) shown while a cloud brush is active */
.cloud-cursor{position:absolute;z-index:9;pointer-events:none;display:none;border-radius:50%;
  transform:translate(-50%,-50%);border:1px solid rgba(245,250,255,.85);box-shadow:0 0 0 1px rgba(6,9,15,.5),inset 0 0 0 1px rgba(6,9,15,.4)}
.cloud-cursor.erase{border-style:dashed;border-color:rgba(232,150,70,.9)}
/* cloud paint / erase tools */
.tod-cloud-tools{display:flex;gap:6px;margin-top:8px}
.tod-cloud-tool{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:.5rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--steel);background:rgba(223,230,238,.04);border:1px solid var(--hairline);
  border-radius:999px;padding:5px 10px;cursor:pointer;transition:.2s}
.tod-cloud-tool i{font-style:normal;font-size:.7rem;line-height:1}
.tod-cloud-tool:hover{color:var(--moon-dim);border-color:rgba(223,230,238,.28)}
.tod-cloud-tool.on{color:var(--ink);background:var(--glacial-bright);border-color:var(--glacial-bright)}
.tod-cloud-reset{margin-left:auto;color:var(--moon-dim)}
.tod-brush{display:flex;align-items:center;gap:10px;margin-top:8px}
.tod-brush label{font-family:var(--mono);font-size:.5rem;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);white-space:nowrap}
.tod-brush-sel{flex:1;font-family:var(--mono);font-size:.56rem;letter-spacing:.06em;color:var(--moon);
  background:rgba(223,230,238,.05);border:1px solid var(--hairline);border-radius:7px;padding:5px 8px;cursor:pointer}
.tod-brush-sel:hover{border-color:rgba(223,230,238,.28)}
.tod-cloud-blur{display:flex;align-items:center;gap:10px;margin-top:8px}
.tod-cloud-blur label{font-family:var(--mono);font-size:.5rem;letter-spacing:.14em;text-transform:uppercase;color:var(--steel);white-space:nowrap}
.tod-cloud-blur input[type=range]{flex:1;height:16px}
.tod-cloud-blur input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:6px;background:rgba(223,230,238,.18)}
.tod-cloud-blur input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--ink);margin-top:-4px;box-shadow:0 1px 4px rgba(0,0,0,.5)}
/* Starlink live-data toggle */
.tod-sat{margin-top:13px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tod-sat-btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--steel);background:rgba(223,230,238,.04);border:1px solid var(--hairline);
  border-radius:999px;padding:7px 13px;cursor:pointer;transition:.2s}
.tod-sat-btn:hover{color:var(--moon-dim);border-color:rgba(223,230,238,.28)}
.tod-sat-dot{width:7px;height:7px;border-radius:50%;background:var(--steel);transition:.3s}
.tod-sat-btn.on{color:var(--glacial-bright);border-color:var(--glacial)}
.tod-sat-btn.on .tod-sat-dot{background:#e8963c;box-shadow:0 0 8px #e8963c}
.tod-sat-status{font-family:var(--mono);font-size:.5rem;letter-spacing:.12em;text-transform:uppercase;color:var(--steel)}
.tod-sat-status.on{color:#e8963c}
.tod-sat-status.wait{color:var(--moon-dim)}
/* Starlink hover label */
.sat-label{position:absolute;z-index:6;transform:translate(-50%,-100%);pointer-events:none;white-space:nowrap;
  font-family:var(--mono);font-size:.54rem;letter-spacing:.12em;color:var(--glacial-bright);
  background:rgba(6,9,15,.72);border:1px solid rgba(154,220,238,.42);border-radius:4px;padding:3px 7px;
  opacity:0;transition:opacity .18s;text-shadow:0 1px 3px rgba(0,0,0,.85)}
.sat-label.show{opacity:1}
.tod-grounds-row button{flex:1;height:24px;border-radius:7px;border:1px solid var(--hairline);
  cursor:pointer;padding:0;transition:box-shadow .3s,border-color .3s,transform .2s}
.tod-grounds-row button:hover{transform:translateY(-1px);border-color:rgba(223,230,238,.3)}
.tod-grounds-row button.on{border-color:var(--moon);box-shadow:0 0 0 1px var(--moon),0 0 12px rgba(154,220,238,.3)}
.tod-moonrow{
  display:flex;align-items:center;gap:10px;margin-top:12px;
  font-size:.58rem;letter-spacing:.18em;color:var(--moon-dim);
}
.tod-moonrow canvas{position:static;inset:auto;width:16px;height:16px;flex:none}
.todEcl{
  display:block;width:100%;margin-top:10px;
  font-family:var(--mono);font-size:.55rem;letter-spacing:.18em;text-align:left;
  background:none;border:1px solid rgba(201,141,87,.35);border-radius:999px;
  color:var(--copper);padding:5px 12px;cursor:pointer;min-height:24px;
  transition:color .3s,border-color .3s,box-shadow .3s;
}
.todEcl:hover{border-color:var(--copper)}
.todEcl.on{
  color:#e8a96d;border-color:var(--copper);
  box-shadow:0 0 12px rgba(201,141,87,.35);
}
.hero-eyebrow{
  font-family:var(--mono);font-size:.66rem;letter-spacing:.3em;
  text-transform:uppercase;color:var(--glacial);
  margin-bottom:22px;
  display:flex;align-items:center;gap:14px;
  opacity:0;animation:rise .9s .3s forwards;
}
.hero-eyebrow::before{content:'';width:34px;height:1px;background:var(--glacial)}
.hero h1{
  font-family:var(--display);font-weight:300;
  font-size:clamp(2.5rem,5.8vw,4.9rem);
  line-height:1.05;letter-spacing:-.015em;
  max-width:15ch;
  text-shadow:0 2px 36px rgba(0,0,0,.7);
  opacity:0;animation:rise .9s .45s forwards;
}
.hero h1 b{font-weight:500;color:var(--glacial-bright)}
.hero-sub{
  margin-top:24px;max-width:48ch;
  font-size:1rem;color:var(--moon-dim);
  text-shadow:0 1px 18px rgba(0,0,0,.7);
  opacity:0;animation:rise .9s .6s forwards;
}
.hero-actions{
  margin-top:36px;display:flex;gap:16px;align-items:center;flex-wrap:wrap;
  pointer-events:auto;
  opacity:0;animation:rise .9s .75s forwards;
}
/* NOTE: display:inline-block is load-bearing, not cosmetic. These classes are used on
   <a> elements, which are display:inline by default — and on an inline box vertical
   padding does not affect line height and vertical margin is ignored outright, so the
   button's padded box overlapped the text above it (measured: -7px, i.e. overlapping,
   on the in-article CTA). Do not remove it. */
.btn-primary{
  display:inline-block;vertical-align:middle;text-align:center;
  font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  background:var(--glacial);color:var(--ink);
  padding:15px 32px;border-radius:999px;font-weight:500;
  transition:background .3s,box-shadow .3s,transform .3s;
  cursor:pointer;border:none;
}
.btn-primary:hover{background:var(--glacial-bright);box-shadow:0 0 32px rgba(111,183,201,.4);transform:translateY(-2px)}
.btn-ghost{
  display:inline-block;vertical-align:middle;text-align:center;
  font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--moon);padding:15px 26px;border-radius:999px;
  border:1px solid var(--hairline);
  transition:border-color .3s,color .3s;
  cursor:pointer;background:none;
}
.btn-ghost:hover{border-color:var(--glacial);color:var(--glacial-bright)}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}

/* ---------- PAGE HERO (slim animated band for content pages) ---------- */
.page-hero{
  position:relative;overflow:hidden;
  height:clamp(360px,52vh,520px);
  display:flex;align-items:flex-end;
  border-bottom:1px solid var(--hairline);
}
.page-hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:1}
.page-hero .veil{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,rgba(6,9,15,.35) 0%,rgba(6,9,15,.1) 40%,rgba(6,9,15,.82) 100%);
}
.page-hero-inner{position:relative;z-index:3;width:100%;max-width:1180px;margin:0 auto;padding:0 44px 56px}
.page-hero .kicker{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.3em;text-transform:uppercase;color:var(--glacial);
  display:flex;align-items:center;gap:14px;margin-bottom:20px;
}
.page-hero .kicker::before{content:'';width:34px;height:1px;background:var(--glacial)}
.page-hero h1{
  font-family:var(--display);font-weight:300;
  font-size:clamp(2.1rem,4.6vw,3.6rem);line-height:1.06;letter-spacing:-.015em;max-width:18ch;
  text-shadow:0 2px 30px rgba(0,0,0,.6);
}
.page-hero h1 b{font-weight:500;color:var(--glacial-bright)}
.page-hero .lede{margin-top:20px;max-width:56ch;color:var(--moon-dim);font-size:1.02rem;text-shadow:0 1px 14px rgba(0,0,0,.6)}

/* ---------- SECTIONS ---------- */
section{padding:120px 44px;position:relative}
.wrap{max-width:1180px;margin:0 auto}
.wrap-narrow{max-width:820px;margin:0 auto}
.eyebrow{
  font-family:var(--mono);font-size:.64rem;letter-spacing:.28em;
  text-transform:uppercase;color:var(--glacial);
  display:flex;align-items:center;gap:14px;margin-bottom:24px;
}
.eyebrow::before{content:'';width:34px;height:1px;background:var(--glacial)}
h2{
  font-family:var(--display);font-weight:300;
  font-size:clamp(1.8rem,3.4vw,2.9rem);
  line-height:1.14;letter-spacing:-.01em;
}
h2 b{font-weight:500;color:var(--glacial-bright)}
/* copper heading accent — use ONCE per page, where cyan would otherwise sit */
.accent-copper{color:var(--copper)}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:translateY(0)}
/* staggered reveal — children carry style="--i:N" for a cascade */
.reveal[style*="--i"]{transition-delay:calc(var(--i,0) * 70ms)}

/* thesis */
.thesis{border-top:1px solid var(--hairline)}
.thesis-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:84px;align-items:start}
.thesis p.lede{margin-top:28px;font-size:1.16rem;line-height:1.75;max-width:54ch}
.thesis p.lede em{font-style:normal;color:var(--copper)}
.thesis-aside{
  border:1px solid var(--hairline);border-radius:14px;
  padding:34px 32px;
  font-size:.94rem;color:var(--moon-dim);line-height:1.8;
  background:linear-gradient(160deg, rgba(111,183,201,.05), transparent 55%);
}
.thesis-aside strong{
  color:var(--moon);font-weight:500;display:block;margin-bottom:10px;
  font-family:var(--mono);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;
}

/* reliability rail */
.rail{transition:background-color 1s ease;background:var(--ink-2);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}
.rail-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:20px;margin-bottom:70px}
.rail-head p{color:var(--moon-dim);max-width:40ch;font-size:.95rem}
.rail-track{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:40px}
.rail-track::before{
  content:'';position:absolute;top:5px;left:0;right:0;height:1px;
  background:linear-gradient(90deg,var(--glacial),rgba(111,183,201,.12));
}
.rail-item{position:relative;padding-top:38px}
.rail-item::before{
  content:'';position:absolute;top:0;left:0;
  width:11px;height:11px;border-radius:50%;
  border:1px solid var(--glacial);background:var(--ink-2);
  transition:background .35s,box-shadow .35s;
}
.rail-item:hover::before{background:var(--glacial);box-shadow:0 0 18px rgba(111,183,201,.55)}
.rail-item .k{
  font-family:var(--mono);font-size:.58rem;letter-spacing:.22em;
  color:var(--steel);display:block;margin-bottom:16px;
}
.rail-item h3{font-family:var(--display);font-weight:400;font-size:1.18rem;margin-bottom:12px;letter-spacing:-.005em}
.rail-item p{color:var(--moon-dim);font-size:.9rem}

/* credits / work cards */
.credits-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;margin-top:60px}
.credit-card{
  border:1px solid var(--hairline);border-radius:14px;
  padding:0;position:relative;overflow:hidden;
  transition:border-color .35s,transform .35s;
  background:var(--ink-2);display:block;
}
.credit-card::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 80% 90% at 50% -20%, rgba(111,183,201,.12), transparent 65%);
  opacity:0;transition:opacity .4s;
}
.credit-card:hover{border-color:rgba(111,183,201,.45);transform:translateY(-4px)}
.credit-card:hover::after{opacity:1}
.credit-card .frame{position:relative;aspect-ratio:16/9;background:#05070d;border-bottom:1px solid var(--hairline);overflow:hidden}
.credit-card .frame canvas{position:absolute;inset:0;width:100%;height:100%}
.credit-card .frame .tcstrip{
  position:absolute;left:10px;bottom:8px;z-index:2;
  font-family:var(--mono);font-size:.54rem;letter-spacing:.18em;color:rgba(111,183,201,.8);
}
.credit-card .frame .badge{
  position:absolute;right:10px;top:8px;z-index:2;
  font-family:var(--mono);font-size:.52rem;letter-spacing:.18em;color:var(--copper);
}
.credit-card .body{padding:26px 30px 32px}
.credit-card .meta{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;color:var(--glacial);
  display:flex;justify-content:space-between;margin-bottom:18px;
}
.credit-card h3{font-family:var(--display);font-weight:400;font-size:1.55rem;letter-spacing:-.01em;margin-bottom:10px}
.credit-card p{color:var(--moon-dim);font-size:.9rem}
.credit-card .more{
  margin-top:18px;font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--glacial-bright);display:inline-flex;gap:8px;align-items:center;
}
.credits-foot{
  margin-top:40px;font-family:var(--mono);font-size:.64rem;
  letter-spacing:.18em;color:var(--steel);
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.credits-foot b{color:var(--copper);font-weight:500}

/* method — schedule */
.method{transition:background-color 1s ease;background:var(--ink-2);border-top:1px solid var(--hairline)}
.sched{margin-top:64px;border-top:1px solid var(--hairline)}
.sched-row{
  display:grid;grid-template-columns:140px minmax(0,3fr) minmax(0,6fr);
  gap:30px;align-items:baseline;
  padding:34px 10px;border-bottom:1px solid var(--hairline);
  transition:background .35s;
}
.sched-row:hover{background:var(--ink-3)}
.sched-row .tc{font-family:var(--mono);font-size:.66rem;letter-spacing:.18em;color:var(--copper)}
.sched-row h3{font-family:var(--display);font-weight:400;font-size:1.35rem}
.sched-row p{color:var(--moon-dim);font-size:.93rem;max-width:56ch}

/* ---------- BREAKDOWNS ---------- */
.bd{border-top:1px solid var(--hairline)}
.bd:first-of-type{border-top:none}
.bd-grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:64px;align-items:center}
.bd-grid.flip{direction:rtl}
.bd-grid.flip>*{direction:ltr}
.bd-viewport{
  position:relative;aspect-ratio:16/9;border:1px solid var(--hairline);border-radius:12px;overflow:hidden;
  background:#05070d;cursor:none;box-shadow:0 30px 80px -40px rgba(0,0,0,.9);
}
.bd-viewport canvas{position:absolute;inset:0;width:100%;height:100%}
.bd-viewport .vf{opacity:.6}
.bd-viewport .vf.tl{top:14px;left:14px}
.bd-viewport .vf.tr{top:14px;right:14px}
.bd-viewport .vf.bl{bottom:14px;left:14px}
.bd-viewport .vf.br{bottom:14px;right:14px}
.bd-viewport .hud{font-size:.55rem}
.bd-viewport .hud.tl{top:18px;left:50px}
.bd-viewport .hud.bl{bottom:16px;left:18px}
.bd-viewport .scrub-hint{
  position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:7;
  font-family:var(--mono);font-size:.54rem;letter-spacing:.22em;color:rgba(154,220,238,.6);
  pointer-events:none;text-transform:uppercase;
}
.bd-meta{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;color:var(--glacial);margin-bottom:18px;display:flex;gap:18px;flex-wrap:wrap}
.bd-meta .ty{color:var(--copper)}
.bd-copy h3{font-family:var(--display);font-weight:400;font-size:1.7rem;letter-spacing:-.01em;margin-bottom:16px}
.bd-copy p{color:var(--moon-dim);font-size:1rem;line-height:1.75;margin-bottom:16px}
.bd-copy p em{font-style:normal;color:var(--copper)}
.bd-tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.bd-tags span{
  font-family:var(--mono);font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--moon-dim);border:1px solid var(--hairline);border-radius:999px;padding:6px 14px;
}

/* ---------- REEL ---------- */
.reel-stage{padding-top:118px}
.reel-wrap{max-width:1320px;margin:0 auto;padding:0 44px}
.reel-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:34px;align-items:start}
.reel-viewport{
  position:relative;aspect-ratio:16/9;border:1px solid var(--hairline);border-radius:14px;overflow:hidden;
  background:#05070d;cursor:none;box-shadow:0 40px 120px -50px rgba(0,0,0,.95);
}
.reel-viewport canvas{position:absolute;inset:0;width:100%;height:100%}
.reel-side h2{font-size:1.15rem;font-family:var(--display);font-weight:400;margin-bottom:6px}
.reel-side .sub{font-family:var(--mono);font-size:.6rem;letter-spacing:.18em;color:var(--steel);text-transform:uppercase;margin-bottom:22px}
.shotlist{border-top:1px solid var(--hairline)}
.shot{
  display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;
  padding:14px 4px;border-bottom:1px solid var(--hairline);cursor:pointer;transition:background .3s;
}
.shot:hover{background:var(--ink-3)}
.shot.on{background:linear-gradient(90deg,rgba(111,183,201,.12),transparent)}
.shot .n{font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;color:var(--copper)}
.shot .t{font-size:.86rem;color:var(--moon)}
.shot .t span{display:block;font-family:var(--mono);font-size:.54rem;letter-spacing:.14em;color:var(--steel);text-transform:uppercase;margin-top:3px}
.shot .d{font-family:var(--mono);font-size:.56rem;color:var(--moon-dim)}
.reel-note{margin-top:26px;font-size:.82rem;color:var(--moon-dim);line-height:1.7;border-left:1px solid var(--hairline);padding-left:16px}

/* ---------- APPROACH (manifesto) ---------- */
.manifesto{border-top:1px solid var(--hairline)}
.manifesto-entry{
  display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:56px;
  padding:72px 0;border-bottom:1px solid var(--hairline);align-items:start;
}
.manifesto-entry .idx{font-family:var(--mono);font-size:.66rem;letter-spacing:.22em;color:var(--copper)}
.manifesto-entry h3{font-family:var(--display);font-weight:300;font-size:clamp(1.5rem,2.6vw,2.1rem);line-height:1.18;letter-spacing:-.01em;margin-top:14px}
.manifesto-entry h3 b{font-weight:500;color:var(--glacial-bright)}
.manifesto-entry .text p{color:var(--moon-dim);font-size:1.04rem;line-height:1.8;margin-bottom:18px}
.manifesto-entry .text p:last-child{margin-bottom:0}
.manifesto-entry .text em{font-style:normal;color:var(--copper)}
.pullquote{
  font-family:var(--display);font-weight:300;font-size:clamp(1.6rem,3.4vw,2.6rem);
  line-height:1.28;letter-spacing:-.01em;max-width:24ch;margin:0 auto;text-align:center;color:var(--moon);
}
.pullquote b{font-weight:500;color:var(--glacial-bright)}

/* ---------- STUDIO ---------- */
.studio-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:72px;align-items:start}
.principal{border:1px solid var(--hairline);border-radius:16px;overflow:hidden;background:var(--ink-2)}
.principal .frame{position:relative;aspect-ratio:4/3;background:#05070d}
.principal .frame canvas{position:absolute;inset:0;width:100%;height:100%}
.principal .frame .tag{position:absolute;left:14px;bottom:12px;font-family:var(--mono);font-size:.56rem;letter-spacing:.18em;color:rgba(111,183,201,.8)}
.principal .body{padding:28px 30px 32px}
.principal h3{font-family:var(--display);font-weight:400;font-size:1.5rem;margin-bottom:4px}
.principal .role{font-family:var(--mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--glacial);margin-bottom:18px}
.principal p{color:var(--moon-dim);font-size:.94rem;margin-bottom:14px}
.studio-prose h2{margin-bottom:26px}
.studio-prose p{color:var(--moon-dim);font-size:1.05rem;line-height:1.8;margin-bottom:20px;max-width:60ch}
.studio-prose p em{font-style:normal;color:var(--copper)}
.lineage{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px}
.lineage span{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;color:var(--moon-dim);
  border:1px solid var(--hairline);border-radius:999px;padding:9px 18px;background:var(--ink-2);
}
.lineage span b{color:var(--glacial-bright);font-weight:500}
.contact-rows{margin-top:50px;border-top:1px solid var(--hairline)}
.contact-row{display:grid;grid-template-columns:160px 1fr;gap:24px;padding:22px 4px;border-bottom:1px solid var(--hairline);align-items:baseline}
.contact-row .lbl{font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--steel)}
.contact-row .val{font-size:1rem;color:var(--moon)}
.contact-row .val a{color:var(--glacial-bright)}
.contact-row .val a:hover{text-decoration:underline}

/* ---------- real imagery in framed surfaces (cards + gallery) ---------- */
.credit-card .frame img,
.stillframe > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.credit-card:hover .frame img{transform:scale(1.04)}

/* plate treatment — grade real stills into the cyan/ink world so they sit
   with the procedural frames. Subtle: footage must still read as footage. */
.credit-card .frame img,
.gallery .shot img{filter:saturate(.92) contrast(1.03)}
.credit-card .frame::before{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(165deg,rgba(111,183,201,.10),transparent 45%,rgba(6,9,15,.34));
  mix-blend-mode:soft-light;
}
.gallery .shot::before{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:linear-gradient(165deg,rgba(111,183,201,.10),transparent 45%,rgba(6,9,15,.34));
  mix-blend-mode:soft-light;
}

/* selected-frames gallery — real shot stills in the HUD frame treatment */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:56px}
.shot{
  position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:10px;
  border:1px solid var(--hairline);background:#05070d;
}
.shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .65s ease}
.shot:hover img{transform:scale(1.05)}
.shot::after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 60px rgba(2,4,8,.5);pointer-events:none}
.shot figcaption{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  font-family:var(--mono);font-size:.55rem;letter-spacing:.16em;text-transform:uppercase;color:var(--moon-dim);
  padding:26px 12px 9px;background:linear-gradient(0deg,rgba(4,7,13,.9),transparent);
}
.shot figcaption b{color:var(--glacial-bright);font-weight:500}
.gallery-note{margin-top:26px;font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;color:var(--steel)}
.award-badge{
  display:inline-block;margin-top:30px;max-width:360px;width:100%;
  border:1px solid var(--hairline);border-radius:10px;overflow:hidden;background:var(--ink-2);
  transition:border-color .35s,transform .35s;
}
.award-badge:hover{border-color:rgba(201,141,87,.5);transform:translateY(-2px)}
.award-badge img{width:100%;height:auto;display:block}
@media(max-width:760px){.gallery{grid-template-columns:1fr 1fr;gap:10px}}

/* empty cell in the services grid: a dark blend cell, not the pale grid background showing through */
.svc-fill{background:var(--ink-2)}
/* the four engagement shapes read as a full 2-by-2, not 3+1 with an exposed cell (ruled 08-12) */
@media(min-width:761px){.services-grid.shapes-grid{grid-template-columns:repeat(2,1fr)}}
/* day-state legibility for the hero copy — invisible against the night render */
.hero-content h1,.hero-content .hero-sub,.hero-content .hero-eyebrow{text-shadow:0 1px 3px rgba(6,9,15,.38),0 2px 20px rgba(6,9,15,.34)}

/* gallery → click a frame to magnify it (lightbox viewer) */
.gallery .shot{cursor:zoom-in}
.lightbox{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(4,7,13,.94);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:6vh 6vw}
.lightbox.open{display:flex}
.lightbox figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:14px;max-width:94vw}
.lightbox img{max-width:94vw;max-height:78vh;width:auto;height:auto;border:1px solid var(--hairline);border-radius:8px;box-shadow:0 40px 120px -40px #000;background:#05070d}
.lightbox figcaption{font-family:var(--mono);font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:var(--moon-dim);text-align:center}
.lightbox figcaption b{color:var(--glacial-bright);font-weight:500}
.lb-close,.lb-nav{position:absolute;background:rgba(6,9,15,.6);border:1px solid var(--hairline);color:var(--moon);border-radius:999px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .25s,border-color .25s;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.lb-close{top:24px;right:24px;width:44px;height:44px;font-size:1.1rem}
.lb-nav{top:50%;transform:translateY(-50%);width:52px;height:52px;font-size:1.7rem;line-height:0}
.lb-prev{left:24px}.lb-next{right:24px}
.lb-close:hover,.lb-nav:hover{color:var(--glacial-bright);border-color:var(--glacial)}
.lb-count{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:.6rem;letter-spacing:.2em;color:var(--steel)}
@media(max-width:760px){.lb-nav{width:42px;height:42px;font-size:1.4rem}.lb-prev{left:8px}.lb-next{right:8px}.lb-close{top:12px;right:12px}}

/* ---------- static shot frames (procedural stills) ---------- */
.cvStill{position:absolute;inset:0;width:100%;height:100%;display:block}
.stillframe{position:relative;overflow:hidden;background:#05070d}

/* ---------- SEASON STRIP (poster thumbs) ---------- */
.season-strip{display:flex;flex-wrap:wrap;gap:14px;margin-top:30px}
.season-strip img{
  height:120px;width:auto;border-radius:8px;
  border:1px solid var(--hairline);background:var(--ink-2);
  object-fit:cover;
  transition:transform .35s,border-color .35s,box-shadow .35s;
}
.season-strip img:hover{
  transform:translateY(-3px);border-color:rgba(111,183,201,.45);
  box-shadow:0 18px 40px -22px rgba(0,0,0,.9);
}

/* ---------- SERVICES GRID (icon-less discipline list) ---------- */
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:56px;background:var(--hairline);border:1px solid var(--hairline)}
.service{
  background:var(--ink-2);padding:30px 28px 34px;
  border-top:1px solid var(--glacial);
  transition:background .35s;
}
.service:hover{background:var(--ink-3)}
.service .k{
  font-family:var(--mono);font-size:.58rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--copper);display:block;margin-bottom:14px;
}
.service h3{font-family:var(--display);font-weight:400;font-size:1.22rem;letter-spacing:-.005em;margin-bottom:10px}
.service p{color:var(--moon-dim);font-size:.9rem;line-height:1.7}

/* ---------- FAQ ---------- */
.faq{margin-top:50px;border-top:1px solid var(--hairline)}
.faq-item{padding:30px 4px;border-bottom:1px solid var(--hairline)}
.faq-item .q{font-family:var(--display);font-weight:400;font-size:1.22rem;letter-spacing:-.005em;margin-bottom:12px}
.faq-item .a{color:var(--moon-dim);font-size:.98rem;line-height:1.8;max-width:62ch}
.faq-item .a em{font-style:normal;color:var(--copper)}

/* ---------- PRICING NOTE (calm mono line) ---------- */
.pricing-note{
  margin-top:30px;font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;
  color:var(--steel);line-height:1.8;
}
.pricing-note b{color:var(--glacial-bright);font-weight:500}

/* ---------- TESTIMONIAL (pull-quote) ---------- */
.testimonial{max-width:46ch;margin:0 auto;text-align:center}
.testimonial q{
  display:block;quotes:none;
  font-family:var(--display);font-weight:300;
  font-size:clamp(1.5rem,3.2vw,2.4rem);line-height:1.32;letter-spacing:-.01em;color:var(--moon);
}
.testimonial q b{font-weight:500;color:var(--glacial-bright)}
.testimonial cite{
  display:block;margin-top:26px;font-style:normal;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--copper);
}

/* ---------- RANGE LANE (slim "also:" credit row) ---------- */
.range-lane{
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  margin-top:30px;padding:16px 20px;
  border:1px solid var(--hairline);border-radius:12px;background:var(--ink-2);
}
.range-lane img{
  height:46px;width:auto;border-radius:6px;border:1px solid var(--hairline);
  object-fit:cover;flex:none;
}
.range-lane .lbl{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.16em;color:var(--moon-dim);line-height:1.7;
}
.range-lane .lbl b{color:var(--glacial-bright);font-weight:500}

/* ---------- CTA ---------- */
.cta{
  text-align:center;
  border-top:1px solid var(--hairline);
  padding-top:140px;padding-bottom:150px;
  background:
    radial-gradient(ellipse 48% 44% at 50% 124%, rgba(201,141,87,.12), transparent 72%),
    radial-gradient(ellipse 62% 52% at 50% 120%, rgba(111,183,201,.13), transparent 70%),
    var(--ink);
}
.cta .eyebrow{justify-content:center}
.cta .eyebrow::after{content:'';width:34px;height:1px;background:var(--glacial)}
.cta h2{max-width:20ch;margin:24px auto 0}
.cta p{margin:26px auto 0;max-width:46ch;color:var(--moon-dim)}
.cta .btn-primary{display:inline-block;margin-top:46px}
.cta .quiet{
  display:block;margin-top:28px;font-family:var(--mono);
  font-size:.62rem;letter-spacing:.22em;color:var(--steel);
}

/* ---------- FOOTER ---------- */
footer{
  border-top:1px solid var(--hairline);
  padding:42px 44px;
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:22px;
}
footer .brand-logo{height:18px}
footer .flinks{display:flex;gap:26px;flex-wrap:wrap}
footer .flinks a{font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--moon-dim);transition:color .25s}
footer .flinks a:hover{color:var(--glacial-bright)}
footer .fine{font-family:var(--mono);font-size:.58rem;letter-spacing:.16em;color:var(--steel)}

/* ---------- RESPONSIVE ---------- */
/* the full nav (5 links + a long CTA) only fits comfortably above ~1000px;
   below that, collapse to the hamburger so it never crowds the logo. */
@media(max-width:1000px){
  .nav-links{display:none}
  .menu-btn{display:block}
}
@media(max-width:980px){
  .thesis-grid,.studio-grid,.bd-grid,.manifesto-entry{grid-template-columns:1fr;gap:44px}
  .bd-grid.flip{direction:ltr}
  .reel-layout{grid-template-columns:1fr;gap:26px}
  .rail-track{grid-template-columns:repeat(2,1fr);gap:46px 30px}
  .services-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
  .nav-links{display:none}
  .menu-btn{display:block}
  nav{padding:14px 20px}
  section{padding:84px 20px}
  .hero{cursor:auto}
  .hero-content{padding:0 20px 12vh}
  .page-hero-inner{padding:0 20px 42px}
  .reel-wrap{padding:0 20px}
  .hud.tr{display:none}
  .vf.tl,.hud.tl{left:16px}
  .vf.tr{right:16px}
  .vf.bl,.hud.bl{left:16px}
  .vf.br{right:16px}
  /* redock the control into the top band so it never floats over the
     bottom-anchored hero copy; cap width to the safe gutter. */
  .tod{top:104px;right:16px;left:auto;bottom:auto;width:min(228px,calc(100vw - 32px));transform-origin:top right}
  /* collapsed (the mobile default, ruled 08-12): the title chip docks into the
     clear band under the CTAs so it never sits on the headline; expanding it
     returns the full panel to the top dock. */
  .tod.collapsed-all{top:auto;bottom:10px;transform-origin:bottom right}
  /* the bottom viewfinder chrome (TC + corner brackets) yields its band to the
     collapsed chip on phones — decorative only, and the chip needs the room */
  #hero .vf.bl,#hero .vf.br,#hero .hud.bl{display:none}
  .hero-content{padding:0 20px 11vh;max-width:none}
  .thesis-grid,.studio-grid{gap:40px}
  .rail-track{grid-template-columns:1fr;gap:46px}
  .rail-track::before{display:none}
  .credits-grid{grid-template-columns:1fr}
  .sched-row{grid-template-columns:1fr;gap:8px}
  .contact-row{grid-template-columns:1fr;gap:6px}
  footer{padding:32px 20px}
  .bd-viewport,.reel-viewport{cursor:auto}
  .services-grid{grid-template-columns:1fr;gap:1px}
  .season-strip img{height:96px}
}
/* very small phones: shrink the control so it stays in the top band and the
   hero copy below it never gets covered. */
@media(max-width:420px){
  .tod{transform:scale(.86)}
}
/* ---------- P2: film grain · halation · ambient-sound chip ---------- */
/* A faint moving film-grain laid over the whole page — the "shot on something" texture a
   final-pixel studio should wear. pointer-events:none so it never blocks interaction; the
   global reduced-motion rule below freezes the shimmer to a static grain. */
.fx-grain{
  position:fixed; inset:0; z-index:92; pointer-events:none;
  opacity:.05; mix-blend-mode:overlay; will-change:background-position;
  background-size:180px 180px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grainshift 1.2s steps(6) infinite;
}
@keyframes grainshift{
  0%{background-position:0 0} 20%{background-position:-16% 6%} 40%{background-position:8% -14%}
  60%{background-position:-10% 10%} 80%{background-position:14% 4%} 100%{background-position:0 0}
}
/* halation: a faint bloom on the brightest accent text, so glows read like light, not ink */
.hero h1 b,.page-hero h1 b{text-shadow:0 2px 36px rgba(0,0,0,.7), 0 0 26px rgba(154,220,238,.22)}
.cta h2 b{text-shadow:0 0 24px rgba(154,220,238,.18)}

/* opt-in ambient-sound toggle (home hero only; injected by the engine, off by default) */
.fx-sound{
  position:absolute; z-index:8; top:56px; left:74px;
  display:inline-flex; align-items:center; gap:7px; cursor:pointer;
  font-family:var(--mono); font-size:.6rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--steel); background:rgba(6,9,15,.4); border:1px solid var(--hairline);
  border-radius:999px; padding:6px 13px;
  transition:color .3s,border-color .3s,box-shadow .3s;
}
.fx-sound:hover{color:var(--moon-dim)}
.fx-sound.on{color:var(--glacial-bright); border-color:var(--glacial); box-shadow:0 0 12px rgba(111,183,201,.3)}
.fx-sound .ic{font-size:.82rem; line-height:0}
@media(max-width:760px){ .fx-sound{top:54px; left:16px} }

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .hero-eyebrow,.hero h1,.hero-sub,.hero-actions{opacity:1;transform:none}
  .reveal,.reveal[style*="--i"]{opacity:1;transform:none;transition-delay:0s!important}
}
