@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}.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}}
