/* ============================================================
   SIGNAL / ON AIR — Television Studies · Project 1
   A broadcast ratings monitor: CRT phosphor cyan + Shanghai neon
   amber on deep monitor blue. Ten different illustrated layouts,
   70 clickable detail panels, full-scene interaction chrome.
   ============================================================ */
:root{
  --bg0:#06111A; --bg1:#0B1822; --bg2:#102532; --bg3:#16303E;
  --panel:#0F2431; --panel2:#132C3A;
  --line:#22404E; --line2:#33606E;
  --cyan:#57E3C4; --cyan2:#2E9FB0; --cyan-dim:#3C8C88;
  --amber:#F0B65C; --amber2:#C98F3E; --amber-dim:#8A6C38;
  --red:#FF6B5E;
  --ink:#EAF5F7; --txt:#BDD3DC; --mut:#809CA8; --mut2:#5E7A87;
  --serif:Georgia,"Times New Roman",serif;
  --sans:Arial,Helvetica,"Segoe UI",sans-serif;
  --mono:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;
  --top:50px; --bottom:58px;
  --glow-cyan:0 0 18px rgba(87,227,196,.35);
  --glow-amber:0 0 18px rgba(240,182,92,.32);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;height:100%}
body{
  background:var(--bg0); color:var(--txt);
  font-family:var(--sans); font-size:17px; line-height:1.5;
  -webkit-font-smoothing:antialiased; overflow:hidden;
}
button{font-family:inherit;cursor:pointer}
[hidden]{display:none !important}
img{display:block}
.ic{width:1em;height:1em;display:inline-block;vertical-align:-.12em;flex:none}

