:root{--bg: #0b0b0d;--surface: #17161a;--surface-raised: #121114;--text-primary: #f2ede5;--text-secondary: #e6e1da;--text-muted: rgba(230, 225, 218, .88);--text-faint: rgba(230, 225, 218, .85);--text-soft: rgba(230, 225, 218, .9);--text-soft-2: rgba(230, 225, 218, .92);--text-dim: rgba(230, 225, 218, .75);--text-ghost: rgba(230, 225, 218, .35);--text-ghost-2: rgba(230, 225, 218, .28);--hint: #807c74;--accent: #d4b483;--accent-contrast: #1a150c;--accent-soft: rgba(212, 180, 131, .35);--button: #d4b483;--danger: #c98274;--success: #6a9e7a;--danger-text: #f0a8a8;--danger-text-2: #e8a0a0;--warn: #d9a441;--border: rgba(230, 225, 218, .1);--border-strong: rgba(230, 225, 218, .2);--overlay: rgba(0, 0, 0, .55);--shadow: rgba(0, 0, 0, .4);--shadow-mid: rgba(0, 0, 0, .35);--shadow-strong: rgba(0, 0, 0, .65);--scrim-18: rgba(0, 0, 0, .18);--scrim-22: rgba(0, 0, 0, .22);--hairline: rgba(255, 255, 255, .06);--hairline-mid: rgba(255, 255, 255, .08);--hairline-strong: rgba(255, 255, 255, .1);--hairline-ui: rgba(255, 255, 255, .12);--hairline-badge: rgba(255, 255, 255, .14);--fill-faint: rgba(255, 255, 255, .04);--ink-04: rgba(230, 225, 218, .04);--ink-06: rgba(230, 225, 218, .06);--ink-08: rgba(230, 225, 218, .08);--ink-10: rgba(230, 225, 218, .1);--ink-16: rgba(230, 225, 218, .16);--ink-25: rgba(230, 225, 218, .25);--accent-05: rgba(212, 180, 131, .05);--accent-06: rgba(212, 180, 131, .06);--accent-07: rgba(212, 180, 131, .07);--accent-08: rgba(212, 180, 131, .08);--accent-10: rgba(212, 180, 131, .1);--accent-12: rgba(196, 167, 125, .12);--accent-16: rgba(212, 180, 131, .16);--accent-18: rgba(212, 180, 131, .18);--accent-25: rgba(212, 180, 131, .25);--accent-28: rgba(212, 180, 131, .28);--accent-30: rgba(212, 180, 131, .3);--accent-32: rgba(212, 180, 131, .32);--accent-35: rgba(212, 180, 131, .35);--accent-40: rgba(212, 180, 131, .4);--accent-45: rgba(196, 167, 125, .45);--accent-48: rgba(212, 180, 131, .48);--accent-50: rgba(212, 180, 131, .5);--accent-55: rgba(212, 180, 131, .55);--accent-60: rgba(212, 180, 131, .6);--accent-70: rgba(212, 180, 131, .7);--accent-72: rgba(212, 180, 131, .72);--accent-75: rgba(212, 180, 131, .75);--accent-80: rgba(212, 180, 131, .8);--danger-08: rgba(201, 130, 116, .08);--danger-25: rgba(201, 130, 116, .25);--danger-35: rgba(201, 130, 116, .35);--status-new: rgba(230, 225, 218, .45);--status-learning: rgba(212, 180, 131, .45);--status-familiar: rgba(212, 180, 131, .8);--status-mastered: #d4b483;--tap-level-1: rgba(212, 180, 131, .55);--tap-level-2: rgba(212, 180, 131, .8);--tap-active: rgba(212, 180, 131, .32);--heatmap-0: rgba(230, 225, 218, .1);--heatmap-1: rgba(212, 180, 131, .28);--heatmap-2: rgba(212, 180, 131, .48);--heatmap-3: rgba(212, 180, 131, .72);--heatmap-4: #d4b483;--tap-stat-known: #0f766e;--tap-stat-hint: #b45309;--tap-stat-unknown: #0369a1;--text: var(--text-primary);--secondary: var(--surface);--button-text: var(--accent-contrast);--font-serif: "Piazzolla", Georgia, "Times New Roman", serif;--font-sans: "IBM Plex Sans", "Segoe UI", sans-serif;--bottom-nav-row: 48px;--bottom-nav-gesture-buffer: 10px;--app-shell-inset-top: 0px;--app-shell-inset-right: 0px;--app-shell-inset-bottom: 0px;--app-shell-inset-left: 0px;--bottom-nav-total: calc( var(--bottom-nav-row) + var(--app-shell-inset-bottom, 0px) + var(--bottom-nav-gesture-buffer) );--finish-summary-cta-total: calc(3.3rem + 1.45em) ;font-family:var(--font-sans);color:var(--text);background:var(--bg);line-height:1.45;transition:background-color .16s ease,color .16s ease}html[data-theme=light]{--bg: #efe9df;--surface: #f7f2e9;--surface-raised: #fffcf7;--text-primary: #1c1914;--text-secondary: #3f3a32;--text-muted: rgba(40, 35, 28, .78);--text-faint: rgba(40, 35, 28, .72);--text-soft: rgba(40, 35, 28, .82);--text-soft-2: rgba(40, 35, 28, .88);--text-dim: rgba(40, 35, 28, .65);--text-ghost: rgba(40, 35, 28, .38);--text-ghost-2: rgba(40, 35, 28, .3);--hint: #5c574f;--accent: #8a6528;--accent-contrast: #fffaf0;--accent-soft: rgba(138, 101, 40, .35);--button: #8a6528;--danger: #a85848;--success: #3d7a52;--danger-text: #a84848;--danger-text-2: #a04040;--warn: #9a6b10;--border: rgba(40, 35, 28, .12);--border-strong: rgba(40, 35, 28, .22);--overlay: rgba(40, 30, 20, .4);--shadow: rgba(40, 30, 20, .14);--shadow-mid: rgba(40, 30, 20, .12);--shadow-strong: rgba(40, 30, 20, .22);--scrim-18: rgba(40, 30, 20, .06);--scrim-22: rgba(40, 30, 20, .08);--hairline: rgba(40, 35, 28, .08);--hairline-mid: rgba(40, 35, 28, .1);--hairline-strong: rgba(40, 35, 28, .12);--hairline-ui: rgba(40, 35, 28, .14);--hairline-badge: rgba(40, 35, 28, .16);--fill-faint: rgba(40, 35, 28, .04);--ink-04: rgba(40, 35, 28, .04);--ink-06: rgba(40, 35, 28, .06);--ink-08: rgba(40, 35, 28, .08);--ink-10: rgba(40, 35, 28, .1);--ink-16: rgba(40, 35, 28, .14);--ink-25: rgba(40, 35, 28, .22);--accent-05: rgba(138, 101, 40, .05);--accent-06: rgba(138, 101, 40, .06);--accent-07: rgba(138, 101, 40, .07);--accent-08: rgba(138, 101, 40, .08);--accent-10: rgba(138, 101, 40, .1);--accent-12: rgba(138, 101, 40, .12);--accent-16: rgba(138, 101, 40, .16);--accent-18: rgba(138, 101, 40, .18);--accent-25: rgba(138, 101, 40, .25);--accent-28: rgba(138, 101, 40, .28);--accent-30: rgba(138, 101, 40, .3);--accent-32: rgba(138, 101, 40, .32);--accent-35: rgba(138, 101, 40, .35);--accent-40: rgba(138, 101, 40, .4);--accent-45: rgba(138, 101, 40, .45);--accent-48: rgba(138, 101, 40, .48);--accent-50: rgba(138, 101, 40, .5);--accent-55: rgba(138, 101, 40, .55);--accent-60: rgba(138, 101, 40, .6);--accent-70: rgba(138, 101, 40, .7);--accent-72: rgba(138, 101, 40, .72);--accent-75: rgba(138, 101, 40, .75);--accent-80: rgba(138, 101, 40, .8);--danger-08: rgba(168, 88, 72, .08);--danger-25: rgba(168, 88, 72, .25);--danger-35: rgba(168, 88, 72, .35);--status-new: rgba(40, 35, 28, .38);--status-learning: rgba(138, 101, 40, .45);--status-familiar: rgba(138, 101, 40, .75);--status-mastered: #8a6528;--tap-level-1: rgba(138, 101, 40, .55);--tap-level-2: rgba(138, 101, 40, .8);--tap-active: rgba(138, 101, 40, .28);--heatmap-0: rgba(40, 35, 28, .1);--heatmap-1: rgba(138, 101, 40, .28);--heatmap-2: rgba(138, 101, 40, .48);--heatmap-3: rgba(138, 101, 40, .72);--heatmap-4: #8a6528;--tap-stat-known: #0f766e;--tap-stat-hint: #b45309;--tap-stat-unknown: #0369a1}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--text);transition:background-color .16s ease,color .16s ease}.app-shell{min-height:100vh;min-height:100dvh;background:var(--bg);padding-top:var(--app-shell-inset-top, 0px);padding-right:var(--app-shell-inset-right, 0px);padding-left:var(--app-shell-inset-left, 0px)}.app{max-width:40rem;margin:0 auto;padding:1.5rem 1.1rem var(--bottom-nav-total)}.app-shell:has(>.app--onboarding){display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app--onboarding{flex:1;display:flex;flex-direction:column;min-height:0;padding-bottom:calc(var(--app-shell-inset-bottom, 0px) + var(--bottom-nav-gesture-buffer))}.account-blocked{min-height:70vh;display:flex;flex-direction:column;justify-content:center;gap:.75rem;text-align:center;padding-bottom:1.5rem}.account-blocked-title{margin:0;font-family:var(--font-serif);font-size:1.75rem;font-weight:600;color:var(--text)}.account-blocked-body{margin:0;color:var(--hint);font-size:1rem;line-height:1.5}.bottom-nav{position:fixed;left:var(--app-shell-inset-left, 0px);right:var(--app-shell-inset-right, 0px);bottom:0;z-index:40;display:flex;align-items:stretch;justify-content:space-around;height:var(--bottom-nav-total);padding:0 .5rem calc(var(--app-shell-inset-bottom, 0px) + var(--bottom-nav-gesture-buffer));background:var(--bg);border-top:1px solid var(--hairline);color:var(--text-secondary)}.bottom-nav-tab{flex:1;display:flex;align-items:center;justify-content:center;margin:0;padding:.35rem 0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit}.bottom-nav-tab svg{display:block;opacity:.38}.bottom-nav-tab.is-active{color:var(--accent)}.bottom-nav-tab.is-active svg{opacity:1}.bottom-nav--muted .bottom-nav-tab,.bottom-nav--muted .bottom-nav-tab.is-active{color:var(--hint)}.bottom-nav--muted .bottom-nav-tab svg{opacity:1}.bottom-nav-icon{position:relative;display:inline-flex}.bottom-nav-badge{position:absolute;top:-9px;left:calc(100% - 3px);box-sizing:border-box;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--accent);color:var(--accent-contrast);box-shadow:0 0 0 2px var(--bg);font-size:.69rem;font-weight:700;line-height:17px;text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none}.bottom-nav-badge--dot{top:-3px;left:calc(100% - 1px);min-width:9px;width:9px;height:9px;padding:0}.bottom-nav-badge.is-pulsing{animation:bottom-nav-badge-pulse .7s ease-in-out 2}@keyframes bottom-nav-badge-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.3)}}@media (prefers-reduced-motion: reduce){.bottom-nav-badge.is-pulsing{animation:none}}.profile-screen-header{margin-bottom:.75rem}.profile-identity{display:flex;align-items:center;gap:.85rem;margin:0 0 1.15rem;max-width:100%;min-width:0}.profile-theme-toggle{flex-shrink:0;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:0 0 0 auto;padding:0;border:1px solid var(--border-strong);border-radius:50%;background:var(--fill-faint);color:var(--text-primary);cursor:pointer;-webkit-tap-highlight-color:transparent}.profile-theme-toggle:active{background:var(--ink-10)}.profile-avatar{--profile-avatar-size: 2.75rem;flex-shrink:0;box-sizing:border-box;width:var(--profile-avatar-size);height:var(--profile-avatar-size);max-width:var(--profile-avatar-size);max-height:var(--profile-avatar-size);border-radius:50%;overflow:hidden;background:var(--ink-10);border:1px solid var(--hairline-strong)}.profile-avatar-img{display:block;box-sizing:border-box;width:var(--profile-avatar-size, 2.75rem);height:var(--profile-avatar-size, 2.75rem);max-width:var(--profile-avatar-size, 2.75rem);max-height:var(--profile-avatar-size, 2.75rem);object-fit:cover;object-position:center}.profile-avatar-initials,.profile-avatar-placeholder{display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-family:var(--font-sans);font-size:.95rem;font-weight:600;letter-spacing:.02em}.profile-avatar-placeholder{color:var(--hint)}.profile-identity-text{display:flex;flex:1 1 0;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0;overflow:hidden}.profile-identity-name{margin:0;max-width:100%;font-family:var(--font-sans);font-size:1.15rem;font-weight:600;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-plan-badge{display:inline-block;flex-shrink:0;padding:.15rem .45rem;border-radius:6px;border:1px solid var(--hairline-badge);background:var(--fill-faint);font-family:var(--font-sans);font-size:.68rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--hint)}.profile-plan-badge.is-pro{border-color:var(--accent-45);background:var(--accent-12);color:var(--accent)}.profile-accordion{margin:.85rem 0 .15rem}.profile-accordion-header{display:flex;width:100%;align-items:center;justify-content:space-between;gap:.75rem;margin:0;padding:.45rem 0;border:0;background:transparent;color:var(--hint);font:inherit;font-family:var(--font-sans);font-size:.66rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;text-align:left;cursor:pointer}.profile-accordion-label{min-width:0}.profile-accordion-meta{letter-spacing:.04em;text-transform:none;opacity:.9}.profile-accordion-body{padding:.15rem 0 .35rem}.reader-profile-hint{margin:0 0 .85rem;font-size:.8rem;line-height:1.5;color:var(--hint)}.reader-profile-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--font-serif);font-size:1.05rem;line-height:1.68;color:var(--text-muted)}.reader-profile-empty{margin:0;color:var(--hint);line-height:1.4}.subscription-card{margin:.5rem 0 1rem;padding:1rem 1.05rem;border-radius:12px;border:1px solid var(--hairline-mid);background:var(--scrim-22)}.subscription-card-title{margin:0 0 .5rem;font-family:var(--font-sans);font-size:1rem;font-weight:600}.subscription-card-body,.subscription-card-meta{margin:0 0 .65rem;font-size:.9rem;line-height:1.5;color:var(--text-muted)}.subscription-card-error{margin:.5rem 0 0;color:var(--danger-text);font-size:.85rem}.subscription-plans{display:grid;grid-template-columns:1fr 1fr;gap:.65rem;margin:.75rem 0}.subscription-plans--single{grid-template-columns:1fr}.subscription-plan-btn{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;padding:.75rem .8rem;border-radius:10px;border:1px solid var(--hairline-ui);background:var(--fill-faint);color:inherit;text-align:left}.subscription-plan-btn-best{border-color:var(--accent-45)}.subscription-plan-badge{font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.subscription-plan-name{font-weight:600}.subscription-plan-stars{font-size:.95rem}.subscription-plan-label{font-size:.78rem;color:var(--hint)}.subscription-profile-section{margin:.25rem 0 .5rem}.subscription-profile-section h2{margin:0;font-family:var(--font-sans);font-size:.66rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--hint)}.subscription-profile-card{margin-top:.55rem;padding:.85rem .95rem;border-radius:12px;border:1px solid var(--hairline-mid);background:var(--scrim-18)}.subscription-profile-plan{margin:0 0 .35rem}.subscription-profile-meta{margin:.25rem 0;font-size:.85rem;color:var(--hint)}.subscription-upgrade-btn{margin-top:.65rem;padding:.6rem .9rem;border-radius:10px;border:1px solid var(--accent-45);background:var(--accent-12);color:inherit}.purchase-screen .subscription-plans{margin-top:.25rem}.reminders-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.15rem}.reminders-label{margin:0;font-size:.95rem;color:var(--text-soft)}.reminders-hint{margin:.45rem 0 0;font-size:.8rem;line-height:1.45;color:var(--hint)}.reminders-toggle{position:relative;flex-shrink:0;width:2.75rem;height:1.55rem;margin:0;padding:0;border:1px solid var(--border-strong);border-radius:999px;background:var(--ink-08);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;transition:background .15s ease,border-color .15s ease}.reminders-toggle.is-on{background:var(--accent-28);border-color:var(--accent-55)}.reminders-toggle:disabled{opacity:.55;cursor:wait}.reminders-toggle-knob{position:absolute;top:.15rem;left:.15rem;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--text-dim);transition:transform .15s ease,background .15s ease}.reminders-toggle.is-on .reminders-toggle-knob{transform:translate(1.15rem);background:var(--accent)}.reminders-error{margin:.45rem 0 0;font-size:.8rem;color:var(--danger-text-2)}.profile-feedback{margin-top:1.15rem;padding-top:.85rem;border-top:1px solid var(--hairline)}.profile-feedback-link{display:inline-block;font-family:var(--font-sans);font-size:.95rem;font-weight:500;color:var(--accent);text-decoration:none}.profile-feedback-link:active{opacity:.85}.profile-feedback-hint{margin:.35rem 0 0;font-size:.8rem;line-height:1.45;color:var(--hint)}.profile-build-version{margin:1rem 0 0;font-family:var(--font-sans);font-size:.68rem;letter-spacing:.04em;color:var(--text-ghost)}.profile-cefr-attribution{margin:.45rem 0 0;font-family:var(--font-sans);font-size:.68rem;line-height:1.4;color:var(--text-ghost)}.archive-items{list-style:none;padding:0;margin:.35rem 0 .85rem}.archive-items li{border-bottom:1px solid var(--border)}.archive-item{display:flex;width:100%;align-items:baseline;justify-content:space-between;gap:.75rem;margin:0;padding:.9rem 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.archive-item:disabled{opacity:.6;cursor:not-allowed}.archive-item-text{display:flex;min-width:0;flex-direction:column;gap:.15rem}.archive-title{font-family:var(--font-serif);font-weight:500;font-size:1.05rem;color:var(--text)}.archive-badge{display:inline-block;margin-left:.45rem;padding:.1rem .4rem;border-radius:.35rem;background:var(--ink-08);color:var(--hint);font-family:var(--font-sans);font-size:.72rem;font-weight:500;vertical-align:middle;white-space:nowrap}.archive-theme{color:var(--hint);font-size:.85rem;font-weight:400}.archive-date{flex-shrink:0;color:var(--hint);font-size:.82rem}.screen-header h1{margin:.1rem 0 .35rem;font-family:var(--font-serif);font-weight:700;font-size:1.7rem;line-height:1.25;letter-spacing:-.01em;color:var(--text)}.screen-header p,.eyebrow{margin:0;color:var(--hint);font-size:.94rem;line-height:1.5}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.72rem}.primary-btn,.theme-custom button,.popup button,.word-tap{font:inherit;cursor:pointer}.primary-btn{border:0;border-radius:.85rem;padding:.9rem 1rem;background:color-mix(in srgb,var(--button) 92%,transparent);color:var(--button-text);font-weight:600;text-align:left}.primary-btn:disabled,.theme-custom button:disabled{opacity:.55;cursor:not-allowed}.first-run-intro{flex:1;display:flex;flex-direction:column;min-height:0;width:100%;overflow-x:hidden}.intro-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-shrink:0;margin-bottom:.5rem}.intro-dots{display:flex;align-items:center;gap:6px}.intro-dot{display:block;width:7px;height:7px;border-radius:999px;background:var(--accent-soft);transition:width .2s ease,background .2s ease}.intro-dot.is-active{width:22px;background:var(--accent)}.intro-skip{margin:0;padding:.65rem .35rem;min-height:44px;border:0;background:transparent;color:var(--hint);font:inherit;font-size:13px;cursor:pointer;-webkit-tap-highlight-color:transparent}.intro-step{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;padding-bottom:8vh;min-height:0;animation:intro-step-fwd .4s ease}.intro-step--back{animation-name:intro-step-back}.intro-step--fade{animation:intro-step-fade .2s ease}@keyframes intro-step-fwd{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes intro-step-back{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes intro-step-fade{0%{opacity:0}to{opacity:1}}.intro-anim-zone{flex-shrink:0;height:clamp(200px,36vh,340px);display:flex;align-items:center;justify-content:center;margin-bottom:clamp(16px,3vh,32px);overflow:hidden}.intro-title{margin:0 0 .55rem;font-family:var(--font-sans);font-size:19px;font-weight:500;color:var(--text-primary);line-height:1.3}.intro-body{margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.55;color:var(--hint)}.intro-footer{flex-shrink:0;padding-top:1.25rem}.intro-cta{width:100%;text-align:center}.intro-demo-tap{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:0 .25rem}.intro-demo-tap-sentence{margin:0;font-family:var(--font-serif);font-size:clamp(15px,2.1vh,17px);line-height:1.55;color:var(--text-primary);text-align:center}.intro-demo-tap-chip{display:inline;margin:0;border:0;border-bottom:1px solid var(--accent);border-radius:2px;padding:0 2px;background:transparent;font:inherit;color:var(--accent);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .2s ease}.intro-demo-tap-chip.is-active{background:var(--tap-active)}.intro-demo-tap-chip.is-pulsing{animation:intro-word-pulse 1.6s ease-in-out infinite}@keyframes intro-word-pulse{0%,to{background:transparent}50%{background:var(--tap-active)}}.intro-demo-tap-hint{margin:-.35rem 0 0;font-family:var(--font-sans);font-size:12px;color:var(--hint);transition:opacity .2s ease}.intro-demo-tap-hint.is-hidden{opacity:0}.intro-demo-tap-popup{width:min(100%,16rem);padding:.7rem .85rem;border-radius:.75rem;background:var(--surface);border:1px solid var(--border);box-shadow:0 10px 24px var(--shadow);opacity:0;transform:translateY(12px);transition:opacity .22s ease,transform .22s ease;pointer-events:none}.intro-demo-tap-popup.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}.intro-demo-tap-lemma-row{display:flex;align-items:baseline;gap:.55rem;flex-wrap:wrap}.intro-demo-tap-lemma{font-family:var(--font-serif);font-size:15px;font-weight:600;color:var(--text-primary)}.intro-demo-tap-ipa{font-family:var(--font-sans);font-size:12px;color:var(--hint)}.intro-demo-tap-uk{margin:.3rem 0 0;font-family:var(--font-serif);font-size:clamp(19px,2.8vh,22px);font-weight:600;line-height:1.25;color:var(--accent)}.intro-demo-tap-def{margin:.4rem 0 0;padding-top:.4rem;border-top:1px solid var(--border);font-family:var(--font-sans);font-size:11px;line-height:1.4;color:var(--hint)}.intro-demo-recall{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.45rem,1.6vh,.85rem);width:100%;height:100%}.intro-demo-rate-prompt{margin:0;font-family:var(--font-sans);font-size:12px;color:var(--hint)}.intro-demo-flip{flex-shrink:0;width:clamp(140px,40vw,180px);height:min(calc(clamp(140px,40vw,180px)*.62),13vh);min-height:64px;margin:0;padding:0;border:0;background:none;font:inherit;color:inherit;cursor:pointer;perspective:800px;-webkit-tap-highlight-color:transparent}.intro-demo-flip-inner{display:block}.intro-demo-flip-inner{position:relative;width:100%;height:100%;transition:transform .55s ease;transform-style:preserve-3d}.intro-demo-flip.is-flipped .intro-demo-flip-inner{transform:rotateY(180deg)}.intro-demo-flip-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:.65rem .75rem;border-left:3px solid var(--accent);font-family:var(--font-serif);font-size:1.05rem;color:var(--text-primary);backface-visibility:hidden;-webkit-backface-visibility:hidden;box-sizing:border-box}.intro-demo-flip-back{transform:rotateY(180deg);color:var(--accent);background:var(--accent-05)}.intro-demo-timeline{position:relative;display:flex;align-items:flex-start;justify-content:space-between;width:min(100%,18rem);padding-top:.15rem}.intro-demo-timeline-line{position:absolute;left:.35rem;right:.35rem;top:.42rem;height:2px;background:var(--accent-soft);z-index:0}.intro-demo-timeline-node-wrap{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:.35rem;flex:1}.intro-demo-timeline-node{width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--accent-soft);box-sizing:border-box;transition:background .2s ease,border-color .2s ease,transform .2s ease}.intro-demo-timeline-node-wrap.is-return .intro-demo-timeline-node{background:var(--accent);border-color:var(--accent);transform:scale(1.3)}.intro-demo-timeline-node-wrap.is-return .intro-demo-timeline-label{color:var(--accent);font-weight:600}.intro-demo-rate-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.4rem;width:min(100%,16rem)}.intro-demo-rate-btn{min-width:0;padding:.4rem .2rem;font-size:.74rem;line-height:1.2;border-radius:.65rem;transition:opacity .2s ease,box-shadow .2s ease}.intro-demo-rate-row.has-pick .intro-demo-rate-btn:not(.is-selected){opacity:.5}.intro-demo-rate-btn.is-selected{box-shadow:0 0 0 1.5px var(--accent-55);font-weight:600}.intro-demo-timeline-label{font-family:var(--font-sans);font-size:10px;color:var(--hint);text-align:center;white-space:nowrap}@media (prefers-reduced-motion: reduce){.intro-dot,.intro-demo-tap-chip,.intro-demo-tap-hint,.intro-demo-tap-popup,.intro-demo-flip-inner,.intro-demo-timeline-node,.intro-demo-rate-btn{transition:none}.intro-demo-tap-chip.is-pulsing,.intro-step,.intro-step--back,.intro-step--fade{animation:none}}.onboarding-level{flex:1;display:flex;flex-direction:column;min-height:0}.onboarding-level-header{flex-shrink:0}.onboarding-level-header h1{margin-bottom:.25rem;font-size:1.45rem}.onboarding-level-header p{margin-bottom:24px;font-size:.88rem;line-height:1.4}.onboarding-tier-list{flex:1 1 auto;display:flex;flex-direction:column;justify-content:flex-start;gap:10px;min-height:0}.onboarding-tier-card{display:flex;flex-direction:row;align-items:center;gap:.75rem;flex:1 1 0;width:100%;min-height:64px;max-height:76px;padding:0 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.onboarding-tier-card:active:not(:disabled),.onboarding-tier-card.is-pending,.onboarding-unknown-btn:active:not(:disabled),.onboarding-unknown-btn.is-pending{border-color:var(--accent);background:var(--accent-12)}.onboarding-tier-card:focus-visible,.onboarding-unknown-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.onboarding-tier-card:disabled:not(.is-pending),.onboarding-unknown-btn:disabled:not(.is-pending){opacity:.55;cursor:not-allowed}.onboarding-tier-card.is-pending:disabled,.onboarding-unknown-btn.is-pending:disabled{opacity:1;cursor:wait}.onboarding-cefr-badge{flex-shrink:0;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:26px;padding:0 .4rem;border:1px solid var(--accent-40);border-radius:.35rem;text-align:center;font-family:var(--font-sans);font-size:.72rem;font-weight:600;letter-spacing:.03em;line-height:1;color:var(--accent);background:transparent}.onboarding-tier-hint{flex:1;min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-family:var(--font-serif);font-size:.92rem;line-height:1.3;color:var(--text-primary);text-align:left}.onboarding-difficulty{display:flex;flex-shrink:0;align-items:flex-end;gap:3px}.onboarding-difficulty-bar{display:block;width:3px;height:12px;border-radius:1px;background:var(--border-strong)}.onboarding-difficulty-bar.is-filled{background:var(--accent)}.onboarding-level-status{flex-shrink:0;margin:.5rem 0 0}.onboarding-unknown-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:100%;height:52px;margin:.75rem 0 0;padding:0 1rem;border:1px solid var(--border-strong);border-radius:14px;background:transparent;color:var(--text-primary);font-family:var(--font-sans);font-size:.92rem;line-height:1.3;text-align:center;cursor:pointer}@media (max-height: 700px){.onboarding-tier-list{justify-content:flex-start;overflow-y:auto;-webkit-overflow-scrolling:touch;margin-top:.25rem}.onboarding-tier-card{flex:0 0 auto;max-height:none}}.theme-custom{margin:0}.theme-custom-field{min-width:0}.theme-custom-row{display:flex;gap:.4rem;align-items:center;padding:.3rem .3rem .3rem .9rem;border:1px solid var(--border-strong);border-radius:.85rem;background:var(--surface-raised)}.theme-custom-row:focus-within{border-color:var(--accent-55)}.theme-custom-input-wrap{position:relative;flex:1;min-width:0}.theme-custom-input-wrap>input[type=text]{width:100%;box-sizing:border-box;border:none;border-radius:0;padding:.6rem 0;background:transparent;color:var(--text);caret-color:var(--accent);font-family:var(--font-sans);font-size:1rem;outline:none}.theme-custom-input-wrap>input[type=text]::placeholder{color:var(--hint);opacity:1}.theme-custom>.theme-custom-field .theme-custom-row>button.own-theme-submit{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;height:44px;padding:0;border:0;border-radius:.6rem;background:var(--button);color:var(--button-text)}.theme-custom-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .75rem;margin-top:.4rem;min-height:1.1rem}.theme-char-count{font-size:.78rem;color:var(--hint);font-variant-numeric:tabular-nums}.theme-char-count.is-warn{color:var(--warn);font-weight:600}.theme-char-count.is-limit{color:var(--danger);font-weight:600}.theme-field-hint{margin:0;font-size:.78rem;color:var(--danger)}.theme-suggestions{position:absolute;left:0;right:0;bottom:calc(100% + .25rem);z-index:40;margin:0;padding:.25rem 0;list-style:none;max-height:min(12rem,40vh);overflow-y:auto;border-radius:.75rem;border:1px solid var(--border-strong);background:var(--secondary);box-shadow:0 .35rem 1rem var(--shadow)}.theme-suggestions li{margin:0}.theme-suggestion{display:block;width:100%;border:0;border-radius:0;padding:.65rem .9rem;background:transparent;color:var(--text);text-align:left;font:inherit;cursor:pointer}.theme-suggestion:hover,.theme-suggestion:focus-visible{background:var(--accent-08);outline:none}.theme-suggestion:disabled{opacity:.6;cursor:not-allowed}.story-body{margin:1rem 0 1.25rem;font-family:var(--font-serif);font-size:1.15rem;line-height:1.72;color:var(--text-muted);white-space:pre-wrap}.story-scroll-end-sentinel{display:block;width:100%;height:1px;margin:0;padding:0;pointer-events:none}.word-tap{display:inline;border:0;padding:0;margin:0;background:transparent;color:inherit;border-bottom:none;border-radius:0}.word-tap.level-1{border-bottom:1px solid var(--tap-level-1)}.word-tap.level-2{color:var(--accent);border-bottom:1px solid var(--tap-level-2)}.word-tap.is-active{background:var(--tap-active);border-radius:2px;padding:0 2px}.word-tap--untracked{color:inherit;border-bottom:none;background:transparent;border-radius:0;padding:0}.word-tap--untracked.is-active,.word-tap--untracked.level-1,.word-tap--untracked.level-2{color:inherit;border-bottom:none;background:transparent}.story-reader .screen-header{position:relative;padding-bottom:.75rem}.story-reader .screen-header:after{content:"";display:block;width:44px;height:1px;background:var(--accent-50);margin-top:.75rem}.story-reader .primary-btn{background:transparent;color:var(--accent);border-radius:0;padding:.75rem 0;font-weight:500;text-align:center;border-bottom:1px solid var(--accent-35);width:auto;display:block;margin:.5rem auto 0}.tap-hint-sticky{position:sticky;top:0;z-index:6;height:0;margin:0;pointer-events:none}.tap-hint-banner{pointer-events:auto;margin:0 0 .75rem;padding:.85rem .95rem .75rem;border-radius:.85rem;background:color-mix(in srgb,var(--secondary) 92%,var(--bg));border:1px solid var(--border-strong);box-shadow:0 10px 28px var(--shadow-mid);color:var(--text)}.tap-hint-banner-title{margin:0;font-size:.95rem;line-height:1.4;font-weight:500;color:var(--text)}.tap-hint-banner-sub{margin:.35rem 0 0;font-size:.82rem;line-height:1.4;color:var(--hint)}.tap-hint-demo{margin:.7rem 0 .55rem}.tap-hint-demo-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:4.5rem;padding:.35rem .5rem .5rem}.tap-hint-demo-chip{position:relative;z-index:1;display:inline-block;padding:.15rem .35rem;font-family:var(--font-serif);font-size:1.05rem;color:var(--text);border-bottom:1px dotted color-mix(in srgb,var(--accent) 55%,transparent)}.tap-hint-demo-finger{position:absolute;z-index:3;width:.85rem;height:.85rem;border-radius:50% 50% 50% 10%;background:color-mix(in srgb,var(--button) 80%,var(--text));border:1px solid color-mix(in srgb,var(--button-text) 25%,transparent);transform:translate(1.6rem,1.1rem) rotate(35deg);opacity:0;animation:tap-hint-finger 2.8s ease-in-out infinite;pointer-events:none}.tap-hint-demo-popup{position:absolute;z-index:2;left:50%;bottom:.15rem;width:min(100%,12.5rem);padding:.45rem .55rem;border-radius:.55rem;background:var(--secondary);border:1px solid var(--border);box-shadow:0 8px 20px var(--shadow);transform:translate(-50%) translateY(.25rem) scale(.96);opacity:0;animation:tap-hint-popup 2.8s ease-in-out infinite;pointer-events:none}.tap-hint-demo-popup-lemma{display:block;font-family:var(--font-serif);font-size:.85rem;font-weight:600;color:var(--text)}.tap-hint-demo-popup-def{display:block;margin-top:.15rem;font-size:.72rem;line-height:1.35;color:var(--hint)}.tap-hint-banner-dismiss{display:block;width:100%;margin-top:.15rem;padding:.45rem .6rem;border:0;border-radius:.55rem;background:color-mix(in srgb,var(--button) 88%,transparent);color:var(--button-text);font:inherit;font-weight:600;font-size:.88rem;cursor:pointer}@keyframes tap-hint-finger{0%,12%{opacity:0;transform:translate(1.9rem,1.5rem) rotate(35deg)}28%{opacity:1;transform:translate(.55rem,.55rem) rotate(35deg)}36%{opacity:1;transform:translate(.4rem,.4rem) rotate(35deg) scale(.92)}48%,to{opacity:0;transform:translate(.4rem,.4rem) rotate(35deg) scale(.92)}}@keyframes tap-hint-popup{0%,34%{opacity:0;transform:translate(-50%) translateY(.35rem) scale(.94)}42%,78%{opacity:1;transform:translate(-50%) translateY(0) scale(1)}88%,to{opacity:0;transform:translate(-50%) translateY(.2rem) scale(.96)}}@media (prefers-reduced-motion: reduce){.tap-hint-demo-finger{animation:none;opacity:.85;transform:translate(.55rem,.55rem) rotate(35deg)}.tap-hint-demo-popup{animation:none;opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center;padding:0 1rem calc(var(--bottom-nav-total) + 1rem)}.popup{width:100%;max-width:28rem;padding:1.2rem 1.3rem;border-radius:1.1rem;background:var(--secondary);color:var(--text);border:1px solid var(--border);box-shadow:0 18px 50px var(--shadow-strong)}.popup-header{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.35rem}.popup-lemma-row{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-right:-.55rem}.popup strong,.popup-lemma{display:block;flex:1;min-width:0;margin-bottom:0;font-family:var(--font-serif);font-weight:600;font-size:1.45rem;color:var(--text)}.popup-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:none;border-radius:.5rem;background:transparent;color:var(--hint);font-size:1.5rem;line-height:1;cursor:pointer}.popup-pronounce{display:flex;align-items:center;gap:.6rem;min-height:1.75rem}.popup-ipa{font-family:var(--font-serif);font-style:italic;font-size:.88rem;color:var(--hint);letter-spacing:.01em;line-height:1.3}.popup-speak{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--accent-40);border-radius:999px;background:transparent;color:var(--accent);flex-shrink:0}.popup-speak:active,.popup-speak.is-playing{background:var(--accent-18);border-color:var(--accent-60);transform:scale(.94)}.popup-speak-icon{display:block}.popup-pending{margin:.35rem 0 .75rem;color:var(--hint)}.popup-kind{display:inline-block;font-family:var(--font-sans);font-size:.68rem;font-weight:500;color:var(--hint);text-transform:uppercase;letter-spacing:.16em;margin:.6rem 0 .3rem}.popup p{margin:0 0 .75rem;font-family:var(--font-serif);font-size:1.05rem;line-height:1.5;color:var(--text-soft-2)}.popup-translation{display:flex;align-items:baseline;gap:.75rem;padding-top:.6rem;margin-top:.2rem;border-top:1px solid var(--border)}.popup-translation .popup-kind{margin:0;flex-shrink:0}.popup-translation-value{margin:0;flex:1 1 auto;min-width:0;font-family:var(--font-serif);font-weight:500;font-size:1.2rem;color:var(--accent)}.popup-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;flex:1}.popup-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.85rem;min-height:2.5rem}.popup button.popup-report{flex:none;box-sizing:content-box;margin:-.875rem -.875rem -.875rem 0;padding:.875rem;border:none;border-radius:0;background:none;box-shadow:none;color:var(--hint);font:inherit;font-weight:400;line-height:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;white-space:nowrap}.popup button.popup-report:hover,.popup button.popup-report:active{background:none;box-shadow:none;color:var(--danger)}.popup button.popup-report:disabled{opacity:1;cursor:default;color:var(--hint);background:none}.popup button.popup-report.is-reported,.popup button.popup-report.is-reported:hover,.popup button.popup-report.is-reported:active,.popup button.popup-report.is-reported:disabled{color:var(--success);pointer-events:none}.popup-report-icon{display:block;flex-shrink:0}.toast-host{position:fixed;left:50%;bottom:calc(var(--bottom-nav-total, 4.5rem) + 1rem);transform:translate(-50%);z-index:80;width:min(22rem,calc(100vw - 2rem));pointer-events:none}.toast{padding:.75rem 1rem;border-radius:.85rem;background:var(--secondary);color:var(--text);border:1px solid var(--border);box-shadow:0 12px 32px var(--shadow-strong);font-size:.92rem;line-height:1.35;text-align:center}.toast-error{border-color:color-mix(in srgb,#c0392b 45%,var(--border))}.popup button{border:0;border-radius:.6rem;padding:.5rem .9rem;background:color-mix(in srgb,var(--button) 92%,transparent);color:var(--button-text);font-weight:600}.popup button:disabled{opacity:.6;cursor:not-allowed}.popup button.is-tap-hint{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 55%,transparent),0 0 0 5px color-mix(in srgb,var(--accent) 18%,transparent);animation:tap-hint-translate-pulse 1.8s ease-in-out infinite}@keyframes tap-hint-translate-pulse{0%,to{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 50%,transparent),0 0 0 5px color-mix(in srgb,var(--accent) 12%,transparent)}50%{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 75%,transparent),0 0 0 7px color-mix(in srgb,var(--accent) 22%,transparent)}}@media (prefers-reduced-motion: reduce){.popup button.is-tap-hint{animation:none}}.popup button.popup-close{width:44px;height:44px;padding:0;background:transparent;color:var(--hint);border-radius:.5rem;font-weight:400}.popup button.popup-speak{padding:0;background:transparent;color:var(--accent)}.popup button.popup-speak:active,.popup button.popup-speak.is-playing{background:var(--accent-18)}.vocab-lemma{font-family:var(--font-serif);font-weight:600;color:var(--text)}.vocab-word-grid{margin:.35rem 0 .5rem}.vocab-show-more{display:block;width:100%;margin:0 0 .75rem;padding:.6rem .75rem;border:1px solid var(--border);border-radius:.6rem;background:transparent;color:var(--text);font:inherit;font-size:.88rem;cursor:pointer}.vocab-flip-pending,.vocab-flip-error{font-size:.85rem}.vocab-flip-error{color:var(--danger)}.vocab-review-entry{margin:.5rem 0 1rem;display:flex;flex-direction:column;gap:.5rem;align-items:stretch}.vocab-review-btn{width:100%;text-align:center}.vocab-review-hint{margin:0;font-size:.85rem;color:var(--hint)}.vocab-review-hint.is-muted{font-size:.78rem;color:var(--hint)}.vocab-review-restart{align-self:center;margin:0;padding:.15rem .35rem;border:none;background:transparent;color:var(--danger);font:inherit;font-size:.8rem;border-bottom:1px solid var(--danger-35);cursor:pointer}.vocab-review-restart:disabled{opacity:.5;cursor:default}.vocab-review-restart:not(:disabled):active{opacity:.7}.vocab-review-picker-link{align-self:flex-start;margin:.15rem 0 0;padding:.2rem 0;border:none;background:none;color:var(--accent);font:inherit;font-size:.9rem;cursor:pointer}.vocab-review-picker-link:disabled{opacity:.45;cursor:default}.vocab-empty-card{margin:1rem 0;padding:1.25rem 1rem;border-radius:.75rem;background:var(--secondary);display:flex;flex-direction:column;gap:1rem;align-items:stretch}.vocab-empty-copy{margin:0;font-size:.95rem;line-height:1.45;color:var(--text-muted);text-align:center}.vocab-section-label{margin:0 0 .45rem;font-size:.72rem;color:var(--hint);text-transform:uppercase;letter-spacing:.08em}.vocab-total-headline{margin:0 0 .75rem;font-size:1.15rem;font-weight:600;color:var(--text);text-transform:none;letter-spacing:0}.vocab-mode-options{display:flex;flex-direction:column;gap:.65rem}.vocab-mode-option-wrap{display:flex;flex-direction:column;gap:.25rem}.vocab-mode-option{width:100%;padding:.85rem 1rem;border:1px solid var(--border-strong);border-radius:.85rem;background:var(--surface-raised);color:var(--text);text-align:left;font:inherit;cursor:pointer}.vocab-mode-option:disabled{opacity:.45;cursor:default}.vocab-mode-option-title,.vocab-mode-option-hint{display:block}.vocab-mode-option-title{font-weight:600}.vocab-mode-option-hint,.vocab-mode-note{color:var(--hint);font-size:.82rem}.vocab-mode-note{margin:0 .25rem}.vocab-picker-back{display:inline-block;margin:0 0 .35rem;padding:0;border:none;background:transparent;color:var(--hint);font:inherit;font-size:.9rem;cursor:pointer}.vocab-picker-instruction,.vocab-picker-empty,.vocab-picker-long-hint,.vocab-picker-level-note,.vocab-picker-pending-note{margin:0 0 .75rem;font-size:.88rem;color:var(--hint);line-height:1.4}.vocab-picker .profile-accordion{margin-bottom:.5rem}.vocab-picker-card{perspective:none}.vocab-picker-card-face{min-height:2.75rem;border-left:3px solid transparent;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.vocab-picker-card.is-selected .vocab-picker-card-face{border-left-color:var(--accent);background:var(--accent-10);box-shadow:0 0 0 1.5px var(--accent-50)}.vocab-picker-footer{position:sticky;bottom:4.25rem;margin-top:1rem;padding:.65rem 0 .25rem;display:flex;flex-direction:column;gap:.35rem;background:linear-gradient(to top,var(--bg) 70%,transparent)}.quiz-session-empty{display:flex;flex-direction:column;gap:1rem;padding:.5rem 0 1rem}.vocab-dashboard{margin:.75rem 0 1.25rem;display:flex;flex-direction:column;gap:1.1rem}.home-level{margin:0 0 .5rem}.resume-banner{margin:0 0 .75rem;padding:.7rem .85rem;border-radius:.75rem;background:var(--secondary);border:1px solid var(--border)}.resume-banner p{margin:0;font-size:.9rem;line-height:1.4;color:var(--text-faint)}.resume-banner .retry-btn{margin-top:.6rem}.continue-card{position:relative;display:flex;align-items:stretch;margin:0 0 .5rem;border-radius:.85rem;background:var(--secondary);border:1px solid var(--border);overflow:hidden}.continue-card-body{flex:1;min-width:0;margin:0;padding:.9rem 2.75rem .9rem .95rem;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:.25rem}.continue-card-body:disabled{opacity:.65;cursor:not-allowed}.continue-card-eyebrow{color:var(--hint);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.continue-card-title{font-family:var(--font-serif);font-weight:600;font-size:1.1rem;line-height:1.3;color:var(--text)}.continue-card-meta{color:var(--hint);font-size:.86rem;line-height:1.35}.continue-card-discard{position:absolute;top:.15rem;right:.15rem;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;margin:0;padding:0;border:0;border-radius:.5rem;background:transparent;color:var(--hint);font:inherit;font-size:1.35rem;line-height:1;cursor:pointer}.continue-card-discard:disabled{opacity:.5;cursor:not-allowed}.continue-card-discard:not(:disabled):active{background:var(--ink-06)}.picker-header{margin:1.1rem 0 .85rem}.picker-header-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.15rem .75rem}.picker-title{margin:0;font-family:var(--font-serif);font-weight:700;font-size:1.4rem;line-height:1.25;letter-spacing:-.01em;color:var(--text)}.picker-meta{color:var(--hint);font-size:.86rem;white-space:nowrap;font-variant-numeric:tabular-nums}.picker-note{margin:.2rem 0 0;color:var(--hint);font-size:.8rem;line-height:1.4}.home-section-label{margin:0;padding-bottom:.55rem;border-bottom:1px solid var(--border);font-family:var(--font-sans);font-size:.72rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--hint)}.pitch-slate{display:flex;flex-direction:column;margin:0 0 1.25rem;min-width:0}.pitch-slate.is-busy .pitch-card:disabled,.theme-picker.is-busy .theme-custom button:disabled,.theme-picker.is-busy .theme-custom input:disabled{cursor:default}.pitch-card{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}.pitch-card:disabled{opacity:.55;cursor:not-allowed}.genre-chip{flex:0 0 auto;display:inline-block;max-width:45%;padding:.18rem .6rem;border-radius:999px;background:var(--accent-16);color:var(--accent);font-family:var(--font-sans);font-size:.76rem;font-weight:600;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.genre-chip--on-accent{max-width:none;background:color-mix(in srgb,var(--accent-contrast) 20%,transparent);color:var(--accent-contrast)}.pitch-featured{display:flex;flex-direction:column;align-items:flex-start;gap:.55rem;width:100%;margin:0 0 1.25rem;padding:1.15rem 1.2rem 1.2rem;border:0;border-radius:1.25rem;background:var(--accent);color:var(--accent-contrast);text-align:left;box-shadow:0 .6rem 1.4rem var(--shadow);min-width:0;overflow-wrap:break-word}.pitch-featured:active:not(:disabled){filter:brightness(.97)}.pitch-featured-head{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .6rem}.pitch-featured-eyebrow{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;opacity:.85}.pitch-featured-title{font-family:var(--font-serif);font-weight:700;font-size:1.6rem;line-height:1.2;letter-spacing:-.01em;max-width:100%}.pitch-featured-hook{font-size:.95rem;line-height:1.45;opacity:.92}.pitch-featured-cta{margin-top:.35rem;padding:.55rem 1.1rem;border-radius:.6rem;background:var(--accent-contrast);color:var(--accent);font-size:.92rem;font-weight:600;line-height:1.2}.pitch-list{margin:0;padding:0;list-style:none}.pitch-row-wrap{margin:0;border-bottom:1px solid var(--border);min-width:0}.pitch-row{display:flex;flex-direction:column;gap:.2rem;width:100%;min-height:44px;padding:.75rem 0;border:0;background:transparent;color:var(--text);text-align:left;min-width:0}.pitch-row-head{display:flex;align-items:center;gap:.6rem;width:100%;min-width:0}.pitch-row-title{flex:1 1 auto;min-width:0;font-family:var(--font-serif);font-weight:600;font-size:1.15rem;line-height:1.3;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pitch-row-hook{display:block;width:100%;font-size:.9rem;line-height:1.4;color:var(--hint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.own-theme-card{margin:0 0 1rem;padding:1.05rem 1rem 1.1rem;border-radius:1.1rem;background:var(--secondary);border:1px solid var(--border);min-width:0}.own-theme-title{margin:0;font-family:var(--font-serif);font-weight:700;font-size:1.3rem;line-height:1.25;color:var(--text)}.own-theme-explainer{margin:.3rem 0 .85rem;font-size:.92rem;line-height:1.45;color:var(--hint)}.own-theme-chips{margin-top:.35rem}.own-theme-chips-label{margin:0 0 .45rem;font-size:.84rem;color:var(--hint)}.own-theme-chip-row{display:flex;flex-wrap:wrap;gap:.5rem}.own-theme-chip{max-width:100%;min-height:38px;padding:.35rem .85rem;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg);color:var(--text-secondary);font:inherit;font-size:.9rem;font-weight:500;line-height:1.25;text-align:left;overflow-wrap:break-word;cursor:pointer}.own-theme-chip:disabled{opacity:.55;cursor:not-allowed}.limit-card{margin:0 0 .75rem;padding:1.05rem 1rem 1.1rem;border-radius:1.1rem;background:var(--secondary);border:1px solid var(--border);min-width:0}.limit-card-eyebrow{display:block;color:var(--hint);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase}.limit-card-title{margin:.4rem 0 .15rem;font-family:var(--font-serif);font-weight:700;font-size:1.5rem;line-height:1.25;color:var(--text)}.limit-card-countdown{margin:0;color:var(--hint);font-size:.92rem;font-variant-numeric:tabular-nums}.limit-card-pro{margin-top:.95rem;padding-top:.95rem;border-top:1px solid var(--border)}.limit-card-pro-line{margin:0 0 .7rem;font-size:.92rem;line-height:1.45;color:var(--text-secondary)}.limit-card-pro-btn{min-height:44px;padding:.55rem 1.1rem;border-radius:.6rem;border:1.5px solid var(--accent);background:transparent;color:var(--accent);font:inherit;font-size:.92rem;font-weight:600;cursor:pointer}.limit-card-pro-btn:active{background:var(--accent-08)}.home-review-done{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.35rem .75rem;margin:0 0 .75rem;padding:.8rem .95rem;border-radius:.85rem;background:var(--secondary);border:1px solid var(--border)}.home-review-done-line{color:var(--text-secondary);font-size:.92rem}.home-review-done-link{min-height:44px;padding:0 .1rem;border:0;background:transparent;color:var(--accent);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.upcoming-stories{margin:.75rem 0 1rem}.upcoming-list{margin:0;padding:0;list-style:none}.upcoming-row{display:flex;align-items:center;gap:.6rem;min-width:0;padding:.75rem 0;border-bottom:1px solid var(--border)}.upcoming-title{flex:1 1 auto;min-width:0;font-family:var(--font-serif);font-weight:600;font-size:1.1rem;line-height:1.3;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.home-review-card{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem .75rem;margin:0 0 .5rem;padding:.9rem .95rem;border-radius:.85rem;background:var(--secondary);border:1px solid var(--border);min-width:0}.home-review-text{flex:1 1 10rem;min-width:0;display:flex;flex-direction:column;gap:.25rem;overflow-wrap:break-word;word-break:normal}.home-review-eyebrow{color:var(--hint);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.home-review-line{font-family:var(--font-serif);font-weight:600;font-size:1.1rem;line-height:1.3;color:var(--text)}.home-review-meta{color:var(--hint);font-size:.86rem;line-height:1.35}.home-review-btn{flex:0 0 auto;width:auto;max-width:100%;margin:0;padding:.35rem .75rem;border-radius:8px;border:none;background:var(--button);color:var(--button-text);font:inherit;font-size:.82rem;font-weight:600;line-height:1.2;white-space:nowrap;cursor:pointer}.home-review-btn:active{filter:brightness(.96)}.home-review-btn:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 340px){.home-review-text{flex-basis:100%}.home-review-btn{align-self:flex-start}}.home-review-card--prominent{flex-direction:column;align-items:flex-start;gap:.75rem;margin:0 0 .75rem;padding:1.1rem 1rem 1.15rem;border:0;border-radius:1.25rem;background:var(--accent);color:var(--accent-contrast);box-shadow:0 .6rem 1.4rem var(--shadow)}.home-review-card--prominent .home-review-text{flex-basis:auto;width:100%}.home-review-card--prominent .home-review-eyebrow,.home-review-card--prominent .home-review-meta{color:var(--accent-contrast);opacity:.88}.home-review-card--prominent .home-review-line{font-size:1.4rem;font-weight:700;color:var(--accent-contrast)}.home-review-card--prominent .home-review-btn{min-height:44px;padding:.55rem 1.2rem;border-radius:.6rem;background:var(--accent-contrast);color:var(--accent);font-size:.92rem}.write-access-banner{display:flex;align-items:center;flex-wrap:nowrap;gap:.45rem;margin:0 0 .5rem;padding:.4rem .55rem;border-radius:.75rem;background:var(--secondary);border:1px solid var(--border);color:var(--text-muted)}.write-access-banner--card{padding:.55rem .7rem;gap:.55rem}.write-access-bell{flex-shrink:0;color:var(--hint)}.write-access-banner-text{flex:1 1 auto;min-width:0;margin:0;font-size:.82rem;line-height:1.35;color:var(--text-muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.write-access-banner--card .write-access-banner-text{font-size:.88rem;line-height:1.4}.write-access-banner-actions{display:flex;flex-shrink:0;flex-wrap:nowrap;align-items:center;gap:.2rem}.write-access-enable-btn{flex-shrink:0;margin:0;padding:.28rem .65rem;border-radius:8px;border:none;background:var(--button);color:var(--button-text);font-size:.78rem;font-weight:600;line-height:1.2;white-space:nowrap;cursor:pointer}.write-access-banner--card .write-access-enable-btn{padding:.35rem .75rem;font-size:.82rem}.write-access-enable-btn:active{filter:brightness(.96)}.write-access-dismiss-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:8px;background:transparent;color:var(--hint);font-size:.95rem;line-height:1;cursor:pointer}.write-access-dismiss-icon:active{background:var(--ink-06)}.write-access-dismiss-link{flex-shrink:0;margin:0;padding:.35rem .45rem;border:none;background:transparent;color:var(--hint);font-size:.82rem;line-height:1.2;white-space:nowrap;text-decoration:underline;text-underline-offset:.12em;cursor:pointer}.write-access-dismiss-link:active{color:var(--text-muted)}.write-access-banner--stacked{flex-direction:column;align-items:stretch;gap:.35rem;margin:0 0 .75rem}.write-access-banner-head{display:flex;align-items:flex-start;gap:.55rem}.write-access-banner--stacked .write-access-bell{margin-top:.1rem}.write-access-banner--stacked .write-access-banner-text{display:block;overflow:visible;color:var(--text)}.write-access-banner--stacked .write-access-dismiss-icon{width:1.75rem;height:1.75rem;margin:-.2rem -.3rem 0 0}.write-access-banner--stacked .write-access-banner-actions{padding-left:calc(18px + .55rem)}.story-reader .write-access-banner--card{margin:1rem 0 .75rem}.level-progress{display:flex;flex-direction:column;gap:.5rem}.level-progress--interactive{width:100%;align-items:stretch;margin:0;padding:.35rem .15rem;border:none;background:transparent;text-align:left;cursor:pointer;border-radius:.5rem;-webkit-tap-highlight-color:transparent}.level-progress--interactive:active{background:var(--accent-06)}.level-progress-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.level-progress-label{font-size:.8rem;font-weight:500;color:var(--hint);letter-spacing:.01em}.level-progress-meta{display:inline-flex;align-items:baseline;gap:.3rem;flex-shrink:0}.level-progress-pct{font-size:.8rem;color:var(--hint);font-variant-numeric:tabular-nums}.level-progress-chevron{font-size:.9rem;line-height:1;color:var(--accent);opacity:.85}.level-progress-bar{height:2px;border-radius:1px;overflow:hidden;background:var(--border)}.level-progress-bar.is-calibrating .level-progress-fill{width:0}.level-progress-fill{height:100%;background:var(--accent-70);border-radius:1px;min-width:0;transition:width .2s ease}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;bottom:var(--bottom-nav-total);z-index:40;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center}.sheet{display:flex;flex-direction:column;width:100%;max-width:28rem;max-height:min(78vh,32rem,100%);overflow:hidden;background:var(--secondary);border-radius:1.1rem 1.1rem 0 0;padding:.5rem 1.1rem 1.4rem;border:1px solid var(--border);border-bottom:none;box-shadow:0 -18px 50px var(--overlay)}.sheet-handle{flex-shrink:0;width:2.25rem;height:.25rem;margin:.25rem auto .5rem;border-radius:999px;background:var(--border-strong)}.sheet-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.85rem}.sheet-body{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.sheet-title{margin:0;font-family:var(--font-serif);font-size:1.15rem;font-weight:600;color:var(--text)}.sheet-close{border:none;background:transparent;color:var(--hint);font-size:1.5rem;line-height:1;padding:.15rem .35rem;cursor:pointer}.sheet-muted,.sheet-empty{margin:.5rem 0 1rem;font-size:.9rem;color:var(--hint);line-height:1.45}.sheet-error{margin:.5rem 0 1rem;font-size:.9rem;color:var(--danger)}.level-history-chart{width:100%;height:auto;display:block}.level-history-grid{stroke:var(--border);stroke-width:1}.level-history-ylab{fill:var(--hint);font-size:8px}.level-history-xlab{fill:var(--hint);font-size:9px}.level-history-line{stroke:var(--accent);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.level-history-dot,.level-history-dot--changed{fill:var(--accent)}.level-history-ring{fill:none;stroke:var(--accent);stroke-width:1.5;opacity:.45}.vocab-status-bar{display:flex;height:9px;border-radius:999px;overflow:hidden;gap:2px;background:transparent}.vocab-status-seg{min-width:0;height:100%;border-radius:999px}.vocab-status-seg.is-new{box-shadow:inset 0 0 0 1px var(--hairline-strong);background-image:repeating-linear-gradient(-45deg,transparent,transparent 2px,var(--hairline-mid) 2px,var(--hairline-mid) 3px)}.vocab-status-empty{flex:1;background:var(--border)}.vocab-status-legend{list-style:none;padding:0;margin:.7rem 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.35rem}.vocab-status-legend li{margin:0;min-width:0}.vocab-legend-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;width:100%;min-height:44px;margin:0;padding:.45rem .2rem;border:1px solid transparent;border-radius:.5rem;background:transparent;color:var(--text-muted);font:inherit;font-size:.72rem;line-height:1.25;text-transform:none;letter-spacing:0;cursor:pointer}.vocab-legend-btn.is-active{border-color:var(--accent-50);background:var(--accent-10);color:var(--text);box-shadow:inset 0 -2px 0 var(--accent-50)}.vocab-legend-btn.is-active .vocab-legend-label{font-weight:600;color:var(--text)}.vocab-legend-swatch{width:.65rem;height:.65rem;border-radius:2px;flex-shrink:0}.vocab-legend-swatch.is-new{box-shadow:inset 0 0 0 1px var(--hairline-strong);background-image:repeating-linear-gradient(-45deg,transparent,transparent 1px,var(--hairline-mid) 1px,var(--hairline-mid) 2px)}.vocab-legend-label{text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.vocab-legend-count{color:var(--hint);font-variant-numeric:tabular-nums}.vocab-forecast{margin:0;--forecast-count-size: .68rem;--forecast-count-gap: .2rem;--forecast-headroom: calc(var(--forecast-count-size) + var(--forecast-count-gap));--forecast-plot-height: 3.5rem}.vocab-forecast-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;align-items:stretch;overflow:hidden}.vocab-forecast-day{display:grid;grid-template-rows:calc(var(--forecast-headroom) + var(--forecast-plot-height)) auto;align-items:stretch;justify-items:center;height:calc(var(--forecast-headroom) + var(--forecast-plot-height) + .85rem);margin:0;padding:0;border:none;background:transparent;color:var(--hint);font:inherit;cursor:pointer;overflow:hidden;min-width:0}.vocab-forecast-plot{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;width:100%;height:100%;min-height:0;overflow:hidden}.vocab-forecast-count{flex:0 0 auto;margin-bottom:var(--forecast-count-gap);font-size:var(--forecast-count-size);line-height:1;color:var(--hint);font-variant-numeric:tabular-nums}.vocab-forecast-bar{width:70%;max-width:1.1rem;border-radius:3px 3px 1px 1px;background:var(--accent);min-height:3px;flex:0 0 auto}.vocab-forecast-bar.is-zero{background:var(--border);opacity:.75}.vocab-forecast-weekday{align-self:end;font-size:.72rem;line-height:1;color:var(--hint);padding-top:.15rem}.vocab-forecast-day.is-active .vocab-forecast-weekday{color:var(--accent)}.vocab-forecast-detail{margin:.35rem 0 0;min-height:1.1em;font-size:.78rem;color:var(--text-muted)}.vocab-heatmap{--heatmap-cell: .65rem;--heatmap-gap: .18rem;--heatmap-cols: 26;margin:0;min-width:0}.vocab-heatmap-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.45rem}.vocab-heatmap-title{margin:0;flex:1;min-width:0;font-size:.78rem;color:var(--hint);text-transform:none;letter-spacing:0}.vocab-heatmap-year-btn{flex-shrink:0;margin:0;padding:0;border:none;background:none;font:inherit;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);cursor:pointer}.vocab-heatmap-year-btn:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.vocab-heatmap-frame{display:flex;gap:.35rem;align-items:flex-end;min-width:0;width:100%}.vocab-heatmap-weekdays{display:grid;grid-template-rows:repeat(7,var(--heatmap-cell));gap:var(--heatmap-gap);flex-shrink:0;padding-top:1.05rem;width:1.35rem}.vocab-heatmap-weekday{font-size:.6875rem;line-height:var(--heatmap-cell);color:var(--hint)}.vocab-heatmap-body{flex:1;min-width:0;overflow:hidden;display:flex;flex-direction:column;align-items:stretch}.vocab-heatmap-scroll{flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.vocab-heatmap-months{position:relative;margin-bottom:.2rem;height:1rem;max-width:100%}.vocab-heatmap-scroll .vocab-heatmap-months{max-width:none}.vocab-heatmap-month{position:absolute;top:0;font-size:.6875rem;line-height:1rem;color:var(--hint);white-space:nowrap;overflow:visible;text-align:left;pointer-events:none}.vocab-heatmap-month.is-end{text-align:right}.vocab-heatmap-grid{display:grid;grid-template-columns:repeat(var(--heatmap-cols),var(--heatmap-cell));gap:var(--heatmap-gap);width:max-content;max-width:100%}.vocab-heatmap-scroll .vocab-heatmap-grid{max-width:none}.vocab-heatmap-col{display:grid;grid-template-rows:repeat(7,var(--heatmap-cell));gap:var(--heatmap-gap)}.vocab-heatmap-cell{width:var(--heatmap-cell);height:var(--heatmap-cell);border-radius:2px;border:none;padding:0;cursor:pointer}.vocab-heatmap-cell.is-future{visibility:hidden;pointer-events:none}.vocab-heatmap-cell.is-selected,.vocab-heatmap-cell:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.vocab-heatmap-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-top:.45rem}.vocab-heatmap-detail{margin:0;flex:1;min-width:0;font-size:.78rem;line-height:1.35;color:var(--text-muted)}.vocab-heatmap-legend{display:flex;align-items:center;gap:.25rem;flex-shrink:0;font-size:.6875rem;color:var(--hint)}.vocab-heatmap-swatch{width:.65rem;height:.65rem;border-radius:2px;border:1px solid var(--ink-06)}.vocab-heatmap-sheet{max-width:100%}.vocab-heatmap-sheet .sheet-body{overflow-x:hidden}.vocab-list-section{margin:.5rem 0 1rem}.vocab-filter-indicator{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:-.35rem 0 .75rem;padding:.35rem .5rem;border-radius:.45rem;background:var(--accent-10);color:var(--text-muted);font-size:.78rem;line-height:1.3}.vocab-filter-clear{flex-shrink:0;margin:0;padding:.35rem .45rem;min-width:44px;min-height:44px;border:none;border-radius:.35rem;background:transparent;color:var(--hint);font:inherit;font-size:.85rem;line-height:1;cursor:pointer}.vocab-filter-clear:focus-visible{outline:1px solid var(--accent);outline-offset:1px}.vocab-search{position:relative;margin:0 0 .75rem}.vocab-search-input{width:100%;margin:0;padding:.65rem 2.25rem .65rem .85rem;border:1px solid var(--border);border-radius:.65rem;background:var(--secondary);color:var(--text);font:inherit;font-size:.95rem}.vocab-search-input::placeholder{color:var(--hint)}.vocab-search-clear{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;margin:0;padding:0;border:none;border-radius:999px;background:transparent;color:var(--hint);font:inherit;font-size:1.25rem;line-height:1;cursor:pointer}.vocab-list-empty{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:.5rem 0 1rem;color:var(--hint)}.vocab-list-empty p{margin:0}.vocab-clear-filters{margin:0;padding:0;border:none;background:none;color:var(--accent);font:inherit;font-size:.9rem;cursor:pointer}.status-pill{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;align-self:start;color:var(--hint)}.status-new,.status-learning,.status-familiar,.status-mastered{color:var(--text-faint)}.status{color:var(--hint)}.generation-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:0 26px;padding-top:var(--app-shell-inset-top, 0px);padding-bottom:var(--app-shell-inset-bottom, 0px);background:var(--bg);box-sizing:border-box;opacity:1;transition:opacity .2s ease}.generation-overlay.is-fading{opacity:0;pointer-events:none}.generation-overlay-inner{width:100%;max-width:40rem;display:flex;flex-direction:column;align-items:center;text-align:center}.generation-demo{width:100%;height:176px;display:flex;flex-wrap:wrap;align-content:center;justify-content:center;overflow:visible}.generation-demo-word{display:inline-block;font-family:var(--font-serif);font-size:15px;line-height:1.75;margin-right:5px;color:var(--text-primary);transition:transform .9s cubic-bezier(.2,.8,.2,1),opacity .9s ease;will-change:transform,opacity}.generation-demo-word.is-target{color:var(--accent)}.generation-overlay-divider{width:36px;height:2px;margin:26px 0 22px;border-radius:1px;background:var(--accent-soft)}.generation-overlay-title{margin:0;font-family:var(--font-sans);font-size:17px;font-weight:500;color:var(--text-primary)}.generation-overlay-theme{margin:0 0 12px;font-family:var(--font-sans);font-size:14px;color:var(--accent)}.generation-overlay-theme--empty{min-height:1.2em}.generation-overlay-status{margin:0;min-height:38px;font-family:var(--font-sans);font-size:13px;line-height:1.4;color:var(--hint);text-align:center;opacity:1;transition:opacity .3s ease}.generation-overlay-status.is-fading{opacity:0}.generation-overlay-error{display:flex;flex-direction:column;align-items:center;gap:.75rem;width:100%}.generation-overlay-error .generation-overlay-status{color:var(--danger)}.generation-overlay-actions{display:flex;flex-direction:column;align-items:center;gap:.5rem}.generation-overlay-back{margin:0;padding:.55rem 1rem;border:0;border-radius:.65rem;background:transparent;color:var(--hint);font-family:var(--font-sans);font-size:.95rem;cursor:pointer}.generation-overlay-back:active{color:var(--text-primary)}@media (prefers-reduced-motion: reduce){.generation-demo-word,.generation-overlay,.generation-overlay-status{transition:none}}.error{color:var(--danger)}.banner{margin:0 0 .75rem;padding:.7rem .85rem;border-radius:.75rem;background:var(--danger-08);border:1px solid var(--danger-25)}.banner p{margin:0}.retry-btn{margin-top:.6rem;border:0;border-radius:.65rem;padding:.5rem .9rem;background:color-mix(in srgb,var(--button) 92%,transparent);color:var(--button-text);cursor:pointer;font:inherit;font-weight:600}.retry-btn:disabled{opacity:.6;cursor:not-allowed}.primary-btn{width:100%;text-align:center}.finish-summary{display:flex;flex-direction:column;gap:0;padding-bottom:0}.finish-summary-body{display:flex;flex-direction:column;gap:1.25rem;padding-bottom:var(--finish-summary-cta-total)}.finish-summary-cta{position:fixed;left:0;right:0;bottom:var(--bottom-nav-total);z-index:30;box-sizing:border-box;max-width:40rem;margin:0 auto;padding:.75rem 1.1rem;background:linear-gradient(to top,var(--bg) 72%,color-mix(in srgb,var(--bg) 88%,transparent) 88%,transparent)}.finish-summary-cta .primary-btn{width:100%;text-align:center}.finish-summary-cta--stacked{display:flex;flex-direction:column;gap:.4rem}.finish-summary-body--stacked{padding-bottom:calc(var(--finish-summary-cta-total) + 3rem)}.finish-summary-secondary-btn{width:100%;min-height:44px;border:0;border-radius:.85rem;padding:.65rem 1rem;background:transparent;color:var(--hint);font:inherit;font-weight:600;text-align:center;cursor:pointer}.finish-summary-secondary-btn:active{color:var(--text)}.finish-summary-secondary-btn.is-review{color:var(--accent)}.finish-summary-secondary-btn:disabled{opacity:.6;cursor:default}.finish-summary-card{display:flex;flex-direction:column;gap:.7rem;padding:.95rem 1rem;border-radius:.9rem;background:var(--secondary);border:1px solid var(--border)}.finish-summary-legend{display:flex;flex-wrap:wrap;grid-template-columns:unset;gap:.45rem .85rem}.finish-summary-legend li{display:inline-flex;align-items:center;gap:.35rem;flex:0 0 auto;white-space:nowrap}.finish-summary-legend .vocab-legend-label{text-align:start;overflow:visible;text-overflow:unset;max-width:none;color:var(--text-muted);font-size:.78rem;line-height:1.3}.finish-summary-legend .vocab-legend-count{white-space:nowrap;font-size:.78rem;line-height:1.3}.finish-summary-heading{margin:0;font-family:var(--font-sans);font-size:.72rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--hint)}.finish-summary-word-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.55rem}.finish-summary-word-card{display:block;width:100%;margin:0;padding:0;border:none;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;min-width:0;perspective:800px;-webkit-tap-highlight-color:transparent}.finish-summary-flip-inner{position:relative;display:block;width:100%;min-height:2.75rem;transition:transform .45s ease;transform-style:preserve-3d}.finish-summary-flip.has-long-press{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.finish-summary-flip.is-flipped .finish-summary-flip-inner{transform:rotateY(180deg)}.flip-card-surface{background:var(--secondary);border-radius:.65rem;border:1px solid var(--border);box-shadow:none}.finish-summary-flip-face{display:flex;flex-direction:column;justify-content:center;gap:.15rem;box-sizing:border-box;width:100%;min-height:2.75rem;padding:.6rem .7rem;border-left:3px solid var(--card-accent, transparent);backface-visibility:hidden;-webkit-backface-visibility:hidden}.finish-summary-flip-face-front{position:relative}.finish-summary-flip-face-back{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotateY(180deg);background:var(--accent-05)}.finish-summary-flip-uk{color:var(--accent);font-family:var(--font-serif);font-size:.95rem;word-break:break-word}@keyframes finish-summary-card-bounce{0%,to{transform:translateY(0)}28%{transform:translateY(-7px)}48%{transform:translateY(0)}68%{transform:translateY(-3px)}}.finish-summary-flip.is-hint-bounce{animation:finish-summary-card-bounce .55s ease}.flip-card-nudge-slot,.flip-card-nudge{display:block;width:100%}.flip-card-nudge{perspective:800px;transform-style:preserve-3d;animation:flip-card-nudge-tilt .9s ease-in-out}@keyframes flip-card-nudge-tilt{0%{transform:rotateY(0);filter:drop-shadow(0 0 0 transparent)}28%{transform:rotateY(-11deg);filter:drop-shadow(0 6px 10px var(--accent-25))}55%{transform:rotateY(7deg);filter:drop-shadow(0 4px 8px var(--accent-18))}78%{transform:rotateY(-3deg);filter:drop-shadow(0 2px 4px var(--accent-10))}to{transform:rotateY(0);filter:drop-shadow(0 0 0 transparent)}}@keyframes flip-card-nudge-pulse{0%,to{box-shadow:0 0 0 0 transparent}50%{box-shadow:0 0 0 2px var(--accent-25)}}@media (prefers-reduced-motion: reduce){.flip-card-nudge{animation:flip-card-nudge-pulse .9s ease-in-out;perspective:none;transform-style:flat}.finish-summary-flip.is-hint-bounce{animation:none}.finish-summary-flip-inner{transition:none;transform:none!important}.finish-summary-flip-face{transition:opacity .15s ease;backface-visibility:visible;-webkit-backface-visibility:visible}.finish-summary-flip-face-back{transform:none}.finish-summary-flip-face-front{opacity:1}.finish-summary-flip.is-flipped .finish-summary-flip-face-front,.finish-summary-flip-face-back{opacity:0}.finish-summary-flip.is-flipped .finish-summary-flip-face-back{opacity:1}}.finish-summary-delta{margin:0;font-size:.9rem;color:var(--hint)}.finish-summary-delta-value{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.finish-summary-celebrate{margin:0;font-family:var(--font-serif);font-size:1.1rem;font-weight:600;color:var(--accent);letter-spacing:-.01em}.review-summary{display:flex;flex-direction:column;min-height:calc(100vh - var(--bottom-nav-total) - 2rem)}.review-summary-body{display:flex;flex-direction:column;gap:12px;padding-bottom:calc(var(--finish-summary-cta-total) + 3.25rem)}.review-summary-header,.review-summary-header h1{margin-bottom:.15rem}.review-summary-header p{margin:0}.review-summary-card{display:flex;flex-direction:column;gap:.55rem;padding:14px;border-radius:.9rem;background:var(--secondary);border:1px solid var(--border)}.review-summary-heading{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--hint)}.stat-tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem}.stat-tile{display:flex;flex-direction:column;align-items:center;gap:.15rem;text-align:center;min-width:0}.stat-tile-value{font-size:1.45rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--text)}.stat-tile-value.is-zero{color:var(--hint)}.stat-tile-label{font-size:.72rem;line-height:1.2;color:var(--hint)}.review-summary-cta{position:fixed;left:0;right:0;bottom:var(--bottom-nav-total);z-index:30;box-sizing:border-box;max-width:40rem;margin:0 auto;padding:.75rem 1.1rem;display:flex;flex-direction:column;gap:.4rem;background:linear-gradient(to top,var(--bg) 72%,color-mix(in srgb,var(--bg) 88%,transparent) 88%,transparent)}.review-summary-cta .primary-btn{width:100%;text-align:center}.review-summary-secondary-btn{width:100%;border:0;border-radius:.85rem;padding:.65rem 1rem;background:transparent;color:var(--hint);font:inherit;font-weight:600;text-align:center;cursor:pointer}.review-summary-secondary-btn:active{color:var(--text)}.review-summary-due-hint{margin:0;font-size:.82rem;text-align:center;color:var(--hint)}.review-summary-muted{margin:0;font-size:.9rem;color:var(--hint)}.review-summary-status-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.review-summary-status-row{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem}.review-summary-status-arrow{font-size:.85rem;font-weight:600;color:var(--text);white-space:nowrap}.review-summary-lemma-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem}.review-summary-lemma-chips li{padding:.15rem .45rem;border-radius:.4rem;background:var(--bg);border:1px solid var(--border);font-size:.78rem;color:var(--text)}.finish-summary-confidence.is-tier-change{background:var(--accent-10);border-color:var(--accent-30)}.quiz-session{display:flex;flex-direction:column;gap:.75rem;min-height:calc(100vh - var(--bottom-nav-total) - 2rem);padding-bottom:.25rem}.quiz-session-header{display:flex;flex-direction:column;align-items:stretch;gap:.6rem;flex-shrink:0}.quiz-session-title-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.quiz-session-header h1{margin:0}.quiz-session-help{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;margin:0;padding:0;border:none;border-radius:.75rem;background:transparent;color:var(--hint);cursor:pointer;-webkit-tap-highlight-color:transparent}.quiz-session-help:hover,.quiz-session-help:focus-visible{color:var(--text)}.quiz-session-progress{box-sizing:border-box;width:100%;max-width:22rem;align-self:center;display:flex;flex-direction:column;gap:.4rem}.quiz-session-progress-label{margin:0;text-align:right;font-size:.82rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--hint);line-height:1.2}.quiz-session-progress-track{height:2px;border-radius:1px;overflow:hidden;background:var(--border)}.quiz-session-progress-fill{height:100%;width:0;min-width:0;border-radius:1px;background:var(--accent-70);transition:width .2s ease}.quiz-session-body{flex:1;display:flex;flex-direction:column;justify-content:center;gap:.9rem;align-items:center;min-height:0;width:100%}.quiz-session-stage{display:flex;flex-direction:column;align-items:center;gap:.9rem;width:100%;max-width:22rem}.quiz-session-stage>div{width:100%;min-width:0}.quiz-session-speak{flex-shrink:0}.quiz-session-flip{display:block;width:100%;max-width:none;text-align:center}.quiz-session-flip .finish-summary-flip-inner{min-height:9.5rem}.quiz-session-flip .finish-summary-flip-face{min-height:9.5rem;padding:1.15rem 1rem;align-items:center;justify-content:center;text-align:center;border-left:none;background:var(--surface-raised);border-radius:1.25rem}.quiz-session-flip.is-flipped .finish-summary-flip-face-back{background:var(--secondary);border:1px solid var(--accent-25);border-radius:1.25rem}.quiz-session-flip .vocab-lemma{font-size:1.5rem;font-weight:600;letter-spacing:-.01em;word-break:break-word}.quiz-session-flip .finish-summary-flip-uk{font-size:1.3rem;font-weight:600;color:var(--text)}.quiz-session-actions{box-sizing:border-box;width:100%;max-width:22rem;min-height:4.75rem;display:flex;align-items:flex-start;justify-content:center}.quiz-session-hint{margin:0;width:100%;text-align:center;font-size:.88rem;color:var(--hint);padding:.55rem .4rem 0}.quiz-session-ratings{width:100%;display:grid;grid-template-columns:1fr 1fr 1fr;gap:.5rem}.quiz-rating-btn{margin:0;padding:.85rem .4rem;border-radius:.85rem;background:transparent;color:var(--text);font:inherit;font-weight:500;font-size:.9rem;cursor:pointer;-webkit-tap-highlight-color:transparent}.quiz-rating-btn:disabled{opacity:.55;cursor:not-allowed}.quiz-rating-again{border:1px dashed var(--text-ghost-2);color:var(--hint)}.quiz-rating-hard{border:1px solid var(--border-strong);color:var(--text-soft)}.quiz-rating-good{border:1px solid var(--accent-55);background:var(--accent-07);color:var(--accent)}.quiz-hint-backdrop{z-index:45}.quiz-hint-sheet{max-height:min(40vh,18rem,100%);padding-bottom:max(.85rem,env(safe-area-inset-bottom,0px))}.quiz-hint-handle{touch-action:none;cursor:grab;padding:.35rem 2rem;margin-top:0;box-sizing:content-box}.quiz-hint-header{margin-bottom:.4rem}.quiz-hint-body{overflow:hidden;display:flex;flex-direction:column;gap:.5rem}.quiz-hint-lead,.quiz-hint-note{margin:0;font-size:.88rem;line-height:1.35;color:var(--text-soft)}.quiz-hint-bidirectional{font-size:.78rem;color:var(--hint)}.quiz-hint-ratings{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.35rem .4rem;pointer-events:none;-webkit-user-select:none;user-select:none}.quiz-hint-rating-cell{display:flex;flex-direction:column;align-items:stretch;gap:.25rem;min-width:0}.quiz-hint-chip{display:block;width:100%;box-sizing:border-box;text-align:center;pointer-events:none;padding:.4rem .2rem;font-size:.72rem;line-height:1.2;border-radius:.65rem;cursor:default}.quiz-hint-caption{text-align:center;font-size:.68rem;line-height:1.2;color:var(--hint)}.quiz-hint-primary{width:100%;margin-top:.1rem}@media (prefers-reduced-motion: reduce){.quiz-hint-sheet{transition:none}}.quiz-session-error{display:flex;flex-direction:column;gap:.75rem;flex:1;justify-content:center}.quiz-session-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.35rem 1.5rem;flex-shrink:0;margin-top:auto;padding-top:.35rem}.quiz-session-back,.quiz-session-skip{padding:.55rem .2rem;border:none;border-bottom:1px solid var(--border-strong);background:transparent;color:var(--hint);font:inherit;font-size:.82rem;text-decoration:none;cursor:pointer}.quiz-session-back:disabled,.quiz-session-skip:disabled{opacity:.4;cursor:not-allowed}.match-round-label{margin:0;text-align:center;color:var(--hint);font-size:.88rem}.match-board{flex:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:center;gap:.65rem;width:100%;max-width:28rem;margin:0 auto}.match-column{display:flex;flex-direction:column;gap:.55rem}.match-option{min-height:3.25rem;padding:.65rem .45rem;border:1px solid var(--border-strong);border-radius:.75rem;background:var(--surface-raised);color:var(--text);font:inherit;overflow-wrap:anywhere;transition:border-color .12s ease,background-color .12s ease,opacity .12s ease}.match-option.is-selected{border-color:var(--accent);background:var(--accent-10)}.match-option.is-correct{border-color:var(--success);background:color-mix(in srgb,var(--success) 18%,transparent)}.match-option.is-wrong{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 18%,transparent)}.match-option.is-matched,.match-option:disabled{opacity:.35}.spell-stage{flex:1;width:100%;max-width:28rem;margin:0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem}.spell-translation{margin:0;color:var(--text);font-family:var(--font-serif);font-size:1.25rem;font-weight:600;text-align:center}.spell-slots{display:flex;flex-wrap:wrap;justify-content:center;gap:.3rem}.spell-slot{width:1.55rem;height:2rem;border-bottom:2px solid var(--border-strong);color:var(--text);text-align:center;font-size:1.25rem;font-weight:600;text-transform:lowercase}.spell-slot.is-filled{border-color:var(--success)}.spell-tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.spell-tile{min-width:2.65rem;min-height:2.75rem;padding:.45rem;border:1px solid var(--border-strong);border-radius:.65rem;background:var(--surface-raised);color:var(--text);font:inherit;font-size:1.05rem;font-weight:600;text-transform:lowercase}.spell-tile.is-wrong{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 18%,transparent)}.spell-give-up{border:none;border-bottom:1px solid var(--border-strong);background:transparent;color:var(--hint);font:inherit;padding:.35rem .15rem}.spell-next{width:min(100%,16rem)}
