:root{color-scheme:light dark;font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;--bg: #f1eef8;--surface: #ffffff;--surface-2: #f7f4fd;--ink: #241d33;--ink-soft: #5b5270;--ink-faint: #8b83a0;--line: #e6e0f2;--coral: #ff6b57;--coral-ink: #c53a29;--teal: #12b3a1;--teal-ink: #0a7d70;--amber: #f2a73b;--amber-ink: #9a6a12;--crit: #e5484d;--shadow: 0 1px 0 #efe9fb, 0 10px 26px -14px rgba(43, 25, 80, .35);--r: 18px;--r-sm: 11px;--spacing-compact: 10px}@media (prefers-color-scheme: dark){:root{--bg: #16121f;--surface: #221b30;--surface-2: #1c1626;--ink: #f3eef9;--ink-soft: #b7add0;--ink-faint: #877ea0;--line: #342a47;--coral: #ff7a68;--coral-ink: #ffb3a7;--teal: #2bd0bd;--teal-ink: #7fe6da;--amber: #f6b95a;--amber-ink: #f6b95a;--shadow: 0 1px 0 #2c2340, 0 14px 30px -16px rgba(0, 0, 0, .6)}}:root[data-theme=light]{--bg: #f1eef8;--surface: #ffffff;--surface-2: #f7f4fd;--ink: #241d33;--ink-soft: #5b5270;--ink-faint: #8b83a0;--line: #e6e0f2;--coral: #ff6b57;--coral-ink: #c53a29;--teal: #12b3a1;--teal-ink: #0a7d70;--amber: #f2a73b;--amber-ink: #9a6a12;--shadow: 0 1px 0 #efe9fb, 0 10px 26px -14px rgba(43, 25, 80, .35)}:root[data-theme=dark]{--bg: #16121f;--surface: #221b30;--surface-2: #1c1626;--ink: #f3eef9;--ink-soft: #b7add0;--ink-faint: #877ea0;--line: #342a47;--coral: #ff7a68;--coral-ink: #ffb3a7;--teal: #2bd0bd;--teal-ink: #7fe6da;--amber: #f6b95a;--amber-ink: #f6b95a;--shadow: 0 1px 0 #2c2340, 0 14px 30px -16px rgba(0, 0, 0, .6)}*{box-sizing:border-box}body{min-height:100vh;margin:0;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}button{min-height:44px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit;font-weight:650;cursor:pointer;transition:transform .12s ease,border-color .12s ease,background .12s ease}button:hover:not(:disabled){border-color:var(--coral);transform:translateY(-1px)}button:focus-visible,a:focus-visible{outline:3px solid color-mix(in srgb,var(--coral) 55%,transparent);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.45}.muted{color:var(--ink-faint)}.small{font-size:12px;color:var(--ink-faint)}.error{color:var(--crit);font-weight:650}.app-shell{width:min(1240px,100%);margin:0 auto;padding:22px 20px 60px}.app-header{display:flex;align-items:center;gap:14px;margin-bottom:18px}.brand-mark{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:13px;background:linear-gradient(150deg,var(--coral),#ff9270);box-shadow:0 6px 16px -6px var(--coral);color:#fff;font-size:19px;font-weight:800;transform:rotate(-4deg)}.app-header .brand-copy{min-width:0;flex:1}.app-header h1{overflow:hidden;margin:0;font-size:clamp(18px,2.4vw,24px);letter-spacing:-.02em;line-height:1.15;text-overflow:ellipsis;white-space:nowrap}.brand-copy p{margin:2px 0 0;color:var(--ink-faint);font-size:12.5px}.header-stats{display:flex;align-items:center;gap:10px;padding:6px 8px 6px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:var(--shadow)}.header-stats span{color:var(--ink-faint);font-size:12px;font-weight:650}.header-stats strong{color:var(--teal-ink);font-size:17px;font-variant-numeric:tabular-nums}.theme-toggle,.settings-toggle{flex:none;width:44px;min-height:44px;border-radius:var(--r-sm);color:var(--ink-soft);font-size:17px}.learner-chip{display:flex;align-items:center;gap:9px;padding:5px 12px 5px 6px;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:var(--shadow);font-size:13px}.learner-avatar{flex:none;width:30px;height:30px;border-radius:50%;background:linear-gradient(140deg,#8b7be6,var(--teal))}.learner-chip select{border:0;background:transparent;color:var(--ink);font:inherit;font-weight:700}.learner-meta{color:var(--ink-faint);font-size:11.5px}.view-tabs{display:flex;gap:6px;margin-bottom:20px;padding:5px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}.view-tabs button{flex:1;min-height:42px;border:0;border-radius:10px;background:transparent;color:var(--ink-soft);font-size:14px;font-weight:650}.view-tabs button:hover:not(:disabled){transform:none;color:var(--ink)}.view-tabs button.active-tab{background:var(--surface);box-shadow:var(--shadow);color:var(--ink)}.tab-n{margin-right:7px;color:var(--ink-faint);font-weight:700;font-variant-numeric:tabular-nums}.today-view{display:grid;gap:16px}.session-cards{display:grid;grid-template-columns:1fr;gap:16px}.scard{display:grid;gap:10px;align-content:start;padding:18px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}.scard.active{border-color:color-mix(in srgb,var(--coral) 55%,var(--line))}.session-pill{justify-self:start;padding:4px 10px;border-radius:999px;font-size:11.5px;font-weight:700}.session-pill.learn{background:color-mix(in srgb,var(--coral) 16%,transparent);color:var(--coral-ink)}.scard-blurb{margin:0;color:var(--ink-soft);font-size:13px}.scard-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.go-button{border:0;border-radius:12px;padding:0 18px;background:var(--coral);color:#fff;font-weight:700;font-size:14px;box-shadow:0 8px 18px -8px var(--coral)}.go-button:hover:not(:disabled){border:0}.go-button:disabled{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-faint);box-shadow:none}.error-banner{margin-bottom:14px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--crit) 35%,var(--line));border-radius:var(--r-sm);background:color-mix(in srgb,var(--crit) 9%,var(--surface));color:var(--crit);font-weight:650}.card,.user-dock,.empty-state,.status-panel{padding:18px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}.card h2{margin:0 0 6px;font-size:16px;letter-spacing:-.01em}.card h3{margin:16px 0 8px;font-size:13px;color:var(--ink-soft)}.empty-state h2{margin:0 0 6px}.empty-state p,.status-panel{color:var(--ink-soft)}.settings-view{display:grid;gap:16px}.session-length-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.session-length-btn{padding:6px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-soft);font-size:13px;font-weight:700}.session-length-btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--surface-2)}.session-length-btn.on{border-color:color-mix(in srgb,var(--teal) 55%,transparent);background:color-mix(in srgb,var(--teal) 15%,transparent);color:var(--teal-ink)}.notification-list{display:grid;gap:10px;margin:10px 0 14px}.notification-row{display:flex;align-items:center;gap:10px}.notification-row input[type=time]{padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit}.welcome-gate{display:grid;gap:28px;width:min(720px,100%);margin:0 auto;padding:48px 20px 32px}.welcome-hero{text-align:center}.welcome-hero h1{margin:0;font-size:clamp(26px,4.4vw,38px);font-weight:800;letter-spacing:-.02em;line-height:1.2}.welcome-hero em{color:var(--coral-ink);font-style:normal}.welcome-hero .rotate-word{display:inline-block;transition:opacity .22s ease,transform .22s ease}.welcome-hero .rotate-word.swapping{opacity:0;transform:translateY(6px)}@media (prefers-reduced-motion: reduce){.welcome-hero .rotate-word{transition:none}}.welcome-highlights{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}@media (max-width: 640px){.welcome-highlights{grid-template-columns:1fr}}.welcome-highlight-card{display:grid;gap:6px;padding:16px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);text-align:center}.welcome-highlight-card span{font-size:24px}.welcome-highlight-card h3{margin:0;font-size:14px}.welcome-highlight-card p{margin:0;color:var(--ink-soft);font-size:12.5px}.welcome-signup-card{display:grid;gap:10px;padding:20px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}.welcome-signup-card input[type=email]{padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font:inherit}.language-pills{display:flex;flex-wrap:wrap;gap:8px}.language-pill{padding:6px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-soft);font-size:13px;font-weight:700}.language-pill[aria-checked=true]{border-color:color-mix(in srgb,var(--teal) 55%,transparent);background:color-mix(in srgb,var(--teal) 15%,transparent);color:var(--teal-ink)}.page-footer{display:flex;justify-content:center}.footer-language-link{min-height:auto;border:0;background:transparent;color:var(--ink-faint);font-size:12.5px;font-weight:600}.footer-language-link:hover:not(:disabled){border:0;color:var(--ink-soft);transform:none}.session-tabs{display:flex;gap:6px;margin-bottom:14px;padding:5px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}.session-tabs button{flex:1;min-height:40px;border:0;border-radius:10px;background:transparent;color:var(--ink-soft);font-size:14px}.session-tabs button:hover:not(:disabled){transform:none;color:var(--ink)}.session-tabs button.active-tab{background:var(--surface);box-shadow:var(--shadow);color:var(--ink)}.player-layout{display:grid;gap:16px}.button-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.button-row button{min-width:96px;padding:0 14px;font-size:13.5px}.button-row button.active-tab{border-color:color-mix(in srgb,var(--coral) 55%,var(--line));background:color-mix(in srgb,var(--coral) 10%,var(--surface));color:var(--coral-ink)}.status-box{min-height:26px;margin:4px 0 10px;font-size:13.5px;font-weight:650}.meta-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px 14px;padding-top:12px;border-top:1px solid var(--line);color:var(--ink-soft);font-size:12.5px}.meta-grid strong{color:var(--ink)}.stage-card{display:grid;gap:14px}.stage-card.is-recording{border-color:color-mix(in srgb,var(--coral) 55%,var(--line))}.stage-top{display:flex;align-items:center;justify-content:flex-end;gap:10px}.stage-count{color:var(--ink-faint);font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}.stage-body{display:grid;grid-template-columns:auto minmax(0,1fr);gap:18px;align-items:center}.record-orb{display:grid;place-items:center;width:84px;height:84px;border-radius:50%;background:radial-gradient(120% 120% at 30% 25%,#ff9070,var(--coral));box-shadow:0 14px 30px -10px var(--coral);color:#fff;font-size:26px;font-weight:800;position:relative}.record-orb.live:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid color-mix(in srgb,var(--coral) 50%,transparent);animation:orb-pulse 1.6s infinite}@keyframes orb-pulse{0%{transform:scale(1);opacity:.7}70%{transform:scale(1.18);opacity:0}to{opacity:0}}.stage-copy{display:grid;gap:6px;min-width:0}.recording-bar{width:100%;height:10px;margin-top:14px;border-radius:999px;background:color-mix(in srgb,var(--line) 65%,transparent);overflow:hidden}.recording-bar-fill{display:block;height:100%;width:100%;transform-origin:left center;border-radius:inherit;background:linear-gradient(90deg,var(--teal),color-mix(in srgb,var(--teal) 70%,white));animation:recording-bar-drain var(--recording-duration, 5s) linear forwards}.recording-bar--speaking .recording-bar-fill{animation-play-state:paused;background:linear-gradient(90deg,var(--amber),color-mix(in srgb,var(--amber) 70%,white))}@keyframes recording-bar-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion: reduce){.recording-bar-fill{animation:none;transform:scaleX(.4)}}.control-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:14px;border-top:1px solid var(--line)}.control-strip button{min-width:0;padding:0 14px;font-size:13.5px}.strip-gap{flex:1}.lesson-details{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}.lesson-details summary{padding:14px 18px;color:var(--ink-soft);font-size:13.5px;font-weight:700;cursor:pointer;list-style-position:inside}.lesson-details summary:hover{color:var(--ink)}.details-body{display:grid;gap:12px;padding:0 18px 18px}.instruction{color:var(--ink-soft);font-size:14px}.target-line{color:var(--ink);font-size:18px;font-weight:600}.timeline{display:grid;gap:6px;max-height:420px;padding-right:4px;overflow:auto}.step{padding:9px 12px;border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);font-size:13px}.step.native{border-left-color:color-mix(in srgb,var(--teal) 55%,var(--line))}.step.learner,.step.record{border-left-color:color-mix(in srgb,var(--coral) 55%,var(--line))}.step.instructor{border-left-color:color-mix(in srgb,var(--amber) 60%,var(--line))}.step.done{opacity:.55}.step.active{border-color:var(--coral);background:color-mix(in srgb,var(--coral) 7%,var(--surface));opacity:1}.step-type{color:var(--ink-faint);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.step-line{margin-top:2px;font-weight:650}.step-translation{color:var(--ink-faint);font-size:12px}.feedback-list{display:grid;gap:10px}.feedback-summary{margin:4px 0 2px;font-weight:650}.attempt-card{display:grid;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);animation:attempt-rise .3s cubic-bezier(.2,.8,.25,1) both}@keyframes attempt-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.attempt-card.pass{border-left:4px solid var(--teal)}.attempt-card.retry{border-left:4px solid var(--amber)}.attempt-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.attempt-head strong{font-size:15px;overflow-wrap:anywhere}.verdict{flex:none;padding:3px 9px;border-radius:8px;font-size:11.5px;font-weight:750;letter-spacing:.02em}.verdict.pass{background:color-mix(in srgb,var(--teal) 16%,transparent);color:var(--teal-ink)}.verdict.retry{background:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber-ink)}.verdict.pending{background:var(--surface);border:1px dashed var(--line);color:var(--ink-faint)}.attempt-audio{width:100%;height:34px}.heard-line{font-size:13.5px}.heard-label{display:block;margin-bottom:2px;color:var(--ink-faint);font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.tok-ok{color:var(--ink)}.tok-bad{color:var(--crit);text-decoration:underline wavy color-mix(in srgb,var(--crit) 60%,transparent);text-underline-offset:3px}.tok-miss{padding:0 3px;border-radius:4px;background:color-mix(in srgb,var(--amber) 18%,transparent);color:var(--ink-faint)}.conf-row{display:flex;align-items:center;gap:10px}.conf-track{display:block;flex:1;height:6px;border:1px solid var(--line);border-radius:999px;background:var(--surface);overflow:hidden}.conf-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--amber),var(--teal));transition:width .5s cubic-bezier(.2,.8,.25,1)}.conf-value{color:var(--ink-faint);font-size:11.5px;font-variant-numeric:tabular-nums}.attempt-outcome{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.outcome-chip{min-height:auto;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:11.5px;font-weight:700}.outcome-chip.amendable{cursor:pointer}.outcome-chip.amendable:hover:not(:disabled){border-style:solid;border-color:var(--coral);transform:none}.outcome-chip.success{border-color:color-mix(in srgb,var(--teal) 40%,var(--line));color:var(--teal-ink)}.outcome-chip.hesitated,.outcome-chip.partial{border-color:color-mix(in srgb,var(--amber) 45%,var(--line));color:var(--amber-ink)}.outcome-chip.missed{border-color:color-mix(in srgb,var(--crit) 40%,var(--line));color:var(--crit)}.mastery-delta{color:var(--ink-soft);font-size:12.5px;font-variant-numeric:tabular-nums}.mastery-list{display:grid;gap:4px;margin:8px 0 0;padding-left:18px;font-size:13px}.mastery-bars{display:grid;gap:8px;margin-top:10px}.mastery-bar-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 34px;gap:8px;align-items:center;font-size:13px}.mastery-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mastery-track{display:block;height:8px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);overflow:hidden}.mastery-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--coral),var(--teal));transition:width .5s cubic-bezier(.2,.8,.25,1)}.mastery-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.progress-view{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:16px;align-items:start}.progress-column-main{display:grid;gap:16px}.catalog-progress{display:grid;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.catalog-line{margin:0;color:var(--ink-soft);font-size:13px}.catalog-line strong{color:var(--ink);font-variant-numeric:tabular-nums}.unit-row{display:grid;gap:5px}.unit-head{display:flex;justify-content:space-between;gap:10px;font-size:13px}.unit-title{overflow:hidden;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.unit-frac{color:var(--ink-faint);font-variant-numeric:tabular-nums}.unit-meta{display:flex;gap:8px;align-items:center}.unit-cefr{color:var(--teal-ink);font-size:11px;font-weight:700}.exam-ready{padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--teal) 15%,transparent);color:var(--teal-ink);font-size:10.5px;font-weight:750}.lesson-progress{border-top:1px solid var(--line)}.lesson-progress:first-of-type{border-top:none}.collapse-header{display:flex;align-items:center;gap:8px;width:100%;padding:10px 4px;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.collapse-header:hover .collapse-header-label{text-decoration:underline;text-underline-offset:2px}.collapse-header-label{font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-progress-title.collapse-header{font-size:15px}.lesson-progress-head{display:flex;align-items:center;gap:4px}.lesson-retry-button{flex:0 0 auto;padding:6px;border:none;background:none;color:var(--ink-soft);font:inherit;font-size:14px;line-height:1;cursor:pointer}.lesson-retry-button:disabled{opacity:.4;cursor:default}.collapse-header-count{flex:0 0 auto;color:var(--ink-faint);font-size:11.5px;font-weight:600}.collapse-chevron{margin-left:auto;flex:0 0 auto;color:var(--ink-soft);font-size:11px}.phrase-family-list{display:grid;gap:2px;padding-bottom:8px}.phrase-row{display:grid;grid-template-columns:minmax(0,1fr) 64px 36px;gap:10px;align-items:center;width:100%;min-height:40px;padding:7px 10px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;font-size:13px;font-weight:600;text-align:left}.phrase-row:hover:not(:disabled){border-color:var(--line);background:var(--surface-2);transform:none}.phrase-row.open{border-color:color-mix(in srgb,var(--coral) 45%,var(--line));background:color-mix(in srgb,var(--coral) 6%,var(--surface))}.phrase-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phrase-mastery{color:var(--ink-soft);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}.phrase-main{display:flex;align-items:center;gap:6px}.phrase-main .phrase-row{flex:1 1 auto;min-width:0}.phrase-controls{display:flex;align-items:center;gap:6px;flex:0 0 auto}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-size:15px;line-height:1;cursor:pointer}.icon-btn:hover{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--surface-2)}.mastery-toggle{min-width:104px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-soft);font-size:11.5px;font-weight:700;white-space:nowrap;cursor:pointer}.mastery-toggle:hover:not(:disabled){border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--surface-2)}.mastery-toggle.on{border-color:color-mix(in srgb,var(--teal) 55%,transparent);background:color-mix(in srgb,var(--teal) 15%,transparent);color:var(--teal-ink)}.mastery-toggle:disabled{opacity:.6;cursor:default}.review-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto;gap:2px 12px;width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);text-align:left;cursor:pointer}.review-cta:hover{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--surface-2)}.review-cta-title{grid-column:1;font-size:14px;font-weight:750}.review-cta-sub{grid-column:1;color:var(--ink-soft);font-size:12px;font-weight:500}.review-cta-chevron{grid-column:2;grid-row:1 / span 2;align-self:center;color:var(--ink-soft);font-size:11px}.review-list{margin-top:10px}.skim-row{display:flex;align-items:center;gap:10px;min-height:40px;padding:7px 10px;border:1px solid transparent;border-radius:var(--r-sm);font-size:13px;font-weight:600}.skim-row:hover{border-color:var(--line);background:var(--surface-2)}.skim-row .phrase-label{flex:1 1 auto;min-width:0}.review-list .phrase-label{display:flex;flex-direction:column;overflow:visible;white-space:normal}.review-list .phrase-label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.phrase-romanization,.phrase-translation{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--ink-faint)}.skim-row .phrase-controls{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px}.skim-row.mastered .phrase-label{color:var(--ink-soft)}.skim-row-wrap{display:flex;flex-direction:column}.skim-row.is-disabled{opacity:.55}.skim-row.is-disabled .phrase-label-text{color:var(--ink-faint);text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--ink-faint) 55%,transparent)}.phrase-enable-toggle{display:inline-flex;align-items:center;gap:8px}.icon-toggle{flex:0 0 auto;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);cursor:pointer;font-size:14px;line-height:1;color:var(--ink-soft)}.icon-toggle:hover:not(:disabled){border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--surface-2)}.icon-toggle:disabled{cursor:default;opacity:.6}.icon-toggle.is-off{color:var(--ink-faint)}.phrase-state-chip{min-height:auto;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:11.5px;font-weight:700;color:var(--ink-faint);white-space:nowrap}.phrase-state-chip.is-disabled{border-color:color-mix(in srgb,var(--crit) 35%,var(--line));color:var(--crit)}.phrase-state-error{margin:4px 0 0;color:var(--crit);font-size:11.5px}.spark,.spark-empty{display:block;justify-self:center}.spark-empty{width:64px}.phrase-detail{display:grid;gap:7px;margin:2px 0 8px;padding:10px 12px;border:1px dashed var(--line);border-radius:var(--r-sm);background:var(--surface-2);animation:attempt-rise .25s cubic-bezier(.2,.8,.25,1) both}.stage-chip{justify-self:start;padding:3px 9px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink-soft);font-size:10.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.attempt-log-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12px}.attempt-log-when{color:var(--ink-faint);font-variant-numeric:tabular-nums}.attempt-log-heard{color:var(--ink-soft);overflow-wrap:anywhere}.amend-row{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 4px;animation:attempt-rise .2s cubic-bezier(.2,.8,.25,1) both}.amend-option{min-height:28px;padding:2px 10px;border-radius:999px;font-size:11.5px;font-weight:700}.amend-option.current{opacity:.45}.amend-option.success:hover:not(:disabled){border-color:var(--teal);color:var(--teal-ink)}.amend-option.missed:hover:not(:disabled){border-color:var(--crit);color:var(--crit)}.skim-label-btn{border:none;background:none;padding:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.skim-label-btn:hover:not(:disabled){border-color:transparent;transform:none;text-decoration:underline;text-underline-offset:2px}.phrase-card-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,#16121f 55%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:phrase-card-fade .14s ease}.phrase-card{position:relative;width:min(420px,100%);max-height:calc(100vh - 40px);overflow-y:auto;padding:20px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);animation:phrase-card-pop .16s ease}.phrase-card-close{position:absolute;top:12px;right:12px}.phrase-card-head{display:flex;flex-direction:column;gap:2px;padding-right:40px;margin-bottom:14px}.phrase-card-title{margin:0;font-size:18px;letter-spacing:-.01em}.phrase-card-romanization{font-size:13px;color:var(--ink-faint)}.phrase-card-fields{display:grid;gap:12px;margin:0 0 16px}.phrase-card-field{display:flex;flex-direction:column;gap:2px}.phrase-card-field dt{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint)}.phrase-card-field dd{margin:0;font-size:15px;unicode-bidi:plaintext}.phrase-card-reveal{padding:4px 10px;font-size:13px;color:var(--ink-soft);border:1px dashed var(--line);border-radius:var(--r-sm);background:transparent;cursor:pointer}.phrase-card-reveal:hover{color:var(--ink);border-color:var(--ink-faint)}.phrase-card-pronunciation{font-variant:small-caps;letter-spacing:.02em}.phrase-card-history{padding-top:12px;border-top:1px solid var(--line)}.phrase-card-subhead{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}@keyframes phrase-card-fade{0%{opacity:0}}@keyframes phrase-card-pop{0%{opacity:0;transform:translateY(6px) scale(.98)}}@media (max-width: 960px){.session-cards,.progress-view{grid-template-columns:1fr}.stage-body{grid-template-columns:1fr;justify-items:center;text-align:center}.app-header{flex-wrap:wrap}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
