:root{
  --bg:#0a0a0a; --ink:#f4f1ea; --muted:#9a948a;
  --gold:#c09e5a; --cyan:#00d4ff; --coral:#ff6b6b; --green:#2fd08a;
  --panel:rgba(22,22,24,.72); --line:rgba(244,241,234,.10);
  --mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --disp:"Space Grotesk",system-ui,"Segoe UI",sans-serif;
  --body:"Inter",system-ui,"Segoe UI",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{ display:none !important; }
html,body{height:100%}
body{
  background:var(--bg); color:var(--ink); font-family:var(--body);
  overflow:hidden; -webkit-font-smoothing:antialiased;
}
#app{
  display:grid; grid-template-columns:1fr minmax(380px,440px);
  height:100vh; width:100vw;
}

/* ===================== STAGE ===================== */
#stage{ position:relative; overflow:hidden;
  background:
    radial-gradient(120% 80% at 50% 2%, #161821 0%, #0b0c10 50%, #060608 100%); }
#scene{ position:absolute; inset:0; width:100%; height:100%; display:block; }

#titlebar{ position:absolute; top:26px; left:34px; z-index:6; pointer-events:none;
  text-shadow:0 2px 22px #000; }
.kicker{ font-family:var(--mono); font-size:11px; letter-spacing:.32em;
  color:var(--gold); margin-bottom:8px; }
#titlebar h1{ font-family:var(--disp); font-weight:700; font-size:clamp(30px,3.4vw,54px);
  letter-spacing:.04em; line-height:.95; }
.tag{ color:var(--muted); font-size:13.5px; margin-top:10px; max-width:34ch; line-height:1.4; }

/* The two diverging gauges — the STAR */
#gauges{ position:absolute; top:24px; right:30px; z-index:6; width:300px;
  display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.gauge{ background:linear-gradient(160deg,rgba(20,20,22,.86),rgba(13,13,16,.82));
  border:1px solid var(--line); border-radius:14px; padding:13px 14px 14px;
  backdrop-filter:blur(8px); box-shadow:0 18px 40px -22px #000; }
.g-label{ font-family:var(--mono); font-size:9.5px; letter-spacing:.18em; color:var(--muted); }
.g-label i{ font-style:normal; display:block; font-size:8.5px; letter-spacing:.12em; opacity:.7; margin-top:2px; }
.g-num{ font-family:var(--mono); font-weight:700; font-size:34px; line-height:1.0; margin-top:8px;
  letter-spacing:-.02em; transition:color .35s; }
.gauge-det .g-num{ color:var(--green); }
.gauge-harm .g-num{ color:var(--gold); }
.g-track{ height:7px; border-radius:5px; background:rgba(255,255,255,.07); margin-top:11px; overflow:hidden; }
.g-fill{ height:100%; width:0%; border-radius:5px; transition:width .55s cubic-bezier(.4,0,.2,1), background .4s; }
.g-fill.det{ background:linear-gradient(90deg,var(--green),var(--cyan)); }
.g-fill.harm{ background:linear-gradient(90deg,var(--gold),var(--coral)); }
.g-foot{ font-family:var(--mono); font-size:9px; letter-spacing:.1em; color:var(--muted);
  margin-top:9px; transition:color .35s; min-height:12px; }
.gauge-det.crashing .g-num{ color:var(--coral); }
.gauge-det.crashing .g-fill.det{ background:linear-gradient(90deg,var(--coral),#ff9d6b); }
.gauge-det.crashing .g-foot{ color:var(--coral); }
.gauge-harm.hot .g-num{ color:var(--coral); }
.gauge-harm.hot .g-foot{ color:var(--coral); }

/* Status banner over the mirror */
.status-banner{ position:absolute; left:50%; top:120px; transform:translateX(-50%);
  z-index:8; font-family:var(--mono); font-weight:700; font-size:14px; letter-spacing:.2em;
  color:#ffe0e0; background:rgba(74,12,12,.66); border:1px solid rgba(255,107,107,.55);
  padding:9px 20px; border-radius:9px; box-shadow:0 0 34px rgba(255,70,70,.45);
  display:flex; align-items:center; gap:10px; animation:sbflash .9s ease; }
.status-banner.quiet{ color:#cfe9d8; background:rgba(14,30,22,.62);
  border-color:rgba(47,208,138,.4); box-shadow:0 0 28px rgba(47,208,138,.28); }
.sb-ico{ font-size:13px; }
@keyframes sbflash{ 0%{opacity:0;transform:translateX(-50%) scale(.92)} 16%{opacity:1}
  72%{opacity:1} 100%{opacity:0; transform:translateX(-50%) scale(1.02)} }

/* ===================== DECK ===================== */
#deck{ background:#0c0c0e; border-left:1px solid var(--line);
  padding:20px 20px 14px; display:flex; flex-direction:column; gap:12px; overflow-y:auto; }
.panel{ background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:15px 16px; }
.panel-head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:13px; }
.panel-title{ font-family:var(--mono); font-size:11px; letter-spacing:.2em; color:var(--ink); }
.panel-title .lock{ font-size:10px; color:var(--cyan); transition:color .35s; }
.panel-title .lock.covert{ color:var(--coral); }
.panel-hint{ font-size:10.5px; color:var(--muted); font-family:var(--mono); letter-spacing:.04em; }

/* Dial — the elicitation knob */
.dial{ padding:2px 4px 0; }
#press{ -webkit-appearance:none; appearance:none; width:100%; height:7px; border-radius:6px;
  background:linear-gradient(90deg,var(--green),var(--gold) 50%,var(--coral));
  outline:none; margin-bottom:4px; cursor:pointer; }
