:root{--red:#c72e37;--background:#fff9f8;--blush:#fbe8e9;--rose:#f4b5ba;--text:#251a1d;--text-2:#8c7a7e;--surface:#fff;--well:#fff;--coral:#ff5268;--ink:#210d24;--muted:#89616d;--pink:#fce4e7;--hero-base:#fce6eb;--hero-ink:#210d24;--hero-sub:#7a4d5c;--hero-link:#c9334c;--red-shadow:#c72e3740;--glass-fill:#ffffff8c;--glass-rim:#ffffffbf;--glass-shine:#fff9;--row-fill:#ffffffad;--scenery-dim:transparent;--space-xs:4px;--space-s:8px;--space-m:12px;--space-l:16px;--space-xl:24px;--radius-card:24px;--radius-hero:32px;--spring:cubic-bezier(.2, .9, .25, 1);--safe-top:calc(var(--tg-safe-area-inset-top,0px) + var(--tg-content-safe-area-inset-top,0px));--safe-bottom:max(env(safe-area-inset-bottom,0px), var(--tg-safe-area-inset-bottom,0px));--viewport:var(--tg-viewport-stable-height,100dvh);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans Khmer,sans-serif;font-size:17px;line-height:1.35}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--red:#e85861;--background:#1a1214;--blush:#2e1f22;--rose:#7a3f45;--text:#f6ecee;--text-2:#b7a5a9;--surface:#2a1e21;--well:#4a3438;--coral:#ff8190;--ink:#fff0f4;--muted:#d7acb8;--pink:#281820;--hero-link:#a71f3a;--red-shadow:#0006;--glass-fill:#2a1e218c;--glass-rim:#ffffff24;--glass-shine:#ffffff14;--row-fill:#2a1e21ad;--scenery-dim:#00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--red:#e85861;--background:#1a1214;--blush:#2e1f22;--rose:#7a3f45;--text:#f6ecee;--text-2:#b7a5a9;--surface:#2a1e21;--well:#4a3438;--coral:#ff8190;--ink:#fff0f4;--muted:#d7acb8;--pink:#281820;--hero-link:#a71f3a;--red-shadow:#0006;--glass-fill:#2a1e218c;--glass-rim:#ffffff24;--glass-shine:#ffffff14;--row-fill:#2a1e21ad;--scenery-dim:#00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{background:var(--background)}h1,h2,p,dl,dd{margin:0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;background:0 0;border:0;padding:0}button:disabled{cursor:default}:focus-visible{outline:2.5px solid var(--red);outline-offset:2px}[hidden]{display:none!important}img{max-width:100%;display:block}[lang=km]{font-family:Noto Sans Khmer,Khmer Sangam MN,Khmer OS,system-ui,sans-serif;line-height:1.75}[lang=zh-Hans]{font-family:system-ui,PingFang SC,Hiragino Sans GB,Noto Sans SC,Microsoft YaHei,sans-serif}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.secondary{color:var(--text-2)}.muted{color:var(--muted)}.accent{color:var(--red)}.coral{color:var(--coral)}.small{font-size:.82rem}.strong{font-weight:600}.medium{font-weight:500}.large-title{letter-spacing:-.02em;font-size:2rem;font-weight:700;line-height:1.15}.section-title{font-size:1.05rem;font-weight:600}.stack-s>*+*{margin-top:10px}.stack-m>*+*{margin-top:var(--space-m)}.stack-l>*+*{margin-top:20px}.stack-xl>*+*{margin-top:var(--space-xl)}.glass{background:var(--glass-fill);-webkit-backdrop-filter:blur(22px)saturate(170%);backdrop-filter:blur(22px)saturate(170%);border:1px solid var(--glass-rim);box-shadow:inset 0 1px 0 var(--glass-shine), 0 8px 24px #c72e3714;border-radius:var(--radius-card)}.glass.capsule,.capsule{border-radius:999px}@media (prefers-reduced-transparency:reduce){.glass{background:var(--surface);-webkit-backdrop-filter:none;backdrop-filter:none;border-color:var(--rose)}:root{--row-fill:var(--surface)}}.screen{height:var(--viewport);isolation:isolate;background:var(--background);flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.stack-layer{z-index:1;animation:push-in .35s var(--spring);position:fixed;inset:0}@keyframes push-in{0%{opacity:0;transform:translate(28%)}}.scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex:1;min-height:0;overflow-y:auto}.scroll::-webkit-scrollbar{display:none}.page{width:100%;max-width:600px;padding:var(--space-s) var(--space-l) calc(var(--space-xl) + var(--safe-bottom));margin:0 auto}.hanvo-background{z-index:-1;background:radial-gradient(circle at 100% 0%, color-mix(in srgb, var(--rose) 55%, transparent) 0, transparent 420px), radial-gradient(circle at 0% 100%, var(--blush) 0, transparent 520px), var(--background);position:absolute;inset:0}.top-bar{align-items:center;gap:var(--space-s);padding:calc(var(--safe-top) + 10px) var(--space-l) var(--space-s);z-index:2;flex:none;grid-template-columns:52px 1fr 52px;display:grid;position:relative}.top-bar-side.end{justify-content:flex-end;display:flex}.top-bar-title{text-align:center;justify-self:center;min-width:0}.top-bar-title.capsule{padding:6px var(--space-xl)}.top-bar-title h1{white-space:nowrap;text-overflow:ellipsis;font-size:1.05rem;font-weight:600;overflow:hidden}.top-bar-title p{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:.7rem;overflow:hidden}.icon-button{width:44px;height:44px;color:var(--text);border-radius:999px;place-items:center;display:grid}.bottom-bar{gap:var(--space-m);padding:var(--space-s) var(--space-l) calc(var(--space-s) + var(--safe-bottom));flex:none;display:flex}.button{justify-content:center;align-items:center;gap:var(--space-s);min-height:48px;color:var(--red);background:var(--glass-fill);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--glass-rim);box-shadow:inset 0 1px 0 var(--glass-shine);transition:transform .25s var(--spring), opacity .2s;border-radius:999px;padding:0 22px;font-size:.95rem;font-weight:600;display:inline-flex}.button.prominent{color:#fff;background:linear-gradient(160deg, color-mix(in srgb, var(--red) 88%, #fff), var(--red));box-shadow:0 6px 16px var(--red-shadow);border-color:#fff6}.button.plain{box-shadow:none;color:var(--text-2);-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0}.button.small{min-height:34px;padding:0 14px;font-size:.8rem}.button.wide{flex:1;width:100%}.button:active:not(:disabled){transform:scale(.96)}.button:disabled{opacity:.45}.link-button{text-align:left;min-height:44px}.spinner-row{justify-content:center;align-items:center;gap:var(--space-s);padding:var(--space-s) 0;color:var(--text-2);font-size:.95rem;display:flex}.spinner{border:2.5px solid color-mix(in srgb, var(--text-2) 30%, transparent);border-top-color:var(--text-2);border-radius:50%;flex:none;width:18px;height:18px;animation:.8s linear infinite spin}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.unavailable{text-align:center;align-items:center;gap:var(--space-s);padding:48px var(--space-l);flex-direction:column;display:flex}.unavailable-icon{color:var(--text-2);margin-bottom:var(--space-xs)}.unavailable h2{font-size:1.25rem;font-weight:700}.unavailable p{color:var(--text-2);max-width:300px;font-size:.92rem}.unavailable .button{margin-top:var(--space-s)}.appear{animation:appear .35s var(--spring)}@keyframes appear{0%{opacity:0;filter:blur(6px);transform:scale(.98)}}.home{background:var(--pink);color:var(--ink)}.home-background{z-index:-1;background:linear-gradient(to bottom, color-mix(in srgb, var(--background) 55%, transparent), color-mix(in srgb, var(--pink) 90%, transparent)), url(/assets/blossom-hall.webp) center / cover;position:absolute;inset:0}.home-background:before{content:"";background:var(--pink);opacity:.83;z-index:-1;position:absolute;inset:0}.home-page{max-width:600px;padding:calc(var(--safe-top) + var(--space-s)) 20px var(--space-l);gap:var(--space-l);flex-direction:column;margin:0 auto;display:flex}.home-header{align-items:center;gap:var(--space-s);display:flex}.wordmark{letter-spacing:.02em;flex:1;font-size:25px;font-weight:800}.profile-button{width:44px;height:44px;color:var(--muted);border-radius:50%;place-items:center;display:grid;overflow:hidden}.profile-button img{object-fit:cover;border-radius:50%;width:38px;height:38px}.home-headline{gap:var(--space-s);flex-direction:column;display:flex}.display{letter-spacing:-.035em;font-size:2rem;font-weight:700;line-height:1.08}.home-headline .muted{font-size:.9rem}.hero{background:var(--hero-base);border-radius:var(--radius-hero);box-shadow:0 8px 32px color-mix(in srgb, var(--coral) 12%, transparent);border:1.5px solid #ffffffe6;position:relative;overflow:hidden}.hero-art{height:218px;position:relative}.hero-mei{object-fit:cover;object-position:top center;width:100%;height:100%;position:absolute;inset:0}.hero-portrait{justify-content:flex-end;align-items:center;padding-right:12px;display:flex;position:absolute;inset:0}.hero-fade{background:linear-gradient(90deg,#fff5f2a6,#0000);position:absolute;inset:0}.hero-copy{color:var(--hero-ink);flex-direction:column;align-items:flex-start;gap:7px;padding:36px 0 0 22px;display:flex;position:relative}.hero-title{letter-spacing:-.028em;font-size:1.7rem;font-weight:700;line-height:1.1}.hero-subtitle{color:var(--hero-sub);font-size:.9rem}.hero-change{min-height:44px;color:var(--hero-link);align-items:center;gap:5px;font-size:.9rem;font-weight:500;display:inline-flex}.start-speaking{justify-content:center;align-items:center;gap:var(--space-s);color:#fff;width:calc(100% - 16px);min-height:58px;transition:transform .25s var(--spring);background:linear-gradient(135deg,#d93352,#e8294d);border:1.5px solid #ffffffe6;border-radius:999px;margin:8px;font-size:1.2rem;font-weight:700;display:flex}.start-speaking:active:not(:disabled){transform:scale(.98)}.start-speaking:disabled{opacity:.5}.hero-retry{background:var(--surface);color:var(--text);border-radius:999px;padding:8px 14px;font-size:.8rem;font-weight:700;position:absolute;bottom:74px;left:50%;transform:translate(-50%)}@media (resolution>=1x){:root[style*=--text-scale] .hero-art{height:520px}}.daily-goal{gap:var(--space-s);flex-direction:column;display:flex}.daily-goal-row{justify-content:space-between;align-items:baseline;display:flex}.daily-goal .muted{font-size:.9rem}.goal-count{color:var(--coral);font-size:1.25rem;font-weight:700}.goal-bar{appearance:none;background:color-mix(in srgb, var(--muted) 22%, transparent);border:0;border-radius:999px;width:100%;height:8px;margin:4px 0;overflow:hidden}.goal-bar::-webkit-progress-bar{background:color-mix(in srgb, var(--muted) 22%, transparent)}.goal-bar::-webkit-progress-value{background:var(--coral);transition:width .5s var(--spring);border-radius:999px}.goal-bar::-moz-progress-bar{background:var(--coral);border-radius:999px}.level-card{gap:var(--space-s);padding:var(--space-l);border-radius:24px;flex-direction:column;display:flex}.level-card-head{align-items:center;gap:14px;display:flex}.level-badge{background:var(--coral);color:#fff;border-radius:50%;flex:none;place-items:center;width:48px;height:48px;font-size:1.35rem;font-weight:700;display:grid}.level-name{margin:0;font-size:1.2rem;font-weight:700}.level-name [lang=km]{color:var(--muted);margin-inline-start:4px;font-size:.95rem;font-weight:500}.topics-level{justify-content:space-between;align-items:baseline;gap:var(--space-m);display:flex}.topic-card.done .topic-glyph{background:color-mix(in srgb, var(--coral) 16%, transparent);color:var(--coral)}.level-up{align-items:center;gap:var(--space-m);padding:var(--space-l) 0 var(--space-s);text-align:center;flex-direction:column;display:flex}.level-up-icon{background:color-mix(in srgb, var(--coral) 14%, transparent);width:88px;height:88px;color:var(--coral);animation:level-up-pop .7s var(--spring) both;border-radius:50%;place-items:center;display:grid}@keyframes level-up-pop{0%{opacity:0;transform:scale(.4)rotate(-20deg)}}@media (prefers-reduced-motion:reduce){.level-up-icon{animation:none}}.lesson-row,.words-row{text-align:left;background:var(--row-fill);width:100%;color:var(--ink);transition:transform .25s var(--spring);align-items:center;gap:14px;padding:12px;display:flex}.lesson-row{border-radius:24px}.words-row{border-radius:20px}.lesson-row:active,.words-row:active{transform:scale(.98)}.lesson-row:disabled{opacity:.5}.lesson-icon{width:64px;height:64px;color:var(--coral);background:color-mix(in srgb, var(--pink) 65%, transparent);border-radius:18px;flex:none;place-items:center;display:grid}.words-icon{width:40px;height:40px;color:var(--coral);background:var(--pink);border-radius:12px;flex:none;place-items:center;display:grid}.row-text{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.row-text strong{font-weight:600}.tab-title{margin:calc(var(--safe-top) + var(--space-s)) 0 var(--space-xl)}.home .page>.large-title:first-child{padding-top:var(--safe-top)}.word-card{padding:var(--space-l);background:var(--row-fill);border-radius:20px;flex-direction:column;gap:6px;display:flex}.word-expression{font-size:1.4rem}.profile-name{align-items:center;gap:var(--space-s);font-size:1.4rem;font-weight:700;display:flex}.labeled div{padding:var(--space-s) 0;justify-content:space-between;display:flex}.labeled dt{color:var(--ink)}.labeled dd{color:var(--muted)}.tab-bar{padding:0 12px calc(4px + var(--safe-bottom));background:color-mix(in srgb, var(--pink) 96%, transparent);flex:none}.tab-bar-inner{border-radius:var(--radius-hero);background:var(--row-fill);border:1.5px solid #ffffffd9;max-width:600px;margin:0 auto;padding:6px;display:flex}.tab-bar button{min-height:62px;color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:5px;font-size:.72rem;font-weight:500;display:flex}.tab-bar button.selected{color:var(--coral);font-weight:600}.topic-intro{align-items:center;gap:var(--space-m);font-size:.92rem;display:flex}.topic-card{align-items:center;gap:var(--space-l);width:100%;padding:var(--space-l);text-align:left;transition:transform .25s var(--spring);display:flex}.topic-card:active{transform:scale(.98)}.topic-glyph{background:var(--blush);width:48px;height:48px;color:var(--red);border-radius:50%;flex:none;place-items:center;font-size:1.4rem;font-weight:600;display:grid}.topic-titles{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.topic-titles strong{font-weight:600}.topic-titles .secondary{font-size:.9rem}.topic-titles .small{font-size:.8rem}.portrait{background:linear-gradient(135deg, var(--rose), color-mix(in srgb, var(--red) 85%, transparent));color:#fff;border:solid #ffffffb3;border-radius:50%;flex:none;place-items:center;font-weight:600;display:grid;overflow:hidden}.portrait img{object-fit:cover;width:100%;height:100%}.avatar{position:relative}.avatar img{object-fit:contain;width:100%;height:100%;transition:opacity 60ms ease-out;position:absolute;inset:0}.halo{filter:drop-shadow(0 0 10px var(--rose)) drop-shadow(0 0 3px #fff9);display:block}.waveform{width:100%;height:100%;color:var(--red);display:block}.thinking{transition:transform .35s var(--spring);transform:scale(.97)}.teacher-sheet{gap:var(--space-xl);padding-bottom:var(--space-l);flex-direction:column;display:flex}.teacher-sheet>.secondary{font-size:.92rem}.teacher-hero{align-items:center;gap:var(--space-l);padding:var(--space-l);border-radius:var(--radius-hero);text-align:center;flex-direction:column;display:flex}.teacher-hero-text{gap:var(--space-xs);flex-direction:column;display:flex}.teacher-hero-name{justify-content:center;align-items:baseline;gap:var(--space-s);display:flex}.teacher-hero-name span:first-child{font-size:2rem;font-weight:700}.teacher-hero-name span:last-child{font-size:1.35rem;font-weight:600}.teacher-grid{gap:var(--space-m);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));display:grid}.teacher-card{align-items:center;gap:var(--space-s);padding:var(--space-l);text-align:center;transition:transform .25s var(--spring), box-shadow .25s;flex-direction:column;display:flex;position:relative}.teacher-card:active:not(:disabled){transform:scale(.97)}.teacher-card.selected{box-shadow:inset 0 0 0 2.5px var(--red)}.teacher-card:disabled .portrait{filter:saturate(.2)}.teacher-card-name{gap:var(--space-xs);align-items:baseline;display:flex}.teacher-card-name span{font-size:.9rem}.teacher-card-check{top:var(--space-s);right:var(--space-s);color:#fff;fill:var(--red);animation:appear .3s var(--spring);position:absolute}.sheet-layer{z-index:50;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;inset:0}.sheet-scrim{background:#14080c59;animation:.25s ease-out fade;position:absolute;inset:0}@keyframes fade{0%{opacity:0}}.sheet{max-height:calc(var(--viewport) - var(--safe-top) - 24px);background:var(--background);width:100%;max-width:640px;animation:sheet-up .4s var(--spring);border-radius:28px 28px 0 0;outline:none;flex-direction:column;margin:0 auto;display:flex;position:relative;box-shadow:0 -8px 32px #0000001f}.sheet.large{height:calc(var(--viewport) - var(--safe-top) - 24px)}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet-grabber{background:color-mix(in srgb, var(--text-2) 40%, transparent);border-radius:3px;flex:none;width:36px;height:5px;margin:8px auto 0}.sheet-header{padding:4px var(--space-l) var(--space-s);flex:none;grid-template-columns:64px 1fr 64px;align-items:center;display:grid}.sheet-header h2{text-align:center;font-size:1.05rem;font-weight:600}.sheet-header>:last-child{justify-self:end}.sheet-done{color:var(--red);min-height:44px;font-weight:600}.sheet-body{overscroll-behavior:contain;padding:var(--space-s) var(--space-l) calc(var(--space-l) + var(--safe-bottom));flex:1;overflow-y:auto}.sheet-footer{align-items:center;gap:var(--space-s);padding:var(--space-s) var(--space-l) calc(var(--space-s) + var(--safe-bottom));border-top:1px solid color-mix(in srgb, var(--rose) 40%, transparent);flex-direction:column;flex:none;display:flex}.sheet:has(.sheet-footer) .sheet-body{padding-bottom:var(--space-l)}.form-group{background:var(--surface);border-radius:14px;overflow:hidden}.form-group+.form-group,.background-grid+.form-group{margin-top:var(--space-l)}.form-row{justify-content:space-between;align-items:center;gap:var(--space-m);min-height:48px;padding:0 var(--space-l);text-align:left;width:100%;display:flex}.form-row+.form-row{border-top:1px solid color-mix(in srgb, var(--text-2) 18%, transparent)}.form-row.disabled{opacity:.45}.form-value{color:var(--text-2);text-align:right}.form-button span{align-items:center;gap:var(--space-s);color:var(--red);display:inline-flex}.form-button.destructive span{color:#d1242f}.form-footer{color:var(--text-2);padding:var(--space-s) var(--space-l) 0;font-size:.8rem}.form-footer.error{color:var(--red)}input[role=switch]{appearance:none;background:color-mix(in srgb, var(--text-2) 30%, transparent);cursor:pointer;border-radius:999px;flex:none;width:51px;height:31px;margin:0;transition:background .25s;position:relative}input[role=switch]:after{content:"";width:27px;height:27px;transition:transform .3s var(--spring);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 2px 4px #0003}input[role=switch]:checked{background:var(--red)}input[role=switch]:checked:after{transform:translate(20px)}.background-grid{gap:var(--space-m);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.background-option{gap:var(--space-s);flex-direction:column;font-size:.85rem;font-weight:500;display:flex}.background-thumb{aspect-ratio:3/4;isolation:isolate;border:2.5px solid #0000;border-radius:18px;transition:border-color .2s;position:relative;overflow:hidden}.background-option.selected .background-thumb{border-color:var(--red)}.background-check{background:var(--red);color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:8px;right:8px}.mic-explanation{align-items:center;gap:var(--space-l);text-align:center;padding:var(--space-l) var(--space-s) 0;flex-direction:column;display:flex}.mic-explanation-icon{color:#fff;background:var(--red);border-radius:50%;place-items:center;width:64px;height:64px;display:grid}.mic-explanation h2{font-size:1.4rem;font-weight:700}.mic-explanation p{color:var(--text-2);margin-bottom:var(--space-s)}.backdrop{z-index:-1;position:absolute;inset:0}.backdrop.scenery{background-position:50%;background-size:cover}.backdrop.scenery:after{content:"";background:var(--scenery-dim);position:absolute;inset:0}.soft-petals span{aspect-ratio:1;filter:blur(18px);border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.conversation{background:var(--background)}.conversation .top-bar-title{max-width:100%}.menu{position:relative}.menu-popover{z-index:20;background:color-mix(in srgb, var(--surface) 85%, transparent);min-width:230px;animation:menu-in .25s var(--spring);transform-origin:100% 0;border-radius:20px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}@keyframes menu-in{0%{opacity:0;transform:scale(.9)}}.menu-popover button{justify-content:space-between;align-items:center;gap:var(--space-m);text-align:left;border-radius:14px;width:100%;min-height:44px;padding:0 14px;display:flex}.menu-popover button:active:not(:disabled){background:color-mix(in srgb, var(--text-2) 15%, transparent)}.menu-popover button:disabled{opacity:.4}.conversation-column{align-items:center;gap:var(--space-m);flex-direction:column;flex:1;width:100%;max-width:640px;min-height:0;margin:0 auto;display:flex}.language-pill{align-items:center;gap:var(--space-s);padding:var(--space-s) var(--space-l);border-radius:999px;flex:none;font-size:.9rem;font-weight:600;display:inline-flex}.avatar-stage{width:100%;transition:height .35s var(--spring);flex:none;position:relative}.avatar-halo,.avatar-waveforms,.avatar-figure{justify-content:center;display:flex;position:absolute;left:0;right:0}.avatar-waveforms{padding:0 var(--space-s)}.avatar-waveforms canvas{flex:1;min-width:0}.avatar-figure{transform-origin:bottom;transition:transform .35s var(--spring);top:0;-webkit-mask-image:linear-gradient(#000 78%,#0000);mask-image:linear-gradient(#000 78%,#0000)}.avatar-stage .identity-badge{z-index:2;position:absolute;bottom:0;left:50%;transform:translate(-50%,50%)}.portrait-stage{flex-direction:column;flex:none;align-items:center;width:100%;display:flex}.portrait-stage-row{width:100%;padding:0 var(--space-s);align-items:center;display:flex}.waveform-slot{flex:1;min-width:0}.portrait-stage-center{flex:none;place-items:center;display:grid;position:relative}.portrait-stage-center .halo{position:absolute;inset:0}.portrait-stage .identity-badge{margin-top:calc(-1 * var(--space-m));position:relative}.identity-badge{align-items:center;gap:var(--space-s);padding:var(--space-s) var(--space-l);white-space:nowrap;font-size:.9rem;font-weight:600;display:inline-flex}.status-dot{background:var(--text-2);border-radius:50%;width:10px;height:10px}.status-dot.live{background:var(--red);box-shadow:0 0 6px color-mix(in srgb, var(--red) 60%, transparent)}.status-dot.ready{background:#34c759;box-shadow:0 0 6px #34c75999}.status-dot.warning{background:#ff9500}.caption-scroll{overscroll-behavior:contain;width:100%;min-height:0;padding:var(--space-m) var(--space-l) var(--space-s);gap:var(--space-m);z-index:1;scrollbar-width:none;flex-direction:column;flex:1;display:flex;position:relative;overflow-y:auto}.caption-card{align-items:center;gap:var(--space-m);padding:var(--space-l);border-radius:var(--radius-hero);text-align:center;flex-direction:column;display:flex}.caption-card.failure h2{font-size:1.05rem;font-weight:600}.failure-actions{justify-content:center;gap:var(--space-s);flex-wrap:wrap;display:flex}.status-chip{padding:var(--space-s) var(--space-l);background:color-mix(in srgb, var(--well) 55%, transparent);border-radius:999px;align-items:center;gap:6px;font-size:.8rem;font-weight:600;transition:background .25s,color .25s;display:inline-flex}.status-chip.live{color:#fff;background:linear-gradient(160deg, color-mix(in srgb, var(--red) 85%, #fff), var(--red));box-shadow:0 3px 8px color-mix(in srgb, var(--red) 30%, transparent)}.caption-lines{align-items:center;gap:var(--space-s);flex-direction:column;width:100%;display:flex}.caption-lines hr{border:0;border-top:1px solid color-mix(in srgb, var(--rose) 60%, transparent);width:100%;margin:var(--space-xs) 0}.caption-main{align-items:center;gap:var(--space-s);width:100%;display:flex}.caption-main>p{overflow-wrap:anywhere;flex:1;min-width:0}.replay-spacer{flex:none;width:44px}.spoken-text{-webkit-user-select:text;user-select:text;font-size:1rem}.caption-chinese{-webkit-user-select:text;user-select:text;font-size:1.75rem;font-weight:600;line-height:1.25}.caption-pinyin{color:var(--text-2);font-size:.95rem}.caption-khmer{font-size:1.2rem}.practise{align-items:center;gap:var(--space-xs);flex-direction:column;display:flex}.practise-label{color:var(--red);align-items:center;gap:4px;font-size:.75rem;font-weight:600;display:inline-flex}.correction{text-align:left;width:100%;padding:var(--space-m);background:color-mix(in srgb, var(--blush) 80%, transparent);gap:var(--space-xs);border-radius:14px;flex-direction:column;display:flex}.correction p:first-child{align-items:center;gap:6px;font-size:.92rem;display:flex}.learner-row{justify-content:flex-end;padding-left:48px;display:flex}.learner-bubble{padding:var(--space-m) var(--space-l);background:color-mix(in srgb, var(--red) 90%, transparent);color:#fff;text-align:right;border-radius:20px}.learner-bubble.partial{background:color-mix(in srgb, var(--red) 60%, transparent)}.learner-bubble small{opacity:.8;font-size:.68rem;font-weight:600;display:block}.learner-bubble p{font-weight:500}.notice{align-items:center;gap:var(--space-s);padding:var(--space-m);background:color-mix(in srgb, #ff9500 18%, var(--glass-fill));animation:appear .3s var(--spring);font-size:.85rem;display:flex}.notice svg{color:#e08600;flex:none}.notice span{flex:1}.conversation-bottom{width:100%;max-width:640px;padding:0 0 calc(var(--space-s) + var(--safe-bottom));gap:var(--space-s);flex-direction:column;flex:none;margin:0 auto;display:flex}.suggestion-row{gap:var(--space-s);padding:2px var(--space-l);scrollbar-width:none;display:flex;overflow-x:auto}.suggestion{padding:var(--space-s) var(--space-l);text-align:left;border-radius:999px;flex-direction:column;flex:none;align-items:flex-start;gap:2px;display:flex}.suggestion span{font-size:.9rem;font-weight:600}.suggestion small{color:var(--red);font-size:.72rem}.control-panel{margin:0 var(--space-l);padding:var(--space-m);border-radius:var(--radius-hero);gap:var(--space-m);flex-direction:column;display:flex}.control-row{align-items:flex-start;display:flex}.panel-control{align-items:center;gap:var(--space-xs);min-width:0;transition:transform .25s var(--spring), opacity .2s;flex-direction:column;flex:1;display:flex}.panel-control:active:not(:disabled){transform:scale(.92)}.panel-control:disabled{opacity:.5}.panel-control .control-well{width:56px;height:56px}.panel-control-title{color:var(--text-2);white-space:nowrap;font-size:.75rem;font-weight:500}.panel-control.destructive .panel-control-title{color:var(--red)}.control-well{color:var(--text);background:color-mix(in srgb, var(--well) 45%, transparent);box-shadow:0 3px 6px color-mix(in srgb, var(--red) 8%, transparent);transition:background .25s, color .25s, transform .25s var(--spring), opacity .2s;border:1px solid #ffffffbf;border-radius:50%;flex:none;place-items:center;display:grid}.panel-control.active .control-well,.panel-control.destructive .control-well,.control-well.active{color:#fff;background:linear-gradient(160deg, color-mix(in srgb, var(--red) 85%, #fff), var(--red));box-shadow:0 4px 8px color-mix(in srgb, var(--red) 35%, transparent);border-color:#ffffff73}.control-well.replay{width:44px;height:44px;color:var(--red)}.control-well:disabled{opacity:.45}.control-well.replay:active:not(:disabled),.control-well.send:active:not(:disabled){transform:scale(.92)}.input-row{gap:var(--space-s);display:flex}.input-row input{min-width:0;min-height:44px;padding:0 var(--space-l);font:inherit;color:var(--text);background:color-mix(in srgb, var(--well) 45%, transparent);border:1px solid #ffffff80;border-radius:999px;outline:none;flex:1;font-size:16px}.input-row input:focus-visible{border-color:var(--red)}.control-well.send{width:44px;height:44px}.summary-header{align-items:center;gap:var(--space-m);text-align:center;padding-top:var(--space-xl);flex-direction:column;display:flex}.summary-header .secondary{font-size:.92rem}.card{padding:var(--space-l)}.practised-line{gap:var(--space-xs);flex-direction:column;display:flex}.practised-line small{font-size:.75rem;font-weight:600}.practised-line p:first-of-type{font-weight:500}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.spinner,.spin{animation:none}}
