:root{--cyan:#22e6ff;--magenta:#ff3df2;--purple:#b06bff;--gold:#ffd54a;--red:#ff4d6a;--green:#4dff9a;--ice:#bff3ff;--panel:#0c091cd1;--line:#b06bff59;--text:#ecebff;--muted:#9a95c4;--title:"Orbitron", "Segoe UI", sans-serif;--ui:"Rajdhani", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--text);font-family:var(--ui);-webkit-user-select:none;user-select:none;background:#05030c;margin:0;overflow:hidden}#app{position:fixed;inset:0}#app>canvas{width:100%;height:100%;display:block}.hidden{display:none!important}kbd{border:1px solid var(--line);min-width:1.6em;font-family:var(--ui);text-align:center;color:#fff;background:#ffffff0d;border-bottom-width:2px;border-radius:4px;padding:0 .35em;font-size:.9em;font-weight:700;display:inline-block}#lobby,#result{background:radial-gradient(#05030c33,#05030cbf);place-items:center;padding:16px;display:grid;position:absolute;inset:0;overflow-y:auto}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-align:center;border-radius:14px;width:min(460px,100%);padding:28px 28px 22px;box-shadow:0 0 40px #b06bff40,inset 0 0 30px #22e6ff0d}h1{font-family:var(--title);letter-spacing:.06em;color:var(--cyan);text-shadow:0 0 18px #22e6ffb3;margin:0;font-size:clamp(36px,8vw,52px);font-weight:900}h1 span{color:var(--magenta);text-shadow:0 0 18px #ff3df2b3}.tagline{color:var(--muted);letter-spacing:.04em;margin:4px 0 22px;font-size:17px}.field{text-align:left;margin-bottom:14px;display:block}.field span,.miniLabel{font-family:var(--title);letter-spacing:.2em;color:var(--muted);margin-bottom:6px;font-size:10px;display:block}input{border:1px solid var(--line);color:#fff;width:100%;font-family:var(--ui);background:#00000059;border-radius:8px;outline:none;padding:12px 14px;font-size:18px;font-weight:600}input:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #22e6ff26}.field.sens{margin:18px 0 0}.field.sens b{color:var(--cyan)}input[type=range]{background:var(--line);height:4px;accent-color:var(--cyan);cursor:pointer;border:none;padding:0}input[type=range]:focus{box-shadow:none}input.err{border-color:var(--red)}.btn{border:1px solid var(--line);color:#fff;width:100%;font-family:var(--title);letter-spacing:.12em;cursor:pointer;background:#b06bff1f;border-radius:8px;margin:10px 0 0;padding:13px 16px;font-size:14px;font-weight:800;transition:transform 80ms,box-shadow .15s,background .15s;display:block}.btn:hover:not([disabled]){background:#b06bff40;box-shadow:0 0 18px #b06bff66}.btn:active:not([disabled]){transform:scale(.98)}.btn.primary{color:#0b0716;text-shadow:none;background:linear-gradient(90deg,#22e6ffd9,#ff3df2d9);border-color:#0000}.btn.primary:hover:not([disabled]){background:linear-gradient(90deg, var(--cyan), var(--magenta));box-shadow:0 0 24px #22e6ff80}.btn.primary.active{color:var(--green);border-color:var(--green);background:#4dff9a33}.btn.ghost{background:0 0}.btn.small{padding:9px 12px;font-size:11px}.btn[disabled]{opacity:.35;cursor:not-allowed}.joinRow{gap:8px;margin-top:10px;display:flex}.joinRow input{text-align:center;width:110px;font-family:var(--title);letter-spacing:.25em;text-transform:uppercase;flex:none}.joinRow .btn{margin:0}.note{color:var(--cyan);background:#22e6ff1a;border-radius:8px;margin:0 0 6px;padding:8px 10px;font-size:15px}#roomCode{font-family:var(--title);letter-spacing:.25em;color:#fff;text-shadow:0 0 20px #b06bffcc;margin-bottom:8px;font-size:46px;font-weight:900}#inviteBox{margin-bottom:14px}#inviteLink{color:var(--muted);word-break:break-all;-webkit-user-select:text;user-select:text;font-size:13px}#peerInfo{margin:14px 0 4px;font-size:18px}#peerInfo .ok{color:var(--green);font-weight:700}#peerInfo .wait{color:var(--muted)}#roomStatus,#rematchStatus{min-height:20px;color:var(--muted);font-size:15px}#rematchStatus{color:var(--gold);margin-top:8px}.spinner{border:2px solid var(--line);border-top-color:var(--cyan);vertical-align:-1px;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.controls{border-top:1px solid var(--line);color:var(--muted);margin-top:22px;padding-top:16px;font-size:15px;line-height:1.9}.controls p{margin:10px 0 0;font-size:14px;line-height:1.45}.controls b{color:var(--text)}#resultTitle{font-family:var(--title);letter-spacing:.08em;margin:0;font-size:44px;font-weight:900}#resultTitle.win{color:var(--green);text-shadow:0 0 22px #4dff9ab3}#resultTitle.lose{color:var(--red);text-shadow:0 0 22px #ff4d6ab3}#resultTitle.draw{color:var(--gold)}#resultSub{color:var(--muted);margin:4px 0 18px;font-size:17px}#resultStats{grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:8px;display:grid}#resultStats div{border:1px solid var(--line);background:#ffffff0a;border-radius:8px;padding:10px 4px}#resultStats b{font-family:var(--title);font-size:20px;display:block}#resultStats span{color:var(--muted);font-size:12px}#hud{pointer-events:none;position:absolute;inset:0}body.freeAim #app>canvas{cursor:none}#crosshair,#hitmarker{width:0;height:0;position:absolute;top:50%;left:50%}#crosshair i{background:#fff;position:absolute;box-shadow:0 0 4px #000c}#crosshair i:first-child,#crosshair i:nth-child(2){width:8px;height:2px;top:-1px}#crosshair i:first-child{left:-13px}#crosshair i:nth-child(2){left:5px}#crosshair i:nth-child(3),#crosshair i:nth-child(4){width:2px;height:8px;left:-1px}#crosshair i:nth-child(3){top:-13px}#crosshair i:nth-child(4){top:5px}#crosshair b{background:var(--cyan);width:2px;height:2px;position:absolute;top:-1px;left:-1px}#hitmarker{opacity:0}#hitmarker i{background:#fff;width:10px;height:2px;position:absolute;top:-1px;left:-5px}#hitmarker i:first-child{transform:rotate(45deg)translate(-11px)}#hitmarker i:nth-child(2){transform:rotate(45deg)translate(11px)}#hitmarker i:nth-child(3){transform:rotate(-45deg)translate(-11px)}#hitmarker i:nth-child(4){transform:rotate(-45deg)translate(11px)}#hitmarker.on{animation:.3s ease-out fadeOut}#hitmarker.head i{background:var(--gold);width:14px}#hitmarker.kill i{background:var(--red);width:18px;height:3px}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}#scoreBar{background:var(--panel);border:1px solid var(--line);border-radius:12px;align-items:center;gap:16px;padding:6px 16px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}#scoreBar .team{font-family:var(--title);align-items:center;gap:10px;min-width:170px;display:flex}#scoreBar .team.t0{justify-content:flex-end}#scoreBar .team b{text-shadow:0 0 14px;font-size:34px;font-weight:900;display:inline-block}#scoreBar[data-me="0"] .team.t0,#scoreBar[data-me="1"] .team.t1{text-underline-offset:6px;text-decoration:underline;text-decoration-thickness:2px}#scoreBar b.bump{animation:.35s bump}.fstate{letter-spacing:.1em;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:90px;font-size:10px;overflow:hidden}.flagIcon{width:20px;height:22px;position:relative}.flagIcon:before{content:"";background:#ddd;width:2px;height:22px;position:absolute;top:0;left:2px}.flagIcon:after{content:"";background:var(--fc);width:15px;height:10px;box-shadow:0 0 8px var(--fc);position:absolute;top:1px;left:4px}.flagIcon[data-s="1"]:after{animation:.5s infinite alternate blink}.flagIcon[data-s="2"]:after{opacity:.5;transform:rotate(25deg)}@keyframes blink{to{opacity:.2}}#scoreBar .mid{text-align:center}#timer{font-family:var(--title);font-size:22px;font-weight:800}#timer.low{color:var(--red)}#scoreGoal{font-family:var(--title);letter-spacing:.2em;color:var(--muted);font-size:9px}@keyframes bump{50%{transform:scale(1.35)}}#carryBanner{border:1px solid var(--gold);color:var(--gold);font-family:var(--title);letter-spacing:.1em;background:#ffd54a26;border-radius:8px;padding:6px 16px;font-size:14px;font-weight:800;animation:.7s infinite alternate blink;position:absolute;top:78px;left:50%;transform:translate(-50%)}.marker{flex-direction:column;align-items:center;gap:2px;display:flex;position:absolute;transform:translate(-50%,-100%)}.marker i{background:var(--mc);width:14px;height:14px;box-shadow:0 0 10px var(--mc);border:2px solid #fff;transform:rotate(45deg)}.marker span{font-family:var(--title);color:#fff;text-shadow:0 0 4px #000,0 0 2px #000;white-space:nowrap;font-size:11px;font-weight:800}.marker.edge i{opacity:.7}#scope{background:radial-gradient(circle,#0000 0 32vh,#000000eb 32.4vh);position:absolute;inset:0}#scope:before,#scope:after{content:"";background:#000000d9;position:absolute}#scope:before{width:2px;margin-left:-1px;top:18vh;bottom:18vh;left:50%}#scope:after{height:2px;margin-top:-1px;top:50%;left:calc(50% - 32vh);right:calc(50% - 32vh)}#scoreboard{border:1px solid var(--line);background:#080614e0;border-radius:12px;gap:18px;padding:18px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#scoreboard table{border-collapse:collapse;min-width:300px;font-size:16px}#scoreboard th{font-family:var(--title);letter-spacing:.12em;color:var(--tc);text-align:right;border-bottom:2px solid var(--tc);padding:4px 8px;font-size:10px}#scoreboard th:first-child,#scoreboard td:first-child{text-align:left}#scoreboard td{text-align:right;padding:5px 8px;font-weight:600}#scoreboard tr.me td{color:var(--gold)}#scoreboard small{color:var(--muted);font-size:10px}#killfeed{flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:absolute;top:14px;right:18px}.feedItem{background:#080614b3;border-radius:6px;padding:4px 10px;font-size:15px;font-weight:600;animation:.25s ease-out slideIn}.feedItem .me{color:var(--cyan)}.feedItem .opp{color:var(--magenta)}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}}#vitals{width:240px;font-family:var(--title);position:absolute;bottom:20px;left:22px}#vitals .row{grid-template-columns:66px 56px 1fr;align-items:center;gap:8px;margin-top:6px;display:grid}#vitals .lbl{letter-spacing:.2em;color:var(--muted);font-size:9px}#vitals b{text-align:right;font-size:30px;font-weight:900}#vitals .armor b{color:var(--cyan);font-size:20px}#vitals .bar{background:#ffffff1a;border-radius:3px;height:6px;overflow:hidden}#hpFill{background:linear-gradient(90deg, var(--green), #b8ff4d);height:100%;box-shadow:0 0 10px var(--green);transition:width .15s}#armorFill{background:var(--cyan);height:100%;box-shadow:0 0 10px var(--cyan);transition:width .15s}#vitals.low b{color:var(--red)}#vitals.low #hpFill{background:var(--red);box-shadow:0 0 10px var(--red)}#weaponBar{gap:8px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.wslot{background:var(--panel);text-align:center;opacity:.3;border:1px solid #ffffff14;border-radius:8px;width:104px;padding:6px 8px;transition:opacity .15s,border-color .15s,transform .15s;position:relative}.wslot.owned{opacity:.75}.wslot.active{opacity:1;border-color:var(--wc);box-shadow:0 0 14px color-mix(in srgb, var(--wc) 45%, transparent);transform:translateY(-4px)}.wslot .key{color:#0b0716;width:20px;height:20px;font-family:var(--title);background:#fff;border-radius:5px;font-size:12px;font-weight:900;line-height:20px;position:absolute;top:-8px;left:-6px}.wslot .name{font-family:var(--title);letter-spacing:.06em;color:var(--wc);font-size:10px;font-weight:800}.wslot .ammo{min-height:18px;font-size:14px;font-weight:700}#ammo{text-align:right;font-family:var(--title);position:absolute;bottom:22px;right:24px}#weaponName{letter-spacing:.15em;font-size:12px;font-weight:800}#ammoVal{text-shadow:0 0 12px #22e6ff99;font-size:46px;font-weight:900}#ammo .max{color:var(--muted);font-size:18px}#ammo.low #ammoVal{color:var(--red)}#reloadBar{background:#ffffff1a;border-radius:2px;width:140px;height:4px;margin-left:auto;overflow:hidden}#reloadBar div{background:var(--cyan);height:100%}.reloadTxt{letter-spacing:.2em;color:var(--cyan);visibility:hidden;margin-top:4px;font-size:11px}#ammo.reloading .reloadTxt{visibility:visible}#toasts{flex-direction:column;align-items:center;gap:4px;display:flex;position:absolute;top:62%;left:50%;transform:translate(-50%)}.toast{font-family:var(--title);letter-spacing:.08em;white-space:nowrap;background:#08061499;border-radius:6px;padding:4px 12px;font-size:15px;font-weight:800;animation:2s ease-out forwards toast}.toast.good{color:var(--green)}.toast.bad{color:var(--red)}.toast.info{color:var(--cyan)}@keyframes toast{0%{opacity:0;transform:translateY(10px)scale(.9)}10%{opacity:1;transform:none}75%{opacity:1}to{opacity:0;transform:translateY(-14px)}}#bigMsg{font-family:var(--title);letter-spacing:.08em;color:#fff;text-shadow:0 0 30px #b06bffe6;opacity:0;white-space:nowrap;font-size:clamp(48px,10vw,110px);font-weight:900;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}#bigMsg.show{animation:.35s ease-out forwards bigIn}#bigMsg.win{color:var(--green);text-shadow:0 0 30px #4dff9ae6}#bigMsg.lose{color:var(--red);text-shadow:0 0 30px #ff4d6ae6}#bigMsg.go{color:var(--cyan)}@keyframes bigIn{0%{opacity:0;transform:translate(-50%,-50%)scale(1.6)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}#damage{opacity:0;background:radial-gradient(#0000 50%,#ff28468c);position:absolute;inset:0}#damage.on{animation:.5s ease-out fadeOut}#lowHp{opacity:0;background:radial-gradient(#0000 40%,#ff1e3c66);transition:opacity .3s;position:absolute;inset:0}#lowHp.on{opacity:1;animation:.8s ease-in-out infinite alternate pulse}@keyframes pulse{0%{opacity:.5}to{opacity:1}}.dmgDir{border-top:5px solid var(--red);width:70px;height:14px;filter:drop-shadow(0 0 6px var(--red));border-radius:50% 50% 0 0;position:absolute;top:50%;left:50%}#deathScreen{text-align:center;font-family:var(--title);background:radial-gradient(#28000a40,#28000ab3);place-content:center;display:grid;position:absolute;inset:0}#deathScreen .title{color:var(--red);text-shadow:0 0 24px var(--red);font-size:56px;font-weight:900}#deathScreen .by{color:var(--text);margin:6px 0 18px;font-size:18px}#deathScreen .respawn{color:var(--muted);letter-spacing:.1em;font-size:16px}#deathScreen .respawn b{color:#fff;font-size:22px}#lockHint{border:1px solid var(--cyan);font-family:var(--title);letter-spacing:.15em;color:var(--cyan);pointer-events:auto;cursor:pointer;background:#080614cc;border-radius:8px;padding:12px 22px;font-weight:800;position:absolute;top:58%;left:50%;transform:translate(-50%)}@media (width<=1000px){.wslot{width:84px}#vitals{width:200px}#scoreBar .side{min-width:110px}}
