:root{font-family:Segoe UI,system-ui,sans-serif;line-height:1.5;color-scheme:light;--bg: #f6f7f9;--fg: #1a1a1a;--fg-strong: #1e293b;--muted: #5c6570;--muted-2: #7a8490;--muted-3: #64748b;--surface: #ffffff;--surface-2: #f7f9fc;--surface-3: #f8f9fb;--btn-bg: #eceff3;--border: #d5dbe3;--border-2: #e2e6eb;--border-soft: #dbe3f0;--accent: #2f6fed;--accent-soft: #e8eef8;--accent-fg: #1f4fad;--accent-fg-2: #1a4fbf;--accent-deep: #1d4ed8;--inverse-bg: #24292f;--inverse-fg: #ffffff;--success: #22c55e;--success-soft: #e8f5ee;--success-fg: #1a7f4b;--success-bg: #f0fdf4;--success-fg-2: #166534;--danger: #c0392b;--danger-fg: #a32020;--warn-bg: #fff8e6;--warn-border: #f0d78c;--warn-fg: #5c4a1a;--pending: #d8dde3;--pending-2: #cbd5e1;--disabled: #8a939e;--chip: #cfd6df;--slate: #334155;--slate-2: #475569;--slate-3: #4a5560;--slate-border: #e2e8f0;--accent-wash: #dbe3f0;--accent-ring: #b8c9ee;--on-accent: #ffffff;--danger-soft: #fdecea;--danger-border: #f5c6cb;--danger-soft-fg: #a93226;--register-fg: #b35a00;--register-border: #ecd0a8;--strong-fg: #1e8449;--strong-border: #b8dfc8;--popover-danger-border: #e8b4b4;--surface-4: #fafbfc;--surface-5: #f0f2f5;--accent-tint: #eef4ff;--accent-tint-2: #f8faff;--accent-tint-3: #eef3fd;--accent-tint-4: #f8fbff;--search-fg: #1f2933;--body-list: #333333;--error-soft: #b42318;color:var(--fg);background:var(--bg)}[data-color-scheme=dark]{color-scheme:dark;--bg: #0f1419;--fg: #e8eaed;--fg-strong: #f1f5f9;--muted: #9aa3ad;--muted-2: #8b949e;--muted-3: #94a3b8;--surface: #1a222c;--surface-2: #151c25;--surface-3: #18212b;--btn-bg: #243040;--border: #314050;--border-2: #3a4b5c;--border-soft: #2a3a4c;--accent: #6b9cff;--accent-soft: #1c2f4d;--accent-fg: #9bb7ff;--accent-fg-2: #8eacff;--accent-deep: #6b9cff;--inverse-bg: #e8eaed;--inverse-fg: #12171d;--success: #3dd68c;--success-soft: #143528;--success-fg: #7ddea8;--success-bg: #123026;--success-fg-2: #86efac;--danger: #f07178;--danger-fg: #ff8b8b;--warn-bg: #3a3218;--warn-border: #8a7330;--warn-fg: #f0e0a8;--pending: #3a4553;--pending-2: #445264;--disabled: #6b7684;--chip: #3a4b5c;--slate: #cbd5e1;--slate-2: #94a3b8;--slate-3: #a0aec0;--slate-border: #314050;--accent-wash: #243552;--accent-ring: #3d5a8a;--on-accent: #ffffff;--danger-soft: #3a1f22;--danger-border: #7a3a42;--danger-soft-fg: #ff8b8b;--register-fg: #f0c27a;--register-border: #8a6a30;--strong-fg: #7ddea8;--strong-border: #2f6b4a;--popover-danger-border: #7a3a42;--surface-4: #151c25;--surface-5: #243040;--accent-tint: #1c2f4d;--accent-tint-2: #1c2f4d;--accent-tint-3: #1c2f4d;--accent-tint-4: #1c2f4d;--search-fg: #e8eaed;--body-list: #d0d5db;--error-soft: #ff8b8b}*{box-sizing:border-box}body{margin:0;color:var(--fg);background:var(--bg)}textarea,input,select{color:var(--fg);background:var(--surface);border-color:var(--border)}.app{max-width:720px;margin:0 auto;padding:2rem 1.25rem 3rem}header h1{margin:0;font-size:1.75rem}.header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.nav{display:flex;gap:.5rem;flex-wrap:wrap}.nav-btn{background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.45rem .75rem;font-size:.9rem}.nav-btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-fg)}.subtitle{margin:.25rem 0 0;color:var(--muted)}.progress-wrap{margin:1.25rem 0 1.5rem}.progress-label{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.35rem .75rem;font-size:.9rem;color:var(--muted);margin-bottom:.35rem}.progress-legend{display:inline-flex;align-items:center;gap:.65rem;font-size:.78rem;color:var(--muted-2)}.progress-legend-item{display:inline-flex;align-items:center;gap:.3rem}.legend-dot{width:.55rem;height:.55rem;border-radius:999px}.legend-dot.passed{background:var(--success)}.legend-dot.pending{background:var(--pending)}.phrase-number{margin:0 0 .75rem;font-size:.9rem;color:var(--muted);font-weight:600}.sentence-source{margin:.25rem 0 .75rem;font-size:.85rem}.practice-focus .sentence-source{margin-top:.35rem;margin-bottom:.85rem}.practice-focus .prompt+.sentence-source,.feedback-prompt+.sentence-source,.history-en+.sentence-source{margin-top:.35rem}.sentence-source a{color:var(--accent);text-decoration:none}.sentence-source a:hover{text-decoration:underline}.topic-brief{margin:0 0 1rem;padding:.65rem .85rem;border-left:3px solid var(--accent);background:var(--surface-2)}.topic-brief-toggle{border:none;background:none;color:var(--accent);padding:0;font:inherit;cursor:pointer;text-align:left}.topic-brief-title{color:var(--muted-3)}.topic-brief-loading{margin:0;color:var(--muted-3);font-size:.9rem}.topic-brief-body{margin-top:.65rem;display:grid;gap:.75rem}.topic-brief-block h3{margin:0 0 .25rem;font-size:.8rem;font-weight:600;color:var(--slate-2);text-transform:uppercase;letter-spacing:.03em}.topic-brief-block p{margin:0;font-size:.95rem;line-height:1.45;color:var(--fg-strong);white-space:pre-wrap}.passage-panel{margin:0 0 1rem;padding:.75rem 1rem;border:1px solid var(--border-soft);border-radius:8px;background:var(--surface-2)}.passage-header{margin:0 0 .5rem;font-size:.9rem;color:var(--slate)}.passage-title{color:var(--muted-3)}.passage-progress{display:flex;gap:.35rem;margin-bottom:.5rem}.passage-dot{width:.65rem;height:.65rem;border-radius:999px;background:var(--pending-2)}.passage-dot.completed{background:var(--success)}.passage-dot.current{background:var(--accent);box-shadow:0 0 0 2px #2f6fed40}.passage-toggle{border:none;background:none;color:var(--accent);font-size:.85rem;padding:0;cursor:pointer}.passage-toggle:hover{text-decoration:underline}.passage-assembly{margin:.75rem 0 0;padding-top:.75rem;border-top:1px solid var(--border-soft);font-size:.95rem;line-height:1.55;color:var(--fg-strong)}.passage-completion{margin:0 0 1rem;padding:1rem;border:1px solid var(--success-fg-2);border-radius:8px;background:var(--success-bg)}.passage-completion-title{margin:0 0 .75rem;font-size:1rem;color:var(--success-fg-2)}.passage-completion-label{margin:.5rem 0 .25rem;font-size:.8rem;font-weight:600;color:var(--slate-2);text-transform:uppercase;letter-spacing:.03em}.passage-completion-text{margin:0 0 .5rem;font-size:.95rem;line-height:1.55;color:var(--fg-strong)}.passage-completion-text.user{font-style:italic}.passage-completion-text.reference{color:var(--slate)}.completed-badge{display:inline-block;margin-bottom:.75rem;padding:.35rem .65rem;border-radius:999px;background:var(--success-soft);color:var(--success-fg);font-size:.85rem;font-weight:600}.completed-review .prompt{margin-top:.75rem}.progress-controls{display:flex;align-items:center;gap:.45rem}.app-progress-block .progress-wrap{margin:1.25rem 0 .45rem}.theme-minimap{display:flex;flex-wrap:nowrap;align-items:flex-end;gap:.35rem;margin:0 0 1rem;padding:1.1rem 0 .2rem;width:100%;overflow:visible}.theme-minimap-square{flex:1 1 0;min-width:.55rem;height:1.05rem;border:none;border-radius:3px;padding:0;cursor:pointer;position:relative;transform-origin:center bottom;transition:transform 80ms ease-out,margin-inline 80ms ease-out;will-change:transform,margin-inline;box-shadow:inset 0 0 0 1px #0f172a1f}.theme-minimap-square--active{box-shadow:inset 0 0 0 1px #0f172a2e,0 0 0 2px #2f6fed73}.theme-minimap-square:disabled{cursor:default}@media(prefers-reduced-motion:reduce){.theme-minimap-square{transition:none}}.theme-minimap-tooltip{position:fixed;z-index:1000;transform:translate(-50%,calc(-100% - 8px));background:var(--inverse-bg);color:var(--inverse-fg);font-size:.75rem;line-height:1.3;padding:.35rem .55rem;border-radius:6px;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0000002e}.progress-skip{flex:0 0 auto;width:1.65rem;height:1.65rem;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:0}.progress-skip:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.progress-skip:disabled{opacity:.35;cursor:default}.progress-skip-unfinished{width:auto;min-width:2.1rem;padding:0 .35rem;font-size:.85rem;letter-spacing:-.04em}.progress-track{position:relative;flex:1;height:8px;background:var(--border-2);border-radius:999px;overflow:hidden;cursor:pointer}.progress-track--segmented{height:10px;overflow:visible}.progress-thumb{position:absolute;top:50%;width:3px;height:16px;transform:translate(-50%,-50%);background:var(--surface);border:2px solid var(--accent-deep);border-radius:2px;pointer-events:none;box-shadow:0 0 0 1px #1d4ed840}.progress-track[aria-disabled=true]{cursor:default;opacity:.6}.progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.tts-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.65rem;margin-bottom:.85rem}.tts-source-group{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.tts-source-item{display:inline-flex;align-items:center;gap:.25rem}.speak-btn{display:inline-flex;align-items:center;gap:.35rem;background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.35rem .65rem;font-size:.85rem}.speak-btn--active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-fg-2)}.speak-btn--loading,.speak-btn:disabled{opacity:.45;cursor:default}.speak-btn--loading{background:var(--btn-bg);border-color:var(--border);color:var(--disabled)}.speak-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.tts-transport{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.2rem .45rem;border:1px solid var(--border-2);border-radius:8px;background:var(--surface-3)}.tts-transport-controls{display:inline-flex;align-items:center;gap:.25rem}.tts-ctrl-btn{display:inline-flex;align-items:center;justify-content:center;background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.35rem;min-width:2rem;min-height:2rem}.tts-ctrl-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.tts-ctrl-btn:disabled{opacity:.45}.tts-ctrl-icon{width:1rem;height:1rem}.tts-speed-group{display:inline-flex;flex-wrap:wrap;gap:.25rem;align-items:center}.tts-speed-option{display:inline-flex;align-items:center;justify-content:center;background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.3rem .45rem;min-width:2.35rem;font-size:.8rem}.tts-speed-option.is-active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-fg-2)}.tts-speed-option:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.tts-speed-option:disabled{opacity:.45}.tts-refresh-btn{display:inline-flex;align-items:center;justify-content:center;background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.35rem;font-size:.85rem;min-width:2rem;min-height:2rem}.tts-refresh-icon{width:1rem;height:1rem}.tts-shortcut-hint{font-size:.72rem;color:var(--muted-3);letter-spacing:.02em;-webkit-user-select:none;user-select:none}.tts-refresh-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.tts-refresh-btn:disabled{opacity:.45}.speak-icon{width:1rem;height:1rem}.tts-voice-group{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.35rem}.tts-voice-select{border:1px solid var(--border);border-radius:8px;padding:.35rem .5rem;font-size:.85rem;background:var(--surface)}.prompt{font-size:1.15rem;line-height:1.6;margin:0 0 1rem;padding:1rem;background:var(--surface);border-radius:10px;border:1px solid var(--border-2)}.practice-toolbar{display:flex;gap:.5rem;margin-left:auto}.reveal-btn,.aide-btn{background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.35rem .65rem;font-size:.85rem}.reveal-btn{position:relative}.reveal-btn-active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-fg)}.reveal-ring{pointer-events:none}.reveal-btn .reveal-ring{position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;width:calc(100% + 6px);height:calc(100% + 6px)}.reveal-ring--inline{flex-shrink:0;width:1.15rem;height:1.15rem;margin-top:.2rem}.reveal-ring-track{fill:none;stroke:var(--border);stroke-width:2}.reveal-ring-fill{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;transform:rotate(-90deg);transform-origin:16px 16px;animation-name:reveal-ring-fill;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes reveal-ring-fill{to{stroke-dashoffset:0}}.reveal-btn-label{position:relative;z-index:1}.aide-btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-fg)}.reveal-btn:disabled,.aide-btn:disabled{opacity:.6;cursor:not-allowed}.solution-reveal{display:flex;align-items:flex-start;gap:.65rem;margin:0 0 1rem;padding:.85rem 1rem;background:var(--warn-bg);border:1px solid var(--warn-border);border-radius:10px;color:var(--warn-fg);font-size:1.05rem;line-height:1.5;animation:solution-flash .25s ease-out}.solution-reveal,.solution-reveal *{user-select:none;-webkit-user-select:none}.solution-reveal-text{flex:1;min-width:0}@keyframes solution-flash{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.hintable-sentence{line-height:1.6}.hint-word-wrap{position:relative;display:inline;white-space:pre-wrap;cursor:help}.hint-popover{position:absolute;left:50%;bottom:calc(100% + .35rem);transform:translate(-50%);padding:.35rem .55rem;font-size:.78rem;line-height:1.3;font-weight:500;color:var(--accent-fg);background:var(--surface);border:1px solid var(--accent-ring);border-radius:8px;box-shadow:0 4px 12px #1a1a1a1a;white-space:nowrap;z-index:2;pointer-events:none}.hint-popover-fr{display:block}.hint-popover-note{display:block;margin-top:.2rem;font-size:.68rem;font-weight:400;color:var(--muted);white-space:normal;max-width:14rem}.hint-word{border-bottom:1px dashed rgba(47,111,237,.55);background:#2f6fed0a;border-radius:2px}.feedbackable-translation{line-height:1.6}.feedback-word-wrap{position:relative;display:inline;white-space:pre-wrap;cursor:help}.feedback-word{border-radius:2px}.feedback-word-issue{border-bottom:1px dashed rgba(198,40,40,.6);background:#c628280f}.feedback-word-register{border-bottom:1px dashed rgba(230,126,34,.65);background:#e67e220f}.feedback-word-strong{border-bottom:1px dashed rgba(39,174,96,.6);background:#27ae600f}.feedback-popover{position:absolute;left:50%;bottom:calc(100% + .35rem);transform:translate(-50%);padding:.35rem .55rem;font-size:.78rem;line-height:1.3;font-weight:500;background:var(--surface);border-radius:8px;box-shadow:0 4px 12px #1a1a1a1a;white-space:nowrap;width:max-content;max-width:none;z-index:2;pointer-events:none}.feedback-popover-issue{color:var(--danger-fg);border:1px solid var(--popover-danger-border)}.feedback-popover-register{color:var(--register-fg);border:1px solid var(--register-border)}.feedback-popover-strong{color:var(--strong-fg);border:1px solid var(--strong-border)}.feedback-popover-replacement{display:block;font-weight:600}.feedback-popover-note{display:block}.feedback-popover-suggestion{display:block;margin-top:.2rem;font-size:.72rem;font-weight:600}textarea{width:100%;padding:.85rem;border-radius:10px;border:1px solid var(--chip);font:inherit;resize:vertical;margin-bottom:.75rem}button{font:inherit;cursor:pointer;border:none;border-radius:8px;padding:.65rem 1.1rem}button.primary{background:var(--accent);color:var(--on-accent)}button.primary:disabled{opacity:.6;cursor:not-allowed}button.secondary{background:var(--btn-bg);color:var(--fg)}.feedback{background:var(--surface);border:1px solid var(--border-2);border-radius:12px;padding:1.25rem}.score{display:flex;align-items:baseline;gap:.5rem;margin-bottom:.75rem}.score-value{font-size:2rem;font-weight:700}.score.pass .score-value{color:var(--success-fg)}.score.fail .score-value{color:var(--danger)}.feedback-fr{font-size:1rem;margin:0 0 .75rem}.notes{margin:0 0 .75rem;padding-left:1.2rem;color:var(--body-list)}.reference,.improved,.feedback-user{margin:.75rem 0;padding:.75rem;background:var(--bg);border-radius:8px}.error{color:var(--danger)}.complete h2{margin-top:0}.loading{text-align:center;color:var(--muted)}.spinner-wrap{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem;color:var(--muted)}.spinner{width:1.25rem;height:1.25rem;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.spinner-label{font-size:.95rem}@keyframes spin{to{transform:rotate(360deg)}}.feedback.streaming{min-height:6rem}.stream-cursor{color:var(--accent);animation:blink 1s step-end infinite}@keyframes blink{50%{opacity:0}}.history{margin-top:1rem}.history-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.history-header h2{margin:0;font-size:1.25rem}.history-analyze-btn{display:inline-flex;align-items:center;gap:.45rem;border:1px solid var(--accent);background:var(--surface);color:var(--accent);border-radius:6px;padding:.4rem .75rem;font:inherit;cursor:pointer;white-space:nowrap}.history-analyze-btn:disabled{opacity:.6;cursor:wait}.history-analyze-spinner{width:.9rem;height:.9rem;border-width:2px;flex-shrink:0}.history-analysis{margin:0 0 1rem;padding:.65rem .85rem;border-left:3px solid var(--accent);background:var(--surface-2)}.history-analysis-toggle{border:none;background:none;color:var(--accent);padding:0;font:inherit;cursor:pointer;text-align:left}.history-analysis-meta{color:var(--muted-3)}.history-analysis-body{margin-top:.75rem}.history-analysis-summary{margin:0 0 .75rem;line-height:1.45;color:var(--fg-strong)}.history-analysis-patterns{margin:0;padding-left:1.1rem;display:grid;gap:.75rem}.history-analysis-patterns p{margin:.25rem 0 0;color:var(--slate)}.history-analysis-freq{font-weight:500;color:var(--muted-3)}.history-analysis-examples{margin:.35rem 0 0;padding-left:1rem;color:var(--slate-2);font-size:.95rem}.history-analysis-drills{margin-top:.9rem}.history-analysis-drills h3{margin:0 0 .35rem;font-size:.95rem;color:var(--slate)}.history-analysis-drills ul{margin:0;padding-left:1.1rem}.history-empty{color:var(--muted)}.history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}.history-item{background:var(--surface);border:1px solid var(--border-2);border-radius:12px;padding:1rem}.history-item-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;gap:.75rem}.history-item-actions{display:flex;align-items:center;gap:.6rem}.history-delete{background:var(--danger-soft);color:var(--danger-soft-fg);border:1px solid var(--danger-border);border-radius:8px;padding:.35rem .6rem;font-size:.8rem}.history-delete:disabled{opacity:.6;cursor:not-allowed}.history-id{font-size:.8rem;color:var(--muted);font-weight:600}.history-score{font-size:.85rem;color:var(--success-fg);font-weight:600}.history-en{margin:.5rem 0;font-size:1rem}.history-user,.history-ref,.history-feedback{margin:.5rem 0 0;padding:.65rem;background:var(--bg);border-radius:8px;font-size:.95rem}.history-toggle{margin-top:.75rem;background:var(--btn-bg);color:var(--fg);font-size:.9rem}.history-attempts{margin-top:.85rem;display:flex;flex-direction:column;gap:.75rem}.history-attempt{padding:.85rem;border:1px solid var(--border-2);border-radius:10px;background:var(--surface-4)}.history-attempt-top{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem}.history-attempt-actions{display:flex;align-items:center;gap:.5rem}.history-reevaluate{padding:.25rem .55rem;font-size:.78rem;border-radius:6px;border:1px solid var(--chip);background:var(--surface);color:var(--slate-3)}.history-reevaluate:disabled{opacity:.6;cursor:wait}.history-attempt-label{font-size:.85rem;font-weight:600;color:var(--slate-3)}.history-attempt-score{font-size:.85rem;font-weight:600}.history-attempt-score.pass{color:var(--success-fg)}.history-attempt-score.fail{color:var(--danger)}.history-notes,.history-improved{margin:.5rem 0 0}.login-screen{margin-top:1.5rem;max-width:28rem}.login-screen h2{margin:0 0 .35rem}.login-screen-hint{margin:0 0 1.25rem;color:var(--muted);font-size:.95rem}.login-screen-loading,.login-screen-empty{color:var(--muted);margin:0}.login-form{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.75rem}.login-form label{font-size:.9rem;font-weight:600}.login-form input{padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:1rem}.login-form button{margin-top:.35rem}.login-mode-toggle{border:none;background:transparent;color:var(--accent);cursor:pointer;padding:0;font-size:.95rem;margin-bottom:1.5rem}.leaderboard h3{margin:0 0 .75rem;font-size:1.05rem}.leaderboard-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.leaderboard-item{display:grid;grid-template-columns:2rem 1fr auto;gap:.75rem;align-items:center;padding:.65rem .85rem;border-bottom:1px solid var(--border-2)}.leaderboard-rank{font-weight:700;color:var(--muted)}.leaderboard-name{font-weight:600}.leaderboard-stats{font-size:.9rem;color:var(--muted)}.theme-overview{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--border-2)}.exercise-search{display:flex;flex-direction:column;gap:.5rem;margin:.75rem 0 1rem}.exercise-search-label{font-size:.85rem;color:var(--muted);font-weight:600}.exercise-search-input{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit;background:var(--surface)}.exercise-search-meta{margin:0;font-size:.85rem;color:var(--muted)}.exercise-search-error{margin:0;font-size:.85rem;color:var(--error-soft)}.exercise-search-results-toggle{align-self:flex-start;background:none;border:none;padding:0;color:var(--muted);font-size:.9rem;cursor:pointer;text-decoration:underline}.exercise-search-results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.exercise-search-result{width:100%;text-align:left;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);padding:.55rem .7rem;cursor:pointer;display:flex;flex-direction:column;gap:.2rem}.exercise-search-result:hover:not(:disabled){border-color:var(--accent-deep);background:var(--accent-tint-4)}.exercise-search-result:disabled{opacity:.6;cursor:not-allowed}.exercise-search-result-text{font-size:.92rem;color:var(--search-fg)}.exercise-search-result-meta{font-size:.78rem;color:var(--muted)}.theme-selector-wrap{margin:.75rem 0 .35rem;display:flex;flex-direction:column;gap:.35rem}.theme-selector-label{font-size:.85rem;color:var(--muted);font-weight:600}.theme-selector{width:100%;padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;font:inherit;background:var(--surface)}.theme-group-active{border-color:var(--accent-deep);background:var(--accent-tint)}.theme-group-header-row{display:flex;align-items:center;gap:.5rem}.theme-group-header-row .theme-group-header{flex:1}.theme-practice-btn{background:var(--btn-bg);color:var(--fg);border:1px solid var(--border);border-radius:8px;padding:.3rem .55rem;font-size:.8rem;white-space:nowrap}.theme-practice-btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-fg)}.theme-practice-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.theme-overview-toggle{background:none;border:none;padding:0;color:var(--muted);font-size:.9rem;cursor:pointer;text-decoration:underline}.theme-overview-body{margin-top:.85rem}.theme-overview-loading{margin:0;color:var(--muted);font-size:.9rem}.theme-group-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.theme-group{background:var(--surface);border:1px solid var(--border-2);border-radius:10px;padding:.65rem .75rem}.theme-group-current{border-color:var(--accent);background:var(--accent-tint-2)}.theme-group-header{width:100%;display:flex;justify-content:space-between;gap:.75rem;align-items:baseline;background:none;border:none;padding:0;text-align:left;cursor:pointer;color:inherit;font:inherit}.theme-group-label{font-weight:600;font-size:.95rem}.theme-group-meta{font-size:.85rem;color:var(--muted);white-space:nowrap}.theme-group-bar{margin-top:.45rem;height:4px;background:var(--btn-bg);border-radius:999px;overflow:hidden}.theme-group-fill{height:100%;background:var(--accent);border-radius:999px}.theme-sentence-list{list-style:none;margin:.65rem 0 0;padding:0;max-height:240px;overflow-y:auto;border-top:1px solid var(--btn-bg)}.theme-sentence{width:100%;display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;padding:.55rem 0;border:none;border-bottom:1px solid var(--surface-5);background:none;text-align:left;cursor:pointer;color:inherit;font:inherit}.theme-sentence:last-child{border-bottom:none}.theme-sentence:disabled{opacity:.55;cursor:not-allowed}.theme-sentence-current{background:var(--accent-tint-3)}.theme-sentence-text{font-size:.9rem;line-height:1.45}.theme-status{flex-shrink:0;font-size:.75rem;font-weight:600;padding:.15rem .45rem;border-radius:999px}.theme-status-passed{background:var(--success-soft);color:var(--success-fg)}.theme-status-current{background:var(--accent-soft);color:var(--accent-fg)}.activity-graph{margin:.75rem 0 1rem}.activity-graph--full{padding:.75rem .85rem;border:1px solid var(--slate-border);border-radius:10px;background:var(--surface)}.activity-graph--compact{margin:0;flex-shrink:0}.activity-graph-desktop{display:block}.activity-graph-loading{margin:0;font-size:.85rem;color:var(--muted)}.activity-graph-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.5rem}.activity-graph-header-actions{display:flex;align-items:center;gap:.6rem;flex-shrink:0}.activity-graph-compact-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.25rem}.activity-hide-btn,.activity-show-btn{border:1px solid var(--border);background:var(--bg);color:var(--muted);border-radius:6px;padding:.2rem .55rem;font-size:.72rem;cursor:pointer}.activity-hide-btn:hover,.activity-show-btn:hover{border-color:var(--accent);color:var(--accent-fg)}.activity-show-btn{display:block;width:100%;margin:.5rem 0 .75rem;padding:.45rem .75rem;font-size:.82rem}.activity-graph-title{font-size:.82rem;font-weight:600;color:var(--fg)}.activity-graph-streak,.activity-graph-summary{margin:0;font-size:.78rem;color:var(--muted)}.activity-graph-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.activity-graph--full .activity-graph-scroll{padding-bottom:.15rem}.activity-graph-track{min-width:min-content}.activity-graph--full .activity-graph-track{margin-left:0}.activity-graph--compact .activity-graph-scroll{max-height:none}.activity-month-labels{position:relative;height:16px;margin-bottom:2px}.activity-month-label{position:absolute;top:0;font-size:.68rem;color:var(--muted);text-transform:capitalize;white-space:nowrap}.activity-grid-row{display:flex;align-items:flex-start;gap:4px}.activity-day-labels{display:flex;flex-direction:column;width:24px;flex-shrink:0;padding-top:0}.activity-day-label{font-size:.65rem;color:var(--muted)}.activity-grid{display:flex;flex-shrink:0}.activity-grid-column{display:flex;flex-direction:column}.activity-cell{border:none;border-radius:2px;padding:0;cursor:pointer;display:block}.activity-cell:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.activity-cell--future{opacity:.85}.activity-tooltip-float{position:fixed;z-index:1000;transform:translate(-50%,calc(-100% - 8px));background:var(--inverse-bg);color:var(--inverse-fg);font-size:.75rem;line-height:1.3;padding:.4rem .65rem;border-radius:6px;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0000002e}.activity-tooltip{margin:.35rem 0 0;font-size:.78rem;color:var(--muted);min-height:1.1rem}.activity-legend{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin-top:.45rem;font-size:.72rem;color:var(--muted)}.activity-legend-cell{width:11px;height:11px;border-radius:2px}.profile-item .activity-graph--compact .activity-graph-summary{display:none}.profile-item .activity-graph--compact .activity-graph-scroll{max-height:36px}@media(max-width:640px){.app.app--activity-dock{padding-bottom:calc(5.5rem + env(safe-area-inset-bottom))}.app--practice{padding:1rem 1rem 3rem}.app--practice header h1{font-size:1.25rem}.app--practice .app-flow{display:flex;flex-direction:column}.app--practice .practice{display:contents}.app--practice .error{order:0}.app--practice .practice-focus{order:1;display:flex;flex-direction:column}.app--practice .practice-focus .prompt{font-size:1.2rem}.app--practice .practice-focus textarea{flex:none;min-height:unset;max-height:calc(4lh + 1.7rem);resize:none}.app--practice .practice-focus button.primary{width:100%}.app--practice .theme-selector-wrap{order:2;margin:.75rem 0 .25rem}.app--practice .app-progress{order:3;margin:.5rem 0 .75rem}.app--practice .app-progress .progress-legend{display:none}.app--practice .practice-tools{order:4;margin-top:.5rem;padding-top:1rem;border-top:1px solid var(--border-2)}.app--practice .practice-tools .phrase-number{display:none}.app--practice .activity-show-btn{order:5}.activity-graph-desktop{display:none}.activity-dock{position:fixed;bottom:0;left:0;right:0;max-width:720px;margin:0 auto;padding:.5rem 1rem calc(.5rem + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--slate-border);z-index:20}.activity-dock .activity-graph-scroll{max-height:none}}@media(min-width:641px){.activity-dock{display:none}.app-flow{display:flex;flex-direction:column}.app-progress{order:10}.theme-selector-wrap{order:9}.activity-graph-desktop,.activity-show-btn{order:20}.error{order:25}.app-view,.practice{order:30}}
