:root{--bg:#0a0e0d;--panel:#111614;--panel2:#161d1a;--line:#1f2a26;--green:#35ff9a;--green-dim:#2fde87;--amber:#fc5;--red:#ff4d4d;--text:#cfe8df;--muted:#6f857d}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;font-family:JetBrains Mono,Cascadia Code,Consolas,ui-monospace,monospace;font-size:14px}#main{height:100%}.loading{height:100vh;color:var(--green-dim);letter-spacing:2px;place-items:center;display:grid}.nick-screen{background:radial-gradient(circle at 50% 30%,#0d1715,#060908);place-items:center;height:100vh;display:grid}.nick-box{text-align:center;max-width:460px;padding:30px}.nick-art{color:var(--green);margin-bottom:18px;font-size:13px;line-height:1.2}.nick-box h1{color:var(--red);margin:6px 0;font-size:26px}.nick-sub{color:var(--muted);margin-bottom:24px}.nick-input{background:var(--panel);border:1px solid var(--line);width:100%;color:var(--green);text-align:center;outline:none;padding:14px 16px;font-family:inherit;font-size:18px}.nick-input:focus{border-color:var(--green)}.nick-btn{background:var(--green);color:#04140d;cursor:pointer;letter-spacing:1px;border:none;width:100%;margin-top:16px;padding:14px;font-family:inherit;font-size:15px;font-weight:700}.nick-btn:hover{background:var(--green-dim)}.app{grid-template-columns:1fr 360px;gap:14px;height:100vh;padding:14px;display:grid}.field{flex-direction:column;gap:14px;min-width:0;display:flex}.header{background:var(--panel);border:1px solid var(--line);justify-content:space-between;gap:20px;padding:14px 18px;display:flex}.header .label{color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-size:11px;display:block}.header .bar{color:var(--green);letter-spacing:2px;font-size:18px}.header .bar.critical{color:var(--red);animation:1s steps(2,end) infinite blink}.header .clock{color:var(--amber);font-size:26px;font-weight:700}.header .count{color:var(--green);font-size:18px}@keyframes blink{50%{opacity:.4}}.grid{flex:1;grid-template-columns:repeat(4,1fr);align-content:start;gap:12px;display:grid}.tile{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--green-dim);flex-direction:column;gap:6px;min-height:110px;padding:12px;transition:transform .1s;display:flex}.tile.healthy{border-left-color:var(--green-dim)}.tile.incident{border-left-color:var(--red);cursor:pointer;background:#1b0f0f;animation:1.1s ease-in-out infinite pulse-red}.tile.incident:hover{transform:scale(1.02)}.tile.claimed{border-left-color:var(--amber);background:#1a160c}.tile.mine{border-left-color:var(--green);background:#0e1a14}.tile.offline{opacity:.5;background:#0b0c0c;border-left-color:#444}.tile.offline .tile-bar{color:#555}.tile.offline .tile-status{color:#777}.tile.offline .tile-name{color:#888}@keyframes pulse-red{0%,to{box-shadow:0 0 rgba(255,77,77,0)}50%{box-shadow:0 0 14px rgba(255,77,77,.4)}}.tile-head{justify-content:space-between;display:flex}.tile-name{color:var(--text);font-weight:700}.tile-hp{color:var(--muted)}.tile-bar{color:var(--green);letter-spacing:1px;font-size:12px}.tile.incident .tile-bar{color:var(--red)}.tile-status{color:var(--muted);flex:1;font-size:11px}.tile.incident .tile-status{color:var(--red)}.tile.claimed .tile-status,.tile.mine .tile-status{color:var(--amber)}.tile-fix{color:var(--red);text-align:center;letter-spacing:2px;font-weight:700}.chat{background:var(--panel);border:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.chat-title{border-bottom:1px solid var(--line);color:var(--green);padding:10px 14px}.chat-body{flex-direction:column-reverse;flex:1;gap:6px;padding:10px 14px;display:flex;overflow-y:auto}.msg{font-size:12px;line-height:1.4}.msg.sys{color:var(--muted)}.msg.event{color:var(--red)}.msg.shame{color:var(--amber)}.msg.fix,.msg.win{color:var(--green)}.msg.user{color:#fff}.chat-input-row{border-top:1px solid var(--line);padding:8px}.chat-input{border:1px solid var(--line);width:100%;color:var(--green);background:#0c100e;outline:none;padding:8px 10px;font-family:inherit;font-size:12px}.chat-input:focus{border-color:var(--green)}.overlay{z-index:50;background:rgba(2,6,5,.86);place-items:center;display:grid;position:fixed;inset:0}.minigame{background:var(--panel2);border:1px solid var(--green-dim);width:min(560px,92vw);padding:20px;box-shadow:0 0 40px rgba(53,255,154,.12)}.mg-head{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.mg-title{color:var(--green);font-weight:700}.mg-target{color:var(--muted);font-size:12px}.mg-hint{color:var(--muted);margin:8px 0 14px;font-size:12px}.fall,.ip,.proc-row,.pipe,.db-btn,.raid-row,.tile{-webkit-user-select:none;user-select:none}.mg-timer{border:1px solid var(--line);background:#0c100e;height:18px;position:relative}.mg-timer-fill{background:linear-gradient(90deg, var(--red), var(--amber));height:100%;transition:width 1s linear}.mg-timer-text{color:var(--text);font-size:11px;position:absolute;top:1px;right:6px}.proc-list{flex-direction:column;display:flex}.proc-row{border-bottom:1px solid var(--line);cursor:pointer;grid-template-columns:70px 1fr 70px;padding:8px 10px;display:grid}.proc-row.head{color:var(--muted);cursor:default;font-size:11px}.proc-row:not(.head):hover{background:#1b2420}.proc-ram{text-align:right;color:var(--amber)}.rain{border:1px solid var(--line);background:#0c100e;height:320px;position:relative;overflow:hidden}.fall{cursor:pointer;white-space:nowrap;padding:4px 8px;font-size:12px;animation-name:fall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-10%}.fall.log{color:#fff;background:var(--red)}.fall.trap{color:#04140d;background:var(--green)}@keyframes fall{0%{top:-10%}to{top:110%}}.ddos{border:1px solid var(--line);background:#0c100e;height:320px;position:relative;overflow:hidden}.ip{cursor:pointer;white-space:nowrap;padding:4px 8px;font-size:12px;animation-name:flyacross;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;left:-60%}.ip.bad{background:var(--red);color:#fff;box-shadow:0 0 10px rgba(255,77,77,.6)}.ip.good{background:var(--panel);color:var(--muted);border:1px solid var(--line)}@keyframes flyacross{0%{left:-60%}to{left:110%}}.ssl-target{border:1px solid var(--line);letter-spacing:1px;background:#0c100e;margin-bottom:10px;padding:12px;font-size:18px}.ssl-ok{color:var(--green)}.ssl-rest{color:var(--muted)}.ssl-input{background:var(--panel);border:1px solid var(--line);width:100%;color:var(--green);outline:none;padding:12px;font-family:inherit;font-size:16px}.ssl-input:focus{border-color:var(--green)}.ssl-input.shake{border-color:var(--red);animation:.3s shake}.ssl-err{color:var(--red);height:14px;margin-top:6px;font-size:12px}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.db-progress{gap:8px;margin-bottom:16px;display:flex}.db-step{color:var(--muted);border:1px solid var(--line);padding:4px 8px;font-size:12px}.db-step.done{color:#04140d;background:var(--green);border-color:var(--green)}.db-buttons{flex-wrap:wrap;gap:10px;display:flex}.db-btn{background:var(--panel);border:1px solid var(--green-dim);color:var(--green);cursor:pointer;padding:14px 18px;font-family:inherit;font-size:15px}.db-btn:hover{background:var(--green-dim);color:#04140d}.pipes{justify-content:center;align-items:center;gap:6px;padding:24px 0;display:flex}.pipe{background:var(--panel);border:1px solid var(--line);color:var(--muted);cursor:pointer;width:44px;height:44px;font-size:24px}.pipe.ok{color:var(--green);border-color:var(--green)}.pipe-end{font-size:28px}.pipe-ok-msg{text-align:center;color:var(--green)}.endgame{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:100vh;padding:40px;display:flex}.endgame.won{background:radial-gradient(circle at 50% 30%,#0d1f16,#060908)}.endgame.lost{background:radial-gradient(circle at 50% 30%,#1f0d0d,#060908)}.endgame h1{margin:0;font-size:48px}.endgame.won h1{color:var(--green)}.endgame.lost h1{color:var(--red)}.quote{color:var(--muted);font-style:italic}.stats{color:var(--text);gap:24px;display:flex}.contrib,.records{background:var(--panel);border:1px solid var(--line);width:min(460px,92vw);padding:16px 20px}.contrib h3,.records h3{color:var(--green);margin:0 0 10px;font-size:14px}.contrib-row{border-bottom:1px solid var(--line);justify-content:space-between;padding:4px 0;display:flex}.records .feed{flex-direction:column;gap:4px;margin-top:10px;display:flex}.feed-row{color:var(--muted);font-size:12px}.muted{color:var(--muted)}.hint{color:var(--muted);font-size:12px}.restart{color:var(--amber);letter-spacing:1px;font-size:16px;font-weight:700;animation:1s steps(2,end) infinite blink}.overlay.raid{background:rgba(20,2,2,.92)}.raid-box{border:2px solid var(--red);background:#120808;width:min(620px,94vw);padding:24px}.raid-alarm{color:var(--red);text-align:center;letter-spacing:2px;font-size:20px;animation:.7s steps(2,end) infinite blink}.raid-text{text-align:center;color:var(--text);margin:12px 0}.raid-timer{text-align:center;color:var(--amber);font-size:30px;font-weight:700}.raid-phase2{text-align:center;color:var(--red);margin-top:8px;font-weight:700}.raid-stomp{text-align:center;color:var(--amber);margin-top:6px;animation:.5s steps(2,end) infinite blink}.raid-confirm{background:rgba(0,0,0,.65);place-items:center;display:grid;position:absolute;inset:0}.raid-confirm-box{border:1px solid var(--red);text-align:center;background:#1a0c0c;max-width:400px;padding:22px}.raid-confirm-text{color:var(--text);margin-bottom:18px;line-height:1.5}.raid-confirm-btns{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.raid-confirm-btns button{background:var(--panel);border:1px solid var(--line);color:var(--text);cursor:pointer;padding:10px 14px;font-family:inherit;font-size:13px}.raid-confirm-btns button:hover{background:#222}.raid-confirm-btns button.danger{border-color:var(--red);color:var(--red)}.raid-tree{flex-direction:column;gap:6px;margin-top:18px;display:flex}.raid-row{background:var(--panel);border:1px solid var(--line);cursor:pointer;padding:8px 12px}.raid-row.evidence{border-left:3px solid var(--red)}.raid-row.done{opacity:.4;cursor:default}.raid-row:hover{background:#1b2420}.raid-path{justify-content:space-between;display:flex}.raid-tag{color:var(--muted);font-size:11px}.raid-progress{background:#0c100e;height:6px;margin-top:6px}.raid-progress-fill{background:var(--green);height:100%;transition:width .9s linear}.raid-status{color:var(--amber);margin-top:4px;font-size:11px}