@font-face{font-family:Fredoka;src:url(/assets/fonts/Fredoka-Variable.woff2)format("woff2");font-weight:300 700;font-display:swap}:root{--ink:#2b2150;--ink-soft:#4a3f7a;--paper:#fffaf0;--yellow:#ffd23d;--yellow-dark:#e0a800;--pink:#ff5f8f;--pink-dark:#d23a6c;--blue:#3d8bff;--blue-dark:#2563c9;--mint:#3ddc84;--mint-dark:#1fae5e;--sky:#9edbff;--radius:22px;--font:"Fredoka", "Baloo 2", "Arial Rounded MT Bold", "Nunito", system-ui, sans-serif;--shadow:0 6px 0 #2b215059}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{height:100%;font-family:var(--font);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;touch-action:none;background:#d6f1ff;margin:0;overflow:hidden}body{width:100%;position:fixed;top:0;bottom:0;left:0;right:0}input,textarea,select{-webkit-user-select:text;user-select:text;font-size:max(16px,1em)}button,[role=button]{touch-action:manipulation}#app{position:fixed;top:0;bottom:0;left:0;right:0}#game-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block;position:absolute;top:0;bottom:0;left:0;right:0}#ui{pointer-events:none;z-index:2;position:fixed;top:0;bottom:0;left:0;right:0}#ui .screen{pointer-events:auto;flex-direction:column;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}#ui .screen.passthrough{pointer-events:none}.hidden{display:none!important}.logo{letter-spacing:.02em;color:var(--yellow);-webkit-text-stroke:clamp(4px, 1.1vw, 10px) var(--ink);paint-order:stroke fill;text-shadow:0 clamp(6px, 1.4vw, 14px) 0 var(--ink);margin:0 0 8px;font-size:clamp(64px,17vw,168px);font-weight:700;line-height:.9;display:flex;transform:rotate(-4deg)}.logo span{animation:2.4s ease-in-out infinite logo-bounce;display:inline-block}.logo span:nth-child(2){color:var(--pink);animation-delay:.12s}.logo span:nth-child(3){color:#56c8ff;animation-delay:.24s}.logo span:nth-child(4){color:var(--mint);animation-delay:.36s}.logo span:nth-child(5){animation-delay:.48s}@keyframes logo-bounce{0%,60%,to{transform:translateY(0)scale(1)}70%{transform:translateY(-12%)scale(.95,1.08)}80%{transform:translateY(0)scale(1.08,.92)}}.tagline{color:var(--ink);background:#ffffffbf;border-radius:999px;margin-bottom:18px;padding:6px 16px;font-size:clamp(16px,2.6vw,22px);font-weight:600}.btn{font-family:var(--font);letter-spacing:.04em;color:var(--ink);border:4px solid var(--ink);border-radius:var(--radius);box-shadow:0 6px 0 var(--ink);cursor:pointer;touch-action:manipulation;background:#fff;min-width:170px;min-height:56px;padding:12px 26px;font-size:clamp(18px,3vw,24px);font-weight:700;transition:transform 80ms,box-shadow 80ms,filter .1s}@media (hover:hover){.btn:hover{box-shadow:0 8px 0 var(--ink);filter:brightness(1.05);transform:translateY(-2px)scale(1.03)}}.btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(5px)}.btn:focus-visible{outline:4px dashed var(--pink);outline-offset:4px}.btn.primary{background:var(--yellow);box-shadow:0 9px 0 var(--ink);border-width:5px;border-radius:30px;padding:14px 56px;font-size:clamp(34px,7vw,56px);animation:1.8s ease-in-out infinite primary-pulse}.btn.primary:active{box-shadow:0 2px 0 var(--ink)}@keyframes primary-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.btn.pink{background:var(--pink);color:#fff}.btn.blue{background:#56c8ff}.btn.mint{background:var(--mint)}.btn.small{min-width:0;min-height:44px;box-shadow:0 4px 0 var(--ink);border-width:3px;padding:8px 14px;font-size:16px}.btn[disabled]{opacity:.5;pointer-events:none}.icon-btn{justify-content:center;align-items:center;width:52px;min-width:52px;height:52px;padding:0;font-size:24px;display:inline-flex}.row{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;display:flex}.stack{flex-direction:column;align-items:center;gap:14px;display:flex}.menu-screen{background:radial-gradient(#ffffff0d 0%,#2b21501f 100%)}.name-chip{border:4px solid var(--ink);box-shadow:var(--shadow);background:#fff;border-radius:999px;align-items:center;gap:10px;margin-bottom:22px;padding:6px 8px 6px 18px;font-size:clamp(18px,3vw,22px);font-weight:700;display:flex}.name-btn{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:none;border-bottom:3px dashed #2b215059;padding:0 2px}.name-btn:after{content:" ✏️";font-size:.75em}.name-edit{padding:6px 8px 6px 12px}.name-input{font:inherit;color:var(--ink);border:3px solid var(--ink);background:#fffbe8;border-radius:12px;outline:none;width:min(12ch,46vw);padding:4px 10px}.name-input:focus{box-shadow:0 0 0 3px var(--yellow);background:#fff}.name-error:empty{display:none}.name-error{border:3px solid var(--ink);background:#fff;border-radius:999px;margin:-14px 0 12px;padding:2px 14px}.name-chip .swatch{border:3px solid var(--ink);border-radius:50%;width:26px;height:26px}.corner{gap:10px;display:flex;position:absolute;top:16px;right:16px}.corner.left{left:16px;right:auto}.controls-hint{border:3px solid var(--ink);white-space:nowrap;background:#ffffffd1;border-radius:999px;gap:18px;padding:8px 18px;font-size:15px;font-weight:600;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.key{border:2px solid var(--ink);text-align:center;background:#fff;border-bottom-width:4px;border-radius:8px;min-width:28px;margin-right:4px;padding:1px 7px;font-size:13px;font-weight:700;display:inline-block}.panel{background:var(--paper);border:5px solid var(--ink);box-shadow:0 10px 0 var(--ink);border-radius:30px;flex-direction:column;align-items:center;gap:16px;width:100%;max-width:min(560px,100%);padding:26px 28px;animation:.25s cubic-bezier(.2,1.6,.4,1) pop-in;display:flex}@keyframes pop-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.panel h2{margin:0;font-size:clamp(28px,5vw,40px);font-weight:700}.backdrop{background:#2b215073}.code-input{gap:8px;display:flex}.code-input input{width:clamp(44px,12vw,64px);height:clamp(56px,14vw,76px);font-family:var(--font);text-align:center;text-transform:uppercase;border:4px solid var(--ink);color:var(--ink);box-shadow:0 4px 0 var(--ink);background:#fff;border-radius:16px;outline:none;font-size:clamp(28px,7vw,40px);font-weight:700}.code-input input:focus{background:#fff6c9}.error-text{color:var(--pink-dark);min-height:1.2em;font-weight:700}.room-code{letter-spacing:.18em;border:4px dashed var(--ink);background:#fff;border-radius:20px;padding:4px 18px 4px 28px;font-size:clamp(40px,10vw,64px);font-weight:700}.player-list{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.player-pill{border:3px solid var(--ink);background:#fff;border-radius:999px;align-items:center;gap:8px;padding:4px 14px 4px 6px;font-weight:600;display:flex}.player-pill .dot{border:3px solid var(--ink);border-radius:50%;width:24px;height:24px}.player-pill.me{background:#fff6c9}.player-pill .tag{background:var(--ink);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px}.lobby-bar{pointer-events:auto;flex-flow:wrap;justify-content:center;align-items:center;gap:18px;max-width:min(980px,100%);padding:14px 20px}.lobby-code{flex-direction:column;align-items:center;gap:4px;display:flex}.lobby-code .room-code{font-size:clamp(32px,6vw,46px)}.lobby-label{letter-spacing:.1em;font-size:14px;font-weight:700}.lobby-hint{text-align:center;opacity:.8;font-size:14px;font-weight:600}.lobby-players{flex-direction:column;flex:1;gap:8px;min-width:200px;display:flex}.lobby-actions{gap:8px}.btn.primary.lobby-start{padding:8px 34px;font-size:clamp(28px,5vw,40px)}.lobby-actions .tagline{margin:0}.create-panel{max-width:min(460px,100%)}.create-q{font-size:clamp(22px,4vw,28px);font-weight:700}.seg.big-seg{box-shadow:0 4px 0 var(--ink);border-width:4px}.seg.big-seg button{min-height:52px;padding:10px 22px;font-size:clamp(18px,3.4vw,22px)}.seg.big-seg button+button{border-left-width:4px}.bot-picker{border:3px dashed var(--ink);background:#fff;border-radius:20px;flex-direction:column;align-items:center;gap:10px;width:100%;padding:12px 14px;transition:opacity .2s,filter .2s;display:flex}.bot-picker.off{opacity:.35;filter:grayscale()}.bot-row{gap:10px;display:flex}.bot-face{opacity:.2;filter:grayscale();font-size:34px;line-height:1;transition:transform .2s cubic-bezier(.2,1.8,.4,1),opacity .15s;transform:scale(.8)}.bot-face.on{opacity:1;filter:none;transform:scale(1)}.bot-slider{grid-template-columns:auto 1fr auto;align-items:center;gap:10px;width:100%;font-weight:700;display:grid}.bot-slider input[type=range]{height:20px}.bot-slider input[type=range]:disabled::-webkit-slider-thumb{cursor:default}.bot-summary{font-size:20px;font-weight:700}.create-panel .error-text:empty{display:none}.create-actions{gap:10px;margin-top:4px}#settings .panel{overscroll-behavior:contain;touch-action:pan-y;max-height:100%;overflow-y:auto}.settings-pickers{gap:16px 28px}@media (max-height:520px){#ui #settings{padding:8px}#settings .panel{border-radius:22px;gap:8px;max-width:min(780px,100%);padding:10px 24px 14px}#settings .panel h2{font-size:26px}#settings .setting-row{font-size:16px}#settings .row{gap:10px}#settings .btn{min-height:44px;padding-top:6px;padding-bottom:6px}}.setting-row{grid-template-columns:100px 1fr 44px;align-items:center;gap:12px;width:100%;font-size:18px;font-weight:700;display:grid}input[type=range]{-webkit-appearance:none;appearance:none;border:3px solid var(--ink);background:#fff;border-radius:999px;width:100%;height:16px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--yellow);border:4px solid var(--ink);cursor:pointer;border-radius:50%;width:30px;height:30px}input[type=range]::-moz-range-thumb{background:var(--yellow);border:4px solid var(--ink);cursor:pointer;border-radius:50%;width:24px;height:24px}.seg{border:3px solid var(--ink);border-radius:16px;display:flex;overflow:hidden}.seg button{font-family:var(--font);color:var(--ink);cursor:pointer;background:#fff;border:none;padding:8px 16px;font-size:16px;font-weight:700}.seg button+button{border-left:3px solid var(--ink)}.seg button.on{background:var(--yellow)}.minutes-seg{margin-bottom:6px}.minutes-seg button{min-width:58px;min-height:48px;font-size:clamp(18px,3.4vw,22px)}.hud{pointer-events:none}.hud-top{top:calc(10px + env(safe-area-inset-top));flex-direction:column;align-items:center;gap:clamp(6px,1.4vh,12px);display:flex;position:absolute;left:0;right:0}.hud-bottom{bottom:calc(16px + env(safe-area-inset-bottom));flex-direction:column-reverse;align-items:center;gap:8px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.hud-callout{align-items:center;gap:8px;display:flex}@media (max-width:1000px){body:not(.touch) .hud-bottom{bottom:80px}}.hud.announcing .event-chip{display:none}.timer{border:5px solid var(--ink);box-shadow:0 6px 0 var(--ink);text-align:center;font-variant-numeric:tabular-nums;background:#fff;border-radius:24px;min-width:132px;padding:0 22px;font-size:clamp(30px,min(6vw,10vh),52px);font-weight:700}.timer.urgent{background:var(--pink);color:#fff;animation:.5s ease-in-out infinite alternate urgent}@keyframes urgent{to{transform:scale(1.08)}}.hud-left{z-index:3;top:calc(12px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:absolute}.score-card{pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent}.score-card:active{transform:translateY(2px)}.board-caret{margin-left:-4px;font-size:16px;transition:transform .2s}.hud.board-open .board-caret{transform:rotate(180deg)}.hp-bar{border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:2px 10px 2px 6px;font-size:15px;font-weight:700;display:flex}.hp-heart{font-size:16px;line-height:1}.hp-track{border:2px solid var(--ink);background:#ece7f7;border-radius:999px;width:clamp(80px,16vw,130px);height:12px;overflow:hidden}.hp-fill{background:#3ddc84;border-radius:999px;width:100%;height:100%;transition:width .25s ease-out,background-color .25s}.hp-bar.mid .hp-fill{background:#ffd23d}.hp-bar.low .hp-fill{background:#ff4d4d}.hp-bar.low .hp-heart{animation:.6s ease-in-out infinite hp-beat}.hp-num{text-align:right;font-variant-numeric:tabular-nums;min-width:2.2ch}.hp-bar.ouch{animation:.35s ease-out hp-ouch}@keyframes hp-ouch{0%{background:#ffd1e3;transform:translate(0)}25%{transform:translate(-5px)}50%{transform:translate(5px)}to{background:#fff;transform:none}}@keyframes hp-beat{50%{transform:scale(1.3)}}.score-card{transform-origin:0;border:5px solid var(--ink);box-shadow:0 6px 0 var(--ink);background:#fff;border-radius:24px;align-items:center;gap:10px;padding:4px 16px 4px 8px;font-weight:700;display:flex}.score-card .star{font-size:clamp(24px,min(5vw,8vh),40px);line-height:1}.score-card .num{font-variant-numeric:tabular-nums;min-width:1.2em;font-size:clamp(26px,min(5.5vw,9vh),44px);line-height:1}.score-card .rank{background:var(--ink);color:#fff;border-radius:12px;padding:2px 10px;font-size:18px}.score-card.pop{animation:.4s cubic-bezier(.2,2,.4,1) score-pop}@keyframes score-pop{0%{transform:scale(1)}40%{transform:scale(1.25)rotate(-3deg)}to{transform:scale(1)}}.board{flex-direction:column;align-items:flex-end;gap:5px;display:flex;position:absolute;top:78px;right:12px}.board-row{border:3px solid var(--ink);background:#ffffffe0;border-radius:999px;align-items:center;gap:6px;padding:1px 10px 1px 4px;font-size:15px;font-weight:700;transition:transform .3s;display:flex}.board-row.me{background:#fff6c9}.board-row .dot{border:2px solid var(--ink);border-radius:50%;width:18px;height:18px}.board-row .pos{text-align:center;opacity:.6;min-width:1.4ch;font-size:12px}.board-row.out{opacity:.55}.board-row .out-tag{background:var(--ink);color:#fff;border-radius:999px;padding:0 6px;font-size:11px}.hud:not(.board-open) .board-row.extra{display:none}.hud.board-open .board{z-index:6;pointer-events:auto;cursor:pointer;display:flex!important}.board-row .name{text-overflow:ellipsis;white-space:nowrap;max-width:120px;overflow:hidden}.event-chip{border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);white-space:nowrap;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:2px 12px 3px 4px;font-size:14px;font-weight:700;display:flex;position:relative;overflow:hidden}.event-chip .icon{justify-content:center;align-items:center;width:26px;height:26px;font-size:18px;display:flex}.event-chip .icon img{width:26px;height:26px}.event-chip .bar{background:var(--event-color,var(--pink));height:4px;position:absolute;bottom:0;left:0}.banner{border:4px solid var(--ink);border-bottom-width:7px;border-bottom-color:var(--event-color,var(--ink));box-shadow:0 4px 0 var(--ink);pointer-events:none;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:2px 16px 2px 4px;animation:.45s cubic-bezier(.2,2,.4,1) banner-in;display:flex}.banner .icon{justify-content:center;align-items:center;width:clamp(30px,6.5vh,46px);height:clamp(30px,6.5vh,46px);font-size:clamp(22px,5vh,34px);line-height:1;animation:.6s cubic-bezier(.2,2,.4,1) banner-icon;display:flex}.banner .icon img{width:100%;height:100%}.banner .title{color:#fff;-webkit-text-stroke:4px var(--ink);paint-order:stroke fill;text-shadow:0 3px 0 var(--ink);white-space:nowrap;font-size:clamp(18px,min(3.2vw,5.5vh),30px);font-weight:700;animation:.5s cubic-bezier(.2,2,.4,1) banner-title}@keyframes banner-in{0%{opacity:0;transform:translateY(24px)scale(.4)}to{opacity:1;transform:none}}@keyframes banner-icon{0%{transform:scale(0)rotate(-40deg)}to{transform:scale(1)rotate(0)}}@keyframes banner-title{0%{opacity:0;transform:scale(2)}to{opacity:1;transform:scale(1)}}.center-text{color:var(--yellow);-webkit-text-stroke:7px var(--ink);paint-order:stroke fill;text-shadow:0 8px 0 var(--ink);pointer-events:none;white-space:nowrap;font-size:clamp(52px,min(18vw,23vh),170px);font-weight:700;line-height:1;position:absolute;top:31%;left:50%;transform:translate(-50%,-50%)}.center-text.go{color:var(--mint)}.center-text.anim{animation:.9s ease-out count-pop}@keyframes count-pop{0%{opacity:0;transform:translate(-50%,-50%)scale(2.2)}20%{opacity:1;transform:translate(-50%,-50%)scale(.9)}35%{transform:translate(-50%,-50%)scale(1.05)}80%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(.9)}}.toasts{flex-direction:column-reverse;align-items:flex-start;gap:6px;display:flex}.toast{border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);transform-origin:0;white-space:nowrap;text-overflow:ellipsis;background:#fff;border-radius:14px;max-width:min(44vw,360px);padding:2px 12px;font-size:clamp(15px,min(2.4vw,4.6vh),22px);font-weight:700;animation:2.2s ease-out forwards toast;overflow:hidden}.toast.good{background:var(--yellow)}.toast.oops{background:#ffd1e3}.toast.info{background:#d6f1ff}@keyframes toast{0%{opacity:0;transform:translate(-36px)scale(.6)}10%{opacity:1;transform:translate(4px)scale(1.08)}18%{transform:none}80%{opacity:1;transform:none}to{opacity:0;transform:translate(-24px)}}.wind-arrow{justify-content:center;align-items:center;width:clamp(36px,8vh,48px);height:clamp(36px,8vh,48px);font-size:clamp(18px,4.5vh,26px);transition:opacity .3s;display:flex}.wind-arrow .arrow{box-sizing:border-box;border:3px solid var(--ink);width:100%;height:100%;box-shadow:0 3px 0 var(--ink);background:#fff;border-radius:50%;justify-content:center;align-items:center;display:flex}.wind-arrow.warn .arrow{background:#d6f1ff;animation:.3s ease-in-out infinite alternate wind-warn}@keyframes wind-warn{to{transform:scale(1.15)}}.cooldown{border:5px solid var(--ink);background:conic-gradient(var(--pink) calc(var(--p,1) * 360deg), #fff 0);width:86px;height:86px;box-shadow:0 5px 0 var(--ink);border-radius:50%;justify-content:center;align-items:center;font-size:18px;font-weight:700;display:flex;position:absolute;bottom:22px;right:22px}.cooldown span{border:3px solid var(--ink);background:#fff;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;display:flex}.cooldown.ready span{background:var(--yellow)}.cooldown.powered{border-color:var(--ability-color,var(--ink));animation:.9s ease-in-out infinite alternate powered}@keyframes powered{0%{box-shadow:0 5px 0 var(--ink), 0 0 0 0 var(--ability-color)}to{box-shadow:0 5px 0 var(--ink), 0 0 0 7px color-mix(in srgb, var(--ability-color) 45%, transparent)}}.ability-badge{border:3px solid var(--ink);background:radial-gradient(circle, #fff 58%, transparent 60%), conic-gradient(var(--ability-color,var(--pink)) calc(var(--left,1) * 360deg), #ece7f7 0);pointer-events:none;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;font-size:22px;display:flex;position:absolute;top:-12px;left:-12px}.touch .ability-badge{width:44px;height:44px;font-size:24px;top:-14px;left:-14px}.spectate-bar{pointer-events:auto;align-items:center;gap:8px;display:flex}.spectate-who{border:4px solid var(--ink);box-shadow:0 4px 0 var(--ink);background:#fff;border-radius:20px;flex-direction:column;align-items:center;min-width:150px;padding:2px 16px 4px;display:flex}.spectate-label{opacity:.65;font-size:12px;font-weight:700}.spectate-name{text-overflow:ellipsis;white-space:nowrap;border-bottom:4px solid var(--who,var(--ink));max-width:44vw;font-size:20px;font-weight:700;overflow:hidden}.spectate-arrow{border:4px solid var(--ink);background:var(--yellow);width:54px;height:54px;box-shadow:0 4px 0 var(--ink);color:var(--ink);cursor:pointer;border-radius:50%;padding:0;font-size:22px}.spectate-arrow:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.hud.spectating .cooldown,.hud.spectating .touch-btn,.hud.spectating .hp-bar,.hud.spectating .touch-stick-zone:after,.hud.spectating .touch-stick-base{display:none!important}.emote-bar{pointer-events:auto;gap:6px;display:flex;position:absolute;bottom:18px;left:18px}.emote-bar button{border:3px solid var(--ink);width:48px;height:48px;box-shadow:0 4px 0 var(--ink);cursor:pointer;background:#ffffffeb;border-radius:14px;padding:0;font-size:24px;position:relative}.emote-bar button small{font-family:var(--font);background:var(--ink);color:#fff;border-radius:999px;padding:0 5px;font-size:11px;font-weight:700;position:absolute;top:-8px;right:-6px}.emote-bar button:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.hud-menu-btn{top:calc(12px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right));pointer-events:auto;position:absolute}.emote-toggle,.touch-zone,.touch-btn,.touch-stick-base{display:none}.touch .touch-zone{pointer-events:auto;touch-action:none;width:50%;display:block;position:absolute;top:72px;bottom:0}.touch .touch-stick-zone{left:0}.touch .touch-look-zone{right:0}.touch .touch-stick-zone:after{content:"MOVE";left:calc(28px + env(safe-area-inset-left));bottom:calc(28px + env(safe-area-inset-bottom));color:#2b21508c;background:#ffffff2e;border:4px dashed #2b215059;border-radius:50%;justify-content:center;align-items:center;width:116px;height:116px;font-size:18px;font-weight:700;display:flex;position:absolute}.touch .touch-stick-zone.active:after{opacity:0}.touch .touch-stick-base{pointer-events:none;background:#ffffff59;border:4px solid #2b21508c;border-radius:50%;width:132px;height:132px;margin:-66px 0 0 -66px;display:block;position:fixed}.touch .touch-stick-knob{border:4px solid var(--ink);background:var(--yellow);width:62px;height:62px;box-shadow:0 4px 0 var(--ink);border-radius:50%;margin:-31px 0 0 -31px;position:absolute;top:50%;left:50%}.touch .touch-btn{right:calc(22px + 108px + 18px + env(safe-area-inset-right));bottom:calc(26px + env(safe-area-inset-bottom));border:5px solid var(--ink);background:var(--mint);width:88px;height:88px;box-shadow:0 6px 0 var(--ink);font-family:var(--font);color:var(--ink);pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:20px;font-weight:700;display:flex;position:absolute}.touch .cooldown{right:calc(22px + env(safe-area-inset-right));bottom:calc(22px + env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;width:108px;height:108px;font-size:22px}.touch .cooldown span{width:80px;height:80px}.touch .touch-btn.pressed,.touch .cooldown.pressed{box-shadow:0 2px 0 var(--ink);transform:translateY(4px)scale(.96)}@media (orientation:portrait){.touch .touch-btn{right:calc(32px + env(safe-area-inset-right));bottom:calc(22px + 108px + 20px + env(safe-area-inset-bottom))}.touch .hud-bottom{bottom:calc(160px + env(safe-area-inset-bottom));left:calc(20px + env(safe-area-inset-left));align-items:flex-start;transform:none}}.touch .emote-toggle{top:calc(12px + env(safe-area-inset-top));right:calc(12px + 52px + 10px + env(safe-area-inset-right));border:3px solid var(--ink);width:52px;height:52px;box-shadow:0 4px 0 var(--ink);pointer-events:auto;background:#ffffffeb;border-radius:14px;justify-content:center;align-items:center;padding:0;font-size:26px;display:flex;position:absolute}.touch .emote-bar{top:calc(74px + env(safe-area-inset-top));bottom:auto;left:auto;right:calc(12px + env(safe-area-inset-right));z-index:2;display:none}.touch .emote-bar.open{display:flex}.touch .emote-bar button small,.touch .controls-hint{display:none}@media (max-height:560px){.touch .board{display:none}}.touch .hud.board-open .board{top:calc(112px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));align-items:stretch;max-height:calc(100vh - 140px);right:auto;overflow-y:auto}.touch .hud.board-open .board-row{padding:3px 12px 3px 6px;font-size:17px}@media (max-height:560px){.touch .hud.board-open .board{top:calc(106px + env(safe-area-inset-top));gap:3px}.touch .hud.board-open .board-row{border-width:2px;padding:0 10px 0 4px;font-size:14px}.touch .hud.board-open .board-row .dot{width:14px;height:14px}}.net-badge{background:var(--pink);color:#fff;border:3px solid var(--ink);border-radius:999px;padding:4px 14px;font-weight:700}.respawn-note{color:#fff;-webkit-text-stroke:5px var(--ink);paint-order:stroke fill;text-shadow:0 6px 0 var(--ink);white-space:nowrap;font-size:clamp(26px,min(6vw,9vh),44px);font-weight:700}.results-screen{background:radial-gradient(70% 60% at 50% 38%,#fff4c48c 0%,#fff4c400 70%),linear-gradient(#2b21502e,#2b21500d 45%,#2b21504d);gap:clamp(8px,1.6vh,16px);overflow:hidden auto;justify-content:flex-start!important;padding-top:clamp(14px,4vh,40px)!important;padding-bottom:clamp(14px,3vh,28px)!important}.results-screen>*{z-index:1;flex-shrink:0;position:relative}.results-title{color:var(--yellow);-webkit-text-stroke:clamp(5px, .8vw, 7px) var(--ink);paint-order:stroke fill;text-shadow:0 8px 0 var(--ink);text-align:center;overflow-wrap:anywhere;max-width:100%;margin:0;padding:0 8px;font-size:clamp(34px,min(8.5vw,8vh),80px);font-weight:700;line-height:1.05;animation:.7s cubic-bezier(.2,1.8,.4,1) both title-pop,2.4s ease-in-out .7s infinite title-bob}.results-screen.i-won .results-title{color:var(--mint)}@keyframes title-pop{0%{opacity:0;transform:scale(.3)rotate(-8deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes title-bob{0%,to{transform:translateY(0)rotate(-1.5deg)}50%{transform:translateY(-5px)rotate(1.5deg)}}.podium-stage{justify-content:center;width:min(560px,100%);display:flex;position:relative}.podium-rays{aspect-ratio:1;pointer-events:none;z-index:0;background:repeating-conic-gradient(#ffe26e8c 0deg 12deg,#ffe26e00 12deg 24deg);border-radius:50%;width:min(620px,130vw);animation:24s linear infinite rays-spin,.8s ease-out .5s both fade-in;position:absolute;top:40%;left:50%;translate:-50% -50%;-webkit-mask-image:radial-gradient(circle,#000 18%,#0000 68%);mask-image:radial-gradient(circle,#000 18%,#0000 68%)}@keyframes rays-spin{to{rotate:360deg}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.podium{z-index:1;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:clamp(6px,1.6vw,12px);width:100%;display:grid;position:relative}.podium .place{flex-direction:column;align-items:center;gap:6px;min-width:0;display:flex}.podium .place.empty{visibility:hidden}.podium .bumpling{aspect-ratio:1/1.08;border:4px solid var(--ink);width:clamp(40px,min(9vw,7vh),58px);box-shadow:inset -6px -6px 0 #00000024, 0 4px 0 var(--ink);border-radius:50% 50% 46% 46%;animation:.55s cubic-bezier(.2,1.6,.4,1) both bumpling-drop,1.6s ease-in-out infinite bumpling-hop;position:relative}.podium .bumpling:before,.podium .bumpling:after{content:"";background:var(--ink);border-radius:50%;width:18%;height:24%;position:absolute;top:34%;box-shadow:inset 2px 2px #ffffffe6}.podium .bumpling:before{left:26%}.podium .bumpling:after{right:26%}.podium .crown{filter:drop-shadow(0 3px 0 var(--ink));font-size:clamp(22px,4.2vh,32px);animation:1.2s ease-in-out infinite crown-wiggle;position:absolute;bottom:82%;left:50%;translate:-50%}@keyframes crown-wiggle{0%,to{rotate:-10deg}50%{rotate:10deg}}@keyframes bumpling-drop{0%{opacity:0;transform:translateY(-60px)scale(.6,1.3)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes bumpling-hop{0%,70%,to{translate:0;scale:1}80%{translate:0 -10px;scale:.94 1.08}90%{translate:0;scale:1.08 .92}}.podium .p1 .bumpling{width:clamp(50px,min(11vw,9vh),72px);animation-delay:.55s,1.1s}.podium .p2 .bumpling{animation-delay:.35s,1.3s}.podium .p3 .bumpling{animation-delay:.35s,1.5s}.podium .who{border:3px solid var(--ink);background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:5px;max-width:100%;padding:2px 10px;font-size:clamp(13px,2.4vw,17px);font-weight:700;display:flex}.podium .who .name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.results-screen .tag.out{background:var(--ink)}.podium .who .tag,.rest-row .tag,.rest-row.me .rank{background:var(--pink);color:#fff;border-radius:999px;flex-shrink:0;padding:1px 6px;font-size:11px}.podium .place.me .who{background:#fff6c9}.podium .block{border:5px solid var(--ink);transform-origin:bottom;border-bottom-width:0;border-radius:20px 20px 0 0;flex-direction:column;justify-content:flex-start;align-items:center;gap:2px;width:100%;padding-top:clamp(6px,1.2vh,12px);font-weight:700;animation:.6s cubic-bezier(.2,1.6,.4,1) both rise;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 -10px #2b21501f,inset 0 6px #ffffff8c}.podium .block:after{content:"";background:linear-gradient(90deg,#fff0,#ffffffb3,#fff0);width:40%;animation:3.2s ease-in-out 1.4s infinite shine;position:absolute;top:-20%;bottom:-20%;left:-60%;right:auto;transform:skew(-18deg)}@keyframes shine{0%{left:-60%}35%,to{left:130%}}.podium .p1 .block{height:clamp(104px,20vh,176px);animation-delay:.45s}.podium .p2 .block,.podium .p3 .block{height:clamp(76px,14vh,124px);animation-delay:.2s}.podium .r1 .block{background:linear-gradient(#ffe46f,#ffc21a)}.podium .r2 .block{background:linear-gradient(#f4f7ff,#c9d3ee)}.podium .r3 .block{background:linear-gradient(#ffd6b3,#f0a36b)}.podium .r0 .block{background:linear-gradient(#fff,#dfe6f5);padding-top:clamp(14px,3vh,28px)}.results-screen.no-stars .podium-rays{display:none}.podium .r1 .block:after{animation-delay:1.2s}.podium .medal{filter:drop-shadow(0 3px #2b215073);font-size:clamp(26px,min(5vw,5vh),40px);line-height:1;animation:.5s cubic-bezier(.2,1.8,.4,1) .8s both medal-pop}@keyframes medal-pop{0%{transform:scale(0)rotate(-40deg)}to{transform:scale(1)rotate(0)}}.podium .score{color:var(--ink);align-items:center;gap:2px;font-size:clamp(22px,min(4.4vw,4.4vh),34px);display:flex}.podium .p1 .score{font-size:clamp(28px,min(5.6vw,5.6vh),44px)}.podium .score .star{font-size:.8em}.podium .score .num{font-variant-numeric:tabular-nums}.podium-stage:after{content:"";border:5px solid var(--ink);background:var(--pink);height:14px;box-shadow:0 5px 0 var(--ink);z-index:2;border-radius:10px;animation:.3s ease-out both fade-in;position:absolute;bottom:-12px;left:-10px;right:-10px}@keyframes rise{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.results-rest{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px;width:min(460px,100%);margin-top:10px;display:grid}.rest-row{border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);background:#ffffffeb;border-radius:999px;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:6px;padding:2px 12px 2px 6px;font-size:clamp(13px,min(2.4vw,2.2vh),16px);font-weight:700;animation:.35s cubic-bezier(.2,1.6,.4,1) both row-in;display:grid}.rest-row:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:calc(50% - 4px)}.rest-row .rank{text-align:center;opacity:.75;min-width:26px}.rest-row.me{background:#fff6c9}.rest-row.me .rank{opacity:1}.rest-row .dot{border:3px solid var(--ink);border-radius:50%;width:20px;height:20px}.rest-row .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rest-row .pts{font-variant-numeric:tabular-nums}@keyframes row-in{0%{opacity:0;transform:translateY(12px)scale(.9)}to{opacity:1;transform:none}}.results-mine{background:var(--yellow);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);border-radius:999px;padding:4px 16px;font-size:clamp(16px,2.8vw,20px);font-weight:700;animation:.4s cubic-bezier(.2,1.6,.4,1) 1.2s both row-in}.results-actions{gap:10px;margin-top:auto;padding-top:8px}.results-actions .tagline{margin:0}.results-actions .btn.primary{padding:clamp(8px,1.4vh,14px) 52px;font-size:clamp(30px,min(7vw,6vh),56px)}@media (max-height:820px){.results-mine{display:none}}.confetti{pointer-events:none;top:0;bottom:0;left:0;right:0;overflow:hidden;z-index:0!important;position:absolute!important}.confetti i{border:2px solid var(--ink);border-radius:3px;width:10px;height:16px;animation:linear infinite both confetti-fall;position:absolute;top:-24px}.confetti i:nth-child(3n){border-radius:50%;width:12px;height:12px}@keyframes confetti-fall{0%{transform:translate(0)rotate(0)}to{transform:translate(var(--drift,0), 110vh) rotate(var(--spin,3turn))}}@media (max-width:420px){.results-rest{grid-template-columns:minmax(0,1fr);width:min(280px,100%)}.rest-row:last-child:nth-child(odd){grid-column:auto;justify-self:stretch;width:auto}}@media (max-height:560px){.results-screen{gap:6px}.results-title{text-shadow:0 5px 0 var(--ink);font-size:clamp(28px,8vh,44px)}.podium .p1 .block{height:clamp(78px,20vh,104px)}.podium .p2 .block,.podium .p3 .block{height:clamp(56px,13vh,72px)}.podium .bumpling{width:36px}.podium .p1 .bumpling{width:44px}.podium .crown{font-size:20px}.podium .block{flex-direction:row;justify-content:center;align-items:center;gap:6px;padding-top:0;padding-bottom:6px}.podium .p1 .block{align-items:flex-start;padding-top:10px}.podium .medal{font-size:24px}.results-rest{grid-template-columns:minmax(0,280px);justify-content:center;margin-top:8px}.results-rest .rest-row:not(.me){display:none}.results-rest .rest-row.me{grid-column:auto;justify-self:stretch;width:auto}.results-rest:not(:has(.me)){display:none}.results-mine{display:none}.results-actions{flex-direction:row;align-items:center;padding-top:4px}.results-actions .btn.primary{min-height:0;padding:8px 30px;font-size:26px}}@media (prefers-reduced-motion:reduce){.results-screen *,.results-screen :before,.results-screen :after{animation-iteration-count:1!important}.confetti,.podium-rays{display:none}}body.reduced-motion .results-screen *,body.reduced-motion .results-screen :before,body.reduced-motion .results-screen :after{animation-iteration-count:1!important}body.reduced-motion .confetti,body.reduced-motion .podium-rays{display:none}#loading{z-index:10;background:linear-gradient(#58b8ff,#d6f1ff 70%,#ffd9ee);flex-direction:column;justify-content:center;align-items:center;gap:18px;transition:opacity .4s;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#loading.done{opacity:0;pointer-events:none}.progress{border:5px solid var(--ink);width:min(320px,70vw);height:26px;box-shadow:0 5px 0 var(--ink);background:#fff;border-radius:999px;overflow:hidden}.progress .fill{background:repeating-linear-gradient(-45deg, var(--yellow) 0 14px, #ffe46f 14px 28px);width:0;height:100%;transition:width .25s}.loading-tip{text-align:center;max-width:min(560px,100vw - 32px);font-size:clamp(22px,4vw,30px);font-weight:700}.boot-error-code{opacity:.55;text-align:center;overflow-wrap:anywhere;max-width:calc(100vw - 32px);font-size:12px}.debug-panel{z-index:20;color:#d6ffe8;pointer-events:auto;-webkit-user-select:text;user-select:text;background:#141028db;border-radius:10px;max-width:330px;padding:8px 10px;font:12px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace;position:fixed;bottom:80px;left:8px}.debug-panel button,.debug-panel select{color:#fff;cursor:pointer;background:#2b2150;border:1px solid #7a6fb5;border-radius:6px;margin:2px 2px 0 0;padding:2px 6px;font:11px ui-monospace,monospace}.debug-panel label{grid-template-columns:110px 1fr 40px;align-items:center;gap:4px;display:grid}.debug-panel input[type=range]{border-width:1px;height:8px}.debug-panel details summary{cursor:pointer;color:#ffd23d}@media (max-width:640px){.board{display:none}.hud.board-open .board{top:calc(112px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));align-items:stretch;right:auto}.hud-top{align-items:flex-end;padding-right:76px}.timer{min-width:104px;padding:0 12px}.controls-hint{display:none}.emote-bar button{width:40px;height:40px;font-size:20px}.score-card{padding:2px 10px 2px 6px}.touch .emote-toggle{top:calc(72px + env(safe-area-inset-top));right:calc(12px + env(safe-area-inset-right))}.touch .emote-bar{top:calc(132px + env(safe-area-inset-top))}}@media (prefers-reduced-motion:reduce){.logo span,.btn.primary,.timer.urgent{animation:none}}body.reduced-motion .logo span,body.reduced-motion .btn.primary,body.reduced-motion .timer.urgent,body.reduced-motion .center-text.anim{animation-duration:10ms}
