:root{--bg: #0a0a14;--panel: #12122a;--panel-2: #181840;--ink: #e6e6ff;--muted: #8a8ab8;--cyan: #2ff3ff;--magenta: #ff3df0;--orange: #ff9f1c;--line: #2a2a55}*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 800px at 70% -10%,#1a1040 0%,var(--bg) 60%);color:var(--ink);font:13px/1.5 ui-monospace,Cascadia Code,Menlo,Consolas,monospace}.app{max-width:1380px;margin:0 auto;padding:16px}.topbar h1{font-size:20px;letter-spacing:2px;margin:4px 0 14px;text-transform:uppercase}.accent{color:var(--magenta);text-shadow:0 0 12px var(--magenta)}.muted{color:var(--muted)}.small{font-size:11px}.controlbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 14px;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--line);border-radius:10px;box-shadow:0 0 24px #2ff3ff12}.controlbar .tick strong{color:var(--cyan);text-shadow:0 0 10px var(--cyan)}.controlbar .sep{width:1px;height:20px;background:var(--line);margin:0 4px}.dot{width:9px;height:9px;border-radius:50%}.dot.on{background:#2dff8a;box-shadow:0 0 10px #2dff8a}.dot.off{background:#ff4d4d;box-shadow:0 0 10px #ff4d4d}button{background:#1d1d44;color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;font:inherit}button:hover:not(:disabled){border-color:var(--cyan);color:var(--cyan)}button:disabled{opacity:.4;cursor:not-allowed}button.sel{border-color:var(--magenta);color:var(--magenta)}button.reset:hover{border-color:var(--orange);color:var(--orange)}.layout{display:grid;grid-template-columns:1fr 440px;gap:16px;margin-top:16px;align-items:start}.col-left,.col-right{display:flex;flex-direction:column;gap:16px;min-width:0}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px}.panel h2{font-size:12px;text-transform:uppercase;letter-spacing:2px;color:var(--muted);margin:4px 0 8px}.panel h3{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:12px 0 4px}.mapsvg,.graphsvg{width:100%;height:auto;background:#0c0c1c;border-radius:8px;display:block}.district,.agent,.gnode,.channel{cursor:pointer}.dlabel{fill:var(--ink);font-size:11px;font-weight:700}.dheat{fill:var(--muted);font-size:9px}.alabel,.glabel{fill:var(--muted);font-size:9px;pointer-events:none}.inspector .kv{margin:3px 0}.dials{margin:6px 0}.bar{display:grid;grid-template-columns:70px 1fr 38px;gap:6px;align-items:center;margin:3px 0}.bar .track{background:#0c0c1c;border:1px solid var(--line);border-radius:4px;height:8px;overflow:hidden}.bar .fill{height:100%;background:linear-gradient(90deg,var(--cyan),var(--magenta))}.bar em{color:var(--muted);font-style:normal}.rel,.hist{list-style:none;margin:0;padding:0;font-size:12px}.hist{max-height:220px;overflow:auto}.hist .t,.rel+*{color:var(--muted)}.ticker h2{font-size:12px;text-transform:uppercase;letter-spacing:2px;color:var(--muted);margin:4px 0 8px}.ticker ul{list-style:none;margin:0;padding:0;max-height:320px;overflow:auto}.evt{display:grid;grid-template-columns:48px 130px 1fr;gap:8px;padding:4px 8px;border-left:2px solid transparent;border-radius:4px;cursor:pointer}.evt:hover{background:#ffffff0a}.evt .t{color:var(--muted)}.evt .act{color:var(--cyan)}.evt .tags{display:none}.evt.kill{border-left-color:#ff4d4d}.evt.heat{border-left-color:var(--orange)}.evt.intel{border-left-color:var(--cyan)}.evt.news{border-left-color:var(--magenta)}.empty{color:var(--muted);padding:8px}.actions .vector{padding:7px 0;border-bottom:1px solid var(--line)}.actions .vector:last-child{border-bottom:none}.actions .vrow{display:flex;align-items:center;justify-content:space-between;gap:10px}.actions .vector.on button{border-color:var(--magenta);color:var(--magenta)}.actions .cost{color:var(--muted);font-size:11px;white-space:nowrap}.actions .unmet{list-style:none;margin:5px 0 0;padding:0;color:#ff6b6b;font-size:11px}.newspaper{border-color:#5a2a55}.newspaper ul{list-style:none;margin:0;padding:0}.newspaper li{padding:5px 0;border-bottom:1px dashed var(--line);color:#ffd9fb}.newspaper li:first-child{color:var(--magenta);text-shadow:0 0 8px rgba(255,61,240,.4)}.ripple .hist{max-height:150px}.scrubber{display:flex;align-items:center;gap:10px;margin-top:10px;padding:8px 14px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.scrubber input[type=range]{flex:1;accent-color:var(--magenta)}.scrubber .replaying{color:var(--orange)}
