/* ═════════════════════════════════════════════════════════════
   SIGNAL LOST — art-directed CRT decay
   palette: bg #04080a · deep #0a1512 · phosphor #5dffa8
            bright #d8ffe9 · dim #3e6b57 · alert #ff4d3d · amber #ffc857
   ═════════════════════════════════════════════════════════════ */

:root{
  --bg:#04080a;
  --deep:#0a1512;
  --phos:#5dffa8;
  --bright:#d8ffe9;
  --dim:#3e6b57;
  --alert:#ff4d3d;
  --amber:#ffc857;
  --mono:'IBM Plex Mono', ui-monospace, monospace;
  --crt:'VT323', 'IBM Plex Mono', monospace;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{background:var(--bg)}
body{
  font-family:var(--mono);
  color:var(--bright);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  cursor:crosshair;
}
::selection{background:var(--phos);color:var(--bg)}

a{color:var(--phos)}
b,strong{font-weight:600;color:var(--phos)}
em{font-style:italic;color:var(--amber)}

/* ── webgl static field ─────────────────────────────────────── */
#field{
  position:fixed;inset:0;width:100%;height:100%;
  z-index:0;display:block;
}

/* ── CRT overlays ───────────────────────────────────────────── */
.ovl{position:fixed;inset:0;pointer-events:none;z-index:40}
.scanlines{
  background:repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px,
    rgba(0,0,0,.20) 3px, rgba(0,0,0,0) 4px);
  mix-blend-mode:multiply;
}
.grille{
  background:repeating-linear-gradient(
    to right,
    rgba(255,60,60,.028) 0 1px,
    rgba(60,255,140,.028) 1px 2px,
    rgba(70,120,255,.028) 2px 3px);
}
.vignette{
  background:
    radial-gradient(ellipse 120% 100% at 50% 45%,
      rgba(0,0,0,0) 55%, rgba(0,0,0,.55) 100%),
    radial-gradient(ellipse 140% 120% at 50% 50%,
      rgba(93,255,168,.03) 0%, rgba(0,0,0,0) 60%);
}
.flicker{background:#eafff3;opacity:0;animation:flick 4.2s steps(1) infinite}
@keyframes flick{
  0%,93%,100%{opacity:0}
  94%{opacity:.015}
  95%{opacity:0}
  97%{opacity:.03}
  97.6%{opacity:0}
}
.trackbar{
  background:linear-gradient(to bottom,
    rgba(216,255,233,0) 0%,
    rgba(216,255,233,.05) 45%,
    rgba(216,255,233,.12) 50%,
    rgba(216,255,233,.05) 55%,
    rgba(216,255,233,0) 100%);
  height:14vh;top:auto;
  animation:track 9s cubic-bezier(.7,0,.3,1) infinite;
  opacity:0;
}
@keyframes track{
  0%{transform:translateY(-20vh);opacity:0}
  4%{opacity:1}
  22%{transform:translateY(105vh);opacity:1}
  25%{opacity:0}
  100%{transform:translateY(105vh);opacity:0}
}

/* ── OSD chrome ─────────────────────────────────────────────── */
.osd{position:fixed;inset:0;pointer-events:none;z-index:50;font-family:var(--crt);font-size:clamp(18px,2vw,24px);letter-spacing:.06em}
.osd>div{
  position:absolute;display:flex;gap:1.2em;align-items:center;
  text-shadow:0 0 8px rgba(93,255,168,.55);
  background:rgba(4,8,10,.5);padding:.08em .5em;border-radius:2px;
}
.osd-tl{top:1.1rem;left:1.4rem}
.osd-tr{top:1.1rem;right:1.4rem}
.osd-bl{bottom:1.1rem;left:1.4rem}
.osd-br{bottom:1.1rem;right:1.4rem}
.osd-green{color:var(--phos)}
.osd-dim{color:var(--dim);text-shadow:none}
#timecode{color:var(--bright)}
.rec-dot{width:.55em;height:.55em;border-radius:50%;background:var(--alert);box-shadow:0 0 10px var(--alert);animation:rec 1.4s steps(1) infinite}
@keyframes rec{0%,100%{opacity:1}50%{opacity:.15}}
#audio-toggle{
  pointer-events:auto;background:none;border:1px solid var(--dim);
  color:var(--dim);font-family:var(--crt);font-size:.78em;
  padding:.1em .6em;cursor:pointer;letter-spacing:.08em;
  transition:color .2s,border-color .2s,box-shadow .2s;
}
#audio-toggle:hover{color:var(--phos);border-color:var(--phos)}
#audio-toggle[aria-pressed="true"]{color:var(--phos);border-color:var(--phos);box-shadow:0 0 12px rgba(93,255,168,.35)}

