@font-face{font-family:Bungee;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bungee-latin-400-normal-Dfnurram.woff2)format("woff2"),url(/assets/bungee-latin-400-normal-DA8IEVW_.woff)format("woff")}:root{--bg:#0f172a;--panel:#0f172ad1;--panel-border:#94a3b840;--text:#f8fafc;--muted:#94a3b8;--accent:#facc15;--accent-text:#1c1917;--btn:#1e293b;--btn-hover:#334155;--ok:#22c55e;--bad:#ef4444;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#stage{z-index:0;position:fixed;inset:0}#stage canvas{touch-action:none;display:block}#app{z-index:2;padding:calc(12px + var(--safe-top)) calc(16px + var(--safe-right)) calc(36px + var(--safe-bottom)) calc(16px + var(--safe-left));pointer-events:none;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#app>*{pointer-events:auto}.boot-splash{color:var(--muted);font-size:1.1rem}.logo{color:var(--accent);letter-spacing:.02em;text-shadow:0 4px #a16207,0 8px 24px #00000080;margin:0;font-family:Bungee,system-ui,sans-serif;font-size:clamp(2.2rem,6vw,3.2rem);font-weight:400;line-height:1}.home,.panel,.unsupported{background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(6px);text-align:center;border-radius:20px;flex-direction:column;align-items:center;gap:14px;width:min(520px,100%);padding:24px 28px;display:flex;position:relative;box-shadow:0 20px 60px #00000073}.home .logo{margin-inline:48px}.tagline{color:var(--muted);margin:0;font-size:.95rem}.name{text-align:left;width:100%;color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;display:flex}.name input{font:inherit;color:var(--text);border:1px solid var(--panel-border);-webkit-user-select:text;user-select:text;background:#0b1220;border-radius:12px;min-height:44px;padding:10px 14px;font-size:1.1rem}.modes{grid-template-columns:1fr 1fr;gap:10px;width:100%;display:grid}.btn{font:inherit;border:1px solid var(--panel-border);background:var(--btn);min-height:52px;color:var(--text);cursor:pointer;border-radius:14px;padding:10px 16px;font-size:1.05rem;font-weight:700;transition:background .12s,transform 80ms}.btn:hover{background:var(--btn-hover)}.btn:active{transform:translateY(1px)scale(.99)}.btn.primary{background:var(--accent);color:var(--accent-text);border-color:#0000}.btn.primary:hover{background:#fde047}.modes .btn.primary{grid-column:1/-1;font-size:1.2rem}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #38bdf8}.icon-btn{border:1px solid var(--panel-border);background:var(--btn);width:44px;height:44px;color:var(--muted);cursor:pointer;border-radius:12px;place-items:center;display:grid;position:absolute;top:12px;right:12px}.icon-btn:hover{color:var(--text)}.panel h2{color:var(--accent);margin:0;font-family:Bungee,system-ui,sans-serif;font-weight:400}.rows{gap:8px;width:100%;max-height:60vh;display:grid;overflow-y:auto}.row{text-align:left;justify-content:space-between;align-items:center;gap:16px;min-height:44px;font-size:.95rem;display:flex}.row input[type=range]{flex:none;width:55%}.row input[type=checkbox]{width:24px;height:24px}.row select{font:inherit;color:var(--text);border:1px solid var(--panel-border);background:#0b1220;border-radius:8px;padding:6px 10px}.toast{top:calc(16px + var(--safe-top));border:1px solid var(--panel-border);background:#0b1220;border-radius:12px;max-width:min(90vw,520px);padding:10px 18px;font-size:.95rem;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #00000080}.status{left:calc(12px + var(--safe-left));right:calc(12px + var(--safe-right));bottom:calc(8px + var(--safe-bottom));color:var(--muted);white-space:nowrap;justify-content:center;align-items:center;gap:8px;font-size:.75rem;display:flex;position:fixed;overflow:hidden}.status span{flex:none}.status [data-testid=renderer]{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.status .sep{opacity:.5;flex:none}.dot{background:var(--muted);border-radius:50%;flex:none;width:8px;height:8px}.dot.ok{background:var(--ok)}.dot.bad{background:var(--bad)}.unsupported ul{text-align:left;color:var(--muted)}.rotate{display:none}@media (orientation:portrait) and (pointer:coarse){.rotate{z-index:10;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:16px;font-size:1.1rem;display:flex;position:fixed;inset:0}.phone-icon{border:4px solid var(--accent);border-radius:10px;width:48px;height:80px;animation:2s ease-in-out infinite rotate-hint}}@keyframes rotate-hint{0%,30%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}@media (max-height:500px){#app{padding-bottom:calc(28px + var(--safe-bottom))}.home,.panel{gap:8px;width:min(560px,100%);padding:14px 20px}.logo{font-size:2rem}.tagline{font-size:.8rem}.name{flex-direction:row;align-items:center;gap:10px}.name span{flex:none}.name input{flex:1;padding:6px 12px}.modes{grid-template-columns:repeat(4,1fr);gap:8px}.modes .btn.primary{grid-column:auto;font-size:1rem}.btn{min-height:48px;padding:8px 10px;font-size:.95rem}.icon-btn{top:8px;right:8px}.rows{grid-template-columns:1fr 1fr;column-gap:24px;max-height:52vh}}#app>.sandbox-hud{pointer-events:none;position:fixed;inset:0}.sandbox-hud button{pointer-events:auto}.hud-hp{left:calc(16px + var(--safe-left));bottom:calc(16px + var(--safe-bottom));border:1px solid var(--panel-border);background:#0f172abf;border-radius:11px;width:220px;height:22px;position:absolute;overflow:hidden}.hud-ammo{left:calc(16px + var(--safe-left));bottom:calc(46px + var(--safe-bottom));border:1px solid var(--panel-border);text-shadow:0 1px 2px #000;background:#0f172abf;border-radius:12px;align-items:center;gap:6px;padding:2px 10px 2px 6px;font:700 .95rem ui-monospace,monospace;display:flex;position:absolute}.sandbox-hud.touch .hud-ammo{bottom:auto;top:calc(12px + var(--safe-top));left:calc(16px + 160px + 8px + var(--safe-left))}.sandbox-hud.touch .hud-hp{bottom:auto;top:calc(12px + var(--safe-top));left:calc(16px + var(--safe-left));width:160px}.hud-hp-fill{background:linear-gradient(90deg,#22c55e,#84cc16);transition:width .15s;position:absolute;inset:0 auto 0 0}.hud-hp span{text-align:center;text-shadow:0 1px 2px #000;font-size:.8rem;font-weight:700;line-height:22px;display:block;position:relative}.hud-debug{left:50%;top:calc(12px + var(--safe-top));background:#0f172abf;border-radius:8px;padding:4px 10px;font:.8rem ui-monospace,monospace;position:absolute;transform:translate(-50%)}.hud-hint{left:50%;bottom:calc(14px + var(--safe-bottom));color:var(--muted);white-space:nowrap;text-shadow:0 1px 2px #000;font-size:.8rem;position:absolute;transform:translate(-50%)}.hud-pause{top:calc(12px + var(--safe-top));right:calc(16px + var(--safe-right))}.sandbox-hud.touch .hud-pause{right:50%;transform:translate(50%)}.pause-overlay{pointer-events:auto;z-index:5;background:#0206178c;place-items:center;display:grid;position:fixed;inset:0}.pause-overlay .panel{width:min(360px,90vw)}.pause-overlay .btn{width:100%}.lil-gui.autoPlace.tuning-panel{max-height:calc(100vh - 80px);top:64px;overflow-y:auto}.touch-layer{--stick-r:60px;--btn-size:56px;z-index:1;touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0}.touch-stick{width:calc(var(--stick-r) * 2);height:calc(var(--stick-r) * 2);pointer-events:none;background:#f8fafc14;border:2px solid #f8fafc59;border-radius:50%;display:none;position:absolute;top:0;left:0}.touch-stick.visible{display:block}.touch-knob{left:calc(50% - var(--stick-r) * .45);top:calc(50% - var(--stick-r) * .45);width:calc(var(--stick-r) * .9);height:calc(var(--stick-r) * .9);background:#f8fafc59;border-radius:50%;position:absolute}.touch-stick.aim .touch-knob{background:#facc1573}.touch-btn{width:var(--btn-size);height:var(--btn-size);color:#f8fafcd9;touch-action:none;background:#0f172a73;border:2px solid #f8fafc66;border-radius:50%;padding:0;font:700 .7rem system-ui,sans-serif;position:absolute;transform:translate(50%,50%)}.touch-btn.active{color:#1c1917;background:#facc158c}.touch-btn.throw{right:calc(16px + var(--safe-right) + var(--btn-size) / 2);bottom:42%}.touch-btn.block{right:calc(16px + var(--safe-right) + var(--btn-size) * 1.35);bottom:30%}.touch-btn.jump{right:calc(16px + var(--safe-right) + var(--btn-size) * 2.2);bottom:18%}.touch-btn.jump2{right:auto;left:calc(24px + 16px + var(--safe-left));bottom:calc(24px + 16px + var(--safe-bottom) + var(--btn-size) / 2);transform:translate(-50%,50%)}.touch-layer.left-handed .touch-btn.throw,.touch-layer.left-handed .touch-btn.block,.touch-layer.left-handed .touch-btn.jump{transform:translate(-50%,50%)}.touch-layer.left-handed .touch-btn.throw{right:auto;left:calc(16px + var(--safe-left) + var(--btn-size) / 2)}.touch-layer.left-handed .touch-btn.block{right:auto;left:calc(16px + var(--safe-left) + var(--btn-size) * 1.35)}.touch-layer.left-handed .touch-btn.jump{right:auto;left:calc(16px + var(--safe-left) + var(--btn-size) * 2.2)}.touch-layer.left-handed .touch-btn.jump2{left:auto;right:calc(24px + 16px + var(--safe-right));transform:translate(50%,50%)}@media (prefers-reduced-motion:reduce){.phone-icon{animation:none}}.field-error{color:#fca5a5;align-self:flex-start;margin:-6px 0 0;font-size:.85rem}.join-panel{flex-direction:column;align-items:center;gap:12px;width:100%;display:flex}.code-boxes{gap:8px;display:flex}.code-box{text-align:center;text-transform:uppercase;width:48px;height:56px;color:var(--text);border:1px solid var(--panel-border);-webkit-user-select:text;user-select:text;background:#0b1220;border-radius:10px;font:700 1.6rem ui-monospace,monospace}.code-box:focus{outline:2px solid var(--accent)}.row-btns{gap:8px;width:100%;display:flex}.row-btns .btn{flex:1}.btn.small{min-height:40px;padding:6px 10px;font-size:.9rem}.btn:disabled{opacity:.45;cursor:not-allowed}.tagline.small{font-size:.75rem}.hud-ping{top:calc(18px + var(--safe-top));right:calc(72px + var(--safe-right));color:var(--muted);text-shadow:0 1px 2px #000;align-items:center;gap:5px;font:.8rem ui-monospace,monospace;display:flex;position:absolute}.sandbox-hud.touch .hud-ping{right:calc(16px + var(--safe-right));top:calc(12px + var(--safe-top))}.hud-ping .unstable{color:#f59e0b}.toast-stack{top:calc(60px + var(--safe-top));flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.toast-item{border:1px solid var(--panel-border);background:#0b1220eb;border-radius:10px;padding:6px 14px;font-size:.85rem}.lobby{top:calc(56px + var(--safe-top));right:calc(16px + var(--safe-right));width:260px;max-height:calc(100% - 72px - var(--safe-top));background:var(--panel);border:1px solid var(--panel-border);pointer-events:auto;border-radius:14px;flex-direction:column;gap:10px;padding:12px;display:flex;position:absolute;overflow-y:auto;box-shadow:0 12px 40px #00000073}.lobby-head{justify-content:space-between;align-items:center;display:flex}.lobby-label{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}.lobby-code{letter-spacing:.18em;color:var(--accent);-webkit-user-select:text;user-select:text;font:700 2rem/1.1 ui-monospace,monospace}.lobby-collapse{position:static}.lobby-pill{top:calc(56px + var(--safe-top));right:calc(16px + var(--safe-right));pointer-events:auto;min-height:36px;padding:4px 12px;font-size:.85rem;position:absolute}.sandbox-hud.touch .lobby,.sandbox-hud.touch .lobby-pill{top:calc(56px + var(--safe-top));right:auto;left:calc(16px + var(--safe-left))}.sandbox-hud.touch .lobby{max-height:calc(100% - 140px - var(--safe-top))}.roster{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.roster li{align-items:center;gap:8px;font-size:.9rem;display:flex}.roster li.away{opacity:.55}.roster .chip{border:1px solid #0b1220;border-radius:50%;flex:none;width:14px;height:14px}.roster .pname{text-overflow:ellipsis;white-space:nowrap;text-align:left;flex:1;min-width:0;overflow:hidden}.roster .crown{color:var(--accent)}.roster .tag{color:var(--muted);font-size:.7rem}.roster .tick{color:var(--ok);font-weight:700}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px}.swatch.sel{border-color:#fff}.swatch:disabled{opacity:.25;cursor:not-allowed}.modal-overlay{pointer-events:auto;z-index:6;background:#02061799;place-items:center;display:grid;position:fixed;inset:0}.modal-overlay .panel{width:min(380px,90vw)}.modal-overlay .btn{width:100%}.conn-note{color:var(--muted);background:#0b1220d9;border-radius:10px;padding:8px 16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner{border:4px solid var(--panel-border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-height:500px){.lobby{gap:6px;width:230px;padding:8px}.lobby-code{font-size:1.5rem}.code-box{width:40px;height:46px}.modes{grid-template-columns:repeat(4,1fr)}}fieldset.code-boxes,fieldset.swatches{border:0;min-width:0;margin:0;padding:0}@media (max-height:500px){.lobby .tagline.small{display:none}.lobby .swatch{width:22px;height:22px}.lobby .btn.small{min-height:34px}}.ios-tip{left:calc(12px + var(--safe-left,0px));right:calc(12px + var(--safe-right,0px));bottom:calc(34px + var(--safe-bottom,0px));z-index:4;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;align-items:center;gap:10px;max-width:640px;margin-inline:auto;padding:8px 12px;font-size:.8rem;line-height:1.25;display:flex;position:fixed;box-shadow:0 8px 30px #00000073}.ios-tip-icon{color:#facc15;flex:none}.ios-tip span{flex:1}.ios-tip-close{flex:none;min-width:80px;min-height:44px}.leave-prompt{z-index:8}.aim-reticle{z-index:1;pointer-events:none;display:none;position:fixed;inset:0}.aim-reticle-line{transform-origin:0 0;border-top:2px dashed #ffffff8c;height:0;position:absolute;top:0;left:0}.aim-reticle-ring{box-sizing:border-box;border:3px solid #fff;border-radius:50%;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #00000080,inset 0 0 0 1px #00000080}.touch-debug{z-index:3;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.hud-scores{top:calc(16px + var(--safe-top));left:calc(16px + var(--safe-left));pointer-events:none;background:#0b1220b8;border-radius:10px;flex-direction:column;gap:4px;margin:0;padding:6px 10px;list-style:none;display:flex;position:absolute}.hud-scores li{text-shadow:0 1px 2px #000;align-items:center;gap:6px;font-size:.8rem;font-weight:700;display:flex}.hud-scores li.away{opacity:.5}.hud-scores .chip,.podium .chip{border:1px solid #0b1220;border-radius:50%;flex:none;width:12px;height:12px}.hud-scores .sname{text-overflow:ellipsis;white-space:nowrap;width:96px;overflow:hidden}.hud-scores .pips{gap:3px;display:flex}.hud-scores .pip{background:#0f172a99;border:1px solid #f8fafc73;border-radius:50%;width:9px;height:9px}.hud-scores .snum{font-family:ui-monospace,monospace}.sandbox-hud.touch .hud-scores{top:calc(12px + 22px + 8px + var(--safe-top));gap:3px;padding:4px 8px}.sandbox-hud.touch .hud-scores .pip{width:7px;height:7px}.hud-clock{top:calc(14px + var(--safe-top));text-shadow:0 2px 4px #000;pointer-events:none;font:700 1.4rem ui-monospace,monospace;position:absolute;left:50%;transform:translate(-50%)}.sandbox-hud.touch .hud-clock{top:calc(20px + var(--safe-top));font-size:1.05rem;left:auto;right:calc(50% + 30px);transform:none}.sd-label{color:var(--bad);letter-spacing:.06em;font-family:system-ui,sans-serif;font-size:1rem}.sandbox-hud.touch .sd-label{font-size:.8rem}.kill-feed{top:calc(64px + var(--safe-top));right:calc(16px + var(--safe-right));pointer-events:none;flex-direction:column;align-items:flex-end;gap:4px;max-width:40vw;margin:0;padding:0;list-style:none;display:flex;position:absolute}.kill-feed li{white-space:nowrap;text-overflow:ellipsis;background:#0b1220b8;border-radius:8px;max-width:100%;padding:3px 10px;font-size:.8rem;animation:.2s ease-out feed-in;overflow:hidden}.sandbox-hud.touch .kill-feed{top:calc(36px + var(--safe-top))}.sandbox-hud.touch .kill-feed li{padding:2px 8px;font-size:.7rem}@keyframes feed-in{0%{opacity:0;transform:translate(16px)}}.banner{letter-spacing:.04em;color:var(--text);-webkit-text-stroke:2px #0b1220;text-shadow:0 6px #00000059;white-space:nowrap;pointer-events:none;z-index:2;flex-direction:column;align-items:center;gap:4px;font:900 5rem/1 system-ui,sans-serif;display:flex;position:absolute;top:34%;left:50%;transform:translate(-50%,-50%)}.banner-fight{color:var(--accent);animation:.5s cubic-bezier(.3,1.6,.5,1) both banner-bounce}.banner-sd{color:var(--bad);font-size:3.5rem;animation:.4s ease-out both banner-drop}.banner-result{animation:.4s ease-out both banner-drop}.banner-sub{-webkit-text-stroke:0;text-shadow:0 2px 4px #000;color:var(--text);font-size:1.4rem;font-weight:700}@keyframes banner-bounce{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}}@keyframes banner-drop{0%{opacity:0;transform:translate(-50%,-120%)}}.intro-flash{pointer-events:none;z-index:1;background:#fff;animation:ease-out both flash-out;position:fixed;inset:0}@keyframes flash-out{0%{opacity:.85}to{opacity:0}}@keyframes fade-in{0%{opacity:0}}.spectating{bottom:calc(16px + var(--safe-bottom));color:var(--muted);white-space:nowrap;pointer-events:none;background:#0b1220d9;border-radius:10px;padding:6px 14px;font-size:.85rem;position:absolute;left:50%;transform:translate(-50%)}.podium{top:calc(16px + var(--safe-top));background:var(--panel);border:1px solid var(--panel-border);pointer-events:none;border-radius:14px;width:min(320px,80vw);padding:10px 14px;animation:.4s ease-out both fade-in;position:absolute;left:50%;transform:translate(-50%)}.sandbox-hud.touch .podium{top:calc(64px + var(--safe-top));width:min(280px,60vw);padding:6px 10px}.podium h2{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;text-align:center;margin:0 0 6px;font-size:.8rem}.podium ol{flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.podium .prow{align-items:center;gap:8px;font-size:.85rem;display:flex}.podium .place{width:2.4em;color:var(--muted);font-weight:700}.podium .pname{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.podium .pscore{font-family:ui-monospace,monospace;font-weight:700}.podium .prow.place-1{font-size:1.05rem}.podium .prow.place-1 .place{color:#facc15}.podium .prow.place-2 .place{color:#cbd5e1}.podium .prow.place-3 .place{color:#d97706}.settings-sum{border:1px solid var(--panel-border);background:var(--btn);min-height:44px;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:10px;flex-direction:column;gap:2px;padding:6px 10px;font-size:.8rem;display:flex}.settings-sum:hover{background:var(--btn-hover)}.lobby-status.countdown,.lobby .tagline.countdown{color:var(--accent);font-weight:700}.modal-overlay .panel.settings-panel{align-items:stretch;width:min(520px,94vw);max-height:calc(100% - 24px);overflow-y:auto}.opt-group{text-align:left;border:0;min-width:0;margin:0;padding:0}.opt-group legend{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;padding:0;font-size:.75rem}.seg{gap:6px;display:flex}.opt-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.opt{border:1px solid var(--panel-border);background:var(--btn);min-height:44px;color:var(--muted);font:inherit;cursor:pointer;border-radius:10px;padding:4px 8px;font-size:.85rem}.seg .opt{flex:1}.opt.on{border-color:var(--accent);color:var(--text);background:#facc1529}.opt:disabled{cursor:not-allowed}.opt:disabled:not(.on){opacity:.45}@media (max-height:500px){.banner{-webkit-text-stroke-width:1.5px;font-size:3rem}.banner-sd{font-size:2.2rem}.banner-sub{font-size:1rem}.modal-overlay .panel.settings-panel{background:var(--bg);grid-template-columns:1fr 1fr;gap:8px 16px;width:min(800px,96vw);display:grid}.settings-panel>h2,.settings-panel>p,.settings-panel>.btn{grid-column:1/-1}.settings-panel>.btn{justify-self:center;min-width:160px}.lobby-head{order:-2}.lobby-actions{order:-1}.settings-sum>span:last-child{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lobby .tagline.small.lobby-status{display:block}.sandbox-hud.touch .lobby .btn.small{min-height:44px}}@media (prefers-reduced-motion:reduce){.banner-fight,.banner-sd,.banner-result,.kill-feed li{animation:.3s ease-out both fade-in}}
