/* ============================================================
   THE WHISTLE — 90s arcade cabinet styling
   Palette: CRT near-black/deep-purple + neon cyan / magenta /
   yellow / lime, with neon red reserved for the lie meter.
   ============================================================ */

:root{
  --bg:        #0a0612;   /* CRT near-black, faint purple */
  --bg2:       #140a24;   /* deep purple panel base */
  --panel:     #1b0f33;   /* raised panel */
  --cyan:      #21e6ff;
  --magenta:   #ff2e9a;
  --yellow:    #ffe600;
  --lime:      #6cff3a;
  --red:       #ff2b2b;   /* lie spike only */
  --ink:       #e9e0ff;   /* default text on dark */
  --dim:       #7a6ca8;   /* muted text */
  --frame:     #2a1850;   /* pixel border base */

  /* ---- sports-arcade palette (blue/green/white) — used on the homepage
     now, reusable for the later global pass. Additive: existing neon
     tokens above are untouched so other screens are unaffected. ---- */
  --pitch:     #15692f;   /* grass, dark stripe */
  --pitch2:    #1c7d3b;   /* grass, light stripe */
  --pitch-edge:#0e4a21;   /* deep grass for vignette */
  --chalk:     #ffffff;   /* pitch lines + text */
  --sky:       #2f6bff;   /* bright sports blue */
  --royal:     #1d4ed8;   /* deep blue accent */
  --navy:      #0a1f3a;   /* panels / shadows */
  --wall:      #27344d;   /* office wall */
  --wall2:     #1d2940;   /* office wall, lower / shaded */
  --desk:      #33415c;   /* desk surface */
  --desk2:     #232f47;   /* desk front / shadow */
}

*{ box-sizing:border-box; margin:0; padding:0; }

html,body{
  height:100%;
  background:var(--bg);
  color:var(--ink);
  font-family:"VT323", monospace;
  -webkit-font-smoothing:none;
  image-rendering:pixelated;
  overflow:hidden;
}

/* ---- Cabinet shell ---- */
#cabinet{
  position:fixed; inset:0;
  background:
    radial-gradient(120% 90% at 50% 0%, #1a0d33 0%, var(--bg) 70%);
  display:flex; align-items:center; justify-content:center;
}

#screen{
  position:relative;
  width:100%; height:100%;
  max-width:1100px; max-height:760px;
  overflow:hidden;
}

/* ============================================================
   CRT OVERLAYS
   ============================================================ */
#scanlines, #vignette, #flicker, #wipe{
  position:absolute; inset:0; pointer-events:none; z-index:50;
}
#scanlines{
  background:repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0px,
    rgba(0,0,0,0) 2px,
    rgba(0,0,0,0.28) 3px,
    rgba(0,0,0,0.28) 4px);
  mix-blend-mode:multiply;
}
#vignette{
  background:radial-gradient(120% 120% at 50% 50%,
    rgba(0,0,0,0) 55%, rgba(0,0,0,0.65) 100%);
}
#flicker{
  background:rgba(120,90,200,0.04);
  animation:flicker 5s steps(60) infinite;
}
@keyframes flicker{
  0%,100%{opacity:.35} 48%{opacity:.55} 50%{opacity:.15} 52%{opacity:.5} 96%{opacity:.4}
}
/* chunky wipe between scenes */
#wipe{
  background:var(--cyan);
  transform:scaleY(0);
  transform-origin:top;
  z-index:60;
  opacity:0;
}
#wipe.fire{ animation:wipe .34s steps(6) forwards; }
@keyframes wipe{
  0%{transform:scaleY(0);opacity:1}
  45%{transform:scaleY(1);opacity:1}
  55%{transform:scaleY(1);opacity:1; background:var(--magenta)}
  100%{transform:scaleY(0);transform-origin:bottom;opacity:1; background:var(--magenta)}
}

/* ============================================================
   SCENES
   ============================================================ */
/* ---- Arcade marquee (persistent title) ---- */
#marquee{
  position:absolute; top:0; left:0; right:0; height:30px;
  display:flex; align-items:center; justify-content:center;
  background:linear-gradient(#1a0d33,#0a0612);
  border-bottom:2px solid var(--cyan);
  box-shadow:0 0 12px rgba(33,230,255,.3);
  z-index:30;
}
.marquee-brand{
  font-family:"Press Start 2P", monospace;
  font-size:11px; color:var(--cyan); letter-spacing:1px;
  text-shadow:0 0 8px var(--cyan), 0 0 16px var(--cyan);
}

