:root{--bg: #04100a;--bg-panel: #06170f;--green: #3dff9e;--green-dim: #1c7a52;--green-faint: #0e3a27;--amber: #ffb347;--red: #ff5a5a;--cyan: #62e8ff;--ink: #bfffd8;--grid: #0b2a1c;--scan: rgba(0, 0, 0, .28)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--green);font-family:BigBlue Terminal Plus,Courier New,monospace;font-size:18px;overflow:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:60;background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%),linear-gradient(#3dff9e08,#3dff9e08);mix-blend-mode:screen}.crt-overlay{position:fixed;inset:0;pointer-events:none;z-index:70;background:repeating-linear-gradient(to bottom,transparent 0,transparent 2px,var(--scan) 3px,var(--scan) 4px);animation:flicker 4.5s infinite steps(60);mix-blend-mode:multiply}@keyframes flicker{0%,96%,to{opacity:1}97%{opacity:.86}98%{opacity:.96}99%{opacity:.9}}.app{display:grid;grid-template-rows:auto 1fr auto;height:100vh;padding:8px;gap:8px;text-shadow:0 0 6px rgba(61,255,158,.5)}.statusbar{display:flex;align-items:center;gap:22px;padding:6px 14px;border:1px solid var(--green-dim);background:var(--bg-panel);font-family:"Press Start 2P",monospace;font-size:9px;letter-spacing:1px;color:var(--green)}.statusbar .logo{color:var(--amber);text-shadow:0 0 8px rgba(255,179,71,.7)}.statusbar .logo-img{height:26px;width:auto;image-rendering:pixelated;filter:drop-shadow(0 0 6px rgba(61,255,158,.5))}.statusbar .stat b{color:var(--ink);font-weight:400}.statusbar .spacer{flex:1}.statusbar .online{color:var(--green)}.statusbar .offline{color:var(--red)}.statusbar a.navlink{color:var(--green-dim);text-decoration:none}.statusbar a.navlink:hover{color:var(--green);text-shadow:0 0 8px rgba(61,255,158,.6)}.langtoggle{display:inline-flex;gap:2px}.langbtn{background:transparent;border:1px solid var(--green-faint);color:var(--green-dim);font-family:BigBlue Terminal Plus,monospace;font-size:13px;line-height:1;padding:2px 6px;cursor:pointer}.langbtn:hover{color:var(--green);border-color:var(--green-dim)}.langbtn.active{color:var(--amber);border-color:var(--amber)}.main{display:grid;grid-template-columns:1fr 400px;gap:8px;min-height:0}.map-wrap{position:relative;border:1px solid var(--green-dim);background:#020906;overflow:hidden;min-height:0}.map-wrap canvas{display:block;width:100%;height:100%;cursor:grab}.map-wrap canvas.dragging{cursor:grabbing}.map-title{position:absolute;top:8px;left:12px;font-family:"Press Start 2P",monospace;font-size:8px;color:var(--green-dim);letter-spacing:2px}.map-hud{position:absolute;bottom:8px;left:12px;right:12px;display:flex;gap:16px;font-size:15px;color:var(--green-dim);pointer-events:none}.map-hud b{color:var(--green);font-weight:400}.side{display:grid;grid-template-rows:1.15fr 1.15fr .9fr;gap:8px;min-height:0}.panel{border:1px solid var(--green-dim);background:var(--bg-panel);display:flex;flex-direction:column;min-height:0;overflow:hidden}.panel h2{margin:0;padding:5px 10px;font-family:"Press Start 2P",monospace;font-size:8px;letter-spacing:2px;color:var(--amber);border-bottom:1px solid var(--green-faint);display:flex;justify-content:space-between;align-items:baseline}.panel h2 .sub{font-family:BigBlue Terminal Plus,monospace;font-size:14px;letter-spacing:0;color:var(--green-dim)}.panel .scroll{overflow-y:auto;padding:6px 10px;min-height:0}.panel canvas{display:block;width:100%}.scroll::-webkit-scrollbar{width:8px}.scroll::-webkit-scrollbar-thumb{background:var(--green-faint)}.msg{line-height:1.15;margin-bottom:3px;word-wrap:break-word}.msg .who{color:var(--amber)}.msg .ch{color:var(--green-dim)}.msg .txt{color:var(--ink)}.msg.dm .who{color:var(--red)}.row{display:grid;grid-template-columns:26px 1fr auto;gap:6px;line-height:1.25;padding:1px 0}.row[data-id]{cursor:pointer}.row[data-id]:hover{background:#3dff9e14}.row .rank{color:var(--green-dim)}.row .name{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px}.row .avatar{width:20px;height:20px;image-rendering:pixelated;flex:none}.row .nw{color:var(--amber)}.row.you .name{text-shadow:0 0 8px var(--green)}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;padding:4px 10px 8px;font-size:15px}.legend .item{display:flex;align-items:center;gap:6px;color:var(--green-dim);cursor:pointer}.legend .item:hover{color:var(--green)}.legend .item.selected{color:var(--ink);text-shadow:0 0 8px rgba(61,255,158,.6)}.legend .item.selected:after{content:"◄";color:var(--amber);font-size:12px}.legend .swatch{width:10px;height:10px;display:inline-block}.legend .px{color:var(--ink)}.legend .up{color:var(--green)}.legend .down{color:var(--red)}.tape{display:flex;align-items:center;border:1px solid var(--green-dim);background:var(--bg-panel);height:30px;overflow:hidden}.tape-label{font-family:"Press Start 2P",monospace;font-size:8px;color:var(--amber);padding:0 12px;border-right:1px solid var(--green-faint);white-space:nowrap}.tape-view{flex:1;overflow:hidden;position:relative;height:100%}.tape-track{position:absolute;white-space:nowrap;will-change:transform;color:var(--green-dim);line-height:30px;font-size:15px}.tape-track b{color:var(--ink);font-weight:400}.tape-track .up{color:var(--green)}.tape-track .down{color:var(--red)}.boot{position:fixed;inset:0;z-index:80;background:var(--bg);color:var(--green);padding:40px;font-size:22px;line-height:1.4;white-space:pre-wrap;transition:opacity .5s ease}.boot.hidden{opacity:0;pointer-events:none}.boot .cursor{animation:blink .8s steps(1) infinite}@keyframes blink{50%{opacity:0}}.hbtn{margin-left:8px;background:transparent;border:1px solid var(--green-faint);color:var(--green-dim);font-family:BigBlue Terminal Plus,monospace;font-size:13px;padding:0 6px;cursor:pointer}.hbtn:hover{color:var(--green);border-color:var(--green-dim)}.hbtn.active{color:var(--amber);border-color:var(--amber)}.map-tip{position:absolute;display:none;pointer-events:none;z-index:30;background:#04100af2;border:1px solid var(--green-dim);color:var(--ink);font-size:14px;line-height:1.25;padding:4px 8px;max-width:260px;text-shadow:none}.map-tip b{color:var(--amber);font-weight:400}.agent-panel{position:absolute;top:30px;right:10px;z-index:25;width:250px;background:#06170ff5;border:1px solid var(--green-dim);padding:8px 10px;font-size:15px;color:var(--ink)}.agent-panel .ap-head{display:flex;align-items:center;gap:6px;margin-bottom:4px}.agent-panel .ap-avatar{width:22px;height:22px;image-rendering:pixelated}.agent-panel .ap-close{margin-left:auto;background:transparent;border:none;color:var(--red);cursor:pointer;font-size:14px}.agent-panel .ap-row{color:var(--green-dim);line-height:1.25}.agent-panel .amber{color:var(--amber)}.agent-panel .ap-dim{color:var(--green-dim)}.agent-panel .ap-afk{color:var(--amber)}.agent-panel .ap-hp{height:6px;background:#04100a;border:1px solid var(--green-faint);margin:3px 0}.agent-panel .ap-hp>div{height:100%}.agent-panel .ap-cargo{display:flex;flex-wrap:wrap;gap:2px 10px;margin:3px 0}.agent-panel .ap-res{display:flex;align-items:center;gap:4px}.agent-panel .ap-order .up{color:var(--green)}.agent-panel .ap-order .down{color:var(--red)}.row.selected{background:#3dff9e1f}.row.afk{opacity:.55}@media(max-width:1100px){.main{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.side{grid-template-rows:1fr 1fr 1fr}}.statusbar .tickval.pulse{animation:tickPulse .8s ease-out}@keyframes tickPulse{0%{color:var(--amber);text-shadow:0 0 12px var(--amber)}to{color:var(--ink);text-shadow:none}}.row .nw.flash-up{animation:nwUp 1.2s ease-out}.row .nw.flash-down{animation:nwDown 1.2s ease-out}@keyframes nwUp{0%{color:var(--green);text-shadow:0 0 12px var(--green)}to{color:var(--amber);text-shadow:none}}@keyframes nwDown{0%{color:var(--red);text-shadow:0 0 12px var(--red)}to{color:var(--amber);text-shadow:none}}.legend .px.fresh-up{animation:pxUp 1.2s ease-out}.legend .px.fresh-down{animation:pxDown 1.2s ease-out}@keyframes pxUp{0%{color:var(--green);text-shadow:0 0 10px var(--green)}to{color:var(--ink);text-shadow:none}}@keyframes pxDown{0%{color:var(--red);text-shadow:0 0 10px var(--red)}to{color:var(--ink);text-shadow:none}}.msg.fresh{animation:msgIn .35s ease-out}@keyframes msgIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:none}}.map-wrap:after{content:"";position:absolute;left:0;right:0;top:-120px;height:120px;pointer-events:none;background:linear-gradient(to bottom,transparent,rgba(61,255,158,.045),transparent);animation:mapScan 8s linear infinite}@keyframes mapScan{0%{transform:translateY(0)}to{transform:translateY(1200px)}}
