:root{--accent:#ff4fa3;--accent2:#4fd1ff;--panel:#180a34d1;--text:#fff;--muted:#cbbcff;--good:#5cf28a;--bad:#ff5f7a;--font:Fredoka, system-ui, -apple-system, "Segoe UI", sans-serif;--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--safe-t:env(safe-area-inset-top,0px)}*{box-sizing:border-box}html,body{height:100%;color:var(--text);font-family:var(--font);background:#12062a;margin:0;overflow:hidden}body{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}canvas#view{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}button{font-family:var(--font);cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:3px;outline:4px solid #fff36b}.screen{padding:calc(16px + var(--safe-t)) calc(16px + var(--safe-r)) calc(24px + var(--safe-b)) calc(16px + var(--safe-l));flex-direction:column;align-items:center;gap:14px;display:flex;position:absolute;inset:0;overflow-y:auto}.screen.center{justify-content:center}.logo{letter-spacing:1px;text-align:center;margin:8px 0 0;font-size:clamp(40px,9vw,96px);font-weight:700;line-height:1}.logo span{-webkit-text-stroke:3px #140028cc;paint-order:stroke fill;text-shadow:0 6px #00000059;animation:2.4s ease-in-out infinite bob;display:inline-block}@keyframes bob{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-8px)rotate(3deg)}}.tagline{color:var(--muted);text-align:center;margin:0;font-size:clamp(15px,2.6vw,22px)}.card{background:var(--panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:2px solid #ffffff29;border-radius:22px;width:min(760px,100%);padding:16px;box-shadow:0 10px 30px #00000059}.card h2{margin:0 0 10px;font-size:24px}.card h3{color:var(--muted);margin:12px 0 8px;font-size:18px}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.center{justify-content:center}.grow{flex:1}.btn{color:#fff;background:linear-gradient(#8a63ff,#5b2fe0);border:none;border-radius:16px;min-height:48px;padding:12px 20px;font-size:19px;font-weight:700;transition:transform 80ms;box-shadow:0 5px #351a8f,0 8px 16px #0000004d}.btn:active,.btn.down{transform:translateY(4px);box-shadow:0 1px #351a8f}.btn.big{border-radius:20px;padding:16px 26px;font-size:clamp(20px,3.4vw,28px)}.btn.pink{background:linear-gradient(#ff6fb6,#e0287f);box-shadow:0 5px #8f1350,0 8px 16px #0000004d}.btn.green{background:linear-gradient(#5ef09a,#18b65a);box-shadow:0 5px #0b6e33,0 8px 16px #0000004d}.btn.orange{background:linear-gradient(#ffb35c,#f07b12);box-shadow:0 5px #8f4505,0 8px 16px #0000004d}.btn.blue{background:linear-gradient(#5fd4ff,#1b8fe0);box-shadow:0 5px #0c4f86,0 8px 16px #0000004d}.btn.ghost{box-shadow:none;background:#ffffff1f;border:2px solid #ffffff40}.btn.small{border-radius:12px;min-height:40px;padding:8px 12px;font-size:15px}.btn:disabled{filter:grayscale(.9)brightness(.7);cursor:not-allowed}.menu-grid{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;width:min(760px,100%);display:grid}.menu-grid .btn{flex-direction:column;align-items:center;gap:2px;padding:16px 12px;display:flex}.menu-grid .btn small{opacity:.9;font-size:14px;font-weight:500}.menu-grid .btn .em{font-size:34px;line-height:1.1}input.name{font-family:var(--font);color:#fff;text-align:center;background:#00000059;border:3px solid #ffffff59;border-radius:16px;width:min(360px,100%);padding:12px 16px;font-size:26px;font-weight:700}.skins{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.skin{color:#fff;text-align:center;background:#ffffff12;border:3px solid #0000;border-radius:16px;flex-direction:column;align-items:center;gap:4px;padding:8px;font-size:16px;font-weight:700;display:flex}.skin canvas{border-radius:10px;width:100%;height:74px;display:block}.skin small{color:var(--muted);font-size:12px;font-weight:500}.skin.sel{background:#fff36b26;border-color:#fff36b;box-shadow:0 0 18px #fff36b59}.status{background:#00000059;border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:15px;display:inline-flex}.dot{background:#999;border-radius:50%;width:12px;height:12px}.dot.on{background:var(--good);box-shadow:0 0 10px var(--good)}.dot.off{background:var(--bad)}.dot.wait{background:#ffd34d}.list{flex-direction:column;gap:8px;display:flex}.item{background:#ffffff12;border-radius:14px;align-items:center;gap:10px;min-height:52px;padding:10px 12px;font-size:18px;display:flex}.item .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:700;overflow:hidden}.item .meta{color:var(--muted);font-size:14px}.empty{color:var(--muted);text-align:center;padding:8px;font-size:16px}.slots{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:10px;display:grid}.slot{background:#ffffff14;border-radius:16px;flex-direction:column;gap:2px;min-height:74px;padding:10px;display:flex;position:relative}.slot .nm{text-overflow:ellipsis;white-space:nowrap;padding-right:34px;font-size:18px;font-weight:700;overflow:hidden}.slot .meta{color:var(--muted);font-size:13px}.slot.me{outline:3px solid #fff36b}.slot.empty{color:var(--muted);background:0 0;border:2px dashed #fff3;justify-content:center;align-items:center}.slot .x{color:#fff;background:#ffffff26;border:none;border-radius:10px;width:32px;height:32px;font-size:16px;position:absolute;top:6px;right:6px}.variants{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:10px;display:grid}.variant{color:#fff;text-align:left;background:#ffffff14;border:3px solid #0000;border-radius:16px;flex-direction:column;gap:4px;padding:10px;font-size:17px;font-weight:700;display:flex}.variant small{color:var(--muted);font-size:13px;font-weight:500}.variant.sel{background:#fff36b24;border-color:#fff36b}.variant:disabled{cursor:default}.seg{border:2px solid #ffffff40;border-radius:14px;display:inline-flex;overflow:hidden}.seg button{color:#fff;background:0 0;border:none;min-height:44px;padding:9px 14px;font-size:16px;font-weight:700}.seg button.sel{color:#2a1060;background:#fff36b}.topbar{bottom:calc(8px + var(--safe-b));left:calc(8px + var(--safe-l));z-index:5;gap:8px;display:flex;position:absolute}.iconbtn{color:#fff;background:#14082db3;border:2px solid #ffffff40;border-radius:14px;justify-content:center;align-items:center;width:48px;height:48px;font-size:22px;display:flex}.admin-badge{bottom:calc(6px + var(--safe-b));opacity:.85;color:#fff;z-index:50;pointer-events:none;background:#ff2d55;border-radius:10px;padding:6px 12px;font-size:15px;font-weight:700;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 0 12px #ff2d55b3}.overlay{z-index:20;background:#0a001e99;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.overlay .card{max-height:100%;overflow-y:auto}.results .item.win{background:linear-gradient(90deg,#ffd74059,#ffffff12)}.place{text-align:center;width:44px;font-size:22px;font-weight:700}.toasts{left:50%;bottom:calc(16px + var(--safe-b));z-index:60;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(520px,94vw);display:flex;position:fixed;transform:translate(-50%)}.toast{pointer-events:none;background:#14082deb;border:2px solid #ffffff40;border-radius:14px;align-items:center;gap:10px;width:100%;padding:10px 16px;font-size:17px;font-weight:600;animation:.25s ease-out pop;display:flex}.toast.invite{pointer-events:auto;border-color:#fff36b;box-shadow:0 0 20px #fff36b66}@keyframes pop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.hint{top:calc(10px + var(--safe-t));color:#2a1060;z-index:8;text-align:center;pointer-events:none;background:#fff36bf2;border-radius:16px;max-width:92vw;padding:10px 18px;font-size:clamp(16px,2.6vw,22px);font-weight:700;animation:.3s ease-out pop;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #00000059}.tour{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;width:min(980px,100%);display:grid}.stage{color:#fff;text-align:left;background:#ffffff17;border:3px solid #ffffff26;border-radius:18px;flex-direction:column;gap:4px;min-height:130px;padding:14px;display:flex}.stage .num{color:var(--muted);font-size:14px;font-weight:700}.stage .nm{font-size:21px;font-weight:700}.stage small{color:#e9e2ff;font-size:14px}.stage.locked{opacity:.75;filter:grayscale(.6);background:#1e143cf2}.stage{background-color:#1e0e46eb}.stage.cleared{border-color:var(--good)}.stage.next{border-color:#fff36b;box-shadow:0 0 18px #fff36b66}.touchpad{pointer-events:none;z-index:4;position:fixed;inset:0}.touchpad>div{bottom:calc(10px + var(--safe-b));pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:absolute}.touchpad .tp-left{left:calc(10px + var(--safe-l))}.touchpad .tp-right{right:calc(10px + var(--safe-r))}.touchpad .tp-row{gap:10px;display:flex}.touchpad button{pointer-events:auto;color:#fff;touch-action:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1e0c468c;border:3px solid #ffffff73;border-radius:22px;font-weight:700}.touchpad button.down{color:#2a1060;background:#fff36b99;transform:scale(.94)}.tp-big{width:78px;height:78px;font-size:34px}.tp-mid{width:66px;height:66px;font-size:28px}.tp-small{width:62px;height:46px;font-size:16px}.tp-emo{width:36px;height:36px;font-size:18px;border-width:2px!important;border-radius:12px!important}.tp-wide{width:156px;height:62px;font-size:22px}body.portrait .tp-big{width:70px;height:70px}body.flipped .touchpad [data-a=soft]{transform:rotate(180deg)}body.flipped .touchpad [data-a=soft].down{transform:rotate(180deg)scale(.94)}.keys{grid-template-columns:auto 1fr;gap:6px 14px;font-size:17px;display:grid}.keys kbd{font-family:var(--font);background:#ffffff26;border-bottom:3px solid #0000004d;border-radius:8px;padding:2px 8px;font-weight:700}.emotes{gap:6px;display:flex}.emotes button{background:#ffffff14;border:2px solid #fff3;border-radius:12px;width:46px;height:46px;font-size:24px}table.attack{border-collapse:collapse;font-size:16px}table.attack td{border-bottom:1px solid #ffffff1a;padding:4px 12px}label.toggle{align-items:center;gap:10px;min-height:44px;font-size:18px;display:flex}label.toggle input{width:26px;height:26px}input[type=range]{width:180px}@media (prefers-reduced-motion:reduce){.logo span,.toast,.hint{animation:none}}body.reduced .logo span{animation:none}