#press::-webkit-slider-thumb{ -webkit-appearance:none; width:24px; height:24px; border-radius:50%;
  background:#fff; border:3px solid #0c0c0e; box-shadow:0 0 0 2px var(--cyan),0 4px 14px #000;
  cursor:grab; transition:transform .1s; }
#press::-webkit-slider-thumb:active{ transform:scale(1.12); cursor:grabbing; }
#press::-moz-range-thumb{ width:22px; height:22px; border-radius:50%; background:#fff;
  border:3px solid #0c0c0e; box-shadow:0 0 0 2px var(--cyan); cursor:grab; }
.dial-poles{ display:flex; justify-content:space-between; margin-top:7px; }
.pole{ background:none; border:none; color:var(--muted); cursor:pointer;
  display:flex; flex-direction:column; align-items:flex-start; gap:2px; font-family:var(--mono);
  padding:5px 7px; border-radius:7px; transition:color .2s,background .2s; text-align:left; }
.pole.right{ align-items:flex-end; text-align:right; }
.pole b{ font-size:11px; letter-spacing:.08em; }
.pole i{ font-style:normal; font-size:9.5px; letter-spacing:.04em; }
.pole:hover{ color:var(--ink); }
.pole.active{ color:var(--cyan); background:rgba(0,212,255,.08); }
.pole.right.active{ color:var(--coral); background:rgba(255,107,107,.08); }

.mode-readout{ margin-top:15px; padding-top:13px; border-top:1px solid var(--line); }
.mr-name{ font-family:var(--disp); font-weight:700; font-size:19px; letter-spacing:.02em; }
.mr-blurb{ color:var(--muted); font-size:12.5px; margin-top:5px; line-height:1.45; min-height:36px; }

/* Transport */
.transport{ display:flex; gap:9px; }
.btn{ flex:1; font-family:var(--mono); font-size:12px; letter-spacing:.04em;
  color:var(--ink); background:rgba(255,255,255,.05); border:1px solid var(--line);
  border-radius:9px; padding:11px 8px; cursor:pointer; transition:.16s;
  display:flex; align-items:center; justify-content:center; gap:6px; }
