:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#dfe6ef;background:#05070c;font-synthesis:none}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}#app{display:grid;grid-template-rows:1fr}main{min-height:0;display:grid;grid-template-columns:var(--dock-width, 320px) 1fr}#viewport{min-width:0;position:relative}#viewport canvas{display:block}#viewport canvas.is-panning{cursor:grabbing}aside{padding:12px;overflow-y:auto;border-left:1px solid #232a36;background:#0b0f16}aside#left{position:relative;border-left:0;border-right:1px solid #232a36}#dock-grip{position:absolute;top:0;right:-3px;bottom:0;width:7px;cursor:col-resize;z-index:5}#dock-grip:hover,body.dock-resizing #dock-grip{background:#66b2d88c}body.dock-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}h2{margin:0 0 12px;color:#66b2d8;font-size:13px;text-transform:uppercase;letter-spacing:.08em}.error{margin:30px;padding:20px;color:#ef9a8d;border:1px solid #713f38}pre{white-space:pre-wrap}@media(max-width:760px){main{grid-template-columns:1fr;grid-template-rows:1fr 260px}aside{border-left:0;border-top:1px solid #232a36}}.game-hud{position:absolute;inset:0;z-index:3;pointer-events:none;text-shadow:0 2px 3px #000,0 0 8px #000}.game-hud[hidden]{display:none}.hud-left,.hud-right{position:absolute;top:10px;display:flex;flex-direction:column;gap:2px;padding:8px 11px;background:linear-gradient(90deg,#05070ad1,#05070a2e);border-radius:4px}.hud-left{left:12px;align-items:flex-start}.hud-right{right:12px;align-items:flex-end;background:linear-gradient(270deg,#05070ad1,#05070a2e)}.hud-left strong,.hud-right strong{font-size:21px;letter-spacing:.055em}[data-hud=score]{color:#e3c365}[data-hud=ammo]{color:#9fd7a0}[data-hud=wave]{color:#d8d8e5}[data-hud=composition]{color:#c5c5d3;font-size:12px}.hud-speed{display:flex;gap:4px;margin-top:5px;pointer-events:auto}.hud-speed button,.hud-start,.hud-fast-forward{color:#dce3e8;background:#0a0d14e0;border:1px solid #39424f;border-radius:3px;cursor:pointer}.hud-speed button{min-width:38px;height:24px;padding:0 5px}.hud-speed button.active{color:#9fd9ff;border-color:#66b2d8;background:#132c3ceb}.hud-start{position:absolute;top:92px;left:50%;transform:translate(-50%);padding:8px 18px;pointer-events:auto;color:#9fd9ff;border-color:#457c9c;font-weight:700;letter-spacing:.08em}.hud-start[hidden]{display:none}.hud-fast-forward{position:absolute;bottom:96px;left:50%;transform:translate(-50%);padding:9px 18px;pointer-events:auto;color:gold;border:2px solid gold;border-radius:6px;font-weight:700;letter-spacing:.04em}.hud-fast-forward[hidden]{display:none}.hud-banner{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);color:#ff8f7d;font-size:34px;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.hud-banner[hidden]{display:none}.hud-banner.secured{color:#9fd7a0}.repair-depot{position:absolute;top:34px;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none}.repair-depot[hidden]{display:none}.repair-title{color:#d8b84f;font-size:26px;font-weight:700;letter-spacing:.04em}.repair-info{color:#bfd9e6;font-size:15px}.repair-depot button{padding:10px 20px;pointer-events:auto;color:#d8b84f;background:#0a0d14e0;border:2px solid #d8b84f;border-radius:6px;font:700 18px Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer}.repair-depot button:hover{background:#231e0eeb}.repair-depot button.poor{color:#99806f;border-color:#99806f}.repair-fix[hidden]{display:none}.tp-btnrow{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:3px 4px}.tp-btnrow span{color:#8fa0b5;font-size:11px;margin-right:2px}.tp-btnrow button{padding:2px 8px;color:#c8d3de;background:#1d2634;border:1px solid #39424f;border-radius:3px;font:11px Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer;white-space:nowrap}.tp-btnrow button:hover{border-color:#66b2d8;color:#e6f2fb}.tp-btnrow button:active{background:#2a3648}.skilltree{position:absolute;inset:0;z-index:9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#020408e6}.skilltree[hidden]{display:none}.skilltree-title{color:#d8b84f;font-size:26px;font-weight:800;letter-spacing:.1em;text-shadow:0 2px 4px #000}.skilltree-score{color:#e3c365;font-size:16px;letter-spacing:.06em}.skilltree svg{max-width:96%;max-height:72vh}.skilltree .sk-hit{cursor:pointer}.skilltree .sk-label{fill:#93a3b6;font:9px Inter,ui-sans-serif,system-ui,sans-serif;text-anchor:middle;pointer-events:none}.skilltree .sk-label.owned{fill:#d5e2ee}.skilltree .sk-pulse{animation:sk-pulse 1.6s ease-out infinite;transform-box:fill-box;transform-origin:center}@keyframes sk-pulse{0%{transform:scale(.85);opacity:.9}to{transform:scale(1.45);opacity:0}}.skilltree-info{min-height:18px;color:#bfd9e6;font-size:13px;letter-spacing:.03em}.weapon-bar{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:10px}.weapon-slot{position:relative;display:flex;width:72px;height:72px;align-items:center;justify-content:center;overflow:hidden;border:3px solid rgb(115 184 199);border-radius:8px;background:#081217e6;box-shadow:0 2px 5px #000;text-shadow:0 2px 3px #000}.weapon-slot[hidden]{display:none}.weapon-icon-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.weapon-icon-wrap img{width:auto;height:52px;object-fit:contain}.weapon-slot-delta img,.weapon-slot-omega img,.weapon-slot-seeker img{filter:drop-shadow(0 0 0 var(--weapon-tint))}.weapon-slot-flak img{width:38px}.weapon-slot-laser img{width:35px}.weapon-slot-emp img{width:33px}.weapon-curtain{position:absolute;top:0;left:0;right:0;height:0;background:#000000b8}.weapon-timer{position:relative;z-index:1;color:#fff;font-size:21px}.weapon-key{position:absolute;z-index:2;top:2px;left:6px;color:#d9f2ff;font-size:15px}.weapon-count{position:absolute;z-index:2;right:6px;bottom:2px;color:gold;font-size:17px}.weapon-slot[data-state=cooling],.weapon-slot[data-state=empty]{border-color:#2e4754}.weapon-slot[data-state=empty] .weapon-count,.weapon-slot[data-state=dead] .weapon-timer,.weapon-slot[data-state=overheated] .weapon-timer{color:#ff6659}.weapon-slot[data-state=dead]{border-color:#9e241f}.weapon-slot[data-state=dead] .weapon-curtain{background:#6108088c}.weapon-slot[data-state=heat] .weapon-curtain,.weapon-slot[data-state=overheated] .weapon-curtain{top:auto;bottom:0;background:#ff731480}.weapon-slot[data-state=overheated]{border-color:#2e4754}.weapon-slot[data-state=overheated] .weapon-curtain{background:#d91a0d99}.weapon-slot[data-state=active]{border-color:gold}.weapon-slot[data-state=active] .weapon-timer{color:gold}.weapon-slot[data-state=cooling] img,.weapon-slot[data-state=empty] img,.weapon-slot[data-state=dead] img,.weapon-slot[data-state=overheated] img{opacity:.4}@media(max-width:680px){.weapon-bar{gap:4px;transform:scale(.78);transform-origin:bottom center}}.fps-overlay{position:absolute;left:16px;top:16px;bottom:auto;width:356px;padding:10px 12px;color:#d5dde5;background:#0a0c10f0;border:1px solid #5a6069;border-radius:4px;font:11px ui-monospace,SFMono-Regular,Consolas,monospace;pointer-events:auto;text-shadow:none}.fps-overlay[hidden]{display:none}.perf-head{display:flex;justify-content:space-between;margin-bottom:6px}.fps-overlay table{width:100%;border-collapse:collapse;text-align:right}.fps-overlay th{color:#8e9aa7;font-weight:400}.fps-overlay td,.fps-overlay th{padding:1px 4px}.perf-good{color:#5adc5a}.perf-warn{color:#dcd246}.perf-bad{color:#f04637}.perf-bound{margin:6px 0;color:#aab6c2}.perf-bound b{color:#f09632}.fps-overlay canvas{display:block;width:320px;height:60px;border:1px solid #454950}.pause-menu{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#00000a8c;text-align:center}.pause-menu[hidden]{display:none}.pause-title{margin-bottom:22px;color:#d8b84f;font-size:44px;font-weight:800;letter-spacing:.12em;text-shadow:0 2px 4px #000}.pause-menu button{width:min(460px,80%);padding:9px 18px;border:0;color:#8c9eb3;background:transparent;font:600 20px ui-sans-serif,system-ui,sans-serif;cursor:pointer}.pause-menu button.selected{color:#d8b84f;background:#161f2beb}.pause-menu button:disabled{cursor:default;opacity:.58}.pause-menu button small{display:block;margin-top:2px;font-size:9px;letter-spacing:.12em}.pause-blurb{min-height:20px;margin-top:14px;color:#bfd8e6;font-size:14px}.pause-help{color:#8099a6;font-size:12px}body.dock-hidden main{grid-template-columns:1fr}body.dock-hidden aside#left{display:none}#dock{margin:0}.dock-table{margin:10px 0 0;padding:10px;overflow-x:auto;white-space:pre;background:#0e131c;border:1px solid #232a36;border-radius:4px;color:#b8c4d4;font:11px ui-monospace,SFMono-Regular,Consolas,monospace;line-height:1.45}.dock-table:empty{display:none}.dock-table[hidden]{display:none}.ld-host{white-space:normal}.ld-table{border-collapse:collapse}.ld-table th{padding:2px 3px;color:#66b2d8;font-weight:600;text-align:right}.ld-table td{padding:1px 2px;text-align:right}.ld-table input{width:44px;padding:1px 3px;text-align:right;color:#b8c4d4;background:#0b0f16;border:1px solid #232a36;border-radius:2px;font:inherit}.ld-table input:focus{border-color:#66b2d8;outline:none}.ld-table input.ovr{color:#e3b95a;border-color:#6b5722}.ld-table tr.overridden td:first-child button{color:#e3b95a}.ld-table tr.current td{background:#66b2d817}.ld-table .ld-hits{color:#8fa0b5}.ld-table button{padding:1px 6px;color:#b8c4d4;background:#131a26;border:1px solid #232a36;border-radius:2px;font:inherit;cursor:pointer}.ld-table button:hover{border-color:#66b2d8}.ld-toolbar,.ld-scenario-meta{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:8px}.ld-toolbar label,.ld-scenario-meta label{display:flex;align-items:center;gap:5px}.ld-toolbar select,.ld-scenario-meta select,.ld-scenario-meta input{color:#d8e0e9;background:#151b25;border:1px solid #394553;padding:4px 6px}.ld-toolbar button,.ld-scenario-meta button,.ld-add-row{color:#d8e0e9;background:#202936;border:1px solid #465468;padding:4px 7px;cursor:pointer}.ld-toolbar span{color:#9eb1c4;font-size:10px}.ld-note{margin:5px 0 9px;color:#8fa0b1;font-size:10px;white-space:normal}.ld-table td:last-child{min-width:126px;white-space:nowrap}.ld-table td:last-child button{padding:2px 4px;font-size:9px}.city-host{white-space:normal}.city-grid{display:grid;grid-template-columns:repeat(var(--cols),6px);gap:1px;width:max-content}.city-grid span{width:6px;height:6px;background:#131a26;border-radius:1px;cursor:pointer}.city-grid span.designed{background:#2c3850;box-shadow:inset 0 0 0 1px #46587a}.city-grid span.standing{background:#8391a5}.city-grid span:hover{box-shadow:inset 0 0 0 1px #66b2d8}.city-grid.city-batteries{margin-top:3px}.city-grid.city-batteries span{height:4px;background:transparent;cursor:default}.city-grid.city-batteries span.battery{background:#9fd7a0}.theater{position:absolute;inset:0;z-index:9;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;overflow:hidden;background:#000;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.theater[hidden]{display:none}.theater-title{color:#c2ebff;font-size:clamp(12px,1.35vw,20px);letter-spacing:.08em;text-shadow:0 2px 4px #000}.theater-board{position:relative;width:min(100%,calc((100vh - 105px) * 16 / 9));aspect-ratio:16 / 9;overflow:hidden;background-image:linear-gradient(#14262e1f,#02080c2e),var(--map);background-size:100% 100%;box-shadow:inset 0 0 70px #000}.theater-board svg{position:absolute;inset:0}.theater .road{stroke:#4d7a8c47;stroke-width:2}.theater .road.live{stroke:#47e0ffe6;stroke-width:3}.theater .road.secured{stroke:#47f285e6;stroke-width:3}.theater .front{--tone:#ff9433;position:absolute;transform:translate(-50%,-50%);width:46px;height:46px;padding:0;overflow:visible;color:var(--tone);background:#030c11b8;border:2px solid var(--tone);border-radius:50%;cursor:pointer}.theater .front[data-tone=red]{--tone:#ff3320}.theater .front[data-tone=green]{--tone:#3deb99}.theater .front[data-tone=cyan]{--tone:#2ed1ff}.theater .front-ring{position:absolute;inset:4px;border:1px solid currentColor;border-radius:50%;opacity:.45;transform:rotate(45deg)}.theater .front-glyph{position:absolute;inset:0;display:grid;place-items:center;font-size:22px}.theater .front strong{position:absolute;top:50px;left:50%;width:180px;transform:translate(-50%);font-size:12px;letter-spacing:.05em;text-shadow:0 2px 3px #000}.theater .front small,.theater .front em{position:absolute;top:65px;left:50%;width:260px;transform:translate(-50%);color:#bdd0da;font-size:8px;font-style:normal;text-shadow:0 2px 3px #000}.theater .front em{top:77px;color:#ffc747}.theater .front.locked{--tone:#69828c;opacity:.48;cursor:default}.theater .front.locked small,.theater .front.locked em{display:none}.theater .front-pulse{position:absolute;inset:-9px;border:1px solid currentColor;border-radius:50%;opacity:0}.theater .front.open .front-pulse{animation:front-pulse 1.8s infinite}.theater .front.selected{box-shadow:0 0 0 5px #ffffffd9,0 0 22px currentColor}.theater .front.active{filter:drop-shadow(0 0 7px #5cff94)}@keyframes front-pulse{0%{transform:scale(.8);opacity:.8}to{transform:scale(1.5);opacity:0}}.theater-info{min-height:18px;color:#adcbd8;font-size:clamp(9px,1vw,14px);white-space:nowrap}.theater-help{color:#8099a6;font-size:12px}.theater-empty{color:#8c9eb3}.theater-forget{padding:4px 12px;color:#8c9eb3;background:transparent;border:1px solid #39424f;border-radius:4px;font:11px Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer}.theater-forget:hover{border-color:#ef9a8d;color:#ef9a8d}.theater-edit{padding:4px 12px;color:#8c9eb3;background:transparent;border:1px solid #39424f;border-radius:4px;font:11px Inter,ui-sans-serif,system-ui,sans-serif;cursor:pointer}.theater-edit.on,.theater-edit:hover{border-color:#66b2d8;color:#9fd9ff}.theater.editing .front{cursor:grab}.theater.editing .front:active{cursor:grabbing}.theater-buttons{display:flex;gap:8px}.map-host{white-space:normal;display:flex;flex-direction:column;gap:8px}.map-node{padding:6px 8px;border:1px solid #232a36;border-radius:4px;display:flex;flex-wrap:wrap;gap:5px 10px}.map-node summary{width:100%;color:#9fd9ff;font-weight:600;cursor:pointer}.map-node[open] summary{margin-bottom:6px}.map-inline,.map-picks{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px}.map-section-title{width:100%;margin-top:3px;color:#8fa0b5}.map-node legend{padding:0 4px;color:#9fd9ff;font-weight:600}.map-node .map-id{color:#5d6b7d;font-weight:400}.map-node label{display:inline-flex;align-items:center;gap:4px;color:#8fa0b5}.map-node input,.map-node select{padding:1px 4px;color:#b8c4d4;background:#0b0f16;border:1px solid #232a36;border-radius:2px;font:inherit;width:90px}.map-node input.wide{width:100%}.map-node input[type=number]{width:40px}.map-node input:focus,.map-node select:focus{border-color:#66b2d8;outline:none}.map-row{width:100%;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}.map-row>span{color:#5d6b7d}.map-pick{white-space:nowrap}.map-pick input{width:auto}.map-delete{margin-left:auto;padding:1px 8px;color:#b8c4d4;background:#131a26;border:1px solid #232a36;border-radius:2px;font:inherit;cursor:pointer}.map-delete:hover{border-color:#ef9a8d;color:#ef9a8d}.map-empty{color:#8c9eb3}.map-node textarea{width:100%;padding:2px 4px;color:#b8c4d4;background:#0b0f16;border:1px solid #232a36;border-radius:2px;font:inherit;resize:vertical}.map-blurb{width:100%;align-items:flex-start}.ld-spark{display:flex;align-items:flex-end;gap:10px;margin:6px 0}.ld-spark span{color:#5d6b7d;font-size:10px}.skills-host,.bot-host{white-space:normal}.sk-table{border-collapse:collapse}.sk-table th{padding:2px 4px;color:#66b2d8;font-weight:600;text-align:left}.sk-table td{padding:1px 3px;vertical-align:middle}.sk-table input,.sk-table select{padding:1px 3px;color:#b8c4d4;background:#0b0f16;border:1px solid #232a36;border-radius:2px;font:inherit}.sk-table input.sk-id{width:60px}.sk-table input.sk-name{width:120px}.sk-table input[type=number]{width:54px}.sk-table input:focus,.sk-table select:focus{border-color:#66b2d8;outline:none}.sk-req{max-width:190px}.sk-unlink,.sk-delete,.sk-branch-delete,.sk-branch-add{padding:1px 5px;color:#b8c4d4;background:#131a26;border:1px solid #232a36;border-radius:2px;font:inherit;cursor:pointer}.sk-unlink:hover,.sk-delete:hover,.sk-branch-delete:hover{border-color:#ef9a8d;color:#ef9a8d}.sk-branches{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}.sk-branches>span{color:#5d6b7d;font-size:10px}.sk-branches label{display:inline-flex;align-items:center;gap:4px}.sk-branches input.sk-prefix{width:50px;padding:1px 3px;color:#b8c4d4;background:#0b0f16;border:1px solid #232a36;border-radius:2px;font:inherit}.bot-host select{padding:2px 4px;color:#b8c4d4;background:#0b0f16;border:1px solid #232a36;border-radius:2px;font:inherit}.bot-grid td:first-child{color:#5d6b7d;padding-right:10px}.bot-pre{margin:6px 0;white-space:pre;overflow-x:auto}.bot-verdict{color:#9fd7a0}.bot-verdict.over{color:#e3a05a}.bot-host details{margin-top:6px}.bot-host summary{cursor:pointer;color:#66b2d8}
