@font-face{font-family:Manrope;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/manrope-vietnamese.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/manrope-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/manrope-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/newsreader-vietnamese.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/newsreader-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/newsreader-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/newsreader-italic-vietnamese.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/newsreader-italic-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/newsreader-italic-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--color-surface:#f6fafc;--color-surface-container-lowest:#fff;--color-surface-container-low:#f0f4f6;--color-surface-container:#eaeef1;--color-surface-container-high:#e4e9eb;--color-on-surface:#171c1e;--color-on-surface-variant:#414849;--color-outline:#727879;--color-outline-variant:#c1c8c9;--color-primary:#062326;--color-primary-container:#1e383c;--color-on-primary:#fff;--color-secondary:#4f6165;--color-secondary-fixed:#d2e6ea;--color-on-secondary-fixed:#0c1e22;--color-tertiary:#8c6a54;--color-success:#1f6f4a;--color-error:#ba1a1a;--color-error-container:#ffdad6;--color-on-error-container:#93000a;--font-display:"Newsreader", Georgia, "Times New Roman", serif;--font-body:"Manrope", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-display:1.75rem;--text-headline:1.75rem;--text-headline-sm:1.375rem;--text-body-lg:1.125rem;--text-body:1rem;--text-body-sm:.875rem;--text-label:.6875rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:2.5rem;--space-8:3rem;--radius-sm:.125rem;--radius:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--border-hairline:1px solid #0623261f;--shadow-ambient:0 8px 32px #1e383c0f;--margin:1.25rem;--gutter:1rem;--content-width:68rem;--reading-width:47.5rem;--nav-height:4.75rem}@media (width>=640px){:root{--margin:2rem;--gutter:1.25rem;--text-display:2rem;--text-headline:2rem}}@media (width>=1024px){:root{--margin:3rem;--gutter:1.5rem;--text-display:2.25rem;--text-headline:2.25rem}}*,:before,:after{box-sizing:border-box}html{background:var(--color-surface);min-width:280px}body{background:var(--color-surface);min-width:280px;color:var(--color-on-surface);font-family:var(--font-body);font-size:var(--text-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;line-height:1.6}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-weight:400;line-height:1.15}h1{font-size:var(--text-display)}h2{font-size:var(--text-headline)}h3{font-size:var(--text-headline-sm);font-weight:500}p{margin:0}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit}:focus-visible{outline:2.5px solid var(--color-primary);outline-offset:2px}.skip-link{top:-100%;left:var(--space-4);z-index:100;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-primary);color:var(--color-on-primary);font-weight:600;text-decoration:none;position:fixed}.skip-link:focus{top:var(--space-4)}.app-loading{min-height:100svh;padding:var(--space-6);color:var(--color-on-surface-variant);font-size:var(--text-body-sm);letter-spacing:.04em;text-transform:uppercase;place-items:center;display:grid}.app-shell{min-height:100svh;padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));flex-direction:column;display:flex}.app-header{z-index:20;justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--margin);border-bottom:var(--border-hairline);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f6fafcf0;display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--space-3);min-width:0;display:flex}.brand-mark{border-radius:var(--radius);background:var(--color-primary-container);width:2.25rem;height:2.25rem;color:var(--color-on-primary);font-family:var(--font-display);flex-shrink:0;place-items:center;font-size:1.4rem;line-height:1;display:grid}.brand-copy{flex-direction:column;gap:.1rem;min-width:0;display:flex}.brand-kicker{color:var(--color-secondary);font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;font-weight:600}.brand-title{font-family:var(--font-display);font-size:1.05rem;line-height:1.2}.avatar{border:var(--border-hairline);border-radius:var(--radius);background:var(--color-secondary-fixed);width:2.25rem;height:2.25rem;color:var(--color-on-secondary-fixed);font-family:var(--font-display);flex-shrink:0;place-items:center;font-size:1.1rem;display:grid}.header-actions{align-items:center;gap:var(--space-2);display:flex}.language-toggle{min-width:2.75rem;min-height:2.75rem;padding:0 var(--space-2);border-radius:var(--radius);background:var(--color-surface-container-low);color:var(--color-primary);font-size:var(--text-label);letter-spacing:.05em;text-transform:uppercase;border:1px solid #06232629;font-weight:700;transition:background-color .16s,border-color .16s}.language-toggle:hover{background:var(--color-surface-container);border-color:#06232647}.avatar-large{width:3.5rem;height:3.5rem;font-size:1.6rem}.app-main{width:100%;max-width:var(--content-width);padding:var(--space-5) var(--margin) var(--space-7);flex:1;min-width:0;margin:0 auto}.app-main:focus-visible{outline:2.5px solid var(--color-primary);outline-offset:-2.5px}.screen{gap:var(--space-5);flex-direction:column;min-width:0;animation:.24s ease-out rise-in;display:flex}.screen-heading{gap:var(--space-2);max-width:var(--reading-width);flex-direction:column;display:flex}.eyebrow{color:var(--color-secondary);font-size:var(--text-label);letter-spacing:.08em;text-transform:uppercase;font-weight:600}.lede{color:var(--color-on-surface-variant);font-size:var(--text-body-lg);line-height:1.6}.meta{color:var(--color-on-surface-variant);font-size:var(--text-body-sm);line-height:1.45}.muted{color:var(--color-on-surface-variant);font-size:var(--text-body-sm)}.app-nav{z-index:30;height:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);border-top:var(--border-hairline);background:#f6fafcf7;position:fixed;bottom:0;left:0;right:0}.app-nav-inner{max-width:34rem;height:100%;padding:0 var(--space-2);justify-content:space-around;align-items:center;margin:0 auto;display:flex}.nav-item{min-width:3.5rem;min-height:3.5rem;padding:var(--space-1) var(--space-2);border-radius:var(--radius);color:var(--color-on-surface-variant);font-size:var(--text-label);letter-spacing:.05em;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:.1rem;font-weight:600;transition:background-color .16s,color .16s;display:flex}.nav-item:hover{background:var(--color-surface-container-low)}.nav-item.is-active{color:var(--color-primary)}.nav-icon{border-radius:var(--radius);place-items:center;width:2.5rem;height:2.5rem;display:grid}.nav-item-primary .nav-icon{color:var(--color-primary)}.nav-item.is-active .nav-icon{background:var(--color-primary);color:var(--color-on-primary)}.nav-label{line-height:1.2}.button{justify-content:center;align-items:center;gap:var(--space-2);min-height:2.75rem;padding:.65rem var(--space-4);border-radius:var(--radius);color:var(--color-primary);font-size:var(--text-body-sm);letter-spacing:.02em;text-align:center;background:0 0;border:1px solid #0000;font-weight:600;line-height:1.2;transition:background-color .16s,border-color .16s,color .16s;display:inline-flex}.button svg{flex-shrink:0;width:1.15rem;height:1.15rem}.button:disabled{opacity:.55;cursor:not-allowed}.button-primary{background:var(--color-primary-container);color:var(--color-on-primary)}.button-primary:hover:enabled{background:var(--color-primary)}.button-secondary{background:var(--color-surface-container-low);color:var(--color-primary);border-color:#06232629}.button-secondary:hover:enabled{background:var(--color-surface-container)}.button-ghost{background:0 0;border-color:#06232629}.button-ghost:hover:enabled{background:var(--color-surface-container-low)}.button-wide{width:100%}.button-compact{min-height:2.75rem;padding:.4rem var(--space-3);font-size:.8125rem}.button-compact svg{width:1rem;height:1rem}.button:focus-visible,.nav-item:focus-visible{outline-offset:3px}label{font-size:var(--text-body-sm);font-weight:600}input,textarea,select{width:100%;min-height:2.75rem;padding:.65rem var(--space-3);border:1px solid var(--color-outline-variant);border-radius:var(--radius);background:var(--color-surface-container-lowest);font-size:var(--text-body);font-weight:400;transition:border-color .16s}textarea{resize:vertical;line-height:1.55}input:focus-visible,textarea:focus-visible,select:focus-visible{border-color:var(--color-primary);outline:1.5px solid var(--color-primary);outline-offset:0}input:disabled,textarea:disabled,select:disabled{background:var(--color-surface-container-low);color:var(--color-on-surface-variant);cursor:not-allowed}.form-alert{color:var(--color-on-error-container);background:var(--color-error-container);border-radius:var(--radius);padding:var(--space-2) var(--space-3);font-size:var(--text-body-sm);line-height:1.5}.card{align-items:flex-start;gap:var(--space-3);padding:var(--space-5);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-lowest);box-shadow:var(--shadow-ambient);flex-direction:column;display:flex}.pill{align-items:center;gap:var(--space-1);padding:.25rem var(--space-2);border-radius:var(--radius-xl);background:var(--color-secondary-fixed);color:var(--color-on-secondary-fixed);font-size:var(--text-label);letter-spacing:.05em;text-transform:uppercase;align-self:flex-start;font-weight:600;line-height:1.4;display:inline-flex}.pill-icon{width:.9rem;height:.9rem}.section{gap:var(--space-3);flex-direction:column;min-width:0;display:flex}.section-heading{justify-content:space-between;align-items:baseline;gap:var(--space-3);display:flex}.section-heading h2{font-size:var(--text-headline-sm);font-weight:500}.hero-card{gap:var(--space-3);padding:var(--space-5);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-lowest);box-shadow:var(--shadow-ambient);flex-direction:column;display:flex;position:relative;overflow:hidden}.hero-card h2{font-size:var(--text-headline)}.hero-card p{max-width:38rem;color:var(--color-on-surface-variant);font-size:var(--text-body-sm);line-height:1.6}.hero-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.topic-summary{gap:var(--space-2);flex-direction:column;display:flex}.hero-actions .button{flex:10rem}.practice-topic{align-items:baseline;gap:var(--space-2);flex-wrap:wrap;display:flex}.empty-state{align-items:flex-start;gap:var(--space-3);padding:var(--space-5);border:1px dashed var(--color-outline-variant);border-radius:var(--radius-lg);background:var(--color-surface-container-low);color:var(--color-on-surface-variant);font-size:var(--text-body-sm);flex-direction:column;display:flex}.empty-state-large{text-align:center;padding:var(--space-7) var(--space-5);align-items:center}.empty-state-large h2{font-size:var(--text-headline-sm);font-weight:500}.empty-icon{width:1.5rem;height:1.5rem;color:var(--color-secondary)}.empty-icon-wrap{background:var(--color-secondary-fixed);width:3.5rem;height:3.5rem;color:var(--color-primary-container);border-radius:50%;place-items:center;display:grid}.empty-icon-wrap svg{width:1.6rem;height:1.6rem}.session-list,.history-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.session-card,.history-card{align-items:center;gap:var(--space-3);padding:var(--space-3);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-lowest);display:flex}.session-icon{border-radius:var(--radius);background:var(--color-secondary-fixed);width:2.5rem;height:2.5rem;color:var(--color-primary-container);flex-shrink:0;place-items:center;display:grid}.session-icon svg{width:1.2rem;height:1.2rem}.session-copy{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.session-title{font-size:var(--text-body-sm);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.history-card{align-items:stretch;gap:var(--space-3);padding:var(--space-4);flex-direction:column}.history-card-head{align-items:center;gap:var(--space-3);flex-wrap:wrap;min-width:0;display:flex}.history-card-title{font-family:var(--font-display);font-size:1.25rem;line-height:1.35}.history-card-head .pill{margin-left:auto}.auth-shell{background:radial-gradient(circle at 85% 0%, #d2e6ea8c, transparent 38%), var(--color-surface);flex-direction:column;min-height:100svh;display:flex}.auth-header{width:100%;max-width:34rem;padding:var(--space-5) var(--margin) 0;justify-content:space-between;align-items:center;gap:var(--space-3);margin:0 auto;display:flex}.auth-main{width:100%;max-width:34rem;padding:var(--space-5) var(--margin);flex:1;align-items:center;margin:0 auto;display:flex}.auth-card{gap:var(--space-3);width:100%;padding:var(--space-5);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-lowest);box-shadow:var(--shadow-ambient);flex-direction:column;display:flex}.auth-card h1{font-size:clamp(1.75rem,7vw,2.6rem)}.auth-subtitle{font-family:var(--font-display);font-size:var(--text-body-lg);color:var(--color-on-surface-variant);font-style:italic}.auth-form{gap:var(--space-2);margin-top:var(--space-2);flex-direction:column;display:flex}.auth-form .button{margin-top:var(--space-3)}.password-field{display:flex;position:relative}.password-field input{padding-right:4.75rem}.password-toggle{min-height:2.75rem;padding:0 var(--space-3);border-radius:var(--radius-sm);color:var(--color-secondary);font-size:var(--text-label);letter-spacing:.05em;text-transform:uppercase;background:0 0;border:0;justify-content:center;align-items:center;font-weight:700;display:inline-flex;position:absolute;top:50%;right:.25rem;transform:translateY(-50%)}.password-toggle:hover:enabled{background:var(--color-surface-container-low);color:var(--color-primary)}.auth-support{padding:var(--space-3);border:var(--border-hairline);border-radius:var(--radius);background:var(--color-surface-container-low);flex-direction:column;gap:.15rem;display:flex}.auth-support-title{font-size:var(--text-body-sm);font-weight:600}.auth-footer{padding:var(--space-4) var(--margin) var(--space-6);color:var(--color-on-surface-variant);font-size:var(--text-label);letter-spacing:.05em;text-align:center;text-transform:uppercase}.profile-card{width:100%}.profile-card h2{font-size:var(--text-headline-sm);font-weight:500}.api-card{width:100%}.api-card h2{font-size:var(--text-headline-sm);font-weight:500}.status-line{align-items:center;gap:var(--space-2);font-size:var(--text-body);font-weight:600;display:flex}.status-dot{background:var(--color-tertiary);border-radius:50%;flex-shrink:0;width:.6rem;height:.6rem}.status-dot.ready{background:var(--color-success)}.status-dot.unavailable{background:var(--color-error)}.privacy-note{color:var(--color-on-surface-variant);font-size:var(--text-body-sm);line-height:1.6}.practice{gap:var(--space-4);width:100%;max-width:var(--reading-width);flex-direction:column;min-width:0;margin-inline:auto;display:flex}.practice-head{gap:var(--space-3);flex-direction:column;display:flex}.practice-head h1{font-size:var(--text-headline)}.practice-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.practice-note{color:var(--color-on-surface-variant);font-size:var(--text-body-sm)}.session-select{gap:var(--space-1);font-size:var(--text-label);letter-spacing:.05em;text-transform:uppercase;flex-direction:column;display:flex}.select-wrap{display:block;position:relative}.select-icon{top:50%;left:var(--space-3);width:1.05rem;height:1.05rem;color:var(--color-secondary);pointer-events:none;position:absolute;transform:translateY(-50%)}.select-wrap select{font-size:var(--text-body-sm);letter-spacing:0;text-transform:none;padding-left:2.4rem}.practice-status{color:var(--color-on-surface-variant);font-size:var(--text-body-sm)}.transcript-card{min-height:12rem;padding:var(--space-3);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-low)}.transcript-empty{align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);color:var(--color-on-surface-variant);font-size:var(--text-body-sm);text-align:center;flex-direction:column;display:flex}.conversation-turns{gap:var(--space-4);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.turn{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.bubble{max-width:min(100%,34rem);padding:var(--space-3) var(--space-4);border:var(--border-hairline);border-radius:var(--radius-lg);font-family:var(--font-display);overflow-wrap:anywhere;white-space:pre-wrap;margin:0;font-size:1.125rem;line-height:1.65}.bubble-user{background:var(--color-secondary-fixed);color:var(--color-on-secondary-fixed);align-self:flex-end}.bubble-ai{background:var(--color-surface-container-lowest);align-self:flex-start}.bubble-muted{align-items:flex-start;gap:var(--space-2);color:var(--color-on-surface-variant);font-family:var(--font-body);font-size:var(--text-body-sm);white-space:normal;flex-direction:column;display:flex}.bubble-label{color:var(--color-secondary);font-family:var(--font-body);font-size:var(--text-label);letter-spacing:.05em;text-transform:uppercase;margin-bottom:.15rem;font-weight:600;line-height:1.4;display:block}.bubble-text{overflow-wrap:anywhere;white-space:pre-wrap;margin:0}.speech-controls{align-items:center;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.speech-controls .form-alert{flex-basis:100%}.voice-recorder{align-items:center;gap:var(--space-2);padding:var(--space-3);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-lowest);flex-wrap:wrap;display:flex}.practice-dock{z-index:15;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));gap:var(--space-2);margin-inline:calc(var(--margin) * -1);padding:var(--space-2) var(--margin) var(--space-3);border-top:var(--border-hairline);background:var(--color-surface);box-shadow:var(--shadow-ambient);flex-direction:column;display:flex;position:sticky}.record-button{border-radius:var(--radius-xl);padding-inline:var(--space-4)}.recording-state{color:var(--color-tertiary);font-size:var(--text-body-sm);flex-basis:100%;font-weight:600}.voice-recorder .form-alert{flex-basis:100%}.composer{gap:var(--space-2);padding:var(--space-3);border:var(--border-hairline);border-radius:var(--radius-lg);background:var(--color-surface-container-lowest);flex-direction:column;display:flex}.composer label{font-size:var(--text-label);letter-spacing:.05em;text-transform:uppercase;color:var(--color-secondary)}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=380px){.app-main{padding-top:var(--space-4)}.nav-item{min-width:3rem;padding-inline:var(--space-1);font-size:.625rem}.nav-icon{width:2.25rem;height:2.25rem}.bubble{padding:var(--space-2) var(--space-3);font-size:1.05rem}.auth-card,.card,.hero-card{padding:var(--space-4)}}
