:root {
  --bg:#071016;
  --panel:#0c1820;
  --panel2:#10232d;
  --line:#24404b;
  --text:#ecf7fa;
  --muted:#8eacb5;
  --cyan:#55e6e2;
  --amber:#ffbf5b;
  --danger:#ff5b69;
  --good:#88ef9a;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:radial-gradient(circle at 50% -15%,#173541 0,#08151b 35%,#050b10 75%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
body{padding:18px}
button,input,summary{font:inherit}
button{cursor:pointer}
.shell{width:min(1180px,100%);margin:0 auto}
.masthead{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:12px}
.eyebrow{margin:0 0 4px;color:var(--cyan);font-size:.72rem;letter-spacing:.18em;font-weight:800}
h1{font-size:clamp(1.65rem,3vw,2.55rem);margin:0;line-height:1;letter-spacing:-.035em}.title-sub{display:block;margin-top:5px;color:#8eb0b7;font-size:.42em;letter-spacing:.12em;text-transform:uppercase}
.header-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
button{border:1px solid var(--line);border-radius:9px;background:#12262f;color:var(--text);padding:9px 13px;font-weight:750;box-shadow:inset 0 1px rgba(255,255,255,.05)}
button:hover{border-color:#3a6572;background:#17323d}
button:disabled{opacity:.45;cursor:not-allowed}
button.primary{background:linear-gradient(180deg,#1aafb0,#0f7f86);border-color:#41dfe0;padding:11px 18px;color:#fff}
button.ghost{background:#0a161c}
button.secondary{background:#101a20;border-color:#36515b;color:#bcd0d5}
.game-card{overflow:hidden;border:1px solid #2c4c57;border-radius:16px;background:#081218;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.hud{display:grid;grid-template-columns:90px 80px minmax(210px,1fr) 180px 118px 96px 82px;gap:1px;background:#203b45;border-bottom:1px solid #203b45}
.hud-block{background:linear-gradient(180deg,#0d1e26,#09161c);padding:8px 12px;min-width:0}
.hud-block span{display:block;color:var(--muted);font-size:.65rem;text-transform:uppercase;letter-spacing:.12em;font-weight:800;margin-bottom:2px}
.hud-block strong{display:block;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud-block.objective strong{color:var(--amber)}
.hud-block.weapon small,.hud-block.ammo small{display:block;margin-top:2px;color:#69cbd7;font:800 .56rem/1.1 ui-monospace,Consolas,monospace;letter-spacing:.06em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud-block.ammo strong{color:#dffcff}.hud-block.ammo strong.low{color:#ffbf5b}.hud-block.ammo strong.empty{color:#ff7b87}
.viewport-wrap{position:relative;background:#000;aspect-ratio:16/9;max-height:72vh;min-height:300px;overflow:hidden}
canvas{display:block;width:100%;height:100%;background:#05090c;outline:none;image-rendering:auto;cursor:crosshair}
.center-prompt{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);background:rgba(4,12,17,.82);border:1px solid rgba(85,230,226,.4);border-radius:999px;padding:7px 13px;font-size:.78rem;color:#d8ffff;pointer-events:none;opacity:0;transition:opacity .15s}
.center-prompt.show{opacity:1}
.status-toast{position:absolute;top:76px;left:50%;transform:translateX(-50%) translateY(-8px);max-width:min(86%,600px);background:rgba(5,14,18,.93);border:1px solid rgba(255,191,91,.55);border-radius:10px;padding:9px 14px;color:#ffe4b7;font-weight:750;font-size:.82rem;opacity:0;transition:.18s;pointer-events:none;text-align:center}
.status-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.crosshair{position:absolute;left:50%;top:50%;width:20px;height:20px;transform:translate(-50%,-50%);pointer-events:none;filter:drop-shadow(0 0 4px rgba(85,230,226,.9))}
.crosshair i,.crosshair b{position:absolute;background:rgba(219,255,255,.9);display:block}
.crosshair i{width:2px;height:16px;left:9px;top:2px}.crosshair b{height:2px;width:16px;left:2px;top:9px}
.damage-flash{position:absolute;inset:0;background:radial-gradient(circle,transparent 35%,rgba(255,38,65,.55));opacity:0;pointer-events:none;transition:opacity .12s}.damage-flash.on{opacity:1}
.mission-overlay{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(180deg,rgba(2,7,10,.2),rgba(2,7,10,.77));padding:20px}
.mission-overlay.hidden{display:none}
.overlay-panel{width:min(620px,92%);padding:24px;border:1px solid rgba(85,230,226,.3);border-radius:14px;background:linear-gradient(180deg,rgba(10,25,32,.94),rgba(6,15,20,.96));box-shadow:0 24px 60px rgba(0,0,0,.4);text-align:center}
.overlay-kicker{margin:0 0 7px;color:var(--cyan);font-size:.72rem;letter-spacing:.15em;font-weight:850}.overlay-panel h2{margin:0 0 8px;font-size:clamp(1.55rem,4vw,2.7rem)}.overlay-panel p{color:#bbd2d8;line-height:1.5}.overlay-controls{font-size:.76rem;margin:12px 0 0!important;color:#7999a2!important}
.mission-strip{display:flex;align-items:center;gap:16px;min-height:40px;padding:8px 12px;background:#0a151b;color:#99b5bd;font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;border-top:1px solid #1b313a}.mission-strip span:nth-child(2){margin-left:auto}.tester-badge{color:#ffcf7d}
.guide,.campaign,.tester{margin-top:12px;border:1px solid #203b45;border-radius:13px;background:rgba(8,19,25,.82);overflow:hidden}
summary{cursor:pointer;padding:11px 14px;font-weight:850;color:#dffcff;list-style-position:inside}
.guide-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:#1b333d;border-top:1px solid #1b333d}.guide-grid div{background:#0b181f;padding:10px 12px}.guide-grid strong{display:block;color:var(--cyan);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.guide-grid span{display:block;color:#c3d8dd;font-size:.82rem;margin-top:3px}.guide-note,.campaign p,.tester p{margin:0;padding:11px 14px;border-top:1px solid #172c34;color:#8ea9b1;font-size:.8rem;line-height:1.45}.tester-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:11px 14px;border-top:1px solid #172c34}.switch-row{display:flex;align-items:center;gap:7px;background:#0a171d;border:1px solid #1d3640;border-radius:9px;padding:8px 10px;color:#bcd0d5;font-size:.8rem}.switch-row input{accent-color:#44d6d4}.tester-floor-row{display:flex;align-items:center;gap:8px;background:#0a171d;border:1px solid #1d3640;border-radius:9px;padding:6px 8px 6px 10px;color:#bcd0d5;font-size:.8rem}.tester-floor-row span{font-weight:800;color:#8fb1ba}.tester-floor-row select{min-width:210px;border:1px solid #294955;border-radius:7px;background:#0d2028;color:#e8fbff;padding:7px 30px 7px 9px;font:inherit;font-weight:750}.tester-floor-row select:disabled{opacity:.45}
@media (max-width:820px){body{padding:10px}.masthead{align-items:center}.hud{grid-template-columns:repeat(3,1fr)}.hud-block.objective{grid-column:1/-1;grid-row:2}.viewport-wrap{min-height:260px}.guide-grid{grid-template-columns:repeat(4,1fr)}.episode-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.masthead{align-items:flex-start;flex-direction:column}.header-actions{width:100%;justify-content:flex-start}.hud{grid-template-columns:repeat(2,1fr)}.hud-block.objective{grid-column:1/-1}.viewport-wrap{min-height:220px}.guide-grid{grid-template-columns:repeat(2,1fr)}.mission-strip{gap:8px;flex-wrap:wrap}.mission-strip span:nth-child(2){margin-left:0}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.campaign-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 10px;padding:9px 12px;border:1px solid #203b45;border-radius:11px;background:linear-gradient(90deg,rgba(12,28,35,.92),rgba(8,17,22,.82));font-size:.73rem;letter-spacing:.09em;text-transform:uppercase}.campaign-bar strong{color:var(--cyan)}.campaign-bar span{color:#b9cdd2}.campaign-bar .campaign-goal{margin-left:auto;color:#a88347;font-size:.66rem}
.classic-grid{grid-template-columns:repeat(9,minmax(0,1fr))}.classic-grid div:nth-child(3),.classic-grid div:nth-child(4){background:#0d1d23}.guide-note strong{color:#dffcff}
.episode-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#1b333d;border-top:1px solid #1b333d}.episode-card{background:#0b181f;padding:12px}.episode-card strong{display:block;color:var(--cyan);font-size:.75rem;text-transform:uppercase;letter-spacing:.09em}.episode-card b{display:block;margin:4px 0 6px;font-size:.96rem}.episode-card span{display:block;color:#839ea6;font-size:.73rem;line-height:1.35}.episode-card.current{box-shadow:inset 0 0 0 1px rgba(85,230,226,.5);background:#0e2027}.episode-card .boss{margin-top:6px;color:#c89e59}
@media(max-width:980px){.classic-grid{grid-template-columns:repeat(4,1fr)}.campaign-bar .campaign-goal{margin-left:0;width:100%}}
@media(max-width:520px){.episode-grid{grid-template-columns:1fr}.classic-grid{grid-template-columns:repeat(2,1fr)}}
.floor-results{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0 10px;text-align:left}.result-cell{border:1px solid #28434c;border-radius:9px;background:#091820;padding:9px 10px}.result-cell span{display:block;color:#7998a1;font-size:.63rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase}.result-cell strong{display:block;margin-top:3px;color:#e8fbff;font-size:1rem}.result-cell.grade{border-color:#8c6d37;background:#1a1710}.result-cell.grade strong{color:#ffd37d;font-size:1.45rem}.next-floor{margin:8px 0 14px!important;border:1px solid #234850;border-radius:9px;background:#0b2027;padding:9px 12px;color:#91dddd!important;font-size:.78rem!important}.mission-strip{row-gap:5px}.mission-strip #killStat,.mission-strip #secretStat{color:#8db6bf}
@media(max-width:620px){.floor-results{grid-template-columns:repeat(2,1fr)}}

.interaction-prompt{position:absolute;left:50%;bottom:58px;transform:translateX(-50%);min-width:260px;max-width:84%;padding:10px 16px;border:2px solid rgba(242,185,72,.88);border-radius:7px;background:rgba(18,16,10,.94);color:#ffe8b8;font:900 .88rem/1.2 ui-monospace,Consolas,monospace;letter-spacing:.075em;text-align:center;opacity:0;pointer-events:none;transition:opacity .10s;box-shadow:0 6px 24px rgba(0,0,0,.48),0 0 14px rgba(242,185,72,.14)}
.interaction-prompt.show{opacity:1}
.mission-strip #mapState{color:#d0ab63}

.log-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(2,7,10,.80);z-index:9}.log-overlay.hidden{display:none}.log-panel{width:min(680px,92%);max-height:86%;overflow:auto;border:2px solid #2ac7d8;border-radius:12px;background:linear-gradient(180deg,#0a1a20,#071116);box-shadow:0 18px 60px rgba(0,0,0,.7),0 0 34px rgba(42,199,216,.13);padding:24px 28px;text-align:left}.log-kicker{margin:0 0 8px;color:#79dce7;font:850 .72rem/1.2 ui-monospace,Consolas,monospace;letter-spacing:.14em}.log-panel h2{margin:0 0 4px;color:#f2fbfc;font-size:1.55rem}.log-source{margin:0 0 16px;color:#d9ad5d;font:800 .78rem/1.3 ui-monospace,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase}.log-body{border-top:1px solid #24434b;border-bottom:1px solid #24434b;padding:16px 2px;margin-bottom:18px;color:#d9e8ea;font-size:.98rem;line-height:1.62;white-space:pre-line}.log-controls{margin:10px 0 0;color:#7f9ea5;font:700 .7rem/1.3 ui-monospace,Consolas,monospace;letter-spacing:.05em}.mission-strip #logStat{color:#73cbd5}

.objective-tracker{position:absolute;z-index:4;top:10px;left:10px;width:min(36%,350px);padding:7px 9px 8px;border:1px solid rgba(242,185,72,.62);border-left:3px solid #e4a63b;border-radius:7px;background:linear-gradient(90deg,rgba(8,15,18,.91),rgba(8,15,18,.73));box-shadow:0 5px 18px rgba(0,0,0,.30);pointer-events:none;text-shadow:0 1px 2px #000}
.objective-tracker.hidden{display:none}
.objective-tracker-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.objective-tracker-head span{color:#d6a955;font:850 .56rem/1 ui-monospace,Consolas,monospace;letter-spacing:.12em}
.objective-tracker-head b{color:#7f9da4;font:800 .48rem/1 ui-monospace,Consolas,monospace;letter-spacing:.06em;white-space:nowrap}
.objective-tracker-list{margin:0;padding-left:17px;color:#e8f4f6;font:750 clamp(.60rem,.95vw,.72rem)/1.28 ui-sans-serif,system-ui,sans-serif}
.objective-tracker-list li+li{margin-top:2px}
.objective-detail-overlay{position:absolute;inset:0;z-index:8;display:grid;place-items:center;padding:20px;background:rgba(2,7,10,.54);pointer-events:none}
.objective-detail-overlay.hidden{display:none}
.objective-detail-panel{width:min(620px,88%);max-height:82%;overflow:auto;border:2px solid rgba(242,185,72,.82);border-radius:12px;background:linear-gradient(180deg,rgba(8,18,23,.97),rgba(5,12,16,.98));box-shadow:0 22px 60px rgba(0,0,0,.62),0 0 28px rgba(242,185,72,.10);padding:18px 22px;text-align:left}
.objective-detail-head{display:flex;justify-content:space-between;gap:12px;color:#d6a955;font:850 .66rem/1 ui-monospace,Consolas,monospace;letter-spacing:.11em}
.objective-detail-head b{color:#8fb1b8;font-size:.58rem;letter-spacing:.07em}
.objective-detail-panel h2{margin:9px 0 10px;color:#fff1c7;font-size:clamp(1.05rem,2.4vw,1.45rem)}
.objective-detail-body{color:#d9e8ea;font-size:.90rem;line-height:1.48;white-space:pre-line}
.objective-detail-body ul{margin:8px 0 0;padding-left:20px}.objective-detail-body li+li{margin-top:5px}
.objective-detail-note{margin:14px 0 0;padding-top:10px;border-top:1px solid #29434b;color:#82a6ae;font:750 .66rem/1.3 ui-monospace,Consolas,monospace;letter-spacing:.04em}
@media(max-width:820px){.objective-tracker{width:min(52%,330px)}.objective-detail-panel{width:min(680px,94%)}}


/* v0.18.18 C027 production polish */
.overlay-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.episode-complete-banner{margin:15px auto 4px;padding:12px 14px;border:1px solid rgba(255,191,91,.58);border-radius:11px;background:linear-gradient(180deg,rgba(55,42,19,.56),rgba(22,19,12,.78));box-shadow:0 0 28px rgba(255,191,91,.08)}
.episode-complete-banner span{display:block;color:#f0b85b;font:900 .67rem/1.15 ui-monospace,Consolas,monospace;letter-spacing:.16em}
.episode-complete-banner strong{display:block;margin-top:5px;color:#fff0c7;font-size:1.04rem;letter-spacing:.04em}
.episode-complete-banner small{display:block;margin-top:5px;color:#aebec2;font-size:.74rem}
.tester[hidden]{display:none!important}
@media(max-width:520px){.overlay-actions{display:grid;grid-template-columns:1fr}.overlay-actions button{width:100%}}
