:root{--bg:#0d1319;--panel:#0f161ee6;--panel-2:#1c2632d9;--line:#a0c8e629;--text:#e8eef4;--muted:#93a3b3;--accent:#3ef0c8;--accent2:#ffb347;--danger:#ff4d5e;--volt:#2fd3ff;--ember:#ff8a2a;--radius:10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;margin:0;overflow:hidden}body{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}input,select{-webkit-user-select:text;user-select:text}#app{position:fixed;inset:0}#view{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#app:not(.in-match):not(.backdrop) #view{visibility:hidden}#app:not(.in-match){background:radial-gradient(1200px 700px at 70% 20%, #1c3340 0%, transparent 60%), radial-gradient(900px 600px at 10% 90%, #2a2135 0%, transparent 60%), var(--bg)}#app.backdrop #view{filter:blur(3px)brightness(.55)}#app.backdrop:not(.in-match) #view{visibility:visible}#app.backdrop .menu-screen{background:linear-gradient(90deg,#0d1319eb 0%,#0d1319b3 40%,#0d131900 75%)}#ui,#modal{pointer-events:none;position:absolute;inset:0}#ui>*,#modal>*{pointer-events:auto}#ui.passthrough,#ui.passthrough>*{pointer-events:none}#ui.passthrough .death-panel,#ui.passthrough button{pointer-events:auto}code{background:#ffffff14;border-radius:4px;padding:1px 6px}.hidden{display:none!important}.btn{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:8px;padding:10px 16px;transition:background .12s,border-color .12s,transform 60ms}.btn:hover{background:#3ef0c81f;border-color:#3ef0c880}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{color:#04211b;background:linear-gradient(135deg,#2fd9b5,#23b597);border-color:#0000;font-weight:700}.btn.primary:hover{filter:brightness(1.08)}.btn.danger{color:#ffb3ba;border-color:#ff4d5e80}.btn.big{padding:14px 18px;font-size:1.05rem;font-weight:700}.btn small{opacity:.75;margin-top:2px;font-size:.78rem;font-weight:400;display:block}.field{color:var(--muted);flex-direction:column;gap:6px;margin:8px 0;font-size:.85rem;display:flex}.field input,.field select{font:inherit;color:var(--text);border:1px solid var(--line);background:#00000059;border-radius:8px;outline:none;padding:9px 11px}.field input:focus,.field select:focus{border-color:var(--accent)}.field select:disabled{opacity:.7}.field.range input{accent-color:var(--accent);padding:0}.field output{color:var(--text);float:right}.check{cursor:pointer;align-items:center;gap:8px;margin:8px 0;font-size:.9rem;display:flex}.check input{accent-color:var(--accent);width:18px;height:18px}.row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.row.end{justify-content:flex-end}.col{flex-direction:column;gap:10px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:6px 22px;display:grid}.grid3{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.muted{color:var(--muted)}.small{font-size:.8rem}.error{color:#ff97a1}.note{color:var(--muted);font-size:.85rem}.note.warn{color:var(--accent2)}.tag{color:var(--muted);vertical-align:middle;letter-spacing:.05em;background:#ffffff1a;border-radius:4px;padding:1px 5px;font-size:.65rem}.tag.host{color:var(--accent2);background:#ffb3472e}h1,h2,h3,h4{letter-spacing:.02em;margin:0 0 8px}h2{font-size:1.5rem}h4{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:14px;font-size:.8rem}.screen{justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0;overflow-y:auto}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;width:min(520px,100%);max-height:calc(100vh - 40px);padding:22px 24px;overflow-y:auto;box-shadow:0 20px 60px #00000073}.panel.wide{width:min(980px,100%)}.menu-screen{justify-content:flex-start;padding-left:max(5vw,20px)}.menu-left{flex-direction:column;gap:12px;width:min(440px,100%);display:flex}.brand{align-items:center;gap:14px;display:flex}.logo-mark{width:64px;height:64px;color:var(--accent);--accent2:var(--accent2);filter:drop-shadow(0 0 18px #3ef0c859)}.brand h1{letter-spacing:.06em;font-size:2.6rem;font-style:italic;font-weight:900;line-height:1}.brand h1 span{color:var(--accent);margin-left:.25em}.brand .tag{letter-spacing:.02em;background:0 0;margin:4px 0 0;padding:0;font-size:.9rem}.menu-buttons{flex-direction:column;gap:10px;margin-top:6px;display:flex}.menu-row{gap:10px;display:flex}.menu-row .btn{text-align:center;flex:1}.server-status{color:var(--muted);font-size:.82rem}.dot{border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot.ok{background:var(--accent);box-shadow:0 0 8px var(--accent)}.dot.bad{background:var(--danger)}.level-badge{color:var(--muted);align-items:center;gap:10px;font-size:.8rem;display:flex}.level-badge .lvl{color:var(--accent2);font-weight:800}.xpbar{background:#ffffff14;border-radius:3px;flex:1;height:6px;overflow:hidden}.xpbar>div{background:linear-gradient(90deg, var(--accent2), #ffd27a);height:100%}.map-pick{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px;display:grid}.map-card{border:1px solid var(--line);cursor:pointer;background:#00000040;border-radius:10px;flex-direction:column;gap:4px;padding:10px;display:flex;position:relative}.map-card.ro{cursor:default}.map-card input{opacity:0;position:absolute}.map-card.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.map-card small{color:var(--muted);font-size:.78rem}.map-thumb{border-radius:7px;height:86px}.map-relay{background:linear-gradient(160deg,#6d8aa6 0%,#c9b9a3 55%,#4a4c50 56%),#444;position:relative}.map-relay:after{content:"";background:repeating-linear-gradient(90deg,#b4483a 0 18%,#0000 18% 24%,#2f6fa6 24% 42%,#0000 42% 48%,#d9a52e 48% 66%,#0000 66% 72%,#4d8a52 72% 90%,#0000 90% 100%);border-radius:2px;height:26%;position:absolute;bottom:14%;left:12%;right:12%}.map-sunline{background:linear-gradient(170deg,#3f8fd8 0%,#ffe1b3 55%,#d8bf8f 56%);position:relative}.map-sunline:after{content:"";background:#d6b88c;width:6%;height:58%;position:absolute;bottom:14%;left:44%;box-shadow:-60px 18px 0 10px #e6d3b1,60px 18px 0 10px #eef2f5}.lobby-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.room-code{letter-spacing:.2em;border:1px dashed var(--accent);color:var(--accent);cursor:pointer;text-align:center;border-radius:10px;padding:8px 16px;font-family:ui-monospace,Consolas,monospace;font-size:2.2rem;font-weight:900}.room-code small{letter-spacing:.1em;color:var(--muted);font-family:system-ui,sans-serif;font-size:.65rem;display:block}.lobby-body{grid-template-columns:1fr 1.6fr;gap:20px;margin-top:12px;display:grid}.plist,.team-col ul{margin:0;padding:0;list-style:none}.plist li,.team-col li{border-bottom:1px solid var(--line);padding:7px 10px}li.me{color:var(--accent);font-weight:700}li.dc{opacity:.5}.teams{grid-template-columns:1fr 1fr;gap:12px;display:grid}.team-col h4{align-items:center;gap:6px;display:flex}.team1,.team-col.team1 h4{color:var(--volt)}.team2,.team-col.team2 h4{color:var(--ember)}.emblem{vertical-align:-1px;background:currentColor;width:12px;height:12px;margin:0 4px;display:inline-block}.e-triangle{clip-path:polygon(50% 0,100% 100%,0 100%)}.e-square{border-radius:1px}.weapon-cards{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.wcard{text-align:left;font:inherit;color:var(--text);border:1px solid var(--line);cursor:pointer;background:#0000004d;border-radius:10px;flex-direction:column;gap:3px;padding:12px;display:flex;position:relative}.wcard:hover{border-color:#3ef0c880}.wcard.sel{border-color:var(--accent);background:#3ef0c81a}.wcard .key{color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 5px;font-size:.7rem;position:absolute;top:8px;right:10px}.wcard small{color:var(--muted);margin-bottom:4px;font-size:.75rem}.wcard label{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-size:.65rem}.statbar{background:#ffffff14;border-radius:3px;height:5px;overflow:hidden}.statbar>div{background:var(--accent);height:100%}.ammo-line{color:var(--muted);margin-top:4px;font-size:.75rem}.wicon{opacity:.85;color:#cfd8e2;background:currentColor;height:38px;margin:4px 0 6px}.wicon-carbine{clip-path:polygon(2% 40%,30% 40%,32% 30%,70% 30%,72% 40%,98% 40%,98% 52%,62% 52%,58% 88%,50% 88%,50% 58%,40% 58%,36% 80%,28% 80%,30% 58%,2% 58%)}.wicon-smg{clip-path:polygon(10% 34%,75% 34%,75% 42%,90% 42%,90% 52%,60% 52%,58% 96%,50% 96%,50% 56%,40% 56%,38% 80%,30% 80%,32% 52%,10% 52%)}.wicon-shotgun{clip-path:polygon(0% 40%,70% 40%,72% 34%,98% 34%,98% 46%,72% 46%,70% 56%,46% 56%,46% 66%,24% 66%,22% 56%,0% 56%)}.wicon-rifle{clip-path:polygon(0% 46%,34% 46%,36% 22%,62% 22%,62% 34%,66% 34%,66% 46%,100% 46%,100% 52%,60% 52%,56% 80%,48% 80%,48% 58%,0% 60%)}.overlay{background:#05090d8c;justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.overlay.deploy{background:linear-gradient(#05090d59,#05090dd9)}.modal{z-index:20;background:#05090db3}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #fff3;border-radius:50%;width:28px;height:28px;padding:0;position:relative}.swatches.big .swatch{border-radius:10px;width:44px;height:44px}.swatch.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.swatch.locked{filter:grayscale()brightness(.5);cursor:not-allowed}.swatch span{color:#fff;justify-content:center;align-items:center;font-size:.62rem;font-weight:800;display:flex;position:absolute;inset:0}.howto .keys td{vertical-align:top;padding:4px 10px 4px 0}.howto .keys td:first-child{color:var(--accent);white-space:nowrap;font-weight:700}.rules{color:var(--muted);padding-left:18px;font-size:.9rem}.death-panel{text-align:center;pointer-events:auto;background:#0f161ed1;border:1px solid #ff4d5e66;border-radius:12px;min-width:300px;padding:14px 22px;position:absolute;top:58%;left:50%;transform:translate(-50%)}.dp-title{font-size:1.2rem}.dp-title b{color:#ff8f99}.dp-sub{color:var(--muted);font-size:.85rem}.dp-timer{margin:8px 0;font-size:1.6rem;font-weight:800}.dp-next{color:var(--muted);font-size:.8rem}.results .result-head{letter-spacing:.04em;font-size:3rem;font-style:italic;font-weight:900}.result-head.win{color:var(--accent)}.result-head.lose{color:#ff8f99}.results-body{grid-template-columns:1fr 260px;gap:18px;display:grid}.results-table{border-collapse:collapse;width:100%;margin-bottom:10px;font-size:.88rem}.results-table th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;border-bottom:1px solid var(--line);padding:6px;font-size:.7rem}.results-table td{border-bottom:1px solid #ffffff0d;padding:6px}.results-table tr.me td{color:var(--accent);font-weight:700}.results-table tr.t1 td:nth-child(2){border-left:3px solid var(--volt)}.results-table tr.t2 td:nth-child(2){border-left:3px solid var(--ember)}.team-score-line{gap:14px;margin-bottom:8px;font-size:1.4rem;font-weight:800;display:flex}.xp-box{background:#ffb34712;border:1px solid #ffb34740;border-radius:10px;padding:12px}.xp-box h4{color:var(--accent2);letter-spacing:.02em;text-transform:none;margin:0 0 6px;font-size:1.3rem}.xp-box ul{margin:0 0 8px;padding:0;font-size:.85rem;list-style:none}.xp-box li{color:var(--muted);justify-content:space-between;padding:3px 0;display:flex}.levelup{color:var(--accent2);font-weight:800}.unlocks{font-size:.8rem}.toast-wrap,#toasts{z-index:50;pointer-events:none;flex-direction:column;gap:6px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--line);background:#0f161eeb;border-radius:8px;padding:8px 14px;font-size:.88rem;animation:.2s fadein}@keyframes fadein{0%{opacity:0;transform:translateY(-6px)}}.net-status{color:var(--muted);z-index:40;pointer-events:none;background:#0006;border-radius:10px;padding:3px 8px;font-size:.7rem;position:absolute;bottom:8px;right:10px}.net-status.online{color:var(--accent)}.net-status.lost{color:var(--danger)}.in-match .net-status.online{display:none}.has-overlay .hud .center-msg,.has-overlay .hud .crosshair,.has-overlay .hud .hitmarker{display:none!important}.hud{pointer-events:none;text-shadow:0 1px 3px #000000b3;font-weight:600;position:absolute;inset:0}.hud-vignette{opacity:0;background:radial-gradient(#0000 45%,#c8141ebf 100%);transition:opacity .2s;position:absolute;inset:0}.crosshair{--gap:8px;--cc:#fff;position:absolute;top:50%;left:50%}.ch{background:var(--cc);position:absolute;box-shadow:0 0 2px #000000e6}.ch-t,.ch-b{width:2px;height:9px;left:-1px}.ch-l,.ch-r{width:9px;height:2px;top:-1px}.ch-t{top:calc(-1 * var(--gap) - 9px)}.ch-b{top:var(--gap)}.ch-l{left:calc(-1 * var(--gap) - 9px)}.ch-r{left:var(--gap)}.ch-dot{background:var(--cc);width:2px;height:2px;position:absolute;top:-1px;left:-1px}.hitmarker{opacity:0;width:0;height:0;position:absolute;top:50%;left:50%}.hitmarker.show{opacity:1}.hitmarker i{background:#fff;width:10px;height:2px;position:absolute;box-shadow:0 0 3px #000}.hitmarker i:first-child{transform:translate(5px,5px)rotate(45deg)}.hitmarker i:nth-child(2){transform:translate(-15px,5px)rotate(-45deg)}.hitmarker i:nth-child(3){transform:translate(5px,-7px)rotate(-45deg)}.hitmarker i:nth-child(4){transform:translate(-15px,-7px)rotate(45deg)}.hitmarker.head i{background:#ffd34d}.hitmarker.kill i{background:#ff4d5e;width:14px}.dmg-wrap{position:absolute;top:50%;left:50%}.dmg-ind{opacity:0;width:120px;height:120px;position:absolute;top:-60px;left:-60px}.dmg-ind:before{content:"";clip-path:polygon(0 100%,50% 0,100% 100%);background:radial-gradient(at 50% 100%,#ff3c46f2,#ff3c4600 70%);width:70px;height:22px;position:absolute;top:-34px;left:50%;transform:translate(-50%)}.hud-top{text-align:center;position:absolute;top:4px;left:50%;transform:translate(-50%)}.hud-timer{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:800}.hud-timer.urgent{color:#ff8f99}.hud-objective{color:#cfd8e2;opacity:.85;font-size:.75rem}.hud-scores{justify-content:center;align-items:center;gap:10px;font-size:1.3rem;font-weight:800;display:flex}.ts{background:#00000059;border-radius:6px;min-width:44px;padding:2px 10px}.ts.mine{outline:2px solid #ffffff80}.ts.team1{color:var(--volt)}.ts.team2{color:var(--ember)}.ts-lim{color:var(--muted);font-size:.7rem}.killfeed{flex-direction:column;align-items:flex-end;gap:4px;max-width:46vw;display:flex;position:absolute;top:12px;right:12px}.kf-item{background:#0a0f1499;border-radius:6px;align-items:center;gap:8px;padding:4px 10px;font-size:.82rem;display:flex}.kf-item.mine{border:1px solid #3ef0c899}.kf-w{color:#cfd8e2;font-size:.75rem;font-weight:400}.kf-msg{color:var(--muted);font-weight:400}.center-msg{text-align:center;opacity:0;transition:opacity .15s;position:absolute;top:30%;left:50%;transform:translate(-50%)}.center-msg.show{opacity:1}.cm-main{letter-spacing:.06em;font-size:1.4rem;font-weight:900}.cm-sub{color:#ffd34d;letter-spacing:.2em;font-size:.85rem}.center-msg.kill .cm-main{color:#fff}.center-msg.count .cm-main{font-size:4rem}.hud-banner{letter-spacing:.3em;color:var(--accent2);font-size:1.4rem;position:absolute;top:18%;left:50%;transform:translate(-50%)}.protect{letter-spacing:.25em;color:#9ff3ff;font-size:.75rem;position:absolute;top:62%;left:50%;transform:translate(-50%)}.hud-bl,.hud-br,.hud-top{background:radial-gradient(#050a0f73,#050a0f00 72%);padding:6px 14px}.hud-bl{position:absolute;bottom:8px;left:6px}.hp{align-items:center;gap:10px;display:flex}.hp-num{font-variant-numeric:tabular-nums;min-width:64px;font-size:2.2rem;font-weight:900}.hp-bar{background:#00000073;border:1px solid #ffffff26;border-radius:5px;width:200px;height:10px;overflow:hidden}.hp-fill{background:linear-gradient(90deg,#3ef0c8,#9ff3ff);height:100%;transition:width .15s}.hp-fill.low{background:linear-gradient(90deg,#ff4d5e,#ff8f99)}.hud-area{color:#cfd8e2;letter-spacing:.15em;text-transform:uppercase;margin-top:4px;font-size:.72rem}.hud-br{text-align:right;position:absolute;bottom:8px;right:6px}.weapon-name{letter-spacing:.14em;text-transform:uppercase;color:#cfd8e2;font-size:.8rem}.ammo{font-variant-numeric:tabular-nums}.ammo-mag{font-size:2.4rem;font-weight:900}.ammo-mag.low{color:#ff8f99}.ammo-res{color:#cfd8e2;margin-left:4px;font-size:1.1rem}.ammo-hint{color:var(--accent2);letter-spacing:.12em;min-height:1em;font-size:.72rem}.hud-stats{color:#cfd8e2;font-size:.7rem;font-weight:400;position:absolute;top:8px;left:10px}.hud-scope{background:radial-gradient(circle,#0000 0 31vh,#000000f5 31.2vh);position:absolute;inset:0}.scope-h,.scope-v{background:#000000d9;position:absolute}.scope-h{height:1px;top:50%;left:0;right:0}.scope-v{width:1px;top:0;bottom:0;left:50%}.scope-ring{border:3px solid #000000d9;border-radius:50%;width:62vh;height:62vh;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scoreboard{border:1px solid var(--line);min-width:min(620px,92vw);text-shadow:none;background:#0a0f14e0;border-radius:12px;padding:14px 18px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scoreboard table{border-collapse:collapse;width:100%;font-size:.85rem;font-weight:400}.scoreboard th{text-align:left;color:var(--muted);padding:4px 6px;font-size:.7rem}.scoreboard td{border-top:1px solid #ffffff0f;padding:5px 6px}.scoreboard tr.me td{color:var(--accent);font-weight:700}.scoreboard tr.dc td{opacity:.5}.sb-title{margin-bottom:8px;font-weight:800}.sb-team{margin-top:8px;font-weight:800}.sb-team.team1{color:var(--volt)}.sb-team.team2{color:var(--ember)}.touch-layer{touch-action:none;z-index:5;position:absolute;inset:0}.touch-move{width:42%;position:absolute;top:25%;bottom:0;left:0}.touch-look{width:58%;position:absolute;top:0;bottom:0;right:0}.stick-base{opacity:.55;pointer-events:none;background:#ffffff0f;border:2px solid #ffffff40;border-radius:50%;width:112px;height:112px;margin:-56px 0 0 -56px;position:absolute;top:auto;bottom:60px;left:110px}.stick-base.active{opacity:1;bottom:auto}.stick-knob{background:#3ef0c899;border-radius:50%;width:48px;height:48px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.tbtn{color:#fff;touch-action:none;background:#0a0f1473;border:2px solid #ffffff4d;border-radius:50%;justify-content:center;align-items:center;font:700 .8rem system-ui,sans-serif;display:flex;position:absolute}.tbtn.down,.tbtn.on{border-color:var(--accent);background:#3ef0c873}.tbtn-fire{background:#ff4d5e59;width:92px;height:92px;bottom:90px;right:26px}.tbtn-fire2{background:#ff4d5e4d;width:66px;height:66px;top:34%;left:24px}.tbtn-aim{width:60px;height:60px;bottom:132px;right:140px}.tbtn-jump{width:60px;height:60px;bottom:50px;right:132px}.tbtn-reload{width:50px;height:50px;bottom:172px;right:34px}.tbtn-switch{width:48px;height:48px;bottom:92px;right:212px}.tbtn-pause{border-radius:10px;width:42px;height:42px;top:12px;left:12px}.rotate-guard{display:none}@media (pointer:coarse) and (orientation:portrait){.rotate-guard{z-index:100;text-align:center;background:var(--bg);justify-content:center;align-items:center;padding:30px;display:flex;position:absolute;inset:0}.rotate-guard b{font-size:1.4rem}}@media (max-width:860px),(max-height:560px){.panel{padding:14px 16px}.weapon-cards{grid-template-columns:repeat(2,1fr)}.lobby-body,.results-body,.grid3{grid-template-columns:1fr}.brand h1,.results .result-head{font-size:2rem}.hp-bar{width:120px}.hp-num,.ammo-mag{font-size:1.6rem}.map-thumb{height:50px}.in-match .hud-bl{top:60px;bottom:auto;left:64px}.in-match .hud-br{top:70px;bottom:auto}.killfeed{font-size:.7rem;top:58px}}@media (max-width:560px){.grid2{grid-template-columns:1fr}.menu-screen{justify-content:center;padding-left:20px}}
