*{box-sizing:border-box}:root{--bg:#0b0f16;--panel:#10151ff0;--line:#ffffff17;--text:#eef2f7;--muted:#8a94a6;--accent:#ff8a5c;--accent-2:#ffb347;--good:#7cf0a0;--display:"Bahnschrift", "DIN Alternate", "Barlow Condensed", "Arial Narrow", system-ui, sans-serif}html,body{background:var(--bg);-webkit-user-select:none;user-select:none;height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden}[hidden]{display:none!important}#game{width:100vw;height:100vh;display:block}@property --ch{syntax:"<color>";inherits:true;initial-value:#ffffffe6}.xhair{--ch:var(--ch-color,#ffffffe6);--s:var(--ch-size,1);width:calc(8px * var(--s));height:calc(8px * var(--s));border:2px solid var(--ch);pointer-events:none;border-radius:50%;transition:--ch 80ms,transform 80ms;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 2px #000c}.xhair[data-style=dot]{width:calc(5px * var(--s));height:calc(5px * var(--s));background:var(--ch);border:none}.xhair[data-style=cross]{width:calc(16px * var(--s));height:calc(16px * var(--s));box-shadow:none;border:none;border-radius:0}.xhair[data-style=cross]:before,.xhair[data-style=cross]:after,.xhair[data-style=circle-dot]:after{content:"";background:var(--ch);position:absolute;box-shadow:0 0 2px #000c}.xhair[data-style=cross]:before{height:2px;top:calc(50% - 1px);left:0;right:0}.xhair[data-style=cross]:after{width:2px;top:0;bottom:0;left:calc(50% - 1px)}.xhair[data-style=circle-dot]{width:calc(14px * var(--s));height:calc(14px * var(--s))}.xhair[data-style=circle-dot]:after{border-radius:50%;width:3px;height:3px;top:calc(50% - 1.5px);left:calc(50% - 1.5px)}.xhair.can-grapple{--ch:var(--ch-grapple,#7cf0a0);transform:translate(-50%,-50%)scale(1.25)}.xhair.grappling{--ch:var(--ch-grapple,#7cf0a0);transform:translate(-50%,-50%)scale(1.6)}#speed{color:#fff;font-variant-numeric:tabular-nums;text-shadow:0 1px 3px #000c;pointer-events:none;font-size:20px;font-weight:700;position:fixed;bottom:32px;left:50%;transform:translate(-50%)}#hit-flash{opacity:0;pointer-events:none;background:radial-gradient(#0000 45%,#ff78288c 100%);position:fixed;inset:0}#perf{color:#fff;pointer-events:none;background:#0009;border-radius:6px;padding:6px 8px;font:12px ui-monospace,monospace;position:fixed;top:12px;left:12px}#perf canvas{margin-top:4px;display:block}#weapons{color:#fff;text-shadow:0 1px 3px #000c;pointer-events:none;flex-direction:column;align-items:flex-start;gap:4px;font-size:15px;font-weight:700;display:flex;position:fixed;bottom:96px;left:24px}#prompt{color:#fff;text-shadow:0 1px 3px #000c;pointer-events:none;font-size:16px;font-weight:700;position:fixed;top:calc(50% + 80px);left:50%;transform:translate(-50%)}#prompt kbd,#weapons kbd{color:#aab4c4;border:1px solid #ffffff59;border-radius:3px;margin-right:8px;padding:1px 5px;font:600 11px ui-monospace,monospace}#vehicle-status{color:#fff;text-shadow:0 1px 3px #000c;pointer-events:none;width:180px;font-size:15px;font-weight:700;position:fixed;bottom:160px;left:24px}#vehicle-status .bar{background:#00000073;border-radius:3px;height:6px;margin-top:4px;overflow:hidden}#vehicle-bar{transform-origin:0;background:#ffe680;height:100%;transition:transform .12s}#vehicle-status.low #vehicle-bar{background:#ff8a5c}#weapons .stowed{opacity:.45}#weapon-ammo{color:#ffe680;font-variant-numeric:tabular-nums;margin-left:8px}#weapon-ammo.reloading{color:#ff8a5c}#lock-box{pointer-events:none;border:1.5px solid #ffffff73;border-radius:4px;position:fixed;top:50%;left:50%;box-shadow:0 0 2px #0009}#lock-box.locking{border-color:#ffd860}#lock-box.locked{border:2px solid #ff4a3c;box-shadow:0 0 10px #ff4a3c99}#lock-fill{transform-origin:0;background:#ffd860;border-radius:2px;height:3px;position:absolute;bottom:-9px;left:0;right:0;transform:scaleX(0)}#lock-box.locked #lock-fill{background:#ff4a3c}#lock-marker{pointer-events:none;border:2px solid #ffd860;width:26px;height:26px;margin:-13px 0 0 -13px;position:fixed;transform:rotate(45deg)}#lock-marker.locked{border-color:#ff4a3c;animation:.3s ease-in-out infinite alternate lock-pulse}@keyframes lock-pulse{to{transform:rotate(45deg)scale(.75)}}#missile-warning{color:#ff4a3c;letter-spacing:3px;text-shadow:0 0 8px #ff4a3cb3,0 1px 3px #000000e6;pointer-events:none;font-size:22px;font-weight:800;animation:.5s steps(2,jump-none) infinite warning-blink;position:fixed;top:22%;left:50%;transform:translate(-50%)}@keyframes warning-blink{to{opacity:.25}}#lock-box[hidden],#lock-marker[hidden],#missile-warning[hidden]{display:none}#pickup-notice{color:#ffe680;letter-spacing:1px;text-shadow:0 0 8px #965affe6,0 1px 3px #000c;opacity:0;pointer-events:none;font-size:20px;font-weight:800;transition:opacity .4s;position:fixed;top:calc(50% + 44px);left:50%;transform:translate(-50%)}#pickup-notice.show{opacity:1;transition:none;animation:.3s ease-out pickup-pop}@keyframes pickup-pop{0%{transform:translate(-50%)scale(1.5)}}#mute{color:#ffffffb3;text-shadow:0 1px 2px #000c;pointer-events:none;font-size:13px;position:fixed;bottom:16px;right:16px}#net{color:#fff;white-space:pre;pointer-events:none;z-index:10;background:#0009;border-radius:6px;padding:8px 10px;font:12px/1.45 ui-monospace,Consolas,monospace;position:fixed;bottom:40px;right:12px}#crosshair.hit,#crosshair.kill{animation:.22s ease-out hitmarker}#crosshair.kill{animation-duration:.4s}@keyframes hitmarker{0%{--ch:#ff5c5c;transform:translate(-50%,-50%)scale(1.9)}}#health{color:#fff;text-shadow:0 1px 3px #000c;pointer-events:none;width:180px;position:fixed;bottom:24px;left:24px}#health-value{font-variant-numeric:tabular-nums;font-size:34px;font-weight:800}#health .bar{background:#00000073;border-radius:3px;height:6px;margin-top:2px;overflow:hidden}#health-bar{transform-origin:0;background:#7cf0a0;height:100%;transition:transform .12s}#health .shield{color:#7ce0ff;margin-left:10px;font-size:13px;font-weight:700;display:none}#health.protected .shield{display:inline}#health.protected #health-bar{background:#7ce0ff}#health.low #health-value{color:#ff6b5c}#health.low #health-bar{background:#ff6b5c}#killfeed{pointer-events:none;flex-direction:column;align-items:flex-end;gap:4px;display:flex;position:fixed;top:16px;right:16px}#killfeed>div{color:#d8e0ea;background:#0000008c;border-radius:4px;padding:4px 10px;font-size:14px}#killfeed>div.mine{color:#fff;background:#96321eb3}#killfeed b{color:#fff}#death{color:#fff;text-shadow:0 2px 6px #000000e6;pointer-events:none;background:radial-gradient(#3c000040,#3c000099);flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:fixed;inset:0}#death[hidden],#scoreboard[hidden]{display:none}#death-title{font-size:32px;font-weight:800}#death-timer{color:#d8c0bc;font-size:16px}#scoreboard{color:#eef2f7;pointer-events:none;background:#141a26eb;border:1px solid #ffffff1a;border-radius:10px;width:min(420px,100vw - 32px);padding:14px 18px;position:fixed;top:18%;left:50%;transform:translate(-50%)}#scoreboard table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:15px}#scoreboard th{color:#8a94a6;text-align:right;padding-bottom:6px;font-size:12px;font-weight:600}#scoreboard td{text-align:right;border-top:1px solid #ffffff0f;padding:5px 0}#scoreboard th:first-child,#scoreboard td:first-child{text-align:left}#scoreboard tr.mine td{color:#ff8a5c;font-weight:700}#cooldowns{pointer-events:none;filter:drop-shadow(0 0 1px #000c);width:48px;height:48px;margin:-24px 0 0 -24px;position:fixed;top:50%;left:50%;overflow:visible}#cooldowns.hidden{display:none}#cooldowns path{fill:none;stroke-width:2.5px;stroke-linecap:round}#cooldowns .track{stroke:#ffffff26}#cooldowns .fill.rocket{stroke:#ff8a5c}#cooldowns .fill.grapple{stroke:#7cf0a0}#cooldowns .fill.ready{opacity:.35;transition:opacity .25s}#match-bar{color:#fff;min-width:360px;font-family:var(--display);text-shadow:0 1px 3px #000c;pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;display:grid;position:fixed;top:12px;left:50%;transform:translate(-50%)}#match-time{border:1px solid var(--line);font-variant-numeric:tabular-nums;letter-spacing:1px;background:#00000080;border-radius:6px;padding:2px 14px;font-size:26px;font-weight:700}#match-time.urgent{color:#ff6b5c;animation:1s steps(2,jump-none) infinite warning-blink}#match-rank{color:var(--accent-2);white-space:nowrap;justify-self:end;font-size:18px;font-weight:700}#match-leader{color:#d8e0ea;white-space:nowrap;justify-self:start;font-size:15px}#medals{text-align:center;pointer-events:none;position:fixed;top:30%;left:50%;transform:translate(-50%)}.medal{animation:.26s cubic-bezier(.2,1.6,.4,1) medal-in,.4s ease-in 1.8s forwards medal-out}.medal .title{font-family:var(--display);letter-spacing:3px;color:#ffe680;text-shadow:0 0 18px #ff8c28bf,0 2px 4px #000000e6;white-space:nowrap;font-size:34px;font-weight:700}.medal .sub{font-family:var(--display);letter-spacing:2px;color:#fff;text-shadow:0 1px 3px #000000e6;margin-top:2px;font-size:16px;font-weight:600}.medal.notice .title{color:#fff;text-shadow:0 0 12px #78b4ff99,0 2px 4px #000000e6;font-size:22px}.medal.big .title{color:var(--accent);font-size:56px}@keyframes medal-in{0%{opacity:0;transform:scale(2.2)}}@keyframes medal-out{to{opacity:0;transform:translateY(-12px)}}#damage-dirs{pointer-events:none;position:fixed;top:50%;left:50%}.damage-dir{border:6px solid #0000;border-top-color:rgba(255, 50, 30, calc(.95 * var(--strength,.6)));filter:drop-shadow(0 0 6px #ff2814cc);border-radius:50%;width:160px;height:160px;animation:1s ease-in forwards damage-fade;position:absolute;top:-80px;left:-80px}@keyframes damage-fade{to{opacity:0}}#killfeed>div.notice{color:#fff;background:#283c6ea6;font-style:italic}#chat{color:#fff;pointer-events:none;width:min(420px,100vw - 48px);font-size:14px;position:fixed;bottom:200px;left:24px}#chat-log{flex-direction:column;gap:2px;max-height:180px;display:flex;overflow:hidden}#chat .line{text-shadow:0 1px 2px #000c;overflow-wrap:anywhere;background:#0006;border-radius:4px;align-self:flex-start;padding:2px 8px;transition:opacity .6s}#chat .line.old{opacity:0}#chat.open .line.old{opacity:.85}#chat.open #chat-log{pointer-events:auto;overflow-y:auto}#chat .line b{color:#9cc8ff}#chat .line b.mine{color:var(--accent)}#chat .line.system{color:#c0c8d4;font-style:italic}#chat-input{color:#fff;width:100%;font:inherit;pointer-events:auto;-webkit-user-select:text;user-select:text;background:#000000b3;border:1px solid #ffffff40;border-radius:6px;outline:none;margin-top:6px;padding:7px 10px}#scoreboard{width:min(540px,100vw - 32px)}#scoreboard-title{color:var(--muted);font-family:var(--display);letter-spacing:1px;text-transform:uppercase;margin-bottom:8px;font-size:14px}#scoreboard td:last-child{color:var(--muted)}#results{color:var(--text);text-align:center;pointer-events:none;background:radial-gradient(#0a0e168c,#0a0e16eb);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;animation:.4s ease-out fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}#results-title{font-family:var(--display);letter-spacing:4px;color:#fff;text-shadow:0 4px 24px #000c;font-size:clamp(36px,8vw,72px);font-weight:700}#results-title.victory{color:#ffe680;text-shadow:0 0 30px #ffa028b3}#results-sub{color:#c0c8d4;font-size:18px}#results-podium{align-items:flex-end;gap:12px;margin:18px 0 8px;display:flex}#results-podium .place{background:var(--panel);border:1px solid var(--line);border-radius:10px 10px 4px 4px;flex-direction:column;gap:4px;width:min(170px,28vw);padding:14px 10px;display:flex}#results-podium .p1{border-color:#ffd25a99;order:2;min-height:150px;box-shadow:0 0 30px #ffb43c40}#results-podium .p2{order:1;min-height:120px}#results-podium .p3{order:3;min-height:100px}#results-podium .rank{font-family:var(--display);color:var(--accent-2);font-size:28px;font-weight:700}#results-podium .p1 .rank{color:#ffe680}#results-podium .name{text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:700;overflow:hidden}#results-podium .kills{color:var(--muted)}#results-podium .mine .name,.award.mine div:last-child{color:var(--accent)}#results-awards{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.award{border:1px solid var(--line);background:#ffffff0f;border-radius:8px;padding:8px 14px;font-size:14px}.award-title{font-family:var(--display);letter-spacing:2px;text-transform:uppercase;color:var(--accent-2);font-size:13px}#results-next{color:var(--muted);margin-top:14px;font-size:15px}.screen{z-index:20;color:var(--text);padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}#menu{background:radial-gradient(ellipse 80% 60% at 70% 110%, #ff6e3259, transparent 60%), radial-gradient(ellipse 60% 50% at 10% -10%, #508cff40, transparent 60%), linear-gradient(transparent 0 calc(100% - 1px), #ffffff0a 0) 0 0 / 100% 48px, linear-gradient(90deg, transparent 0 calc(100% - 1px), #ffffff0a 0) 0 0 / 48px 100%, var(--bg)}#menu.backdrop{background:radial-gradient(55% 75%,#080b128c,#0000 75%),linear-gradient(#080b1240,#080b1273)}#pause,#connecting{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080b129e}.modal{z-index:30;background:#080b12b3}.menu-panel{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:14px;width:min(460px,100%);margin:auto;padding:32px;box-shadow:0 30px 80px #00000080}.menu-panel.small{width:min(420px,100%)}.menu-panel.wide{width:min(760px,100%)}.menu-panel h2{font-family:var(--display);letter-spacing:2px;text-transform:uppercase;margin:0 0 18px;font-size:28px}.logo{font-family:var(--display);letter-spacing:2px;color:#fff;text-shadow:0 4px #00000059;margin:0;font-size:clamp(44px,9vw,64px);font-style:italic;font-weight:700;line-height:.95}.logo span{background:linear-gradient(180deg, #ffe680, var(--accent) 60%, #ff5a36);color:#0000;text-shadow:none;-webkit-background-clip:text;background-clip:text;display:block}.tagline{color:var(--muted);letter-spacing:1px;margin:10px 0 24px}.hint{color:var(--muted);margin:-8px 0 18px;font-size:14px}.field{text-align:left;align-items:center;gap:12px;margin-bottom:14px;display:flex}.field span{width:52px;color:var(--muted);font-size:14px}input[type=text],select{min-width:0;color:var(--text);font:inherit;-webkit-user-select:text;user-select:text;background:#00000059;border:1px solid #ffffff24;border-radius:8px;flex:1;padding:11px 12px;font-size:16px}input[type=text]:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}select option{background:#161c28}button{width:100%;color:var(--text);cursor:pointer;background:#ffffff12;border:1px solid #ffffff24;border-radius:8px;padding:12px 16px;font:600 16px system-ui,sans-serif;transition:background .12s,transform 80ms;display:block}button:hover:not(:disabled){background:#ffffff21}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.primary{background:linear-gradient(180deg, var(--accent-2), var(--accent) 55%, #f0643a);color:#1a0d05;font-family:var(--display);letter-spacing:1px;text-transform:uppercase;border-color:#0000;font-size:22px;font-weight:700;box-shadow:0 6px 24px #ff783c4d}button.primary:hover:not(:disabled){background:linear-gradient(#ffc56a,#ff9a6c 55%,#f5754a)}button.primary small{letter-spacing:0;text-transform:none;color:#1a0d05bf;margin-top:2px;font:500 12px system-ui,sans-serif;display:block}button.ghost{background:0 0;font-size:14px}.practice{grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:12px;display:grid}.practice button{grid-row:span 2}.practice select{min-width:0;font-size:14px}.menu-row{gap:8px;margin-top:14px;display:flex}.error{color:#ffb4a8;background:#ff503c1f;border:1px solid #ff503c59;border-radius:8px;margin:16px 0 0;padding:10px 12px;font-size:14px}.slider{text-align:left;grid-template-columns:140px 1fr 54px;align-items:center;gap:12px;margin-bottom:14px;font-size:15px;display:grid}.slider input{width:100%;accent-color:var(--accent)}.slider.choice select{grid-column:2/-1;padding:8px 10px;font-size:14px}.slider output{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}.check{cursor:pointer;align-items:center;gap:10px;margin:4px 0 22px;font-size:15px;display:flex}.check input{width:18px;height:18px;accent-color:var(--accent)}.columns{text-align:left;grid-template-columns:1fr 1fr;gap:28px;margin-bottom:22px;display:grid}.columns table{border-collapse:collapse;width:100%;font-size:14px}.columns td{border-bottom:1px solid #ffffff0f;padding:6px 0}.columns td:first-child{color:#aab4c4;width:45%;font-weight:600}.tips{color:#c0c8d4;margin:0;padding-left:18px;font-size:14px;line-height:1.5}.tips li{margin-bottom:8px}.tips b{color:#fff}@media (max-width:640px){.columns{grid-template-columns:1fr}.slider{grid-template-columns:1fr 54px}.slider span{grid-column:1/-1}.practice{grid-template-columns:1fr 1fr}.practice button{grid-area:auto/1/auto/-1}#match-bar{gap:8px;min-width:0}#match-leader{display:none}}#menu.backdrop .menu-panel{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0e121bcc}#match-rank.team,#match-leader.team{letter-spacing:1px;font-size:22px;font-weight:700}#match-rank.team.red,#match-leader.team.red{color:#ff7a66}#match-rank.team.blue,#match-leader.team.blue{color:#6aaeff}#match-rank.team.mine,#match-leader.team.mine{text-underline-offset:5px;text-decoration:underline;text-decoration-thickness:2px}#flag-status{color:#d8e0ea;text-shadow:0 1px 3px #000c;white-space:nowrap;pointer-events:none;gap:18px;font-size:14px;display:flex;position:fixed;top:56px;left:50%;transform:translate(-50%)}#flag-status .flag{background:#00000073;border-radius:5px;align-items:center;gap:6px;padding:3px 10px;display:flex}#flag-status .icon{clip-path:polygon(0 0,100% 25%,0 50%);border-left:2px solid #ddd;width:10px;height:12px}#flag-status .red .icon{background:#ff5a44}#flag-status .blue .icon{background:#4c96ff}#flag-status .taken{color:#fff;animation:1s steps(2,jump-none) infinite warning-blink}#flag-status .taken.mine{color:#ffb4a8}#flag-status .dropped{color:#ffe680}#race{text-align:center;color:#fff;font-family:var(--display);text-shadow:0 1px 4px #000000d9;pointer-events:none;position:fixed;top:60px;left:50%;transform:translate(-50%)}#race-lap{font-variant-numeric:tabular-nums;letter-spacing:1px;font-size:34px;font-weight:700}#race-lap.waiting{color:#ffe680;font-size:20px}#race-info{color:#c0c8d4;font-size:15px}#markers{pointer-events:none;position:fixed;inset:0}.marker{color:#fff;text-shadow:0 1px 3px #000000e6;white-space:nowrap;flex-direction:column;align-items:center;gap:2px;font-size:12px;font-weight:700;display:flex;position:absolute;transform:translate(-50%,-50%)}.marker i{border:2px solid var(--color);width:14px;height:14px;box-shadow:0 0 8px var(--color);border-radius:50%}.marker.edge i{background:var(--color);clip-path:polygon(50% 0,100% 100%,50% 75%,0 100%);rotate:var(--angle);border:none;border-radius:0}#spectating{border:1px solid var(--line);text-align:center;color:#fff;pointer-events:none;background:#0000008c;border-radius:8px;padding:8px 18px;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}#spectating-name{font-family:var(--display);letter-spacing:1px;font-size:20px;font-weight:700}#spectating .hint{color:var(--muted);margin-top:4px;font-size:13px}#spectating kbd{border:1px solid #ffffff4d;border-radius:3px;margin:0 3px 0 8px;padding:0 5px;font-size:11px}#spectating[hidden],#race[hidden],#flag-status[hidden]{display:none}#scoreboard tr.team-row td{color:var(--team);font-family:var(--display);letter-spacing:1px;border-top:2px solid var(--team);padding-top:10px;font-size:17px;font-weight:700}#armor-value{color:#ffc24a;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 16'%3E%3Cpath d='M7 0l7 3v5c0 4-3 7-7 8-4-1-7-4-7-8V3z' fill='%23ffc24a'/%3E%3C/svg%3E") 0/14px 16px no-repeat;margin-left:10px;padding-left:18px;font-size:22px;font-weight:800}#health.over #health-value{color:#ffe680}#health.over #health-bar{background:#ffe680}#overdrive{font-family:var(--display);letter-spacing:2px;color:#ff6ae0;text-shadow:0 0 10px #ff3cd2cc;margin-bottom:4px;font-size:16px;font-weight:700}#overdrive[hidden],#armor-value[hidden],#killcam-label[hidden]{display:none}#death-recap{color:#e8d8d4;flex-direction:column;align-items:center;gap:2px;font-size:15px;display:flex}#death.killcam{background:linear-gradient(#00000059,#0000 18% 70%,#0000008c);justify-content:flex-end;padding-bottom:12vh}#killcam-label{font-family:var(--display);letter-spacing:4px;color:#ff6b5c;border:2px solid #ff6b5c;border-radius:4px;padding:2px 14px;font-size:18px;font-weight:700;animation:1.2s steps(2,jump-none) infinite warning-blink;position:fixed;top:92px;left:50%;transform:translate(-50%)}.online-row{margin-top:8px}.online-row button{flex:1}.menu-panel h3{color:var(--muted);font-family:var(--display);letter-spacing:1px;text-transform:uppercase;margin:18px 0 8px;font-size:14px;font-weight:600}.room-list{flex-direction:column;gap:6px;max-height:38vh;display:flex;overflow-y:auto}.room{border:1px solid var(--line);background:#ffffff0a;border-radius:8px;grid-template-columns:1fr auto auto;align-items:center;gap:8px;padding:8px 10px;display:grid}.room .what{text-align:left;min-width:0}.room .name{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.room .detail{color:var(--muted);font-size:13px}.room button{padding:6px 12px;font-size:14px}.room-code,.room-form{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.room .ping{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap;font-size:13px}.room .ping.good{color:var(--good)}.room .ping.ok{color:var(--accent-2)}.room .ping.bad{color:#ff7a6a}.room-code{flex-wrap:nowrap}.room-code button{flex:none;width:auto;margin:0}.room-code input{min-width:0;font-family:var(--display);letter-spacing:3px;text-transform:uppercase;flex:1}.room-form input[type=text]{flex:100%}.room-form select{flex:calc(50% - 4px);min-width:0;font-size:14px}.room-form .check,.room-form button{flex:100%}#rooms-done{width:100%;margin-top:12px}.room-line{justify-content:center;align-items:center;gap:8px;display:flex}.room-line[hidden]{display:none}button.link{color:var(--accent-2);font-size:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}#hud.watching #health,#hud.watching #weapons,#hud.watching #cooldowns,#hud.watching #crosshair,#hud.watching #speed{display:none}#reconnecting{color:#fff;pointer-events:none;background:#a0281ed9;border-radius:8px;padding:8px 16px;font-weight:600;animation:1.2s ease-in-out infinite alternate reconnect-pulse;position:fixed;top:64px;left:50%;transform:translate(-50%)}@keyframes reconnect-pulse{0%{opacity:.65}to{opacity:1}}.tabs{gap:6px;margin-bottom:18px;display:flex}.tabs .tab{border:1px solid var(--line);color:var(--muted);background:0 0;flex:1;padding:8px 10px;font-size:14px}.tabs .tab.active{color:var(--text);border-color:var(--accent)}.crosshair-preview{background:linear-gradient(160deg,#6e8aa8,#33475e 60%,#6b5640);border-radius:10px;height:90px;margin-bottom:16px;position:relative}.crosshair-preview #crosshair-sample{position:absolute}.slider input[type=color]{background:0 0;border:none;height:30px;padding:0}.binds{text-align:left;gap:6px;margin-bottom:14px;display:grid}.bind-row{grid-template-columns:1fr auto;align-items:center;gap:10px;font-size:14px;display:grid}.bind-keys{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:flex}.bind-keys button{border-radius:6px;width:auto;min-width:44px;padding:4px 9px;font-size:13px}.bind-keys button.listening{border-color:var(--accent);color:var(--accent)}.bind-keys button.add{opacity:.6}#touch{z-index:15;touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0}#touch .stick-base{pointer-events:none;background:#ffffff0f;border:2px solid #ffffff40;border-radius:50%;width:120px;height:120px;margin:-60px 0 0 -60px;position:absolute}#touch .stick-knob{background:#ffffff59;border-radius:50%;width:54px;height:54px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#touch button{color:#ffffffd9;font:700 12px var(--display);letter-spacing:1px;touch-action:none;background:#141a2673;border:2px solid #ffffff59;border-radius:50%;padding:0;position:absolute}#touch button.down{border-color:var(--accent);background:#ff8a5c8c}#touch .t-fire{width:92px;height:92px;font-size:15px;bottom:70px;right:40px}#touch .t-grapple{width:70px;height:70px;bottom:40px;right:150px}#touch .t-jump{width:64px;height:64px;bottom:182px;right:60px}#touch .t-down{width:56px;height:56px;bottom:124px;right:150px}#touch .touch-row{gap:8px;display:flex;position:absolute;top:58px;right:10px}#touch .touch-row button{border-radius:17px;width:auto;height:34px;padding:0 12px;font-size:11px;position:static}#touch.lefty .t-fire{left:40px;right:auto}#touch.lefty .t-grapple{left:150px;right:auto}#touch.lefty .t-jump{left:60px;right:auto}#touch.lefty .t-down{left:150px;right:auto}#touch.lefty .touch-row{left:10px;right:auto}@media (pointer:coarse){#weapons,#speed{display:none}}#coach{color:#fff;text-align:center;pointer-events:none;background:#0c1018c7;border:1px solid #ffb34766;border-radius:10px;width:min(560px,100% - 32px);padding:12px 18px;font-size:16px;line-height:1.45;position:fixed;top:132px;left:50%;transform:translate(-50%)}#coach.fresh{animation:.35s ease-out coach-in}#coach.done{border-color:var(--good)}@keyframes coach-in{0%{opacity:0;transform:translate(-50%,-8px)}}#tip{border-left:3px solid var(--accent-2);color:#fff;pointer-events:none;background:#0c1018cc;border-radius:10px;max-width:min(520px,100% - 32px);padding:10px 16px;font-size:15px;line-height:1.4;animation:.3s ease-out coach-in;position:fixed;bottom:120px;left:50%;transform:translate(-50%)}#play-training{width:100%;margin-top:10px}#play-training.new{border-color:var(--accent-2);color:var(--accent-2);animation:2.4s ease-out infinite training-pulse;box-shadow:0 0 #ffb34780}@keyframes training-pulse{70%{box-shadow:0 0 0 10px #ffb34700}}#xp-gain{color:#ffd27a;font:700 16px var(--display);letter-spacing:1px;text-shadow:0 1px 3px #000c;opacity:0;pointer-events:none;position:fixed;bottom:96px;right:24px}#xp-gain.show{animation:2.6s ease-out forwards xp-pop}@keyframes xp-pop{0%{opacity:0;transform:translateY(8px)}10%{opacity:1;transform:none}75%{opacity:1}to{opacity:0}}.level-chip{color:var(--accent-2);letter-spacing:.5px;background:#ffb3472e;border-radius:9px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:700}#profile-body{text-align:left;min-height:240px;margin-bottom:18px}#profile-body h3{margin:14px 0 8px;font-size:15px}.profile-head{align-items:center;gap:14px;margin-bottom:12px;display:flex}.level-badge{color:#1a1206;width:54px;height:54px;font:800 24px var(--display);background:radial-gradient(circle at 30% 30%,#ffcf7a,#e0782e);border-radius:50%;place-items:center;display:grid;box-shadow:0 0 0 3px #ffb34740}.profile-name{font:700 22px var(--display);letter-spacing:1px}.xp-bar{background:#ffffff14;border-radius:5px;height:10px;overflow:hidden}.xp-bar.small{grid-column:1/-1;height:5px}.xp-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));height:100%}.stat-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0;display:grid}.stat{text-align:center;background:#ffffff0a;border-radius:8px;padding:10px}.stat b{font:700 20px var(--display);display:block}.stat span{color:var(--muted);font-size:12px}.challenge{grid-template-columns:1fr auto;gap:4px 10px;margin-bottom:10px;font-size:14px;display:grid}.challenge .count{color:var(--muted);font-variant-numeric:tabular-nums}.challenge.done span:first-child{color:var(--good)}.challenge.done .xp-fill{background:var(--good)}.looks{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;display:grid}.look{text-align:left;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.look.worn{border-color:var(--accent);color:var(--accent)}.look.locked{opacity:.45;cursor:not-allowed}.swatch{border:1px solid #ffffff4d;border-radius:50%;flex:none;width:18px;height:18px}.board-map{margin-bottom:12px;padding:6px 10px}table.board{border-collapse:collapse;width:100%;font-size:14px}table.board td{border-bottom:1px solid var(--line);padding:6px 8px}table.board td.time{text-align:right;font-variant-numeric:tabular-nums}table.board tr.mine td{color:var(--accent-2);font-weight:700}@media (max-width:560px){.stat-grid{grid-template-columns:repeat(2,1fr)}}#editor{z-index:18;pointer-events:none;color:var(--text);font-size:13px;position:fixed;inset:0}#editor>*{pointer-events:auto}#editor-top{flex-direction:column;gap:6px;display:flex;position:absolute;top:8px;left:8px;right:308px}#editor-tools,.editor-file{border:1px solid var(--line);background:#0c1018d1;border-radius:10px;flex-wrap:wrap;gap:4px;padding:6px;display:flex}#editor button,#editor select{width:auto;padding:5px 9px;font-size:12px;display:inline-block}#editor-panel>button{width:100%;margin-top:6px}#editor-tools button.active{border-color:var(--accent);color:var(--accent)}#editor-tools kbd{opacity:.55;margin-right:5px;font:600 10px ui-monospace,monospace}#editor-panel{border:1px solid var(--line);background:#0c1018e0;border-radius:10px;width:290px;padding:10px 12px;position:absolute;top:8px;bottom:8px;right:8px;overflow-y:auto}#editor-panel h3{text-transform:capitalize;margin:8px 0;font-size:13px}.editor-field{grid-template-columns:96px 1fr;align-items:center;gap:6px;margin-bottom:6px;display:grid}.editor-field input,.editor-field select{width:100%;min-width:0;padding:4px 6px;font-size:12px}.editor-field input[type=color]{height:26px;padding:0}.vec3{grid-template-columns:repeat(3,1fr);gap:4px;display:grid}#editor-panel kbd{border:1px solid #ffffff4d;border-radius:3px;padding:0 4px;font:600 10px ui-monospace,monospace}#editor-status{pointer-events:none;background:#0c1018cc;border-radius:8px;padding:6px 14px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}#editor-status:empty{display:none}@media (max-width:760px){#editor-panel{width:auto;height:40%;top:auto;left:8px}#editor-top{right:8px}}#highlight-label{color:var(--accent-2);font:700 22px var(--display);letter-spacing:2px;text-transform:uppercase;white-space:nowrap;pointer-events:none;background:#0c1018bf;border:1px solid #ffb34780;border-radius:10px;padding:10px 22px;animation:.4s ease-out coach-in;position:fixed;top:18%;left:50%;transform:translate(-50%)}.menu-row:has(>:nth-child(4)) button{padding:10px 6px;font-size:14px}
