:root{--bone:#e4dfd3;--dim:#9a968c;--ink:#0b0d0e;--panel:#0c0e0fc7;--line:#e4dfd329;--rogue:#5b9bd5;--militia:#e06646;--hit:#fff;--kill:#ff4a36;--font:"Barlow Condensed", "Arial Narrow", sans-serif;--body:"Barlow", system-ui, sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--bone);font-family:var(--body);-webkit-user-select:none;user-select:none;background:#111416;margin:0;overflow:hidden}#app canvas{display:block}.hidden{display:none!important}#hud{pointer-events:none;font-family:var(--font);letter-spacing:.04em;position:fixed;inset:0}#crosshair{--gap:8px;transition:opacity .1s;position:absolute;top:50%;left:50%}#crosshair i{background:#f0f0ebd9;position:absolute;box-shadow:0 0 2px #000c}#crosshair .t,#crosshair .b{width:2px;height:9px;left:-1px}#crosshair .l,#crosshair .r{width:9px;height:2px;top:-1px}#crosshair .t{bottom:var(--gap)}#crosshair .b{top:var(--gap)}#crosshair .l{right:var(--gap)}#crosshair .r{left:var(--gap)}#hitmarker{opacity:0;position:absolute;top:50%;left:50%}#hitmarker i{background:var(--hit);width:11px;height:2px;position:absolute;box-shadow:0 0 2px #000000e6}#hitmarker i:first-child{transform:translate(-50%,-50%)rotate(45deg)translate(-10px)}#hitmarker i:nth-child(2){transform:translate(-50%,-50%)rotate(135deg)translate(-10px)}#hitmarker i:nth-child(3){transform:translate(-50%,-50%)rotate(225deg)translate(-10px)}#hitmarker i:nth-child(4){transform:translate(-50%,-50%)rotate(315deg)translate(-10px)}#hitmarker.kill i{background:var(--kill);width:14px}#scope{--sx:0px;--sy:0px;--R:min(70vh, 47vw);position:absolute;inset:0;overflow:hidden}#scope .lens{background:radial-gradient(circle at calc(50% + var(--sx)) calc(50% + var(--sy)), transparent 0, transparent calc(var(--R) - 70px), #00000047 calc(var(--R) - 22px), #000000b3 calc(var(--R) - 4px), #000 calc(var(--R) + 2px));position:absolute;inset:-90px}#scope .eyebox{width:calc(var(--R) * 2);height:calc(var(--R) * 2);transform:translate(calc(-50% + var(--sx)), calc(-50% + var(--sy)));border-radius:50%;position:absolute;top:50%;left:50%}#scope .glass{background:radial-gradient(38% 22% at 32% 22%,#ffffff12,#0000 70%),radial-gradient(circle,#6ea0b408 40%,#142d3729 100%);border-radius:50%;position:absolute;inset:0;box-shadow:inset 0 0 0 2px #ff6e461a,inset 0 0 0 5px #5a96ff0d}#scope .readout{font:600 13px var(--font);letter-spacing:.14em;color:#ff5b3d;text-shadow:0 0 6px #ff4628bf;white-space:nowrap;position:absolute}#scope .readout b{font-variant-numeric:tabular-nums;font-weight:700}#scope .range{bottom:24%;right:24%}#scope .zoom{bottom:24%;left:24%}#scope .rds{top:24%;right:24%}#scope .breath{opacity:0;width:22%;height:22%;transition:opacity .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}#scope .breath.on{opacity:1}#scope .breath circle{fill:none;stroke-width:.9px}#scope .breath .track{stroke:#ffffff1f}#scope .breath .fill{stroke:#e6f0ffbf;stroke-dasharray:276.5;stroke-linecap:round}#scope .breath.gasp .fill{stroke:#ff5b3d}#scope-target{font:700 15px var(--font);letter-spacing:.18em;text-transform:uppercase;text-shadow:0 0 6px #000000e6;position:absolute;top:60%;left:50%;transform:translate(-50%)}#scope-target.enemy{color:#ff4a36}#scope-target.friend{color:#7fc0ff}#scope .reticle{width:calc(var(--R) * 2);height:calc(var(--R) * 2);stroke:#050505;stroke-width:.35px;position:absolute;top:50%;left:50%;overflow:visible;transform:translate(-50%,-50%)}#scope .reticle .thick{stroke-width:2.2px}#scope .reticle .mils{stroke-width:.5px}#scope .reticle .dot{fill:#ff2a14;stroke:none;filter:drop-shadow(0 0 1.5px #ff2a14)drop-shadow(0 0 4px #ff281499)}#scope .blackout{opacity:0;background:#000;position:absolute;inset:0}#scope.enter .blackout{animation:.17s ease-out scopeBlack}#scope.enter .lens,#scope.enter .eyebox{animation:.22s cubic-bezier(.2,.8,.3,1) scopeIn}@keyframes scopeBlack{0%{opacity:.95}to{opacity:0}}@keyframes scopeIn{0%{scale:1.4}to{scale:1}}#vignette{background:radial-gradient(#0000 55%,#00000073 100%);position:absolute;inset:0}#dmg{opacity:0;background:radial-gradient(#0000 35%,#7800008c 80%,#5a0000d9 100%);position:absolute;inset:0}#score{background:var(--panel);border:1px solid var(--line);align-items:center;gap:14px;padding:4px 14px;font-size:15px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}#score .side{align-items:center;gap:8px;display:flex}#score .side b{text-align:center;min-width:30px;font-size:26px;font-weight:700}#score .tag{color:var(--ink);padding:1px 5px;font-size:13px;font-weight:700}#score .rogue .tag{background:var(--rogue)}#score .militia .tag{background:var(--militia)}#score .goal{color:var(--dim);text-transform:uppercase;font-size:13px}#score .goal b{color:var(--bone)}#score .side.mine b{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}#zone-hud{--zc:#f2c230;background:var(--panel);border:1px solid var(--line);border-bottom:2px solid var(--zc);text-transform:uppercase;white-space:nowrap;align-items:center;gap:8px;padding:3px 12px;font-size:14px;transition:border-color .25s;display:flex;position:absolute;top:58px;left:50%;transform:translate(-50%)}#zone-hud i{border:2px solid var(--zc);border-radius:50%;width:11px;height:11px;transition:border-color .25s}#zone-hud .moves{color:var(--dim);font-size:12px}#zone-hud .moves b{color:var(--bone);font-variant-numeric:tabular-nums}#zone-hud.inside i{background:var(--zc);animation:1s ease-in-out infinite zonePulse}#zone-hud.ours #zone-state,#zone-hud.theirs #zone-state{color:var(--zc)}@keyframes zonePulse{50%{transform:scale(1.35)}}#minimap{border:1px solid var(--line);background:#0c0e0f9e;border-radius:4px;width:190px;height:190px;position:absolute;top:16px;left:16px}#chat{width:min(400px,40vw);font-family:var(--body);letter-spacing:0;font-size:14px;position:absolute;bottom:24px;left:18px}#chat-log{flex-direction:column;gap:2px;max-height:184px;display:flex;overflow:hidden}#chat .line{text-shadow:0 1px 2px #000000e6;overflow-wrap:anywhere;background:#0c0e0f80;padding:2px 8px;transition:opacity 1.2s;animation:.18s ease-out feedIn}#chat .line.old{opacity:0}#chat .line.sys{color:var(--dim);font-style:italic}#chat .line.me{border-left:2px solid var(--bone)}#chat .line .sep{color:var(--dim);margin-right:2px}#chat .entry{background:var(--panel);border:1px solid var(--line);align-items:center;gap:8px;margin-top:4px;padding:4px 8px;display:none}#chat .entry span{font:700 13px var(--font);color:var(--dim);letter-spacing:.08em}#chat-input{min-width:0;color:var(--bone);font:14px var(--body);background:0 0;border:0;outline:0;flex:1}#chat.open .entry{display:flex}#chat.open #chat-log{overflow-y:auto}#chat.open .line.old{opacity:1;transition:none}#killfeed{flex-direction:column;align-items:flex-end;gap:4px;font-size:17px;display:flex;position:absolute;top:16px;right:18px}#killfeed .row{background:var(--panel);align-items:center;gap:9px;padding:3px 10px;animation:.18s ease-out feedIn;display:flex}#killfeed .row.me{border-left:2px solid var(--bone)}#killfeed .w{color:var(--dim);text-transform:uppercase;font-size:13px}#killfeed .hs{color:var(--kill);font-size:13px;font-weight:700}.rogue-c{color:var(--rogue)}.militia-c{color:var(--militia)}@keyframes feedIn{0%{opacity:0;transform:translate(12px)}}#notice{text-align:center;text-transform:uppercase;text-shadow:0 1px 3px #000000e6;font-size:20px;font-weight:600;position:absolute;top:62%;left:50%;transform:translate(-50%)}#notice div{animation:.25s ease-out noticeIn}#notice .big{color:var(--kill);letter-spacing:.12em;font-size:30px}@keyframes noticeIn{0%{opacity:0;transform:scale(1.3)}}#ammo{text-align:right;text-shadow:0 1px 3px #000c;position:absolute;bottom:22px;right:26px}#ammo .name{color:var(--dim);text-transform:uppercase;letter-spacing:.14em;font-size:15px}#ammo .count b{font-size:52px;font-weight:600;line-height:1}#ammo .count span{color:var(--dim);margin-left:6px;font-size:22px}#ammo .count b.low{color:var(--militia)}#ammo-pips{justify-content:flex-end;gap:3px;margin:6px 0 10px;display:flex}#ammo-pips i{background:var(--bone);width:4px;height:13px}#ammo-pips i.spent{background:#e4dfd333}#ammo-pips.sniper i{width:6px;height:18px}#ammo-pips.deagle i{width:6px;height:16px}#ammo-pips.m16,#ammo-pips.mp5{gap:2px}#ammo-pips.m16 i,#ammo-pips.mp5 i{width:3px;height:11px}#ammo.melee .count,#ammo.melee #ammo-pips{display:none}#ammo.melee .name{color:var(--bone);margin-bottom:8px;font-size:18px}#slots{justify-content:flex-end;gap:6px;font-size:13px;display:flex}#slots div{border:1px solid var(--line);color:var(--dim);background:#0000004d;padding:2px 8px}#slots div.on{color:var(--bone);border-color:#e4dfd399}#slots b{margin-right:5px}#reload-hint{color:var(--bone);background:var(--panel);padding:2px 10px;font-size:16px;position:absolute;top:56%;left:50%;transform:translate(-50%)}kbd{min-width:1.5em;font:600 .9em var(--font);text-align:center;background:#00000059;border:1px solid #e4dfd38c;border-radius:3px;margin-right:7px;padding:0 5px;display:inline-block}#pickup{text-transform:uppercase;letter-spacing:.1em;background:var(--panel);white-space:nowrap;padding:3px 12px;font-size:17px;animation:.2s ease-out noticeIn;position:absolute;top:57%;left:50%;transform:translate(-50%)}#death{text-align:center;text-shadow:0 2px 6px #000;position:absolute;top:30%;left:50%;transform:translate(-50%)}#death .by{text-transform:uppercase;font-size:40px;font-weight:700}#death .how{color:var(--dim);text-transform:uppercase;letter-spacing:.12em;font-size:18px}#death .timer{margin-top:14px;font-size:16px}#death .classes{justify-content:center;gap:8px;margin-top:22px;display:flex}#death .classes div{pointer-events:auto;cursor:pointer;background:var(--panel);border:1px solid var(--line);min-width:150px;color:var(--dim);flex-direction:column;align-items:center;gap:2px;padding:8px 12px;display:flex}#death .classes div.on{color:var(--bone);background:#e4dfd31f;border-color:#e4dfd3b3}#death .classes b{letter-spacing:.12em;text-transform:uppercase;font-size:20px}#death .classes small{letter-spacing:.04em;font-size:13px}#death .classes kbd{margin:0 0 4px}body.touch #death .classes kbd{display:none}#banner{text-align:center;letter-spacing:.18em;text-shadow:0 3px 12px #000;font-size:64px;font-weight:700;position:absolute;top:22%;left:0;right:0}#banner small{letter-spacing:.1em;color:var(--bone);font-size:20px;font-weight:500;display:block}#scoreboard{grid-template-columns:1fr 1fr;gap:16px;min-width:min(760px,94vw);display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#scoreboard .team{background:var(--panel);border:1px solid var(--line);padding:12px 14px}#scoreboard h3{justify-content:space-between;margin:0 0 8px;font-size:22px;display:flex}#scoreboard table{border-collapse:collapse;width:100%;font-size:17px}#scoreboard th{color:var(--dim);text-align:right;font-size:13px;font-weight:500}#scoreboard th:first-child,#scoreboard td:first-child{text-align:left}#scoreboard td{text-align:right;border-top:1px solid var(--line);padding:3px 0}#scoreboard tr.me td{color:#fff;font-weight:700}.overlay{background:radial-gradient(at 50% 40%,#14181a8c,#050607e6);justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.card{border:1px solid var(--line);background:#0e1011eb;flex-direction:column;gap:12px;width:min(460px,100%);padding:28px 30px;display:flex}.menu-card{width:min(520px,100%)}.kicker{font-family:var(--font);color:var(--dim);letter-spacing:.3em;font-size:13px}h1{font-family:var(--font);letter-spacing:.06em;margin:0;font-size:clamp(54px,12vw,84px);font-weight:700;line-height:.9}h1 span{color:var(--militia)}h2{font-family:var(--font);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:34px}.sub{color:var(--dim);margin:0 0 6px}input#name{font:600 20px var(--font);letter-spacing:.08em;color:var(--bone);border:1px solid var(--line);text-transform:uppercase;background:#07090a;outline:none;padding:10px 12px}input#name:focus{border-color:#e4dfd380}.teams{grid-template-columns:1fr 1fr;gap:10px;display:grid}.team-btn{font-family:var(--font);color:var(--bone);border:1px solid var(--line);border-top:3px solid var(--c);cursor:pointer;background:#07090a;flex-direction:column;align-items:flex-start;gap:2px;padding:10px;display:flex}.team-btn b{letter-spacing:.1em;color:var(--c);font-size:22px}.team-btn small{color:var(--dim);font-size:14px}.team-btn.rogue{--c:var(--rogue)}.team-btn.militia{--c:var(--militia)}.team-btn.selected{background:color-mix(in srgb, var(--c) 18%, #07090a);border-color:var(--c)}.class-pick{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.class-btn{font-family:var(--font);color:var(--dim);border:1px solid var(--line);cursor:pointer;text-align:left;background:#07090a;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 10px;display:flex}.class-btn b{letter-spacing:.12em;text-transform:uppercase;color:var(--bone);font-size:19px}.class-btn small{font-size:13px;line-height:1.2}.class-btn.selected{color:var(--bone);background:#e4dfd31a;border-color:#e4dfd3b3}.classes-label{font-family:var(--font);color:var(--dim);letter-spacing:.25em;text-transform:uppercase;font-size:13px}button{font-family:var(--font)}.play{letter-spacing:.3em;background:var(--bone);color:var(--ink);cursor:pointer;border:none;padding:12px;font-size:26px;font-weight:700}.play:hover{background:#fff}.play:disabled{opacity:.5;cursor:default}.ghost{color:var(--bone);border:1px solid var(--line);cursor:pointer;letter-spacing:.06em;background:0 0;padding:8px 12px;font-size:15px}.ghost:hover{border-color:#e4dfd380}.ghost.small{padding:3px 8px;font-size:13px}.room-row{color:var(--dim);align-items:center;gap:8px;font-size:14px;display:flex}.room-row b{color:var(--bone)}#menu-status{min-height:1em;color:var(--militia);font-size:14px}.controls{color:var(--dim);border-top:1px solid var(--line);flex-wrap:wrap;gap:4px 14px;padding-top:12px;font-size:13px;display:flex}.controls b{color:var(--bone);font-weight:600}#pause label{color:var(--dim);flex-direction:column;gap:4px;font-size:14px;display:flex}#pause label span{color:var(--bone)}#pause input[type=range]{width:100%;accent-color:var(--bone)}.overlay{z-index:10;overflow-y:auto}body.touch{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;overscroll-behavior:none}#hud{z-index:6}#touch{z-index:5;touch-action:none;--r:calc(16px + env(safe-area-inset-right));--b:calc(16px + env(safe-area-inset-bottom));--l:calc(12px + env(safe-area-inset-left));position:fixed;inset:0}.stick-base{pointer-events:none;background:#0000002e;border:2px solid #e4dfd34d;border-radius:50%;width:112px;height:112px;margin:-56px 0 0 -56px;position:absolute}.stick-knob{background:#e4dfd373;border-radius:50%;width:50px;height:50px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tbtn{width:56px;height:56px;color:var(--bone);font:600 13px var(--font);letter-spacing:.08em;-webkit-user-select:none;user-select:none;background:#0c0e0f6b;border:1.5px solid #e4dfd352;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute}.tbtn.down{background:#e4dfd359}.tbtn.on{border-color:var(--bone);background:#e4dfd338}.t-fire{width:84px;height:84px;right:calc(var(--r) + 76px);bottom:calc(var(--b) + 86px);background:#e0664647;border-color:#e06646bf;font-size:15px}.t-aim{right:var(--r);bottom:calc(var(--b) + 164px)}.t-swap{right:var(--r);bottom:calc(var(--b) + 84px);font-size:20px}.t-jump{right:var(--r);bottom:var(--b)}.t-crouch{right:calc(var(--r) + 76px);bottom:var(--b);width:50px;height:50px}.t-reload{right:calc(var(--r) + 142px);bottom:var(--b);width:50px;height:50px}.t-pickup{right:calc(var(--r) + 208px);bottom:var(--b);border-color:var(--bone);width:64px;height:64px}.t-breath{right:calc(var(--r) + 176px);bottom:calc(var(--b) + 100px);font-size:11px}.t-pause,.t-scores{top:calc(10px + env(safe-area-inset-top));width:40px;height:40px;font-size:12px}.t-pause{left:var(--l)}.t-scores{left:calc(var(--l) + 50px)}body.touch #minimap{top:calc(60px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));width:120px;height:120px}body.touch #chat{bottom:auto;top:calc(190px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));width:min(260px,36vw);font-size:12px}body.touch #chat-log{max-height:90px}body.touch #ammo{left:50%;right:auto;bottom:calc(6px + env(safe-area-inset-bottom));text-align:center;transform:translate(-50%)}body.touch #ammo .name,body.touch #ammo #ammo-pips,body.touch #ammo #slots{display:none}body.touch #ammo .count b{font-size:34px}body.touch .controls.keys,.controls.taps{display:none}body.touch .controls.taps{display:flex}#rotate{display:none}@media (orientation:portrait){body.touch #rotate{z-index:20;font:600 22px var(--font);letter-spacing:.1em;text-align:center;background:#0b0d0e;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:fixed;inset:0}}@media (height<=520px){.overlay{align-items:flex-start;padding:10px}.card{gap:8px;margin:auto;padding:16px 18px}h1{font-size:46px}.sub{margin:0;font-size:13px}input#name{padding:7px 10px;font-size:17px}.team-btn{padding:6px 10px}.team-btn b{font-size:18px}.play{padding:8px;font-size:21px}.controls{padding-top:8px;font-size:12px}#score{padding:2px 10px;top:8px}#score .side b{font-size:20px}#killfeed{font-size:13px;top:8px;right:10px}#killfeed .row{padding:2px 7px}#zone-hud{padding:2px 10px;font-size:12px;top:42px}#notice{font-size:15px}#notice .big{font-size:22px}#death .by{font-size:26px}#death .classes{margin-top:10px}#death .classes div{min-width:0;padding:5px 8px}#death .classes b{font-size:16px}#death .classes small{display:none}.class-btn{padding:5px 8px}.class-btn b{font-size:16px}.class-btn small{font-size:11px}#banner{font-size:38px}#scoreboard{gap:8px;min-width:92vw}#scoreboard table{font-size:14px}}
