#app{min-height:100dvh}.menu[data-v-fa7886c4]{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(255,180,84,.1) 0,transparent 60%),var(--c-void)}.menu-body[data-v-fa7886c4]{flex:1 1 auto;width:min(100%,46rem);margin:0 auto;padding:1.5rem 1.5rem 2.5rem;display:flex;flex-direction:column;gap:1.1rem}.setup[data-v-fa7886c4]{display:flex;flex-direction:column;gap:1.25rem;padding:1.25rem}.pack-row[data-v-fa7886c4]{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem}.shell-user[data-v-fa7886c4]{font-size:var(--fs-sm);color:var(--c-text-dim);font-weight:600}.pack-info[data-v-fa7886c4]{text-align:center;min-width:0}.pack-kicker[data-v-fa7886c4]{margin:0 0 .4rem;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--c-text-mute)}.pack-name[data-v-fa7886c4]{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.03em;color:var(--c-text);line-height:1.05;overflow:hidden;text-overflow:ellipsis}.pack-meta[data-v-fa7886c4]{margin:.5rem 0 0;font-size:var(--fs-sm);color:var(--c-text-dim)}.pack-error[data-v-fa7886c4]{margin:.5rem 0 0;font-size:var(--fs-sm);color:var(--c-danger)}.pack-nav[data-v-fa7886c4]{width:3rem;height:3rem;display:grid;place-items:center;font-size:1.1rem;color:var(--c-text-dim);background:var(--c-surface-2);border:1px solid var(--c-line);border-radius:var(--r-pill);cursor:pointer;transition:all var(--t-med) var(--ease-out)}.pack-nav[data-v-fa7886c4]:hover{color:#2b1a05;background:linear-gradient(180deg,var(--c-amber-hi),var(--c-amber));border-color:var(--c-amber-lo);transform:scale(1.06);box-shadow:var(--glow-amber)}.groups[data-v-fa7886c4]{display:flex;flex-wrap:wrap;gap:.6rem}.group-chip[data-v-fa7886c4]{flex:1 1 9rem;display:grid;gap:.2rem;padding:.75rem 1rem;text-align:left;background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-md);cursor:pointer;transition:all var(--t-med) var(--ease-out)}.group-chip[data-v-fa7886c4]:hover{border-color:var(--c-amber);transform:translateY(-2px);box-shadow:var(--sh-2)}.group-chip.is-active[data-v-fa7886c4]{background:linear-gradient(180deg,var(--c-surface-3),var(--c-surface-2));border-color:var(--c-amber);box-shadow:var(--glow-amber)}.group-name[data-v-fa7886c4]{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;color:var(--c-text)}.group-count[data-v-fa7886c4]{font-size:var(--fs-xs);font-weight:600;color:var(--c-text-dim)}.group-chip.is-active .group-name[data-v-fa7886c4]{color:var(--c-amber)}.start[data-v-fa7886c4]{display:grid;gap:.55rem;justify-items:center;padding-top:.15rem}.start-btn[data-v-fa7886c4]{padding:.85rem 2.75rem;font-size:var(--fs-lg)}.start-hint[data-v-fa7886c4]{margin:0;font-size:var(--fs-xs);color:var(--c-text-mute);text-align:center}.art[data-v-fa7886c4]{margin:0;padding:1.5rem 1.5rem 1.1rem;display:grid;gap:.8rem;justify-items:center;background:repeating-linear-gradient(0deg,hsla(0,0%,100%,.012),hsla(0,0%,100%,.012) 1px,transparent 0,transparent 3px),linear-gradient(180deg,rgba(255,180,84,.06),transparent 72%);border:1px solid var(--c-line-soft);border-radius:var(--r-lg);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.04)}.art-logo[data-v-fa7886c4]{max-width:min(100%,30rem);height:auto;image-rendering:pixelated;filter:drop-shadow(0 6px 16px rgba(0,0,0,.55))}.art-note[data-v-fa7886c4]{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--c-text-dim);text-align:center}@media (max-width:560px){.pack-name[data-v-fa7886c4]{font-size:var(--fs-xl)}.pack-nav[data-v-fa7886c4]{width:2.5rem;height:2.5rem}.menu-body[data-v-fa7886c4]{padding:1.25rem 1rem 2rem}.art-logo[data-v-fa7886c4]{max-width:100%}}.touch-controls[data-v-285c2d37]{position:fixed;bottom:0;left:0;right:0;background:rgba(0,0,0,.85);padding:8px;display:flex;flex-direction:column;gap:6px;z-index:1000;border-top:2px solid #00ff41;-moz-user-select:none;user-select:none;-webkit-user-select:none;touch-action:manipulation}.skill-row[data-v-285c2d37]{display:flex;justify-content:space-around;gap:4px}.skill-btn[data-v-285c2d37]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1a1a2e;border:1px solid #00ff41;color:#00ff41;padding:6px 2px;border-radius:4px;font-size:.85em;min-height:50px;transition:all .1s}.skill-btn.active[data-v-285c2d37],.skill-btn[data-v-285c2d37]:active{background:#00ff41;color:#0f0f23;transform:scale(.95)}.skill-icon[data-v-285c2d37]{font-size:1.2em}.skill-count[data-v-285c2d37]{font-size:.75em;font-weight:700;margin-top:2px}.action-row[data-v-285c2d37]{display:flex;justify-content:center;gap:20px}.action-btn[data-v-285c2d37]{background:#f33;color:#fff;border:none;padding:10px 20px;border-radius:4px;font-size:1.2em;min-width:70px}.action-btn[data-v-285c2d37]:active{background:#c00;transform:scale(.95)}@media (min-width:769px){.touch-controls[data-v-285c2d37]{display:none}}@media (max-width:768px){.touch-controls[data-v-285c2d37]{display:flex}}.game-shell[data-v-f8242772]{position:fixed;inset:0;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;overflow:hidden;margin:0;padding:0}.hud[data-v-f8242772]{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;padding:6px 12px;box-sizing:border-box;-moz-user-select:none;user-select:none;-webkit-user-select:none}.hud-top[data-v-f8242772]{justify-content:space-between}.hud-bottom[data-v-f8242772]{justify-content:center}.hud-level[data-v-f8242772],.hud-stat[data-v-f8242772]{display:flex;align-items:baseline;gap:5px;white-space:nowrap}.hud-stats[data-v-f8242772]{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;min-width:0}.hud-level-name[data-v-f8242772]{overflow:hidden;text-overflow:ellipsis;max-width:30vw}.hud-actions[data-v-f8242772],.hud-audio[data-v-f8242772],.hud-nav[data-v-f8242772]{display:flex;align-items:center;gap:6px;white-space:nowrap}.hud-btn[data-v-f8242772]{padding:4px 8px;line-height:1.1}.hud-notice[data-v-f8242772]{flex:1 0 100%;margin:2px 0 0;text-align:center}.stage-wrap[data-v-f8242772]{flex:1 1 auto;position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;overflow:hidden}.game-canvas[data-v-f8242772]{display:block;border:0;width:800px;height:480px;image-rendering:pixelated;image-rendering:crisp-edges;image-rendering:-moz-crisp-edges;touch-action:none}@media (max-height:420px){.hud[data-v-f8242772]{padding:2px 8px;gap:2px 10px}}@media (max-width:768px) and (pointer:coarse){.hud-bottom[data-v-f8242772]{padding-bottom:116px}}.login[data-v-1bef7f78]{position:relative;min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:1.5rem;background:var(--c-void);overflow:hidden}.login-glow[data-v-1bef7f78]{position:absolute;inset:-20%;background:radial-gradient(circle at 28% 22%,rgba(255,180,84,.16) 0,transparent 42%),radial-gradient(circle at 74% 76%,rgba(79,214,230,.13) 0,transparent 46%);filter:blur(6px);pointer-events:none}.login-card[data-v-1bef7f78]{position:relative;width:min(100%,25rem);padding:2.25rem 2rem 1.75rem;text-align:center;animation:card-in-1bef7f78 var(--t-slow) var(--ease-out) both}@keyframes card-in-1bef7f78{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}.login-mark[data-v-1bef7f78]{font-size:2.5rem;line-height:1;margin-bottom:.6rem;filter:drop-shadow(0 6px 14px rgba(255,180,84,.28))}.login-title[data-v-1bef7f78]{font-family:var(--font-display);font-size:var(--fs-4xl);font-weight:800;letter-spacing:-.045em;color:var(--c-text);line-height:1}.login-title em[data-v-1bef7f78]{font-style:normal;color:var(--c-amber)}.login-tag[data-v-1bef7f78]{margin:.5rem 0 1.75rem;font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--c-text-mute)}.login-form[data-v-1bef7f78]{display:grid;gap:.9rem;text-align:left}.field[data-v-1bef7f78]{display:grid;gap:.35rem}.field-label[data-v-1bef7f78]{font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--c-text-mute)}.field input[data-v-1bef7f78]{width:100%;padding:.7rem .85rem;font-family:var(--font-ui);font-size:var(--fs-base);color:var(--c-text);background:var(--c-void);border:1px solid var(--c-line);border-radius:var(--r-md);transition:border-color var(--t-fast) linear,box-shadow var(--t-fast) linear}.field input[data-v-1bef7f78]::-moz-placeholder{color:var(--c-text-mute)}.field input[data-v-1bef7f78]::placeholder{color:var(--c-text-mute)}.field input[data-v-1bef7f78]:focus{outline:none;border-color:var(--c-amber);box-shadow:var(--glow-amber)}.field input[data-v-1bef7f78]:disabled{opacity:.5}.login-submit[data-v-1bef7f78]{margin-top:.4rem;padding:.8rem 1rem;font-size:var(--fs-base);width:100%}.login-error[data-v-1bef7f78]{margin:0;font-size:var(--fs-sm);color:var(--c-danger);text-align:center}.login-foot[data-v-1bef7f78]{margin:1.5rem 0 0;font-size:var(--fs-2xs);color:var(--c-text-mute);letter-spacing:.03em}@media (max-width:420px){.login-card[data-v-1bef7f78]{padding:1.75rem 1.25rem 1.35rem}.login-title[data-v-1bef7f78]{font-size:var(--fs-3xl)}}@font-face{font-family:Outfit;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/outfit-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Outfit;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/outfit-latin-ext.woff2) format("woff2");unicode-range:u+0100-024f,u+0259,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+2000-206f,u+2074,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-ext.woff2) format("woff2");unicode-range:u+0100-024f,u+0259,u+1e??,u+2020,u+20a0-20ab,u+20ad-20cf,u+2113,u+2c60-2c7f,u+a720-a7ff}:root{--c-void:#0a0710;--c-bg:#120d1c;--c-surface:#1a1426;--c-surface-2:#241b33;--c-surface-3:#2f2440;--c-line:#372a4d;--c-line-soft:#2a2039;--c-text:#f2ecfa;--c-text-dim:#c9bfdb;--c-text-mute:#a99cbe;--c-amber:#ffb454;--c-amber-hi:#ffc978;--c-amber-lo:#e08c1f;--c-cyan:#4fd6e6;--c-cyan-lo:#1f8fa3;--c-magenta:#e56ac1;--c-danger:#ff6b6b;--c-success:#5fe08a;--c-focus:var(--c-cyan);--c-interactive:var(--c-amber);--font-display:"Outfit","Segoe UI",system-ui,-apple-system,sans-serif;--font-ui:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;--font-mono:ui-monospace,"SF Mono","Cascadia Code",Menlo,monospace;--fs-2xs:0.8125rem;--fs-xs:0.875rem;--fs-sm:0.9375rem;--fs-base:0.9375rem;--fs-lg:1.0625rem;--fs-xl:1.375rem;--fs-2xl:1.875rem;--fs-3xl:2.5rem;--fs-4xl:3.5rem;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--r-pill:999px;--sh-1:0 1px 2px rgba(0,0,0,0.4);--sh-2:0 4px 12px rgba(0,0,0,0.45);--sh-3:0 12px 32px rgba(0,0,0,0.55);--glow-amber:0 0 0 1px rgba(255,180,84,0.35),0 4px 20px rgba(255,180,84,0.18);--glow-cyan:0 0 0 1px rgba(79,214,230,0.35),0 4px 20px rgba(79,214,230,0.16);--ease-out:cubic-bezier(0.22,1,0.36,1);--ease-spring:cubic-bezier(0.34,1.56,0.64,1);--t-fast:120ms;--t-med:220ms;--t-slow:380ms}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--c-void);color:var(--c-text);font-family:var(--font-ui);font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}#app{min-height:100%}#app:has(.game-shell){position:fixed;inset:0;min-height:0;height:100%;max-height:100%;overflow:hidden;touch-action:none}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;margin:0;line-height:1.12}:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px;border-radius:var(--r-sm)}.btn{--btn-bg:var(--c-surface-2);--btn-fg:var(--c-text);--btn-edge:var(--c-line);display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.5em .9em;font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:600;line-height:1.1;color:var(--btn-fg);background:var(--btn-bg);border:1px solid var(--btn-edge);border-radius:var(--r-md);cursor:pointer;-moz-user-select:none;user-select:none;-webkit-user-select:none;transition:transform var(--t-fast) var(--ease-out),background-color var(--t-fast) linear,border-color var(--t-fast) linear,box-shadow var(--t-fast) linear}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--sh-2);border-color:var(--c-amber)}.btn:active:not(:disabled){transform:translateY(0);box-shadow:var(--sh-1)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{--btn-bg:linear-gradient(180deg,var(--c-amber-hi),var(--c-amber));--btn-fg:#2b1a05;--btn-edge:var(--c-amber-lo);font-weight:700;box-shadow:var(--glow-amber)}.btn--primary:hover:not(:disabled){--btn-bg:linear-gradient(180deg,#ffd79b,var(--c-amber-hi));border-color:var(--c-amber-hi)}.btn--ghost{--btn-bg:transparent;--btn-edge:var(--c-line)}.btn--ghost:hover:not(:disabled){--btn-bg:var(--c-surface-2)}.panel{border:1px solid var(--c-line-soft);border-radius:var(--r-lg);box-shadow:var(--sh-2)}.hud,.panel{background:linear-gradient(180deg,var(--c-surface),var(--c-bg))}.hud{color:var(--c-text-dim);font-family:var(--font-ui);font-size:var(--fs-sm);letter-spacing:.01em;box-shadow:var(--sh-1);z-index:2}.hud-top{border-bottom:1px solid var(--c-line)}.hud-bottom{border-top:1px solid var(--c-line)}.hud-label{font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--c-text-mute)}.hud-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-base);font-weight:600;color:var(--c-text)}.hud-sub{font-size:var(--fs-2xs);color:var(--c-text-mute)}.hud-level-name{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:700;color:var(--c-amber);letter-spacing:-.01em}.hud-stat{padding:.15rem .6rem;border-left:1px solid var(--c-line-soft)}.hud-stats>.hud-stat:first-child{border-left:0;padding-left:0}.hud-stat-time .hud-value{font-size:var(--fs-lg);letter-spacing:.02em}.hud-stats .hud-value{letter-spacing:.015em}.hud-stat-time.is-warning .hud-value{color:var(--c-danger);animation:hud-pulse 1s ease-in-out infinite}@keyframes hud-pulse{0%,to{opacity:1}50%{opacity:.45}}.hud-stat-speed .hud-value{color:var(--c-cyan)}.hud-stat-skill .hud-value{color:var(--c-magenta)}.hud-btn{font-family:var(--font-ui);font-size:var(--fs-sm);font-weight:600;border:1px solid var(--c-line);border-radius:var(--r-sm);padding:.5em .95em;cursor:pointer;transition:all var(--t-fast) var(--ease-out)}.hud-btn,.hud-btn:hover{color:var(--c-text);background:var(--c-surface-3)}.hud-btn:hover{border-color:var(--c-amber);transform:translateY(-1px);box-shadow:var(--sh-2)}.hud-btn:disabled{opacity:.45;cursor:not-allowed}.hud-btn.is-active{background:linear-gradient(180deg,var(--c-amber-hi),var(--c-amber));color:#2b1a05;border-color:var(--c-amber-lo);font-weight:700}.hud-btn-icon{min-width:2.2em;font-size:var(--fs-base);line-height:1}.hud-bottom .hud-nav{padding:.3rem .5rem;background:rgba(0,0,0,.22);border:1px solid var(--c-line-soft);border-radius:var(--r-md)}.hud-scale{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--fs-xs);font-weight:600;color:var(--c-cyan);padding:.3em .6em;border-radius:var(--r-sm);background:var(--c-surface-2);border:1px solid var(--c-line-soft);align-self:center}.hud-notice{color:var(--c-amber);font-size:var(--fs-xs)}kbd{font-family:var(--font-mono);font-size:.85em;padding:.1em .35em;border-radius:4px;background:rgba(0,0,0,.35);border:1px solid var(--c-line);color:var(--c-text-dim)}.stage-wrap{background:radial-gradient(ellipse at center,#1a1326 0,var(--c-void) 78%)}.shell-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.5rem;background:linear-gradient(180deg,var(--c-surface),var(--c-bg));border-bottom:1px solid var(--c-line)}.shell-title{display:flex;align-items:baseline;gap:.6rem;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;color:var(--c-text);letter-spacing:-.02em}.shell-title .accent{color:var(--c-amber)}.shell-sub{font-family:var(--font-ui);font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--c-text-dim)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.hud-back,a.btn,a.hud-btn{text-decoration:none}.hud-back{display:inline-grid;place-items:center}