:root{--ink:#3c3550;--panel:#fffbf5eb;--accent:#ff8fb3;--accent2:#7ce8d8;--shadow:0 10px 30px #3c285a2e}.ico{vertical-align:-.14em;filter:drop-shadow(0 .085em 0 var(--ico-lip));line-height:0;display:inline-block}.ico svg{width:1em;height:1em;display:block;overflow:visible}.ico .ib{fill:var(--ico-tint)}.ico .if{fill:var(--ico-shade)}.ico--flat{filter:none}.ico--gold{--ico-tint:#ffdf7e;--ico-shade:#e2952a;--ico-lip:#a1600d}.ico--pink{--ico-tint:#ffc2d6;--ico-shade:#ef699a;--ico-lip:#b23a60}.ico--red{--ico-tint:#ffb3c1;--ico-shade:#e2506a;--ico-lip:#9c2740}.ico--orange{--ico-tint:#ffcfa0;--ico-shade:#ef7a3a;--ico-lip:#a94f19}.ico--green{--ico-tint:#c3f0a4;--ico-shade:#4fae5b;--ico-lip:#2c7237}.ico--teal{--ico-tint:#a8f2e4;--ico-shade:#3aa697;--ico-lip:#1f7266}.ico--sky{--ico-tint:#bfeaff;--ico-shade:#4fa8d8;--ico-lip:#25719b}.ico--violet{--ico-tint:#d3c6ff;--ico-shade:#7a5ccc;--ico-lip:#4c3491}.ico--plum{--ico-tint:#d8d2e4;--ico-shade:#6a6085;--ico-lip:#3c3550}.ico--steel{--ico-tint:#e8e3f0;--ico-shade:#a99fc0;--ico-lip:#6b6285}.ico--snow{--ico-tint:#ffffff8c;--ico-shade:#fff;--ico-lip:#3c285a38}.badge-slot{line-height:0;display:inline-flex}.badge{background:var(--ico-tint);width:1.65em;height:1.65em;box-shadow:inset 0 0 0 .11em var(--ico-shade), 0 .085em 0 var(--ico-lip);vertical-align:baseline;border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.badge .ico{filter:none;font-size:.95em}button.chip{font:inherit;color:inherit;cursor:pointer;border:none;align-items:center;gap:7px;display:inline-flex}button.chip:hover{filter:brightness(1.04)}button.chip:active{transform:translateY(1px)}.badge-slot{flex:none}.badge--vacant{opacity:.5;background:0 0;box-shadow:inset 0 0 0 .11em #a99fc0}.btn .ico,.chip .ico,.tile-ico .ico,.set-ico .ico,.g-ico .ico{pointer-events:none}.ico--pop{animation:.42s cubic-bezier(.34,1.56,.64,1) both ico-pop}.ico--pulse{animation:1.6s ease-in-out infinite ico-pulse}.ico--spin{animation:9s linear infinite ico-spin}@keyframes ico-pop{0%{opacity:0;transform:scale(.2)rotate(-24deg)}60%{opacity:1;transform:scale(1.16)rotate(6deg)}to{transform:scale(1)rotate(0)}}@keyframes ico-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes ico-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ico--pop,.ico--pulse,.ico--spin{animation:none}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;color:var(--ink);-webkit-user-select:none;user-select:none;overscroll-behavior:none;-webkit-touch-callout:none;background:#bfeaff;font-family:ui-rounded,Segoe UI Rounded,Hiragino Maruwaka Gothic Pro,Varela Round,Trebuchet MS,system-ui,sans-serif;overflow:hidden}#app{position:fixed;inset:0}#game-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#ui-root{pointer-events:none;position:absolute;inset:0}.hud{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));right:calc(12px + env(safe-area-inset-right,0px));justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:absolute}.hud-group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hud-pause{pointer-events:auto;width:44px;height:44px;color:var(--ink);cursor:pointer;touch-action:manipulation;background:#fffbf5e6;border:3px solid #ffffffe6;border-radius:14px;place-items:center;display:grid;box-shadow:0 3px #3c285a2e}.hud-pause:active{transform:translateY(2px);box-shadow:0 1px #3c285a2e}.chip{background:var(--panel);letter-spacing:.04em;box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:7px;padding:7px 14px;font-size:14px;font-weight:700;line-height:1;display:inline-flex}.chip .num{font-variant-numeric:tabular-nums}.chip.big{font-size:16px}.tier{gap:4px;display:inline-flex}.tier .pip{background:#d8d2e4;border-radius:3px;width:10px;height:10px}.tier .pip.on{background:#ffd23f;box-shadow:0 0 6px #ffd23f}.life-heart{align-items:center;gap:2px;font-size:15px;display:inline-flex}.effect{border:2px solid #fff}.effect.shield{color:#3a9fd8}.effect.clock{color:#8f6fd8}.effect.shovel{color:#6f9f4f}.screen-wrap{background:radial-gradient(#1e143c00 30%,#1e143c52 100%);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.card{pointer-events:auto;background:var(--panel);box-shadow:var(--shadow);text-align:center;border:4px solid #ffffffe6;border-radius:26px;min-width:420px;max-width:min(560px,92vw);padding:30px 44px 26px;animation:.35s cubic-bezier(.34,1.56,.64,1) pop-in}@keyframes pop-in{0%{opacity:0;transform:scale(.85)translateY(14px)}}.card h1{letter-spacing:.02em;margin-bottom:4px;font-size:40px}.card h1 .sparkle{color:var(--accent)}.card h2{margin-bottom:6px;font-size:30px}.card .sub{opacity:.75;margin-bottom:16px;font-size:15px}.card .press{opacity:.8;margin-top:14px;font-size:15px}kbd{background:#fff;border:2px solid #e3dced;border-bottom-width:4px;border-radius:8px;padding:2px 9px;font-family:inherit;font-size:13px;font-weight:800}.keys{grid-template-columns:auto auto;justify-content:center;gap:8px 18px;margin:14px 0 4px;font-size:14px;display:grid}.keys .row{align-items:center;gap:6px;display:flex}.stats{text-align:left;grid-template-columns:1fr 1fr;gap:6px 26px;margin:10px 0;font-size:15px;display:grid}.stats .row{border-bottom:2px dotted #e5ddf0;justify-content:space-between;gap:18px;padding:3px 2px;display:flex}.stats .row .v{font-variant-numeric:tabular-nums;font-weight:800}.bonus{color:#e2a03f;margin-top:10px;font-size:18px;font-weight:800}.stage-label{color:var(--accent);letter-spacing:.22em;text-transform:uppercase;font-size:15px;font-weight:800}.intro-card{box-shadow:none;color:#fff;text-shadow:0 3px #3c285a66;background:0 0;border:none;min-width:0;padding:10px}.intro-card h2{font-size:44px}.intro-card .press{color:#fff;font-size:24px}.toast{background:var(--panel);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:9px;padding:10px 22px;font-size:16px;font-weight:800;animation:.25s cubic-bezier(.34,1.56,.64,1) pop-in;display:inline-flex;position:absolute;top:76px;left:50%;transform:translate(-50%)}.footer{left:calc(12px + env(safe-area-inset-left,0px));bottom:calc(10px + env(safe-area-inset-bottom,0px));right:calc(12px + env(safe-area-inset-right,0px));color:#3c3550d9;justify-content:space-between;align-items:flex-end;font-size:12.5px;font-weight:700;display:flex;position:absolute}.footer .hint,.footer .mute{background:#fffbf5b3;border-radius:10px;padding:5px 12px}.hidden{display:none!important}.menu-root{pointer-events:none;z-index:5;position:absolute;inset:0}.menu-root.game-mode{display:none}.menu-screen{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.mm{background:radial-gradient(120% 90% at 50% 0,#fffbf547 0%,#fffbf500 55%),linear-gradient(#3c285a00 60%,#3c285a24 100%);flex-direction:column;display:flex;position:absolute;inset:0}.mm-top{justify-content:space-between;align-items:flex-start;gap:10px;padding:14px 16px 0;display:flex}.mm-chips{pointer-events:auto;flex-wrap:wrap;gap:8px;display:flex}.mm-icons{pointer-events:auto;gap:8px;display:flex}.icon-btn{background:var(--panel);cursor:pointer;border:3px solid #fff;border-radius:16px;width:46px;height:46px;font-size:20px;transition:transform .12s cubic-bezier(.34,1.56,.64,1),box-shadow .12s;box-shadow:0 4px #ddd4e8,0 8px 16px #3c285a33}.icon-btn:hover{transform:translateY(-2px)rotate(-4deg)}.icon-btn:active{transform:translateY(2px);box-shadow:0 1px #ddd4e8}.mm-center{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:clamp(14px,3.4vh,30px);padding:8px;display:flex}.mm-foot{text-align:center;color:#3c3550cc;padding:10px;font-size:12.5px;font-weight:700}.mm-foot .hint{background:#fffbf5bf;border-radius:10px;padding:5px 14px}.logo-lockup{text-align:center;animation:5s ease-in-out infinite floaty}.logo-ribbon{color:#fff;letter-spacing:.26em;text-transform:uppercase;background:linear-gradient(#ffa3c2,#ff7fa8);border:3px solid #fff;border-radius:999px;margin-bottom:10px;padding:5px 16px;font-size:clamp(10px,1.6vw,13px);font-weight:900;display:inline-block;box-shadow:0 4px #d95b86,0 8px 16px #3c285a40}.logo{letter-spacing:.03em;margin:0;font-size:clamp(42px,8.5vw,82px);font-weight:900;line-height:.98}.logo span{display:block}.logo-a{color:#fff;text-shadow:-3px 0 0 var(--accent), 3px 0 0 var(--accent), 0 -3px 0 var(--accent), 0 3px 0 var(--accent), -3px -3px 0 var(--accent), 3px -3px 0 var(--accent), -3px 3px 0 var(--accent), 3px 3px 0 var(--accent), 0 8px 0 #c94f78, 0 14px 24px #3c285a66}.logo-b{color:#fff3b0;text-shadow:-3px 0 #f5a93f,3px 0 #f5a93f,0 -3px #f5a93f,0 3px #f5a93f,-3px -3px #f5a93f,3px -3px #f5a93f,-3px 3px #f5a93f,3px 3px #f5a93f,0 8px #c77e2a,0 14px 24px #3c285a66;font-size:.82em}.btn{pointer-events:auto;letter-spacing:.05em;color:#fff;text-shadow:0 2px #00000029;cursor:pointer;background:linear-gradient(180deg, var(--b1), var(--b2));box-shadow:0 5px 0 var(--b3), 0 12px 22px #3c285a47, inset 0 2px 0 #ffffff80;border:3px solid #ffffff8c;border-radius:16px;padding:13px 26px;font-family:inherit;font-size:17px;font-weight:900;transition:transform .12s cubic-bezier(.34,1.56,.64,1),box-shadow .12s,filter .15s;position:relative;overflow:hidden}.btn:after{content:"";pointer-events:none;background:linear-gradient(105deg,#fff0 0%,#ffffff73 50%,#fff0 100%);width:45%;height:100%;position:absolute;top:0;left:-80%;transform:skew(-20deg)}.btn:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-2px)scale(1.02)}.btn:hover:not(:disabled):after{animation:.7s forwards btn-sheen}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--b3), 0 4px 10px #3c285a40, inset 0 2px 0 #fff6;transform:translateY(4px)}.btn:disabled{filter:grayscale(.9)brightness(.95);opacity:.75;cursor:not-allowed}.btn:focus-visible,.tile:focus-visible,.stage-card:focus-visible,.icon-btn:focus-visible,.toggle:focus-visible,.hud-pause:focus-visible{outline-offset:3px;outline:3px dashed #ffd23f}.btn.green{--b1:#9ade72;--b2:#4fae5b;--b3:#39854a}.btn.gold{--b1:#ffd66b;--b2:#f5a93f;--b3:#c77e2a}.btn.violet{--b1:#b39bf0;--b2:#8f6fd8;--b3:#6d4fb5}.btn.blue{--b1:#8fd4f5;--b2:#4fa8d8;--b3:#3780ab}.btn.pink{--b1:#ffb0c8;--b2:#ff7fa8;--b3:#d95b86}.btn.teal{--b1:#9ff0e0;--b2:#55cdbc;--b3:#3aa697}.btn.ghost.dark{background:var(--panel);color:var(--ink);text-shadow:none;--b3:#d5cbe4;border-color:#fff}.btn.ghost.dark:hover{filter:brightness(1.02)}.btn.danger-ghost{color:#e2506a;text-shadow:none;--b3:#eec0ca;background:#fff;border-color:#fbd3da;padding:9px 18px;font-size:14px}.btn.danger-ghost.confirm{color:#fff;text-shadow:0 2px #00000029;--b3:#b0324c;background:linear-gradient(#ff8b9e,#e2506a);border-color:#ffffff8c;animation:.9s infinite pulse-warn}.btn.hero-ish{border-radius:18px;padding:14px 30px;font-size:18px}@keyframes btn-sheen{to{left:130%}}.hero-play{letter-spacing:.08em;border-radius:24px;align-items:center;gap:16px;padding:14px 38px 14px 18px;font-size:24px;animation:2.4s ease-in-out infinite hero-glow;display:flex}.hero-play b{color:#7a4a00}.hero-ico{color:#e2a03f;width:44px;height:44px;text-shadow:none;background:#ffffffd9;border-radius:50%;place-items:center;font-size:18px;display:grid;box-shadow:inset 0 -3px #3c285a1f}.hero-txt{text-align:left;flex-direction:column;line-height:1.15;display:flex}.hero-label{font-size:26px}.hero-sub{letter-spacing:.08em;opacity:.9;text-transform:uppercase;font-size:12.5px;font-weight:800}@keyframes hero-glow{0%,to{box-shadow:0 5px #c77e2a,0 12px 22px #3c285a47,0 0 #ffd23f8c,inset 0 2px #ffffff80}50%{box-shadow:0 5px #c77e2a,0 12px 22px #3c285a47,0 0 0 16px #ffd23f00,inset 0 2px #ffffff80}}.mm-tiles{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.tile{pointer-events:auto;background:var(--panel);width:104px;height:96px;box-shadow:0 5px 0 var(--t3), 0 10px 18px #3c285a38;cursor:pointer;color:var(--ink);border:4px solid #fff;border-radius:22px;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-family:inherit;transition:transform .14s cubic-bezier(.34,1.56,.64,1),box-shadow .14s;display:flex;position:relative;overflow:hidden}.tile:hover{transform:translateY(-4px)rotate(-1deg)}.tile:active{box-shadow:0 2px 0 var(--t3), 0 5px 10px #3c285a33;transform:translateY(1px)}.tile-ico{font-size:30px;line-height:1}.tile-label{letter-spacing:.05em;font-size:12px;font-weight:900}.tile-teal{--t3:#3aa697;border-bottom-color:#7ce8d8}.tile-pink{--t3:#d95b86;border-bottom-color:#ffb0c8}.tile-violet{--t3:#6d4fb5;border-bottom-color:#b39bf0}.tile-gold{--t3:#c77e2a;border-bottom-color:#ffd66b}.tile-steel{--t3:#5f6b7d;background:linear-gradient(#f4f7fb,#e2e8f1);border-bottom-color:#aebccc}.track-tabs{gap:8px;padding:10px 18px 0;display:flex}.track-tab{font:700 12px/1 var(--font,inherit);letter-spacing:.08em;text-transform:uppercase;color:#6b5b8a;cursor:pointer;background:#efe9f7;border:0;border-radius:999px;padding:8px 14px;box-shadow:0 2px #d7cbe8}.track-tab.on{color:#fff;background:#7c5fc9;box-shadow:0 2px #5a4296}.track-tab:focus-visible{outline-offset:2px;outline:3px solid #ffd166}.menu-decor{pointer-events:none;position:absolute;inset:0;overflow:hidden}.cloud{filter:blur(8px);background:#ffffffb3;border-radius:999px;width:240px;height:72px;animation:70s linear infinite cloud-drift;position:absolute}.cloud:before,.cloud:after{content:"";background:#fffc;border-radius:50%;position:absolute}.cloud:before{width:90px;height:90px;top:-38px;left:42px}.cloud:after{width:64px;height:64px;top:-24px;right:42px}.cloud-0{animation-duration:85s;animation-delay:-20s;top:12%;transform:scale(1.1)}.cloud-1{opacity:.8;animation-duration:65s;animation-delay:-45s;top:30%;transform:scale(.7)}.cloud-2{opacity:.6;animation-duration:95s;animation-delay:-70s;top:62%;transform:scale(.9)}.cloud-3{opacity:.5;animation-duration:60s;animation-delay:-8s;top:80%;transform:scale(.55)}@keyframes cloud-drift{0%{margin-left:-20vw}to{margin-left:120vw}}.twinkle{color:#fff;filter:drop-shadow(0 0 7px #fffffff2);opacity:0;font-size:15px;animation:4.2s ease-in-out infinite twinkle;position:absolute}@keyframes twinkle{0%,to{opacity:0;transform:scale(.4)rotate(0)}50%{opacity:.95;transform:scale(1.15)rotate(20deg)}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes pulse-warn{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.menu-card{pointer-events:auto;background:var(--panel);text-align:center;border:4px solid #fffffff2;border-radius:28px;width:min(560px,94vw);padding:30px 42px 24px;animation:.35s cubic-bezier(.34,1.56,.64,1) pop-in;position:relative;box-shadow:0 22px 50px #1e143c66,0 7px #3c285a24}.menu-card h1{letter-spacing:.02em;margin-bottom:2px;font-size:clamp(30px,6vw,42px)}.menu-card h2{margin-bottom:4px;font-size:clamp(26px,5vw,34px)}.card-ribbon{border:4px solid #fff;border-radius:20px;place-items:center;width:66px;height:66px;font-size:28px;display:grid;position:absolute;top:-34px;left:50%;transform:translate(-50%)rotate(-8deg);box-shadow:0 6px 14px #3c285a59}.card-ribbon.teal{background:linear-gradient(#9ff0e0,#55cdbc)}.card-ribbon.pink{background:linear-gradient(#ffb0c8,#ff7fa8)}.mini-stats{flex-wrap:wrap;justify-content:center;gap:10px;margin:8px 0 12px;display:flex}.mini-stats span{color:#3c3550bf;background:#fff;border:2px solid #efe8f6;border-radius:10px;padding:4px 12px;font-size:12.5px;font-weight:800}.v-btns{gap:11px;width:min(330px,86%);margin:16px auto 6px;display:grid}.v-btns .btn{width:100%}.h-btns{flex-wrap:wrap;justify-content:center;align-items:center;gap:11px;margin-top:16px;display:flex}.kbd-hint{opacity:.6;margin-top:12px;font-size:12px;font-weight:700}.win-crown{filter:drop-shadow(0 6px 10px #3c285a59);font-size:44px;animation:3.4s ease-in-out infinite floaty;position:absolute;top:-42px;left:50%;transform:translate(-50%)}.big-stars{justify-content:center;gap:12px;margin:4px 0 10px;display:flex}.bigstar{font-size:52px;line-height:1}.bigstar .ico{--ico-tint:#e8e3f0;--ico-shade:#d5cbe4;--ico-lip:#c2b6d8}.bigstar.will-light{opacity:0;transform:scale(.25)}.bigstar.will-light .ico{--ico-tint:#ffdf7e;--ico-shade:#e2952a;--ico-lip:#a1600d;filter:drop-shadow(0 .085em 0 var(--ico-lip)) drop-shadow(0 0 14px #ffd23fbf)}.bigstar.will-light.lit{animation:.55s cubic-bezier(.34,1.56,.64,1) forwards star-pop}@keyframes star-pop{0%{opacity:0;transform:scale(.2)rotate(-40deg)}60%{opacity:1;transform:scale(1.28)rotate(6deg)}to{opacity:1;transform:scale(1)rotate(0)}}.deny-shake{animation:.4s deny-shake}@keyframes deny-shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)rotate(-1.5deg)}40%{transform:translate(6px)rotate(1.5deg)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}.confetti{pointer-events:none;z-index:30;position:absolute;inset:0;overflow:hidden}.confetti span{font-size:22px;animation:3s linear forwards confetti-fall;position:absolute;top:-6vh}@keyframes confetti-fall{to{opacity:.4;transform:translateY(118vh)rotate(320deg)}}@media (width<=700px){.menu-card{padding:24px 20px 18px}}@media (prefers-reduced-motion:reduce){.win-crown{animation:none!important}.bigstar.will-light{opacity:1;transform:none}}.menu-modal{z-index:20;-webkit-backdrop-filter:blur(5px)saturate(1.15);backdrop-filter:blur(5px)saturate(1.15);pointer-events:auto;background:#2e224a61;justify-content:center;align-items:center;animation:.18s fade-in;display:flex;position:absolute;inset:0}@keyframes fade-in{0%{opacity:0}}.modal-card{background:var(--panel);border:4px solid #fffffff2;border-radius:26px;flex-direction:column;width:min(700px,94vw);max-height:min(88svh,780px);animation:.32s cubic-bezier(.34,1.56,.64,1) modal-pop;display:flex;overflow:hidden;box-shadow:0 24px 60px #1e143c73,0 8px #3c285a26}@keyframes modal-pop{0%{opacity:0;transform:scale(.88)translateY(18px)}}.modal-head{background:linear-gradient(180deg, color-mix(in srgb, var(--head) 82%, white), var(--head));border-bottom:4px solid #ffffffd9;flex:none;justify-content:space-between;align-items:center;padding:13px 18px;display:flex;box-shadow:inset 0 -5px #0000001f}.modal-head h2{letter-spacing:.04em;color:#fff;text-shadow:0 2px #0000002e;align-items:center;gap:10px;font-size:21px;display:flex}.head-ico{font-size:24px}.close-x{color:#fff;cursor:pointer;background:#ffffff59;border:3px solid #ffffffe6;border-radius:12px;place-items:center;width:44px;height:44px;font-size:15px;font-weight:900;transition:transform .12s,background .12s;display:grid}.close-x .ico-slot{place-items:center;display:grid}.close-x .ico svg{width:18px;height:18px}.close-x:hover{color:var(--ink);background:#ffffffd9;transform:rotate(90deg)scale(1.05)}.close-x:hover .ico{--ico-shade:#6a6085;--ico-lip:#3c3550}.modal-body{scrollbar-width:thin;padding:16px 20px;overflow:auto}.modal-foot{background:#fff6;border-top:3px dotted #e0d7ec;flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:13px 18px;display:flex}.modal-foot.center{justify-content:center}.foot-btns{flex-wrap:wrap;gap:10px;margin-left:auto;display:flex}@media (width<=560px){.foot-btns{flex:100%;gap:8px}.foot-btns .btn{flex:auto;padding:12px;font-size:14px}}.sel-info{flex-direction:column;min-width:0;line-height:1.25;display:flex}.sel-name{font-size:16px;font-weight:900}.sel-sub{color:#3c355099;font-size:12px;font-weight:700}.stage-grid{grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:14px;padding:16px 18px;display:grid;overflow:auto}.stage-card{pointer-events:auto;text-align:left;cursor:pointer;color:var(--ink);background:#fff;border:3px solid #efe8f6;border-radius:20px;flex-direction:column;gap:8px;padding:8px 8px 10px;font-family:inherit;transition:transform .14s cubic-bezier(.34,1.56,.64,1),box-shadow .14s,border-color .14s;display:flex;position:relative;box-shadow:0 5px #e7def2,0 10px 16px #3c285a29}.stage-card:hover{transform:translateY(-3px)rotate(-.5deg)}.stage-card.sel{border-color:#ffd23f;transform:translateY(-3px);box-shadow:0 5px #e2a03f,0 0 0 3px #ffd23f66,0 12px 22px #3c285a3d}.thumb{background:linear-gradient(180deg, var(--sky), color-mix(in srgb, var(--sky) 70%, white));border-radius:13px;padding:5px;display:block;position:relative;overflow:hidden}.thumb canvas{border-radius:9px;width:100%;display:block;box-shadow:0 3px 8px #3c285a40}.stage-card.locked .thumb canvas{filter:grayscale(.95)brightness(.92)}.lock-ico{filter:drop-shadow(0 3px 4px #3c285a66);background:#3c285a47;border-radius:9px;place-items:center;font-size:34px;display:grid;position:absolute;inset:5px}.sc-mark{z-index:2;background:#fffdf7f0;border-radius:9px;place-items:center;width:28px;height:28px;display:grid;position:absolute;bottom:8px;left:8px;box-shadow:0 2px #ddd4e8,0 3px 7px #3c285a38}.sc-mark.is-locked{opacity:.75}.sc-name{align-items:center;gap:7px;font-size:14.5px;font-weight:900;display:flex}.sc-no{background:var(--accent);color:#fff;border-radius:8px;padding:1px 8px;font-size:12px;box-shadow:inset 0 -2px #00000026}.sc-stars{gap:2px;display:flex}.mstar{align-items:center;font-size:16px;display:inline-flex}.mstar+.mstar{margin-left:1px}.sc-best{color:#3c35508c;font-size:11.5px;font-weight:800}.badge-new{z-index:3;color:#fff;letter-spacing:.1em;background:linear-gradient(#ff9db8,#ff6f91);border:2px solid #fff;border-radius:9px;padding:4px 9px;font-size:10px;font-weight:900;animation:1.6s ease-in-out infinite badge-wiggle;position:absolute;top:-9px;left:12px;transform:rotate(-7deg);box-shadow:0 3px 7px #3c285a4d}.badge-done{z-index:3;color:#fff;background:linear-gradient(#9ade72,#4fae5b);border:2px solid #fff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:12px;font-weight:900;display:grid;position:absolute;top:-9px;right:10px;box-shadow:0 3px 7px #3c285a4d}@keyframes badge-wiggle{0%,to{transform:rotate(-7deg)scale(1)}50%{transform:rotate(-4deg)scale(1.08)}}.settings-modal{width:min(460px,94vw)}.touch-modal{width:min(620px,94vw)}.settings-body{flex-direction:column;gap:10px;padding:18px 20px;display:flex}.set-row{background:#fff;border:3px solid #efe8f6;border-radius:16px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:10px 12px;display:grid;box-shadow:0 3px #ece5f4}.set-ico{background:#7c5ccc17;border-radius:12px;place-items:center;width:38px;height:38px;display:grid}.set-name{font-size:14.5px;font-weight:800;line-height:1.25}.set-name small{color:#3c35508c;margin-top:1px;font-size:11.5px;font-weight:700;display:block}.set-div{background:repeating-linear-gradient(90deg,#e0d7ec 0 7px,#0000 7px 13px);height:3px;margin:2px 4px}.toggle{cursor:pointer;background:#ece5f4;border:3px solid #ddd3ea;border-radius:999px;flex:none;width:54px;height:30px;padding:0;transition:background .18s,border-color .18s;position:relative}.toggle .knob{background:#fff;border-radius:50%;width:20px;height:20px;transition:left .18s cubic-bezier(.34,1.56,.64,1);position:absolute;top:50%;left:3px;transform:translateY(-50%);box-shadow:0 2px #3c285a2e}.toggle.on{background:linear-gradient(#9ade72,#4fae5b);border-color:#39854a;box-shadow:inset 0 2px #ffffff73}.toggle.on .knob{left:calc(100% - 23px)}.set-row .btn.danger-ghost{white-space:nowrap;justify-self:end}.guide-modal{width:min(720px,94vw)}.guide-body{flex-direction:column;gap:14px;padding:18px 20px;display:flex}.guide-body section{background:#fff;border:3px solid #efe8f6;border-radius:18px;padding:13px 15px 15px;box-shadow:0 3px #ece5f4}.guide-body h3{letter-spacing:.02em;align-items:center;gap:8px;margin-bottom:10px;font-size:16px;display:flex}.guide-body h3 small{letter-spacing:.04em;color:#3c355080;font-size:11px;font-weight:700}.guide-keys{gap:2px;display:grid}.guide-keys .row{border-bottom:2px dotted #ece5f4;grid-template-columns:minmax(0,316px) minmax(0,1fr);align-items:center;gap:12px;padding:5px 2px;display:grid}.guide-keys .row:last-child{border-bottom:0}.guide-keys .row>span:first-child{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.guide-keys .row>span:last-child{color:#3c3550b8;font-size:13.5px;font-weight:700}.guide-grid{grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:8px;display:grid}.g-item{background:#7c5ccc0d;border:2px solid #f0eaf8;border-radius:13px;grid-template-columns:auto 1fr;grid-template-areas:"ico name""ico note";align-items:center;column-gap:10px;padding:7px 10px;display:grid}.g-ico{background:#fff;border-radius:11px;grid-area:ico;place-items:center;width:34px;height:34px;display:grid;box-shadow:0 2px #ece5f4}.g-name{letter-spacing:.03em;grid-area:name;font-size:13px;font-weight:900}.g-name b{color:#c77e2a;font-size:11.5px}.g-note{color:#3c35509e;grid-area:note;font-size:11.5px;font-weight:600;line-height:1.3}.guide-tips{gap:7px;padding-left:22px;font-size:13.5px;line-height:1.45;display:grid}.guide-tips li{font-weight:700}.guide-tips i{color:#7a5ccc;font-weight:800}@media (width<=560px){.guide-keys .row{grid-template-columns:1fr;gap:3px}.guide-grid{grid-template-columns:1fr}}.online-modal{z-index:24}.online-card{width:min(760px,94vw)}.online-body{flex-direction:column;align-items:stretch;gap:14px;display:flex}.chip-row{align-items:center;gap:8px;display:flex}.chip-row-chips{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.chip-row-label{letter-spacing:.12em;text-transform:uppercase;color:#3c35508c;margin-right:2px;font-size:11px;font-weight:900}.chip-btn{pointer-events:auto;font:inherit;letter-spacing:.03em;color:var(--ink);cursor:pointer;background:#ffffffb8;border:2px solid #ffffffe6;border-radius:999px;min-height:44px;padding:6px 14px;font-size:13px;font-weight:800;transition:transform .1s,background .15s;box-shadow:0 3px #3c285a1f}.chip-btn:hover{background:#fff;transform:translateY(-1px)}.chip-btn.on{color:#fff;text-shadow:0 1px #0000002e;background:linear-gradient(#a68cf0,#7d5fd6);border-color:#fffc;box-shadow:0 3px #5b3fa8}.chip-btn:disabled,.chip-btn.locked{cursor:not-allowed;opacity:.5;box-shadow:none;transform:none}.chip-btn:disabled:hover,.chip-btn.locked:hover{background:#ffffffb8;transform:none}.chip-btn.locked.on:hover{background:linear-gradient(#a68cf0,#7d5fd6)}.arena-list{flex-direction:column;gap:8px;padding-right:4px;display:flex;overflow-y:auto}.arena-card{cursor:pointer;text-align:left;font:inherit;color:var(--ink);background:#ffffffa8;border:3px solid #ffffffeb;border-radius:18px;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;padding:12px 14px;transition:transform .12s,box-shadow .12s;display:grid;box-shadow:0 4px #3c285a1a}.arena-card:hover{transform:translateY(-2px);box-shadow:0 6px #3c285a24}.arena-card.is-busy{cursor:default;opacity:.62;box-shadow:none}.arena-name{letter-spacing:.01em;font-size:16px;font-weight:900}.arena-info{flex-direction:column;gap:2px;min-width:0;display:flex}.arena-filters{flex-direction:column;gap:10px;display:flex}.arena-sub,.arena-meta,.arena-note{color:#3c3550a8;font-size:12.5px}.arena-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.arena-seats{font-weight:800}.arena-size{background:#ffffffd9;border-radius:14px;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex;box-shadow:inset 0 0 0 2px #ffffffe6}.arena-nobots{letter-spacing:.08em;text-transform:uppercase;color:#5b3fa8;white-space:nowrap;background:#7e5fd629;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:900}.arena-phase{letter-spacing:.1em;text-transform:uppercase;color:#1f7266;white-space:nowrap;background:#7ce8d852;border-radius:999px;padding:4px 9px;font-size:11px;font-weight:900}.arena-phase.phase-countdown{color:#a1600d;background:#ffdf7e80}.arena-phase.phase-playing{color:#9c2740;background:#ffb3c173}.arena-phase.phase-roundOver{color:#3c3550b3;background:#3c35501f}.setup-wizard{flex-direction:column;gap:12px;display:flex}.setup-steps{flex-wrap:wrap;gap:6px;display:flex}.setup-step-chip{color:#3c355080;letter-spacing:.08em;text-transform:uppercase;background:#3c355012;border-radius:999px;align-items:center;gap:5px;padding:5px 11px;font-size:11px;font-weight:900;display:inline-flex}.setup-step-chip.done{color:#1f7266;background:#7ce8d857}.setup-step-chip.on{color:#fff;background:linear-gradient(#a68cf0,#7d5fd6);box-shadow:0 3px #5b3fa8}.setup-step{flex-direction:column;gap:12px;display:flex}.setup-lead{color:#3c3550b8;font-size:13.5px}.setup-locked{color:#3c3550a8;align-items:center;gap:6px;font-size:12.5px;display:flex}.setup-pick-note{align-items:center;gap:8px;font-size:14px;font-weight:900;display:flex}.map-groups,.map-group{flex-direction:column;gap:8px;display:flex}.map-group-label{letter-spacing:.1em;text-transform:uppercase;color:#3c35508c;align-items:baseline;gap:4px;font-size:12px;font-weight:900;display:flex}.map-group-grid{letter-spacing:.04em;color:#3c35506b;font-size:11px}.map-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.map-tile{pointer-events:auto;cursor:pointer;text-align:left;color:var(--ink);background:#fff;border:3px solid #efe8f6;border-radius:18px;flex-direction:column;gap:7px;padding:7px 7px 9px;font-family:inherit;transition:transform .14s cubic-bezier(.34,1.56,.64,1),box-shadow .14s,border-color .14s;display:flex;position:relative;box-shadow:0 4px #e7def2,0 8px 14px #3c285a24}.map-tile:hover{transform:translateY(-2px)rotate(-.4deg)}.map-tile.sel{border-color:#ffd23f;transform:translateY(-2px);box-shadow:0 4px #e2a03f,0 0 0 3px #ffd23f66,0 10px 18px #3c285a33}.map-tile .thumb{border-radius:12px}.tile-body{flex-direction:column;gap:2px;min-width:0;display:flex}.tile-name{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:900;overflow:hidden}.tile-sub{color:#3c35509e;font-size:11.5px;line-height:1.3}.tile-grid{letter-spacing:.04em;color:#3c3550b3;background:#fffdf7eb;border-radius:8px;padding:2px 7px;font-size:10px;font-weight:900;position:absolute;top:13px;right:13px;box-shadow:0 2px #ddd4e8}.map-unknown{aspect-ratio:1;text-align:center;color:#3c35508c;background:repeating-linear-gradient(45deg,#3c355014 0 6px,#0000 6px 12px);border-radius:9px;place-items:center;padding:8px;font-size:10.5px;font-weight:800;display:grid}.setup-review{align-items:flex-start;gap:14px;display:flex}.setup-review>.thumb{flex:0 0 190px;max-width:190px}.setup-review-info{flex-direction:column;gap:5px;min-width:0;display:flex}.setup-review-name{font-size:19px;font-weight:900}.setup-review-sub{color:#3c3550b3;font-size:13px}.setup-review-rows{grid-template-columns:auto 1fr;gap:4px 10px;margin-top:4px;font-size:13px;display:grid}.setup-review-rows dt{letter-spacing:.1em;text-transform:uppercase;color:#3c355080;align-self:center;font-size:10.5px;font-weight:900}.setup-review-rows dd{color:#3c3550d9}.arena-strip{text-align:left;width:100%;font:inherit;color:var(--ink);background:#ffffff80;border:3px solid #ffffffeb;border-radius:16px;align-items:center;gap:12px;padding:8px 12px;display:flex}button.arena-strip{cursor:pointer;transition:transform .12s,box-shadow .12s,background .12s;box-shadow:0 3px #3c285a1a}button.arena-strip:hover{background:#fff;transform:translateY(-1px);box-shadow:0 5px #3c285a24}.arena-strip-thumb{background:#3c35500f;border-radius:12px;flex:none;place-items:center;width:46px;height:46px;display:grid;overflow:hidden}.arena-strip-thumb .thumb{border-radius:10px;width:100%;padding:0}.arena-strip-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.arena-strip-head{flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0;display:flex}.arena-strip-map{white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:900;overflow:hidden}.arena-strip-part{letter-spacing:.04em;color:#1f7266;white-space:nowrap;background:#7ce8d84d;border-radius:999px;flex:none;padding:2px 9px;font-size:11.5px;font-weight:900}.arena-strip-note{color:#3c35509e;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.arena-strip-edit{letter-spacing:.1em;text-transform:uppercase;color:#6a6085;flex:none;align-items:center;gap:2px;margin-left:auto;font-size:10.5px;font-weight:900;display:flex}.name-field{flex-direction:column;flex:220px;gap:5px;min-width:0;display:flex}.name-field .name-input{width:100%}.name-input,.invite-input{font:inherit;color:var(--ink);background:#ffffffe6;border:3px solid #fffffff2;border-radius:14px;padding:11px 14px;font-weight:800;box-shadow:inset 0 2px 4px #3c285a1f}.name-input:focus-visible,.invite-input:focus-visible{outline:3px solid var(--accent2);outline-offset:1px}.name-hint{color:#3c355099;font-size:12px}.create-note{color:#1f7266;background:#7ce8d838;border-radius:12px;padding:9px 12px;font-size:13px}.create-warn{color:#8a5309;background:#ffdf7e57}.invite-row{align-items:center;gap:8px;display:flex}.invite-row .invite-input{flex:1;min-width:0}.room-banner{color:#3c3550c7;background:#3c355014;border-radius:14px;align-items:center;gap:8px;padding:9px 13px;font-size:13.5px;font-weight:800;display:flex}.room-banner.good{color:#2c7237;background:#c3f0a46b}.room-sides{grid-template-columns:1fr 1fr;gap:12px;display:grid}.room-side{background:#fff9;border:3px solid #ffffffeb;border-radius:18px;padding:12px}.room-side h3,.room-side .room-side-head{letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;margin:0 0 8px;font-size:14px;font-weight:900;display:flex}.side-blue{box-shadow:inset 0 -3px #4fa8d880}.side-red{box-shadow:inset 0 -3px #e2506a80}.seat-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.seat{background:#ffffffb8;border-radius:12px;align-items:center;gap:7px;padding:7px 10px;font-size:13.5px;font-weight:700;display:flex}.seat.mine{background:#7ce8d84d;box-shadow:inset 0 0 0 2px #3aa69780}.seat.empty{color:#3c355080;background:0 0;border:2px dashed #3c355038;font-weight:600}.seat-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.seat-hull{letter-spacing:.05em;color:#3c35509e;white-space:nowrap;background:#7a5ccc1f;border-radius:9px;flex:none;padding:2px 7px;font-size:10.5px;font-weight:800}.seat-tags{white-space:nowrap;letter-spacing:.06em;text-transform:uppercase;flex:none;gap:5px;font-size:10.5px;font-weight:900;display:flex}.seat-ready{letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:#3c35506b;flex:none;font-size:10.5px;font-weight:900}.seat-ready.on{color:#2f7d3a}.state-card{text-align:center;background:#ffffff9e;border:3px solid #ffffffe6;border-radius:20px;flex-direction:column;align-items:center;gap:9px;padding:22px 18px;display:flex}.state-title{font-size:17px;font-weight:900}.state-body{color:#3c3550b8;max-width:46ch;font-size:13.5px}.state-btns{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px;display:flex}.tone-ok{background:#c3f0a457}.tone-info{background:#bfeaff66}.tone-warn{background:#ffdf7e5c}.tone-bad{background:#ffb3c157}.tone-out{background:#3c35501a}.tone-wait{background:#a68cf033}.result-teams{grid-template-columns:1fr 1fr;align-items:center;gap:12px;width:100%;display:grid}.result-side{opacity:.66;background:#fff9;border-radius:16px;flex-direction:column;align-items:center;gap:3px;padding:12px 16px;display:flex}.result-side.won{opacity:1;background:#ffdf7e66;box-shadow:0 4px #a1600d40}.result-crests{gap:6px;margin-top:6px;display:flex}.result-num{font-size:26px;font-weight:900;line-height:1}.result-label{letter-spacing:.1em;text-transform:uppercase;color:#3c355099;font-size:11px;font-weight:900}.versus-hud{inset:env(safe-area-inset-top,0px) auto auto 0;z-index:4;pointer-events:none;width:100%;color:var(--ink);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px clamp(12px,3vw,30px);font-weight:800;display:flex;position:absolute}.versus-hud.hidden{display:none}.vs-side{background:var(--panel);min-width:208px;box-shadow:var(--shadow);border:3px solid #ffffffeb;border-radius:18px;padding:10px 13px 11px}.vs-team{letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:6px;font-size:13px;font-weight:900;display:flex}.vs-blue .vs-team{color:#25719b}.vs-red .vs-team{color:#9c2740}.vs-crystal{background:#3c355024;border-radius:9px;height:17px;margin:7px 0 6px;position:relative;overflow:hidden}.vs-crystal-fill{border-radius:9px;transition:width .25s;position:absolute;inset:0 auto 0 0}.vs-blue .vs-crystal-fill{background:linear-gradient(#bfeaff,#4fa8d8)}.vs-red .vs-crystal-fill{background:linear-gradient(#ffb3c1,#e2506a)}.vs-crystal-num{letter-spacing:.06em;color:#fff;text-shadow:0 1px #00000059;place-items:center;font-size:11px;font-weight:900;display:grid;position:absolute;inset:0}.vs-stats{flex-wrap:wrap;gap:4px 10px;display:flex}.vs-stat{white-space:nowrap;align-items:center;gap:3px;font-size:12px;display:inline-flex}.vs-stat b{font-size:13px}.vs-stat i{letter-spacing:.06em;text-transform:uppercase;opacity:.62;font-size:10px;font-style:normal}.vs-side.is-gone{filter:saturate(.35);opacity:.8}.vs-centre{background:var(--panel);box-shadow:var(--shadow);text-align:center;border:3px solid #ffffffeb;border-radius:16px;flex-direction:column;align-items:center;gap:2px;padding:8px 16px;display:flex}.vs-net{letter-spacing:.04em;color:#2c7237;background:#c3f0a480;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:900;display:inline-flex}.vs-net.is-warn{color:#8a5309;background:#ffdf7e99}.vs-net.is-bad{color:#9c2740;background:#ffb3c1b3}.vs-net.is-unknown{color:#3c35508c;background:#3c35501a}.vs-map{letter-spacing:.12em;text-transform:uppercase;opacity:.6;font-size:11px;font-weight:900}.vs-clock{font-size:22px;font-weight:900;line-height:1}.vs-you{opacity:.85;font-size:12px}.vs-you.is-waiting{color:#a1600d}.vs-you.is-out{color:#9c2740}.vs-result{color:#8a5309;align-items:center;gap:5px;font-size:13px;font-weight:900;display:flex}.touch-root{z-index:4;pointer-events:none;touch-action:none;-webkit-tap-highlight-color:transparent;position:absolute;inset:0}.touch-zone{pointer-events:auto;touch-action:none;position:absolute}.touch-ring{border:var(--touch-stroke,4px) solid #ffffff9e;opacity:var(--touch-opacity,.66);background:radial-gradient(circle,#7a5ccc2e 0 55%,#7a5ccc00 72%);border-radius:50%;transition:opacity .12s;position:absolute;box-shadow:inset 0 0 0 3px #3c285a1f,0 6px 16px #3c285a29}.touch-ring.is-live{opacity:1}.touch-knob{background:linear-gradient(#d3c6ff,#7a5ccc 72%);border:3px solid #ffffffd9;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px #4c3491,inset 0 2px #ffffff80}.touch-btn{pointer-events:auto;touch-action:none;color:#fff;font:inherit;opacity:var(--touch-opacity,.66);-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;border:3px solid #ffffffd9;border-radius:50%;place-content:center;gap:1px;transition:opacity .12s,transform 70ms,box-shadow 70ms;display:grid;position:absolute}.touch-btn.is-down{opacity:1;transform:translateY(3px)scale(.97)}.touch-btn:focus-visible{outline-offset:3px;opacity:1;outline:3px dashed #ffd23f}.touch-btn-label{letter-spacing:.14em;text-shadow:0 1px #00000038;font-size:9px;font-weight:900;line-height:1}.touch-btn .ico{pointer-events:none}.touch-fire{background:radial-gradient(circle at 34% 28%,#ffb3c1,#e2506a 74%);box-shadow:0 6px #9c2740,0 10px 20px #3c285a38}.touch-fire.is-down{box-shadow:0 2px #9c2740,0 4px 10px #3c285a38}.touch-fire--alt{opacity:calc(var(--touch-opacity,.66) * .78);filter:saturate(.85)}.touch-exit{opacity:calc(var(--touch-opacity,.66) * .72);background:#3c35509e;gap:0;box-shadow:0 4px #1e143c73}.touch-exit--leave{background:#9c2740b8}.touch-exit.is-armed{opacity:1;background:radial-gradient(circle at 34% 28%,#ffb3c1,#e2506a 74%);animation:.9s ease-in-out infinite touch-arm}@keyframes touch-arm{50%{box-shadow:0 4px #9c2740,0 0 0 6px #e2506a47}}.touch-pad{pointer-events:none;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:4px;display:grid;position:absolute}.touch-pad-btn{pointer-events:auto;touch-action:none;color:#fff;opacity:var(--touch-opacity,.66);background:#3c35506b;border:3px solid #ffffffb3;border-radius:16px;place-items:center;transition:opacity .12s,transform 70ms;display:grid}.touch-pad-btn.is-down{opacity:1;background:linear-gradient(#d3c6ff,#7a5ccc 72%);transform:scale(.94)}.touch-pad-btn--n{grid-area:1/2}.touch-pad-btn--e{grid-area:2/3}.touch-pad-btn--s{grid-area:3/2}.touch-pad-btn--w{grid-area:2/1}.touch-pad-btn--n .ico{transform:rotate(-90deg)}.touch-pad-btn--e .ico{transform:rotate(0)}.touch-pad-btn--s .ico{transform:rotate(90deg)}.touch-pad-btn--w .ico{transform:rotate(180deg)}.touch-rotate{z-index:4;pointer-events:auto;color:#fff;max-width:min(420px,82vw);font:inherit;text-align:center;box-shadow:var(--shadow);background:#2e224ad1;border:4px solid #ffffffe6;border-radius:22px;justify-items:center;gap:6px;padding:18px 22px;animation:.25s cubic-bezier(.34,1.56,.64,1) pop-in;display:grid;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.touch-rotate-text{font-size:16px;font-weight:900;line-height:1.3}.touch-rotate-sub{letter-spacing:.1em;text-transform:uppercase;opacity:.6;font-size:11px;font-weight:800}.touch-safe-probe{visibility:hidden;pointer-events:none;padding-top:env(safe-area-inset-top,0px);padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.touch-btn,.touch-ring,.touch-pad-btn{transition:none}.touch-exit.is-armed{animation:none}}.touch-body{gap:12px;display:grid}.trow{border-bottom:2px dashed #3c35501f;gap:6px;padding:9px 0;display:grid}.trow:last-of-type{border-bottom:0}.trow-head{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.trow-label{color:var(--ink);font-size:15px;font-weight:900}.trow-note{color:#3c35509e;font-size:12px;font-weight:700}.trow-chips{flex-wrap:wrap;gap:6px;display:flex}.trow.is-locked{opacity:.55}.pv-frame{background:linear-gradient(#bfeaff,#dff3e6);border:3px solid #ffffffe6;border-radius:16px;height:0;padding-bottom:calc(46.1823% - 2.77094px);position:relative;overflow:hidden;box-shadow:inset 0 -18px 24px #3c285a14}.pv-sky{background:repeating-linear-gradient(90deg,#3c285a0d 0 2px,#0000 2px 24px);position:absolute;inset:0}.pv{aspect-ratio:1;background:#7a5ccc6b;border:3px solid #ffffffd9;border-radius:50%;place-items:center;display:grid;position:absolute}.pv b{letter-spacing:.08em;color:#fff;text-transform:uppercase;font-size:8px;font-weight:900}.pv-fire{background:#e2506a8c}.pv-exit{background:#3c355080}.pv-zone{border:2px dashed #3c285a47;border-radius:12px;position:absolute}.pv-caption{letter-spacing:.12em;text-transform:uppercase;color:#3c355073;font-size:9px;font-weight:900;position:absolute;bottom:6px;left:8px}@media (width<=720px){.versus-hud{flex-wrap:wrap;padding:8px 10px}.vs-side{flex:44%;min-width:0}.vs-centre{flex-direction:row;order:-1;gap:10px;width:100%}.room-sides,.result-teams{grid-template-columns:1fr}.arena-card{grid-template-columns:36px 1fr;gap:8px 9px;padding:10px}.arena-card .arena-meta{grid-column:2;justify-content:flex-start}.map-grid{grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:9px}.setup-review{flex-direction:column}.setup-review>.thumb{flex:none;width:100%;max-width:none}.arena-strip{gap:9px;padding:7px 9px}.arena-strip-note{white-space:normal}.arena-strip-edit-label{display:none}.room-chat .chat-log{min-height:52px}}@media (prefers-reduced-motion:reduce){.map-tile,.arena-strip,button.arena-strip{transition:none}.map-tile:hover,.map-tile.sel,button.arena-strip:hover{transform:none}}.room-chat{border-top:2px dotted #ffffff8c;flex:auto;min-height:0;padding:4px 20px 8px;display:flex}.room-chat .chat-panel{flex:auto;min-height:0}.room-chat .chat-log{flex:auto;min-height:84px;max-height:none}.room-chat:empty{display:none}.chat-panel{flex-direction:column;gap:7px;min-width:0;display:flex}.chat-log{scrollbar-width:thin;flex-direction:column;gap:4px;max-height:148px;padding-right:4px;display:flex;overflow-y:auto}.chat-msg{color:#3c3550eb;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;font-weight:700;line-height:1.35;display:flex}.chat-msg .badge-slot{margin-right:5px}.chat-msg .badge{vertical-align:-.35em;width:1.45em;height:1.45em}.chat-msg .chat-name{letter-spacing:.03em;font-weight:900}.chat-msg .chat-name.side-blue{color:#25719b}.chat-msg .chat-name.side-red{color:#9c2740}.chat-msg.mine{background:#7ce8d829;border-radius:8px;padding:1px 6px}.chat-chan{letter-spacing:.08em;text-transform:uppercase;color:#6a6085;background:#6a608524;border-radius:6px;padding:1px 5px;font-size:9.5px;font-weight:900}.chat-msg.refused{color:#8a5309;background:#ffdf7e57;border-radius:8px;padding:2px 7px}.chat-quiet{color:#3c35506b;text-align:center;padding:10px 0;font-size:12px;font-weight:700}.chat-divider{letter-spacing:.06em;text-transform:uppercase;color:#3c355066;text-align:center;font-size:10.5px;font-weight:800}.chat-row{align-items:center;gap:8px;min-width:0;display:flex}.chat-input{min-width:0;font:inherit;color:var(--ink);background:#ffffffe6;border:3px solid #fffffff2;border-radius:12px;flex:1;padding:9px 13px;font-weight:800;box-shadow:inset 0 2px 4px #3c285a1f}.chat-input:disabled{opacity:.6}.chat-input:focus-visible{outline:3px solid var(--accent2);outline-offset:1px}.chat-channel{font:inherit;letter-spacing:.05em;color:var(--ink);background:#fffbf5f0;border:3px solid #fffffff2;border-radius:12px;flex:none;min-height:44px;padding:8px;font-weight:900}.chat-send{font:inherit;letter-spacing:.06em;color:#fff;cursor:pointer;background:linear-gradient(#4fa8d8,#25719b);border:3px solid #ffffffeb;border-radius:12px;flex:none;min-height:44px;padding:8px 15px;font-weight:900;box-shadow:0 3px #25719ba6}.chat-send:disabled{filter:saturate(.4);opacity:.7;cursor:default}.chat-send:focus-visible{outline:3px solid var(--accent2);outline-offset:1px}.chat-overlay{inset:auto auto env(safe-area-inset-bottom,10px) 12px;z-index:6;max-width:min(420px,86vw);position:absolute}.chat-overlay.hidden{display:none}.chat-variant-hud .chat-panel,.chat-panel.chat-variant-hud{box-shadow:var(--shadow);background:#fffbf5db;border:3px solid #ffffffeb;border-radius:18px;padding:10px 12px}.chat-variant-hud .chat-log{max-height:128px}.chat-variant-hud.chat-closed,.chat-variant-hud.chat-idle{box-shadow:none;background:0 0;border:none;padding:0}.chat-variant-hud.chat-closed .chat-log,.chat-variant-hud.chat-closed .chat-row,.chat-variant-hud.chat-idle .chat-log,.chat-variant-hud.chat-idle .chat-row{display:none}.chat-variant-hud .chat-chip{width:46px;height:46px;box-shadow:var(--shadow);cursor:pointer;background:#fffbf5eb;border:3px solid #ffffffeb;border-radius:50%;align-self:flex-start;font-size:19px}.chat-variant-hud.chat-closed .chat-chip,.chat-variant-hud.chat-idle .chat-chip{align-self:auto}.chat-variant-panel .chat-chip{display:none}.chat-chip:focus-visible{outline:3px solid var(--accent2);outline-offset:1px}@media (prefers-reduced-motion:reduce){.chat-variant-hud{transition:none}}@media (width<=720px){.chat-overlay{inset:auto auto calc(env(safe-area-inset-bottom,10px) + 118px) 10px;max-width:72vw}.chat-variant-hud .chat-log{max-height:96px}}.minimap{top:calc(60px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));opacity:.9;pointer-events:none;width:132px;height:132px;image-rendering:pixelated;background:#fffbf5e6;border:3px solid #ffffffe6;border-radius:14px;position:absolute;box-shadow:0 3px #3c285a2e}@media (width<=720px){.minimap{width:108px;height:108px}}.modal-card.loadout-modal{width:min(880px,96vw)}.loadout-body{flex-direction:column;display:flex}.lv-cols{grid-template-columns:minmax(240px,5fr) minmax(280px,6fr);align-items:start;gap:16px;display:grid}.lv-left{flex-direction:column;gap:8px;display:flex;position:sticky;top:0}.lv-stage{aspect-ratio:4/3;box-shadow:inset 0 -6px 0 #3c285a14, 0 5px 0 var(--t3,#c9b8e8);background:linear-gradient(#dff0fd,#e9e2f6);border:3px solid #fff;border-radius:18px;position:relative;overflow:hidden}.lv-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}.lv-canvas:active{cursor:grabbing}.lv-fallback{text-align:center;color:#3c3550ad;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:16px;font-size:13px;display:none;position:absolute;inset:0}.lv-stage.is-fallback .lv-fallback{display:flex}.lv-stage.is-fallback .lv-canvas{display:none}.lv-side-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.lv-caption{color:#3c3550ad;text-align:center;min-height:2.4em;font-size:13px;line-height:1.3}.lv-controls{flex-direction:column;gap:14px;display:flex}.lv-row{flex-direction:column;gap:8px;display:flex}.lv-row-label{letter-spacing:.03em;color:var(--ink);align-items:center;gap:7px;font-size:14px;font-weight:800;display:flex}.lv-hulls{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px;display:grid}.lv-hull{text-align:left;cursor:pointer;min-height:66px;color:var(--ink);background:#f6f1fb;border:3px solid #fff;border-radius:14px;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;font-family:inherit;transition:transform .12s,box-shadow .12s;display:flex;box-shadow:0 4px #3c285a1f}.lv-hull b{font-size:14.5px}.lv-hull small{color:#3c3550ad;font-size:10.5px;line-height:1.25}.lv-hull:hover{transform:translateY(-2px)}.lv-hull.on{background:linear-gradient(#fffbe9,#fff3c9);border-color:#ffd23f;box-shadow:0 4px #d9a83c,inset 0 0 0 3px #fff}.lv-honesty{color:#3c3550ad;font-size:11.5px;font-style:italic}.lv-swatches{flex-wrap:wrap;gap:8px;display:flex}.lv-swatch{background:var(--sw,#ccc);cursor:pointer;border:3px solid #fff;border-radius:14px;width:44px;height:44px;transition:transform .12s;position:relative;box-shadow:0 4px #3c285a2e}.lv-swatch:hover{transform:translateY(-2px)}.lv-swatch.on{outline-offset:2px;outline:3px solid #7a5ccc;box-shadow:0 4px #3c285a2e,0 0 0 3px #7a5ccc59}.lv-swatch.on:after{content:"";clip-path:polygon(38% 56%,27% 41%,36% 33%,44% 44%,68% 26%,76% 35%);background:#7a5ccc;border:2.5px solid #fff;border-radius:50%;width:20px;height:20px;position:absolute;bottom:-4px;right:-4px}.lv-chips{flex-wrap:wrap;gap:8px;display:flex}.lv-name-row{align-items:center}.lv-name-input{letter-spacing:.06em;color:var(--ink);background:#fff;border:3px solid #ddd4e8;border-radius:12px;width:158px;min-height:44px;padding:9px 12px;font-family:inherit;font-size:15px;font-weight:700;box-shadow:inset 0 3px #3c285a0f}.lv-name-input:focus{border-color:#7a5ccc;outline:3px solid #7ce8d8}@media (width<=760px){.lv-cols{grid-template-columns:1fr}.lv-left{position:static}.lv-stage{aspect-ratio:16/10}}.editor-card{width:min(1080px,96vw)}.editor-card .modal-head{flex-wrap:wrap;gap:10px}.modal-title-text{letter-spacing:.05em;color:#fff;text-shadow:0 2px #0000002e;text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:19px;font-weight:900;overflow:hidden}.modal-count{letter-spacing:.08em;color:#ffffffe6;text-transform:uppercase;font-size:12px;font-weight:800}.btn.tiny{border-width:3px;min-height:36px;padding:7px 11px;font-size:12px}.editor-body{gap:14px;padding:14px 16px;overflow:auto}.editor-new{border-bottom:3px dashed #3c285a24;flex-direction:column;gap:10px;padding-bottom:12px;display:flex}.editor-new-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.editor-hint{color:#3c355099;font-size:12px}.editor-templates-head{letter-spacing:.12em;text-transform:uppercase;color:#3c355080;font-size:11px;font-weight:900}.editor-templates{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.editor-template{pointer-events:auto;font:inherit;text-align:left;cursor:pointer;background:#fff9;border:3px solid #ffffffe6;border-radius:14px;flex-direction:column;gap:2px;padding:9px 11px;display:flex;box-shadow:0 4px #3c285a1a}.editor-template:hover{background:#fff}.editor-template:active{transform:translateY(2px);box-shadow:0 2px #3c285a1a}.et-name{color:var(--ink);font-size:14px;font-weight:900}.et-note{color:#3c3550a6;font-size:11px}.editor-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.editor-empty{text-align:center;color:#3c3550b3;grid-column:1/-1;place-items:center;gap:8px;padding:26px 10px;font-size:14px;display:grid}.editor-card-item{background:#ffffffa8;border:3px solid #fffffff2;border-radius:18px;grid-template-columns:92px minmax(0,1fr);gap:10px;padding:10px;display:grid;box-shadow:0 5px #3c285a17}.editor-card-item.has-errors{border-color:#f3b7c4}.eci-thumb{background:#efe2c6;border-radius:12px;width:92px;height:92px;position:relative;overflow:hidden}.eci-thumb canvas{object-fit:cover;width:100%;height:100%;display:block}.eci-badge{border:2px solid #fff;border-radius:50%;place-items:center;width:20px;height:20px;display:grid;position:absolute;top:4px;right:4px}.eci-badge.ok{background:#4fae5b}.eci-badge.bad{background:#e2506a}.eci-body{flex-direction:column;gap:4px;min-width:0;display:flex}.eci-name{pointer-events:auto;font:inherit;text-align:left;color:var(--ink);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0;font-size:15px;font-weight:900;overflow:hidden}.eci-name:hover{text-decoration:underline}.eci-sub{color:#3c3550a6;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.eci-actions{flex-wrap:wrap;gap:4px;margin-top:2px;display:flex}.eci-btn{pointer-events:auto;font:inherit;letter-spacing:.04em;min-height:30px;color:var(--ink);cursor:pointer;background:#ffffffbf;border:2px solid #ffffffe6;border-radius:9px;padding:5px 8px;font-size:11px;font-weight:900;box-shadow:0 3px #3c285a1f}.eci-btn:hover:not(:disabled){background:#fff}.eci-btn:active:not(:disabled){box-shadow:none;transform:translateY(2px)}.eci-btn.play{background:#c3f0a4}.eci-btn.danger{color:#7b1a2c;background:#ffb3c1}.eci-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.editor-body:has(.editor-gridcol){grid-template-columns:minmax(0,1fr) 330px;min-height:0;display:grid}@media (width>=901px){.editor-body:has(.editor-gridcol){align-items:stretch}.editor-body:has(.editor-gridcol)>*{min-height:0;overflow:auto}}.editor-gridcol{flex-direction:column;gap:8px;min-width:0;display:flex}.editor-gridhead{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.editor-textbtn{pointer-events:auto;font:inherit;letter-spacing:.06em;min-height:32px;color:var(--ink);cursor:pointer;background:#fff9;border:2px solid #3c285a2e;border-radius:10px;padding:6px 9px;font-size:11px;font-weight:900}.grid-wrap{background:#3c285a0f;border-radius:16px;justify-content:center;padding:4px;display:flex;overflow:auto}.grid-canvas{touch-action:none;cursor:crosshair;outline-offset:2px;border:3px solid #fff;border-radius:10px;box-shadow:0 6px #3c285a24}.grid-canvas:focus-visible{outline:3px solid #7a5ccc}.editor-status{letter-spacing:.04em;color:#3c3550b3;flex-wrap:wrap;gap:8px;min-height:18px;font-size:12px;font-weight:800;display:flex}.editor-status .st:after{content:" ·";color:#3c285a4d}.editor-status .st:last-child:after{content:""}.editor-rows-wrap{flex-direction:column;gap:4px;display:flex}.editor-rows{color:var(--ink);resize:vertical;background:#fff;border:3px solid #ddd4e8;border-radius:12px;min-height:96px;padding:8px 10px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;line-height:1.25}.editor-rows:focus{border-color:#7a5ccc;outline:3px solid #7ce8d8}.editor-side{flex-direction:column;gap:10px;min-width:0;display:flex}.editor-palette{flex-direction:column;gap:6px;display:flex}.editor-palette-chips{grid-template-columns:repeat(auto-fill,minmax(94px,1fr));gap:5px;display:grid}.palette-chip{pointer-events:auto;font:inherit;cursor:pointer;text-align:left;background:#ffffffb3;border:2px solid #ffffffe6;border-radius:10px;align-items:center;gap:5px;min-height:34px;padding:4px 6px;display:flex;box-shadow:0 3px #3c285a1a}.palette-chip:hover{background:#fff}.palette-chip.on{background:#fff;border-color:#7a5ccc;box-shadow:0 0 0 2px #d3c6ff,0 3px #3c285a24}.palette-swatch{border-radius:5px;flex:none;width:22px;height:22px}.pc-label{color:var(--ink);flex:auto;font-size:11px;font-weight:900}.pc-key{color:#3c35508c;border:1px solid #3c285a33;border-radius:4px;padding:0 3px;font-size:10px;font-weight:900}.editor-props{flex-direction:column;gap:6px;display:flex}.editor-slider{grid-template-columns:82px minmax(0,1fr) 58px;align-items:center;gap:6px;display:grid}.es-label{letter-spacing:.06em;text-transform:uppercase;color:#3c355099;font-size:11px;font-weight:900}.es-value{color:var(--ink);text-align:right;font-size:12px;font-weight:900}.es-input{accent-color:#7a5ccc;width:100%}.editor-roster{flex-direction:column;gap:3px;display:flex}.er-row{grid-template-columns:64px 28px 28px 28px;align-items:center;gap:4px;display:grid}.er-label{color:var(--ink);font-size:12px;font-weight:800}.er-step{pointer-events:auto;font:inherit;cursor:pointer;background:#fffc;border:2px solid #ffffffe6;border-radius:8px;min-height:30px;font-size:15px;font-weight:900;line-height:1;box-shadow:0 3px #3c285a1f}.er-step:active{box-shadow:none;transform:translateY(2px)}.er-num{text-align:center;font-size:13px;font-weight:900}.editor-name,.editor-subtitle{color:var(--ink);background:#fff;border:3px solid #ffffffe6;border-radius:11px;min-height:38px;padding:7px 10px;font-family:inherit;font-weight:800}.editor-name{width:190px;font-size:15px}.editor-subtitle{width:210px;font-size:12px;font-weight:600}.editor-name:focus,.editor-subtitle:focus{border-color:#7a5ccc;outline:3px solid #7ce8d8}.editor-dirty{letter-spacing:.1em;text-transform:uppercase;color:#fff;background:#ffffff59;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:900}.editor-dirty.on{color:#4a2a05;background:#f5a93f}.editor-dirty.fresh{color:#4a3a68;background:#ffffff8c}.editor-problems{flex-direction:column;gap:5px;display:flex}.ep-head{color:var(--ink);align-items:center;gap:6px;font-size:13px;font-weight:900;display:flex}.ep-fair{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:3px 7px;font-size:10px;font-weight:900}.ep-fair.ok{color:#2c5d33;background:#c3f0a4}.ep-fair.bad{color:#7a4a06;background:#ffe0a8}.ep-list{flex-direction:column;gap:4px;max-height:210px;display:flex;overflow:auto}.ep-none{color:#3c355099;font-size:12px}.ep-row{pointer-events:auto;font:inherit;text-align:left;cursor:pointer;background:#ffffffa6;border:2px solid #0000;border-radius:10px;grid-template-columns:10px minmax(0,1fr) auto;align-items:start;gap:6px;padding:6px 8px;display:grid}.ep-row:hover{background:#fff}.ep-row.on{background:#fff;border-color:#7a5ccc}.ep-dot{background:#efb63a;border-radius:50%;width:8px;height:8px;margin-top:5px}.ep-row.error .ep-dot{background:#e2506a}.ep-what{color:var(--ink);font-size:12px;font-weight:800}.ep-why{color:#3c3550ad;grid-column:2/4;font-size:11px}.ep-cell{color:#3c355080;font-family:ui-monospace,monospace;font-size:11px;font-weight:900}.ep-fix{align-items:center;gap:8px;display:flex}.editor-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.editor-foot-left,.editor-foot-right,.editor-armed{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.editor-foot-note{color:#3c355099;font-size:11px}.editor-metrics{color:#3c3550a6;font-size:11px;font-weight:800}.armed-q{color:#7b1a2c;font-size:12px;font-weight:900}.editor-file{display:none}@media (width<=900px){.editor-body:has(.editor-gridcol){grid-template-columns:minmax(0,1fr);align-items:start}.editor-body:has(.editor-gridcol)>*{overflow:visible}.editor-name,.editor-subtitle{width:130px}.eci-actions .eci-btn{min-height:34px}}
