:root{--ink-00:#0b0e12;--ink-10:#13181f;--ink-20:#1c232c;--ink-30:#2a323d;--ink-40:#3d4753;--ink-50:#5a6675;--signal-cyan:#4de0ff;--signal-amber:#ffb23b;--signal-red:#ff3b5c;--rank-iron:#8e948f;--rank-bronze:#c77a38;--rank-silver:#d7dde3;--rank-gold:#f5c13a;--rank-platinum:#3fe6bf;--rank-diamond:#5bb8ff;--rank-ascendant:#ff4a78;--rank-god:#fafcff;--fs-12:12px;--fs-14:14px;--fs-16:16px;--fs-20:20px;--fs-28:28px;--fs-40:40px;--r-0:0;--r-2:2px;--r-4:4px;--r-8:8px;--font-display:ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--font-ui:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease-snap:cubic-bezier(.2, .8, .2, 1);--z-hud:10;--z-notice:20;--z-lock:30;--z-settings:40;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--font-ui);background:var(--ink-00);color:#f3f6f8;font-variant-numeric:tabular-nums}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit}#renderCanvas{touch-action:none;outline:none;width:100%;height:100%;display:block}#hud{pointer-events:none;position:fixed;inset:0}#hud[hidden]{display:none}.nickname-gate{z-index:30;background:radial-gradient(at 50% 24%,#224e7657,#0000 58%),linear-gradient(#03060af5,#07090af0);place-items:center;padding:24px 16px;display:grid;position:fixed;inset:0}.nickname-gate[hidden]{display:none}.nickname-panel{background:#07090ad1;border:1px solid #ffffff24;border-radius:8px;gap:12px;width:min(420px,100vw - 32px);padding:18px;display:grid;box-shadow:inset 0 1px #ffffff14,0 24px 60px #00000075}.nickname-panel .brand{justify-self:center;font-size:clamp(46px,12vw,82px)}.nickname-title{color:#f8fbfc;text-align:center;text-transform:uppercase;font-size:18px;font-weight:950;line-height:1}.nickname-context,.nickname-error{color:#ecf3f6a8;text-align:center;min-height:18px;font-size:12px;font-weight:700}.nickname-error{color:#ffd45d}.nickname-field{color:#ecf3f6a3;letter-spacing:.12em;text-transform:uppercase;gap:6px;font-size:10px;font-weight:900;display:grid}.nickname-field input{color:#f8fbfc;width:100%;min-height:46px;font:inherit;letter-spacing:0;text-transform:none;background:#ffffff14;border:1px solid #ffffff29;border-radius:4px;outline:none;padding:0 12px;font-size:16px}.nickname-field input:focus{border-color:#ffd45d9e;box-shadow:0 0 0 3px #ffd45d29}.nickname-submit{color:#14100a;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:linear-gradient(#ffe89c 0%,#f0b94a 100%);border:1px solid #ffd45d9e;border-radius:4px;min-height:46px;font-size:12px;font-weight:950}.nickname-submit:disabled{opacity:.5;cursor:default}.hud-bar{border:1px solid var(--ink-40);border-radius:var(--r-2);color:#dcebf8e6;min-height:32px;font-family:var(--font-display);font-size:var(--fs-12);letter-spacing:.04em;text-transform:uppercase;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0b0e12d1;align-items:center;gap:14px;padding:0 12px;line-height:1;display:flex;position:absolute;top:16px;left:16px}.hud-bar strong{color:#f5f8fa;margin-left:4px;font-weight:700}.dev-strip{border:1px solid var(--ink-30);border-radius:var(--r-2);color:#b4c6d7cc;min-height:26px;font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0b0e12b3;align-items:center;gap:12px;padding:0 10px;font-size:11px;line-height:1;display:flex;position:absolute;bottom:16px;right:16px}.dev-strip[hidden]{display:none}.dev-strip strong{color:#d8e3ec;margin-left:4px;font-weight:700}.rank-iron{color:var(--rank-iron)}.rank-bronze{color:var(--rank-bronze)}.rank-silver{color:var(--rank-silver)}.rank-gold{color:var(--rank-gold)}.rank-platinum{color:var(--rank-platinum)}.rank-diamond{color:var(--rank-diamond)}.rank-ascendant{color:var(--rank-ascendant)}.rank-god{color:var(--rank-god);text-shadow:0 0 10px #ffb23bb8,0 0 20px #ff4a7873}.match-notice{color:#f8fbfc;text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(120deg,#181a18d6,#382316bd),#07090ac7;border:1px solid #ffd45d47;gap:4px;min-width:220px;max-width:min(420px,100vw - 32px);min-height:58px;padding:10px 16px;display:grid;position:absolute;top:58px;left:50%;transform:translate(-50%);box-shadow:inset 0 -2px #ffd45d2e,0 10px 28px #0000004d}.match-notice[hidden]{display:none}.match-notice-title{text-transform:uppercase;font-size:15px;font-weight:950;line-height:1}.match-notice-meta{color:#f6f9fab3;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:750;line-height:1.1;overflow:hidden}.health-indicator{color:#f4fbff;width:min(560px,60vw);font-family:var(--font-display);pointer-events:none;justify-items:center;gap:6px;display:grid;position:absolute;bottom:24px;left:50%;transform:translate(-50%)}.health-value{font-size:var(--fs-20);letter-spacing:.04em;color:var(--signal-cyan);opacity:0;transition:opacity .22s var(--ease-snap);font-weight:700;line-height:1}.health-indicator.show-value .health-value{opacity:1}.health-indicator.low .health-value{color:var(--signal-amber)}.health-indicator.critical .health-value{color:var(--signal-red)}.health-bar{border-radius:var(--r-2);background:#ffffff14;width:100%;height:4px;position:relative;overflow:hidden}.health-fill{background:var(--signal-cyan);width:100%;height:100%;transition:width .14s var(--ease-snap), background-color .22s var(--ease-snap)}.health-indicator.low .health-fill{background:var(--signal-amber)}.health-indicator.critical .health-fill{background:var(--signal-red);animation:health-pulse 1s var(--ease-snap) infinite}@keyframes health-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (width<=620px){.health-indicator{width:calc(100vw - 32px);bottom:16px}}.scoreboard{color:#ecf3f6cc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;visibility:hidden;background:#080b0edb;border:1px solid #ffffff1f;min-width:min(620px,100vw - 32px);max-height:calc(100vh - 112px);font-size:13px;line-height:1;transition:opacity 90ms,transform 90ms;position:absolute;top:72px;left:50%;overflow-y:auto;transform:translate(-50%)translateY(-8px)}.scoreboard.visible{opacity:1;visibility:visible;transform:translate(-50%)}.scoreboard-title{color:#f5f8fa;border-bottom:1px solid #ffffff1a;align-items:center;min-height:38px;padding:0 10px;font-weight:800;display:flex}.player-list{gap:1px;display:grid}.player-row{background:#ffffff08;grid-template-columns:8px minmax(140px,1fr) 54px 90px 44px;align-items:center;gap:14px;min-height:36px;padding:0 12px;display:grid}.player-team{border-radius:50%;width:8px;height:8px}.player-team.blue{background:#2587ff}.player-team.red{background:#f24232}.player-name{text-overflow:ellipsis;white-space:nowrap;color:#f5f8fa;min-width:0;overflow:hidden}.player-stat{color:#ecf3f6ad;font-variant-numeric:tabular-nums;text-align:right}.player-rank{background:#ffffff0a;border:1px solid;place-items:center;min-width:42px;min-height:22px;font-size:10px;font-weight:950;line-height:1;display:inline-grid}.player-stat.score{color:#f5f8fa;font-size:18px;font-weight:900}.kill-feed{justify-items:end;gap:6px;width:min(300px,100vw - 32px);font-size:12px;display:grid;position:absolute;top:16px;right:16px}.kill-feed-row{color:#ecf3f6c7;text-overflow:ellipsis;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080b0eb8;border:1px solid #ffffff1f;max-width:100%;padding:7px 9px;overflow:hidden}.kill-feed-row.local{color:#f8fbfc;border-color:#ffda5275}.resume-hint{color:#f6f9fae0;text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080b0ec7;border:1px solid #ffffff24;min-width:132px;padding:9px 12px;font-size:12px;font-weight:800;line-height:1;position:absolute;top:calc(50% + 86px);left:50%;transform:translate(-50%)}.resume-hint[hidden]{display:none}.crosshair{--crosshair-color:#f8fbfc;--crosshair-stroke:2px;--crosshair-length:8px;--crosshair-gap:6px;width:calc(2 * (var(--crosshair-length) + var(--crosshair-gap)));height:calc(2 * (var(--crosshair-length) + var(--crosshair-gap)));filter:drop-shadow(0 0 2px #000000eb)drop-shadow(0 0 6px #6ec8ff59);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair:after{content:"";background:var(--crosshair-color);width:3px;height:3px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.crosshair-line{background:var(--crosshair-color);transition:background 80ms,transform 80ms;position:absolute}.crosshair-line-top,.crosshair-line-bottom{width:var(--crosshair-stroke);height:var(--crosshair-length);left:50%;transform:translate(-50%)}.crosshair-line-top{top:0}.crosshair-line-bottom{bottom:0}.crosshair-line-left,.crosshair-line-right{width:var(--crosshair-length);height:var(--crosshair-stroke);top:50%;transform:translateY(-50%)}.crosshair-line-left{left:0}.crosshair-line-right{right:0}.crosshair.firing .crosshair-line-top{transform:translate(-50%,-2px)}.crosshair.firing .crosshair-line-bottom{transform:translate(-50%,2px)}.crosshair.firing .crosshair-line-left{transform:translate(-2px,-50%)}.crosshair.firing .crosshair-line-right{transform:translate(2px,-50%)}.lock-screen{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:radial-gradient(at 50% 35%,#1c386061,#0000 60%),radial-gradient(at 50% 100%,#08101ce0,#0000 70%),#03060ab8;align-content:center;place-items:center;padding:24px 16px;display:grid;position:fixed;inset:0;overflow-y:auto}.lock-screen[hidden]{display:none}.lock-layout{grid-template-columns:minmax(280px,.95fr) minmax(320px,1fr) minmax(300px,1fr);align-items:center;gap:16px;width:min(1180px,100vw - 32px);display:grid}.lock-column{align-content:center;gap:12px;min-width:0;display:grid}.lock-column-status .brand{justify-self:start}.lock-column-status .ranked-summary,.lock-column-status .match-summary{text-align:left}.lock-column .profile-strip,.lock-column .play-actions,.lock-column .private-actions,.lock-column .private-lobby-panel,.lock-column .leaderboard{width:100%}.lock-column-play .play-actions{grid-template-columns:1fr;display:grid}.lock-column-play .play-button{width:100%}.lock-column-play .private-lobby-panel{grid-template-columns:minmax(0,1fr) 104px 74px}.lock-column-play .private-lobby-code{grid-area:1/1}.lock-column-play .private-lobby-link{grid-column:1/-1}.lock-column-play .private-enter-button{grid-area:1/2}.lock-column-play .private-copy-button{grid-area:1/3}.brand{letter-spacing:.04em;color:#eef6ff;text-shadow:0 0 24px #48a8ff59,0 8px 30px #000000a6;background:linear-gradient(#fff 0%,#b9d4ee 70%,#6594c8 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:clamp(48px,9vw,108px);font-weight:900;line-height:.9}.ranked-summary,.match-summary{color:#ecf3f6c7;min-height:22px;font-size:14px;font-weight:700}.match-summary{color:#ecf3f69e}.profile-strip{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#07090ab3;border:1px solid #ffffff1f;grid-template-columns:minmax(160px,1fr) auto auto auto;align-items:end;gap:8px;width:min(540px,100vw - 32px);padding:10px;display:grid}.profile-name{color:#ecf3f6a3;letter-spacing:.12em;text-transform:uppercase;gap:5px;min-width:0;font-size:10px;font-weight:900;display:grid}.profile-name input{color:#f8fbfc;width:100%;min-height:36px;font:inherit;letter-spacing:0;text-transform:none;background:#ffffff14;border:1px solid #ffffff24;border-radius:4px;outline:none;padding:0 10px;font-size:14px}.profile-name input:focus{border-color:#ffd45d9e;box-shadow:0 0 0 3px #ffd45d29}.rank-badge,.profile-elo,.profile-save{background:#ffffff0f;border:1px solid #ffffff24;border-radius:4px;place-items:center;min-height:36px;padding:0 12px;font-size:12px;font-weight:950;line-height:1;display:grid}.rank-badge{text-transform:uppercase;border-color:currentColor;min-width:92px}.profile-elo{color:#f6f9fac7;font-variant-numeric:tabular-nums;min-width:92px}.profile-elo strong{color:#f8fbfc;margin-right:4px}.profile-save{color:#14100a;cursor:pointer;background:linear-gradient(#ffe89c 0%,#f0b94a 100%);min-width:68px}.profile-save:disabled{opacity:.45;cursor:default}.play-actions{flex-wrap:wrap;justify-content:center;gap:10px;width:min(430px,100vw - 32px);display:flex}.private-actions{grid-template-columns:150px minmax(0,1fr);gap:10px;width:min(430px,100vw - 32px);display:grid}.private-join{grid-template-columns:minmax(0,1fr) 82px;gap:8px;min-width:0;display:grid}.private-code{color:#ecf3f6a3;letter-spacing:.12em;text-transform:uppercase;gap:4px;min-width:0;font-size:9px;font-weight:900;display:grid}.private-code input{color:#f8fbfc;width:100%;min-height:40px;font:inherit;letter-spacing:.14em;background:#07090ab3;border:1px solid #ffffff24;border-radius:4px;outline:none;padding:0 10px;font-size:14px}.private-code input:focus{border-color:#63c7ffa8;box-shadow:0 0 0 3px #63c7ff29}.private-button,.private-enter-button,.private-copy-button{color:#f5fbff;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:#ffffff14;border:1px solid #ffffff2e;border-radius:4px;min-height:40px;font-size:11px;font-weight:900}.private-enter-button{color:#0a1218;background:linear-gradient(#f5fbff 0%,#c8def0 100%);border-color:#78bcff8c;min-width:104px}.private-button{align-self:end}.private-button.secondary{background:linear-gradient(#162430f5 0%,#0a0f14f5 100%)}.private-button:hover,.private-enter-button:hover,.private-copy-button:hover{filter:brightness(1.1)}.private-button:disabled,.private-enter-button:disabled,.private-copy-button:disabled,.private-code input:disabled{opacity:.55;cursor:progress}.private-lobby-panel{color:#ecf3f6c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080f12c2;border:1px solid #63c7ff42;grid-template-columns:auto minmax(0,1fr) 104px 74px;align-items:center;gap:10px;width:min(430px,100vw - 32px);padding:10px;display:grid}.private-lobby-panel[hidden]{display:none}.private-lobby-code{gap:3px;min-width:96px;display:grid}.private-lobby-code span{color:#ecf3f68a;letter-spacing:.12em;text-transform:uppercase;font-size:9px;font-weight:900}.private-lobby-code strong{color:#f8fbfc;letter-spacing:.14em;font-size:16px}.private-lobby-link{color:#8fd7ff;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;font-weight:800;overflow:hidden}.play-button{color:#0a1218;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;background:linear-gradient(#f5fbff 0%,#c8def0 100%);border:1px solid #78bcff8c;border-radius:4px;min-width:168px;min-height:50px;padding:0 22px;font-size:14px;font-weight:900;transition:transform 80ms,box-shadow .12s,background .12s;box-shadow:0 0 0 1px #0000001f,0 0 24px #50a0ff4d,0 10px 26px #00000073}.play-button.secondary{color:#f5fbff;background:linear-gradient(#141f27f5 0%,#0a0f14f5 100%);border-color:#ffffff38}.play-button:hover{background:linear-gradient(#fff 0%,#d8e9f8 100%);transform:translateY(-1px);box-shadow:0 0 0 1px #0000001f,0 0 32px #78c8ff8c,0 12px 30px #00000080}.play-button.secondary:hover{background:linear-gradient(#1e2c36fa 0%,#0e161dfa 100%)}.play-button:disabled{opacity:.6;cursor:progress;transform:none}.play-button:focus-visible,.private-button:focus-visible,.private-enter-button:focus-visible,.private-copy-button:focus-visible,.private-code input:focus-visible,.private-lobby-link:focus-visible{outline-offset:3px;outline:3px solid #63c7ff}.leaderboard{color:#ecf3f6c7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080b0eb8;border:1px solid #ffffff1f;width:min(430px,100vw - 32px);font-size:12px}.leaderboard-header,.leaderboard-row,.leaderboard-self{grid-template-columns:58px minmax(0,1fr) 50px 74px;align-items:center;gap:10px;min-height:30px;padding:0 10px;display:grid}.leaderboard-header{color:#f5f8fa;text-transform:uppercase;border-bottom:1px solid #ffffff1a;grid-template-columns:1fr auto;min-height:34px;font-weight:900}.leaderboard-list{gap:1px;display:grid}.leaderboard-row{background:#ffffff08}.leaderboard-row.self,.leaderboard-self{color:#f5f8fa;background:#438cdc47;position:relative}.leaderboard-row.self:before,.leaderboard-self:before{content:"";background:#63c7ff;width:3px;position:absolute;top:5px;bottom:5px;left:0}.leaderboard-self{border-top:1px solid #63c7ff3d;font-weight:800}.leaderboard-self[hidden]{display:none}.leaderboard-rank,.leaderboard-rating{font-variant-numeric:tabular-nums}.leaderboard-tier{text-align:center;font-size:10px;font-weight:950}.leaderboard-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.leaderboard-rating{text-align:right;color:#f5f8fa;font-weight:900}.settings-menu{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:20;background:#03060a7a;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.settings-menu[hidden]{display:none}.settings-panel{color:#f5f8fa;background:#080b0ee0;border:1px solid #ffffff24;border-radius:6px;gap:18px;width:min(380px,100vw - 36px);padding:18px;display:grid;box-shadow:0 0 0 1px #00000059,0 18px 48px #0000006b}.settings-title{text-transform:uppercase;font-size:18px;font-weight:900;line-height:1}.settings-row{color:#ecf3f6c2;justify-content:space-between;align-items:center;gap:18px;font-size:13px;font-weight:800;display:flex}.settings-row output{color:#f5f8fa;font-variant-numeric:tabular-nums}.settings-slider{accent-color:#63c7ff;width:100%}.settings-toggle-group{gap:6px;display:flex}.settings-toggle{border:1px solid var(--ink-40);border-radius:var(--r-2);color:#ecf3f6c7;min-height:34px;font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:background .12s var(--ease-snap), border-color .12s var(--ease-snap), color .12s var(--ease-snap);background:#ffffff0a;flex:1;padding:0 10px;font-size:11px;font-weight:700}.settings-toggle[aria-checked=true]{border-color:var(--signal-cyan);color:#f5fbff;background:#4de0ff24}.settings-toggle:hover{filter:brightness(1.1)}.settings-toggle:focus-visible{outline:2px solid var(--signal-cyan);outline-offset:2px}.settings-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.settings-button{color:#f5f8fa;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border:1px solid #ffffff24;border-radius:4px;min-height:42px;font-size:12px;font-weight:900}.settings-button.primary{color:#0a1218;background:linear-gradient(#f5fbff 0%,#c8def0 100%);border-color:#78bcff8c}.settings-button.secondary{background:#ffffff0f}.settings-button:hover{filter:brightness(1.08)}.settings-button:focus-visible,.settings-slider:focus-visible{outline-offset:3px;outline:3px solid #63c7ff}@media (height<=760px){.lock-screen{align-content:start}.lock-layout{align-items:start}.brand{font-size:clamp(40px,8vw,72px)}.leaderboard-header,.leaderboard-row,.leaderboard-self{min-height:26px}}@media (width<=1040px){.lock-layout{grid-template-columns:1fr;align-items:start;width:min(560px,100vw - 32px)}.lock-column-status .brand{text-align:center;justify-self:center}.lock-column-status .ranked-summary,.lock-column-status .match-summary{text-align:center}.lock-column-play .play-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.hud-bar{flex-wrap:wrap;gap:8px 12px;min-height:0;padding:8px 10px;left:8px;right:8px}.match-notice{top:88px}.profile-strip{grid-template-columns:1fr 1fr}.profile-name,.profile-save{grid-column:1/-1}.lock-column-play .play-actions,.private-actions,.private-lobby-panel{grid-template-columns:1fr}.lock-column-play .private-lobby-panel,.lock-column-play .private-lobby-code,.lock-column-play .private-lobby-link,.lock-column-play .private-enter-button,.lock-column-play .private-copy-button{grid-area:auto}.private-join{grid-template-columns:minmax(0,1fr) 76px}.player-row{grid-template-columns:8px minmax(90px,1fr) 44px 70px 34px;gap:8px}}
