:root{color-scheme:dark;--gold:#ffce7c;--cyan:#54d9f3;--ink:#0b1019;--muted:#8491a6;--line:#263143;--agent:#ff697d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 74% 30%,#172234 0%,#0c111c 48%,#070a10 100%);color:#eef0f5;min-height:100dvh}button,input,summary{font:inherit}button{cursor:pointer}button:focus-visible,summary:focus-visible,canvas:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}button{color:inherit;background:#172030;border:1px solid #344055;border-radius:5px;padding:8px 12px;transition:background .15s,border-color .15s}button:hover{background:#25324a;border-color:#8593a9}.shell{display:flex;justify-content:center;align-items:center;gap:44px;min-height:100dvh;padding:20px 28px}.guide{width:260px;flex:none}.brand{font-size:15px;letter-spacing:4px;font-weight:750}.bolt{font-size:31px;color:var(--gold);vertical-align:middle;margin-right:6px}.eyebrow{font-size:9px;letter-spacing:2px;color:var(--gold);margin:28px 0 12px}h1{font-size:61px;line-height:.91;letter-spacing:-3px;margin:0;font-weight:850}h1 span{color:var(--gold)}.intro{color:#abb8cb;font-size:14px;line-height:1.7;margin:20px 0}.identity{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;display:flex;gap:13px;align-items:center}.identity img{width:48px;height:80px;object-fit:contain;image-rendering:pixelated}.identity strong{display:block;letter-spacing:2px;font-size:17px;color:var(--agent);margin:5px 0}.micro{font-size:8px;letter-spacing:2px;color:var(--muted)}#agent-role{font-size:11px;color:#aab6c9}.objectives{padding-left:17px;font-size:11px;line-height:1.6;margin:20px 0}.objectives li{margin:12px 0;padding-left:4px;color:#aab5c5}.objectives li::marker{color:var(--gold)}.objectives b{display:block;color:#dce2ec;font-weight:550}.objectives span{display:block}.keys{display:flex;gap:5px;align-items:center}.keys span{font-size:10px;color:var(--muted);margin-left:5px}kbd{display:inline-block;background:#171f2d;border:1px solid #303b4d;border-bottom-width:2px;padding:3px 6px;border-radius:4px;font:10px ui-monospace,monospace;color:#d4dce9}.small{font-size:10px;color:var(--muted);line-height:1.9}details{border-top:1px solid var(--line);padding-top:12px;margin-top:18px;font-size:11px;color:#aab6c7}summary{cursor:pointer}details label{display:flex;gap:8px;align-items:center;margin:12px 0}input{accent-color:var(--gold)}details button{font-size:10px;width:100%}.slider{flex-wrap:wrap}.slider input{width:100%}.scope{font-size:8px;letter-spacing:1.6px;color:var(--gold);line-height:1.8;margin:22px 0 0}.scope span{display:block;color:#738198;letter-spacing:0;font-size:10px}.cabinet{width:min(calc((100dvh - 108px)*1100/1430),850px);flex:none;background:#0c111b;border:1px solid #344052;border-radius:9px;box-shadow:0 20px 80px #0009,0 0 40px #efb64d07;overflow:hidden}.game-header,.game-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#101723;gap:8px}.game-header{height:44px;border-bottom:1px solid #354053;font-size:9px;letter-spacing:1.5px}.game-header>div:first-child{display:flex;align-items:center;gap:7px}.live-dot{height:5px;width:5px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px #ffcc6670}.rogue-count{color:#8e9db2;font-size:8px}.actions{display:flex;gap:5px}.actions button{padding:3px 7px;font-size:15px;line-height:1.2;min-width:29px}.stage{position:relative;line-height:0;background:#0b1019}canvas{width:100%;height:auto;display:block;image-rendering:pixelated;touch-action:none}canvas:focus{outline:none}.game-footer{font-size:8px;letter-spacing:.6px;height:27px;color:#a2b1c5;border-top:1px solid #344052}#pickup-status{color:var(--cyan)}.curtain{position:absolute;inset:0;display:grid;place-items:center;text-align:center;background:#070b14c9;backdrop-filter:blur(2px);line-height:1.6}.curtain[hidden],.loading[hidden]{display:none}.curtain>div{padding:20px;max-width:350px}.curtain .eyebrow{margin:0 0 15px}.curtain h2{font-size:27px;line-height:1.2;letter-spacing:-.6px}.curtain p{font-size:12px;color:#acbad0}.curtain button{background:var(--gold);color:#22190d;border:0;border-radius:4px;width:100%;padding:13px 16px;font-size:12px;font-weight:700;margin:15px 0 8px;text-align:left}.curtain button span{float:right}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#0c131e;font-size:12px;line-height:1.5}.toast{position:absolute;left:50%;bottom:18px;transform:translate(-50%,10px);padding:9px 14px;background:#0b131eef;border:1px solid #556b83;color:#e9f7ff;white-space:nowrap;font-size:10px;line-height:1.4;border-radius:4px;opacity:0;transition:opacity .18s,transform .18s;pointer-events:none}.toast.visible{opacity:1;transform:translate(-50%,0)}#position{font:10px monospace;color:#95e3dd;padding:6px;background:#0b171b;display:block}#position[hidden]{display:none}.touch-controls{display:none}.cabinet:fullscreen{width:100vw;height:100dvh;display:flex;flex-direction:column;align-items:center;border:0;border-radius:0;background:#05080d}.cabinet:fullscreen .stage{height:calc(100dvh - 71px);width:auto;aspect-ratio:1100/1430}.cabinet:fullscreen canvas{height:100%;width:auto}.cabinet:fullscreen header,.cabinet:fullscreen footer{width:min(100vw,calc((100dvh - 71px)*1100/1430))}@media(max-height:850px) and (min-width:801px){.shell{gap:28px}.guide{width:245px}h1{font-size:49px}.intro{margin:12px 0}.eyebrow{margin-top:18px}.objectives{margin:10px 0}.objectives li{margin:8px 0}.scope{margin-top:12px}.identity{padding:5px 0}}@media(max-width:800px){.shell{padding:10px;gap:0;min-height:100dvh;align-items:center}.guide{display:none}.cabinet{width:min(100%,calc((100dvh - 95px)*1100/1430));max-width:850px}.game-header{font-size:8px}.toast{max-width:95%;white-space:normal;text-align:center}}@media(pointer:coarse){.touch-controls{display:flex;flex-direction:column;position:absolute;bottom:15px;left:15px;align-items:center;gap:3px}.touch-controls div{display:flex;gap:3px}.touch-controls button{width:35px;height:35px;background:#101927bb;line-height:1;border-color:#7d8da766;padding:4px;touch-action:none}.toast{bottom:100px}}

/* Composite the unchanged city separately from the moving actors. */
.city-backdrop{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;pointer-events:none}.stage canvas{position:relative;z-index:1}.curtain,.loading{z-index:3}.toast,.touch-controls{z-index:2}

.actor-layer{position:absolute!important;top:0;left:0;pointer-events:none;will-change:transform;image-rendering:pixelated;contain:strict}.actor-layer[hidden]{display:none}.stage{overflow:hidden;isolation:isolate}.stage .curtain,.stage .loading{z-index:3000}.stage .toast,.stage .touch-controls{z-index:3001}.guide{max-height:calc(100dvh - 40px);overflow:auto;scrollbar-width:thin}#performance{font-variant-numeric:tabular-nums}

#motion-mode{max-width:175px;background:#172030;color:#eef0f5;border:1px solid #344055;border-radius:4px;font-size:10px;padding:5px}

/* Wide city view: the sidebar houses controls; the map uses its native ratio. */
.cabinet{width:min(calc((100dvh - 44px)*1100/1430),850px);border-radius:5px}
.map-frame{width:100%;aspect-ratio:1100/1430}
.map-frame .stage{width:100%;aspect-ratio:1100/1430}
.sidebar-actions{display:flex;gap:6px;margin-top:14px}.sidebar-actions button{width:auto;flex:1;padding:7px 9px}
@media(max-width:800px){.cabinet{width:min(100%,calc((100dvh - 24px)*1100/1430))}}
.cabinet:fullscreen{justify-content:center}
.cabinet:fullscreen .map-frame{width:min(100vw,calc(100dvh*1100/1430));flex:none}
.cabinet:fullscreen .map-frame .stage{width:100%;height:auto;aspect-ratio:1100/1430}
.cabinet:fullscreen #game{width:100%;height:auto}

.scoreboard{margin:18px 0;border-bottom:1px solid var(--line);padding-bottom:14px}.scoreboard span{display:block;font-size:8px;letter-spacing:1.5px;color:#8d9bb1}.score-main strong{font-size:35px;font-variant-numeric:tabular-nums;color:var(--gold);letter-spacing:1px}.run-stats{display:flex;justify-content:space-between;margin:10px 0}.run-stats strong{display:block;font-size:18px;margin-top:4px}#lives{color:#ff7487}.trace-progress{display:grid;grid-template-columns:1fr auto;gap:6px;font-size:11px}.trace-progress small{color:#91a1b8;font-size:10px}.agent-hint{font-size:12px;line-height:1.6;color:#b6c2d2}.power-panel{margin:14px 0 18px;min-height:42px}.power-panel strong{color:#75dff2;font-size:10px;letter-spacing:.6px}.meter-track{height:3px;background:#253042;margin:8px 0}#power-meter{height:100%;background:linear-gradient(90deg,#ff6a89,#ffd87c,#72f7d3,#a48cff);width:0}#freeze-status{font-size:10px;color:#bca1fc}.guide .intro{margin-bottom:12px}

.wave-notice{position:absolute;top:25%;left:50%;transform:translateX(-50%);z-index:3002;white-space:nowrap;background:#101624ec;border:1px solid #c28bec;color:#ecd4ff;line-height:1.5;font-size:12px;padding:12px 16px;box-shadow:0 4px 20px #0008}.wave-notice[hidden]{display:none}

/* In-map HUD stays above actors without intercepting movement input. */
.game-hud{position:absolute;inset:12px 12px auto;z-index:2500;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none;line-height:1}
.hud-lives,.hud-score{background:#09101eef;border:1px solid #596078;box-shadow:0 3px 0 #030711aa;padding:9px 11px}
.hud-lives{display:flex;gap:7px;align-items:center}
.pixel-heart{width:26px;height:24px;display:block;flex:none}
.heart-outline{fill:#210f29}.heart-fill{fill:#ff617f}.heart-shade{fill:#b72e61}.heart-glint{fill:#ffe4ed}
.pixel-heart.spent .heart-outline{fill:#536078}.pixel-heart.spent .heart-fill{fill:#202638}.pixel-heart.spent .heart-shade{fill:#171c2b}.pixel-heart.spent .heart-glint{fill:#354057}
.hud-score{text-align:right;min-width:100px}.hud-score span{display:block;color:#b7c4d7;font:700 8px ui-monospace,monospace;letter-spacing:2px;margin-bottom:4px}.hud-score strong{display:block;color:var(--gold);font:800 24px/1 ui-monospace,monospace;font-variant-numeric:tabular-nums;letter-spacing:1px}
@media(max-width:500px){.game-hud{inset:8px 8px auto}.hud-lives,.hud-score{padding:6px 8px}.pixel-heart{width:19.5px;height:18px}.hud-lives{gap:5px}.hud-score strong{font-size:20px}}

.leaderboard{margin:18px 0;padding:12px;background:#101724;border:1px solid #2a364a;border-top:2px solid var(--gold)}.leaderboard-heading{display:flex;justify-content:space-between;align-items:center}.leaderboard h2{margin:0;font-size:10px;letter-spacing:2px;color:var(--gold)}.leaderboard-heading>span{font:9px monospace;color:#8999b0}.leaderboard ol{list-style:none;padding:0;margin:10px 0 0}.leaderboard li{display:grid;grid-template-columns:22px 1fr auto;gap:6px;align-items:center;padding:7px 0;border-bottom:1px solid #233046;font:11px ui-monospace,monospace}.leaderboard li>span:first-child{color:#72829b}.leaderboard li:first-child{color:var(--gold)}.leaderboard li strong{font-variant-numeric:tabular-nums}.leaderboard p{font-size:9px;color:#8491a6;margin:10px 0 0}#score-entry[hidden]{display:none}#score-entry{margin-top:20px;text-align:left}#score-entry label{font-size:10px;color:var(--gold);letter-spacing:1px}.score-entry-row{display:flex;gap:8px;align-items:center;margin-top:8px}#player-name{min-width:0;width:100%;padding:11px 8px;background:#101827;border:1px solid #697994;color:#fff;font:14px ui-monospace,monospace;text-transform:uppercase}#score-entry button{width:auto;flex:none;margin:0;padding:12px 10px}#name-feedback{min-height:20px;margin:5px 0;font-size:10px}
/* Agent / city / mission layout. */
.shell{gap:24px;padding:20px 24px}.guide{width:230px}.intel{width:250px;flex:none;max-height:calc(100dvh - 40px);overflow:auto;scrollbar-width:thin}.cabinet{width:min(calc((100dvh - 44px)*1100/1430),calc(100vw - 576px),850px)}
.intel-card{padding:18px;background:linear-gradient(135deg,#172132,#0d1420);border:1px solid #344157;margin-bottom:16px}.panel-heading{font-size:10px;font-weight:700;letter-spacing:1.5px;color:#cbd6e6;display:flex;justify-content:space-between;align-items:center}.panel-heading>span{color:#8e9fb7;font-size:9px;letter-spacing:.5px}.wave-display{display:flex;align-items:baseline;gap:12px;margin:14px 0 18px}.wave-display>span{font-size:11px;letter-spacing:3px;color:var(--gold)}.wave-display strong{font:750 54px/1 ui-monospace,monospace;color:var(--gold)}.collection-heading{display:flex;justify-content:space-between;align-items:baseline;font-size:9px;letter-spacing:1px;color:#afbed0}.collection-heading strong{font:700 19px ui-monospace,monospace;color:#fff;letter-spacing:-1px}.trace-meter{height:10px;background:#253044;margin:10px 0 18px}.trace-meter>div{height:100%;background:var(--gold)}.trace-counts{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #304057;padding-top:14px}.trace-counts>div:last-child{border-left:1px solid #304057;padding-left:18px}.trace-counts strong{display:block;font:700 30px ui-monospace,monospace;color:#8ae6f4}.trace-counts>div:last-child strong{color:#d29afa}.trace-counts span{font-size:8px;letter-spacing:1px;color:#adbbce;display:flex;align-items:center;gap:5px;margin-top:5px}.trace-dot{width:6px;height:6px;display:inline-block;background:#8ae6f4}.hidden-trace{background:#d29afa}
.intel .power-panel{margin:0 0 16px;border-top:2px solid #53cfe6}.token-summary{display:flex;gap:12px;align-items:center;margin:18px 0 12px}.token-art{width:64px;height:64px;flex:none;background:url('assets/pickup.png') 0 0 / 512px 128px;image-rendering:pixelated}.token-summary strong{display:block;font:700 17px ui-monospace,monospace;color:#8defff}.token-summary span{display:block;font-size:10px;line-height:1.5;color:#a9b9cc;margin-top:5px}.intel .meter-track{height:7px}.intel #power-meter{background:#66e4f5}.power-panel[data-state=hidden] .token-art{opacity:.5}.power-panel[data-state=spent] .token-art,.power-panel[data-state=cooldown] .token-art{filter:grayscale(1);opacity:.4}.power-panel[data-state=active]{border-color:#68e8ff;box-shadow:inset 0 0 24px #3bd5fa12}.intel .leaderboard{margin:0;padding:18px}.intel .leaderboard li{padding:11px 0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(min-width:801px) and (max-width:1100px){.shell{gap:16px;padding:16px}.guide{width:180px}.intel{width:210px}.cabinet{width:min(calc((100dvh - 36px)*1100/1430),calc(100vw - 454px))}.intel-card,.intel .leaderboard{padding:12px}.token-summary{gap:6px}.token-summary strong{font-size:14px}}
@media(max-width:800px){.shell{flex-wrap:wrap;gap:16px;padding:12px}.cabinet{width:min(100%,calc((100dvh - 24px)*1100/1430))}.intel{width:100%;max-width:600px;max-height:none;overflow:visible;display:grid;grid-template-columns:1fr 1fr;gap:12px}.intel-card,.intel .power-panel{margin:0}.intel .leaderboard{grid-column:1/-1}}@media(max-width:440px){.intel{grid-template-columns:1fr}}
