.library{max-width:40rem;padding:var(--space-5) 16px calc(5rem + env(safe-area-inset-bottom));margin:0 auto}.library-header{align-items:center;gap:var(--space-3);display:flex}.library-header img{border-radius:var(--radius) box-shadow: var(--shadow-card);width:112px;height:auto}.library-brand{color:var(--color-primary);font-family:var(--font-heading);font-size:var(--text-md);font-weight:700;font-stretch:110%}.library h1{font-size:var(--text-xl);color:var(--color-primary);margin:1.25rem 0 1rem;font-stretch:110%}.library-actions{gap:var(--space-2) var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.library-notice{margin:0 0 var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-surface);white-space:pre-line;overflow-wrap:anywhere}.library-notice-alert{border-color:var(--color-accent);color:var(--color-accent)}.library-list{margin:0;padding:0;list-style:none}.library-filters{margin-bottom:var(--space-4);gap:.6rem;display:grid}.library-search input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:100%;min-height:2.75rem;color:var(--color-text);font:inherit;padding:0 .85rem}.chip-group{flex-wrap:wrap;gap:.4rem;display:flex}.chip{border:1px solid var(--color-border);border-radius:var(--radius-pill);min-height:2.25rem;color:var(--color-text);font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;padding:0 .85rem}.chip[aria-pressed=true]{border-color:var(--color-primary);background:var(--color-primary);color:var(--color-on-primary);font-weight:600}.story-card{justify-content:space-between;align-items:center;gap:var(--space-4);border:1px solid var(--color-border);border-left:4px solid var(--color-primary);border-radius:var(--radius);background:var(--gradient-card);box-shadow:var(--shadow-card);transition:box-shadow var(--motion-fast) var(--ease-out);margin-bottom:.6rem;padding:.85rem 1rem;display:flex}@media (hover:hover){.story-card:hover{box-shadow:var(--shadow-raised)}}.story-card-finished{border-left-color:var(--color-muted)}.story-card-in-progress{border-left-color:var(--color-accent)}.story-card-unavailable{opacity:.55}.story-card-main{flex:1;gap:.35rem;min-width:0;display:grid}.story-card-title{color:var(--color-primary);overflow-wrap:anywhere;font-weight:600;text-decoration:none}@media (hover:hover){.story-card-title:hover{text-decoration:underline}}.story-card-meta,.story-card-status{align-items:center;gap:var(--space-2);color:var(--color-muted);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.story-status-in-progress{color:var(--color-accent);font-weight:600}.story-status-finished{color:var(--color-text)}.story-progress{border-radius:var(--radius-pill);background:var(--color-border);flex:1;min-width:4rem;max-width:10rem;height:.35rem;overflow:hidden}.story-progress-fill{background:var(--color-accent);transform-origin:0;height:100%;display:block}.library-badge{border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:.05rem .45rem}.library-badge-ai{border-color:var(--color-primary);color:var(--color-primary)}.library-badge-damaged{border-color:var(--color-accent);color:var(--color-accent)}.library-empty{color:var(--color-muted)}.library-empty p{margin:0 0 var(--space-3)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes card-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}.story-card{animation:card-in var(--motion-base) var(--ease-out) calc(var(--i,0) * 40ms) both}.story-card-unavailable{animation-name:card-in-dim}@keyframes card-in-dim{0%{opacity:0;transform:translateY(.5rem)}to{opacity:.55;transform:translateY(0)}}@keyframes progress-fill{0%{transform:scaleX(0)}}.story-progress-fill{animation:progress-fill .6s var(--ease-out) .15s both}@media (prefers-reduced-motion:reduce){.story-card{transition:none}}.story-text{font-size:var(--story-font-size,1.25rem);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;line-height:1.8}.story-text .word{cursor:pointer}.story-text .key-word{-webkit-text-decoration:underline dotted var(--color-primary);text-decoration:underline dotted var(--color-primary);text-underline-offset:.25em;text-decoration-thickness:2px}::highlight(qsp-sentence){background-color:var(--hl-sentence-bg)}::highlight(qsp-word){background-color:var(--hl-word-bg);color:var(--hl-word-fg)}::highlight(qsp-marked){-webkit-text-decoration:underline wavy var(--color-accent);text-decoration:underline wavy var(--color-accent);text-underline-offset:.3em;text-decoration-thickness:1.5px}.qsp-marked-active{-webkit-text-decoration:underline wavy var(--color-accent);text-decoration:underline wavy var(--color-accent);text-underline-offset:.3em;text-decoration-thickness:1.5px}.qsp-sentence-active{background-color:var(--hl-sentence-bg)}.qsp-word-active{background-color:var(--hl-word-bg);color:var(--hl-word-fg)}.metrics-dock{left:16px;bottom:calc(7.5rem + env(safe-area-inset-bottom));z-index:11;max-width:calc(100vw - 32px);position:fixed}.metrics-dock summary{border-radius:var(--radius-pill);background:var(--color-primary);color:var(--color-on-primary);font-size:var(--text-xs);cursor:pointer;padding:.35rem .75rem;font-weight:600;list-style:none;display:inline-block}.metrics-dock summary::-webkit-details-marker{display:none}.metrics-dock .metrics-panel{max-height:60vh;box-shadow:var(--shadow);margin-top:.5rem;overflow:auto}.metrics-panel{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-family:ui-monospace,monospace;font-size:var(--text-sm);margin-top:2rem;padding:1rem}.metrics-panel h2{font-size:var(--text-base);margin-top:0}.metrics-panel dl{grid-template-columns:max-content 1fr;gap:.25rem 1rem;display:grid}.metrics-panel dd{overflow-wrap:anywhere;margin:0}.metrics-panel button{min-height:2.5rem;margin-right:.5rem}.metrics-panel textarea{width:100%;margin-top:.75rem;font-family:inherit;display:block}.reader{max-width:40rem;padding:0 16px calc(9rem + env(safe-area-inset-bottom));margin:0 auto}.reader-loading{text-align:center;color:var(--color-muted);padding:2rem 16px}.reader-header{padding:1.25rem 0 .5rem}.reader-brand{color:var(--color-primary);font-family:var(--font-heading);font-size:var(--text-md);align-items:center;gap:.75rem;font-weight:700;font-stretch:110%;display:flex}.reader-brand img{border-radius:var(--radius) box-shadow: var(--shadow-card);width:112px;height:auto}.reader-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;margin-top:.75rem;display:flex}.reader-nav a{color:var(--color-primary);font-weight:600}.save-offline{flex-wrap:wrap;align-items:center;gap:.5rem;display:inline-flex}.save-offline-status{color:var(--color-muted);font-size:var(--text-sm)}.save-offline-error{color:var(--color-accent);font-size:var(--text-sm)}.reader-header h1{font-size:var(--text-xl);color:var(--color-primary);margin:1rem 0 .25rem;font-stretch:110%}.reader-meta{color:var(--color-muted);font-size:var(--text-sm);align-items:center;gap:.75rem;margin:0;display:flex}.reader-level{border-radius:var(--radius-pill);background:var(--color-primary);color:var(--color-on-primary);font-weight:600;font-size:var(--text-xs);padding:.1rem .5rem}.reader-text{overflow-wrap:break-word}.button-primary,.button-ghost{border-radius:var(--radius);min-height:2.75rem;font:inherit;cursor:pointer;padding:0 1rem;font-weight:600}.button-primary:active:not(:disabled),.button-ghost:active:not(:disabled),.icon-button:active:not(:disabled),.chip:active{transform:scale(.96)}.button-primary,.button-ghost,.icon-button,.chip{transition:transform var(--motion-fast) var(--ease-out), opacity var(--motion-fast) var(--ease-out), background-color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out)}@media (hover:hover){.button-primary:hover:not(:disabled){box-shadow:var(--shadow-raised);filter:brightness(1.08)}.button-ghost:hover:not(:disabled){background:color-mix(in srgb, var(--color-primary) 22%, var(--color-surface))}.icon-button:hover:not(:disabled){background:var(--color-border)}}.button-primary:disabled,.button-ghost:disabled{opacity:.5;cursor:not-allowed}.button-primary{background:var(--gradient-primary);box-shadow:var(--shadow-primary);color:var(--color-on-primary);border:0}.button-ghost{border:1px solid var(--color-primary);background:var(--color-primary-soft);color:var(--color-text)}.icon-button{border-radius:var(--radius-pill);min-width:2.75rem;min-height:2.75rem;color:var(--color-text);font-size:var(--text-lg);cursor:pointer;background:0 0;border:0;place-items:center;display:inline-grid}.icon-button:disabled{color:var(--color-muted);cursor:not-allowed}.play-button{background:var(--color-primary);min-width:3.25rem;min-height:3.25rem;color:var(--color-on-primary)}.resume-prompt{border:1px solid var(--color-border);border-left:4px solid var(--color-accent);border-radius:var(--radius);background:var(--color-surface);margin:1rem 0;padding:1rem}.resume-prompt p{margin:0 0 .75rem}.resume-actions,.load-error-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.load-error{padding:3rem 0}.load-error h1{font-size:var(--text-lg)}.load-error pre{border-radius:var(--radius);background:var(--color-surface);white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-sm);padding:.75rem}.player-bar{z-index:10;padding:.5rem 16px calc(.5rem + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow);position:fixed;inset:auto 0 0}.player-bar>*{max-width:40rem;margin-inline:auto}.player-error{color:var(--color-accent);font-size:var(--text-sm);margin-block:0 .25rem}.progress{align-items:center;gap:.75rem;display:flex}.progress-slider{min-width:0;min-height:2rem;accent-color:var(--color-primary);flex:1}.progress-time{color:var(--color-muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;white-space:nowrap}.player-controls{grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.player-main{align-items:center;gap:.5rem;display:flex}.marked-button{font-size:var(--text-md);color:var(--color-accent);justify-self:start;gap:.15rem;display:inline-flex}.marked-count{font-size:var(--text-xs);color:var(--color-text);font-weight:600}.settings{justify-self:end;position:relative}.settings-panel{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:min(18rem,100vw - 32px);box-shadow:var(--shadow);padding:.75rem;position:absolute;bottom:calc(100% + .5rem);right:0}.settings-panel fieldset{border:0;flex-wrap:wrap;gap:.25rem .75rem;margin:0 0 .5rem;padding:0;display:flex}.settings-panel legend{color:var(--color-muted);font-size:var(--text-xs);margin-bottom:.25rem;font-weight:600}.settings-panel label{cursor:pointer;align-items:center;gap:.25rem;min-height:2.25rem;display:inline-flex}.settings-panel input{accent-color:var(--color-primary)}.word-card{left:50%;bottom:calc(7.5rem + env(safe-area-inset-bottom));z-index:12;border:1px solid var(--color-border);border-top:4px solid var(--color-primary);border-radius:var(--radius);background:var(--color-surface);width:min(40rem,100vw - 32px);max-height:55vh;box-shadow:var(--shadow);padding:.75rem 1rem 1rem;position:fixed;overflow:auto;transform:translate(-50%)}.word-card-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.word-card-header h2{font-size:var(--text-lg);color:var(--color-primary);margin:0}.word-card-header h2:focus{outline:none}.word-card-meta{color:var(--color-muted);font-size:var(--text-sm);flex-wrap:wrap;gap:.25rem .75rem;margin:.25rem 0;display:flex}.word-card-cefr{border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:0 .4rem;font-weight:600}.word-card-translation{font-size:var(--text-lg);margin:.5rem 0 .25rem;font-weight:600}.word-card-definition,.word-card-missing{color:var(--color-muted);margin:.25rem 0}.word-card-sentence{border-left:3px solid var(--color-accent);background:var(--color-bg);margin:.5rem 0;padding:.5rem .75rem}.word-card-actions{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.marked-list ul{margin:.5rem 0 0;padding:0;list-style:none}.marked-list li{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:.75rem;padding:.5rem 0;display:flex}.marked-list li div{flex-direction:column;display:flex}.marked-translation{color:var(--color-muted);font-size:var(--text-sm)}.mark-toast{left:50%;bottom:calc(7.75rem + env(safe-area-inset-bottom));z-index:13;border-radius:var(--radius-pill);background:var(--color-primary);color:var(--color-on-primary);box-shadow:var(--shadow);margin:0;padding:.5rem 1rem;font-weight:600;position:fixed;transform:translate(-50%)}.finished-card{left:50%;bottom:calc(7.5rem + env(safe-area-inset-bottom));z-index:13;border:1px solid var(--color-border);border-top:4px solid var(--color-accent);border-radius:var(--radius);background:var(--color-surface);width:min(28rem,100vw - 32px);box-shadow:var(--shadow);text-align:center;padding:1.25rem 1rem 1rem;position:fixed;overflow:hidden;transform:translate(-50%)}.finished-card h2{color:var(--color-primary);font-family:var(--font-heading);margin:0 0 .5rem;font-stretch:110%}.finished-card p{color:var(--color-muted);margin:0 0 1rem}.finished-card-actions{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.finished-card-actions .button-primary{align-items:center;text-decoration:none;display:inline-flex}.confetti{pointer-events:none;position:absolute;inset:0}.confetti span{top:-.75rem;left:calc(4% + var(--i) * 6.8%);border-radius:var(--radius-sm);background:var(--color-accent);opacity:0;width:.45rem;height:.7rem;position:absolute}.confetti span:nth-child(3n){background:var(--color-primary)}.confetti span:nth-child(4n+1){background:var(--color-confetti)}@keyframes word-card-in{0%{opacity:0;transform:translate(-50%)translateY(.75rem)scale(.96)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}.word-card,.finished-card{animation:word-card-in var(--motion-base) var(--ease-bounce)}@keyframes mark-shine{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}.word-card-actions [aria-pressed=true]{animation:mark-shine .36s var(--ease-bounce)}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0)rotate(0)}to{opacity:0;transform:translateY(9rem) rotate(calc(160deg + var(--i) * 37deg))}}.confetti span{animation:confetti-fall 1.4s var(--ease-out) calc(var(--i) * 45ms) both}a.button-ghost,a.button-primary{text-decoration:none}.chat{max-width:40rem;padding:1rem 16px calc(2rem + env(safe-area-inset-bottom));margin:0 auto}.chat h2{margin:var(--space-5) 0 var(--space-3);font-family:var(--font-heading);font-size:var(--text-lg)}.chat-status{color:var(--color-muted)}.chat-scenarios,.chat-history ul,.chat-messages,.chat-mistakes{margin:0;padding:0;list-style:none}.chat-scenarios{gap:var(--space-3);grid-template-columns:1fr;display:grid}@media (width>=640px){.chat-scenarios{grid-template-columns:1fr 1fr}}.chat-scenario{align-items:center;gap:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--gradient-card);width:100%;height:100%;box-shadow:var(--shadow-card);color:var(--color-text);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease-out), transform var(--motion-fast) var(--ease-out);grid-template-columns:56px 1fr;grid-template-areas:"face body""chip chip";padding:.875rem;display:grid}.chat-scenario:hover:not(:disabled),.chat-scenario:focus-visible{border-color:var(--color-primary)}.chat-scenario:active:not(:disabled){transform:scale(.98)}.chat-scenario-face{background:var(--color-primary-soft);border-radius:50%;grid-area:face;width:56px;height:56px;display:block;overflow:hidden}.chat-scenario-art{width:100%;height:100%;display:block}.chat-scenario-body{grid-area:body;gap:.125rem;display:grid}.chat-scenario-body strong{color:var(--color-primary);font-weight:600}.chat-scenario-description{-webkit-line-clamp:2;line-clamp:2;color:var(--color-muted);font-size:var(--text-sm);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-scenario-talks{grid-area:chip;justify-self:end}.chat-scenario-skeleton{border-radius:var(--radius-lg);height:7rem}.chat>.review-header{align-items:center;gap:var(--space-1) var(--space-4);margin-bottom:var(--space-5);grid-template-columns:auto 1fr;grid-template-areas:"logo title""logo link";display:grid}.chat>.review-header .chat-logo{grid-area:logo}.chat>.review-header h1{font-size:clamp(1.4rem, 6vw, var(--text-xl));grid-area:title;align-self:end}.chat-header-links{gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;grid-area:link;display:flex}.chat-resume{justify-items:start;gap:var(--space-2);display:grid}.chat-messages{gap:var(--space-2);margin-bottom:var(--space-4);display:grid}.chat-bubble{max-width:85%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);animation:chat-in var(--motion-base) var(--ease-out)}.chat-bubble p{overflow-wrap:anywhere;margin:0}.chat-bubble-tutor{border-bottom-left-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);justify-self:start}.chat-bubble-learner{border-bottom-right-radius:var(--radius-sm);background:var(--color-primary);color:var(--color-on-primary);justify-self:end}.chat-recast{border-top:1px solid color-mix(in srgb, var(--color-on-primary) 35%, transparent);font-size:var(--text-sm);padding-top:.35rem;margin-top:.35rem!important}.chat-explanation{border-bottom:1px solid var(--color-border);font-size:var(--text-sm);margin-bottom:.45rem;padding-bottom:.45rem}.chat-explanation-label{color:var(--color-primary);font-weight:600;font-size:var(--text-xs)!important}.chat-speak{min-height:2.25rem;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-primary);font:inherit;font-size:var(--text-sm);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-out), transform var(--motion-fast) var(--ease-out);background:0 0;margin-top:.4rem}.chat-speak:hover:not(:disabled){border-color:var(--color-accent)}.chat-speak:active:not(:disabled){transform:scale(.96)}.chat-speak:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.chat-speak[aria-busy=true]{color:var(--color-muted);cursor:progress}.chat-voice-error{color:var(--color-accent);font-size:var(--text-sm);margin-top:.35rem!important}.chat-typing{color:var(--color-muted);font-style:italic}.chat-form{gap:var(--space-2);grid-template-columns:1fr auto;align-items:end;display:grid}.chat-form textarea{width:100%;min-height:2.75rem;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);font:inherit;resize:vertical;transition:border-color var(--motion-fast) var(--ease-out)}.chat-form textarea:focus-visible{border-color:var(--color-primary);outline-offset:0}.chat-form .button-primary{min-height:2.75rem}.chat-field-error{color:var(--color-accent);font-size:var(--text-sm);grid-column:1/-1;margin:0}.chat-finish{margin-top:var(--space-3)}.chat-done,.chat-history details{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);background:var(--color-surface)}.chat-done h3{margin-top:0}.chat-history li+li{margin-top:var(--space-2)}.chat-history summary{cursor:pointer}.chat-mistakes{gap:var(--space-3);margin:var(--space-3) 0;display:grid}.chat-mistake-pair,.chat-mistake-explanation{margin:0}.chat-mistake-pair s{color:var(--color-muted)}.chat-category{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-accent) 18%, transparent);font-size:var(--text-xs);padding:0 .35em}@keyframes chat-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.chat-bubble{animation:none}.chat-scenario,.chat-speak{transition:none}.chat-scenario:active:not(:disabled),.chat-speak:active:not(:disabled){transform:none}}.chat-call{margin:var(--space-3) 0;gap:.4rem;display:grid}.chat-call-start{min-height:3rem;font-size:var(--text-md)}.chat-call-state{margin:0;font-weight:600}.chat-call-listening .chat-call-state:before{content:"● ";color:var(--color-accent)}.chat-call-interim{color:var(--color-muted);margin:0;font-style:italic}.chat-call-hint{color:var(--color-muted);font-size:var(--text-sm);margin:0}.chat-call-spanish{justify-self:start}.level-up{margin:0 0 var(--space-4);box-shadow:var(--shadow-card);padding:var(--space-3) var(--space-4);border-left:3px solid var(--color-accent);border-radius:var(--radius);background:var(--color-surface)}.level-up p{margin:0 0 var(--space-3)}.level-up-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.avatar{justify-items:center;gap:var(--space-1);z-index:5;margin:0;display:grid;position:fixed;top:4rem;right:max(.75rem,50vw - 20rem - 210px)}.avatar-frame{aspect-ratio:200/240;width:min(200px,40vw);box-shadow:var(--shadow-avatar);border-radius:var(--radius);border:2px solid var(--color-border);background:linear-gradient(180deg, var(--color-surface), var(--color-border));transition:width var(--motion-base) var(--ease-out);position:relative;overflow:hidden}.avatar-compact .avatar-frame{border-radius:50%;width:56px}.avatar-compact{top:.75rem}.avatar-compact .avatar-toggle{font-size:var(--text-xs);min-height:0;padding:.15rem var(--space-2)}.avatar-art{width:100%;height:100%;display:block}.avatar-body,.avatar-head,.avatar-eyelid,.avatar-brows,.avatar-hair,.avatar-gaze{transform-box:fill-box}.avatar-mouthgroup{transform-origin:100px 113.9px;transform:translateY(calc(var(--open,0) * .6px)) scaleX(1.9) scaleY(.6)}.avatar-tongue{opacity:min(1, calc(var(--open,0) * .35))}.avatar-teeth{opacity:min(1, calc(var(--open,0) * .5))}.avatar-lower-lip{opacity:min(1, calc(var(--open,0) * .6));transform:translateY(calc(var(--open,0) * 1.2px))}.avatar-eyelid{transform-origin:50% 0;opacity:0;transform:scaleY(0)}.avatar-caption{min-height:1.1rem;font-size:var(--text-xs);color:var(--color-muted)}.avatar-compact .avatar-caption{display:none}.avatar-ring{pointer-events:none;border:3px solid var(--color-accent);border-radius:inherit;opacity:0;position:absolute;inset:0}.avatar[data-state=listening] .avatar-ring,.avatar[data-state=speaking] .avatar-ring{opacity:.85}.avatar[data-state=speaking] .avatar-ring{border-color:var(--color-primary)}.avatar-dots{gap:4px;display:none;position:absolute;top:8%;right:8%}.avatar[data-state=thinking] .avatar-dots{display:flex}.avatar-dots i{background:var(--color-accent);border-radius:50%;width:7px;height:7px}.avatar[data-state=thinking] .avatar-head{transform:translate(-2px,-1px)rotate(-2deg)}@media (prefers-reduced-motion:no-preference){.avatar-body{transform-origin:50% 100%;animation:4.2s ease-in-out infinite avatar-breathe}.avatar-head{transform-origin:50% 90%;animation:7s ease-in-out infinite avatar-head}.avatar-brows{animation:6s ease-in-out infinite avatar-brows}.avatar-eyelid{animation:4.8s linear infinite avatar-blink}.avatar-hair{transform-origin:50% 0;animation:5.5s ease-in-out infinite avatar-hair}.avatar-gaze{animation:9s ease-in-out infinite avatar-gaze}.avatar[data-state=listening] .avatar-gaze,.avatar[data-state=speaking] .avatar-gaze{animation:none}.avatar[data-state=listening] .avatar-head,.avatar[data-state=speaking] .avatar-head{animation:none;transform:rotate(.8deg)}.avatar[data-state=thinking] .avatar-head{animation:none}.avatar[data-state=listening] .avatar-ring{animation:1.4s ease-in-out infinite avatar-pulse}.avatar[data-state=thinking] .avatar-dots i{animation:1s ease-in-out infinite avatar-dot}.avatar[data-state=thinking] .avatar-dots i:nth-child(2){animation-delay:.15s}.avatar[data-state=thinking] .avatar-dots i:nth-child(3){animation-delay:.3s}.avatar[data-state=happy] .avatar-head{animation:avatar-happy 1.1s var(--ease-bounce) 1}.avatar[data-state=puzzled] .avatar-head{animation:1.4s ease-in-out avatar-puzzled}}@keyframes avatar-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:.3;transform:scale(1.03)}}@keyframes avatar-dot{0%,to{opacity:.25}50%{opacity:1}}@keyframes avatar-happy{0%,to{transform:translateY(0)rotate(0)}35%{transform:translateY(-4px)rotate(1.5deg)}65%{transform:translateY(0)rotate(-1deg)}}@keyframes avatar-puzzled{0%,to{transform:rotate(0)}30%,70%{transform:rotate(-4deg)translate(-2px)}}@keyframes avatar-breathe{0%,to{transform:scale(1.01)translateY(0)}50%{transform:scale(1.025)translateY(-2px)}}@keyframes avatar-head{0%,to{transform:translate(0)rotate(0)}30%{transform:translate(1px,-1px)rotate(1deg)}65%{transform:translate(-1px)rotate(-1.3deg)}}@keyframes avatar-brows{0%,to{transform:translateY(0)}45%{transform:translateY(-1.5px)}55%{transform:translateY(-1.5px)}}@keyframes avatar-hair{0%,to{transform:rotate(0)skew(0)}50%{transform:rotate(.9deg)skew(-1.2deg)}}@keyframes avatar-gaze{0%,to{transform:translate(0)}20%{transform:translate(2.4px,-.6px)}50%{transform:translate(-2.4px,.4px)}75%{transform:translate(.8px,1px)}}@keyframes avatar-blink{0%,93%,to{opacity:0;transform:scaleY(0)}96%{opacity:1;transform:scaleY(1)}}.companion-greeting{gap:var(--space-3);margin:0 0 var(--space-4);display:grid}.companion-greeting-text{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--color-surface);border:1px solid var(--color-border);margin:0}.companion-suggestion{margin:0}.chat-logo{width:72px;height:72px;box-shadow:0 0 0 2px var(--color-primary), var(--shadow-avatar);border-radius:50%}.chat-natural .chat-speak{margin:0 0 0 var(--space-2);min-height:1.75rem;padding:0 var(--space-2);font-size:var(--text-xs)}.chat-repeat{margin-left:.5rem}.pron-result{margin-top:.4rem}.pron-score{margin:0 0 var(--space-1);font-size:var(--text-sm)}.pron-words{gap:var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.pron-word{border-radius:var(--radius-sm);padding:.1rem .4rem;font-style:normal}.pron-green{background:var(--color-success-bg);color:var(--color-success)}.pron-yellow{background:var(--color-warning-bg);color:var(--color-warning)}.pron-red{background:var(--color-danger-bg);color:var(--color-danger)}.pron-listen{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.practice-list{gap:var(--space-3);margin:0;padding:0;list-style:none;display:grid}.practice-card{gap:var(--space-3);padding:var(--space-4);display:grid}.practice-skeleton{border-radius:var(--radius-lg);height:9rem}.practice-chips{justify-content:space-between;gap:var(--space-2);flex-wrap:wrap;display:flex}.practice-chips .info-chip:first-child{background:var(--color-primary-soft);color:var(--color-primary)}.practice-text{font-size:var(--text-md);margin:0;line-height:1.4}.practice-actions{gap:1.25rem;display:flex}.practice-action{align-items:center;gap:var(--space-1);flex-direction:column;display:inline-flex}.practice-round{border:2px solid var(--color-primary);width:48px;height:48px;color:var(--color-primary);cursor:pointer;transition:transform var(--motion-fast) var(--ease-bounce);background:0 0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.practice-round svg{width:22px;height:22px}.practice-round:active:not(:disabled){transform:scale(.92)}.practice-round:disabled{opacity:.5;cursor:default}.practice-round-fill{background:var(--color-primary);color:var(--color-on-primary)}.practice-listening:after{content:"";border:2px solid var(--color-primary);pointer-events:none;border-radius:50%;animation:1.2s ease-out infinite practice-pulse;position:absolute;inset:-6px}@keyframes practice-pulse{0%{opacity:.8;transform:scale(.9)}to{opacity:0;transform:scale(1.25)}}.practice-caption{color:var(--color-muted);font-size:var(--text-xs)}.practice-result{animation:practice-enter .2s var(--ease-out)}@keyframes practice-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.practice-listening:after,.practice-result{animation:none}.practice-round{transition:none}.practice-round:active:not(:disabled){transform:none}}.review{max-width:40rem;padding:var(--space-4) 16px calc(5rem + env(safe-area-inset-bottom));margin:0 auto}.review-header{align-items:center;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.review-header h1{flex:1;margin:0}.review-back{align-items:center;text-decoration:none;display:inline-flex}.review-count{width:100%;color:var(--color-muted);margin:0}.review-card,.review-done{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow);padding:1.25rem;position:relative}.review-card h2{margin:0 0 var(--space-3);color:var(--color-primary);font-family:var(--font-heading);font-size:var(--text-xl);overflow-wrap:anywhere}.review-card h2:focus{outline:none}.review-sentence{margin:0 0 var(--space-4);font-size:var(--text-md);line-height:1.6}.review-sentence mark{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-accent) 22%, transparent);color:inherit;padding:0 .15em;font-weight:600}.review-listen{margin:0 0 var(--space-4)}.review-audio-error{color:var(--color-accent);margin:-.5rem 0 1rem}.review-reveal{width:100%}.review-answer{margin:0 0 var(--space-4);padding:var(--space-2) var(--space-3);border-left:3px solid var(--color-accent);background:var(--color-bg)}.review-translation{margin:0 0 var(--space-1);font-size:var(--text-lg);font-weight:600}.review-sentence-translation{color:var(--color-muted);margin:0}.rating-buttons{gap:var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.rating-button{min-height:3.5rem;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg);color:var(--color-text);font:inherit;cursor:pointer;transition:transform var(--motion-fast) var(--ease-out);flex-direction:column;justify-content:center;align-items:center;font-weight:600;display:flex}@media (hover:hover){.rating-button:hover{border-color:var(--color-primary)}}.rating-button:active{transform:scale(.96)}.rating-button small{color:var(--color-muted);font-weight:400}.rating-1{border-color:var(--color-accent)}.rating-3{border-color:var(--color-primary)}.review-remove{margin-top:var(--space-4);width:100%;color:var(--color-muted)}.review-done{text-align:center;overflow:hidden}.review-done h2{margin:0 0 var(--space-2);color:var(--color-primary);font-family:var(--font-heading)}.review-done p{margin:0 0 var(--space-4);color:var(--color-muted)}.review-done .button-primary{align-items:center;text-decoration:none;display:inline-flex}.review-empty,.review-notice{color:var(--color-muted)}.review-counter{background:var(--color-accent);align-items:center;text-decoration:none;display:inline-flex}.review-counter-empty{color:var(--color-muted);align-items:center;margin:0;display:inline-flex}.review-notice-link{align-items:center;text-decoration:none;display:inline-flex}.progress-actions{gap:var(--space-2) var(--space-3);margin-top:var(--space-6);border-top:1px solid var(--color-border);flex-wrap:wrap;padding-top:1rem;display:flex}.progress-actions .library-notice{width:100%;margin:0}.app-toast{bottom:calc(9.5rem + env(safe-area-inset-bottom));z-index:50;align-items:center;gap:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:max-content;max-width:calc(100% - 32px);color:var(--color-text);box-shadow:var(--shadow-pop);flex-wrap:wrap;padding:.6rem .9rem;display:flex;position:fixed;left:50%;transform:translate(-50%)}.app-toast button{border-radius:var(--radius);min-height:2.5rem;font:inherit;cursor:pointer;padding:0 .85rem;font-weight:600}.app-toast-primary{background:var(--color-primary);color:var(--color-on-primary);border:0}.app-toast-secondary{border:1px solid var(--color-border);color:var(--color-text);background:0 0}:root{--tab-bar-height:3.75rem}.has-tab-bar{padding-bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom))}.tab-bar{z-index:40;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow);view-transition-name:tab-bar;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.tab-bar{background:color-mix(in srgb, var(--color-surface) 82%, transparent);-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4)}}.tab-bar-link{justify-content:center;align-items:center;gap:var(--space-1);min-height:var(--tab-bar-height);color:var(--color-muted);font-size:var(--text-xs);transition:transform var(--motion-fast) var(--ease-bounce);flex-direction:column;text-decoration:none;display:flex}.tab-bar-link:active{transform:scale(.92)}.tab-bar-icon{border-radius:var(--radius-pill);width:56px;height:30px;transition:background-color var(--motion-base) var(--ease-out);place-items:center;display:grid}.tab-bar-link[aria-current=page]{color:var(--color-primary);font-weight:600}.tab-bar-link[aria-current=page] .tab-bar-icon{background:var(--color-primary-soft)}.screen-title{margin:var(--space-1) 0 var(--space-4);font-family:var(--font-heading);font-size:var(--text-xl);font-weight:700;line-height:1.15}.card{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-card)}.info-chip{border-radius:var(--radius-pill);background:var(--color-primary-soft);min-height:1.75rem;color:var(--color-primary);font-size:var(--text-xs);white-space:nowrap;align-items:center;padding:0 .7rem;font-weight:600;display:inline-flex}.info-chip-success{background:var(--color-success-bg);color:var(--color-success)}.info-chip-warning{background:var(--color-warning-bg);color:var(--color-warning)}.info-chip-danger{background:var(--color-danger-bg);color:var(--color-danger)}.info-chip-muted{background:var(--color-border);color:var(--color-text)}.skeleton{border-radius:var(--radius-lg);background:var(--color-border);animation:1.4s ease-in-out infinite skeleton-pulse}@keyframes skeleton-pulse{50%{opacity:.45}}.empty-state{justify-items:center;gap:var(--space-3);margin-top:var(--space-5);padding:var(--space-6) var(--space-4);border:1px dashed var(--color-primary);border-radius:var(--radius-lg);background:var(--gradient-card);text-align:center;display:grid}.empty-state-face{width:128px;height:154px;filter:drop-shadow(0 6px 10px var(--color-shadow-ink))}.empty-state p{max-width:28rem;margin:0}.empty-state-title{font-family:var(--font-heading);font-size:var(--text-md);font-weight:700}.pill-button{transition:transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out);border-radius:var(--radius-pill);background:var(--color-primary);min-height:2.75rem;color:var(--color-on-primary);justify-content:center;align-items:center;padding:0 1.4rem;font-weight:600;text-decoration:none;display:inline-flex}.pill-button:active{transform:scale(.97)}@media (hover:hover){.pill-button:hover{box-shadow:var(--shadow-raised)}}.companion-picker{align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.companion-picker-title{margin:0;font-weight:600}.companion-picker-choice{align-items:center;gap:.4rem;display:inline-flex}.companion-picker-preview{width:2rem;height:2.4rem;display:inline-block;overflow:hidden}.companion-picker-face{width:100%;height:100%}.home{max-width:40rem;padding:var(--space-4);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.home-header{gap:var(--space-1);flex-direction:column;display:flex}.home-date{align-items:center;gap:var(--space-2);color:var(--color-muted);font-size:var(--text-sm);display:flex}.home-date span:first-letter{text-transform:uppercase}.home-date img{border-radius:var(--radius)}.home-cards{gap:var(--space-4);flex-direction:column;display:flex}.home-header,.home-cards,.home-tasks{animation:home-enter var(--motion-base) var(--ease-out) both}@keyframes home-enter{0%{opacity:0;transform:translateY(6px)}}.home-hero{align-items:flex-start;gap:var(--space-1);border-radius:var(--radius-lg);background:var(--gradient-hero);color:var(--color-on-hero);box-shadow:var(--shadow-card);transition:transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out);flex-direction:column;padding:1.25rem;text-decoration:none;display:flex}.home-hero:active,.home-card:active,a.home-task-row:active,button.home-task-row:active{transform:scale(.98)}@media (hover:hover){.home-hero:hover,.home-card:hover{box-shadow:var(--shadow-raised);transform:translateY(-1px)}.more-row:hover,.more-help summary:hover,a.home-task-row:hover,button.home-task-row:hover{background:var(--color-primary-soft)}}.home-hero-icon{width:44px;height:44px;margin-bottom:var(--space-2);background:var(--color-on-hero-soft);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.home-hero-title{font-weight:600;font-size:var(--text-base)}.home-hero-number{font-family:var(--font-heading,inherit);font-size:var(--text-display);font-weight:700;line-height:1.1}.home-hero-caption{font-size:var(--text-base)}.home-hero-skeleton{background:var(--color-on-hero-soft);width:4rem;height:2.75rem;display:block}.home-hero-button{margin-top:var(--space-3);background:var(--color-on-hero-bg);color:var(--color-on-hero-fg)}.home-grid{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.home-card{gap:var(--space-1);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--gradient-card);box-shadow:var(--shadow-card);color:var(--color-text);transition:transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out);flex-direction:column;text-decoration:none;display:flex}.home-card-icon{width:40px;height:40px;margin-bottom:var(--space-1);background:var(--color-primary-soft);color:var(--color-primary);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.home-card-title{font-weight:600}.home-card-text{color:var(--color-muted);font-size:var(--text-sm)}.more-group{margin:0;padding:0;list-style:none;overflow:hidden}.more-group li+li{border-top:1px solid var(--color-border)}.more-row{align-items:center;gap:var(--space-3);min-height:76px;padding:var(--space-3) var(--space-4);color:var(--color-text);text-decoration:none;display:flex}.more-row .home-card-icon{margin-bottom:0}.more-row-body{flex-direction:column;flex:1;display:flex}.more-row-chevron{width:20px;height:20px;color:var(--color-muted);flex:none}.more-help{margin-top:var(--space-5);padding:0}.more-row .home-card-icon,.more-help summary .home-card-icon{width:48px;height:48px}.more-row .home-card-title,.more-help summary .home-card-title{font-size:var(--text-md)}.more-help summary{align-items:center;gap:var(--space-3);min-height:76px;padding:var(--space-3) var(--space-4);cursor:pointer;list-style:none;display:flex}.more-help summary .home-card-title{flex:1}.more-help summary .home-card-icon{margin-bottom:0}.more-help[open] .more-row-chevron{transform:rotate(90deg)}.more-help ul{color:var(--color-muted);font-size:var(--text-sm);margin:0;padding:0 1rem 1rem 2.25rem}@media (prefers-reduced-motion:reduce){.home-hero,.home-card{transition:none}.home-hero:active,.home-card:active,a.home-task-row:active,button.home-task-row:active{transform:none}}.home-streak{color:var(--color-muted);margin:0;font-weight:600}.home-streak-done{color:var(--color-success)}.home-list-skeleton{border-radius:var(--radius-lg);height:14rem;display:block}.home-tasks{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.home-task{border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-card);color:var(--color-text);overflow:hidden}.home-task-row{transition:background-color var(--motion-fast) var(--ease-out);align-items:center;gap:var(--space-3);padding:var(--space-4);color:inherit;text-decoration:none;display:flex}button.home-task-row{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0}.home-task-icon{background:var(--color-primary-soft);width:40px;height:40px;color:var(--color-primary);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.home-task-body{flex-direction:column;flex:1;min-width:0;display:flex}.home-task-title{font-weight:600}.home-task-text{color:var(--color-muted);font-size:var(--text-sm)}.home-task-mark{font-size:var(--text-lg);flex:none;font-weight:700}.home-task-current{background:var(--gradient-hero);color:var(--color-on-hero)}.home-task-current .home-task-icon{background:var(--color-on-hero-soft);color:var(--color-on-hero)}.home-task-current .home-task-text{color:var(--color-on-hero)}.home-task-current a.home-task-row:hover,.home-task-current button.home-task-row:hover{background:0 0}.home-task-locked{box-shadow:none;border:1px dashed var(--color-border)}.home-task-current .home-task-button{background:var(--color-on-hero-bg);color:var(--color-on-hero-fg)}.home-task-done .home-task-mark{color:var(--color-success)}.home-task-locked .home-task-icon{background:var(--color-border);color:var(--color-muted)}.sync-panel{margin-top:var(--space-5);border-top:1px solid var(--color-border);padding-top:1rem}.sync-panel h2{margin:0 0 var(--space-2);font-family:var(--font-heading);font-size:var(--text-md)}.sync-form{gap:.4rem;max-width:32rem;display:grid}.sync-form label{margin-top:.4rem;font-weight:600}.sync-form input{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:100%;min-height:2.75rem;color:var(--color-text);font:inherit;padding:0 .85rem}.sync-form input[aria-invalid=true]{border-color:var(--color-accent)}.sync-form .button-primary{justify-self:start;margin-top:.6rem}.sync-hint{color:var(--color-muted);margin:0}.sync-field-error{color:var(--color-accent);margin:0}.sync-status{gap:var(--space-2);display:grid}.sync-status p{overflow-wrap:anywhere;margin:0}.sync-actions{gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.connect{max-width:40rem;padding:var(--space-5) var(--space-4);margin:0 auto}.connect h1{margin:0 0 var(--space-4);font-family:var(--font-heading)}.connect-confirm h2{margin:0 0 var(--space-2);font-size:var(--text-md)}.sync-manual summary{cursor:pointer;font-weight:600}.sync-manual[open] summary{margin-bottom:var(--space-2)}.memory h3{margin:var(--space-4) 0 var(--space-2);color:var(--color-muted);font-size:var(--text-sm);font-weight:600}.memory-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.memory-item{gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);justify-content:space-between;align-items:flex-start;display:flex}.memory-item p{margin:0}.memory-item small{color:var(--color-muted)}.memory-item .button-ghost{flex-shrink:0}.memory-actions{margin-top:var(--space-6);text-align:center}.memory-forget-all{color:var(--color-accent)}.memory-focus{margin:var(--space-4) 0 0;padding:var(--space-3) var(--space-4);border-left:3px solid var(--color-accent);border-radius:var(--radius);background:var(--color-surface)}.memory-level .chip-group,.memory-correction .chip-group{flex-wrap:wrap}.memory-level .level-up{margin-top:var(--space-4)}@font-face{font-family:lexend;src:url(/fonts/lexend/Lexend-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:lexend;src:url(/fonts/lexend/Lexend-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:archivo;src:url(/fonts/archivo/Archivo-Variable-latin.woff2)format("woff2");font-weight:100 900;font-stretch:62% 125%;font-style:normal;font-display:swap}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-bg:#f8fafc;--color-surface:#fff;--color-text:#0f172a;--color-muted:#526072;--color-border:#e2e8f0;--color-primary:#174265;--color-on-primary:#fff;--color-accent:#c2410c;--hl-word-bg:#fed7aa;--hl-word-fg:#0f172a;--hl-sentence-bg:#e0eaf3;--font-text:"lexend", system-ui, sans-serif;--font-heading:"archivo", system-ui, sans-serif;--radius:8px;--shadow:0 -4px 16px #0f172a14;--radius-lg:16px;--radius-pill:999px;--shadow-card:0 1px 2px #0f172a0f, 0 4px 12px #0f172a0f;--color-primary-soft:color-mix(in srgb, var(--color-primary) 12%, var(--color-surface));--gradient-hero:linear-gradient(135deg, #174265, #24689c);--color-on-hero:#fff;--color-success-bg:#d9f2de;--color-success:#14532d;--color-warning-bg:#fdf0c4;--color-warning:#713f12;--color-danger-bg:#fbd9d9;--color-danger:#7f1d1d;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.25rem;--text-xl:clamp(1.6rem, 5vw, 2rem);--text-display:2.5rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--radius-sm:6px;--shadow-raised:0 2px 4px #0f172a14, 0 8px 20px #0f172a1a;--shadow-pop:0 4px 16px #0f172a2e;--shadow-avatar:0 4px 14px #00000040;--color-on-hero-soft:#fff3;--color-shadow-ink:#0f172a33;--color-on-hero-bg:#fff;--color-on-hero-fg:#174265;--color-confetti:#f97316;--gradient-page:radial-gradient(120% 60% at 50% 0%, #dbe9f6 0%, #dbe9f600 70%);--gradient-primary:linear-gradient(135deg, #174265, #24689c);--gradient-card:linear-gradient(180deg, #fff, #f3f8fc);--shadow-primary:0 4px 12px #17426559;--motion-fast:.12s;--motion-base:.22s;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-bounce:cubic-bezier(.34, 1.56, .64, 1)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0f172a;--color-surface:#111c33;--color-text:#f8fafc;--color-muted:#94a3b8;--color-border:#1e293b;--color-primary:#7fb2dc;--color-on-primary:#0f172a;--color-accent:#fb923c;--hl-word-bg:#9a3412;--hl-word-fg:#f8fafc;--hl-sentence-bg:#1e3a5f;--shadow:0 -4px 16px #0006;--shadow-card:0 1px 2px #0006, 0 4px 12px #0000004d;--gradient-hero:linear-gradient(135deg, #1e3a5f, #2a5a86);--color-success-bg:#14402a;--color-success:#bbf7d0;--color-warning-bg:#4a3a0c;--color-warning:#fde68a;--color-danger-bg:#4d1717;--color-danger:#fecaca;--shadow-raised:0 2px 4px #00000080, 0 8px 20px #0006;--shadow-pop:0 4px 16px #00000080;--shadow-avatar:0 4px 14px #0006;--color-on-hero-soft:#fff3;--color-shadow-ink:#00000080;--color-on-hero-bg:#f8fafc;--color-on-hero-fg:#0f172a;--color-confetti:#fb923c;--gradient-page:radial-gradient(120% 60% at 50% 0%, #1b3556 0%, #1b355600 70%);--gradient-primary:linear-gradient(135deg, #7fb2dc, #5a9bd0);--gradient-card:linear-gradient(180deg, #14223d, #101b32);--shadow-primary:0 4px 12px #7fb2dc4d}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0f172a;--color-surface:#111c33;--color-text:#f8fafc;--color-muted:#94a3b8;--color-border:#1e293b;--color-primary:#7fb2dc;--color-on-primary:#0f172a;--color-accent:#fb923c;--hl-word-bg:#9a3412;--hl-word-fg:#f8fafc;--hl-sentence-bg:#1e3a5f;--shadow:0 -4px 16px #0006;--shadow-card:0 1px 2px #0006, 0 4px 12px #0000004d;--gradient-hero:linear-gradient(135deg, #1e3a5f, #2a5a86);--color-success-bg:#14402a;--color-success:#bbf7d0;--color-warning-bg:#4a3a0c;--color-warning:#fde68a;--color-danger-bg:#4d1717;--color-danger:#fecaca;--shadow-raised:0 2px 4px #00000080, 0 8px 20px #0006;--shadow-pop:0 4px 16px #00000080;--shadow-avatar:0 4px 14px #0006;--color-on-hero-soft:#fff3;--color-shadow-ink:#00000080;--color-on-hero-bg:#f8fafc;--color-on-hero-fg:#0f172a;--color-confetti:#fb923c;--gradient-page:radial-gradient(120% 60% at 50% 0%, #1b3556 0%, #1b355600 70%);--gradient-primary:linear-gradient(135deg, #7fb2dc, #5a9bd0);--gradient-card:linear-gradient(180deg, #14223d, #101b32);--shadow-primary:0 4px 12px #7fb2dc4d}*,:before,:after{box-sizing:border-box}body{background:var(--gradient-page) no-repeat, var(--color-bg);color:var(--color-text);font-family:var(--font-text);margin:0;line-height:1.5}h1,h2,h3{font-family:var(--font-heading);line-height:1.2}h1:not(.reader-header h1):after{content:"";width:2.5rem;height:4px;margin-top:var(--space-2);border-radius:var(--radius-pill);background:var(--color-accent);display:block}a{color:var(--color-accent)}:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}::view-transition-old(root){animation-duration:var(--motion-base)}::view-transition-new(root){animation-duration:var(--motion-base)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}::view-transition-group(*){transition:none!important;animation:none!important}::view-transition-old(*){transition:none!important;animation:none!important}::view-transition-new(*){transition:none!important;animation:none!important}}
