:root{--bg:#06070a;--panel:#0c0f14c7;--panel-border:#78a0c82e;--text:#dfe6ef;--muted:#8b97a6;--accent:#2fa8d8;--warn:#ff5a1f;--fire:#fff;--amber:#ffb020;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);font-family:Rajdhani,Segoe UI,system-ui,-apple-system,sans-serif}html,body,#app,canvas,.hud,.touch-layer{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;position:fixed;inset:0;overflow:hidden}#app{position:fixed;inset:0}.ui-root{display:contents}.game-canvas{outline:none;width:100%;height:100%;display:block;position:absolute;inset:0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}.hud{pointer-events:none;z-index:20;padding:calc(10px + var(--safe-t)) calc(12px + var(--safe-r)) calc(10px + var(--safe-b)) calc(12px + var(--safe-l));position:fixed;inset:0}.hud button{pointer-events:auto}.hud.away>:not(.net-status):not(.devbar){display:none}.vignette{background:radial-gradient(#0000 55%,#00000059 100%);transition:background .5s;position:absolute;inset:0}.vignette.blind{background:radial-gradient(#0000 35%,#000000bf 100%)}.hud-top{top:calc(8px + var(--safe-t));text-align:center;min-width:220px;position:absolute;left:50%;transform:translate(-50%)}.phase-label{letter-spacing:.3em;color:var(--muted);font-size:13px;font-weight:700}.timer{letter-spacing:.04em;font-variant-numeric:tabular-nums;text-shadow:0 0 18px #2fa8d899;min-height:54px;font-size:54px;font-weight:800;line-height:1}.phase-sub{color:var(--muted);letter-spacing:.05em;margin-top:2px;font-size:13px}.hud-top.aim .timer{color:#e8f6ff}.hud-top.aim.urgent .timer{color:var(--amber);text-shadow:0 0 22px #ffb020cc;animation:1s infinite pulse}.hud-top.fire .timer{color:#fff;text-shadow:0 0 30px #ffffffe6}.hud-top.warn .timer,.hud-top.warn .phase-label{color:var(--warn);text-shadow:0 0 20px #ff5a1fcc}.hud-top.hold .timer{color:#a7f3d0}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}.you-menu{--c:#fff;position:relative}.you-btn{align-items:center;gap:6px;max-width:10em;display:inline-flex}.you-btn .btn-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.you-btn .hex{clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:var(--c);flex:none;width:10px;height:10px}.you-btn .caret{color:var(--muted);font-size:9px}.menu{z-index:1;border:1px solid var(--panel-border);background:#0c0f14f5;border-radius:6px;flex-direction:column;min-width:100%;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.menu-item{text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:4px;padding:6px 10px;font-size:12px;font-weight:600}.menu-item:hover,.menu-item:focus-visible{background:#ffffff0f}.hud-right{top:calc(10px + var(--safe-t));right:calc(12px + var(--safe-r));flex-direction:column;align-items:flex-end;gap:6px;max-width:46vw;display:flex;position:absolute}.btn-row{gap:6px;display:flex}.icon-btn{background:var(--panel);border:1px solid var(--panel-border);letter-spacing:.12em;border-radius:6px;padding:5px 9px;font-size:11px;font-weight:700}.icon-btn.on{border-color:var(--accent);color:var(--accent)}.icon-btn.off{color:var(--muted)}.icon-btn .key{min-width:0;margin-left:6px;padding:0 4px;font-size:10px}.alive{letter-spacing:.1em;font-size:18px;font-weight:800}.pips{color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:2px 0;display:flex}.pips .key{margin-left:4px}.pip{--c:#fff;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:var(--c);width:12px;height:12px;box-shadow:0 0 6px var(--c)}.pip.dead{opacity:.18}.pip.watcher{--c:var(--muted);box-shadow:none;opacity:.6}.player-list{border:1px solid var(--panel-border);background:#080b10d9;border-radius:8px;min-width:140px;max-height:50vh;margin:0;padding:8px 12px;list-style:none;overflow-y:auto}.player-list li{align-items:center;gap:8px;padding:3px 0;font-size:14px;display:flex}.player-list .tag{margin-left:auto;padding-left:10px}.player-list .tag.warn{color:var(--amber)}.player-list .player-name{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.player-list li.dead .player-name,.player-list li.watching .player-name{color:var(--muted);font-weight:500}.killfeed{flex-direction:column;align-items:flex-end;gap:3px;margin-top:4px;display:flex}.feed-item{background:var(--panel);border:1px solid var(--panel-border);letter-spacing:.06em;white-space:nowrap;border-radius:4px;padding:3px 8px;font-size:12px;animation:8s linear forwards feed-fade}@keyframes feed-fade{0%,81.25%{opacity:1}to{opacity:0}}.feed-item .icon{color:var(--muted)}.banner{letter-spacing:.14em;opacity:0;white-space:nowrap;text-shadow:0 0 24px #2fa8d8b3;font-size:clamp(28px,7vw,64px);font-weight:900;transition:opacity .2s,transform .25s;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)scale(.9)}.banner.show{opacity:1;transform:translate(-50%,-50%)scale(1)}.banner.fire{color:#fff;text-shadow:0 0 40px #fff,0 0 12px #f35}.banner.warn{color:var(--warn);text-shadow:0 0 30px #ff5a1fe6;font-size:clamp(20px,5vw,44px)}.banner.dead{color:#f35;text-shadow:0 0 30px #f35c;font-size:clamp(20px,5vw,44px)}.banner.aim{color:#cfe9ff}.hint{bottom:calc(14px + var(--safe-b));letter-spacing:.1em;color:var(--muted);white-space:nowrap;background:#0006;border-radius:999px;padding:4px 12px;font-size:12px;position:absolute;left:50%;transform:translate(-50%)}.spectator{bottom:calc(16px + var(--safe-b));background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:none;position:absolute;left:50%;transform:translate(-50%)}.spectator.show{display:flex}.spec-mid{text-align:center;min-width:150px}.spec-label{letter-spacing:.3em;color:var(--muted);font-size:11px}.spec-name{letter-spacing:.08em;font-weight:800}.spec-btn{border:1px solid var(--panel-border);letter-spacing:.08em;background:#ffffff0f;border-radius:8px;min-width:84px;padding:12px 14px;font-weight:800}.spec-btn:active{background:#2fa8d84d}.devbar{top:calc(10px + var(--safe-t));left:calc(12px + var(--safe-l));background:var(--panel);border:1px dashed #ffb02073;border-radius:8px;max-width:44vw;padding:6px;position:absolute}.dev-head{color:var(--amber);letter-spacing:.18em;padding:2px 4px;font-size:11px;font-weight:800}.devbar[hidden]{display:none}.dev-tools{gap:2px;min-width:168px;margin-top:4px;display:grid}.dev-row{text-align:left;color:var(--text);background:0 0;border:0;border-radius:5px;justify-content:space-between;align-items:center;gap:18px;padding:4px 4px 4px 6px;font-size:13px;font-weight:600;display:flex}.dev-row:hover{background:#ffffff0f}.dev-row.on .dev-label{color:var(--amber)}.key{border:1px solid var(--panel-border);text-align:center;min-width:20px;color:var(--muted);background:#ffffff0f;border-bottom-width:2px;border-radius:4px;padding:1px 6px;font:600 11px ui-monospace,Menlo,monospace}.dev-btn{border:1px solid var(--panel-border);letter-spacing:.1em;background:#ffffff0f;border-radius:6px;padding:5px 8px;font-size:11px;font-weight:800}.modal{pointer-events:auto;z-index:40;background:#03040699;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:16px;display:flex;position:absolute;inset:0}.modal.hidden{display:none}.card{border:1px solid var(--panel-border);text-align:center;background:#0c0f14eb;border-radius:14px;width:100%;max-width:460px;padding:24px 26px;box-shadow:0 20px 60px #0009}.title{letter-spacing:.16em;color:#e8f6ff;text-shadow:0 0 26px #2fa8d899;margin:0;font-size:clamp(36px,9vw,58px);font-weight:900}.title.draw{color:var(--amber)}.tagline{color:var(--muted);letter-spacing:.06em;margin-top:6px}.rules{text-align:left;margin:18px 0;padding-left:18px;font-size:15px;line-height:1.5}.big-btn{letter-spacing:.2em;color:#fff;background:linear-gradient(#2fa8d8,#1a6f95);border:none;border-radius:10px;margin-top:14px;padding:14px 28px;font-size:18px;font-weight:900;box-shadow:0 0 24px #2fa8d873}.big-btn:active{transform:scale(.97)}.stats-line{color:var(--muted);letter-spacing:.06em;margin:12px 0 8px;font-size:13px}.stats{border-collapse:collapse;width:100%;font-size:14px}.stats th{letter-spacing:.2em;color:var(--muted);text-align:left;border-bottom:1px solid var(--panel-border);padding:4px 6px;font-size:11px}.stats td{text-align:left;padding:5px 6px;font-weight:700}.stats td:nth-child(2){text-align:center}.touch-layer{z-index:10;position:fixed;inset:0}.stick{opacity:.55;pointer-events:none;background:radial-gradient(circle,#ffffff0f,#ffffff05);border:2px solid #dcebff47;border-radius:50%;transition:opacity .15s;position:absolute;top:0;left:0}.stick.active{opacity:1}.stick-right{border-color:#ffb02066}.stick-knob{background:#e6f0ff59;border:2px solid #ffffff80;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.stick-right .stick-knob{background:#ffb02059;border-color:#ffc864b3}.stick-tick{transform-origin:0 0;width:50%;height:0;position:absolute;top:50%;left:50%}.stick-tick:after{content:"";filter:drop-shadow(0 0 4px #ffb020);border-top:7px solid #0000;border-bottom:7px solid #0000;border-left:11px solid #ffb020;width:0;height:0;position:absolute;top:-7px;right:-10px}@media (max-width:640px),(max-height:480px){.timer{min-height:40px;font-size:40px}.phase-label,.phase-sub{font-size:11px}.hud-top{min-width:0;max-width:46vw}.alive{font-size:14px}.feed-item{font-size:11px}.devbar{max-width:40vw}.hud.touch .spectator{bottom:calc(24px + var(--safe-b))}}@media (max-width:640px) and (orientation:portrait){.hud-top{top:calc(44px + var(--safe-t));max-width:70vw}.devbar{max-width:46vw}}.devstats{left:calc(12px + var(--safe-l));bottom:calc(12px + var(--safe-b));z-index:30;pointer-events:none;background:#040609b8;border:1px solid #7ee78740;border-radius:6px;padding:6px 8px;position:fixed}.devstats pre{color:#c9f7cf;white-space:pre;margin:4px 0 0;font:11px/1.35 ui-monospace,SF Mono,Menlo,Consolas,monospace}.devstats-copy{pointer-events:auto;color:#c9f7cf;letter-spacing:.08em;background:0 0;border:1px solid #7ee78766;border-radius:4px;margin-top:6px;padding:2px 8px;font-size:11px}.devstats canvas{width:100%;min-width:0;height:48px;display:block}.frames{top:calc(64px + var(--safe-t));right:calc(12px + var(--safe-r));z-index:31;color:#c9d5e3;background:#040609db;border:1px solid #79c0ff47;border-radius:6px;flex-direction:column;gap:6px;width:min(440px,100vw - 32px);padding:6px 8px;font:11px/1.35 ui-monospace,SF Mono,Menlo,Consolas,monospace;display:flex;position:fixed;bottom:12px}.frames-head{align-items:center;gap:8px;display:flex}.frames-head b{color:#79c0ff;letter-spacing:.08em}.frames-rate{color:#8b97a6;flex:1}.frames-btn,.frames-chip{font:inherit;color:#c9d5e3;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff24;border-radius:4px;padding:2px 6px}.frames-btn.on{color:#ffb020;border-color:#ffb02099}.frames-chips{flex-wrap:wrap;gap:4px;display:flex}.frames-chip{opacity:.45}.frames-chip.on{opacity:1;border-color:#79c0ff80}.frames-list{white-space:pre;flex:60%;min-height:0;overflow-y:auto}.frames-row{cursor:pointer;justify-content:space-between;gap:8px;padding:0 2px;display:flex}.frames-row:hover{background:#ffffff0f}.frames-row.sel{background:#79c0ff2e}.frames-row.up{color:#ffb86b}.frames-row.down{color:#9fd8a6}.frames-row.k-event{color:#ffd866}.frames-row.k-welcome,.frames-row.k-debug{color:#79c0ff}.frames-bytes{color:#6b7686}.frames-detail{min-height:0;font:inherit;color:#c9d5e3;white-space:pre;border-top:1px solid #ffffff1a;flex:0 40%;margin:0;padding-top:6px;overflow:auto}.join-form{align-items:stretch;gap:10px;margin-top:22px;display:flex}.join-form .big-btn{margin-top:0;padding:12px 18px}.code-input{border:1px solid var(--panel-border);color:#e8f6ff;min-width:0;font:inherit;letter-spacing:.25em;text-transform:uppercase;text-align:center;-webkit-user-select:text;user-select:text;touch-action:manipulation;background:#ffffff0f;border-radius:10px;flex:1;padding:12px 14px;font-size:20px;font-weight:800}.code-input::placeholder{color:var(--muted);letter-spacing:.12em;font-size:15px;font-weight:600}.or{color:var(--muted);letter-spacing:.1em;margin:14px 0 0;font-size:13px}.big-btn.alt{box-shadow:none;background:linear-gradient(#3a4452,#232a33)}.big-btn:disabled{opacity:.5}a.big-btn{text-decoration:none;display:inline-block}.home-status{min-height:1.4em;color:var(--amber);margin-top:12px;font-size:14px}.title.small{font-size:clamp(24px,6vw,36px)}.modal.closed{z-index:60}.player-picker{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:14px;display:flex}.picker-label{color:var(--muted);letter-spacing:.12em;margin-right:4px;font-size:12px}.count-btn{border:1px solid var(--panel-border);color:#c9d6e2;background:#ffffff0d;border-radius:8px;width:36px;height:36px;font-size:15px;font-weight:800}.count-btn.on{color:#fff;background:#2fa8d8;border-color:#2fa8d8}.name-row{justify-content:center;align-items:center;gap:10px;margin-top:14px;display:flex}.name-row[hidden]{display:none}.name-input{border:1px solid var(--panel-border);color:#e8f6ff;min-width:0;font:inherit;-webkit-user-select:text;user-select:text;background:#ffffff0d;border-radius:8px;flex:0 220px;padding:8px 10px;font-size:16px;font-weight:700}.name-input:disabled{opacity:.6}.panel{border:1px solid var(--panel-border);border-top:2px solid var(--accent);text-align:left;background:#0a0d12;border-radius:2px;width:100%;max-width:440px;max-height:calc(100dvh - 32px);padding:22px 22px 0;overflow-y:auto}.panel .title{text-shadow:none}.panel header{margin-bottom:18px}.brand{letter-spacing:.32em;color:var(--accent);font-size:12px;font-weight:900}.panel-title{color:#e8f6ff;margin:4px 0 0;font-size:26px;font-weight:800;line-height:1.15}.panel .tagline{margin-top:2px;font-size:14px}.code-ticket{text-align:left;background:#ffffff08;border:1px dashed #78a0c859;border-radius:2px;grid-template-columns:1fr auto;grid-template-areas:"label action""code action";align-items:center;row-gap:2px;width:100%;margin-top:0;padding:10px 14px;display:grid}.code-ticket:hover{border-color:var(--accent)}.ticket-label{letter-spacing:.16em;color:var(--muted);grid-area:label;font-size:11px}.ticket-code{letter-spacing:.22em;color:#e8f6ff;-webkit-user-select:text;user-select:text;grid-area:code;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:28px;font-weight:700}.ticket-action{letter-spacing:.14em;color:var(--accent);grid-area:action;font-size:11px;font-weight:800}.field{gap:6px;margin-top:18px;display:grid}.field-label{letter-spacing:.16em;color:var(--muted);font-size:11px}.count-fixed{color:#e8f6ff;font-size:18px;font-weight:800}.segmented.two{grid-template-columns:repeat(2,1fr)}.segmented.two .count-btn{letter-spacing:.1em;padding:0 12px;font-size:12px}.segmented{border:1px solid var(--panel-border);border-radius:2px;grid-template-columns:repeat(7,1fr);display:grid}.segmented .count-btn{border:0;border-left:1px solid var(--panel-border);background:0 0;border-radius:0;width:auto;height:38px}.segmented .count-btn:first-child{border-left:0}.segmented .count-btn.on{background:var(--accent);color:#04121a}.seats{border-top:1px solid var(--panel-border);margin:18px 0 0;padding:0;list-style:none}.seat{--c:#fff;border-bottom:1px solid var(--panel-border);border-left:3px solid var(--c);grid-template-columns:26px 1fr auto;align-items:center;gap:10px;padding:9px 10px 9px 12px;font-size:15px;display:grid}.seat.you{background:color-mix(in srgb, var(--c) 9%, transparent)}.seat-num{color:var(--c);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12px}.seat-name{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.seat.open .seat-name,.seat.bot .seat-name{color:var(--muted);font-weight:500}.seat.open{border-left-color:color-mix(in srgb, var(--c) 35%, transparent)}.seat.away .seat-name{opacity:.55}.seat-tags{gap:10px;display:flex}.tag{letter-spacing:.14em;color:var(--muted);font-size:10px;font-weight:800}.tag.host{color:var(--amber)}.tag.you{color:var(--accent)}.tag.reconnecting{color:var(--amber)}.seats.stale .seat:not(.you){opacity:.4}.lobby-viewers{min-height:1.2em;color:var(--muted);margin-top:8px;font-size:13px}.panel-foot{border-top:1px solid var(--panel-border);background:#0a0d12;margin:10px -22px 0;padding:12px 22px 20px;position:sticky;bottom:0}.lobby-status{color:#c9d6e2;font-size:14px}.panel-foot .big-btn{background:var(--accent);color:#04121a;width:100%;box-shadow:none;border-radius:2px;margin-top:0;padding:14px 18px;font-size:17px}.panel-foot .big-btn.alt{color:var(--text);background:#232a33}.big-btn[hidden]{display:none}.net-status{z-index:70;border:1px solid var(--amber);color:var(--amber);letter-spacing:.12em;pointer-events:none;background:#281408eb;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:800;position:absolute;top:12px;left:50%;transform:translate(-50%)}.net-status.hidden{display:none}.icon.gun{display:inline-block;transform:scaleX(-1)}.panel-sub{color:var(--muted);letter-spacing:.06em;pointer-events:auto;font-size:13px;text-decoration:none}.panel-sub:hover{color:var(--text);text-decoration:underline}.panel .captcha.shown{margin-top:8px}.home-backdrop{pointer-events:none;opacity:0;transition:opacity 1.2s;position:absolute;inset:0}.home-backdrop.on{opacity:1}.panel .field+.field,.panel .captcha+.field{margin-top:16px}.panel .name-input,.panel .code-input{box-sizing:border-box;background:#ffffff0a;border-radius:2px;flex:none;width:100%}.panel .name-input{padding:10px 12px}.panel .join-form{grid-template-columns:1fr auto;gap:0;margin-top:0;display:grid}.panel .code-input{text-align:left;border-right:0;font-size:18px}.panel .join-form .big-btn{border:1px solid var(--panel-border);box-shadow:none;color:var(--text);background:#232a33;border-radius:0 2px 2px 0;margin-top:0;padding:0 18px;font-size:14px}.panel .or{letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:10px;margin:18px 0 2px;font-size:11px;display:flex}.panel .or:before,.panel .or:after{content:"";border-top:1px solid var(--panel-border);flex:1}.panel .home-status{min-height:0;margin:0 0 10px}.panel-foot .lobby-status{margin:0 0 10px}.panel-foot a.big-btn{text-align:center;display:block}
