.loading-indicator[data-v-fbc92018]{display:inline-flex;align-items:center;justify-content:center;gap:8px}.loading-indicator__dot[data-v-fbc92018]{width:12px;height:12px;border-radius:999px;background:linear-gradient(135deg,#ffab8e,#ff7f63);box-shadow:0 10px 18px #ff7f6333;animation:loading-indicator-bounce-fbc92018 .9s ease-in-out infinite}@keyframes loading-indicator-bounce-fbc92018{0%,to{transform:translateY(0) scale(.9);opacity:.56}50%{transform:translateY(-5px) scale(1);opacity:1}}.page-loading-overlay[data-v-01a4ef13]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:grid;place-items:center;padding:20px;background:#fffcf9b8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overscroll-behavior:contain;pointer-events:auto;touch-action:none}.page-loading-overlay__panel[data-v-01a4ef13]{width:min(320px,calc(100vw - 32px));max-height:calc(100vh - 32px);display:grid;justify-items:center;gap:14px;padding:24px 28px;overflow:auto;border-radius:20px;background:#ffffffe6;box-shadow:0 24px 48px #70594a1f;text-align:center;overscroll-behavior:contain}.page-loading-overlay__text[data-v-01a4ef13]{margin:0;color:#6a7488;font-weight:700;line-height:1.5;overflow-wrap:anywhere}.page-loading-fade-enter-active[data-v-01a4ef13],.page-loading-fade-leave-active[data-v-01a4ef13]{transition:opacity .2s ease}.page-loading-fade-enter-from[data-v-01a4ef13],.page-loading-fade-leave-to[data-v-01a4ef13]{opacity:0}.app-button[data-v-ce3a9c43]{--app-button-bg: transparent;--app-button-color: inherit;--app-button-border: none;--app-button-shadow: none;--app-button-radius: 999px;--app-button-height: 42px;--app-button-min-width: 0;--app-button-padding: 0 16px;--app-button-gap: 8px;font:inherit}.app-button[data-v-ce3a9c43]:not(.app-button--inherit){min-width:var(--app-button-min-width);min-height:var(--app-button-height);padding:var(--app-button-padding);border:var(--app-button-border);border-radius:var(--app-button-radius);background:var(--app-button-bg);color:var(--app-button-color);box-shadow:var(--app-button-shadow);display:inline-flex;align-items:center;justify-content:center;gap:var(--app-button-gap);flex:0 0 auto;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer}.app-button--xs[data-v-ce3a9c43]{--app-button-height: 30px;--app-button-padding: 0 10px;font-size:12px}.app-button--sm[data-v-ce3a9c43]{--app-button-height: 34px;--app-button-padding: 0 14px;font-size:13px}.app-button--lg[data-v-ce3a9c43]{--app-button-height: 48px;--app-button-padding: 0 24px}.app-button--rounded[data-v-ce3a9c43]{--app-button-radius: 12px}.app-button--square[data-v-ce3a9c43]{--app-button-radius: 8px}.app-button--primary.app-button--warm[data-v-ce3a9c43]{--app-button-bg: linear-gradient(135deg, #ff936f, #ff775a);--app-button-color: #fff;--app-button-shadow: 0 12px 22px rgba(255, 119, 90, .2)}.app-button--primary.app-button--teal[data-v-ce3a9c43]{--app-button-bg: linear-gradient(135deg, #1a8c7b, #2aa395);--app-button-color: #fff;--app-button-shadow: 0 14px 26px rgba(32, 149, 136, .2)}.app-button--ghost.app-button--warm[data-v-ce3a9c43]{--app-button-bg: #fff3ec;--app-button-color: #9a5c40}.app-button--ghost.app-button--teal[data-v-ce3a9c43]{--app-button-bg: rgba(226, 245, 241, .92);--app-button-color: #1c7a68}.app-button--soft.app-button--warm[data-v-ce3a9c43]{--app-button-bg: #fff1e8;--app-button-color: var(--accent-dark)}.app-button--soft.app-button--teal[data-v-ce3a9c43]{--app-button-bg: rgba(226, 245, 241, .92);--app-button-color: #1c7a68}.app-button--outline.app-button--warm[data-v-ce3a9c43]{--app-button-bg: #fff;--app-button-color: #ff5f48;--app-button-border: 1px solid #ff7b68}.app-button--danger[data-v-ce3a9c43]{--app-button-bg: linear-gradient(135deg, #c55a4e, #b04343);--app-button-color: #fff;--app-button-shadow: 0 12px 24px rgba(176, 67, 67, .22)}.app-button--neutral[data-v-ce3a9c43]{--app-button-bg: #f3f4f6;--app-button-color: #374151}.app-button--text[data-v-ce3a9c43]{--app-button-height: 0;--app-button-padding: 0;--app-button-bg: transparent;--app-button-color: #667085;--app-button-gap: 4px;min-height:0;box-shadow:none}.app-button--block[data-v-ce3a9c43]{width:100%}.app-button[data-v-ce3a9c43]:not(.app-button--inherit):disabled,.app-button--loading[data-v-ce3a9c43]{cursor:not-allowed;opacity:.62;box-shadow:none}.app-button__icon[data-v-ce3a9c43]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}@media (max-width: 430px){.app-button--icon-only-mobile[data-v-ce3a9c43] .action-label,.app-button--icon-only-mobile[data-v-ce3a9c43] .primary-action-label{display:none}}.auth-dialog-body[data-v-9ae9e2e1]{position:relative;display:grid;gap:14px;padding-top:12px}.auth-copy[data-v-9ae9e2e1],.auth-hint[data-v-9ae9e2e1],.auth-status[data-v-9ae9e2e1]{margin:0;line-height:1.6}.auth-copy[data-v-9ae9e2e1],.auth-hint[data-v-9ae9e2e1]{color:var(--muted)}.auth-field[data-v-9ae9e2e1]{display:grid;gap:8px}.auth-field span[data-v-9ae9e2e1]{font-size:14px;font-weight:700;color:var(--ink)}.code-row[data-v-9ae9e2e1]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.auth-input[data-v-9ae9e2e1]{width:100%;min-height:44px;padding:0 14px;border:1px solid rgba(255,143,107,.22);border-radius:14px;background:#ffffffe6;color:var(--ink);outline:none}.auth-input[data-v-9ae9e2e1]:focus{border-color:var(--accent);box-shadow:0 0 0 3px #ff8f6b1f}.send-code-button[data-v-9ae9e2e1],.dialog-button[data-v-9ae9e2e1]{border:none;cursor:pointer;font-weight:700;flex:0 0 auto}.send-code-button[data-v-9ae9e2e1]{min-width:120px;min-height:44px;padding:0 16px;border-radius:999px;background:#fff1e8;color:var(--accent-dark)}.send-code-button[data-v-9ae9e2e1]:disabled,.dialog-button[data-v-9ae9e2e1]:disabled{cursor:not-allowed;opacity:.7}.auth-status[data-v-9ae9e2e1]{color:#2d7d6a}.auth-status.error[data-v-9ae9e2e1]{color:#d65f45}.auth-actions[data-v-9ae9e2e1]{display:flex;justify-content:flex-end;gap:10px;width:100%}.dialog-button[data-v-9ae9e2e1]{min-width:110px;height:42px;border-radius:999px}.ghost-button[data-v-9ae9e2e1]{background:#fff3ec;color:#9a5c40}.primary-button[data-v-9ae9e2e1]{background:linear-gradient(135deg,#ff936f,#ff775a);color:#fff;box-shadow:0 12px 22px #ff775a33}@media (max-width: 560px){.code-row[data-v-9ae9e2e1]{grid-template-columns:1fr}.send-code-button[data-v-9ae9e2e1]{width:100%}}.app-user-avatar[data-v-3bf8f903]{display:inline-grid;width:var(--avatar-size);height:var(--avatar-size);place-items:center;overflow:hidden;border-radius:50%;background:#eef1f7;box-shadow:0 12px 24px #5b6d8a24,inset 0 1px #ffffffb8;line-height:1}.app-user-avatar img[data-v-3bf8f903]{width:100%;height:100%;display:block;object-fit:cover}.login-entry[data-v-f9ca5f91],.logout-button[data-v-f9ca5f91],.band-chip[data-v-f9ca5f91],.arrow-btn[data-v-f9ca5f91]{border:none;cursor:pointer;font-weight:700;flex:0 0 auto}.login-entry[data-v-f9ca5f91]{min-height:32px;padding:0 18px;border-radius:999px;background:linear-gradient(135deg,#ff9d7b,#ff7e63);color:#fff;box-shadow:0 10px 24px #ff7f6333}.user-tools[data-v-f9ca5f91]{display:flex;align-items:center;gap:10px}.logout-copy[data-v-f9ca5f91],.target-band-copy[data-v-f9ca5f91]{margin:0;color:#42526a;line-height:1.7}.logout-copy[data-v-f9ca5f91],.target-band-dialog[data-v-f9ca5f91]{padding-top:12px}.target-band-dialog[data-v-f9ca5f91]{display:grid;gap:16px}.band-carousel[data-v-f9ca5f91]{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;gap:6px;align-items:center}.arrow-btn[data-v-f9ca5f91]{width:34px;height:34px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;background:#fff2eb;color:var(--accent-dark)}.arrow-btn[data-v-f9ca5f91]:disabled,.band-chip[data-v-f9ca5f91]:disabled{cursor:not-allowed;opacity:.62}.band-grid[data-v-f9ca5f91]{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;scroll-behavior:smooth}.band-grid[data-v-f9ca5f91]::-webkit-scrollbar{display:none}.band-chip[data-v-f9ca5f91]{min-width:50px;height:32px;padding:0 8px;border:1px solid rgba(255,143,107,.2);border-radius:10px;background:#fff;color:var(--accent-dark);font-size:12px;font-weight:600}.band-chip.active[data-v-f9ca5f91]{background:var(--accent);border-color:transparent;color:#fff}.logout-actions[data-v-f9ca5f91]{display:flex;justify-content:flex-end;gap:10px;width:100%}.logout-button[data-v-f9ca5f91]{min-width:110px;height:38px;border-radius:999px}.ghost-button[data-v-f9ca5f91]{background:#fff3ec;color:#9a5c40}.primary-button[data-v-f9ca5f91]{background:linear-gradient(135deg,#ff936f,#ff775a);color:#fff;box-shadow:0 12px 22px #ff775a33}.logout-button[data-v-f9ca5f91]:disabled{cursor:not-allowed;opacity:.62;box-shadow:none}.session-banner[data-v-f9ca5f91]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:12px 16px;border-radius:18px;background:#fff4e8;border:1px solid rgba(255,143,107,.24);color:#9a5c40}.session-banner-copy[data-v-f9ca5f91]{min-width:0;line-height:1.6}.session-banner-dismiss[data-v-f9ca5f91]{border:none;border-radius:999px;padding:8px 14px;background:#ffd8c7;color:#8e5037;font-weight:700;cursor:pointer;flex:0 0 auto}@media (max-width: 640px){.session-banner[data-v-f9ca5f91]{align-items:flex-start;flex-wrap:wrap}}[data-v-f9ca5f91] .n-dialog__close{display:none}:root{--ink: #243042;--muted: #72809a;--app-header-height: 76px;--paper: #f7fafc;--surface: rgba(255, 255, 255, .92);--surface-strong: #ffffff;--glass-surface: rgba(255, 255, 255, .78);--glass-surface-strong: rgba(255, 255, 255, .88);--glass-line: rgba(255, 255, 255, .68);--glass-shadow: 0 18px 46px rgba(30, 41, 59, .08);--accent: #ff8f6b;--accent-dark: #d96946;--accent-soft: #fff0e8;--mint: #7cc8b6;--mint-soft: #eaf8f4;--line: rgba(146, 134, 120, .18);--shadow: 0 24px 60px rgba(66, 44, 31, .12);--shadow-soft: 0 14px 36px rgba(66, 44, 31, .08)}*{box-sizing:border-box}html{background:#f7fafc;width:100%;overflow-x:hidden}body{margin:0;min-width:320px;width:100%;overflow-x:hidden;color:var(--ink);font-family:Inter,HarmonyOS Sans SC,PingFang SC,Noto Sans SC,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Microsoft YaHei,sans-serif;font-size:16px;letter-spacing:0;font-synthesis-weight:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,textarea,select{font:inherit}a{color:inherit}#app{width:100%;min-height:100vh;overflow-x:hidden;padding:0;display:flex;background-color:#f7fafc;background-image:radial-gradient(circle at 10% 8%,rgba(125,211,252,.045),transparent 32%),radial-gradient(circle at 82% 4%,rgba(147,197,253,.05),transparent 34%),radial-gradient(circle at 88% 42%,rgba(45,212,191,.035),transparent 36%),linear-gradient(180deg,#f9fcffe6,#f8fafcf5),url(/assets/practice_bg-Bfae61Rj.webp);background-repeat:no-repeat;background-position:center 76px;background-size:max(1440px,100%) auto;background-attachment:fixed}.app-shell{width:100%;min-width:0;overflow-x:hidden;max-width:none;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;gap:0;flex:1;padding-top:var(--app-header-height)}.app-header{width:100%;max-width:100%;position:fixed;top:0;left:0;right:0;z-index:20;display:flex;justify-content:space-between;align-items:center;gap:28px;min-height:var(--app-header-height);padding:0 clamp(24px,4vw,56px);border:0;border-bottom:1px solid rgba(15,23,42,.08);border-radius:0;background:linear-gradient(135deg,#ffffffe6,#f8fbffd6),radial-gradient(circle at 8% 20%,rgba(125,211,252,.04),transparent 34%),radial-gradient(circle at 88% 0%,rgba(147,197,253,.04),transparent 32%);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 10px 26px #0f172a0d;min-width:0}.brand-link{min-width:0;text-decoration:none}.brand{display:flex;align-items:center;min-width:0}.brand-mark{width:45px;height:45px;display:block;flex:0 0 auto}.brand-meta{display:grid;min-width:0}.brand-title{display:block;width:auto;height:45px;max-width:170px;object-fit:contain}.brand-subtitle{display:none;font-size:13px;color:var(--muted)}.top-nav{display:flex;align-items:stretch;gap:34px;min-height:76px;margin-right:auto;font-size:18px}.top-nav a{position:relative;display:inline-flex;align-items:center;text-decoration:none;color:#172033}.top-nav a.router-link-active{color:#ff5f48}.top-nav a.router-link-active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;border-radius:999px;background:#ff5f48}.user-entry{border:none;background:transparent;border-radius:999px;padding:4px 0;display:flex;align-items:center;gap:12px;cursor:pointer;box-shadow:none;min-width:0}.user-avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#ffba92);color:#fff;font-weight:800}.user-copy{display:grid;text-align:left;line-height:1.15}.user-copy strong{font-size:14px;color:var(--ink)}.user-chevron{color:#7b8496}.user-copy small{font-size:12px;color:var(--muted)}.app-main{width:100%;max-width:100%;display:flex;flex-direction:column;flex:1;min-width:0;min-height:0;overflow:visible;overflow-x:hidden;padding:28px clamp(24px,4vw,56px) 42px}.app-main>*{width:100%;min-width:0}.app-page{min-width:0;width:100%}.app-page>*{min-width:0}.app-page-fill{flex:1 1 auto;min-height:0;display:flex}.app-page-fill>*{flex:1 1 auto;min-height:0}.bottom-nav{display:none}@media (min-width: 1181px) and (max-width: 1360px){.app-header{padding:0 40px}.app-main{padding:28px 40px 42px}}@media (min-width: 721px) and (max-width: 1180px){.app-header{gap:22px;min-height:var(--app-header-height);padding:0 28px}.brand-mark{width:45px;height:45px}.brand-title{height:40px;max-width:154px}.top-nav{gap:28px;min-width:0}.user-entry{gap:10px}.user-copy strong{max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-main{padding:28px 28px 38px}}@media (max-width: 720px){:root{--app-header-height: 68px}#app{padding:0;background-color:#f6f9fc;background-image:radial-gradient(circle at 16% 2%,rgba(255,111,87,.07),transparent 30%),radial-gradient(circle at 84% 8%,rgba(255,184,107,.08),transparent 34%),radial-gradient(circle at 88% 42%,rgba(255,143,107,.05),transparent 36%),linear-gradient(180deg,#fffdfbd6,#fffefcf5),url(/assets/practice_bg-Bfae61Rj.webp);background-repeat:no-repeat;background-position:center 70px;background-size:auto 430px;background-attachment:fixed}.app-shell{gap:0}.app-header{position:fixed;top:0;width:100vw;max-width:100vw;min-height:var(--app-header-height);padding:12px 24px 8px;gap:12px;border-bottom:none;box-shadow:0 16px 34px #1e293b0f;background:linear-gradient(135deg,#ffffffe6,#fffcf9d1),radial-gradient(circle at 7% 25%,rgba(255,111,87,.06),transparent 38%),radial-gradient(circle at 76% 0%,rgba(255,184,107,.05),transparent 34%);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);overflow:hidden}.app-header{position:fixed}.user-tools{position:absolute;right:24px;top:50%;transform:translateY(-50%);max-width:178px}.login-entry{position:absolute;right:24px;top:50%;transform:translateY(-50%);min-width:64px;min-height:36px;padding:0 14px}.user-entry{flex-direction:row-reverse}.top-nav,.brand-subtitle,.user-copy small,.user-chevron{display:none}.brand-title{height:45px;max-width:146px}.user-entry{padding:0;gap:8px;min-height:42px;align-items:center;min-width:0}.user-tools,.user-copy{min-width:0}.user-copy strong{display:block;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-main{padding:0 6px 84px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(4,1fr);min-height:72px;padding:4px 10px calc(8px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.7);background:#ffffffd6;box-shadow:0 -14px 34px #0f172a1a;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.bottom-nav-item{position:relative;display:grid;place-items:center;align-content:center;gap:4px;color:#6b7280;text-decoration:none;font-size:12px;font-weight:700;border-radius:8px;transition:color .18s ease,background .18s ease,transform .18s ease}.bottom-nav-item .n-icon,.bottom-nav-item svg{width:25px;height:25px}.bottom-nav-item.router-link-active{color:#ff5f48;background:linear-gradient(180deg,#ff6f5721,#ffffff38);box-shadow:inset 0 0 0 1px #ff6f571f}}@media (max-width: 560px){:root{--app-header-height: 64px}.app-header{min-height:var(--app-header-height);padding:10px 20px 8px}.brand-mark{width:40px;height:40px}.brand-title{height:40px;max-width:130px}.user-entry{gap:8px;min-height:34px}.user-avatar{width:34px;height:34px}}