/* ================= AMBIENT / PARALLAX DEPTH ================= */
.bg{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:
  radial-gradient(ellipse 90% 70% at 50% -10%, #12303C 0%, transparent 60%),
  radial-gradient(ellipse 70% 60% at 100% 110%, #241A0F 0%, transparent 55%),
  linear-gradient(180deg,var(--bg0),#050D14)}
.bg-layer{position:absolute;inset:-8%;will-change:transform}
.bg-grid{
  background-image:linear-gradient(rgba(87,227,196,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(87,227,196,.045) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 75% 65% at 50% 45%,#000 30%,transparent 85%);
          mask-image:radial-gradient(ellipse 75% 65% at 50% 45%,#000 30%,transparent 85%);
}
.bg-glow{
  background:radial-gradient(circle 340px at 22% 28%,rgba(87,227,196,.11),transparent 70%),
             radial-gradient(circle 420px at 82% 72%,rgba(240,182,92,.10),transparent 70%);
  filter:blur(6px);
}
.bg-dots{
  background-image:radial-gradient(rgba(160,215,220,.28) 1px,transparent 1px);
  background-size:30px 30px; opacity:.32;
  -webkit-mask-image:radial-gradient(ellipse 60% 60% at 50% 50%,#000,transparent 80%);
          mask-image:radial-gradient(ellipse 60% 60% at 50% 50%,#000,transparent 80%);
}
.bg-wave{
  background:
    repeating-linear-gradient(90deg,transparent 0 118px,rgba(87,227,196,.05) 118px 119px),
    linear-gradient(180deg,transparent 78%,rgba(87,227,196,.05) 100%);
  opacity:.6;
}
/* CRT overlay */
.crt{position:fixed;inset:0;z-index:60;pointer-events:none}
.crt-scan{
  position:absolute;inset:0;opacity:.5;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.16) 2px 4px);
  animation:scanRoll 8s linear infinite;
}
@keyframes scanRoll{from{background-position-y:0}to{background-position-y:100px}}
.crt-grain{
  position:absolute;inset:-50%;opacity:.06;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain .5s steps(3) infinite;
}
@keyframes grain{0%{transform:translate(0,0)}33%{transform:translate(-3%,2%)}66%{transform:translate(2%,-3%)}100%{transform:translate(0,0)}}
.crt-vig{position:absolute;inset:0;
  box-shadow:inset 0 0 160px 30px rgba(0,0,0,.55),inset 0 0 40px rgba(0,0,0,.4)}
body.no-crt .crt{opacity:0}
.crt{transition:opacity .3s ease}

.cursor-spot{
  position:fixed;width:520px;height:520px;border-radius:50%;left:0;top:0;
  transform:translate(-50%,-50%);pointer-events:none;z-index:2;opacity:0;
  background:radial-gradient(circle,rgba(87,227,196,.10) 0%,rgba(87,227,196,.04) 35%,transparent 70%);
  transition:opacity .4s ease;will-change:left,top;mix-blend-mode:screen;
}
body.spot-on .cursor-spot{opacity:1}
body.no-spot .cursor-spot{display:none}

/* ================= BOOT ================= */
.boot{
  position:fixed;inset:0;z-index:200;background:#040B11;
  display:flex;align-items:center;justify-content:center;
  transition:opacity .55s ease,visibility .55s;
}
body:not(.booting) .boot{opacity:0;visibility:hidden;pointer-events:none}
.boot-inner{width:min(580px,88vw);font-family:var(--mono)}
.boot-mark{display:flex;align-items:center;gap:.7rem;font-size:1.7rem;font-weight:800;
  letter-spacing:.16em;color:var(--cyan);text-shadow:var(--glow-cyan)}
.boot-mark i{color:var(--amber);font-style:normal;margin:0 .15em}
.bm-tv{font-size:1.3rem;color:var(--amber);animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:.25}}
.boot-sub{color:var(--mut);font-size:.66rem;letter-spacing:.07em;margin:.5rem 0 1.6rem;white-space:nowrap}
.boot-log{font-family:var(--mono);font-size:.86rem;line-height:2;color:var(--cyan);
  min-height:11.5em;margin:0;white-space:pre-wrap;text-shadow:0 0 8px rgba(87,227,196,.35)}
.boot-log .ok{color:var(--amber)}
.boot-bar{height:3px;background:#12232C;margin:1.4rem 0 1.2rem;overflow:hidden}
.boot-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan2),var(--cyan),var(--amber));
  box-shadow:var(--glow-cyan);transition:width .18s linear}
.boot-foot{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  font-size:.7rem;letter-spacing:.1em;color:var(--mut2)}
.boot-foot button{background:transparent;border:1px solid var(--line2);color:var(--cyan);
  font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;padding:.6rem 1rem;
  border-radius:2px;transition:all .2s}
.boot-foot button:hover{background:var(--cyan);color:#04121A;box-shadow:var(--glow-cyan)}

/* ================= CHANNEL SWITCH ================= */
.switch{position:fixed;inset:0;z-index:70;pointer-events:none;opacity:0;visibility:hidden}
.switch.play{animation:swFlash .5s ease both}
@keyframes swFlash{0%{opacity:0;visibility:visible}12%{opacity:1}55%{opacity:1}100%{opacity:0;visibility:hidden}}
.sw-bars{position:absolute;inset:0;display:flex;opacity:.9}
.sw-bars i{flex:1;transform:scaleY(0);animation:barDrop .5s ease both}
.sw-bars i:nth-child(1){background:#c9d3d0}.sw-bars i:nth-child(2){background:#d8c179}
.sw-bars i:nth-child(3){background:#5fb9b9}.sw-bars i:nth-child(4){background:#6fae7a}
.sw-bars i:nth-child(5){background:#b478ac}.sw-bars i:nth-child(6){background:#c46b62}
.sw-bars i:nth-child(7){background:#5f76b8}
@keyframes barDrop{0%{transform:scaleY(0)}25%{transform:scaleY(1)}75%{transform:scaleY(1)}100%{transform:scaleY(0)}}
.sw-noise{position:absolute;inset:0;opacity:.32;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.sw-ch{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  font-family:var(--mono);font-size:2.4rem;font-weight:800;letter-spacing:.14em;color:#04121A;
  background:rgba(234,245,247,.92);padding:.5rem 1.4rem;border-radius:2px;white-space:nowrap}
.sw-ch span{display:block;font-size:.62rem;letter-spacing:.24em;color:#26424A;text-align:center;margin-top:.25rem}
/* adjacent channel change = subtle, jump = full colour bars */
.switch.little .sw-bars{opacity:.18}
.switch.little .sw-noise{opacity:.14}
.switch.little .sw-ch{background:rgba(11,24,34,.9);color:var(--cyan);
  border:1px solid var(--cyan2);box-shadow:0 0 30px rgba(87,227,196,.4);font-size:1.5rem}
.switch.little .sw-ch span{color:var(--mut)}
.switch.little.play{animation:swFlashLittle .38s ease both}
@keyframes swFlashLittle{0%{opacity:0;visibility:visible}20%{opacity:.85}70%{opacity:.85}100%{opacity:0;visibility:hidden}}

/* ================= ON-AIR BAR ================= */
.onair{
  position:fixed;top:0;left:0;right:0;height:var(--top);z-index:40;
  display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;
  background:linear-gradient(180deg,rgba(10,24,34,.96),rgba(8,20,29,.88));
  border-bottom:1px solid var(--line);backdrop-filter:blur(6px);
}
.oa-left,.oa-right{display:flex;align-items:center;gap:1.1rem}
.oa-rec{display:flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.74rem;
  letter-spacing:.14em;color:var(--red)}
.oa-rec i{width:9px;height:9px;border-radius:50%;background:var(--red);
  box-shadow:0 0 12px var(--red);animation:recPulse 1.4s ease-in-out infinite}
@keyframes recPulse{0%,100%{opacity:1;box-shadow:0 0 12px var(--red)}50%{opacity:.35;box-shadow:0 0 4px var(--red)}}
.oa-rec b{font-weight:800}
.oa-brand{font-size:.7rem;letter-spacing:.12em;color:var(--mut);font-weight:700}
.oa-brand em{color:var(--amber);font-style:normal;margin:0 .4em}
.oa-live{font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;color:var(--cyan2)}
.oa-signal{display:flex;align-items:flex-end;gap:2px;height:14px}
.oa-signal i{width:3px;background:var(--cyan);opacity:.85;border-radius:1px}
.oa-signal i:nth-child(1){height:4px}.oa-signal i:nth-child(2){height:7px}
.oa-signal i:nth-child(3){height:10px}.oa-signal i:nth-child(4){height:14px}
.oa-signal i:nth-child(4){animation:sigFlick 2.2s ease-in-out infinite}
@keyframes sigFlick{0%,100%{opacity:.85}47%{opacity:.25}}
.oa-tc,.oa-ch{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;color:var(--mut)}
.oa-tc b{color:var(--txt);font-weight:600}
.oa-ch{padding-left:1rem;border-left:1px solid var(--line)}
.oa-ch b{color:var(--amber);font-size:1rem;font-weight:800}

/* ================= TOOLBAR ================= */
.toolbar{
  position:fixed;left:14px;top:50%;transform:translateY(-50%);z-index:42;
  display:flex;flex-direction:column;gap:7px;
}
.toolbar button{
  width:38px;height:38px;padding:0;display:flex;align-items:center;justify-content:center;
  font-size:1.15rem;color:var(--mut);background:rgba(15,36,49,.82);
  border:1px solid var(--line);border-radius:3px;transition:all .18s ease;
  backdrop-filter:blur(4px);
}
.toolbar button .ic{width:18px;height:18px}
.toolbar button:hover{color:var(--cyan);border-color:var(--cyan2);
  box-shadow:var(--glow-cyan);transform:translateX(2px)}
.toolbar button.on{color:#04121A;background:var(--cyan);border-color:var(--cyan)}

/* ================= CHANNEL RAIL ================= */
.rail{
  position:fixed;right:12px;top:50%;transform:translateY(-50%);z-index:41;
  display:flex;flex-direction:column;gap:4px;
}
.rail button{
  position:relative;display:flex;align-items:center;gap:.5rem;
  min-width:30px;height:27px;padding:0 .5rem;border:1px solid var(--line);
  background:rgba(15,36,49,.72);color:var(--mut);font-family:var(--mono);
  font-size:.66rem;font-weight:700;letter-spacing:.04em;border-radius:2px;
  transition:all .18s ease;text-align:left;white-space:nowrap;backdrop-filter:blur(3px);
}
.rail button .rn{color:var(--cyan-dim)}
.rail button .rl{max-width:0;overflow:hidden;opacity:0;transition:all .22s ease;color:var(--txt)}
.rail button:hover{border-color:var(--cyan2);color:var(--cyan)}
.rail button:hover .rl,.rail button.on .rl{max-width:120px;opacity:1;margin-left:.1rem}
.rail button.on{background:var(--cyan);border-color:var(--cyan);color:#04121A;box-shadow:var(--glow-cyan)}
.rail button.on .rn{color:#04121A}
.rail button.on .rl{color:#06222A;font-weight:700}
.rail button::after{content:"";position:absolute;right:-1px;top:50%;transform:translateY(-50%);
  width:0;height:0;border-style:solid;border-width:0;transition:all .2s}
.rail button.on::after{border-width:5px 7px 5px 0;border-color:transparent var(--amber) transparent transparent;right:100%}

/* ================= TRANSPORT CONTROLS ================= */
.controls{
  position:fixed;bottom:0;left:0;right:0;height:var(--bottom);z-index:40;
  display:flex;align-items:center;justify-content:space-between;padding:0 1.5rem;
  background:linear-gradient(0deg,rgba(10,24,34,.97),rgba(8,20,29,.86));
  border-top:1px solid var(--line);backdrop-filter:blur(6px);
}
.tp-btn{
  border:1px solid var(--line2);background:rgba(19,44,58,.8);color:var(--cyan);
  font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:.08em;
  padding:.5rem 1.05rem;border-radius:2px;transition:all .18s ease;
}
.tp-btn:hover{background:var(--cyan);color:#04121A;border-color:var(--cyan);box-shadow:var(--glow-cyan)}
.tp-btn:disabled{opacity:.28;cursor:default}
.tp-btn:disabled:hover{background:rgba(19,44,58,.8);color:var(--cyan);border-color:var(--line2);box-shadow:none}
.pager{display:flex;align-items:baseline;gap:.55rem;font-family:var(--mono)}
.pg-ch{font-size:.7rem;color:var(--mut);letter-spacing:.1em}
.pager b{font-size:1.25rem;color:var(--amber);font-weight:800;letter-spacing:.05em}
.pg-tot{color:var(--mut2);font-size:.78rem}
.pager em{font-style:normal;font-size:.78rem;letter-spacing:.06em;color:var(--txt);margin-left:.7rem}
.wheel-hint{font-size:.62rem;letter-spacing:.12em;color:var(--cyan2);font-weight:700;
  border:1px solid var(--line);border-radius:2px;padding:.2rem .5rem;margin-left:.4rem}
.kbd-hint{font-size:.6rem;letter-spacing:.08em;color:var(--mut2);margin-left:.6rem}
.kbd-hint kbd{font-family:var(--mono);border:1px solid var(--line2);border-radius:2px;
  padding:.05rem .3rem;color:var(--amber)}
.progress{position:absolute;top:-2px;left:0;right:0;height:2px;background:rgba(34,64,78,.5)}
.progress i{display:block;height:100%;width:10%;
  background:linear-gradient(90deg,var(--cyan2),var(--cyan),var(--amber));
  box-shadow:0 0 10px rgba(87,227,196,.6);transition:width .35s ease}

/* ================= SLIDES ================= */
#deck{position:fixed;top:var(--top);left:0;right:0;bottom:var(--bottom);overflow:hidden;z-index:5}
.slide{position:absolute;inset:0;display:none;overflow-y:auto;overflow-x:hidden;
  padding:1.3rem 4.2rem 1rem 4.4rem}
.slide.active{display:flex;flex-direction:column;animation:fade .35s ease both}
#deck.dir-down .slide.active{animation:slideDown .4s cubic-bezier(.2,.7,.2,1) both}
#deck.dir-up   .slide.active{animation:slideUp   .4s cubic-bezier(.2,.7,.2,1) both}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes slideDown{from{opacity:0;transform:translateY(30px) scale(.99)}to{opacity:1;transform:none}}
@keyframes slideUp{from{opacity:0;transform:translateY(-30px) scale(.99)}to{opacity:1;transform:none}}

.wrap{width:100%;max-width:1180px;margin:0 auto;flex:1 1 auto;display:flex;
  flex-direction:column;min-height:0;position:relative}

/* per-channel HUD label + annotation button (injected by app.js) */
.ch-hud{
  position:absolute;top:-.35rem;right:0;display:flex;align-items:center;gap:.55rem;
  font-family:var(--mono);z-index:3;
}
.ch-hud .hud-ch{font-size:.7rem;letter-spacing:.14em;color:var(--mut2)}
.ch-hud .hud-ch b{color:var(--amber)}
.ch-hud .hud-tag{font-size:.62rem;letter-spacing:.12em;color:var(--cyan2);
  border:1px solid var(--line);padding:.15rem .45rem;border-radius:2px}
.ch-hud .hud-annot{display:flex;align-items:center;gap:.3rem;font-size:.62rem;
  letter-spacing:.08em;color:var(--mut);background:rgba(19,44,58,.7);
  border:1px solid var(--line);border-radius:2px;padding:.2rem .45rem;transition:all .18s}
.ch-hud .hud-annot:hover{color:var(--cyan);border-color:var(--cyan2);box-shadow:var(--glow-cyan)}
.ch-hud .hud-annot .ic{width:12px;height:12px}

.page-head{margin-bottom:.75rem;flex:none;position:relative}
.eyebrow{margin:0 0 .4rem;font-family:var(--mono);font-size:.74rem;font-weight:700;
  letter-spacing:.2em;text-transform:uppercase;color:var(--cyan)}
.eyebrow span{color:var(--amber);margin:0 .3em}
h1,h2{font-family:var(--serif);font-weight:700;color:var(--ink);margin:0;line-height:1.1;
  text-shadow:0 2px 18px rgba(0,0,0,.5)}
h1{font-size:clamp(2.2rem,3.6vw,3.35rem)}
h2{font-size:clamp(1.7rem,2.45vw,2.35rem)}
.rules{display:flex;align-items:center;margin-top:.65rem;height:4px}
.rules i{display:block;width:100px;height:3px;background:var(--cyan);box-shadow:var(--glow-cyan)}
.rules b{display:block;flex:1;height:1px;margin-left:.5rem;
  background:linear-gradient(90deg,var(--line2),transparent)}
.sub{font-size:1.08rem;line-height:1.45;color:var(--txt);margin:.65rem 0 0}
.sub em{font-style:normal;font-weight:700;color:var(--amber)}

.canvas{flex:1 1 auto;min-height:0;margin-bottom:.75rem;perspective:1400px}

/* ================= CLICKABLE KEY BLOCKS ================= */
.hit{
  position:relative;display:flex;flex-direction:column;align-items:flex-start;
  justify-content:flex-start;text-align:left;margin:0;min-height:0;overflow:hidden;
  background:linear-gradient(155deg,rgba(19,44,58,.92),rgba(12,30,41,.92));
  border:1px solid var(--line);border-left:3px solid var(--cyan2);border-radius:3px;
  padding:.55rem .85rem 1.3rem;color:var(--txt);
  transform-style:preserve-3d;will-change:transform;
  transition:background .2s,border-color .2s,box-shadow .25s,transform .12s ease-out;
}
.hit::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;
  background:linear-gradient(120deg,transparent 40%,rgba(87,227,196,.10) 50%,transparent 60%);
  background-size:250% 100%;transition:opacity .3s}
.hit:hover{background:linear-gradient(155deg,rgba(23,54,68,.96),rgba(15,37,49,.96));
  border-color:var(--cyan2);border-left-color:var(--cyan);
  box-shadow:0 10px 28px rgba(0,0,0,.45),0 0 20px rgba(87,227,196,.18),inset 0 0 22px rgba(87,227,196,.06)}
.hit:hover::before{opacity:1;animation:sheen 1.1s ease}
@keyframes sheen{from{background-position:200% 0}to{background-position:-60% 0}}
.hit.gold{background:linear-gradient(155deg,rgba(48,38,20,.92),rgba(28,26,17,.92));
  border-left-color:var(--amber)}
.hit.gold:hover{border-color:var(--amber);box-shadow:0 10px 28px rgba(0,0,0,.45),0 0 22px rgba(240,182,92,.22)}
.hit .h-n{font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:.15em;
  color:var(--cyan);text-transform:uppercase;margin:0 0 .24rem;flex:none}
.hit.gold .h-n{color:var(--amber)}
.hit .h-k{font-family:var(--serif);font-weight:700;color:var(--ink);
  font-size:clamp(1.02rem,1.42vw,1.4rem);line-height:1.16;margin:0 0 .2rem;flex:none}
.hit .h-s{font-size:.83rem;line-height:1.35;color:var(--txt);margin:0}
.hit .op{position:absolute;right:.7rem;bottom:.4rem;font-family:var(--mono);
  font-size:.58rem;font-weight:700;letter-spacing:.1em;color:var(--cyan2);
  text-transform:uppercase;white-space:nowrap;transition:color .2s}
.hit:hover .op{color:var(--cyan)}
.hit.gold .op{color:var(--amber2)}
.hit.slim{padding:.46rem .7rem 1.0rem}
.hit.slim .h-k{font-size:clamp(.94rem,1.14vw,1.1rem)}
.hit.slim .h-s{font-size:.75rem}
.hit.slim .op{font-size:.7rem;bottom:.26rem}
.hit.stat .h-k{font-size:clamp(1.65rem,2.4vw,2.45rem);line-height:1.02}
/* injected per-card icon */
.h-ic{position:absolute;top:.5rem;right:.6rem;font-size:1.05rem;color:var(--cyan);opacity:.32;
  transition:all .25s;pointer-events:none}
.h-ic .ic{width:1.05em;height:1.05em}
.hit:hover .h-ic{opacity:1;transform:translateZ(24px) rotate(-6deg);filter:drop-shadow(0 0 6px rgba(87,227,196,.6))}
.hit.gold .h-ic{color:var(--amber)}
/* lift the text on 3D tilt for depth */
.hit > span{transform:translateZ(1px)}

/* ================= FIGURES / PHOTOS ================= */
.ph{position:relative;margin:0;overflow:hidden;min-height:0;
  background:var(--bg1);border:1px solid var(--line);border-radius:3px}
.ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease,filter .4s}
.ph::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-linear-gradient(180deg,transparent 0 3px,rgba(0,0,0,.10) 3px 4px);
  mix-blend-mode:multiply;opacity:.7}
.ph:hover img{transform:scale(1.045)}
.ph figcaption{
  position:absolute;left:0;right:0;bottom:0;z-index:2;padding:.5rem .75rem;
  font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink);
  background:linear-gradient(180deg,rgba(6,17,26,0),rgba(6,17,26,.9) 60%);
}
.ph figcaption span{color:var(--amber);margin:0 .35em}
.zoom-badge{
  position:absolute;top:.55rem;right:.55rem;z-index:3;display:flex;align-items:center;gap:.3rem;
  font-family:var(--mono);font-size:.58rem;letter-spacing:.08em;color:var(--cyan);
  background:rgba(6,17,26,.78);border:1px solid var(--cyan2);border-radius:2px;
  padding:.25rem .45rem;opacity:0;transform:translateY(-4px);transition:all .2s;cursor:zoom-in;
}
.zoom-badge .ic{width:12px;height:12px}
.ph:hover .zoom-badge{opacity:1;transform:none}
.ph.chart{display:flex;flex-direction:column;background:var(--bg1)}
.ph.chart img{flex:1 1 auto;min-height:0;height:auto;object-fit:contain;background:var(--bg1)}
.ph.chart figcaption{position:static;flex:none;background:var(--bg2);color:var(--mut);
  border-top:1px solid var(--line);padding:.4rem .8rem}
.side-label{font-family:var(--mono);font-size:.64rem;font-weight:700;letter-spacing:.15em;
  color:var(--amber);text-transform:uppercase;margin:0 0 .5rem;flex:none}
.side-label span{color:var(--cyan2);margin:0 .3em}

/* ================= 10 LAYOUTS (structure kept from v4) ================= */
.cv1{display:grid;grid-template-columns:1.32fr .82fr;gap:1rem}
.c1-chips{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:1fr;gap:.65rem;min-height:0}
.c1-a{grid-column:span 4}.c1-b{grid-column:span 2}
.c1-c{grid-column:span 2}.c1-d{grid-column:span 4}
.c1-e{grid-column:span 3}.c1-f{grid-column:span 3}
.cv1 .hit.chip{justify-content:center;padding-left:1.05rem}
.c1-photo{min-height:0}

.cv2{display:grid;grid-template-columns:1.02fr 1fr;gap:1rem}
.c2-left{display:flex;flex-direction:column;gap:.6rem;min-height:0}
.c2-photo{flex:1 1 auto;min-height:0}
.c2-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:.55rem;flex:none}
.c2-trio .hit{min-height:92px}
.c2-right{display:flex;flex-direction:column;gap:.55rem;min-height:0}
.c2-m1{flex:1.15}.c2-m2{flex:1}.c2-m3{flex:1.12}
.cv2 .hit.metric{justify-content:center;padding-left:1.15rem}
.cv2 .hit.metric .h-k{font-size:clamp(1.3rem,1.9vw,1.85rem)}

.cv3{display:flex;flex-direction:column;gap:.72rem}
.c3-banner{flex:0 0 40%;min-height:0}
.c3-stats{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:repeat(12,1fr);
  grid-auto-rows:1fr;gap:.62rem}
.c3-a{grid-column:span 4}.c3-b{grid-column:span 3}.c3-c{grid-column:span 5}
.c3-d{grid-column:span 3}.c3-e{grid-column:span 4}.c3-f{grid-column:span 5}
.c3-stats .hit{justify-content:center}
.c3-a .h-k{font-size:clamp(1.12rem,1.6vw,1.55rem)}
.c3-f .h-k{font-size:clamp(1.35rem,2vw,1.95rem)}

.cv4{display:grid;grid-template-columns:.78fr 1.5fr;gap:1rem}
.c4-photo{min-height:0}
.c4-drivers{display:flex;flex-direction:column;justify-content:space-between;gap:.5rem;min-height:0}
.c4-drivers .driver{flex:1 1 0;flex-direction:row;align-items:center;gap:.75rem;padding:.4rem .9rem}
.c4-drivers .driver .h-n{flex:none;width:2rem;margin:0}
.c4-drivers .driver .h-k{flex:0 0 34%;margin:0;font-size:clamp(1rem,1.35vw,1.28rem)}
.c4-drivers .driver .h-s{flex:1 1 auto;margin:0;font-size:.8rem}
.c4-drivers .driver .op{position:static;margin-left:auto;flex:none}
.d1{width:88%}.d2{width:94%;margin-left:6%}
.d3{width:82%;margin-left:14%}.d4{width:90%;margin-left:3%}
.d5{width:86%;margin-left:10%}.d6{width:100%}

.cv5{display:grid;grid-template-columns:1.18fr .82fr;gap:1rem}
.c5-chart{min-height:0}
.c5-claims{display:flex;flex-direction:column;gap:.5rem;min-height:0}
.c5-a{flex:1.05}.c5-b{flex:1}.c5-c{flex:1}.c5-g{flex:.92}
.cv5 .hit.claim{justify-content:center}
.c5-mini{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;flex:.9;min-height:0}

.cv6{display:grid;grid-template-columns:1.12fr .88fr;gap:1rem}
.c6-chart{min-height:0}
.c6-right{display:flex;flex-direction:column;gap:.65rem;min-height:0}
.c6-nums{display:grid;grid-template-columns:1.05fr .8fr 1.15fr;gap:.55rem;flex:0 0 38%}
.c6-nums .hit{justify-content:center;padding-bottom:1.15rem}
.c6-nums .h-k{font-size:clamp(1.7rem,2.5vw,2.5rem)}
.c6-theory{display:flex;flex-direction:column;gap:.5rem;flex:1 1 auto;min-height:0}
.c6-theory .hit{flex:1 1 0;justify-content:center}

.cv7{display:grid;grid-template-columns:1.16fr .84fr;gap:1rem}
.c7-chart{min-height:0}
.c7-side{display:flex;flex-direction:column;gap:.6rem;min-height:0}
.c7-pics{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;flex:0 0 29%}
.c7-pics .ph{min-height:0}
.c7-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:.5rem;flex:1 1 auto;min-height:0}
.cv7 .hit.side{padding:.42rem .7rem 1rem;justify-content:center}
.cv7 .hit.side .h-k{font-size:clamp(.94rem,1.18vw,1.1rem)}
.cv7 .hit.side .h-s{font-size:.75rem}

.cv8{display:grid;grid-template-columns:1.45fr .8fr;gap:1rem}
.hit.c8-video{padding:0;border:1px solid var(--line);border-left:1px solid var(--line);
  display:block;background:var(--bg1);min-height:0}
.hit.c8-video:hover{transform:none;box-shadow:0 0 26px rgba(87,227,196,.2);border-color:var(--cyan2)}
.c8-video > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:center 32%;opacity:.82;transition:opacity .3s,transform .6s}
.c8-video:hover > img{opacity:.96;transform:scale(1.04)}
.c8-shade{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(6,17,26,.04) 0%,rgba(6,17,26,.04) 54%,
    rgba(6,17,26,.92) 68%,#07141D 76%,#07141D 100%)}
.c8-play{position:absolute;left:0;right:0;bottom:1.6rem;display:flex;flex-direction:column;
  gap:.28rem;padding:0 1.25rem;color:var(--ink)}
.c8-play b{font-family:var(--serif);font-size:clamp(1.35rem,2vw,1.95rem);color:var(--cyan);
  text-shadow:var(--glow-cyan)}
.c8-play i{font-style:normal;font-size:.8rem;color:var(--txt)}
.c8-video .op{color:var(--amber);right:1rem;bottom:.5rem;font-size:.64rem}
.c8-video .zoom-badge{opacity:.9;transform:none}
.c8-side{display:flex;flex-direction:column;gap:.5rem;min-height:0}
.c8-side .hit{flex:1 1 0;justify-content:center}

.cv9{display:grid;grid-template-columns:.85fr 1.25fr;gap:1rem}
.c9-photo{min-height:0}
.c9-right{display:flex;flex-direction:column;gap:.55rem;min-height:0}
.c9-right .yes{flex:1 1 0;justify-content:center}
.y1{width:92%}.y2{width:96%;margin-left:4%}.y3{width:88%;margin-left:12%}
.c9-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;flex:0 0 29%}
.c9-mini .hit{min-height:0}

.cv10{display:flex;flex-direction:column;gap:.72rem}
.c10-banner{flex:0 0 34%;min-height:0}
.c10-cards{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:repeat(12,1fr);
  grid-auto-rows:1fr;gap:.62rem}
.n1{grid-column:span 5}.n2{grid-column:span 4}.n3{grid-column:span 3}
.n4{grid-column:span 3}.n5{grid-column:span 4}.n6{grid-column:span 5}
.c10-cards .hit{justify-content:center}

/* ================= KEY SENTENCE BAR + SOURCE ================= */
.band{
  position:relative;display:flex;align-items:center;justify-content:space-between;gap:1rem;
  width:100%;text-align:left;color:#04121A;border:0;border-radius:3px;
  background:linear-gradient(90deg,var(--cyan) 0%,#3FC4B0 62%,var(--amber) 130%);
  font-family:var(--serif);font-size:1.08rem;font-weight:700;line-height:1.4;
  padding:.6rem 1.15rem;margin:0;flex:none;overflow:hidden;
  box-shadow:0 6px 20px rgba(87,227,196,.18);transition:filter .2s,transform .12s;
}
.band:hover{filter:brightness(1.1);transform:translateY(-2px)}
.band::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 42%,rgba(255,255,255,.35) 50%,transparent 58%);
  background-size:250% 100%;opacity:0;transition:opacity .3s}
.band:hover::after{opacity:1;animation:sheen 1s ease}
.band-more{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;color:#06222A;
  font-weight:800;white-space:nowrap}
/* annotated term sitting on the bright cyan sentence bar: keep it legible */
.band .gl{color:#06222A;border-bottom-color:rgba(6,34,42,.55);font-weight:800;
  background:rgba(255,255,255,.22);text-shadow:none}
.band .gl:hover{color:#04121A;background:rgba(255,255,255,.6);border-bottom-color:#04121A}
.src{margin:.55rem 0 0;font-size:.76rem;color:var(--mut);line-height:1.4;flex:none;
  font-family:var(--mono);letter-spacing:.01em}
.src strong{color:var(--amber);font-weight:700;letter-spacing:.1em;margin-right:.5em}

/* annotated glossary hotspot inside visible text */
.gl{color:var(--cyan);border-bottom:1px dashed var(--cyan2);cursor:help;
  padding:0 .02em;transition:all .18s}
.gl:hover{color:var(--amber);border-bottom-color:var(--amber);
  background:rgba(240,182,92,.12);text-shadow:var(--glow-amber)}
/* count-up numbers */
.num{font-variant-numeric:tabular-nums;color:var(--cyan)}
.hit.gold .num,.band .num{color:var(--amber)}

/* ================= DETAIL PANEL · monitor ================= */
.modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:2rem}
.modal-mask{position:absolute;inset:0;background:rgba(3,10,16,.78);backdrop-filter:blur(5px)}
.modal-panel{
  position:relative;width:min(780px,100%);max-height:min(84vh,780px);display:flex;flex-direction:column;
  background:linear-gradient(160deg,var(--bg2),var(--bg1));
  border:1px solid var(--cyan2);border-radius:4px;overflow:hidden;
  box-shadow:0 30px 80px rgba(0,0,0,.7),0 0 40px rgba(87,227,196,.16),inset 0 0 40px rgba(87,227,196,.04);
  animation:modalIn .28s cubic-bezier(.2,.8,.2,1) both;
}
.m-scan{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.35;
  background:repeating-linear-gradient(180deg,transparent 0 3px,rgba(0,0,0,.12) 3px 4px)}
@keyframes modalIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.modal-head{display:flex;align-items:center;gap:1rem;padding:1rem 1.6rem .3rem;flex:none;position:relative;z-index:2}
.m-sig{display:flex;align-items:center;gap:.4rem;font-family:var(--mono);font-size:.62rem;
  letter-spacing:.14em;color:var(--red);white-space:nowrap}
.m-sig i{width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 8px var(--red);
  animation:recPulse 1.4s infinite}
.m-kicker{font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.16em;
  color:var(--cyan);text-transform:uppercase;flex:1}
.m-close{width:32px;height:32px;line-height:1;font-size:1.3rem;border:1px solid var(--line2);
  background:var(--bg3);color:var(--txt);border-radius:3px;transition:all .18s;flex:none}
.m-close:hover{background:var(--red);color:#04121A;border-color:var(--red)}
.modal-panel h2.m-title{font-size:2.05rem;color:var(--ink);margin:.3rem 1.6rem 0;flex:none;
  position:relative;z-index:2}
.m-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:.9rem 1.6rem 1.1rem;position:relative;z-index:2}
.m-lead{font-family:var(--serif);font-size:1.28rem;color:var(--cyan);line-height:1.4;margin:0 0 1rem}
.m-stat{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;background:var(--bg3);
  border-left:3px solid var(--amber);padding:.8rem 1.1rem;margin:0 0 1rem;border-radius:2px}
.m-stat b{font-family:var(--serif);font-size:2.2rem;color:var(--amber);line-height:1;
  text-shadow:var(--glow-amber)}
.m-stat span{font-family:var(--mono);font-size:.76rem;font-weight:700;letter-spacing:.06em;
  color:var(--txt);text-transform:uppercase}
.m-list{list-style:none;margin:0;padding:0}
.m-list li{position:relative;padding-left:1.5rem;margin-bottom:.7rem;font-size:1.02rem;
  line-height:1.5;color:var(--txt)}
.m-list li::before{content:"";position:absolute;left:0;top:.6em;width:.44rem;height:.44rem;
  background:var(--cyan);box-shadow:var(--glow-cyan);transform:rotate(45deg)}
.m-note{font-family:var(--serif);font-style:italic;font-size:1.05rem;color:var(--amber);
  border-top:1px solid var(--line);padding-top:.8rem;margin:1rem 0 0}
.m-related{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.75rem 1.6rem;
  border-top:1px solid var(--line);background:rgba(6,17,26,.5);flex:none;position:relative;z-index:2}
.m-related > span{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;color:var(--mut2);
  margin-right:.3rem}
.m-rel-btn{display:flex;align-items:center;gap:.4rem;font-family:var(--mono);font-size:.68rem;
  color:var(--cyan);background:var(--bg3);border:1px solid var(--line2);border-radius:2px;
  padding:.35rem .6rem;transition:all .18s}
.m-rel-btn:hover{background:var(--cyan);color:#04121A;border-color:var(--cyan);box-shadow:var(--glow-cyan)}
.m-rel-btn .ic{width:12px;height:12px}
.m-foot{padding:.8rem 1.6rem;border-top:1px solid var(--line);background:rgba(6,17,26,.7);
  font-family:var(--mono);font-size:.74rem;color:var(--mut);flex:none;position:relative;z-index:2}
.m-foot:empty{display:none}
.m-video{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:#000;
  margin:0 0 1rem;border:1px solid var(--line2);border-radius:3px}

/* ================= LIGHTBOX ================= */
.lightbox{position:fixed;inset:0;z-index:110;display:flex;align-items:center;justify-content:center}
.lb-mask{position:absolute;inset:0;background:rgba(3,9,14,.9);backdrop-filter:blur(6px)}
.lb-tools{position:absolute;top:1.1rem;left:50%;transform:translateX(-50%);z-index:2;
  display:flex;align-items:center;gap:.5rem;background:rgba(11,24,34,.92);
  border:1px solid var(--line2);border-radius:4px;padding:.45rem .6rem;
  box-shadow:0 8px 30px rgba(0,0,0,.5)}
.lb-cap{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;color:var(--amber);
  margin-right:.6rem;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-tools button{width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  font-size:1rem;color:var(--cyan);background:var(--bg3);border:1px solid var(--line2);
  border-radius:3px;transition:all .18s}
.lb-tools button .ic{width:16px;height:16px}
.lb-tools button:hover{background:var(--cyan);color:#04121A;border-color:var(--cyan)}
.lb-scale{font-family:var(--mono);font-size:.72rem;color:var(--txt);min-width:52px;text-align:center}
.lb-stage{position:relative;z-index:1;width:min(88vw,1200px);height:min(80vh,860px);
  display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab}
.lb-stage.dragging{cursor:grabbing}
.lb-stage img{max-width:100%;max-height:100%;object-fit:contain;
  box-shadow:0 20px 70px rgba(0,0,0,.7);border:1px solid var(--line2);border-radius:3px;
  will-change:transform;user-select:none;-webkit-user-drag:none}
.lb-hint{position:absolute;bottom:1rem;left:50%;transform:translateX(-50%);z-index:2;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;color:var(--mut);
  background:rgba(6,17,26,.7);padding:.4rem .8rem;border-radius:2px;white-space:nowrap}

/* ================= DRAWERS (glossary / help) ================= */
.drawer{position:fixed;inset:0;z-index:105}
.dr-mask{position:absolute;inset:0;background:rgba(3,10,16,.7);backdrop-filter:blur(4px)}
.dr-panel{position:absolute;top:0;right:0;bottom:0;width:min(460px,92vw);
  display:flex;flex-direction:column;background:linear-gradient(160deg,var(--bg2),var(--bg1));
  border-left:1px solid var(--cyan2);box-shadow:-20px 0 60px rgba(0,0,0,.6);
  animation:drIn .3s cubic-bezier(.2,.8,.2,1) both}
@keyframes drIn{from{transform:translateX(100%)}to{transform:none}}
.dr-head{display:flex;align-items:flex-start;justify-content:space-between;
  padding:1.4rem 1.5rem 1rem;border-bottom:1px solid var(--line);flex:none}
.dr-eyebrow{font-family:var(--mono);font-size:.64rem;letter-spacing:.16em;color:var(--cyan)}
.dr-head h2{font-family:var(--serif);font-size:1.9rem;color:var(--ink);margin:.25rem 0 0}
.dr-close{width:34px;height:34px;font-size:1.4rem;line-height:1;color:var(--txt);
  background:var(--bg3);border:1px solid var(--line2);border-radius:3px;transition:all .18s}
.dr-close:hover{background:var(--red);color:#04121A;border-color:var(--red)}
.dr-search{display:flex;align-items:center;gap:.6rem;margin:1rem 1.5rem;padding:.55rem .8rem;
  background:var(--bg1);border:1px solid var(--line);border-radius:3px;flex:none}
.dr-search span{color:var(--cyan);font-size:1rem}
.dr-search input{flex:1;background:transparent;border:0;outline:0;color:var(--ink);
  font-family:var(--mono);font-size:.8rem}
.dr-search input::placeholder{color:var(--mut2)}
.dr-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 1.5rem 1.5rem}
.dr-foot{padding:.8rem 1.5rem;border-top:1px solid var(--line);background:rgba(6,17,26,.5);
  font-family:var(--mono);font-size:.62rem;letter-spacing:.06em;color:var(--mut2);flex:none;line-height:1.6}
/* glossary item */
.gi{border:1px solid var(--line);border-radius:3px;margin-bottom:.6rem;overflow:hidden;
  background:var(--bg2);transition:border-color .2s}
.gi.open{border-color:var(--cyan2)}
.gi-head{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;
  padding:.7rem .8rem;background:transparent;border:0;color:var(--ink)}
.gi-tag{font-family:var(--mono);font-size:.56rem;letter-spacing:.08em;color:var(--amber);
  border:1px solid var(--amber-dim);border-radius:2px;padding:.12rem .35rem;flex:none}
.gi-t{flex:1;font-family:var(--serif);font-size:1.02rem;font-weight:700}
.gi-c{color:var(--cyan);font-size:.8rem;transition:transform .2s}
.gi.open .gi-c{transform:rotate(90deg)}
.gi-body{padding:0 .9rem .85rem;font-size:.88rem;line-height:1.55;color:var(--txt)}
.gi-src{font-family:var(--mono);font-size:.64rem;color:var(--mut2);margin-top:.5rem;
  border-top:1px dashed var(--line);padding-top:.5rem}
.gi-empty{color:var(--mut);font-size:.88rem;text-align:center;padding:2rem 0}
/* help rows */
.hp-sec{font-family:var(--mono);font-size:.64rem;letter-spacing:.16em;color:var(--amber);
  margin:1.2rem 0 .6rem;border-bottom:1px solid var(--line);padding-bottom:.35rem}
.hp-sec:first-child{margin-top:.3rem}
.hp-row{display:flex;align-items:center;gap:.8rem;padding:.5rem 0;border-bottom:1px dashed rgba(34,64,78,.6)}
.hp-key{font-family:var(--mono);font-size:.72rem;color:var(--cyan);min-width:104px;
  background:var(--bg3);border:1px solid var(--line2);border-radius:2px;padding:.28rem .45rem;text-align:center}
.hp-desc{font-size:.88rem;color:var(--txt);flex:1}
.hp-tip{display:flex;gap:.6rem;align-items:flex-start;padding:.5rem 0;font-size:.86rem;
  line-height:1.5;color:var(--txt)}
.hp-tip b{color:var(--cyan);flex:none}

/* ================= ANNOTATION TOOLTIP ================= */
.tip{position:fixed;z-index:120;max-width:320px;padding:.85rem 1rem;
  background:linear-gradient(160deg,var(--bg2),var(--bg1));
  border:1px solid var(--cyan2);border-radius:3px;
  box-shadow:0 14px 40px rgba(0,0,0,.65),0 0 22px rgba(87,227,196,.18);
  animation:tipIn .18s ease both}
@keyframes tipIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.tip-tag{font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;color:var(--amber);
  display:block;margin-bottom:.35rem}
.tip-t{font-family:var(--serif);font-size:1.02rem;font-weight:700;color:var(--cyan);
  margin:0 0 .45rem;line-height:1.25}
.tip-d{font-size:.84rem;line-height:1.5;color:var(--txt);margin:0}
.tip-s{font-family:var(--mono);font-size:.62rem;color:var(--mut2);margin:.55rem 0 0;
  border-top:1px dashed var(--line);padding-top:.45rem}
.tip-more{display:block;width:100%;margin-top:.7rem;font-family:var(--mono);font-size:.66rem;
  letter-spacing:.08em;color:var(--cyan);background:var(--bg3);border:1px solid var(--cyan2);
  border-radius:2px;padding:.45rem;transition:all .18s}
.tip-more:hover{background:var(--cyan);color:#04121A}

/* ================= TOAST ================= */
.toast{position:fixed;left:50%;bottom:calc(var(--bottom) + 18px);transform:translate(-50%,20px);
  z-index:130;font-family:var(--mono);font-size:.72rem;letter-spacing:.06em;color:var(--ink);
  background:rgba(11,24,34,.95);border:1px solid var(--cyan2);border-radius:3px;
  padding:.6rem 1rem;box-shadow:0 8px 30px rgba(0,0,0,.5),var(--glow-cyan);
  opacity:0;pointer-events:none;transition:all .3s ease;white-space:nowrap}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ================= IMMERSIVE MODE ================= */
/* onair / controls / rail fade away, but the tool rail stays as a dim,
   always-reachable exit hatch so the mode can be left with the mouse too. */
body.immersive .onair,body.immersive .controls,body.immersive .rail{opacity:0;pointer-events:none}
body.immersive .toolbar{opacity:.22}
body.immersive .toolbar:hover{opacity:1}
body.immersive .slide{padding-top:1.7rem;padding-bottom:1.4rem}
.onair,.controls,.toolbar,.rail{transition:opacity .35s ease}

/* ================= TYPE SCALE v6 · bigger type, fuller tiles, zero clipping =================
   Projection-legibility uplift. Specific layout selectors follow the generic ones so
   they keep their hierarchy. Compact tiles (77–92px) get a gentler lift than tall ones. */
.hit .h-n{font-size:.74rem;letter-spacing:.12em}
.hit .h-k{font-size:clamp(1.24rem,1.72vw,1.66rem);line-height:1.14;margin-bottom:.3rem}
.hit .h-s{font-size:1rem;line-height:1.4}
.hit .op{font-size:.7rem;letter-spacing:.08em}
.hit.slim .h-k{font-size:clamp(1.1rem,1.34vw,1.32rem);line-height:1.16}
.hit.slim .h-s{font-size:.9rem;line-height:1.38}
.hit.slim .op{font-size:.76rem}
.hit.stat .h-k{font-size:clamp(1.82rem,2.6vw,2.7rem)}
.cv2 .hit.metric .h-k{font-size:clamp(1.5rem,2.15vw,2.08rem)}
.c3-a .h-k{font-size:clamp(1.3rem,1.8vw,1.78rem)}
.c3-f .h-k{font-size:clamp(1.5rem,2.2vw,2.18rem)}
.c4-drivers .driver .h-k{font-size:clamp(1.12rem,1.5vw,1.42rem)}
.c4-drivers .driver .h-s{font-size:.94rem;line-height:1.38}
.c6-nums .h-k{font-size:clamp(1.9rem,2.75vw,2.78rem)}
.cv7 .hit.side .h-k{font-size:clamp(1.06rem,1.3vw,1.26rem);line-height:1.14}
.cv7 .hit.side .h-s{font-size:.86rem;line-height:1.34}
.c8-play b{font-size:clamp(1.55rem,2.25vw,2.2rem)}
.c8-play i{font-size:.95rem}
.eyebrow{font-size:.84rem}
h1{font-size:clamp(2.45rem,3.9vw,3.7rem)}
h2{font-size:clamp(1.9rem,2.75vw,2.6rem)}
.sub{font-size:1.22rem}
.band{font-size:1.3rem;line-height:1.38}
.band-more{font-size:.74rem}
.src{font-size:.86rem}
.ph figcaption{font-size:.72rem;letter-spacing:.08em}
.zoom-badge{font-size:.7rem}
.side-label{font-size:.76rem}
/* fill: centre the content of small cards so no large empty band remains */
.c2-trio .hit,.c5-mini .hit,.c9-mini .hit{justify-content:center}
.c9-mini .hit .h-s{margin-top:.15rem}
/* S07 — rebalance the column: the paired photos were eating 58% of the height and
   squeezing 6 text cards to 73px. Cap them at 26% (still clearly visible) so the
   cards grow to ~133px and their type can be enlarged to match the rest of the deck. */
.c7-pics{flex:0 0 26%;min-height:0;overflow:hidden}
.c7-pics .ph{min-height:0;height:100%}
.c7-grid{gap:.45rem}
.cv7 .hit.side{justify-content:center;padding:.4rem .7rem .85rem}
.cv7 .hit.side .h-n{font-size:.68rem;margin-bottom:.14rem}
.cv7 .hit.side .h-k{font-size:clamp(1.18rem,1.42vw,1.4rem);line-height:1.12;margin-bottom:.14rem}
.cv7 .hit.side .h-s{font-size:.92rem;line-height:1.34}
.cv7 .hit.side .op{font-size:.68rem;bottom:.24rem}
/* panels, drawers and tooltips (all scrollable — safe to enlarge) */
.m-list li{font-size:1.16rem}
.m-lead{font-size:1.42rem}
.m-note{font-size:1.18rem}
.m-stat span{font-size:.86rem}
.m-foot{font-size:.84rem}
.m-kicker{font-size:.78rem}
.m-sig{font-size:.7rem}
.m-related > span{font-size:.7rem}
.m-rel-btn{font-size:.76rem}
.gi-t{font-size:1.12rem}
.gi-body{font-size:1rem}
.gi-src{font-size:.72rem}
.gi-tag{font-size:.64rem}
.gi-empty{font-size:1rem}
.hp-sec{font-size:.72rem}
.hp-key{font-size:.8rem}
.hp-desc,.hp-tip{font-size:.98rem}
.tip-t{font-size:1.12rem}
.tip-d{font-size:.94rem}
.tip-tag,.tip-s{font-size:.68rem}
.tip-more{font-size:.74rem}
.dr-head h2{font-size:2.1rem}
.dr-eyebrow{font-size:.72rem}
.dr-search input{font-size:.9rem}
.dr-foot{font-size:.7rem}
.lb-cap,.lb-scale{font-size:.78rem}
.lb-hint{font-size:.7rem}
.toast{font-size:.8rem}
/* status / transport chrome */
.oa-brand{font-size:.78rem}
.oa-rec{font-size:.8rem}
.oa-tc,.oa-ch{font-size:.78rem}
.pg-ch,.pg-tot,.pager em{font-size:.82rem}
.tp-btn{font-size:.8rem}
.rail button{font-size:.72rem}
.ch-hud .hud-ch{font-size:.76rem}
.ch-hud .hud-tag,.ch-hud .hud-annot{font-size:.68rem}
.boot-sub{font-size:.74rem}
.boot-log{font-size:.96rem}
.boot-foot{font-size:.78rem}
.boot-foot button{font-size:.8rem}

/* ================= RESPONSIVE ================= */
@media (max-width:1180px){
  .rail button .rl{display:none}
  .rail button:hover .rl{display:none}
}
@media (max-width:1000px){
  .slide{padding:1.2rem 2.4rem 1rem}
  .kbd-hint{display:none}
  .toolbar{left:8px}
  .toolbar button{width:34px;height:34px}
}
@media (max-width:860px){
  body{font-size:16px}
  /* extra bottom room so the last cards, key-sentence bar and source can all be
     scrolled fully above the floating tool capsule (which sits ~68–112px above the base) */
  .slide{padding:1.1rem 1.1rem 7.5rem}
  .slide.active{display:block}
  .wrap{display:block}
  .rail{display:none}
  .toolbar{top:auto;bottom:calc(var(--bottom) + 10px);left:50%;transform:translateX(-50%);
    flex-direction:row;gap:6px}
  .toolbar button:hover{transform:translateY(-2px)}
  .oa-brand,.oa-live,.oa-signal{display:none}
  .page-head{margin-bottom:.8rem}
  .canvas{display:block !important;margin-bottom:1rem}
  .canvas > div,.canvas > figure,.canvas > button{
    width:100% !important;margin:0 0 .7rem 0 !important;height:auto !important}
  .canvas .ph{height:210px !important;min-height:210px !important}
  .canvas .ph.chart{height:250px !important}
  .canvas .c8-video{height:230px !important}
  .canvas .c7-pics{height:150px !important;display:grid !important;
    grid-template-columns:1fr 1fr !important;gap:.55rem !important}
  .canvas .c7-pics .ph{height:150px !important;min-height:150px !important}
  .c1-chips,.c2-left,.c2-right,.c3-stats,.c4-drivers,.c5-claims,
  .c6-right,.c7-side,.c8-side,.c9-right,.c10-cards{display:block !important}
  .c2-trio,.c5-mini,.c6-nums,.c6-theory,.c7-grid,.c9-mini{
    display:grid !important;grid-template-columns:1fr 1fr !important;
    gap:.55rem !important;width:100% !important}
  .canvas .hit{min-height:78px !important;width:100% !important;
    margin:0 0 .55rem 0 !important;grid-column:auto !important}
  .c4-drivers .driver{flex-direction:column;align-items:flex-start;gap:.15rem}
  .c4-drivers .driver .h-k{flex:none}
  .c4-drivers .driver .op{position:absolute;margin:0}
  .c1-chips .hit,.c3-stats .hit,.c7-grid .hit,.c10-cards .hit{min-height:82px !important}
  .ch-hud{position:static;justify-content:flex-start;margin-bottom:.5rem;flex-wrap:wrap;gap:.4rem}
  .ch-hud .hud-tag{display:none}
  .ch-hud .hud-annot{margin-left:auto}
  .toolbar{gap:5px;background:rgba(8,20,29,.9);border:1px solid var(--line);
    border-radius:8px;padding:5px 7px;box-shadow:0 8px 26px rgba(0,0,0,.55)}
  .toolbar button{width:32px;height:32px}
  h1{font-size:2.2rem}h2{font-size:1.75rem}.sub{font-size:1rem}
  .band{font-size:.94rem;padding:.6rem .85rem}
  .pager em,.wheel-hint{display:none}
  .tp-btn{padding:.45rem .75rem;font-size:.7rem}
  .onair{padding:0 1rem}
  .modal{padding:1rem}.modal-panel{max-height:88vh}
  .modal-panel h2.m-title{font-size:1.55rem}
  .m-lead{font-size:1.1rem}
  .lb-cap{display:none}
  .lb-hint{font-size:.54rem}
  .toast{white-space:normal;text-align:center;max-width:88vw}
}
@media (max-width:480px){
  .oa-tc{display:none}
  .dr-panel{width:100vw}
  .kbd-hint{display:none}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important}
  .crt-grain,.crt-scan{animation:none}
}
:focus-visible{outline:2px solid var(--amber);outline-offset:2px}


/* ================= SIGNAL MONITORS v7 · concept photos -> pure-English looping feeds ================ */
.ph.signal video.sig-video{
  display:block;width:100%;height:100%;object-fit:cover;background:#000;
  transition:transform .6s ease,filter .4s;
}
.ph.signal:hover video.sig-video{transform:scale(1.045)}
.ph.signal::after{
  opacity:.92;
  background:repeating-linear-gradient(180deg,transparent 0 2px,rgba(0,0,0,.17) 2px 3px),
             radial-gradient(ellipse at center,transparent 52%,rgba(2,10,16,.6) 100%);
}
.sig-tag{
  position:absolute;top:.55rem;left:.55rem;z-index:3;display:flex;align-items:center;gap:.4em;
  font-family:var(--mono);font-size:.6rem;font-weight:700;letter-spacing:.1em;
  color:var(--ink);background:rgba(6,17,26,.82);border:1px solid var(--cyan2);
  border-radius:2px;padding:.28rem .5rem;pointer-events:none;white-space:nowrap;
}
.sig-tag b{color:var(--amber);font-weight:700}
.sig-dot{width:.5rem;height:.5rem;flex:none;border-radius:50%;background:var(--red);
  box-shadow:0 0 8px var(--red);animation:onair 1.6s infinite}
@keyframes onair{0%,100%{opacity:1}50%{opacity:.22}}
.sig-hold{display:none;color:var(--amber)}
.ph.signal.paused .sig-live{display:none}
.ph.signal.paused .sig-hold{display:inline}
.ph.signal.paused .sig-tag{border-color:var(--amber)}
.ph.signal.paused .sig-dot{background:var(--amber);box-shadow:0 0 8px var(--amber);animation:none}
.sig-pp{
  position:absolute;right:.6rem;bottom:2.15rem;z-index:4;
  width:1.9rem;height:1.9rem;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:.86rem;line-height:1;color:var(--cyan);
  background:rgba(6,17,26,.84);border:1px solid var(--cyan2);border-radius:50%;
  cursor:pointer;transition:background .2s,color .2s,transform .2s;
}
.sig-pp:hover{background:var(--cyan);color:#04121A;border-color:var(--cyan);transform:scale(1.08)}
.sig-pp:focus-visible{background:var(--amber);color:#04121A}
/* enlarged signal feed inside the lightbox */
.lb-video{
  max-width:100%;max-height:100%;object-fit:contain;background:#000;
  box-shadow:0 20px 70px rgba(0,0,0,.7);border:1px solid var(--cyan2);border-radius:3px;
  will-change:transform;
}
@media (max-width:860px){
  .sig-tag{font-size:.52rem;letter-spacing:.06em;top:.4rem;left:.4rem;padding:.22rem .38rem}
  .sig-tag b{display:none}
  .sig-pp{bottom:2.05rem;width:1.7rem;height:1.7rem;font-size:.78rem}
}