/* ── channel selector nav ───────────────────────────────────── */
.chan-nav{
  position:fixed;top:1.05rem;left:50%;transform:translateX(-50%);
  z-index:60;display:flex;gap:.5em;align-items:center;
  font-family:var(--crt);font-size:clamp(15px,1.6vw,20px);letter-spacing:.08em;
  background:rgba(4,8,10,.6);border:1px solid rgba(93,255,168,.18);
  padding:.14em .8em;border-radius:2px;
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
}
.chan-nav-label{color:var(--dim);margin-right:.35em}
.chan-nav a{
  color:var(--dim);text-decoration:none;padding:.02em .3em;
  position:relative;transition:color .2s,text-shadow .2s,background .2s;
}
.chan-nav a:hover{color:var(--bright)}
.chan-nav a.on{
  color:var(--phos);background:rgba(93,255,168,.09);
  text-shadow:0 0 10px rgba(93,255,168,.7);
}
.chan-nav a::after{
  content:attr(data-label);
  position:absolute;top:calc(100% + .7em);left:50%;
  transform:translateX(-50%);
  font-size:.7em;letter-spacing:.14em;white-space:nowrap;
  color:var(--phos);background:rgba(4,8,10,.92);
  border:1px solid rgba(93,255,168,.3);padding:.08em .55em;
  opacity:0;pointer-events:none;transition:opacity .18s;
}
.chan-nav a:hover::after{opacity:1}

