:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}#root{box-sizing:border-box;min-height:100svh}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.app{text-align:center;max-width:480px;margin:0 auto;padding:40px 20px}.tabs{justify-content:center;gap:8px;margin:20px 0 28px;display:flex}.tab{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:20px;padding:8px 20px;font-size:14px}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.status{color:var(--text);margin-bottom:20px}.error{color:#c0392b;margin-bottom:16px}.connection-dropped{color:var(--text-h);text-align:left;background:#c0392b1a;border:1px solid #c0392b59;border-radius:12px;align-items:center;gap:12px;margin:0 0 20px;padding:12px 40px 12px 14px;font-size:13px;line-height:1.5;display:flex;position:relative}.connection-dropped button{color:var(--text);cursor:pointer;background:0 0;border:none;padding:4px;font-size:18px;line-height:1;position:absolute;top:8px;right:10px}.connection-dropped button:hover{color:#c0392b}.live-controls{flex-direction:column;align-items:center;gap:8px;margin:4px 0 20px;display:flex}.live-toggle{color:var(--text);background:var(--code-bg);border:1px solid var(--border);cursor:pointer;border-radius:16px;align-items:center;gap:8px;padding:6px 16px;font-size:13px;font-weight:600;display:flex}.live-toggle.on{color:#fff;background:#c0392b;border-color:#c0392b}.live-checkbox{color:var(--text);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.lesson-focus{background:var(--accent-bg);color:var(--text);text-align:left;border-radius:12px;margin-bottom:16px;padding:8px 16px;font-size:14px}.lesson-focus-label{color:var(--accent);font-weight:700}.call-button{color:#fff;cursor:pointer;border:none;border-radius:32px;padding:16px 40px;font-size:18px;font-weight:600}.call-button.idle{background:#2e7d32}.call-button.active{background:#c0392b}.call-button:disabled{opacity:.5;cursor:default}.list-header{text-align:left;margin-top:36px}.empty{color:#999;margin-top:12px}.mistake-list{text-align:left;margin:0;padding:0;list-style:none}.mistake-card{background:var(--code-bg);border-radius:12px;margin-bottom:10px;padding:12px 16px}.mistake-card .original{color:#c0392b;margin:0;text-decoration:line-through}.mistake-card .correction{color:#2e7d32;margin:4px 0 0;font-weight:600}.mistake-card .rule{color:var(--text);margin:4px 0 0;font-size:13px}.mistake-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.category{text-transform:uppercase;letter-spacing:.04em;color:var(--text);border:1px solid var(--border);border-radius:6px;padding:2px 8px;font-size:11px;display:inline-block}.category-verb{color:#5b6ee1;border-color:#5b6ee166}.category-structure{color:#0f9b8e;border-color:#0f9b8e66}.category-grammar-detail{color:#8d6e63;border-color:#8d6e6366}.category-vocabulary{color:#c2185b;border-color:#c2185b66}.badge{border-radius:6px;padding:2px 8px;font-size:11px;font-weight:600}.badge.new{background:var(--accent-bg);color:var(--accent)}.badge.repeat{color:#d68910;background:#d6891026}.due-hint{background:var(--code-bg);color:var(--text);text-align:left;border-radius:12px;margin:0 0 20px;padding:10px 16px;font-size:13px;line-height:1.5}.due-hint strong{color:#d68910}.live-review-list{text-align:left;margin:0;padding:0;list-style:none}.live-review{background:var(--code-bg);border-left:3px solid var(--text);border-radius:12px;gap:12px;margin-bottom:10px;padding:12px 16px;display:flex}.live-review-icon{font-weight:700;line-height:1.4}.live-review-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.live-review-head{justify-content:space-between;gap:12px;display:flex}.live-review-next{color:var(--text);opacity:.6;white-space:nowrap;font-size:12px}.live-review-outcome{font-size:12px;font-weight:600}.live-review-evidence{color:var(--text);opacity:.75;font-size:12px;font-style:italic}.live-review.outcome-correct-unprompted{border-left-color:#1565c0}.live-review.outcome-correct-unprompted .live-review-icon,.live-review.outcome-correct-unprompted .live-review-outcome{color:#1565c0}.live-review.outcome-correct-with-effort{border-left-color:#2e7d32}.live-review.outcome-correct-with-effort .live-review-icon,.live-review.outcome-correct-with-effort .live-review-outcome{color:#2e7d32}.live-review.outcome-correct-after-hint{border-left-color:#d68910}.live-review.outcome-correct-after-hint .live-review-icon,.live-review.outcome-correct-after-hint .live-review-outcome{color:#d68910}.live-review.outcome-incorrect{border-left-color:#c0392b}.live-review.outcome-incorrect .live-review-icon,.live-review.outcome-incorrect .live-review-outcome{color:#c0392b}.transcript{text-align:left;background:var(--code-bg);border-radius:12px;max-height:260px;margin-bottom:8px;padding:12px 16px;overflow-y:auto}.transcript-line{margin:0 0 8px;font-size:14px;line-height:1.45}.transcript-line:last-child{margin-bottom:0}.transcript-line .speaker{text-transform:uppercase;min-width:28px;margin-right:8px;font-size:11px;font-weight:700;display:inline-block}.transcript-line.user{color:var(--text-h)}.transcript-line.user .speaker{color:#1565c0}.transcript-line.model{color:var(--text)}.transcript-line.model .speaker{color:var(--accent)}.lessons-panel{text-align:left}.lesson-list{margin:0;padding:0;list-style:none}.lesson-row{text-align:left;border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:12px;flex-direction:column;gap:4px;width:100%;margin-bottom:8px;padding:12px 16px;font-family:inherit;display:flex}.lesson-row:hover{background:var(--code-bg)}.lesson-row-date{color:var(--text-h);font-size:14px;font-weight:600}.lesson-row-stats{color:var(--text);font-size:13px}.lesson-row-focus{color:var(--accent);font-size:13px;font-weight:600}.back-button{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-bottom:12px;padding:0;font-family:inherit;font-size:14px}.lesson-title{margin:0 0 4px}.lesson-meta{color:var(--text);margin-bottom:8px;font-size:13px}.section-title{color:var(--text-h);margin:20px 0 10px;font-size:15px}.mic-wave{justify-content:center;align-items:center;gap:5px;height:40px;margin:4px 0 20px;display:flex}.mic-wave-bar{background:var(--border);border-radius:2px;width:4px;height:6px;transition:height 80ms ease-out}.mic-wave.idle .mic-wave-bar{background:var(--border)}.mic-wave.user-active .mic-wave-bar{background:#1565c0}.mic-wave.ai-speaking .mic-wave-bar{background:var(--accent);animation:.9s ease-in-out infinite mic-wave-pulse}@keyframes mic-wave-pulse{0%,to{height:6px}50%{height:30px}}.review-panel{text-align:left}.review-explainer{color:var(--text);background:var(--code-bg);border-radius:10px;margin:0 0 20px;padding:12px 14px;font-size:13px;line-height:1.5}.due-count{color:#fff;text-align:center;vertical-align:middle;background:#d68910;border-radius:10px;min-width:20px;margin-left:6px;padding:0 7px;font-size:12px;font-weight:700;display:inline-block}.add-practice-toggle{border:1px dashed var(--border);width:100%;color:var(--text);cursor:pointer;background:0 0;border-radius:10px;margin-bottom:24px;padding:10px;font-size:13px;display:block}.add-practice-toggle:hover{border-color:var(--accent-border);color:var(--accent)}.add-practice-form{background:var(--code-bg);border-radius:12px;flex-direction:column;gap:8px;margin-bottom:24px;padding:14px;display:flex}.add-practice-form select,.add-practice-form textarea{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);resize:vertical;border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13px}.add-practice-buttons{gap:8px;display:flex}.add-practice-buttons button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;flex:1;padding:8px 12px;font-family:inherit;font-size:13px}.add-practice-buttons button[type=submit]{background:var(--accent);border-color:var(--accent);color:#fff}.add-practice-buttons button:disabled{opacity:.5;cursor:default}.pattern-actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.pattern-actions button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:4px 10px;font-family:inherit;font-size:11px}.pattern-actions button:hover:not(:disabled){border-color:var(--accent-border);color:var(--accent)}.pattern-actions button:disabled{opacity:.5;cursor:default}.pattern-actions button.danger:hover:not(:disabled){color:#c0392b;border-color:#c0392b}.paused-rule{color:var(--text);opacity:.75;margin:0;font-size:13px}.review-summary{align-items:stretch;gap:8px;margin:0 0 24px;display:flex}.summary-tile{background:var(--code-bg);text-align:center;border-radius:10px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;min-width:0;padding:10px 4px;display:flex}.summary-value{color:var(--text-h);font-size:20px;font-weight:700;line-height:1}.summary-label{color:var(--text);opacity:.7;font-size:10.5px;line-height:1.3}.refresh-button{border:1px solid var(--border);background:var(--code-bg);width:40px;color:var(--text);cursor:pointer;border-radius:10px;flex:none;font-size:16px}.refresh-button:disabled{opacity:.5;cursor:default}.refresh-button:not(:disabled):hover{color:var(--accent);border-color:var(--accent-border)}.due-list{margin:0;padding:0;list-style:none}.due-card{background:var(--code-bg);border-left:3px solid #d68910;border-radius:12px;margin-bottom:10px;padding:14px 16px}.due-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.due-when{color:#d68910;white-space:nowrap;font-size:12px;font-weight:600}.due-card .original{color:var(--text-h);margin:0}.due-card .correction{color:#2e7d32;margin:4px 0 0;font-weight:600}.due-card .rule{color:var(--text);margin:6px 0 0;font-size:13px}.due-meta{color:var(--text);opacity:.7;margin:8px 0 0;font-size:12px}.schedule-bucket{margin-bottom:4px}.bucket-header{color:var(--text);opacity:.6;text-transform:uppercase;letter-spacing:.05em;margin:14px 0 6px;font-size:11px;font-weight:700}.pattern-list{margin:0;padding:0;list-style:none}.pattern-row{background:var(--code-bg);border-radius:10px;flex-direction:column;gap:6px;margin-bottom:6px;padding:10px 14px;display:flex}.pattern-row-top{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.pattern-row-bottom{align-items:center;gap:10px;display:flex}.pattern-name{color:var(--text-h);font-size:14px}.pattern-meta{color:var(--text);opacity:.7;white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.pattern-due{color:var(--text);white-space:nowrap;font-size:12px}.stability-bar{background:var(--border);border-radius:3px;flex:none;width:44px;height:5px;display:inline-block;overflow:hidden}.stability-bar-fill{background:linear-gradient(90deg,#d68910,#2e7d32);border-radius:3px;height:100%;display:block}.history-list{margin:0;padding:0;list-style:none}.history-row{background:var(--code-bg);border-left:3px solid var(--text);border-radius:10px;gap:12px;margin-bottom:6px;padding:10px 14px;display:flex}.history-icon{font-size:14px;font-weight:700;line-height:1.4}.history-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.history-head{justify-content:space-between;gap:12px;display:flex}.history-date{color:var(--text);opacity:.6;white-space:nowrap;font-size:12px}.history-outcome{font-size:12px;font-weight:600}.history-evidence{color:var(--text);opacity:.75;font-size:12px;font-style:italic}.outcome-correct-unprompted{border-left-color:#1565c0}.outcome-correct-unprompted .history-icon,.outcome-correct-unprompted .history-outcome{color:#1565c0}.outcome-correct-with-effort{border-left-color:#2e7d32}.outcome-correct-with-effort .history-icon,.outcome-correct-with-effort .history-outcome{color:#2e7d32}.outcome-correct-after-hint{border-left-color:#d68910}.outcome-correct-after-hint .history-icon,.outcome-correct-after-hint .history-outcome{color:#d68910}.outcome-incorrect{border-left-color:#c0392b}.outcome-incorrect .history-icon,.outcome-incorrect .history-outcome{color:#c0392b}.session-summary{text-align:left}.summary-title{text-align:center;margin:0 0 20px}.summary-stats{background:var(--code-bg);border-radius:12px;justify-content:space-around;gap:12px;margin-bottom:20px;padding:16px;display:flex}.stat{flex-direction:column;align-items:center;gap:2px;display:flex}.stat-value{color:var(--text-h);font-size:22px;font-weight:700}.stat-label{color:var(--text);font-size:12px}.summary-section{color:var(--text-h);margin:0 0 12px;font-size:15px}.summary-review-list{margin:0 0 24px;padding:0;list-style:none}.summary-review{background:var(--code-bg);border-left:3px solid var(--text);border-radius:12px;align-items:flex-start;gap:12px;margin-bottom:8px;padding:12px 16px;display:flex}.summary-review-icon{font-weight:700;line-height:1.4}.summary-review-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.summary-review-outcome{font-size:12px;font-weight:600}.summary-review-evidence{color:var(--text);opacity:.75;font-size:12px;font-style:italic}.summary-review-next{color:var(--text);opacity:.6;white-space:nowrap;font-size:12px}.summary-review.outcome-correct-unprompted{border-left-color:#1565c0}.summary-review.outcome-correct-unprompted .summary-review-icon,.summary-review.outcome-correct-unprompted .summary-review-outcome{color:#1565c0}.summary-review.outcome-correct-with-effort{border-left-color:#2e7d32}.summary-review.outcome-correct-with-effort .summary-review-icon,.summary-review.outcome-correct-with-effort .summary-review-outcome{color:#2e7d32}.summary-review.outcome-correct-after-hint{border-left-color:#d68910}.summary-review.outcome-correct-after-hint .summary-review-icon,.summary-review.outcome-correct-after-hint .summary-review-outcome{color:#d68910}.summary-review.outcome-incorrect{border-left-color:#c0392b}.summary-review.outcome-incorrect .summary-review-icon,.summary-review.outcome-incorrect .summary-review-outcome{color:#c0392b}.summary-hint{color:var(--text);margin-bottom:14px;font-size:13px}.summary-list{margin:0 0 20px;padding:0;list-style:none}.summary-card{border:1px solid var(--border);border-radius:12px;margin-bottom:10px;padding:14px 16px}.summary-card.rejected{opacity:.5}.summary-card .original{color:#c0392b;margin:8px 0 0;text-decoration:line-through}.summary-card .correction{color:#2e7d32;margin:4px 0 0;font-weight:600}.summary-card .rule{color:var(--text);margin:4px 0 0;font-size:13px}.heard{color:var(--text);background:var(--code-bg);border-radius:8px;margin:10px 0 0;padding:8px 10px;font-size:12px}.heard-label{text-transform:uppercase;letter-spacing:.04em;margin-right:6px;font-size:10px;font-weight:700}.reject-buttons{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.reject-buttons button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;flex:auto;padding:8px 12px;font-family:inherit;font-size:13px}.reject-buttons button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.reject-buttons button:disabled{opacity:.5;cursor:default}.rejected-note{color:var(--text);margin:10px 0 0;font-size:12px;font-style:italic}.candidate-list{margin:0 0 20px;padding:0;list-style:none}.candidate-row{background:var(--code-bg);border-left:3px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;margin-bottom:6px;padding:10px 14px;display:flex}.candidate-verdict{color:var(--text);opacity:.75;font-size:11px;font-weight:600}.candidate-body{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.candidate-original{color:var(--text);opacity:.85;font-size:13px;font-style:italic}.candidate-row.verification-rejected-asr{border-left-color:#8d6e63}.candidate-row.verification-rejected-not-an-error{border-left-color:#2e7d32}.candidate-row.verification-pending{border-left-color:#d68910}.candidate-row.verification-pending .candidate-verdict{color:#d68910;opacity:1}.done-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:24px;width:100%;padding:14px;font-size:16px;font-weight:600;display:block}.settings-panel{text-align:left}.settings-panel .hint{color:var(--text);margin-bottom:20px;font-size:13px}.field{margin-bottom:16px;display:block}.field span{color:var(--text-h);margin-bottom:6px;font-size:14px;font-weight:600;display:block}.field select,.field textarea{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text-h);resize:vertical;border-radius:8px;padding:10px 12px;font-family:inherit;font-size:14px}.field.checkbox-field{align-items:center;gap:10px;display:flex}.field.checkbox-field input{flex-shrink:0;width:16px;height:16px}.field.checkbox-field span{margin-bottom:0;font-weight:400}.settings-actions{gap:10px;margin-top:20px;display:flex}.save-button,.reset-button{cursor:pointer;border:none;border-radius:20px;padding:10px 20px;font-size:14px}.save-button{background:var(--accent);color:#fff}.reset-button{border:1px solid var(--border);color:var(--text);background:0 0}.status-msg{margin-top:12px;font-size:13px}.status-msg.saved{color:#2e7d32}.status-msg.error{color:#c0392b}
