.base-icon[data-v-d0fab1f2]{flex-shrink:0;display:inline-block;vertical-align:middle}.avatar[data-v-2c3b8953]{display:flex;align-items:center;justify-content:center;font-weight:var(--fw-black);flex-shrink:0}.code-label[data-v-15142248]{margin-bottom:var(--sp-8);display:block}.hidden-code-input[data-v-15142248]{position:absolute;opacity:0;height:0;width:0}.code-cells[data-v-15142248]{display:flex;gap:7px}.code-cell[data-v-15142248]{cursor:text;flex:1;aspect-ratio:1 / 1.15;border-radius:12px;background:#16203366;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:var(--fs-24);font-weight:var(--fw-black);font-family:var(--font-mono);color:#fff}.code-cell.filled[data-v-15142248]{background:var(--bg-2);border-color:#ffb45480}.code-cell.active[data-v-15142248]{border:2px solid var(--orange)}.code-cell .caret[data-v-15142248]{width:2px;height:26px;background:var(--orange);border-radius:1px;animation:pulse 1.1s ease-in-out infinite}.code-status[data-v-15142248]{margin-top:var(--sp-16);text-align:center;color:var(--fg-3);font-size:var(--fs-13);font-weight:var(--fw-semibold)}.code-problem[data-v-15142248]{margin-top:var(--sp-16);text-align:center;border-color:#ff6b9d66;background:#ff6b9d0f}.problem-title[data-v-15142248]{font-size:var(--fs-13);font-weight:var(--fw-bold);color:var(--pink)}.problem-sub[data-v-15142248]{font-size:var(--fs-12);color:var(--fg-3);margin-top:var(--sp-4)}.retry-link[data-v-15142248]{color:var(--orange);font-weight:var(--fw-bold);text-decoration:underline;font-size:inherit;padding:0}.found-label[data-v-15142248]{color:var(--green);display:flex;align-items:center;gap:var(--sp-6);margin:var(--sp-20) 0 var(--sp-8);font-size:var(--fs-12);font-weight:var(--fw-heavy);letter-spacing:.5px;text-transform:uppercase}.scan-btn[data-v-ae1f187f]{margin-top:var(--sp-12);gap:var(--sp-8)}.scan-backdrop[data-v-ae1f187f]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#050912e0;display:flex;align-items:center;justify-content:center;padding:16px}.scan-sheet[data-v-ae1f187f]{width:100%;max-width:420px;background:var(--bg-2);border:1px solid var(--line);border-radius:18px;padding:var(--sp-16)}.scan-head[data-v-ae1f187f]{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-12);margin-bottom:var(--sp-12)}.scan-title[data-v-ae1f187f]{font-size:var(--fs-16);font-weight:var(--fw-black)}.scan-close[data-v-ae1f187f]{display:flex;padding:6px;color:var(--fg-3);border-radius:8px}.scan-view[data-v-ae1f187f]{position:relative;border-radius:12px;overflow:hidden;background:#000;aspect-ratio:1}.scan-video[data-v-ae1f187f]{width:100%;height:100%;object-fit:cover;display:block}.scan-frame[data-v-ae1f187f]{position:absolute;top:15%;right:15%;bottom:15%;left:15%;border:3px solid var(--orange);border-radius:14px;box-shadow:0 0 0 999px #00000059}.scan-status[data-v-ae1f187f]{position:absolute;left:0;right:0;bottom:0;padding:var(--sp-12);text-align:center;font-size:var(--fs-13);font-weight:var(--fw-bold);color:#fff;background:linear-gradient(transparent,#000000b3)}.scan-problem[data-v-ae1f187f]{text-align:center;padding:var(--sp-16) var(--sp-8)}.scan-problem-title[data-v-ae1f187f]{font-size:var(--fs-16);font-weight:var(--fw-black);color:var(--pink)}.scan-problem-body[data-v-ae1f187f]{margin-top:var(--sp-8);font-size:var(--fs-13);color:var(--fg-3);line-height:1.45}.scan-problem-actions[data-v-ae1f187f]{display:flex;justify-content:center;gap:var(--sp-8);margin-top:var(--sp-16)}.recovery-card[data-v-aa5f40de]{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-12);padding:var(--sp-16);border-radius:var(--radius-sm);background:var(--bg-3);border:1px dashed var(--line-strong)}.recovery-code[data-v-aa5f40de]{font-family:var(--font-mono);font-size:var(--fs-18);font-weight:var(--fw-heavy);letter-spacing:1px;word-break:break-all}.recovery-copy[data-v-aa5f40de]{flex-shrink:0;min-height:44px}.welcome-wall[data-v-8561c955]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;justify-content:center;z-index:9999;padding:var(--sp-24) var(--sp-16);overflow-y:auto}.welcome-wrap[data-v-8561c955]{width:100%;max-width:400px;margin:auto 0;padding:var(--sp-8) 0}.welcome-brand[data-v-8561c955]{text-align:center;margin-bottom:var(--sp-20)}.brand-mark[data-v-8561c955]{font-family:Georgia,serif;font-size:var(--fs-40);font-weight:var(--fw-black);font-style:italic;color:var(--primary);letter-spacing:-1.5px}.brand-sub[data-v-8561c955]{font-size:var(--fs-11);font-weight:var(--fw-heavy);color:var(--fg-4);letter-spacing:1.5px;text-transform:uppercase;margin-top:var(--sp-4)}.welcome-lead[data-v-8561c955]{text-align:center;font-size:var(--fs-15);font-weight:var(--fw-semibold);color:var(--fg-2);margin-bottom:var(--sp-20);line-height:1.4}.door[data-v-8561c955]{display:flex;align-items:center;gap:var(--sp-12);width:100%;padding:var(--sp-14) var(--sp-16);border-radius:var(--radius-sm);background:var(--bg-2);border:1.5px solid var(--line);text-align:left;color:var(--fg-3)}.door-ic[data-v-8561c955]{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-18);flex-shrink:0}.door-body[data-v-8561c955]{flex:1;min-width:0;display:flex;flex-direction:column}.door-title[data-v-8561c955]{font-size:var(--fs-15);font-weight:var(--fw-heavy);color:var(--fg)}.door-sub[data-v-8561c955]{font-size:var(--fs-12);color:var(--fg-3);font-weight:var(--fw-semibold);margin-top:2px}.door-learner[data-v-8561c955]{border-color:#ffb45473;background:#ffb45412}.door-learner .door-ic[data-v-8561c955]{background:var(--orange);color:var(--bg)}.door-teacher .door-ic[data-v-8561c955]{background:#ffb45429;color:var(--orange)}.welcome-or[data-v-8561c955]{text-align:center;margin:var(--sp-10) 0;font-size:var(--fs-12);color:var(--fg-4);font-weight:var(--fw-bold)}.welcome-back[data-v-8561c955]{display:inline-flex;align-items:center;gap:var(--sp-4);color:var(--fg-3);font-size:var(--fs-13);font-weight:var(--fw-bold);min-height:44px;margin-bottom:var(--sp-2)}.welcome-title[data-v-8561c955]{font-size:var(--fs-19);font-weight:var(--fw-heavy);margin-bottom:var(--sp-6)}.welcome-sub[data-v-8561c955]{font-size:var(--fs-13);color:var(--fg-3);line-height:1.45;margin-bottom:var(--sp-18)}.field[data-v-8561c955]{margin-bottom:var(--sp-12)}.field-hint[data-v-8561c955]{font-size:var(--fs-11);color:var(--fg-4);margin-top:var(--sp-4)}.optional[data-v-8561c955]{color:var(--fg-4);font-weight:var(--fw-semibold)}.class-found[data-v-8561c955]{margin-top:var(--sp-4);padding:var(--sp-12);border-radius:var(--radius-sm);border:1px solid var(--orange);background:#ffb45414}.found-body[data-v-8561c955]{flex:1;min-width:0}.found-name[data-v-8561c955]{font-size:var(--fs-15);font-weight:var(--fw-black)}.found-meta[data-v-8561c955]{font-size:var(--fs-12);color:var(--fg-3)}.welcome-error[data-v-8561c955]{font-size:var(--fs-13);color:var(--red);margin:var(--sp-4) 0 var(--sp-12);line-height:1.4}.welcome-alt[data-v-8561c955]{text-align:center;margin-top:var(--sp-14);font-size:var(--fs-13);color:var(--fg-3)}.recovery-input[data-v-8561c955]{font-family:var(--font-mono);letter-spacing:1px;text-transform:uppercase}.link-btn[data-v-8561c955]{color:var(--primary);font-weight:var(--fw-heavy);font-size:inherit;padding:var(--sp-6) var(--sp-4)}.welcome-note[data-v-8561c955]{margin-top:var(--sp-12);font-size:var(--fs-13);color:var(--orange);font-weight:var(--fw-semibold);line-height:1.4}.sync-banner[data-v-9127c15a]{display:flex;align-items:center;gap:var(--sp-10);margin:calc(var(--sp-8) + var(--safe-top)) var(--sp-12) 0;padding:var(--sp-10) var(--sp-12);border-radius:var(--radius-sm);border:1px solid rgba(255,180,84,.35);background:#ffb4541a;font-size:var(--fs-12);font-weight:var(--fw-semibold);line-height:1.4;color:var(--fg)}.sync-banner.is-too-large[data-v-9127c15a],.sync-banner.is-quota[data-v-9127c15a],.sync-banner.is-server[data-v-9127c15a]{border-color:#f45b6966;background:#f45b691a}.sync-banner-text[data-v-9127c15a]{flex:1;min-width:0}.sync-banner-retry[data-v-9127c15a]{flex-shrink:0}.confirm-backdrop[data-v-5140040e]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#060a12b8;display:flex;align-items:flex-end;justify-content:center;padding:var(--sp-16) var(--sp-16) calc(var(--sp-16) + var(--safe-bot))}@media(min-width:560px){.confirm-backdrop[data-v-5140040e]{align-items:center}}.confirm-dialog[data-v-5140040e]{width:100%;max-width:420px;background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--sp-20)}.confirm-title[data-v-5140040e]{font-size:var(--fs-18);font-weight:var(--fw-heavy);letter-spacing:-.3px}.confirm-message[data-v-5140040e]{margin:var(--sp-10) 0 0;font-size:var(--fs-14);color:var(--fg-2);line-height:1.5}.confirm-label[data-v-5140040e]{display:block;margin:var(--sp-16) 0 var(--sp-8)}.confirm-actions[data-v-5140040e]{display:flex;gap:var(--sp-10);margin-top:var(--sp-20)}.confirm-danger[data-v-5140040e]{background:var(--red);color:#fff}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-italic-BicUS2cM.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-italic-BfTTTDIL.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-italic-Py8at3oI.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #0e1726;--bg-2: #162033;--bg-3: #101a2c;--bg-4: #26344d;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .14);--fg: #ffffff;--fg-2: rgba(255, 255, 255, .7);--fg-3: rgba(255, 255, 255, .5);--fg-4: rgba(255, 255, 255, .46);--focus: #a48bff;--primary: #7c5cff;--teal: #3ddbd9;--pink: #ff6b9d;--orange: #ffb454;--green: #5ee7b7;--red: #f45b69;--red-light: #ff9aa4;--radius: 22px;--radius-sm: 14px;--radius-pill: 999px;--safe-top: env(safe-area-inset-top);--safe-bot: env(safe-area-inset-bottom);--font-sans: "Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-serif: "Fraunces Variable", ui-serif, Georgia, "Times New Roman", serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-9: 9px;--fs-10: 10px;--fs-11: 11px;--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-15: 15px;--fs-16: 16px;--fs-17: 17px;--fs-18: 18px;--fs-19: 19px;--fs-20: 20px;--fs-22: 22px;--fs-24: 24px;--fs-26: 26px;--fs-28: 28px;--fs-30: 30px;--fs-32: 32px;--fs-36: 36px;--fs-40: 40px;--fs-42: 42px;--fs-44: 44px;--fs-48: 48px;--fs-64: 64px;--fs-84: 84px;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--fw-heavy: 800;--fw-black: 900;--sp-2: 2px;--sp-4: 4px;--sp-6: 6px;--sp-8: 8px;--sp-10: 10px;--sp-12: 12px;--sp-13: 13px;--sp-14: 14px;--sp-16: 16px;--sp-18: 18px;--sp-20: 20px;--sp-22: 22px;--sp-24: 24px;--sp-26: 26px;--sp-28: 28px;--sp-30: 30px;--sp-32: 32px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--fg);font-family:var(--font-sans);overscroll-behavior-y:none}body{font-size:var(--fs-15);line-height:1.4}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}input,textarea{font:inherit;color:inherit;background:none;border:0;outline:none}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}input:focus-visible,textarea:focus-visible{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}#app{min-height:100dvh;padding-top:var(--safe-top);padding-bottom:calc(86px + var(--sp-20) + var(--safe-bot))}#app.no-bottom-nav{padding-bottom:var(--safe-bot)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes toast-in{0%{transform:translate(-50%,8px);opacity:0}to{transform:translate(-50%);opacity:1}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.shake{animation:shake .4s ease}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-8);padding:13px var(--sp-16);border-radius:16px;font-weight:var(--fw-heavy);font-size:var(--fs-14);letter-spacing:-.1px;transition:transform .06s ease,opacity .15s ease}.btn svg{font-size:var(--fs-16)}.btn:active{transform:scale(.97)}.btn[disabled],.btn.is-disabled{opacity:.4;pointer-events:none}.btn-primary{background:var(--primary);color:#fff}.btn-ghost{background:var(--bg-2);color:var(--fg);border:1px solid var(--line-strong)}.btn-teal{background:var(--teal);color:var(--bg)}.btn-orange{background:var(--orange);color:var(--bg)}.btn-block{width:100%}.btn-lg{padding:var(--sp-16) 18px;font-size:var(--fs-15)}.btn-lg svg{font-size:var(--fs-18)}.btn-sm{padding:var(--sp-8) var(--sp-12);font-size:var(--fs-12);border-radius:12px}.btn-sm svg{font-size:var(--fs-14)}.btn-icon{width:44px;height:44px;padding:0;border-radius:var(--radius-sm);flex-shrink:0}.btn-icon svg{font-size:var(--fs-18)}.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-16)}.card-sm{border-radius:var(--radius-sm);padding:var(--sp-12) 14px}.eyebrow{display:inline-flex;align-items:center;gap:var(--sp-6);padding:var(--sp-4) var(--sp-10);border-radius:var(--radius-pill);font-size:var(--fs-10);font-weight:var(--fw-heavy);letter-spacing:.5px;text-transform:uppercase;background:#7c5cff24;color:var(--primary)}.eyebrow .dot{width:6px;height:6px;border-radius:3px;background:currentColor}.eyebrow svg{font-size:var(--fs-12)}.chip{display:inline-flex;align-items:center;gap:var(--sp-6);padding:var(--sp-6) var(--sp-12);border-radius:var(--radius-pill);background:var(--bg-2);border:1px solid var(--line);font-size:var(--fs-12);font-weight:var(--fw-bold)}.chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.chip svg{font-size:var(--fs-14)}.role-tag{display:inline-flex;align-items:center;gap:7px;padding:var(--sp-6) var(--sp-12);border-radius:var(--radius-pill);font-size:var(--fs-10);font-weight:var(--fw-black);letter-spacing:.8px;align-self:flex-start}.role-tag.spaced{margin:var(--sp-20) 0 var(--sp-8)}.role-tag .dot{width:6px;height:6px;border-radius:3px;background:currentColor}.role-tag.teacher{background:#ffb45424;color:var(--orange);border:1px solid rgba(255,180,84,.4)}.role-tag.learner{background:#7c5cff24;color:var(--primary);border:1px solid rgba(124,92,255,.4)}.badge-new{padding:var(--sp-2) var(--sp-8);border-radius:var(--radius-pill);background:var(--orange);color:var(--bg);font-size:var(--fs-9);font-weight:var(--fw-black);letter-spacing:.5px}.tag-teacher{display:inline-flex;align-items:center;gap:3px;font-size:var(--fs-9);font-weight:var(--fw-black);letter-spacing:.3px;color:var(--bg);background:var(--orange);padding:var(--sp-2) var(--sp-6);border-radius:5px;vertical-align:middle}.field{display:flex;flex-direction:column;gap:var(--sp-6);margin-bottom:var(--sp-14)}.field-label{font-size:var(--fs-11);font-weight:var(--fw-heavy);letter-spacing:.5px;text-transform:uppercase;color:var(--fg-3)}.field-input{padding:var(--sp-14) var(--sp-16);background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:var(--fs-16);font-weight:var(--fw-semibold)}.field-input:focus{border-color:var(--primary)}.field-input.large{font-family:var(--font-serif);font-size:var(--fs-22);font-weight:var(--fw-bold)}select.field-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' opacity='0.55'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center}.switch{width:46px;height:28px;border-radius:14px;background:var(--bg-4);border:1px solid var(--line);position:relative;flex-shrink:0;transition:background .15s}.switch:before{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px}.switch.on{background:var(--green)}.switch .knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:10px;background:#fff;transition:transform .15s}.switch.on .knob{transform:translate(18px)}.switch:disabled{opacity:.5}.top-nav{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-8) var(--sp-16) var(--sp-4)}.top-nav .x-btn{width:44px;height:44px;border-radius:22px;background:var(--bg-2);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:var(--fs-16);font-weight:var(--fw-bold)}.top-nav .x-btn svg{font-size:var(--fs-16)}.top-nav .progress{flex:1;height:8px;background:var(--bg-2);border-radius:4px;overflow:hidden;display:flex;gap:2px}.top-nav .progress span{flex:1;background:#ffffff0f;border-radius:2px}.top-nav .progress span.done{background:#7c5cffa8}.top-nav .progress span.active{background:var(--primary)}.top-nav .count{padding:var(--sp-4) var(--sp-10);border-radius:var(--radius-pill);background:var(--bg-2);font-size:var(--fs-11);font-weight:var(--fw-heavy);letter-spacing:.5px;display:flex;align-items:center;gap:var(--sp-4);flex-shrink:0}.top-nav .count .dot{width:6px;height:6px;border-radius:3px;background:var(--teal)}.screen{padding:0 var(--sp-20);max-width:480px;margin:0 auto}.screen-header{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-14) 0 var(--sp-10)}.screen>.screen-header:first-child{padding-top:var(--sp-20)}.screen-title{font-size:var(--fs-22);font-weight:var(--fw-heavy);letter-spacing:-.4px}.screen-sub{font-size:var(--fs-12);color:var(--fg-3);font-weight:var(--fw-semibold);letter-spacing:.3px;text-transform:uppercase;margin-top:2px}.header-spacer{width:40px;flex-shrink:0}.cats{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-10)}.cat{padding:var(--sp-16);border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--line);display:flex;flex-direction:column;gap:var(--sp-8);align-items:flex-start;text-align:left;min-height:116px;justify-content:space-between}.cat:active{transform:scale(.98)}.cat-icon{width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--fs-18)}.cat-icon.vocab{background:var(--primary)}.cat-icon.grammar{background:var(--orange);color:var(--bg)}.cat-icon.pron{background:var(--pink)}.cat-icon.errors{background:var(--red)}.cat-icon.match{background:var(--teal);color:var(--bg)}.cat-icon.test{background:var(--orange);color:var(--bg)}.cat-icon.audio{background:var(--green);color:var(--bg)}.cat-name{font-size:var(--fs-15);font-weight:var(--fw-heavy);letter-spacing:-.2px}.cat-meta{display:flex;align-items:center;gap:var(--sp-6);font-size:var(--fs-11);font-weight:var(--fw-bold);color:var(--fg-3)}.cat-due{color:var(--teal)}.role-ic{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:var(--fs-18);flex-shrink:0}.train-stage{padding:var(--sp-8) var(--sp-8) 0}.train-card{background:var(--bg-2);border:1px solid var(--line);border-radius:26px;padding:28px;min-height:460px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 20px 40px -20px #00000080;transition:all .3s ease}.train-card.flipped{background:linear-gradient(160deg,var(--primary),rgba(124,92,255,.7))}.train-card.correct{background:linear-gradient(160deg,var(--teal),#2a8a87);color:var(--bg)}.train-card.wrong{background:linear-gradient(160deg,var(--red),#a83840)}.train-eyebrow{font-size:var(--fs-10);font-weight:var(--fw-heavy);letter-spacing:1.5px;text-transform:uppercase;opacity:.5}.train-word{font-size:var(--fs-48);font-weight:var(--fw-black);font-family:var(--font-serif);letter-spacing:-2px;line-height:1;margin-top:var(--sp-14)}.rate-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--sp-6);padding:var(--sp-14) var(--sp-8) 0}.rate{background:var(--bg-2);border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:var(--sp-12) var(--sp-8);text-align:center}.rate.hard{border-color:var(--red)}.rate.ok{border-color:var(--orange)}.rate.easy{border-color:var(--teal)}.qcm-card{padding:var(--sp-22)}.qcm-opts{display:flex;flex-direction:column;gap:var(--sp-8);margin-top:var(--sp-16)}.qcm-opt{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-14) var(--sp-16);border-radius:16px;background:var(--bg-2);border:1px solid var(--line);cursor:pointer;transition:all .15s ease}.qcm-opt:active{transform:scale(.99)}.qcm-opt.sel{border-color:var(--primary);background:#7c5cff1f}.qcm-opt.correct{background:#3ddbd91f;border-color:var(--teal)}.qcm-opt.wrong{background:#f45b691f;border-color:var(--red)}.qcm-opt.dim{color:var(--fg-3)}.qcm-letter{width:28px;height:28px;border-radius:14px;background:#ffffff14;color:var(--fg-2);display:flex;align-items:center;justify-content:center;font-size:var(--fs-12);font-weight:var(--fw-black);flex-shrink:0}.qcm-letter.correct{background:var(--teal);color:var(--bg)}.qcm-letter.wrong{background:var(--red);color:#fff}.qcm-text{flex:1;font-size:var(--fs-15);font-weight:var(--fw-semibold);line-height:1.35}.feedback{padding:var(--sp-12) var(--sp-14);border-radius:16px;display:flex;gap:var(--sp-10);align-items:flex-start;margin-top:var(--sp-14)}.feedback svg{font-size:var(--fs-14)}.feedback.correct{background:#3ddbd914;border:1px solid rgba(61,219,217,.2)}.feedback.wrong{background:#f45b6914;border:1px solid rgba(244,91,105,.2)}.feedback-tag{font-size:var(--fs-11);font-weight:var(--fw-black);letter-spacing:.5px;text-transform:uppercase;flex-shrink:0}.feedback.correct .feedback-tag{color:var(--teal)}.feedback.wrong .feedback-tag{color:var(--red)}.feedback-text{flex:1;font-size:var(--fs-12);line-height:1.5;color:var(--fg-2)}.filters{display:flex;gap:var(--sp-6);overflow-x:auto;margin-bottom:var(--sp-12);padding-bottom:var(--sp-4);scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.filters .chip{white-space:nowrap;flex-shrink:0}.empty{padding:var(--sp-32) var(--sp-20);text-align:center}.empty-emoji{font-size:var(--fs-36)}.empty-title{font-size:var(--fs-16);font-weight:var(--fw-heavy);margin-top:var(--sp-8)}.empty-sub{font-size:var(--fs-13);color:var(--fg-3);margin-top:var(--sp-6)}.toast{position:fixed;left:50%;bottom:calc(100px + var(--safe-bot));transform:translate(-50%);padding:var(--sp-12) 18px;background:var(--bg-2);border:1px solid var(--line-strong);border-radius:var(--radius-sm);font-size:var(--fs-13);font-weight:var(--fw-bold);z-index:100;animation:toast-in .2s ease}.bank{display:flex;flex-wrap:wrap;gap:var(--sp-6)}.bank-word{padding:var(--sp-8) var(--sp-14);border-radius:var(--radius-pill);background:var(--bg-2);border:1.5px solid var(--line-strong);font-size:var(--fs-14);font-weight:var(--fw-bold);font-family:var(--font-serif);cursor:pointer;transition:transform .08s ease}.bank-word:active{transform:scale(.95)}.bank-word.used{background:#ffffff0a;border-color:#ffffff0a;color:var(--fg-4);text-decoration:line-through}.row{display:flex;align-items:center}.row-between{display:flex;align-items:center;justify-content:space-between}.col{display:flex;flex-direction:column}.justify-center{justify-content:center}.gap-8{gap:var(--sp-8)}.gap-12{gap:var(--sp-12)}.gap-16{gap:var(--sp-16)}.mt-8{margin-top:var(--sp-8)}.mt-12{margin-top:var(--sp-12)}.mt-16{margin-top:var(--sp-16)}.mt-24{margin-top:var(--sp-24)}.mb-8{margin-bottom:var(--sp-8)}.mb-12{margin-bottom:var(--sp-12)}.mb-16{margin-bottom:var(--sp-16)}.text-fg-3{color:var(--fg-3)}.text-center{text-align:center}.font-serif{font-family:var(--font-serif)}.hidden{display:none!important}