/* ── layout ─────────────────────────────────────────────────── */
#screen{position:relative;z-index:10}
.channel{min-height:100vh;display:flex;align-items:center;padding:12vh 0}
.channel:not(#ch01){min-height:82vh}
.wrap{width:min(880px,88vw);margin:0 auto}

/* ── hero ───────────────────────────────────────────────────── */
.hero{text-align:center}
.osd-line{font-family:var(--crt);color:var(--dim);font-size:clamp(17px,2vw,22px);letter-spacing:.14em;margin-bottom:2.2rem}
h1.glitch{
  font-family:var(--crt);font-weight:400;
  font-size:clamp(64px,15vw,208px);
  line-height:.86;letter-spacing:.01em;
  color:var(--bright);
  text-shadow:
    0 0 18px rgba(93,255,168,.5),
    0 0 60px rgba(93,255,168,.22);
  position:relative;
  user-select:none;
}
.glitch::before,.glitch::after{
  content:attr(data-text);
  position:absolute;inset:0;overflow:hidden;
  pointer-events:none;opacity:.85;
}
.glitch::before{color:#ff3b5c;z-index:-1;text-shadow:none;opacity:0;clip-path:inset(45% 0 55% 0);animation:gl-a 3.8s steps(2) infinite}
.glitch::after{color:#2ec9ff;z-index:-2;text-shadow:none;opacity:0;clip-path:inset(45% 0 55% 0);animation:gl-b 3.8s steps(2) infinite}
@keyframes gl-a{
  0%,88%,96%,100%{opacity:0;transform:none;clip-path:inset(45% 0 55% 0)}
  89%{opacity:.85;transform:translate(-9px,1px);clip-path:inset(10% 0 78% 0)}
  91%{opacity:.85;transform:translate(7px,-1px);clip-path:inset(58% 0 30% 0)}
  93%{opacity:.85;transform:translate(-5px,0);clip-path:inset(30% 0 58% 0)}
  95%{opacity:.85;transform:translate(4px,0);clip-path:inset(74% 0 14% 0)}
}
@keyframes gl-b{
  0%,87%,95.5%,100%{opacity:0;transform:none;clip-path:inset(45% 0 55% 0)}
  88%{opacity:.85;transform:translate(8px,-1px);clip-path:inset(20% 0 68% 0)}
  90%{opacity:.85;transform:translate(-7px,1px);clip-path:inset(66% 0 22% 0)}
  92%{opacity:.85;transform:translate(5px,0);clip-path:inset(4% 0 86% 0)}
  94%{opacity:.85;transform:translate(-4px,0);clip-path:inset(50% 0 40% 0)}
}
.sub{
  max-width:34em;margin:2.6rem auto 0;
  color:var(--dim);font-size:clamp(14px,1.5vw,17px);line-height:1.85;
}
.sub strong{color:var(--bright)}
.scroll-hint{
  margin-top:5.5rem;font-family:var(--crt);color:var(--dim);
  font-size:18px;letter-spacing:.28em;display:flex;flex-direction:column;gap:.4rem;align-items:center;
}
.hint-arrow{color:var(--phos);animation:hint 1.8s ease-in-out infinite}
@keyframes hint{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(8px);opacity:1}}

/* ── channel typography ─────────────────────────────────────── */
.ch-title{
  font-family:var(--crt);font-weight:400;
  font-size:clamp(44px,7.5vw,96px);line-height:.9;
  color:var(--phos);
  text-shadow:
    -2px 0 rgba(255,59,92,.32),
    2px 0 rgba(46,201,255,.32),
    0 0 16px rgba(93,255,168,.45);
  margin-bottom:1.6rem;
}
.ch-lede{color:var(--dim);line-height:1.85;font-size:clamp(14px,1.5vw,17px);max-width:38em;margin-bottom:3rem}
.ch-lede strong{color:var(--bright)}

/* ── log ────────────────────────────────────────────────────── */
.log{list-style:none;border-top:1px solid rgba(93,255,168,.18)}
.log-row{
  display:flex;gap:2rem;align-items:baseline;
  padding:1.05rem .4rem;
  border-bottom:1px solid rgba(93,255,168,.18);
  font-size:clamp(13px,1.4vw,16px);
  transition:background .25s;
}
.log-row:hover{background:rgba(93,255,168,.045)}
.log-t{font-family:var(--crt);font-size:1.25em;color:var(--dim);flex:0 0 6.2em}
.log-msg{color:var(--bright);line-height:1.6}
.log-row.alert .log-t,.log-row.alert .log-msg{color:var(--alert);text-shadow:0 0 12px rgba(255,77,61,.4)}
.redact{color:var(--amber);font-weight:600}
.corrupt{color:var(--dim);cursor:help;transition:color .3s;letter-spacing:.04em}
.corrupt.resolved{color:var(--amber)}

/* ── channel guide (broadcast schedule) ─────────────────────── */
.sched{list-style:none;border-top:1px solid rgba(93,255,168,.18)}
.sched-row{
  display:grid;grid-template-columns:5em 1fr auto;gap:1.8rem;
  align-items:baseline;padding:1.05rem .4rem;
  border-bottom:1px solid rgba(93,255,168,.18);
  transition:background .25s;position:relative;
}
.sched-row:hover{background:rgba(93,255,168,.045)}
.sched-t{font-family:var(--crt);font-size:1.35em;color:var(--dim)}
.sched-name{
  display:inline-block;font-family:var(--crt);font-weight:400;
  font-size:clamp(20px,2.3vw,27px);letter-spacing:.05em;
  color:var(--bright);transition:color .2s,text-shadow .2s;
}
.sched-row:hover .sched-name{
  color:var(--phos);text-shadow:0 0 12px rgba(93,255,168,.5);
  animation:nameglitch .28s steps(3) 1;
}
@keyframes nameglitch{
  33%{transform:translateX(-3px)}
  66%{transform:translateX(2px)}
}
.sched-desc{
  display:block;color:var(--dim);
  font-size:clamp(12.5px,1.3vw,14.5px);line-height:1.7;max-width:44em;
}
.sched-tag{
  font-family:var(--crt);font-size:15px;letter-spacing:.12em;
  color:var(--dim);border:1px solid rgba(93,255,168,.22);
  padding:.05em .6em;white-space:nowrap;justify-self:end;
}
.sched-row.unstable .sched-name{animation:rowflick 7.3s steps(1) infinite}
.sched-row.unstable:nth-child(2) .sched-name{animation-delay:1.4s}
.sched-row.unstable:nth-child(5) .sched-name{animation-delay:3.1s}
.sched-row.unstable:nth-child(8) .sched-name{animation-delay:5.2s}
@keyframes rowflick{
  0%,90%,100%{opacity:1}
  91%{opacity:.2}
  92%{opacity:1}
  96.4%{opacity:.45}
  96.9%{opacity:1}
}
.sched-row.intrusion .sched-t,
.sched-row.intrusion .sched-name{color:var(--alert);text-shadow:0 0 12px rgba(255,77,61,.4)}
.sched-row.intrusion:hover .sched-name{color:var(--alert);text-shadow:0 0 16px rgba(255,77,61,.65)}
.sched-row.intrusion .sched-tag{color:var(--alert);border-color:rgba(255,77,61,.4)}
.sched-now{
  font-family:var(--crt);font-size:14px;letter-spacing:.14em;
  color:var(--bg);background:var(--phos);
  padding:.06em .55em;margin-left:.9em;vertical-align:.15em;
  box-shadow:0 0 14px rgba(93,255,168,.55);
  animation:rec 1.4s steps(1) infinite;
}

/* ── decoder (CH 05) ────────────────────────────────────────── */
.dec-jump{text-decoration:none;border-bottom:1px dashed rgba(93,255,168,.5)}
.dec-jump:hover{color:var(--bright)}
.decoder{
  border:1px solid rgba(93,255,168,.25);background:#020604;
  box-shadow:0 0 40px rgba(93,255,168,.05),inset 0 0 60px rgba(0,0,0,.7);
  transition:border-color .6s,box-shadow .6s;
}
.decoder.unlocked{
  border-color:rgba(93,255,168,.55);
  box-shadow:0 0 46px rgba(93,255,168,.16),inset 0 0 60px rgba(0,0,0,.7);
}
.dec-head,.dec-foot{
  display:flex;justify-content:space-between;align-items:center;
  gap:1rem;flex-wrap:wrap;
  padding:.55rem 1.1rem;font-family:var(--crt);
  font-size:clamp(16px,1.8vw,21px);letter-spacing:.1em;color:var(--dim);
}
.dec-head{border-bottom:1px solid rgba(93,255,168,.25)}
.dec-foot{border-top:1px solid rgba(93,255,168,.25);font-size:clamp(14px,1.5vw,17px)}
.dec-badge{color:var(--alert);text-shadow:0 0 10px rgba(255,77,61,.4);transition:color .4s}
.decoder.unlocked .dec-badge{color:var(--phos);text-shadow:0 0 10px rgba(93,255,168,.6)}
.dec-key b{color:var(--bright);font-weight:400}
.decoder.unlocked .dec-key b{color:var(--phos);text-shadow:0 0 10px rgba(93,255,168,.6)}
.dec-body{padding:1.7rem 1.4rem;display:grid;gap:1.05rem}
.dec-line{
  font-family:var(--crt);font-size:clamp(19px,2.7vw,31px);
  letter-spacing:.05em;line-height:1.25;color:var(--dim);
  transition:color .5s,text-shadow .5s;
}
.decoder.unlocked .dec-line{
  color:var(--bright);text-shadow:0 0 14px rgba(93,255,168,.35);
}

/* ── recovered logs (CH 06) ─────────────────────────────────── */
.frags{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem}
.frag{
  border:1px solid rgba(93,255,168,.22);background:rgba(10,21,18,.55);
  padding:1.4rem 1.5rem;
  box-shadow:inset 0 0 40px rgba(0,0,0,.5);
  transition:border-color .25s,box-shadow .25s,transform .2s;
}
.frag:hover{
  border-color:rgba(93,255,168,.5);
  box-shadow:0 0 26px rgba(93,255,168,.09),inset 0 0 40px rgba(0,0,0,.5);
  transform:translateY(-3px);
}
.frag-head{
  display:flex;justify-content:space-between;gap:.4rem 1rem;flex-wrap:wrap;
  font-family:var(--crt);font-size:clamp(16px,1.7vw,20px);letter-spacing:.08em;
  color:var(--phos);border-bottom:1px dashed rgba(93,255,168,.28);
  padding-bottom:.55rem;margin-bottom:.95rem;
}
.frag-date{color:var(--dim)}
.frag-body{
  color:#9db8aa;font-size:clamp(13px,1.35vw,15.5px);line-height:1.95;
}
.redacted{
  color:var(--dim);cursor:help;
  background:rgba(93,255,168,.06);padding:0 .3em;
  letter-spacing:.04em;transition:color .3s,background .3s;
}
.redacted:hover,.redacted:focus{outline:none}
.redacted.resolved{
  display:inline-block;
  color:var(--amber);background:rgba(255,200,87,.07);
  animation:redglitch .32s steps(4) 1;
}
@keyframes redglitch{
  25%{transform:translate(-2px,1px)}
  50%{transform:translate(2px,-1px)}
  75%{transform:translate(-1px,0)}
}

/* ── tuner ──────────────────────────────────────────────────── */
.tuner{border:1px solid rgba(93,255,168,.25);background:#000;box-shadow:0 0 40px rgba(93,255,168,.06),inset 0 0 60px rgba(0,0,0,.8)}
#static-canvas{
  display:block;width:100%;height:min(52vh,460px);
  image-rendering:pixelated;cursor:ew-resize;touch-action:pan-y;
}
.tuner-bar{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;
  border-top:1px solid rgba(93,255,168,.25);
  padding:.55rem 1rem;font-family:var(--crt);font-size:clamp(17px,1.8vw,22px);
  color:var(--dim);letter-spacing:.08em;
}
#freq-readout{color:var(--bright);min-width:7.2em}
#freq-readout.lock{color:var(--phos);text-shadow:0 0 10px rgba(93,255,168,.6)}
.sig{display:flex;align-items:center;gap:.6em}
.sig i{font-style:normal;font-size:.75em}
#sig-meter{display:inline-flex;gap:3px}
#sig-meter b{width:9px;height:14px;background:rgba(93,255,168,.12);transition:background .15s}
#sig-meter b.on{background:var(--phos);box-shadow:0 0 8px rgba(93,255,168,.7)}
#lock-tag{color:var(--dim);min-width:4.5em;text-align:right}
#lock-tag.lock{color:var(--phos);text-shadow:0 0 10px rgba(93,255,168,.6)}

/* ── scope ──────────────────────────────────────────────────── */
.scope-frame{border:1px solid rgba(93,255,168,.25);background:#010403;box-shadow:0 0 40px rgba(93,255,168,.06)}
#scope{display:block;width:100%;height:min(46vh,400px);cursor:col-resize}
.scope-cap{
  display:flex;justify-content:space-between;
  border-top:1px solid rgba(93,255,168,.25);
  padding:.55rem 1rem;font-family:var(--crt);
  font-size:clamp(16px,1.7vw,20px);color:var(--dim);letter-spacing:.08em;
}

/* ── sign-off ───────────────────────────────────────────────── */
.signoff{text-align:center}
.bars{display:flex;height:70px;margin:0 auto 3.4rem;max-width:560px;border:1px solid rgba(93,255,168,.2)}
.bars i{flex:1}
.bars i:nth-child(1){background:#9ba89f}
.bars i:nth-child(2){background:#a8a065}
.bars i:nth-child(3){background:#5c8a72}
.bars i:nth-child(4){background:#57705f}
.bars i:nth-child(5){background:#7a4d5c}
.bars i:nth-child(6){background:#3d4d66}
.bars i:nth-child(7){background:#141d1a}
.signoff .ch-lede{margin:0 auto 3rem}
.signoff-nav{display:flex;gap:1.2rem;justify-content:center;flex-wrap:wrap}
.btn{
  font-family:var(--crt);font-size:clamp(18px,2vw,23px);letter-spacing:.1em;
  color:var(--phos);text-decoration:none;
  border:1px solid var(--phos);padding:.55em 1.5em;
  transition:background .2s,color .2s,box-shadow .2s,transform .15s;
}
.btn:hover{background:rgba(93,255,168,.12);box-shadow:0 0 24px rgba(93,255,168,.35);transform:translateY(-2px)}
.btn-solid{background:var(--phos);color:var(--bg)}
.btn-solid:hover{background:var(--bright);color:var(--bg)}
.hex{
  font-size:11px;letter-spacing:.3em;
  color:rgba(62,107,87,.55);user-select:all;cursor:help;
}

/* ── footer ─────────────────────────────────────────────────── */
.tx-footer{
  position:relative;z-index:10;
  border-top:1px solid rgba(93,255,168,.2);
  background:rgba(4,8,10,.78);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
}
.foot-grid{
  display:grid;grid-template-columns:1.1fr 1fr 1.1fr;gap:2.5rem;
  padding:3.4rem 0 2.6rem;
}
.foot-h{
  font-family:var(--crt);font-size:19px;letter-spacing:.2em;
  color:var(--phos);display:block;margin-bottom:.9rem;
  text-shadow:0 0 10px rgba(93,255,168,.35);
}
.foot-col p{color:var(--dim);font-size:12.5px;line-height:2.1}
.foot-links{display:grid;grid-template-columns:1fr 1fr;gap:.15rem 1.4rem}
.foot-links a{
  text-decoration:none;font-family:var(--crt);font-size:17px;
  letter-spacing:.08em;color:var(--dim);
  transition:color .2s,text-shadow .2s,transform .15s;
  display:inline-block;
}
.foot-links a:hover{color:var(--phos);text-shadow:0 0 10px rgba(93,255,168,.6);transform:translateX(3px)}
.foot-guide{
  font-family:var(--crt);font-size:18px;letter-spacing:.08em;
  text-decoration:none;transition:text-shadow .2s;
}
.foot-guide:hover{text-shadow:0 0 12px rgba(93,255,168,.6)}
.foot-strip{
  width:min(880px,88vw);margin:0 auto;
  border-top:1px solid rgba(93,255,168,.12);
  padding:1.1rem 0 1.3rem;
  display:flex;justify-content:space-between;align-items:center;
  gap:.6rem 1.5rem;flex-wrap:wrap;
  font-size:11px;letter-spacing:.22em;color:rgba(62,107,87,.7);
}

/* ── boot overlay ───────────────────────────────────────────── */
#boot{
  position:fixed;inset:0;z-index:100;background:var(--bg);
  display:flex;align-items:center;justify-content:center;
  transition:opacity .45s ease;
}
#boot.off{opacity:0;pointer-events:none}
.boot-box{
  border:1px solid var(--dim);padding:1.1em 2.4em;
  font-family:var(--crt);font-size:clamp(22px,3.4vw,34px);
  letter-spacing:.22em;color:var(--bright);
  display:grid;place-items:center;
  text-shadow:0 0 14px rgba(93,255,168,.5);
}
.boot-box span{grid-area:1/1}
.boot-nosignal{animation:blink 1s steps(1) infinite}
.boot-tuning{opacity:0;color:var(--phos)}
#boot.tune .boot-nosignal{opacity:0;animation:none}
#boot.tune .boot-tuning{opacity:1;animation:blink .5s steps(1) infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.1}}

body.booting #screen,body.booting .osd,
body.booting .chan-nav,body.booting .tx-footer{visibility:hidden}

/* ── body glitch pulse (channel change) ─────────────────────── */
body.zap #screen{animation:zap .28s steps(3)}
@keyframes zap{
  0%{transform:translateX(0) skewX(0)}
  33%{transform:translateX(-7px) skewX(-1.2deg)}
  66%{transform:translateX(6px) skewX(.8deg)}
  100%{transform:translateX(0) skewX(0)}
}

/* ── mobile ─────────────────────────────────────────────────── */
@media (max-width:640px){
  .osd{font-size:15px}
  .osd-tl{top:.8rem;left:.9rem}
  .osd-tr{top:.8rem;right:.9rem}
  .osd-bl{bottom:.8rem;left:.9rem}
  .osd-br{display:none}
  .chan-nav{
    top:auto;bottom:2.55rem;font-size:14px;gap:.3em;padding:.16em .6em;
  }
  .chan-nav-label{display:none}
  .chan-nav a::after{top:auto;bottom:calc(100% + .7em)}
  .channel{padding:10vh 0}
  .channel:not(#ch01){min-height:52vh}
  .log-row{gap:1rem;flex-direction:column;padding:.9rem .2rem}
  .log-t{flex:none}
  .sched-row{grid-template-columns:4.4em 1fr;gap:.4rem 1.1rem;padding:.95rem .2rem}
  .sched-tag{display:none}
  .sched-desc{margin-top:.15rem}
  .frags{grid-template-columns:1fr}
  .dec-body{padding:1.3rem 1rem}
  .dec-foot{font-size:13px}
  .foot-grid{grid-template-columns:1fr;gap:2rem;padding:2.8rem 0 2rem}
  .foot-strip{padding-bottom:5.2rem}
  #static-canvas{height:46vh}
  #lock-tag{display:none}
  .tuner-bar{font-size:15px}
}

/* ── reduced motion ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .glitch::before,.glitch::after,.trackbar,.flicker,
  .hint-arrow,.rec-dot,.boot-nosignal,.boot-tuning,
  .sched-row.unstable .sched-name,.sched-now,
  .sched-row:hover .sched-name,.redacted.resolved{animation:none !important}
  body.zap #screen{animation:none}
  *{transition-duration:.01ms !important}
}
