: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;--surface-3: #efeaf9;--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;--fs-section: 26px;--fs-card-title: 20px;--fs-subhead: 13.5px;--fs-body: 15px;--fs-meta: 12.5px;--heat-0: #e6e0f2;--heat-1: #d7c9ee;--heat-2: #b9a0e0;--heat-3: #8f6bd1;--resurface-error: #c76b7a;--resurface-error-ink: #8a3d49;--resurface-missed: #5b84c4;--resurface-missed-ink: #33578f;--resurface-hesitated: #b98a3a;--resurface-hesitated-ink: #7a5a1f}@media (prefers-color-scheme: dark){:root{--bg: #14101d;--surface: #272033;--surface-2: #1e1829;--surface-3: #332a45;--ink: #f3eef9;--ink-soft: #b7add0;--ink-faint: #877ea0;--line: #40355a;--coral: #ff7a68;--coral-ink: #ffb3a7;--teal: #2bd0bd;--teal-ink: #7fe6da;--amber: #f6b95a;--amber-ink: #f6b95a;--shadow: 0 0 0 1px #3b3057, 0 16px 34px -16px rgba(0, 0, 0, .75);--heat-0: #3a3050;--heat-1: #4a3c66;--heat-2: #6a539a;--heat-3: #a985ea;--resurface-error: #e08a97;--resurface-error-ink: #f3b6bf;--resurface-missed: #85a6df;--resurface-missed-ink: #b6cbf0;--resurface-hesitated: #d9ab5c;--resurface-hesitated-ink: #eec988}}:root[data-theme=light]{--bg: #f1eef8;--surface: #ffffff;--surface-2: #f7f4fd;--surface-3: #efeaf9;--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);--heat-0: #e6e0f2;--heat-1: #d7c9ee;--heat-2: #b9a0e0;--heat-3: #8f6bd1;--resurface-error: #c76b7a;--resurface-error-ink: #8a3d49;--resurface-missed: #5b84c4;--resurface-missed-ink: #33578f;--resurface-hesitated: #b98a3a;--resurface-hesitated-ink: #7a5a1f}:root[data-theme=dark]{--bg: #14101d;--surface: #272033;--surface-2: #1e1829;--surface-3: #332a45;--ink: #f3eef9;--ink-soft: #b7add0;--ink-faint: #877ea0;--line: #40355a;--coral: #ff7a68;--coral-ink: #ffb3a7;--teal: #2bd0bd;--teal-ink: #7fe6da;--amber: #f6b95a;--amber-ink: #f6b95a;--shadow: 0 0 0 1px #3b3057, 0 16px 34px -16px rgba(0, 0, 0, .75);--heat-0: #3a3050;--heat-1: #4a3c66;--heat-2: #6a539a;--heat-3: #a985ea;--resurface-error: #e08a97;--resurface-error-ink: #f3b6bf;--resurface-missed: #85a6df;--resurface-missed-ink: #b6cbf0;--resurface-hesitated: #d9ab5c;--resurface-hesitated-ink: #eec988}*{box-sizing:border-box}body{min-height:100vh;margin:0;font-size:var(--fs-body);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(20px,2.8vw,var(--fs-section));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}.settings-toggle.active-tab{background:var(--surface-2);box-shadow:var(--shadow);color:var(--ink)}.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:var(--surface-3);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}.next-lesson-card{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);transition:transform .12s ease,border-color .12s ease}.next-lesson-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--coral) 45%,var(--line))}.next-lesson-card-done{background:var(--surface-2)}.next-lesson-headline{margin:0;font-size:15px;font-weight:650}.ritual-persona{display:flex;align-items:flex-start;gap:10px}.ritual-persona-avatar{flex:0 0 auto}.ritual-persona-line{margin:0;color:var(--ink-soft);font-size:13px}.ritual-pills{display:flex;flex-wrap:wrap;gap:8px}.ritual-pill{padding:4px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--ink-soft);font-size:11.5px;font-weight:700}.next-lesson-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.go-button{border:0;border-radius:12px;min-width:104px;padding:0 10px;background:var(--coral);color:#fff;font-weight:700;font-size:14px;white-space:nowrap;box-shadow:0 8px 18px -8px var(--coral)}.go-button:hover:not(:disabled){border:0}.quiet-button{border:1px solid var(--line);border-radius:12px;padding:8px 16px;background:transparent;color:var(--ink-soft);font-weight:600;font-size:13.5px}.quiet-button:hover:not(:disabled){background:var(--surface-2)}.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}.nudge{margin:8px 0 0;padding:8px 10px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--amber) 12%,var(--surface));color:var(--amber-ink);font-size:.9em}.in-app-browser-banner{margin:12px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--amber) 40%,var(--line));border-radius:var(--r-sm);background:color-mix(in srgb,var(--amber) 12%,var(--surface));color:var(--amber-ink);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:var(--fs-card-title);letter-spacing:-.01em}.card h3{margin:16px 0 8px;font-size:var(--fs-subhead);color:var(--ink-soft)}.empty-state h2{margin:0 0 6px;font-size:var(--fs-card-title)}.empty-state p,.status-panel{color:var(--ink-soft)}.tone-cheat-sheet-primer{margin:0 0 14px;color:var(--ink-soft);font-size:13px}.tone-grid{display:grid;grid-template-columns:repeat(3,minmax(110px,1fr));gap:10px}.tone-cell{display:grid;justify-items:center;gap:4px;padding:12px 8px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);text-align:center;position:relative}.tone-cell-confusable-badge{position:absolute;top:6px;right:6px;width:18px;height:18px;border-radius:999px;border:none;background:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber-ink);font-size:11px;font-weight:700;line-height:1;cursor:pointer;padding:0}.tone-cell-confusable-badge[aria-pressed=true]{background:var(--amber);color:var(--surface)}.tone-cheat-sheet-footnotes{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);display:grid;gap:8px}.tone-cheat-sheet-footnote{margin:0;font-size:13px;color:var(--ink-soft);line-height:1.5}.tone-cheat-sheet-footnote-glyphs{color:var(--amber-ink);font-weight:700;font-variant-numeric:tabular-nums;margin-right:8px}.tone-cell-syllable{font-size:15px;font-weight:700;color:var(--ink)}.tone-cell-glyph{color:var(--teal-ink);font-size:11px}.tone-contour{color:var(--coral-ink)}.tone-cell-character{font-size:16px;color:var(--ink)}.tone-cell-gloss{font-size:12px;color:var(--ink-faint)}.tone-cell-speaker{width:28px;height:28px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13px;line-height:1;cursor:pointer}.tone-cell-speaker:hover{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:color-mix(in srgb,var(--teal) 15%,transparent)}.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) 18%,var(--surface));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) 18%,var(--surface));color:var(--teal-ink)}.page-footer{display:flex;justify-content:center}.footer-language-link{min-height:auto;border:1px solid var(--line);border-radius:12px;padding:8px 12px;background:transparent;color:var(--ink-soft);font-size:13.5px;font-weight:600;cursor:pointer}.footer-language-link:hover:not(:disabled){background:var(--surface-2);transform:none}.share-link{margin-top:8px}.share-link-panel{display:flex;flex-direction:column;gap:12px;margin-top:12px;padding:16px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}.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;align-content:center;justify-items:center;gap:16px;min-height:min(62vh,540px)}.stage-frame{display:grid;gap:12px;width:min(100%,460px)}.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;padding:22px 24px 20px;text-align:center}.stage-card.is-recording{border-color:color-mix(in srgb,var(--coral) 55%,var(--line))}.stage-count{flex:none;padding:0 6px;text-align:center;color:var(--ink-faint);font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}.stage-body{display:grid;gap:18px;align-items:center}.stage-body:has(.record-orb){grid-template-columns:auto minmax(0,1fr)}.record-orb{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:radial-gradient(120% 120% at 30% 25%,#ff9070,var(--coral));box-shadow:0 10px 22px -10px var(--coral);color:#fff;font-size:18px;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:10px;min-width:0}.stage-activity{display:inline-flex;align-items:center;justify-content:center;gap:8px;color:var(--teal);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.stage-equalizer{display:inline-flex;align-items:flex-end;gap:2px;width:22px;height:13px}.stage-equalizer i{flex:1;border-radius:1px;background:var(--teal);animation:equalizer-bounce .9s ease-in-out infinite}.stage-equalizer i:nth-child(1){height:60%;animation-delay:-.3s}.stage-equalizer i:nth-child(2){height:100%}.stage-equalizer i:nth-child(3){height:40%;animation-delay:-.6s}@keyframes equalizer-bounce{0%,to{transform:scaleY(.5)}50%{transform:scaleY(1)}}.finalizing-card{justify-items:center}.finalizing-ring{width:96px;height:96px;border-radius:50%;border:6px solid color-mix(in srgb,var(--teal) 20%,transparent);border-top-color:var(--teal);animation:finalizing-spin .9s linear infinite}@keyframes finalizing-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.finalizing-ring{animation:none}}.finalizing-subline{color:var(--ink-soft);font-size:13.5px}.recording-bar-label{display:block;margin-top:14px;font-size:11.5px;font-weight:600;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.recording-bar{width:100%;height:10px;margin-top:6px;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:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}.control-strip button{min-width:0;padding:0 14px;font-size:13.5px}.strip-gap{flex:1}.nav-cluster{display:inline-flex;align-items:center;gap:2px;flex-wrap:nowrap;padding:2px;border:1px solid var(--line);border-radius:10px}.nav-cluster button{height:30px;padding:0 9px;border:0;background:none;box-shadow:none}.nav-cluster button:disabled{opacity:1;color:var(--ink-faint);cursor:default}.mic-button{margin-left:auto}.mic-status{margin-left:auto;display:inline-flex;align-items:center;gap:6px;color:var(--ink-soft);font-size:12px;font-weight:600}.mic-dot{width:7px;height:7px;border-radius:50%;background:var(--teal)}.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:13px;line-height:1.6}.instruction *{color:inherit}.instruction b,.instruction strong,.instruction em{color:var(--ink);font-style:normal;font-weight:600}.target-line{color:var(--ink);font-size:clamp(28px,6vw,40px);font-weight:700;line-height:1.15;letter-spacing:-.5px}.literal-hint{display:flex;align-items:baseline;gap:8px;justify-self:stretch;text-align:left;padding:10px 14px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);animation:hint-in .32s ease-out}.literal-hint .bulb{flex:none;font-size:14px;line-height:1;transform:translateY(1px)}.literal-hint .copy{display:grid;gap:1px}.literal-hint .label{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.literal-hint .text{font-size:15px;font-style:italic;color:var(--ink-soft)}@keyframes hint-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.literal-hint{animation:none}}.resurface-badge{display:grid;gap:4px;margin-bottom:4px}.resurface-badge-pill{display:inline-flex;align-items:center;gap:6px;width:fit-content;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.resurface-badge-note{margin:0;font-size:var(--fs-subhead);color:var(--ink-soft)}.resurface-badge--error .resurface-badge-pill{background:color-mix(in srgb,var(--resurface-error) 18%,transparent);color:var(--resurface-error-ink)}.resurface-badge--missed .resurface-badge-pill{background:color-mix(in srgb,var(--resurface-missed) 18%,transparent);color:var(--resurface-missed-ink)}.resurface-badge--hesitated .resurface-badge-pill{background:color-mix(in srgb,var(--resurface-hesitated) 18%,transparent);color:var(--resurface-hesitated-ink)}.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}details.attempt-card{display:block;gap:0;padding:0}@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}.attempt-summary{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;list-style:none}.attempt-summary::-webkit-details-marker{display:none}.attempt-phrase{display:flex;align-items:baseline;gap:8px;min-width:0;flex:1 1 auto;overflow:hidden}.attempt-phrase strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attempt-playback{display:flex;align-items:center;gap:6px;flex:none}.playback-btn.playing{border-color:var(--coral);background:color-mix(in srgb,var(--coral) 16%,var(--surface))}.attempt-next-review{flex:none;white-space:nowrap}.attempt-card .chevron{flex:none;color:var(--ink-faint);transition:transform .2s ease}.attempt-card[open] .chevron{transform:rotate(180deg)}.attempt-body{display:grid;gap:8px;padding:0 14px 12px}.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)}.verdict.scoring{background:color-mix(in srgb,var(--teal) 14%,transparent);color:var(--teal-ink)}.verdict.scored{background:var(--teal);color:#fff}.attempt-audio{width:100%;height:34px;border-radius:999px;border:1px solid var(--line);background:var(--surface);accent-color:var(--coral)}.button-primary{background:var(--coral);border-color:var(--coral);color:#fff;box-shadow:0 8px 18px -8px var(--coral)}.button-primary:hover:not(:disabled){border-color:var(--coral)}.scoring-progress-wrap{margin-top:8px}.scoring-progress{width:100%;height:8px;border-radius:999px;background:color-mix(in srgb,var(--line) 65%,transparent);overflow:hidden}.scoring-progress-fill{display:block;height:100%;border-radius:inherit;background:var(--teal);transition:width .3s cubic-bezier(.2,.8,.25,1)}.scoring-progress-label{display:flex;justify-content:space-between;gap:8px;margin:6px 0 0;font-size:12px;color:var(--ink-faint)}.scheduling-strip{margin:4px 0 10px}.scheduling-strip-label{margin:0 0 6px;font-size:12px;color:var(--ink-faint)}.scheduling-strip-days{display:flex;gap:6px}.scheduling-strip-day{flex:1;display:grid;place-items:center;height:28px;border-radius:8px;font-size:11px;font-weight:600;color:var(--ink-faint);background:color-mix(in srgb,var(--line) 55%,transparent)}.scheduling-strip-day.filled{color:var(--ink-on-teal, #fff);background:var(--teal)}.scheduling-strip-day.pending{background:linear-gradient(90deg,color-mix(in srgb,var(--line) 55%,transparent) 25%,color-mix(in srgb,var(--line) 85%,transparent),color-mix(in srgb,var(--line) 55%,transparent) 75%);background-size:200% 100%;animation:scheduling-strip-shimmer 1.4s ease-in-out infinite}@keyframes scheduling-strip-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.scheduling-strip-day.pending{animation:none}}.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{position:relative;display:block;flex:1;height:6px;border:1px solid var(--line);border-radius:999px;background:var(--surface);overflow:visible}.conf-threshold{position:absolute;top:-2px;bottom:-2px;width:2px;margin-left:-1px;border-radius:1px;background:var(--ink);opacity:.55}.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-footer{display:grid;gap:8px}.attempt-outcome{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.attempt-flag-row{padding-top:8px;border-top:1px solid var(--line)}.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;display:inline-flex;align-items:center;gap:6px;padding-right:6px}.outcome-chip.amendable:hover:not(:disabled){border-style:solid;border-color:var(--coral);transform:none}.outcome-chip-caret{display:inline-flex;padding-left:6px;border-left:1px solid currentColor;opacity:.55;font-size:10px;line-height:1;transition:transform .15s ease}.outcome-chip.amendable[aria-expanded=true] .outcome-chip-caret{transform:rotate(180deg)}.outcome-chip.success{border-color:transparent;background:color-mix(in srgb,var(--teal) 16%,transparent);color:var(--teal-ink)}.outcome-chip.hesitated,.outcome-chip.partial{border-color:transparent;background:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber-ink)}.outcome-chip.missed{border-color:transparent;background:color-mix(in srgb,var(--crit) 16%,transparent);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)}.history-view{display:grid;gap:16px}.progress-view{display:grid;grid-template-columns:1fr;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) 18%,var(--surface));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:12px 14px;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background .14s ease,box-shadow .14s ease}.collapse-header:hover{background:color-mix(in srgb,var(--coral) 9%,var(--surface));box-shadow:inset 2px 0 0 var(--coral)}.collapse-header:focus-visible{outline:2px solid var(--coral);outline-offset:-2px}.collapse-header-label{font-weight:600;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;width:28px;height:28px;padding:0;border:none;border-radius:var(--r-sm);background:none;color:var(--ink-faint);font:inherit;font-size:14px;line-height:1;cursor:pointer;transition:background .14s ease,color .14s ease}.lesson-retry-button:hover:not(:disabled){background:color-mix(in srgb,var(--coral) 14%,transparent);color:var(--coral-ink)}.lesson-retry-button:disabled{opacity:.4;cursor:default}.lesson-retry-button-spacer{pointer-events:none}.collapse-header-count{flex:0 0 auto;color:var(--ink-faint);font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.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}.capability-card{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);overflow:hidden}.capability-card+.capability-card{margin-top:8px}.capability-card:nth-child(2n){background:color-mix(in srgb,var(--surface-3) 55%,var(--surface-2))}.capability-card-head{display:flex;align-items:center;gap:4px;padding-right:8px}.capability-card-toggle.collapse-header{display:grid;grid-template-columns:minmax(0,1fr) 68px 92px 20px;align-items:center;gap:8px;font-size:14px}.capability-card-open .capability-card-head{border-bottom:1px solid var(--line);background:var(--surface-2)}.capability-card-open .collapse-header:hover{background:color-mix(in srgb,var(--coral) 9%,var(--surface-2));box-shadow:none}.capability-card-open .progress-table-scroller{border:none;border-radius:0}.capability-card-label{white-space:normal;overflow:visible;text-overflow:clip}.capability-card-meta{display:contents}.collapse-header-count{text-align:right}.capability-state{padding:2px 8px;border:1px solid transparent;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.04em;white-space:nowrap;text-align:center;justify-self:center}.capability-state-mastered{border-color:color-mix(in srgb,var(--teal) 30%,transparent);background:color-mix(in srgb,var(--teal) 18%,var(--surface));color:var(--teal-ink)}.capability-state-in-progress{border-color:color-mix(in srgb,var(--coral) 30%,transparent);background:color-mix(in srgb,var(--coral) 18%,var(--surface));color:var(--coral-ink)}.capability-state-not-started{border-color:var(--line);background:var(--surface-3);color:var(--ink-faint)}.capability-summary{display:grid;gap:6px;margin:0 0 10px}.capability-summary strong{font-size:17px;font-weight:650;font-variant-numeric:tabular-nums}.capability-summary-sub{color:var(--ink-soft);font-size:var(--fs-meta)}.capability-meter{height:6px;max-width:220px;border-radius:999px;background:var(--surface-3)}.capability-meter-fill{display:block;height:100%;border-radius:999px;background:var(--teal)}.capability-empty{margin:0 0 12px;color:var(--ink-soft);font-size:var(--fs-meta);line-height:1.5}.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)}.notification-switch{flex:none;width:42px;height:24px;min-height:24px;padding:0;border:0;border-radius:999px;background:var(--surface-3);position:relative;cursor:pointer}.notification-switch:hover:not(:disabled){border:0;transform:none}.notification-switch-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s ease}.notification-switch.on{background:var(--teal)}.notification-switch.on .notification-switch-thumb{transform:translate(18px)}.notification-switch-label{min-width:28px;font-size:12px;font-weight:600;color:var(--ink-soft)}.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}.switch-toggle{flex:none;width:42px;height:24px;min-height:24px;padding:0;border:0;border-radius:999px;background:var(--surface-3);position:relative;cursor:pointer}.switch-toggle:disabled{cursor:default;opacity:.6}.switch-toggle.is-on{background:var(--teal)}.switch-toggle-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s ease}.switch-toggle.is-on .switch-toggle-thumb{transform:translate(18px)}.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)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.progress-table-scroller{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface)}.progress-table{width:100%;min-width:940px;border-collapse:collapse}.progress-table thead th{padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);color:var(--ink-faint);font-size:10.5px;font-weight:700;letter-spacing:.09em;text-align:left;text-transform:uppercase;white-space:nowrap}.progress-table tbody td{padding:11px 14px;font-size:13px;line-height:1.4;vertical-align:middle;transition:background .14s ease}.progress-table tbody tr:nth-child(2n):where(:not(.custom-phrase-drawer-row)):where(:not(.custom-phrase-add-row)) td{background:color-mix(in srgb,var(--surface-2) 62%,var(--surface))}.progress-table tbody tr:hover td{background:color-mix(in srgb,var(--coral) 9%,var(--surface))}.progress-table tbody tr:hover td:first-child{box-shadow:inset 2px 0 0 var(--coral)}.progress-table tbody tr.is-disabled td{opacity:.55}.progress-table .col-toggle{width:46px}.progress-table .col-lit{width:20%}.progress-table .col-notes{width:30%}.progress-table .col-state{width:118px;text-align:right}.progress-table .col-actions{width:72px}.progress-table-actions{display:flex;align-items:center;gap:4px}.progress-table .phrase-label{color:var(--ink);font-weight:600;white-space:normal}.progress-table tr.is-disabled .phrase-label-text{color:var(--ink-faint);text-decoration:line-through}.progress-table-target{color:var(--ink-soft);font-weight:500}.progress-table-literal{color:var(--ink-faint);font-style:italic;font-weight:500}.note-cell{display:flex;flex-direction:column;gap:4px}.note-field-row{display:flex;align-items:flex-start;gap:4px}.note-revert-btn{flex:0 0 auto}.note-field{width:100%;min-height:38px;padding:7px 9px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink);font:inherit;font-size:12.5px;line-height:1.35;resize:vertical}.note-field:hover:not(:disabled){border-color:color-mix(in srgb,var(--coral) 45%,var(--line))}.note-field:focus{outline:none;border-color:var(--coral);background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--coral) 20%,transparent)}.note-status{min-height:13px;color:var(--ink-faint);font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.note-status-dirty{color:var(--coral-ink)}.note-status-saved{color:var(--teal-ink)}.note-status-error{color:var(--crit)}.progress-table tbody tr.custom-phrase-row-editing td{background:color-mix(in srgb,var(--coral) 14%,var(--surface))}.custom-phrase-add-row td{padding:10px 12px!important}.custom-phrase-add-row-trigger{display:flex;align-items:center;justify-content:flex-start;gap:8px;width:100%;padding:4px 0;border:none;border-radius:var(--r-sm);background:transparent;color:var(--ink-soft);font:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:color .12s ease}.custom-phrase-add-row-spacer{flex:0 0 auto;width:46px}.custom-phrase-add-row-trigger:hover:not(:disabled){color:var(--coral-ink)}.custom-phrase-drawer-row td{padding:0!important}.custom-phrase-drawer{container:custom-phrase-drawer / inline-size;position:relative;display:flex;flex-direction:column;gap:16px;margin:0 12px 14px;padding:18px;border:1px solid color-mix(in srgb,var(--coral) 30%,var(--line));border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow)}.custom-phrase-drawer:before{content:"";position:absolute;top:-7px;left:34px;width:12px;height:12px;transform:rotate(45deg);background:var(--surface);border-left:1px solid color-mix(in srgb,var(--coral) 30%,var(--line));border-top:1px solid color-mix(in srgb,var(--coral) 30%,var(--line))}.custom-phrase-drawer-cols{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px 22px}@container custom-phrase-drawer (max-width: 680px){.custom-phrase-drawer-cols{grid-template-columns:minmax(0,1fr)}}.custom-phrase-field-group{display:flex;flex-direction:column;gap:14px;min-width:0}.custom-phrase-field-group-label{padding-bottom:6px;border-bottom:1px solid var(--line);color:var(--ink-faint);font-size:10.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.custom-phrase-audio-control{display:flex;flex-direction:column;gap:6px;min-width:0}.custom-phrase-audio-empty,.custom-phrase-audio-filled{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:9px 11px;border-radius:var(--r-sm);background:var(--surface-2)}.custom-phrase-audio-empty{border:1px dashed color-mix(in srgb,var(--coral) 38%,var(--line))}.custom-phrase-audio-filled{border:1px solid color-mix(in srgb,var(--teal-ink) 45%,var(--line))}.custom-phrase-audio-waveform{display:flex;align-items:flex-end;gap:2px;height:20px;flex:1 1 40px;min-width:40px}.custom-phrase-audio-waveform i{width:3px;border-radius:2px;background:color-mix(in srgb,var(--teal-ink) 70%,var(--line))}.custom-phrase-audio-duration{flex:0 0 auto;color:var(--ink-faint);font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums}.custom-phrase-audio-actions{display:flex;align-items:center;gap:4px;flex:0 0 auto;margin-left:auto}.custom-phrase-audio-recording{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--coral) 45%,var(--line));border-radius:var(--r-sm);background:var(--surface-2)}.custom-phrase-audio-recording .recording-bar{flex:1 1 auto}.custom-phrase-audio-countdown{flex:0 0 auto;color:var(--coral-ink);font-size:11.5px;font-weight:800;font-variant-numeric:tabular-nums}.custom-phrase-pill-btn{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;min-height:32px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);font:inherit;font-size:12.5px;font-weight:700;line-height:1.2;white-space:nowrap;cursor:pointer;transition:border-color .12s ease,background .12s ease,color .12s ease}.custom-phrase-pill-btn:hover:not(:disabled){border-color:var(--coral);background:color-mix(in srgb,var(--coral) 10%,var(--surface));color:var(--coral-ink)}.custom-phrase-pill-btn:disabled{color:var(--ink-faint);cursor:not-allowed;opacity:.65}.custom-phrase-pill-btn-primary:not(:disabled){border-color:color-mix(in srgb,var(--coral) 55%,var(--line));background:color-mix(in srgb,var(--coral) 14%,var(--surface));color:var(--coral-ink)}.custom-phrase-drawer-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;padding-top:14px;border-top:1px solid var(--line)}.translit-field{min-height:0}.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}.recording-popup{width:min(280px,100%);display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:28px 20px}.recording-popup-phrase{margin:0 0 4px;font-weight:700;font-size:15px}.recording-popup-icon{font-size:32px;line-height:1}.recording-popup-icon-live{animation:recording-popup-pulse 1s ease-in-out infinite}@keyframes recording-popup-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.75}}.recording-popup-label{margin:0;color:var(--ink-soft);font-size:14px}.recording-popup-countdown{margin:0;font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.recording-popup-close{margin-top:10px}.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){.progress-view{grid-template-columns:1fr}.stage-body{grid-template-columns:1fr;justify-items:center}.app-header{flex-wrap:wrap}}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.heat-head{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}.heat-head h2{margin:0}.heat-range{color:var(--ink-faint);font-size:11.5px}.heat-plot{display:grid;grid-template-columns:30px minmax(0,1fr);gap:4px 6px}.heat-months{display:grid;grid-column:2;grid-row:1;grid-template-columns:repeat(8,1fr);gap:4px}.heat-weekdays{display:grid;grid-column:1;grid-row:2;grid-template-rows:repeat(7,1fr);gap:4px;align-items:center}.heat-months span,.heat-weekdays span{color:var(--ink-faint);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase}.heat-grid{display:grid;grid-column:2;grid-row:2;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;gap:4px}.heat-cell{aspect-ratio:1 / 1;border:1px solid var(--line);border-radius:3px;background:var(--heat-0)}.heat-cell-active{border-color:var(--heat-3);background:var(--heat-3)}.heat-legend{display:flex;align-items:center;gap:6px;margin:12px 0 0;color:var(--ink-faint);font-size:10.5px}.heat-legend .heat-cell{width:12px;height:12px;aspect-ratio:auto;flex:none}.heat-empty{margin:10px 0 0;padding:10px 12px;border:1px dashed var(--line);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink-soft);font-size:var(--fs-meta);line-height:1.5}.tutorial-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;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}.tutorial-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}.tutorial-skip{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--ink-soft);font-size:var(--fs-meta);cursor:pointer;padding:4px 2px}.tutorial-body{display:flex;flex-direction:column;gap:14px;padding-top:12px}.tutorial-body h1,.tutorial-body h2,.tutorial-body h3{margin:0;font-size:var(--fs-card-title);letter-spacing:-.01em;text-wrap:balance}.tutorial-body p{margin:0;font-size:var(--fs-body);line-height:1.55;color:var(--ink-soft)}.tutorial-pager{display:flex;justify-content:center;gap:8px;padding-top:16px}.tutorial-dot{width:8px;height:8px;border-radius:999px;background:var(--line)}.tutorial-dot-active{background:var(--coral)}.tutorial-btn{padding:12px 20px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font-size:var(--fs-body);cursor:pointer}.tutorial-btn-primary{border-color:var(--coral);background:var(--coral);color:var(--ink-on-coral, #fff)}.tutorial-chips{display:flex;align-items:center;justify-content:center;gap:8px}.tutorial-chip{width:14px;height:14px;border-radius:999px;background:var(--coral);animation:tutorial-chip-widen 2.4s ease-in-out infinite}.tutorial-chip-2{animation-delay:.15s}.tutorial-chip-3{animation-delay:.3s}@keyframes tutorial-chip-widen{0%,to{transform:translate(0)}50%{transform:translate(6px)}}.tutorial-chips-static .tutorial-chip{animation:none}.tutorial-chips-static .tutorial-chip-1{transform:translate(-10px)}.tutorial-chips-static .tutorial-chip-3{transform:translate(10px)}.tutorial-beats{display:flex;align-items:center;justify-content:center;gap:16px;font-size:24px}.tutorial-beat{opacity:.35;animation:tutorial-beat-cycle 2.5s ease-in-out infinite}.tutorial-beat:nth-child(2){animation-delay:.83s}.tutorial-beat:nth-child(3){animation-delay:1.66s}@keyframes tutorial-beat-cycle{0%,25%{opacity:1}40%,to{opacity:.35}}.tutorial-beats-static .tutorial-beat{animation:none;opacity:1}.tutorial-demo-prompt{display:flex;align-items:center;justify-content:center;gap:10px;font-size:var(--fs-body)}.tutorial-demo-romanization{color:var(--ink-soft);font-weight:400}.tutorial-demo-play{border:1px solid var(--line);background:var(--surface-2);color:var(--ink);border-radius:999px;width:32px;height:32px;cursor:pointer}.tutorial-demo-play:disabled{opacity:.5;cursor:default}.tutorial-body p.tutorial-caption{margin:0;font-size:var(--fs-body);font-weight:600;color:var(--ink)}.tutorial-body p.tutorial-mic-help,.tutorial-body p.tutorial-tip{margin:0;font-size:var(--fs-meta);color:var(--ink-soft)}.tutorial-btn-row{display:flex;justify-content:center;gap:10px}.tutorial-check-strike{display:flex;justify-content:center;gap:16px;font-size:24px}.tutorial-check-strike-item{text-decoration:line-through;color:var(--ink-soft)}.tutorial-compare-strip{display:flex;align-items:center;justify-content:center;gap:12px;font-size:20px}.tutorial-compare-arrow{color:var(--ink-soft)}.tutorial-queue-strip{display:flex;justify-content:center;gap:10px;font-size:20px}.tutorial-queue-slot{color:var(--ink-soft)}.tutorial-queue-slot-loop{color:var(--coral)}@media (prefers-reduced-motion: reduce){.tutorial-overlay,.tutorial-card,.tutorial-chip,.tutorial-beat{animation:none}}.tut-bubble{position:fixed;z-index:70;width:min(280px,calc(100vw - 32px));padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--shadow);animation:phrase-card-pop .14s ease}.tut-bubble-bottom{transform:translate(-50%)}.tut-bubble-top{transform:translate(-50%,-100%)}.tut-bubble-left{transform:translate(-100%,-50%)}.tut-bubble-right{transform:translateY(-50%)}.tut-bubble-arrow{position:absolute;width:10px;height:10px;background:var(--surface);border:1px solid var(--line)}.tut-bubble-bottom .tut-bubble-arrow{top:-6px;left:50%;transform:translate(-50%) rotate(45deg);border-right:none;border-bottom:none}.tut-bubble-top .tut-bubble-arrow{bottom:-6px;left:50%;transform:translate(-50%) rotate(45deg);border-left:none;border-top:none}.tut-bubble-left .tut-bubble-arrow{right:-6px;top:50%;transform:translateY(-50%) rotate(45deg);border-left:none;border-bottom:none}.tut-bubble-right .tut-bubble-arrow{left:-6px;top:50%;transform:translateY(-50%) rotate(45deg);border-right:none;border-top:none}.tut-bubble-skip{position:absolute;top:6px;right:8px;background:none;border:none;color:var(--ink-soft);font-size:16px;line-height:1;cursor:pointer;padding:4px}.tut-bubble-title{font-size:var(--fs-card-title);font-weight:600;letter-spacing:-.01em;padding-right:16px}.tut-bubble-body{margin:6px 0 0;font-size:var(--fs-body);line-height:1.5;color:var(--ink-soft)}.tut-bubble-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px}.tut-bubble-step{font-size:var(--fs-meta);color:var(--ink-soft)}.tut-bubble-actions{display:flex;gap:8px}.tut-bubble-btn{padding:6px 14px;border-radius:var(--r-sm);border:1px solid var(--line);background:var(--surface-2);color:var(--ink);font-size:var(--fs-meta);cursor:pointer}.tut-bubble-btn-ghost{background:none}.tut-bubble-btn-primary{border-color:var(--coral);background:var(--coral);color:var(--ink-on-coral, #fff)}@media (prefers-reduced-motion: reduce){.tut-bubble{animation:none}}.heat-empty strong{color:var(--ink)}.add-phrase-modal{width:min(460px,100%)}.add-phrase-form{display:flex;flex-direction:column;gap:10px;margin-top:12px}.add-phrase-field{display:flex;flex-direction:column;gap:4px}.add-phrase-label{font-size:11.5px;font-weight:600;letter-spacing:.02em;color:var(--ink-soft)}.add-phrase-required{margin-left:2px;color:var(--crit)}.add-phrase-error{margin:0}.add-phrase-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}
