:root{color-scheme:light;--bg:oklch(96% 0.012 92);--bg-soft:oklch(92.5% 0.018 92);--surface:oklch(99% 0.006 92);--surface-raised:oklch(100% 0.004 92);--surface-muted:oklch(94% 0.014 92);--text:oklch(21% 0.025 135);--muted:oklch(45% 0.025 135);--faint:oklch(62% 0.024 120);--accent:oklch(47% 0.118 151);--accent-strong:oklch(36% 0.105 151);--accent-soft:oklch(91% 0.052 151);--danger:oklch(55% 0.19 24);--danger-soft:oklch(94% 0.045 24);--border:oklch(84% 0.018 105);--border-strong:oklch(74% 0.022 105);--shadow:0 22px 60px rgba(54,64,45,0.12);--shadow-soft:0 8px 24px rgba(54,64,45,0.09);--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100vh;color:var(--text);background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(255,255,255,0) 260px),var(--bg);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14.5px}button,input,textarea{font:inherit}button{min-height:44px;border:0;border-radius:var(--radius-md);padding:.78rem 1.05rem;color:white;background:var(--accent-strong);font-weight:560;cursor:pointer;touch-action:manipulation;transition:transform .16s cubic-bezier(.16,1,.3,1),background-color .16s cubic-bezier(.16,1,.3,1),box-shadow .16s cubic-bezier(.16,1,.3,1)}button:active{transform:scale(.97)}button:disabled{opacity:.48;cursor:not-allowed;transform:none}button.ghost,button.secondary{color:var(--text);background:var(--surface);box-shadow:inset 0 0 0 1px var(--border)}button.secondary{color:var(--accent-strong)}button.danger{color:white;background:var(--danger)}button.compact{min-height:40px;padding:.62rem .86rem}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid color-mix(in oklch,var(--accent) 28%,transparent);outline-offset:3px}@media (hover:hover){button:hover{box-shadow:var(--shadow-soft)}.history-item:hover,button.ghost:hover,button.secondary:hover{background:var(--accent-soft)}}h1,h2,p{margin-top:0}h1{margin-bottom:.58rem;font-size:clamp(1.85rem,3.1vw,2.85rem);font-weight:650;line-height:1;letter-spacing:-.022em}h1,h2{text-wrap:balance}h2{margin-bottom:0;font-size:clamp(1rem,1.2vw,1.2rem);font-weight:590;line-height:1.2;letter-spacing:-.012em}p{line-height:1.62;text-wrap:pretty}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:12px;left:12px;z-index:20;padding:.7rem .9rem;color:white;background:var(--accent-strong);border-radius:var(--radius-md);transform:translateY(-160%);transition:transform .16s cubic-bezier(.16,1,.3,1)}.skip-link:focus-visible{transform:translateY(0)}.skip-link:focus:not(:focus-visible){transform:translateY(-160%)}.app-shell{width:min(1220px,calc(100% - 32px));margin:0 auto;padding:34px 0 56px}.action-bar,.button-row,.section-heading,.session-strip,.topbar,.topic-row,.turn-header{display:flex;align-items:center}.section-heading,.topbar,.topic-row,.turn-header{justify-content:space-between;gap:18px}.topbar{margin-bottom:16px}.section-heading>.label,.topbar .eyebrow{margin-bottom:0}.brand-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;min-height:26px;padding:.2rem .55rem;color:var(--muted);background:var(--surface-muted);border-radius:999px;font-size:.78rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.page-subtitle{max-width:58ch;margin-bottom:0;color:var(--muted);font-size:.98rem}.eyebrow,.label{margin:0 0 .42rem;color:var(--accent-strong);font-size:.68rem;font-weight:650;letter-spacing:.08em;text-transform:uppercase}.muted{color:var(--muted)}.chat-layout,.practice-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-gap:20px;gap:20px;align-items:start}.chat-panel{display:grid;grid-gap:14px;gap:14px;min-width:0}.mobile-chat-header,.mobile-history-header{display:none}.composer-panel,.message-list,.topic-modal{background:var(--surface-raised);border-radius:var(--radius-xl);box-shadow:var(--shadow)}.topic-modal-backdrop{position:fixed;inset:0;z-index:8;display:grid;place-items:center;padding:24px;background:color-mix(in oklch,var(--bg) 78%,transparent)}.topic-modal{display:grid;grid-gap:14px;gap:14px;width:min(560px,100%);padding:18px}.topic-modal h2{max-width:48ch;font-size:1.05rem;font-weight:540;line-height:1.4}.topic-actions{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;justify-content:flex-end}.manual-topic-form{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px}.manual-topic-form input{width:100%;min-height:40px;padding:.65rem .8rem;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);background:var(--bg)}.message-list{display:grid;align-content:start;grid-gap:14px;gap:14px;min-height:420px;padding:18px}.turn-thread{display:grid;grid-gap:10px;gap:10px}.message{display:grid;grid-gap:6px;gap:6px;width:min(76ch,86%);padding:13px 14px;border-radius:var(--radius-lg)}.message p{margin-bottom:0;overflow-wrap:anywhere}.message-role{color:var(--accent-strong);font-size:.68rem;font-weight:650;letter-spacing:.08em;text-transform:uppercase}.assistant-message{justify-self:start;color:var(--text);background:var(--bg);box-shadow:inset 0 0 0 1px var(--border)}.user-message{justify-self:end;color:white;background:var(--accent-strong)}.user-message .message-role{color:color-mix(in oklch,white 82%,var(--accent-soft))}.feedback-message{width:min(82ch,92%)}.feedback-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.feedback-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.feedback-stack section{display:grid;grid-gap:4px;gap:4px;min-width:0;padding:10px;background:var(--surface);border-radius:var(--radius-md)}.feedback-stack section:first-child{grid-column:1/-1}.feedback-stack span{color:var(--accent-strong);font-size:.68rem;font-weight:650;letter-spacing:.08em;text-transform:uppercase}.follow-up{padding:10px 11px;color:var(--accent-strong);background:var(--accent-soft);border-radius:var(--radius-md);font-weight:560}.quiet-empty,.typing{justify-self:center;margin:4px 0;color:var(--muted);font-size:.9rem}.composer-panel{position:-webkit-sticky;position:sticky;bottom:14px;display:grid;grid-gap:10px;gap:10px;padding:14px}.composer-box{display:grid;grid-gap:8px;gap:8px}.composer-box textarea{width:100%;min-height:92px;resize:vertical;border:1px solid var(--border);border-radius:var(--radius-lg);padding:13px;color:var(--text);background:var(--bg);line-height:1.5}.composer-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.chat-history{max-height:calc(100vh - 88px);overflow:auto}.mobile-tabbar{display:none}.primary-column{display:grid;grid-gap:18px;gap:18px}.feedback-panel,.history-panel,.login-card,.recorder-panel,.topic-panel{background:var(--surface-raised);border-radius:var(--radius-xl);box-shadow:var(--shadow)}.topic-panel{padding:24px}.topic-panel h2{max-width:58ch;font-size:1.08rem;font-weight:540;line-height:1.32}.action-bar,.button-row{gap:10px;flex-wrap:wrap}.session-strip{min-height:42px;margin-top:18px;padding:0 14px;gap:10px;color:var(--muted);background:var(--surface-muted);border-radius:var(--radius-md);font-size:.92rem}.session-strip span+span{padding-left:10px;border-left:1px solid var(--border)}.session-strip .status-dot+span{padding-left:0;border-left:0}.status-dot{width:9px;height:9px;border-radius:999px;background:var(--faint)}.status-dot.live{background:var(--danger);box-shadow:0 0 0 6px color-mix(in oklch,var(--danger) 16%,transparent)}.feedback-panel,.history-panel,.recorder-panel{padding:22px}.transcript-box{position:relative;display:grid;grid-gap:12px;gap:12px;margin-top:18px}.transcript-box textarea{width:100%;min-height:210px;resize:vertical;border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;color:var(--text);background:var(--bg);line-height:1.62;font-size:.96rem;box-shadow:inset 0 1px 0 rgba(255,255,255,.72)}.composer-box textarea::placeholder{color:var(--faint)}.transcript-box textarea::placeholder{color:var(--faint)}.interim{display:block;padding:12px 14px;color:var(--accent-strong);background:var(--accent-soft);border-radius:var(--radius-md);font-style:italic}.action-bar{margin-top:16px}.feedback-panel{background:color-mix(in oklch,var(--surface-raised) 86%,var(--accent-soft))}.empty-state{display:grid;grid-gap:6px;gap:6px;margin-top:16px;padding:18px;color:var(--muted);background:var(--surface);border-radius:var(--radius-lg);box-shadow:inset 0 0 0 1px var(--border)}.empty-state strong{color:var(--text)}.turn-list{display:grid;grid-gap:14px;gap:14px;margin-top:18px}.turn{display:grid;grid-gap:16px;gap:16px;padding:18px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:inset 0 0 0 1px var(--border)}.turn-header{color:var(--muted);font-weight:620;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.feedback-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.feedback-block{min-width:0;padding:14px;background:var(--bg);border-radius:var(--radius-md);font-size:.94rem}.feedback-block.transcript{grid-column:1/-1}.feedback-block p:last-child{margin-bottom:0}.tutor{margin:0;padding:13px 14px;border-radius:var(--radius-md);font-weight:580}.score,.tutor{color:var(--accent-strong);background:var(--accent-soft)}.score{display:inline-flex;align-items:center;min-height:28px;padding:.24rem .58rem;border-radius:999px;font-size:.8rem;font-weight:640;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.history-panel{position:-webkit-sticky;position:sticky;top:20px;display:grid;grid-gap:16px;gap:16px;background:var(--surface)}.history-list{display:grid;grid-gap:10px;gap:10px}.history-item{display:grid;width:100%;grid-gap:6px;gap:6px;min-height:0;padding:13px;color:var(--text);font-weight:480;text-align:left;background:var(--bg);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px var(--border)}.history-item.active{background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--accent) 44%,var(--border))}.history-item span{line-height:1.35;font-weight:500}.history-item small{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:.82rem}.error-box{margin:0 0 18px;padding:14px 16px;color:color-mix(in oklch,var(--danger) 76%,black);background:var(--danger-soft);border-radius:var(--radius-md);box-shadow:inset 0 0 0 1px color-mix(in oklch,var(--danger) 36%,var(--border))}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(440px,100%);padding:32px}.login-card h1{font-size:2.1rem}.login-form{display:grid;grid-gap:16px;gap:16px;margin-top:24px}.login-form label{display:grid;grid-gap:8px;gap:8px;color:var(--muted);font-weight:600}.login-form input{width:100%;min-height:46px;padding:.86rem .95rem;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);background:var(--bg)}@media (max-width:900px){.app-shell{width:min(100% - 24px,720px);padding-top:24px}.section-heading,.topic-row{align-items:stretch;flex-direction:column}.section-heading .score{align-self:flex-start}.chat-layout,.practice-layout{grid-template-columns:1fr}.history-panel{position:static}.chat-history{max-height:none}}@media (max-width:520px){body:has(.chat-shell){min-height:100dvh;overflow:hidden;background:var(--bg-soft)}.app-shell{width:min(100% - 18px,480px);padding-bottom:88px}h1{font-size:1.75rem}.feedback-panel,.history-panel,.login-card,.recorder-panel,.topic-panel{padding:18px;border-radius:var(--radius-lg)}.action-bar,.button-row{align-items:stretch;flex-direction:column}.action-bar button,.button-row button{width:100%}.session-strip{align-items:flex-start;flex-direction:column;padding:12px}.session-strip span+span{padding-left:0;border-left:0}.feedback-grid{grid-template-columns:1fr}.chat-shell{width:100%;height:100dvh;padding:0;overflow:hidden}.chat-shell .topbar{display:none}.chat-layout{height:100%;gap:0}.chat-history.mobile-active,.chat-panel.mobile-active{display:grid;height:100dvh}.chat-panel{grid-template-rows:auto minmax(0,1fr) auto;gap:0;min-height:0;background:var(--surface-raised)}.mobile-chat-header,.mobile-history-header{position:-webkit-sticky;position:sticky;top:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:calc(66px + env(safe-area-inset-top));padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:color-mix(in oklch,var(--surface-raised) 96%,white);border-bottom:1px solid var(--border)}.mobile-chat-header h1{margin-bottom:0;font-size:1.05rem;line-height:1.15;letter-spacing:0}.mobile-chat-header .eyebrow{margin-bottom:2px;font-size:.62rem}.mobile-header-actions{display:flex;align-items:center;gap:8px}.mobile-header-actions .status-pill,.mobile-history-header .status-pill{display:inline-flex;white-space:nowrap}.composer-panel,.message-list,.topic-modal{border-radius:var(--radius-lg)}.topic-modal-backdrop{align-items:start;padding:calc(78px + env(safe-area-inset-top)) 10px calc(92px + env(safe-area-inset-bottom));background:color-mix(in oklch,var(--bg-soft) 78%,transparent)}.topic-modal{width:100%;padding:16px;border:1px solid var(--border);box-shadow:var(--shadow-soft)}.topic-actions{justify-content:stretch}.topic-actions button{flex:1 1}.manual-topic-form{grid-template-columns:1fr auto}.message-list{display:flex;flex-direction:column;min-height:0;height:100%;overflow-y:auto;gap:10px;padding:14px 12px 16px;background:var(--bg-soft);border-radius:0;box-shadow:none;overscroll-behavior:contain}.turn-thread{gap:8px}.message{width:-moz-fit-content;width:fit-content;max-width:min(88%,34rem);padding:10px 12px;border-radius:18px;box-shadow:none}.assistant-message{border-bottom-left-radius:5px;background:var(--surface-raised)}.user-message{border-bottom-right-radius:5px}.feedback-message{width:min(94%,36rem);max-width:94%}.feedback-stack{grid-template-columns:1fr;gap:7px}.feedback-stack section{padding:9px}.composer-panel{position:-webkit-sticky;position:sticky;bottom:0;z-index:5;gap:8px;margin-bottom:0;padding:10px 10px calc(10px + env(safe-area-inset-bottom));background:color-mix(in oklch,var(--surface-raised) 96%,white);border-top:1px solid var(--border);border-radius:0;box-shadow:0 -10px 28px rgba(54,64,45,.08)}.composer-box textarea{min-height:46px;max-height:112px;resize:none;border-radius:18px;padding:11px 13px;background:var(--surface)}.composer-actions{display:grid;grid-template-columns:minmax(74px,auto) minmax(74px,auto);justify-content:end;grid-gap:8px;gap:8px}.composer-actions button{width:auto;min-height:40px;padding:.58rem .9rem;border-radius:999px}.mobile-inactive{display:none}.mobile-active{display:grid}.chat-history{align-content:start;gap:14px;max-height:none;overflow-y:auto;padding:0 14px 18px;border-radius:0;box-shadow:none}.chat-history .history-list,.chat-history>.muted,.chat-history>div:not(.mobile-history-header){margin-inline:0}.chat-history>div:not(.mobile-history-header):first-of-type{padding-top:12px}.history-item{border-radius:16px}.mobile-tabbar{display:none}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}