@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/13bf9871fe164e7f-s.0s19wthhh_6~m.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/cc545e633e20c56d-s.p.0dza.stei.9v7.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/71b036adf157cdcf-s.03nf~dfjdkf~..woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/89b21bb081cb7469-s.0gfhww.tctz1o.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/3fe682a82f50d426-s.09q3q1i5159bl.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(../media/70bc3e132a0a741e-s.p.1409xf.ylxg8g.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Fallback;src:local(Arial);ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.0%;size-adjust:134.59%}.jetbrains_mono_2ef99438-module__iBGuyq__className{font-family:JetBrains Mono,JetBrains Mono Fallback;font-style:normal}.jetbrains_mono_2ef99438-module__iBGuyq__variable{--font-mono:"JetBrains Mono", "JetBrains Mono Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--gray-0:#fff;--gray-25:#f7f8fb;--gray-50:#eef1f7;--gray-100:#dde2ee;--gray-200:#c3cadd;--gray-300:#9aa4bf;--gray-400:#6f7a96;--gray-500:#515b75;--gray-600:#3a4258;--gray-700:#2a3043;--gray-750:#20283b;--gray-800:#182032;--gray-850:#131a29;--gray-900:#0e131e;--gray-950:#0a0d15;--blue-300:#a9bbff;--blue-400:#8aa0ff;--blue-500:#6e8bff;--blue-600:#5570f0;--blue-700:#4a66e8;--violet-400:#b79bff;--violet-500:#9b7cff;--violet-600:#7c52ec;--green-500:#3ecf95;--amber-500:#e3b341;--red-500:#ef5f6b;--c-radical:#46a3ff;--c-kanji:#f05c8c;--c-vocab:#a78bfa;--c-grammar:#38c6cb;--c-jlpt:#f5a25c;--bg:#0a0d15;--bg-raised:#0e131e;--surface:#141b2a;--surface-2:#1b2336;--surface-3:#232c42;--surface-hover:#28324a;--border:#2a3043;--border-strong:#394567;--border-accent:#6e8bff6b;--text:#eef1f8;--muted:#9aa6c2;--faint:#67738f;--on-accent:#0a0d15;--accent:#6e8bff;--accent-strong:#4a66e8;--accent-hover:#8aa0ff;--accent-soft:#6e8bff24;--accent-text:#a9bbff;--grad-brand:linear-gradient(135deg, var(--blue-600), var(--violet-600));--grad-brand-soft:linear-gradient(135deg, #5570f02e, #7c52ec24);--grad-hero:radial-gradient(1100px 420px at 88% -55%, #6e8bff33, transparent 60%), radial-gradient(720px 360px at 6% 120%, #a78bfa1a, transparent 60%);--success:#3ecf95;--success-soft:#3ecf9524;--warning:#e3b341;--warning-soft:#e3b34124;--danger:#ef5f6b;--danger-soft:#ef5f6b24;--radical:#46a3ff;--radical-soft:#46a3ff24;--kanji:#f05c8c;--kanji-soft:#f05c8c24;--vocab:#a78bfa;--vocab-soft:#a78bfa24;--grammar:#38c6cb;--grammar-soft:#38c6cb24;--jlpt:#f5a25c;--jlpt-soft:#f5a25c24;--srs-apprentice:#f05c8c;--srs-guru:#a78bfa;--srs-master:#6e8bff;--srs-enlightened:#46c3ff;--srs-burned:#6f7a93;--glass-bg:#131a29a8;--glass-border:#ffffff12;--glass-blur:blur(14px) saturate(1.3);--shadow-1:0 1px 2px #02050b66;--shadow-2:0 2px 8px #02050b73;--shadow-3:0 8px 24px #02050b85;--shadow-4:0 16px 40px #02050b94;--shadow-5:0 28px 64px #02050ba8;--shadow-accent:0 8px 28px #5570f057;--shadow-inset:inset 0 1px 0 #ffffff0d;--shadow-xs:var(--shadow-1);--shadow-sm:var(--shadow-2);--shadow-md:var(--shadow-3);--shadow-lg:var(--shadow-4);--shadow-xl:var(--shadow-5);--shadow:var(--shadow-4);--ring:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--state-hover:#ffffff0a;--state-active:#ffffff05;--state-selected:var(--accent-soft);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-7:28px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--r-xs:4px;--r-sm:6px;--radius-sm:8px;--radius:12px;--r-lg:16px;--r-xl:20px;--r-2xl:24px;--r-pill:999px;--fs-xs:12px;--fs-sm:13px;--fs-base:15px;--fs-md:17px;--fs-lg:20px;--fs-xl:25px;--fs-2xl:31px;--fs-3xl:39px;--fs-4xl:48px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--tracking-tight:-.02em;--tracking-snug:-.01em;--tracking-wide:.06em;--glyph-sm:30px;--glyph-md:56px;--glyph-lg:96px;--glyph-hero:128px;--dur-instant:80ms;--dur-fast:.14s;--dur-base:.22s;--dur-slow:.36s;--dur-celebrate:.9s;--motion-instant:var(--dur-instant);--motion-fast:var(--dur-fast);--motion-base:var(--dur-base);--motion-slow:var(--dur-slow);--motion-celebrate:var(--dur-celebrate);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-standard:cubic-bezier(.2, 0, 0, 1);--ease-decelerate:cubic-bezier(.05, .7, .1, 1);--ease-accelerate:cubic-bezier(.3, 0, 1, 1);--motion-rise:12px;--lift:-2px;--rail-width:264px;--tabbar-height:64px}*{box-sizing:border-box}html,body{margin:0;padding:0;overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:var(--font-sans), "Segoe UI", system-ui, sans-serif;font-size:var(--fs-base);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 0;line-height:1.55}h1,h2,h3{font-weight:var(--fw-semibold);letter-spacing:var(--tracking-snug);margin:0;line-height:1.2}h1{font-size:var(--fs-2xl);letter-spacing:var(--tracking-tight);font-weight:var(--fw-bold)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}p{color:var(--muted);margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--font-mono), ui-monospace, monospace;overflow-wrap:anywhere;font-size:13px}.jp{font-family:var(--font-jp), "Hiragino Sans", "Yu Gothic", sans-serif}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}.app-frame{min-height:100vh;display:flex}.rail{width:var(--rail-width);min-width:var(--rail-width);background:var(--bg-raised);border-right:1px solid var(--border);flex-direction:column;align-self:flex-start;gap:20px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:12px;padding:0 8px;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent-strong), #6e3fe8);color:#fff;width:40px;height:40px;font-family:var(--font-jp), sans-serif;border-radius:10px;place-items:center;font-size:20px;font-weight:700;display:grid}.brand-title{color:var(--text);font-size:15px;font-weight:var(--fw-semibold);letter-spacing:-.01em;margin:0}.brand-subtitle{color:var(--faint);margin:0;font-size:12px}.nav-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.nav-section{color:var(--faint);letter-spacing:.08em;text-transform:uppercase;margin:14px 8px 6px;font-size:11px;font-weight:600}.module-switcher{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;margin-bottom:6px;padding-bottom:8px;display:flex}.module-tab{border-radius:var(--radius-sm);color:var(--muted);font-size:14px;font-weight:var(--fw-semibold);transition:background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);align-items:center;gap:10px;padding:9px 12px;text-decoration:none;display:flex}.module-tab .module-tab-label{flex:1}.module-tab:hover{background:var(--surface);color:var(--text);text-decoration:none}.module-tab.is-active{background:var(--accent-soft);color:var(--accent)}.module-tab.is-active .count-pill{background:var(--accent);color:var(--on-accent)}.nav-item{border-radius:var(--radius-sm);color:var(--muted);font-size:14px;font-weight:var(--fw-medium);transition:background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;text-decoration:none;display:flex;position:relative}.nav-item span{align-items:center;gap:10px;display:inline-flex}.nav-item:hover{background:var(--surface);color:var(--text);text-decoration:none}.nav-item.is-active{background:var(--accent-soft);color:var(--accent)}.nav-item.is-active:before{content:"";border-radius:var(--r-pill);background:var(--accent);width:3px;height:18px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.count-pill{background:var(--surface-3);min-width:22px;color:var(--text);text-align:center;border-radius:999px;padding:1px 7px;font-size:12px;font-weight:600}.nav-item.is-active .count-pill{background:var(--accent);color:var(--on-accent)}.rail-footer{flex-direction:column;gap:10px;margin-top:auto;display:flex}.user-chip{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:center;gap:10px;padding:10px 12px;display:flex}.user-chip-avatar{background:var(--surface-3);width:32px;height:32px;color:var(--accent);font-size:14px;font-weight:var(--fw-semibold);border-radius:8px;place-items:center;display:grid}.user-chip-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;font-weight:600;overflow:hidden}.user-chip-level{color:var(--faint);margin:0;font-size:12px}.workspace{flex-direction:column;flex:1;gap:22px;min-width:0;padding:26px 32px 48px;display:flex}.topbar{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.topbar p{margin-top:3px;font-size:14px}.top-actions{flex-wrap:wrap;gap:10px;display:flex}.button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-family:inherit;font-size:14px;font-weight:var(--fw-semibold);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard), transform var(--dur-fast) var(--ease-standard);justify-content:center;align-items:center;gap:8px;padding:9px 16px;line-height:1.2;text-decoration:none;display:inline-flex}.button:hover{background:var(--surface-3);text-decoration:none;transform:translateY(-1px)}.button:active{transition-duration:var(--dur-instant);transform:translateY(0)scale(.97)}.button:disabled{opacity:.5;cursor:not-allowed;transform:none}.button.primary{background:var(--grad-brand);color:var(--on-accent);box-shadow:var(--shadow-accent);border-color:#0000}.button.primary:hover{filter:brightness(1.06);box-shadow:var(--shadow-accent), var(--shadow-3)}.button.success{background:var(--success);color:#06281b;border-color:#0000}.button.danger{background:var(--danger);color:#2b0508;border-color:#0000}.button.ghost{color:var(--muted);background:0 0;border-color:#0000}.button.ghost:hover{background:var(--surface);color:var(--text)}.button.large{border-radius:var(--radius);padding:13px 22px;font-size:15px}.grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;display:grid}.grid.wide{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}.widget{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-2), var(--shadow-inset);transition:transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);flex-direction:column;gap:12px;padding:20px;display:flex}.widget:hover{transform:translateY(var(--lift));box-shadow:var(--shadow-3), var(--shadow-inset);border-color:var(--border-strong)}.widget>p{font-size:13.5px}.widget-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.widget-link{font-size:13px;font-weight:var(--fw-semibold)}.hero-band{border:1px solid var(--border);border-radius:var(--radius);background:var(--grad-hero), var(--surface);box-shadow:var(--shadow-3), var(--shadow-inset);padding:26px 28px;position:relative;overflow:hidden}.hero-content{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:22px;display:flex}.hero-content h1,.hero-content h2{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-tight);margin:8px 0 6px}.hero-content p{max-width:52ch;font-size:14px}.metric{align-items:baseline;gap:8px;display:flex}.metric strong{font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums}.metric span{color:var(--faint);font-size:13px}.hero-number{font-size:var(--fs-4xl);line-height:1;font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums;background:var(--grad-brand);color:#0000;-webkit-background-clip:text;background-clip:text;display:block}.hero-number.plain{-webkit-text-fill-color:currentColor;color:var(--text);background:0 0}.stat-row{flex-wrap:wrap;gap:12px;display:flex}.stat-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);min-width:140px;box-shadow:var(--shadow-1);transition:transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard);flex:1;padding:14px 16px}.stat-card:hover{transform:translateY(var(--lift));box-shadow:var(--shadow-3);border-color:var(--border-strong)}.stat-card strong{font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums;display:block}.stat-card span{color:var(--faint);font-size:12.5px}.tag{background:var(--surface-3);color:var(--muted);font-size:12px;font-weight:var(--fw-medium);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;display:inline-flex}.status-pill{background:var(--accent-soft);color:var(--accent);letter-spacing:.02em;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.status-pill.success{background:var(--success-soft);color:var(--success)}.status-pill.warning{background:var(--warning-soft);color:var(--warning)}.status-pill.danger{background:var(--danger-soft);color:var(--danger)}.type-pill{border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.type-pill.type-radical{background:var(--radical-soft);color:var(--radical)}.type-pill.type-kanji{background:var(--kanji-soft);color:var(--kanji)}.type-pill.type-vocab{background:var(--vocab-soft);color:var(--vocab)}.type-pill.type-grammar{background:var(--grammar-soft);color:var(--grammar)}.type-pill.type-jlpt{background:var(--jlpt-soft);color:var(--jlpt)}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--muted);font-size:13px;font-weight:var(--fw-medium)}.input,.answer-field,select.input,textarea.input{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--bg-raised);width:100%;color:var(--text);transition:border-color var(--dur-fast) var(--ease-standard), background var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-standard);padding:10px 13px;font-family:inherit;font-size:16px}.input:focus,.answer-field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input::placeholder,.answer-field::placeholder{color:var(--faint)}.form-grid{gap:14px;display:grid}.check-row{color:var(--muted);align-items:center;gap:10px;font-size:14px;display:flex}.check-row input{accent-color:var(--accent);width:16px;height:16px}.form-message{border-radius:var(--radius-sm);background:var(--surface-2);color:var(--muted);padding:10px 14px;font-size:13.5px}.form-message.success{background:var(--success-soft);color:var(--success)}.form-message.error{background:var(--danger-soft);color:var(--danger)}.filter-bar{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);flex-wrap:wrap;align-items:flex-end;gap:12px;padding:16px;display:flex}.glyph{font-family:var(--font-jp), "Hiragino Sans", sans-serif;font-size:var(--glyph-lg);text-align:center;color:var(--text);font-weight:500;line-height:1.15;position:relative}.glyph:after{content:"";z-index:-1;background:radial-gradient(closest-side, var(--glyph-glow,var(--accent-soft)), transparent);filter:blur(10px);pointer-events:none;position:absolute;inset:-22% -12%}.glyph.type-radical{--glyph-glow:var(--radical-soft)}.glyph.type-kanji{--glyph-glow:var(--kanji-soft)}.glyph.type-vocab{--glyph-glow:var(--vocab-soft)}.glyph.type-grammar{--glyph-glow:var(--grammar-soft)}.glyph.type-jlpt{--glyph-glow:var(--jlpt-soft)}.subject-tile{border:1px solid var(--border);border-top:3px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:inherit;text-align:center;transition:background var(--dur-fast) var(--ease-standard), border-color var(--dur-fast) var(--ease-standard), transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard);flex-direction:column;align-items:center;gap:6px;padding:14px 12px 12px;text-decoration:none;display:flex}a.subject-tile:hover{background:var(--surface-3);box-shadow:var(--shadow-3);border-color:var(--border-strong);text-decoration:none;transform:translateY(-3px)}.subject-tile b{font-family:var(--font-jp), sans-serif;transition:transform var(--dur-base) var(--ease-spring);font-size:30px;font-weight:500}a.subject-tile:hover b{transform:scale(1.08)}.subject-tile span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:12px;overflow:hidden}.subject-tile.type-radical{border-top-color:var(--radical)}.subject-tile.type-kanji{border-top-color:var(--kanji)}.subject-tile.type-vocab{border-top-color:var(--vocab)}.subject-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;display:grid}.kanji-word{font-family:var(--font-jp), sans-serif}.progress-track{background:var(--surface-3);border-radius:999px;width:100%;height:8px;overflow:hidden}.progress-fill{width:var(--value,0%);background:var(--grad-brand);height:100%;transition:width var(--dur-slow) var(--ease-standard);border-radius:999px}.progress-fill.success{background:var(--success)}.progress-fill.radical{background:var(--radical)}.progress-fill.kanji{background:var(--kanji)}.srs-board{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;display:grid}.srs-card{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-2);border-bottom:3px solid var(--border);box-shadow:var(--shadow-1);transition:transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard);padding:14px}.srs-card:hover{transform:translateY(var(--lift));box-shadow:var(--shadow-3)}.srs-card strong{font-size:24px;font-weight:var(--fw-bold);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums;display:block}.srs-card span{color:var(--muted);font-size:12.5px}.srs-card.apprentice{border-bottom-color:var(--srs-apprentice)}.srs-card.guru{border-bottom-color:var(--srs-guru)}.srs-card.master{border-bottom-color:var(--srs-master)}.srs-card.enlightened{border-bottom-color:var(--srs-enlightened)}.srs-card.burned{border-bottom-color:var(--srs-burned)}.srs-pill{border-radius:999px;align-items:center;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.srs-pill.lesson{background:var(--surface-3);color:var(--muted)}.srs-pill.apprentice{color:var(--srs-apprentice);background:#f05c8c24}.srs-pill.guru{color:var(--srs-guru);background:#a78bfa24}.srs-pill.master{color:var(--srs-master);background:#6e8bff24}.srs-pill.enlightened{color:var(--srs-enlightened);background:#46c3ff24}.srs-pill.burned{color:var(--srs-burned);background:#6f7a932e}.forecast-list{flex-direction:column;display:flex}.forecast-row{border-bottom:1px solid var(--border);grid-template-columns:96px 1fr 72px;align-items:center;gap:12px;padding:7px 0;display:grid}.forecast-row:last-child{border-bottom:none}.forecast-row .label{color:var(--muted);font-size:13px}.forecast-row .count{color:var(--text);text-align:right;font-size:13px;font-weight:600}.forecast-row .count small{color:var(--faint);font-weight:500}.forecast-bar{background:var(--surface-3);border-radius:999px;height:6px;overflow:hidden}.forecast-bar i{width:var(--value,0%);background:var(--accent);height:100%;display:block}.session-shell{flex-direction:column;gap:18px;width:100%;max-width:760px;margin:0 auto;display:flex}.session-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.session-progress{color:var(--muted);align-items:center;gap:12px;font-size:13px;display:flex}.question-card{border:1px solid var(--border);border-top:4px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:center;flex-direction:column;gap:18px;padding:30px 28px;display:flex}.question-card.type-radical{border-top-color:var(--radical)}.question-card.type-kanji{border-top-color:var(--kanji)}.question-card.type-vocab{border-top-color:var(--vocab)}.question-card.type-grammar{border-top-color:var(--grammar)}.question-card.type-jlpt{border-top-color:var(--jlpt)}.question-kind{background:var(--surface-3);color:var(--text);letter-spacing:.03em;border-radius:999px;align-self:center;padding:4px 14px;font-size:13px;font-weight:600;display:inline-flex}.answer-row{gap:10px;display:flex}.answer-row .answer-field{text-align:center;flex:1;padding:13px 16px;font-size:17px}.answer-field.is-correct{border-color:var(--success);background:var(--success-soft);color:var(--success)}.answer-field.is-incorrect{border-color:var(--danger);background:var(--danger-soft);color:var(--danger);animation:.3s shake}.answer-field.is-warning{border-color:var(--warning);background:var(--warning-soft)}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.item-info{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);text-align:left;flex-direction:column;gap:14px;padding:20px;display:flex}.item-info h3{letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-size:13px;font-weight:600}.slide-meta{justify-content:center;align-items:center;gap:10px;display:flex}.slide-dots{justify-content:center;gap:6px;display:flex}.slide-dots i{background:var(--surface-3);border-radius:999px;width:8px;height:8px}.slide-dots i.is-active{background:var(--accent)}.slide-dots i.is-done{background:var(--success)}.mini-list{flex-direction:column;display:flex}.mini-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:9px 0;font-size:13.5px;display:flex}.mini-row .mini-row-value{overflow-wrap:anywhere;text-align:right;min-width:0}.mini-row:last-child{border-bottom:none}.mini-row strong{font-weight:600}.catalog-list{flex-direction:column;display:flex}.catalog-item{border-bottom:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);transition:background var(--dur-fast) var(--ease-standard);margin:0 -10px;padding:12px 10px;text-decoration:none;display:block}.catalog-item:last-child{border-bottom:none}.catalog-item:hover{background:var(--surface);text-decoration:none}.catalog-item-head{justify-content:space-between;align-items:center;gap:12px;font-size:14px;display:flex}.catalog-item-preview{color:var(--faint);margin:4px 0 0;font-size:13px;line-height:1.45}.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table th{border-bottom:1px solid var(--border-strong);color:var(--faint);letter-spacing:.05em;text-align:left;text-transform:uppercase;padding:8px 12px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--border);color:var(--muted);padding:9px 12px}.data-table td:first-child{color:var(--text)}.empty-state{border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:10px;padding:36px 24px;font-size:14px;display:flex}.empty-state strong{color:var(--text);font-size:16px}.token-box{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text);font-family:var(--font-mono), monospace;word-break:break-all;padding:10px 14px;font-size:13px}.danger-zone{border-color:#ef5f6b59}.divider{background:var(--border);border:none;height:1px;margin:4px 0}.screen-section{flex-direction:column;gap:14px;display:flex}.section-title{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.section-title p{font-size:13px}.auth-screen{background:radial-gradient(900px 480px at 70% -10%, #6e8bff1f, transparent 60%), radial-gradient(700px 420px at 10% 110%, #f05c8c12, transparent 60%), var(--bg);min-height:100dvh;padding:24px;display:grid}.auth-card{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);width:100%;max-width:400px;box-shadow:var(--shadow-4), var(--shadow-inset);flex-direction:column;gap:20px;margin:auto;padding:32px;display:flex}.auth-tabs{border-radius:var(--radius-sm);background:var(--bg-raised);grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.auth-tab{color:var(--muted);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard), color var(--dur-fast) var(--ease-standard);background:0 0;border:none;border-radius:6px;padding:8px;font-family:inherit;font-size:13.5px;font-weight:600}.auth-tab.is-active{background:var(--surface-3);color:var(--text)}.offline-status{z-index:50;border:1px solid var(--warning);border-radius:var(--radius-sm);background:var(--warning-soft);color:var(--warning);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-3);align-items:center;gap:8px;padding:9px 14px;font-size:13px;display:flex;position:fixed;bottom:16px;right:16px}@keyframes rise{0%{opacity:0;transform:translateY(var(--motion-rise))}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.94)}60%{transform:scale(1.02)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:no-preference){.animate-rise{animation:rise var(--dur-base) var(--ease-decelerate) both}.animate-fade{animation:fade var(--dur-base) var(--ease-out) both}.animate-pop{animation:pop var(--dur-base) var(--ease-spring) both}.stagger>*{animation:rise var(--dur-base) var(--ease-decelerate) both}.stagger>:first-child{animation-delay:40ms}.stagger>:nth-child(2){animation-delay:80ms}.stagger>:nth-child(3){animation-delay:.12s}.stagger>:nth-child(4){animation-delay:.16s}.stagger>:nth-child(5){animation-delay:.2s}.stagger>:nth-child(6){animation-delay:.24s}.stagger>:nth-child(7){animation-delay:.28s}.stagger>:nth-child(8){animation-delay:.32s}.stagger>:nth-child(n+9){animation-delay:.36s}}.skeleton{background:var(--surface-2);border-radius:var(--radius-sm);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(100deg,#0000 30%,#ffffff0f 50%,#0000 70%) 0 0/200% 100%;position:absolute;inset:0}.skeleton-line{border-radius:var(--r-sm);background:var(--surface-2);height:12px}.skeleton-line+.skeleton-line{margin-top:10px}.skeleton-line.short{width:60%}@media (prefers-reduced-motion:no-preference){.skeleton:after{animation:shimmer 1.4s var(--ease-standard) infinite}.skeleton-line{background:linear-gradient(100deg, var(--surface-2) 30%, var(--surface-3) 50%, var(--surface-2) 70%);animation:shimmer 1.4s var(--ease-standard) infinite;background-size:200% 100%}}@keyframes shimmer{to{background-position:-200% 0}}.progress-fill.scalex{transform-origin:0;width:100%;transform:scaleX(var(--value,0));transition:transform var(--dur-slow) var(--ease-standard)}.card-flip{perspective:1000px}.card-flip-inner{transform-style:preserve-3d;transition:transform var(--dur-base) var(--ease-standard);position:relative}.card-flip.is-flipped .card-flip-inner{transform:rotateY(180deg)}.card-flip-front,.card-flip-back{backface-visibility:hidden}.card-flip-back{position:absolute;inset:0;transform:rotateY(180deg)}@keyframes level-pop{0%{opacity:0;transform:scale(.8)}55%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes burn-glow{0%{text-shadow:0 0 #0000;filter:brightness()}40%{text-shadow:0 0 18px var(--warning), 0 0 36px var(--danger);filter:brightness(1.35)}to{text-shadow:0 0 #0000;filter:brightness()}}@keyframes streak-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-10px)rotate(0)}to{opacity:0;transform:translate3d(var(--cx,0), 120px, 0) rotate(var(--cr,200deg))}}@keyframes success-flash{0%{box-shadow:0 0 0 0 var(--success-soft)}to{box-shadow:0 0 0 14px #0000}}@media (prefers-reduced-motion:no-preference){.celebrate.celebrate-levelup{animation:level-pop var(--dur-celebrate) var(--ease-spring) both}.celebrate.celebrate-burn{animation:burn-glow var(--dur-celebrate) var(--ease-out) both}.celebrate.celebrate-streak{animation:streak-pulse 2s var(--ease-in-out) infinite}.confetti-piece{width:8px;height:8px;animation:confetti-fall var(--dur-celebrate) var(--ease-accelerate) forwards;pointer-events:none;border-radius:2px;position:absolute}.flash-success{animation:success-flash var(--dur-slow) var(--ease-out) both}}.tabbar{display:none}.tab{min-height:52px;color:var(--muted);font-size:11px;font-weight:var(--fw-medium);transition:color var(--dur-fast) var(--ease-standard);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:6px 4px;text-decoration:none;display:flex;position:relative}.tab:hover{color:var(--text);text-decoration:none}.tab.is-active{color:var(--accent)}.tab-icon{justify-content:center;align-items:center;display:inline-flex;position:relative}.tab-label{line-height:1}.tab-dot{border-radius:var(--r-pill);background:var(--kanji);border:2px solid var(--bg-raised);width:8px;height:8px;position:absolute;top:-2px;right:-5px}button.tab{cursor:pointer;font:inherit;background:0 0;border:0}.tab-sheet-backdrop{z-index:70;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;align-items:flex-end;display:flex;position:fixed;inset:0}.tab-sheet{width:100%;max-height:80vh;padding:12px 16px calc(20px + env(safe-area-inset-bottom));background:var(--bg-raised);border-top:1px solid var(--border);box-shadow:var(--shadow-4);border-top-left-radius:16px;border-top-right-radius:16px;overflow-y:auto}.tab-sheet-head{color:var(--text);font-size:15px;font-weight:var(--fw-semibold);justify-content:space-between;align-items:center;padding:6px 4px 12px;display:flex}.tab-sheet-close{border-radius:var(--radius-sm);background:var(--surface);width:32px;height:32px;color:var(--muted);cursor:pointer;border:0;justify-content:center;align-items:center;display:inline-flex}.tab-sheet-close:hover{background:var(--surface-3);color:var(--text)}.module-switcher-sheet .module-switcher{border-bottom:none;margin-bottom:0;padding-bottom:0}@media (prefers-reduced-motion:no-preference){.tab-sheet{animation:sheet-up var(--dur-fast) var(--ease-standard)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}}@media (max-width:900px){.rail{display:none}.app-frame{flex-direction:column}.workspace{padding:20px 16px calc(var(--tabbar-height) + 24px + env(safe-area-inset-bottom))}.tabbar{z-index:60;height:calc(var(--tabbar-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--glass-bg);border-top:1px solid var(--border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-4);align-items:stretch;gap:2px;display:flex;position:fixed;bottom:0;left:0;right:0}.lesson-slides-session{padding-bottom:58px}.lesson-slide-navigation{z-index:50;right:0;bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom));background:var(--glass-bg);border-top:1px solid var(--border);min-height:58px;-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-4);padding:10px 16px;position:fixed;left:0}.answer-row .answer-field{padding:15px 16px;font-size:17px}.button.large{width:100%}.grid.wide{grid-template-columns:1fr}.forecast-row{grid-template-columns:80px 1fr 64px}.data-table th,.data-table td{padding:8px}.data-table{-webkit-overflow-scrolling:touch;max-width:100%;display:block;overflow-x:auto}}@media (max-width:560px){.workspace{gap:16px}.hero-content h1,.hero-content h2{font-size:var(--fs-xl)}.hero-number{font-size:var(--fs-3xl)}.glyph{font-size:var(--glyph-md)}.question-card{padding:22px 16px}.subject-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}}.choice-list{flex-direction:column;gap:10px;margin:16px 0 0;padding:0;list-style:none;display:flex}.choice{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);width:100%;color:var(--text);font-size:var(--fs-md);text-align:left;cursor:pointer;align-items:center;gap:12px;padding:14px 16px;transition:border-color .15s,background .15s;display:flex}.choice:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-hover)}.choice:disabled{cursor:default}.choice-marker{border-radius:var(--r-pill);background:var(--surface-3);width:24px;height:24px;color:var(--muted);font-size:var(--fs-sm);flex:none;justify-content:center;align-items:center;display:inline-flex}.choice-text{flex:auto}.choice-icon{flex:none;font-weight:700}.choice-selected{border-color:var(--jlpt);background:var(--jlpt-soft)}.choice-correct{border-color:var(--success);background:var(--success-soft);color:var(--text)}.choice-incorrect{border-color:var(--danger);background:var(--danger-soft);color:var(--text)}.choice-muted{opacity:.6}.jlpt-passage{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);max-height:240px;margin-bottom:16px;padding:14px 16px;overflow-y:auto}.jlpt-passage p{white-space:pre-wrap;margin:6px 0 0}.jlpt-prompt{font-size:var(--fs-lg);line-height:1.7}.jlpt-target{background:var(--jlpt-soft);color:var(--jlpt);border-radius:var(--r-sm);padding:0 4px;font-weight:700}.mock-timer{border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-size:var(--fs-xl);letter-spacing:.02em;font-variant-numeric:tabular-nums;padding:6px 14px;font-weight:700;display:inline-block}.mock-timer.warning{background:var(--danger-soft);color:var(--danger)}.mock-nav-grid{grid-template-columns:repeat(auto-fill,minmax(38px,1fr));gap:6px;margin:12px 0;display:grid}.mock-nav-cell{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);min-height:38px;color:var(--muted);font-size:var(--fs-sm);cursor:pointer;font-weight:600;transition:background .12s,border-color .12s,color .12s}.mock-nav-cell:hover{border-color:var(--jlpt)}.mock-nav-cell.answered{background:var(--jlpt-soft);color:var(--text);border-color:var(--jlpt-soft)}.mock-nav-cell.current{border-color:var(--jlpt);color:var(--text);box-shadow:0 0 0 2px var(--jlpt-soft)}.jlpt-drill-submit-actions{margin-top:16px}.mock-nav-toggle{display:none}@media (max-width:900px){.jlpt-drill-awaiting-answer{padding-bottom:92px;animation:none;transform:none}.jlpt-drill-submit-actions{z-index:50;right:0;bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom));background:var(--glass-bg);border-top:1px solid var(--border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-4);margin:0;padding:10px 16px;position:fixed;left:0}.jlpt-drill-submit-actions .button{width:100%}.jlpt-passage{max-height:none;overflow-y:visible}.mock-session-status{z-index:40;background:var(--glass-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-4);align-items:center;margin:0;padding:10px 16px;position:fixed;top:0;left:0;right:0}.topbar:has(+.mock-session-status){margin-top:72px}.mock-nav-toggle{justify-content:space-between;width:100%;display:flex}.mock-question-nav .mock-nav-grid{display:none}.mock-question-nav.open .mock-nav-grid{display:grid}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