.scene{
  position:absolute; top:30px; left:0; right:0; bottom:0;
  display:none;
  flex-direction:column;
  padding:24px 30px;
  z-index:10;
}
.scene.active{ display:flex; }

/* ============================================================
   TYPOGRAPHY
   ============================================================ */
h1,h2,h3,.label,.tag,.hud-label,.arcade-btn,.arcade-mini,.coin,.press-start,.subtitle,.meter-tag,.meter-readout{
  font-family:"Press Start 2P", monospace;
  text-transform:uppercase;
}
.body-text, .bio, .role, .dialogue, .rules, .evidence-log, .cta-line, .credit-line{
  font-family:"VT323", monospace;
}
.body-text{ font-size:24px; line-height:1.25; color:var(--ink); }
.body-text.big{ font-size:30px; color:var(--yellow); }
.label{
  font-size:11px; color:var(--cyan); letter-spacing:1px;
  margin:14px 0 8px; text-shadow:0 0 8px var(--cyan);
}

/* ============================================================
   BUTTONS — blocky, hard shadow, pressed state
   ============================================================ */
.arcade-btn{
  display:inline-block;
  font-size:14px; line-height:1.4;
  color:#0a0612; background:var(--yellow);
  border:0; border-radius:0;
  padding:16px 22px;
  cursor:pointer;
  text-decoration:none;
  text-align:center;
  box-shadow:6px 6px 0 #000, 0 0 14px var(--yellow);
  transition:none;
  align-self:center;
  margin-top:auto;
}
.arcade-btn:hover{ background:#fff200; }
.arcade-btn:active{ transform:translate(6px,6px); box-shadow:0 0 14px var(--yellow); }
.arcade-btn:disabled{
  background:var(--frame); color:var(--dim);
  box-shadow:6px 6px 0 #000; cursor:not-allowed;
}
.arcade-btn.danger{ background:var(--magenta); color:#0a0612; box-shadow:6px 6px 0 #000, 0 0 14px var(--magenta); }
.arcade-btn.danger:hover{ background:#ff4fae; }
.arcade-btn.accuse{ background:var(--cyan); box-shadow:6px 6px 0 #000, 0 0 14px var(--cyan); margin-top:14px; font-size:11px; padding:13px 14px; }
.arcade-btn.cta-btn{ background:var(--lime); box-shadow:6px 6px 0 #000, 0 0 14px var(--lime); font-size:12px; }

.arcade-mini{
  position:absolute; top:4px; right:10px; z-index:55;
  font-size:8px; padding:6px 9px;
  color:var(--cyan); background:var(--bg2);
  border:2px solid var(--cyan); border-radius:0;
  cursor:pointer;
  box-shadow:3px 3px 0 #000, 0 0 10px rgba(33,230,255,.4);
}
.arcade-mini.on{ color:var(--lime); border-color:var(--lime); box-shadow:3px 3px 0 #000, 0 0 10px rgba(108,255,58,.5); }
.arcade-mini.back{ left:10px; right:auto; color:var(--yellow); border-color:var(--yellow); box-shadow:3px 3px 0 #000, 0 0 10px rgba(255,230,0,.4); }
.arcade-mini:active{ transform:translate(3px,3px); box-shadow:0 0 8px var(--cyan); }

/* ============================================================
   ATTRACT SCREEN — investigator's office, pitch in the window
   (blue/green/white sports palette, low neon)
   ============================================================ */
#scene-attract{
  align-items:center; justify-content:center; text-align:center;
  background:linear-gradient(var(--wall) 0%, var(--wall) 62%, var(--wall2) 62%, var(--wall2) 100%);
  overflow:hidden;
}

/* office layers sit behind the UI */
.office{ position:absolute; inset:0; z-index:0; pointer-events:none; }
.office-wall{ position:absolute; inset:0;
  background:
    repeating-linear-gradient(90deg, transparent 0 78px, rgba(0,0,0,.05) 78px 80px),
    radial-gradient(120% 80% at 50% 38%, rgba(120,150,200,.10), transparent 60%); }

/* --- window onto the floodlit pitch (top band) --- */
.window-pitch{
  position:absolute; top:30px; left:50%; transform:translateX(-50%);
  width:min(580px,76%); height:166px;
  background:#0a1730;
  border:6px solid #4a5d80; border-bottom-width:8px;
  box-shadow:0 6px 0 rgba(0,0,0,.35), inset 0 0 0 2px #16223c;
  overflow:hidden;
}
.win-sky{ position:absolute; top:0; left:0; right:0; height:46%;
  background:linear-gradient(#0a1f44, #163a6e); }
.win-stands{ position:absolute; top:38%; left:0; right:0; height:12%;
  background:repeating-linear-gradient(90deg, #20406f 0 4px, #2b5184 4px 8px);
  box-shadow:0 1px 0 rgba(0,0,0,.4); }
.win-grass{ position:absolute; bottom:0; left:0; right:0; height:56%; overflow:hidden; }
.grass-stripes{ position:absolute; inset:0;
  background:repeating-linear-gradient(90deg, var(--pitch) 0 26px, var(--pitch2) 26px 52px); }
.win-grass .pitch-lines{ position:absolute; inset:6px; width:auto; height:auto;
  color:rgba(255,255,255,.82); }
/* floodlight pylons */
.floodlight{ position:absolute; top:6px; width:30px; height:46%; }
.fl-left{ left:14%; } .fl-right{ right:14%; }
.floodlight .fl-pole{ position:absolute; left:13px; top:10px; width:3px; height:84%; background:#5b6f92; }
.floodlight .fl-head{ position:absolute; left:4px; top:2px; width:22px; height:9px;
  background:#cfe0f5; box-shadow:0 0 12px 3px rgba(207,224,245,.55); }
/* window frame bars + blinds */
.win-mullion{ position:absolute; inset:0;
  background:
    linear-gradient(#3c4d6e,#3c4d6e) center/4px 100% no-repeat,
    linear-gradient(#3c4d6e,#3c4d6e) center/100% 4px no-repeat; opacity:.7; }
.blinds{ position:absolute; top:0; left:0; right:0; height:30%;
  background:repeating-linear-gradient(#c9d6ea 0 4px, #aab9d4 4px 8px);
  border-bottom:2px solid #8493b0; box-shadow:0 2px 4px rgba(0,0,0,.4); }
.win-frame{ position:absolute; inset:0; pointer-events:none;
  box-shadow:inset 0 0 22px rgba(0,0,0,.45); }

/* --- floor + interrogation table (obvious, with drawers) --- */
.floor{ position:absolute; left:0; right:0; bottom:0; height:74px; z-index:0;
  background:linear-gradient(#222d44, #1a2336);
  border-top:3px solid #3a4866; box-shadow:0 -1px 0 rgba(255,255,255,.05); }

.desk{ position:absolute; left:0; right:0; bottom:0; height:196px; }

/* the table body (front panel with drawers) */
.desk-body{ position:absolute; left:50%; transform:translateX(-50%); bottom:0;
  width:min(680px,90%); height:118px;
  background:linear-gradient(#5a4127 0%, #4a3520 55%, #3a2917 100%);
  border-left:4px solid #2e2113; border-right:4px solid #2e2113;
  box-shadow:0 -2px 0 rgba(0,0,0,.3), inset 0 0 22px rgba(0,0,0,.35); }
.drawer{ position:absolute; left:14px; right:14px; height:30px;
  background:linear-gradient(#5f4629, #4d3820);
  border:2px solid #2e2113; border-radius:1px; }
.drawer::after{ content:""; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:34px; height:5px; background:#caa86a; box-shadow:1px 1px 0 rgba(0,0,0,.4); }
.drawer-1{ top:12px; } .drawer-2{ top:50px; }
.desk-plate{ position:absolute; left:50%; transform:translateX(-50%); bottom:10px;
  font-family:"Press Start 2P", monospace; font-size:9px; letter-spacing:1px;
  color:#0f1830; background:#caa86a; padding:5px 10px;
  box-shadow:2px 2px 0 rgba(0,0,0,.45); }

/* the thick tabletop slab that items sit on */
.desk-slab{ position:absolute; left:50%; transform:translateX(-50%); bottom:112px;
  width:min(720px,94%); height:26px;
  background:linear-gradient(#7a5a34 0 4px, #6b4f2e 4px 16px, #4a3620 16px 100%);
  border-top:3px solid #9a7440;
  box-shadow:0 5px 0 rgba(0,0,0,.4); }

.lamp-pool{ position:absolute; left:50%; bottom:120px; transform:translateX(-50%);
  width:440px; height:140px;
  background:radial-gradient(48% 70% at 50% 100%, rgba(255,246,200,.30), transparent 72%);
  pointer-events:none; }

/* items resting on the slab top */
.desk-props{ position:absolute; left:50%; transform:translateX(-50%); bottom:128px;
  width:min(700px,92%);
  display:flex; align-items:flex-end; justify-content:space-between; }
.prop{ height:auto; filter:drop-shadow(2px 3px 0 rgba(0,0,0,.45)); }
.prop-lamp{ width:62px; margin-bottom:-2px; }
.prop-file{ width:78px; transform:rotate(-3deg); }
.prop-lie{ width:92px; }
.prop-mug{ width:38px; }
.prop-whistle{ width:42px; }
.prop-ball{ width:34px; animation:bob 1.6s steps(4) infinite; }
@keyframes bob{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-4px)} }

/* --- foreground UI (locked into the band between window and desk) --- */
.attract-inner{ position:absolute; left:0; right:0; top:178px; bottom:214px; z-index:2;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; }
.coin{ font-size:12px; color:var(--chalk); text-shadow:2px 2px 0 var(--navy); }

/* frosted-glass office door carrying the title */
.door{
  position:relative;
  padding:14px 34px 16px;
  background:linear-gradient(135deg, rgba(206,224,247,.20), rgba(150,180,220,.12));
  border:4px solid #aebfda; border-radius:2px;
  box-shadow:0 0 0 2px rgba(255,255,255,.12) inset, 6px 6px 0 rgba(0,0,0,.4);
  backdrop-filter:blur(1px);
}
.door::before{ /* frosted pebble texture */
  content:""; position:absolute; inset:0;
  background:repeating-linear-gradient(0deg, rgba(255,255,255,.05) 0 2px, transparent 2px 4px);
  pointer-events:none; }
.door-handle{ position:absolute; right:6px; top:50%; transform:translateY(-50%);
  width:6px; height:22px; background:#cfe0f5; box-shadow:1px 1px 0 rgba(0,0,0,.4); }
.logo-title{
  font-size:46px; line-height:1.04; color:var(--chalk); letter-spacing:2px;
  text-shadow:
    -2px 0 var(--navy), 2px 0 var(--navy), 0 -2px var(--navy), 0 2px var(--navy),
    4px 4px 0 var(--royal);
}
.door-sub{ font-family:"Press Start 2P", monospace; font-size:9px; letter-spacing:2px;
  color:#bcd0f2; margin-top:8px; text-shadow:1px 1px 0 var(--navy); }

.subtitle{ font-size:12px; color:var(--chalk); text-shadow:2px 2px 0 var(--navy); letter-spacing:1px; }

/* HI-SCORE scoreboard (desk CRT / board) */
.scoreboard{
  display:inline-flex; align-items:center; gap:14px;
  font-family:"Press Start 2P", monospace; font-size:11px;
  color:var(--chalk);
  background:var(--navy);
  border:3px solid var(--sky); border-top-width:6px;
  padding:9px 14px;
  box-shadow:4px 4px 0 rgba(0,0,0,.5);
}
.scoreboard .sb-clock{ color:#7dffa6; }
.scoreboard .sb-main{ color:var(--chalk); }
.scoreboard .sb-ref{ color:#8fb6ff; font-size:9px; }

.press-start{ font-size:20px; color:var(--chalk); text-shadow:2px 2px 0 var(--royal); cursor:pointer; }
.credit-line{ font-size:18px; color:rgba(255,255,255,.75); text-shadow:1px 1px 0 var(--navy); }
.unmute-hint{ font-size:16px; color:#bfe9cb; text-shadow:1px 1px 0 var(--navy); }

/* --- investigator sign-in (email gate) --- */
.signin{ display:flex; flex-direction:column; align-items:center; gap:8px; }
.signin-label{ font-family:"Press Start 2P", monospace; font-size:10px; letter-spacing:1px;
  color:#bcd0f2; text-shadow:1px 1px 0 var(--navy); }
.signin-row{ display:flex; width:min(440px,84vw); box-shadow:5px 5px 0 rgba(0,0,0,.5); }
.email-input{
  flex:1; min-width:0;
  font-family:"VT323", monospace; font-size:24px; line-height:1;
  color:var(--chalk); background:var(--navy);
  border:3px solid var(--sky); border-right:none; border-radius:0;
  padding:9px 12px; outline:none;
}
.email-input::placeholder{ color:#5f7196; }
.email-input:focus{ border-color:#7dffa6; }
.start-btn{
  flex:0 0 auto;
  font-family:"Press Start 2P", monospace; font-size:11px;
  color:#06140c; background:#22a64a;
  border:3px solid #22a64a; border-radius:0;
  padding:0 16px; cursor:pointer;
}
.start-btn:hover{ background:#2bd45c; border-color:#2bd45c; }
.start-btn:active{ transform:translate(2px,2px); }
.signin-note{ font-family:"VT323", monospace; font-size:17px; color:#bfe9cb; text-shadow:1px 1px 0 var(--navy); }
.signin-error{ font-family:"Press Start 2P", monospace; font-size:8px; min-height:10px;
  color:#ff6b6b; text-shadow:1px 1px 0 var(--navy); letter-spacing:1px; }
.blink-border{ animation:btnpulse 1.1s steps(2) infinite; }
@keyframes btnpulse{ 0%,60%{box-shadow:0 0 0 rgba(0,0,0,0)} 61%,100%{box-shadow:0 0 14px rgba(34,166,74,.7)} }

/* ============================================================
   CASE SELECT (sports blue/green/white, matches homepage)
   ============================================================ */
#scene-select{
  align-items:center; justify-content:center;
  background:var(--pitch); overflow:hidden;
}
/* football pitch backdrop */
.select-bg{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; }
.select-grass{ position:absolute; inset:0;
  background:repeating-linear-gradient(90deg, var(--pitch) 0 56px, var(--pitch2) 56px 112px); }
.select-lines{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:min(1000px,98%); height:auto; color:rgba(255,255,255,.30); }
.select-scrim{ position:absolute; inset:0;
  background:
    radial-gradient(120% 90% at 50% 46%, transparent 42%, rgba(6,30,16,.6) 100%),
    linear-gradient(rgba(8,28,16,.18), rgba(8,28,16,.42)); }

.select-head{ position:relative; z-index:1; text-align:center; margin-bottom:22px; }
.select-tag{ display:inline-block; font-family:"Press Start 2P", monospace; font-size:9px;
  color:var(--chalk); background:var(--navy); border:2px solid var(--sky);
  padding:6px 10px; box-shadow:3px 3px 0 rgba(0,0,0,.6); margin-bottom:12px; }
.select-title{ font-family:"Press Start 2P", monospace; font-size:24px; color:var(--chalk);
  letter-spacing:1px; text-shadow:3px 3px 0 var(--royal); }
.select-sub{ font-family:"VT323", monospace; font-size:20px; color:#bcd0f2; margin-top:8px; }

.select-grid{ position:relative; z-index:1; display:grid; grid-template-columns:repeat(3,1fr); gap:18px;
  width:min(900px,94%); }
.case-card{
  display:flex; flex-direction:column; align-items:flex-start; gap:7px;
  text-align:left; cursor:pointer;
  background:#0e1b33; color:var(--chalk);
  border:3px solid #21314f; border-top:6px solid var(--team, var(--sky));
  border-radius:0; padding:14px 16px 18px;
  box-shadow:5px 5px 0 rgba(0,0,0,.6);
  transition:none;
}
.case-card:hover{ border-color:var(--team, var(--sky)); transform:translateY(-4px);
  box-shadow:5px 9px 0 rgba(0,0,0,.6); }
.case-card:active{ transform:translateY(0); box-shadow:5px 5px 0 rgba(0,0,0,.6); }
.cc-head{ display:flex; align-items:center; gap:9px; }
.cc-crest{ width:22px; height:auto; filter:drop-shadow(1px 1px 0 rgba(0,0,0,.5)); }
.cc-no{ font-family:"Press Start 2P", monospace; font-size:11px; color:var(--team, var(--sky)); }
.cc-type{ font-family:"Press Start 2P", monospace; font-size:7px; letter-spacing:1px;
  color:#dce6f7; background:rgba(255,255,255,.08); border-left:3px solid var(--team, var(--sky)); padding:4px 7px; }
.cc-title{ font-family:"Press Start 2P", monospace; font-size:13px; line-height:1.5;
  color:var(--chalk); margin-top:2px; }
.cc-use{ font-family:"VT323", monospace; font-size:19px; color:#aebccf; }
.cc-meta{ font-family:"VT323", monospace; font-size:16px; color:#6f86b5; margin-top:auto; }

.blink{ animation:blink 1s steps(2) infinite; }
.blink-slow{ animation:blink 1.1s steps(2) infinite; }
@keyframes blink{ 0%,50%{opacity:1} 51%,100%{opacity:0} }

/* ============================================================
   SCENE HEADERS
   ============================================================ */
.scene-head{ margin-bottom:6px; }
.scene-head h2{ font-size:26px; color:var(--yellow); text-shadow:0 0 12px var(--yellow), 3px 3px 0 #000; letter-spacing:1px; }
.tag{
  display:inline-block; font-size:10px; color:#0a0612; background:var(--cyan);
  padding:6px 9px; margin-bottom:10px; box-shadow:3px 3px 0 #000;
}

/* ============================================================
   BRIEFING
   ============================================================ */
#scene-briefing{ overflow:hidden; }
.briefing-body{ flex:1; overflow:auto; padding-right:6px; }
.rules{ font-size:20px; color:var(--lime); margin-top:14px; }

/* roster grids */
.roster-grid{
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:12px;
}
.roster-card{
  background:var(--panel);
  border:3px solid var(--frame);
  padding:10px 8px; text-align:center;
  box-shadow:4px 4px 0 #000;
}
.roster-card .portrait{ width:100%; height:auto; display:block; margin-bottom:8px; }
.roster-card .rc-name{ font-family:"Press Start 2P"; font-size:8px; color:var(--ink); line-height:1.5; }
.roster-card .rc-role{ font-family:"VT323"; font-size:16px; color:var(--dim); }

/* ============================================================
   INVESTIGATION
   ============================================================ */
#scene-investigation{ padding:18px 22px; }

#hud{
  display:flex; align-items:center; gap:18px;
  border:3px solid var(--cyan);
  background:var(--bg2);
  padding:10px 14px; margin-bottom:14px;
  box-shadow:4px 4px 0 #000, 0 0 14px rgba(33,230,255,.25);
}
.hud-block{ display:flex; flex-direction:column; gap:5px; }
.hud-label{ font-size:8px; color:var(--dim); }
.hud-value{ font-family:"Press Start 2P"; font-size:16px; color:var(--cyan); text-shadow:0 0 8px var(--cyan); }
.hud-score-block{ margin-left:auto; text-align:right; }
.hud-score-block .hud-value{ color:var(--yellow); text-shadow:0 0 8px var(--yellow); }
.hud-probes{ display:flex; gap:5px; }
.probe-pip{ width:14px; height:18px; background:var(--lime); box-shadow:0 0 6px var(--lime); display:inline-block; }
.probe-pip.spent{ background:var(--frame); box-shadow:none; }

.investigation-grid{
  flex:1; display:grid;
  grid-template-columns:150px 1fr 200px;
  gap:14px; min-height:0;
}

/* roster rail */
.roster-rail{ display:flex; flex-direction:column; gap:8px; overflow:auto; }
.rail-card{
  display:flex; align-items:center; gap:8px;
  background:var(--panel); border:3px solid var(--frame);
  padding:7px; cursor:pointer; box-shadow:3px 3px 0 #000;
  text-align:left;
}
.rail-card:hover{ border-color:var(--ink); }
.rail-card.active{ border-color:var(--yellow); box-shadow:3px 3px 0 #000, 0 0 12px var(--yellow); }
.rail-card .portrait{ width:36px; height:36px; flex:0 0 36px; }
.rail-card .rc-name{ font-family:"Press Start 2P"; font-size:7px; color:var(--ink); line-height:1.5; }
.rail-card .rc-role{ font-family:"VT323"; font-size:15px; color:var(--dim); }
.rail-card.done .rc-name{ color:var(--dim); }

/* interview column */
.interview{ display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.suspect-header{ display:flex; gap:14px; align-items:flex-start; margin-bottom:12px; }
.portrait-large{ width:84px; height:84px; flex:0 0 84px; }
.portrait{ display:block; }
.portrait-large .portrait{ width:100%; height:100%; }
.suspect-id h3{ font-size:16px; color:var(--yellow); text-shadow:0 0 8px var(--yellow); line-height:1.4; }
.suspect-id .role{ font-size:20px; color:var(--cyan); }
.suspect-id .bio{ font-size:19px; color:var(--ink); line-height:1.2; margin-top:5px; }

/* meter */
.meter-wrap{
  position:relative;
  border:3px solid var(--lime);
  background:#04140a;
  padding:8px;
  box-shadow:4px 4px 0 #000, inset 0 0 18px rgba(108,255,58,.18);
  margin-bottom:12px;
}
.meter-wrap.lie{ border-color:var(--red); box-shadow:4px 4px 0 #000, inset 0 0 24px rgba(255,43,43,.35), 0 0 18px var(--red); }
.meter-tag{ position:absolute; top:8px; left:10px; font-size:8px; color:var(--lime); text-shadow:0 0 6px var(--lime); }
.meter-wrap.lie .meter-tag{ color:var(--red); text-shadow:0 0 6px var(--red); }
#meter{ display:block; width:100%; height:90px; }
.meter-readout{
  position:absolute; bottom:8px; right:10px; font-size:10px;
  color:var(--lime); text-shadow:0 0 8px var(--lime);
}
.meter-readout.lie{ color:var(--red); text-shadow:0 0 8px var(--red); }
.meter-readout.truth{ color:var(--lime); text-shadow:0 0 8px var(--lime); }

/* dialogue */
.dialogue{
  flex:0 0 auto; min-height:78px;
  border:3px solid var(--frame); background:var(--bg2);
  padding:10px 12px; margin-bottom:12px; overflow:auto;
  box-shadow:3px 3px 0 #000;
}
.dialogue .q-echo{ font-size:19px; color:var(--cyan); }
.dialogue .a-text{ font-size:23px; color:var(--ink); margin-top:4px; }
.dialogue-placeholder{ font-size:19px; color:var(--dim); line-height:1.2; }

/* question buttons */
.question-list{ display:flex; flex-direction:column; gap:8px; overflow:auto; }
.q-btn{
  font-family:"VT323"; font-size:20px;
  text-align:left; color:var(--ink); background:var(--panel);
  border:3px solid var(--frame); border-radius:0;
  padding:9px 12px; cursor:pointer; box-shadow:3px 3px 0 #000;
}
.q-btn:hover{ border-color:var(--cyan); color:#fff; }
.q-btn:active{ transform:translate(3px,3px); box-shadow:none; }
.q-btn.asked{ color:var(--dim); border-style:dashed; cursor:default; }
.q-btn.asked:active{ transform:none; box-shadow:3px 3px 0 #000; }

/* evidence rail */
.evidence-rail{ display:flex; flex-direction:column; min-height:0; }
.evidence-log{ list-style:none; flex:1; overflow:auto; display:flex; flex-direction:column; gap:7px; }
.evidence-log li{
  font-size:17px; line-height:1.15; color:var(--yellow);
  border-left:3px solid var(--magenta); padding:4px 8px;
  background:rgba(255,46,154,.08);
}
.evidence-log li.evidence-empty{ color:var(--dim); border-color:var(--frame); background:none; }

/* ============================================================
   ACCUSATION
   ============================================================ */
.accuse-grid{ margin-top:18px; }
.accuse-grid .roster-card{ cursor:pointer; }
.accuse-grid .roster-card:hover{ border-color:var(--ink); }
.accuse-grid .roster-card.chosen{ border-color:var(--magenta); box-shadow:4px 4px 0 #000, 0 0 14px var(--magenta); }
.accuse-confirm{ margin-top:auto; display:flex; flex-direction:column; align-items:center; gap:12px; }

/* ============================================================
   VERDICT
   ============================================================ */
.verdict-stamp{
  font-size:34px; text-align:center; margin:6px 0 16px;
  letter-spacing:2px;
}
.verdict-stamp.win{ color:var(--lime); text-shadow:0 0 16px var(--lime), 4px 4px 0 #000; }
.verdict-stamp.lose{ color:var(--red); text-shadow:0 0 16px var(--red), 4px 4px 0 #000; }
.verdict-body{ flex:1; overflow:auto; }
.headline-card{
  margin-top:16px; padding:14px;
  border:3px dashed var(--yellow); background:var(--bg2);
  font-family:"VT323"; font-size:23px; line-height:1.25; color:var(--ink);
  box-shadow:4px 4px 0 #000;
}

/* ============================================================
   RESULT
   ============================================================ */
#scene-result{ align-items:center; text-align:center; overflow:auto; }
.result-card{ width:100%; max-width:560px; display:flex; flex-direction:column; align-items:center; gap:8px; }
.score-breakdown{ list-style:none; width:100%; }
.score-breakdown li{
  display:flex; justify-content:space-between;
  font-family:"VT323"; font-size:22px; color:var(--ink);
  padding:4px 0; border-bottom:2px dotted var(--frame);
}
.score-breakdown li span:last-child{ color:var(--lime); }
.final-score{ font-family:"Press Start 2P"; font-size:38px; color:var(--yellow); text-shadow:0 0 16px var(--yellow), 3px 3px 0 #000; }
.initials-row{ display:flex; flex-direction:column; align-items:center; gap:8px; margin:8px 0; }
.initials-entry{ display:flex; gap:10px; }
.initial-box{
  width:46px; height:54px;
  font-family:"Press Start 2P"; font-size:24px;
  display:flex; align-items:center; justify-content:center;
  color:var(--cyan); background:var(--bg2);
  border:3px solid var(--cyan); box-shadow:3px 3px 0 #000, 0 0 10px rgba(33,230,255,.35);
  cursor:pointer; user-select:none;
}
.initial-box.active{ border-color:var(--yellow); color:var(--yellow); animation:blink 1s steps(2) infinite; }

.cta-card{
  width:100%; margin:14px 0;
  border:3px solid var(--cyan); background:var(--bg2);
  padding:18px; display:flex; flex-direction:column; align-items:center; gap:12px;
  box-shadow:5px 5px 0 #000, 0 0 16px rgba(33,230,255,.25);
}
.cta-logo{ width:150px; height:auto; }
.cta-head{ font-family:"Press Start 2P", monospace; font-size:12px; line-height:1.6;
  color:var(--yellow); text-shadow:0 0 10px var(--yellow); }
.cta-line{ font-size:24px; color:var(--ink); line-height:1.25; }

/* ============================================================
   RESPONSIVE — narrow / mobile
   ============================================================ */
@media (max-width:720px){
  .scene{ padding:16px 14px; }
  .logo-title{ font-size:38px; }
  .investigation-grid{
    grid-template-columns:1fr;
    grid-template-rows:auto auto auto;
    overflow:auto;
  }
  .roster-rail{ flex-direction:row; overflow-x:auto; }
  .rail-card{ flex:0 0 auto; }
  .evidence-rail{ min-height:160px; }
  .roster-grid{ grid-template-columns:repeat(2,1fr); }
  .body-text{ font-size:20px; }
  #hud{ gap:10px; padding:8px 10px; }
  .hud-value{ font-size:12px; }
  .marquee-brand{ font-size:9px; }
  .title-row{ gap:8px; }
  .motif{ width:32px; }
  .motif-ball{ width:28px; }
  .scoreboard{ font-size:9px; gap:8px; padding:8px 10px; }
  .scoreboard .sb-ref{ font-size:8px; }
  .corner-flag{ width:22px; }
  .select-grid{ grid-template-columns:1fr; gap:12px; width:92%; max-height:62vh; overflow:auto; }
  .select-title{ font-size:18px; }
  .case-card{ padding:12px; }
}