.btn:hover{ background:rgba(255,255,255,.1); border-color:rgba(244,241,234,.22); }
.btn:active{ transform:translateY(1px); }
.btn.primary{ background:rgba(0,212,255,.12); border-color:rgba(0,212,255,.35); color:#cfeffb; }
.btn.primary:hover{ background:rgba(0,212,255,.2); }
.btn .ico-pause{ display:none; }
.btn.playing .ico-play{ display:none; }
.btn.playing .ico-pause{ display:inline; }
.btn:focus-visible,.pole:focus-visible,#press:focus-visible{ outline:2px solid var(--cyan); outline-offset:2px; }

.round-row{ display:flex; align-items:center; gap:12px; margin-top:13px; }
.round-label{ font-family:var(--mono); font-size:10px; letter-spacing:.2em; color:var(--muted); }
.round-count{ font-family:var(--mono); font-weight:700; font-size:18px; }
.round-count i{ font-style:normal; color:var(--muted); font-weight:500; font-size:13px; }
.kreadout{ margin-left:auto; font-family:var(--mono); font-size:11.5px; color:var(--muted); letter-spacing:.03em; }
.kreadout b{ color:var(--ink); }

/* Feed */
.feed-panel{ flex:1; min-height:120px; display:flex; flex-direction:column; }
.feed{ flex:1; overflow-y:auto; display:flex; flex-direction:column; gap:8px;
  font-family:var(--mono); font-size:11.5px; line-height:1.4; max-height:260px; }
.fline{ position:relative; padding:8px 11px 9px; border-radius:9px; max-width:94%;
  animation:slidein .3s ease; transition:background .4s, border-color .4s; }
@keyframes slidein{ from{opacity:0;transform:translateY(6px)} to{opacity:1;transform:none} }
.fline.a{ align-self:flex-start; background:rgba(0,212,255,.1); border:1px solid rgba(0,212,255,.22); }
.fline.b{ align-self:flex-end; background:rgba(192,158,90,.12); border:1px solid rgba(192,158,90,.28); }
.fline .who{ display:flex; justify-content:space-between; align-items:center;
  font-size:8.5px; letter-spacing:.14em; opacity:.78; margin-bottom:4px; }
.fline.a .who{ color:var(--cyan); }
.fline.b .who{ color:var(--gold); }
.fline .tag{ font-family:var(--mono); font-weight:700; letter-spacing:.1em; }
.fline .tag.overt{ color:var(--coral); }
.fline .tag.covert{ color:var(--green); }
/* covert lines visibly read as bland cover text */
.fline.covert{ opacity:.92; }
.fline.covert.a{ background:rgba(120,128,134,.10); border-color:rgba(154,148,138,.26); }
.fline.covert.b{ background:rgba(120,128,134,.10); border-color:rgba(154,148,138,.26); }
.fline .msg{ display:block; transition:opacity .25s; }
.fline.morphing .msg{ opacity:.25; }
/* the faint "decode" line under covert text */
.fline .decode{ display:none; font-size:8.5px; letter-spacing:.04em; color:var(--muted);
  margin-top:5px; padding-top:5px; border-top:1px dashed rgba(244,241,234,.14);
  font-style:italic; opacity:.8; }
.fline.covert .decode{ display:block; }
.fline.empty{ align-self:center; color:var(--muted); background:none; border:none; font-style:italic; opacity:.6; }

/* Verdict */
.verdict-panel{ background:linear-gradient(150deg,rgba(16,40,28,.5),rgba(14,20,18,.6));
  border-color:rgba(47,208,138,.3); }
.verdict-panel.danger{ background:linear-gradient(150deg,rgba(40,16,16,.6),rgba(20,14,14,.6));
  border-color:rgba(255,107,107,.3); }
.verdict-head{ font-family:var(--mono); font-size:10px; letter-spacing:.24em; color:var(--muted); }
.verdict-line{ font-family:var(--disp); font-weight:500; font-size:16px; margin-top:7px; line-height:1.3; }
.verdict-line b{ font-family:var(--mono); }
.verdict-foot{ font-size:11.5px; color:var(--muted); margin-top:7px; line-height:1.45; }

#credits{ font-size:10px; color:var(--muted); text-align:center; line-height:1.5;
  margin-top:auto; padding-top:6px; }
#credits a{ color:var(--gold); text-decoration:none; }
#credits a:hover{ text-decoration:underline; }

/* Responsive */
@media (max-width:1180px){
  #app{ grid-template-columns:1fr minmax(340px,380px); }
  #gauges{ width:260px; }
  .g-num{ font-size:30px; }
}
@media (max-width:720px){
  #app{ grid-template-columns:1fr; grid-template-rows:48vh 1fr; }
  #stage{ min-height:0; }
  #deck{ border-left:none; border-top:1px solid var(--line); }
  #titlebar{ top:14px; left:18px; }
  #titlebar h1{ font-size:24px; }
  .tag{ display:none; }
  #gauges{ width:170px; top:12px; right:12px; gap:7px; }
  .gauge{ padding:8px 9px 9px; }
  .g-label i{ display:none; }
  .g-num{ font-size:21px; }
  .feed{ max-height:200px; }
}
@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.001ms !important; animation-iteration-count:1 !important;
     transition-duration:.05ms !important; }
}
