:root{color-scheme:light;--bg: #FBF7F0;--bg-2: #F3ECE0;--surface: #FFFFFF;--surface-2: #F8F2E9;--surface-sunk: #F0E8DB;--ink: #25211D;--ink-muted: #625A52;--ink-faint: #766D64;--ink-decor: #ABA298;--ink-invert: #FFF8F5;--accent: #B1352B;--accent-hover: #90291F;--accent-soft: rgba(177, 53, 43, .1);--on-accent: #FFF8F5;--accent-2: #3F7A4A;--accent-2-text: #2F6339;--accent-2-soft: rgba(63, 122, 74, .13);--again: var(--accent);--hard: var(--ink-muted);--good: var(--accent-2-text);--easy: var(--accent-2);--again-soft: var(--accent-soft);--hard-soft: var(--surface-sunk);--good-soft: var(--accent-2-soft);--easy-soft: var(--accent-2-soft);--success: var(--accent-2-text);--warn: #8A5A12;--danger: var(--accent);--border: rgba(52, 40, 28, .13);--border-strong: rgba(52, 40, 28, .26);--focus: #B1352B;--focus-halo: rgba(177, 53, 43, .22);--ring-track: #EBE3D7;--scrim: rgba(30, 22, 16, .42);--heat-0: #EFE7DA;--heat-1: #CFE0C9;--heat-2: #8DBD95;--heat-3: #3F7A4A;--shadow-1: 0 1px 2px rgba(60, 45, 30, .06);--shadow-2: 0 10px 26px rgba(60, 45, 30, .1), 0 2px 6px rgba(60, 45, 30, .06);--shadow-3: 0 24px 60px rgba(60, 45, 30, .22), 0 6px 16px rgba(60, 45, 30, .1);--shadow-card: var(--shadow-2);--glow-accent: 0 0 0 0 transparent;--scene-sky: #DCEBF4;--scene-sky-low: #EEF4F3;--scene-star: #FFFFFF;--scene-star-opacity: 0;--scene-wall: #F5E9D7;--scene-wall-shade: #E8D9C3;--scene-shutter: #4F7A8C;--scene-shutter-dark: #3E6272;--scene-rail: #4C525C;--scene-rail-light: #6B7280;--scene-ledge-dark: #C4AB8C;--scene-pot: #C97A4E;--scene-pot-dark: #A85F38;--scene-stem: #4F9A5B;--scene-leaf: #57A466;--scene-leaf-dark: #3F7A4A;--scene-bud: #8FC27B;--scene-bloom: #D8463A;--scene-bloom-dark: #B1352B;--scene-lavender: #8F7CC8;--scene-lavender-dark: #6F5FA8;--scene-bougain: #E46AA0;--scene-bougain-dark: #C74B88;--scene-bulb: #F6C34A;--scene-bulb-off: #C9C2B8;--scene-bulb-glow: rgba(246, 195, 74, .45);--scene-wire: #6B6F78;--scene-floor: #E7D7C1;--scene-can: #7C8894;--scene-bird: #3A3F48;--mark-bg: #B1352B;--mark-cream: #FFF8F5;--mark-leaf: #3F7A4A;--burst-a: #D8463A;--burst-b: #57A466;--burst-c: #F6C34A;--theme-color: #FBF7F0;--font-ui: "Nunito Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Bricolage Grotesque", "Segoe UI", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--fs-1: 13px;--fs-2: 15px;--fs-3: 17px;--fs-4: 20px;--fs-5: 26px;--fs-6: 34px;--fs-7: 44px;--lh-display: 1.08;--lh-body: 1.45;--r-sm: 8px;--r-md: 14px;--r-lg: 20px;--r-xl: 26px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-7: 48px;--dur-1: .12s;--dur-2: .2s;--dur-3: .32s;--dur-4: .52s;--ease-out: cubic-bezier(.22, .7, .3, 1);--ease-in-out: cubic-bezier(.6, 0, .3, 1);--ease-spring: cubic-bezier(.34, 1.42, .52, 1);--z-burst: 2;--z-content: 1;--z-sticky: 10;--z-nav: 30;--z-scrim: 40;--z-sheet: 50;--z-toast: 60;--z-modal: 70;--nav-h: 64px;--rail-w: 92px;--page-max: 880px;--wide-max: 1160px;--vvh: 100dvh}html[data-theme=dark]{color-scheme:dark;--bg: #151A2B;--bg-2: #1B2136;--surface: #212841;--surface-2: #2A3250;--surface-sunk: #1A2037;--ink: #F1EFE9;--ink-muted: #C2C1CB;--ink-faint: #9E9DAC;--ink-decor: #5C6078;--ink-invert: #2B1411;--accent: #F18777;--accent-hover: #F79D8F;--accent-soft: rgba(241, 135, 119, .16);--on-accent: #2B1411;--accent-2: #93D39E;--accent-2-text: #93D39E;--accent-2-soft: rgba(147, 211, 158, .16);--warn: #E9B04E;--border: rgba(215, 222, 255, .1);--border-strong: rgba(215, 222, 255, .22);--focus: #F18777;--focus-halo: rgba(241, 135, 119, .28);--ring-track: #343C5A;--scrim: rgba(0, 0, 0, .55);--heat-0: #2A3149;--heat-1: #3E5A4A;--heat-2: #5F9A6E;--heat-3: #93D39E;--shadow-1: 0 1px 2px rgba(0, 0, 0, .3);--shadow-2: 0 12px 30px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .28);--shadow-3: 0 26px 64px rgba(0, 0, 0, .55), 0 8px 20px rgba(0, 0, 0, .35);--glow-accent: 0 0 24px rgba(241, 135, 119, .25);--scene-sky: #101833;--scene-sky-low: #1A2446;--scene-star: #FFFFFF;--scene-star-opacity: .9;--scene-wall: #2B2F4A;--scene-wall-shade: #23273E;--scene-shutter: #5A6C8A;--scene-shutter-dark: #48587A;--scene-rail: #9AA2B8;--scene-rail-light: #B8BFD2;--scene-ledge-dark: #746250;--scene-pot: #AE6440;--scene-pot-dark: #8C4E30;--scene-stem: #4E9060;--scene-leaf: #56A06A;--scene-leaf-dark: #3E7A4E;--scene-bud: #86B87A;--scene-bloom: #EA5C4E;--scene-bloom-dark: #C74538;--scene-lavender: #A797E0;--scene-lavender-dark: #8676C4;--scene-bougain: #EE7FB2;--scene-bougain-dark: #D25A93;--scene-bulb: #FFD15A;--scene-bulb-off: #5C6078;--scene-bulb-glow: rgba(255, 209, 90, .55);--scene-wire: #8A90A8;--scene-floor: #3A3E5C;--scene-can: #9AA2B8;--scene-bird: #E8E6F0;--burst-a: #EA5C4E;--burst-b: #56A06A;--burst-c: #FFD15A;--theme-color: #151A2B}*,*:before,*:after{box-sizing:border-box;margin:0}html{height:100%;-webkit-text-size-adjust:100%;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}body{min-height:100%;background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:var(--fs-2);line-height:var(--lh-body);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}#root{min-height:100%;isolation:isolate}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:var(--lh-display);letter-spacing:-.02em;overflow-wrap:anywhere}h1{font-size:var(--fs-6);letter-spacing:-.025em}h2{font-size:var(--fs-4);letter-spacing:-.015em}h3{font-size:var(--fs-3);letter-spacing:-.01em}h4{font-size:var(--fs-2);letter-spacing:0}p{margin:0}ul,ol{padding:0;list-style:none}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}img,svg,video{display:block;max-width:100%}svg{flex-shrink:0}:focus{outline:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}::selection{background:var(--accent);color:var(--on-accent)}*{scrollbar-width:thin}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-pill)}::-webkit-scrollbar-track{background:transparent}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;touch-action:manipulation;text-align:inherit}button:disabled{cursor:default}input,textarea,select{font:inherit;color:inherit;background:none;border:0;border-radius:0;outline:none}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:var(--ink-faint)}.display{font-family:var(--font-display);line-height:var(--lh-display);font-weight:700;letter-spacing:-.02em}.serif{font-family:var(--font-display)}.muted{color:var(--ink-muted)}.faint{color:var(--ink-faint)}.small{font-size:var(--fs-1)}.strong{font-weight:700}.tabular{font-variant-numeric:tabular-nums}.label-caps{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.text-center{text-align:center}.nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--sp-2)}.row{display:flex;align-items:center;gap:var(--sp-3)}.row-sm{display:flex;align-items:center;gap:var(--sp-2)}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1 1 auto;min-width:0}.center{display:flex;align-items:center;justify-content:center}.animate-in{animation:rise-in var(--dur-3) var(--ease-out) both}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.shell{display:grid;min-height:100vh;min-height:100dvh;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"content" "nav"}.shell-content{grid-area:content;width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--sp-4);padding-top:calc(var(--sp-4) + env(safe-area-inset-top));padding-bottom:calc(var(--sp-7) + env(safe-area-inset-bottom));min-width:0}.shell-content.is-wide{max-width:var(--wide-max)}.nav{grid-area:nav;position:sticky;bottom:0;z-index:var(--z-nav);display:flex;flex-direction:column;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border)}.nav-brand,.nav-foot{display:none}.nav-items{display:flex;align-items:stretch;height:var(--nav-h)}.nav-item{position:relative;flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;color:var(--ink-faint);font-size:11px;font-weight:700;letter-spacing:.01em;transition:color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.nav-item:before{content:"";position:absolute;top:0;left:50%;width:18px;height:3px;border-radius:0 0 3px 3px;background:var(--accent);transform:translate(-50%) scaleX(0);transition:transform var(--dur-2) var(--ease-out)}.nav-item>svg{width:24px;height:24px}.nav-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item.is-active{color:var(--accent)}.nav-item.is-active:before{transform:translate(-50%) scaleX(1)}.nav-item:active{transform:translateY(1px)}.nav-practise{justify-content:flex-end;padding-bottom:7px}.nav-practise:before{display:none}.nav-practise:active{transform:none}.nav-practise .nav-label{color:var(--accent)}.nav-practise-disc{position:absolute;top:-22px;left:50%;display:flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-2),var(--glow-accent);transform:translate(-50%);transition:transform var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.nav-practise-disc svg{width:28px;height:28px}.nav-practise:active .nav-practise-disc{transform:translate(-50%) scale(.95)}.nav-practise:hover .nav-practise-disc,.nav-practise.is-open .nav-practise-disc{background:var(--accent-hover)}@media(min-width:641px){.shell{grid-template-columns:var(--rail-w) minmax(0,1fr);grid-template-rows:minmax(0,1fr);grid-template-areas:"rail content"}.shell-content{padding:var(--sp-6);padding-top:calc(var(--sp-6) + env(safe-area-inset-top))}.nav{grid-area:rail;top:0;bottom:auto;height:100vh;height:100dvh;padding-bottom:0;border-top:0;border-right:1px solid var(--border)}.nav-brand{display:flex;align-items:center;justify-content:center;padding:var(--sp-5) 0 var(--sp-3)}.nav-items{flex-direction:column;height:auto;gap:var(--sp-1);padding:var(--sp-2)}.nav-item{flex:none;min-height:60px;gap:4px;border-radius:var(--r-md)}.nav-item:before{top:50%;left:calc(-1 * var(--sp-2));width:3px;height:22px;border-radius:0 3px 3px 0;transform:translateY(-50%) scaleY(0)}.nav-item:hover{background:var(--surface-2);color:var(--ink)}.nav-item.is-active{background:var(--accent-soft);color:var(--accent)}.nav-item.is-active:before{transform:translateY(-50%) scaleY(1)}.nav-item:active{transform:none}.nav-practise{justify-content:center;padding-bottom:0;min-height:76px}.nav-practise:hover{background:transparent}.nav-practise-disc{position:static;width:48px;height:48px;border-radius:var(--r-md);transform:none;box-shadow:var(--shadow-1),var(--glow-accent)}.nav-practise-disc svg{width:24px;height:24px}.nav-practise:active .nav-practise-disc{transform:scale(.95)}.nav-foot{display:flex;flex-direction:column;gap:var(--sp-1);margin-top:auto;padding:var(--sp-2) var(--sp-2) calc(var(--sp-3) + env(safe-area-inset-bottom))}.nav-foot .nav-item{min-height:56px}.nav-item-avatar.is-active{background:transparent}}.focus-shell{position:relative;display:flex;flex-direction:column;height:var(--vvh);max-height:100dvh;overflow:hidden;background:var(--bg)}.focus-head{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--sp-2);min-height:var(--nav-h);padding:env(safe-area-inset-top) var(--sp-2) 0}.focus-close{justify-self:start;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-pill);color:var(--ink-muted);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.focus-close:hover{background:var(--surface-sunk);color:var(--ink)}.focus-close svg{width:22px;height:22px}.focus-title-wrap{text-align:center;min-width:0}.focus-title{font-weight:700;font-size:var(--fs-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.focus-subtitle{font-size:var(--fs-1);color:var(--ink-muted);white-space:nowrap}.focus-right{justify-self:end;display:flex;align-items:center;gap:var(--sp-1);min-width:44px;justify-content:flex-end}.focus-body{position:relative;z-index:var(--z-content);flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;padding:var(--sp-4);padding-bottom:calc(var(--sp-4) + env(safe-area-inset-bottom))}.focus-body>*{margin:auto;width:100%;max-width:560px}@media(min-width:641px){.focus-head{padding-left:var(--sp-4);padding-right:var(--sp-4)}.focus-body{padding:var(--sp-5)}}.boot-screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-5);text-align:center}.boot-hint{font-family:var(--font-mono);font-size:var(--fs-1);color:var(--ink-muted);background:var(--surface-sunk);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm)}.burst-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:var(--z-burst);pointer-events:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:46px;padding:0 var(--sp-5);border-radius:var(--r-pill);font-weight:700;font-size:var(--fs-2);line-height:1.2;white-space:nowrap;color:var(--ink);background:var(--surface-sunk);border:1px solid transparent;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out),opacity var(--dur-1) var(--ease-out);user-select:none;-webkit-user-select:none}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:default}.btn svg{width:20px;height:20px}.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-1)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-2)}.btn-ghost{background:transparent;color:var(--ink-muted)}.btn-ghost:hover:not(:disabled){background:var(--surface-sunk);color:var(--ink)}.btn-leaf{background:var(--accent-2);color:var(--on-accent)}.btn-leaf:hover:not(:disabled){filter:brightness(1.06)}.btn-danger{background:var(--danger);color:var(--on-accent)}.btn-danger:hover:not(:disabled){background:var(--accent-hover)}.btn-soft-danger{background:transparent;color:var(--danger)}.btn-soft-danger:hover:not(:disabled){background:var(--accent-soft)}.btn-lg{min-height:56px;font-size:var(--fs-3);padding:0 var(--sp-6)}.btn-sm{min-height:36px;font-size:var(--fs-1);padding:0 var(--sp-4)}.btn-block{width:100%}.btn-icon{padding:0;width:46px;min-width:46px}.btn-icon.btn-lg{width:56px;min-width:56px}.btn-icon.btn-sm{width:36px;min-width:36px}.card{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2);padding:var(--sp-5)}html[data-theme=dark] .card{box-shadow:var(--shadow-2),inset 0 0 0 1px var(--border)}.card-flat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-4)}.divider{height:1px;background:var(--border);border:0}.chip{display:inline-flex;align-items:center;gap:4px;min-height:26px;padding:3px 11px;border-radius:var(--r-pill);background:var(--surface-sunk);color:var(--ink-muted);border:1px solid transparent;font-size:var(--fs-1);font-weight:700;line-height:1.2;white-space:nowrap}.chip-leaf{background:var(--accent-2-soft);color:var(--accent-2-text)}.chip-accent{background:var(--accent-soft);color:var(--accent)}.chip-outline{background:transparent;color:var(--ink-muted);border-color:var(--border-strong)}.chip-warn{background:var(--surface-sunk);color:var(--warn)}button.chip{cursor:pointer;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}button.chip:hover{border-color:var(--border-strong)}button.chip.is-active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.input{display:block;width:100%;min-height:50px;padding:0 var(--sp-4);border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);color:var(--ink);font-size:var(--fs-3);transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}textarea.input{padding:var(--sp-3) var(--sp-4);min-height:50px;line-height:var(--lh-body)}select.input{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto;padding-right:var(--sp-3)}.input:focus{border-color:var(--focus);box-shadow:0 0 0 4px var(--focus-halo);background:var(--surface);outline:none}.input.is-error{border-color:var(--danger)}.input:disabled{opacity:.6}.input-lg{min-height:60px;font-size:var(--fs-4);text-align:center}.input.serif{font-family:var(--font-display);font-weight:600}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.field-label{font-size:var(--fs-1);font-weight:700;color:var(--ink-muted)}.field-hint{font-size:var(--fs-1);color:var(--ink-faint)}.switch{position:relative;width:50px;height:30px;border-radius:var(--r-pill);background:var(--ring-track);transition:background var(--dur-2) var(--ease-out);flex:none}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--shadow-1);transition:transform var(--dur-2) var(--ease-out)}.switch.is-on{background:var(--accent-2)}.switch.is-on:after{transform:translate(20px)}.stepper{display:inline-flex;align-items:center;gap:var(--sp-2)}.stepper .stepper-value{min-width:2.5ch;text-align:center;font-weight:700;font-size:var(--fs-3);font-variant-numeric:tabular-nums}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-sheet);background:var(--scrim);display:flex;align-items:flex-end;justify-content:center;animation:fade-in var(--dur-2) var(--ease-out) both}.sheet{width:100%;max-height:calc(100dvh - var(--sp-6));overflow-y:auto;background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-3);padding:var(--sp-3) var(--sp-4) calc(var(--sp-5) + env(safe-area-inset-bottom));animation:sheet-up var(--dur-3) var(--ease-out) both}html[data-theme=dark] .sheet{box-shadow:var(--shadow-3),inset 0 0 0 1px var(--border)}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-4)}.sheet-title{font-family:var(--font-display);font-size:var(--fs-4);font-weight:700;letter-spacing:-.015em}.sheet-close{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-pill);color:var(--ink-muted);flex:none;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.sheet-close:hover{background:var(--surface-sunk);color:var(--ink)}.sheet-close svg{width:20px;height:20px}.sheet-grip{width:40px;height:4px;border-radius:var(--r-pill);background:var(--ink-decor);opacity:.6;margin:0 auto var(--sp-3)}@media(min-width:641px){.sheet-backdrop{align-items:center;padding:var(--sp-5)}.sheet{max-width:480px;max-height:calc(100dvh - var(--sp-7));border-radius:var(--r-xl);padding:var(--sp-5);animation:sheet-pop var(--dur-3) var(--ease-out) both}.sheet-grip{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-up{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes sheet-pop{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.toast{position:fixed;z-index:var(--z-toast);left:var(--sp-4);right:var(--sp-4);bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + var(--sp-4));display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-lg);background:var(--surface);color:var(--ink);border:1px solid var(--border);box-shadow:var(--shadow-3);font-weight:600;opacity:0;transform:translateY(6px);transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out);pointer-events:none}.toast.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}.toast:before{content:"";width:8px;height:8px;border-radius:var(--r-pill);background:var(--accent-2);flex:none}.toast-error:before{background:var(--danger)}@media(min-width:641px){.toast{left:auto;right:var(--sp-5);top:var(--sp-5);bottom:auto;max-width:360px;transform:translateY(-6px)}}.ring{position:relative;display:inline-block;flex:none}.ring svg{display:block}.ring-track{stroke:var(--ring-track)}.ring-value{stroke:var(--accent-2);transition:stroke-dashoffset var(--dur-4) var(--ease-out)}.ring.is-complete .ring-value{stroke:var(--accent-2)}.ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12%;pointer-events:none}.ring-label-main{font-family:var(--font-display);font-size:var(--fs-5);line-height:1;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.ring-label-sub{font-size:var(--fs-1);font-weight:600;color:var(--ink-muted);margin-top:4px}.kbd{display:none;align-items:center;justify-content:center;min-width:1.5em;height:1.5em;padding:0 .4em;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:6px;background:var(--surface);color:var(--ink-muted);font-family:var(--font-ui);font-size:11px;font-weight:700;line-height:1;vertical-align:middle}@media(min-width:641px){.kbd{display:inline-flex}}.btn .kbd{opacity:.8}.btn-primary .kbd,.btn-leaf .kbd,.btn-danger .kbd,.grade-easy .kbd{background:transparent;color:inherit;border-color:currentColor;opacity:.7}.stat-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-3)}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);min-width:0}.stat-tile-value{font-family:var(--font-display);font-size:var(--fs-5);line-height:1.1;font-weight:800;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat-tile-label{font-size:var(--fs-1);font-weight:600;color:var(--ink-muted);margin-top:2px}.stat-tile.is-accent .stat-tile-value{color:var(--accent)}.stat-tile.is-leaf .stat-tile-value{color:var(--accent-2-text)}.stat-tile.is-ink .stat-tile-value{color:var(--ink)}.heat-grid{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;width:100%}.heat-cell{width:100%;aspect-ratio:1;border-radius:3px;background:var(--heat-0)}.heat-cell[data-level="1"]{background:var(--heat-1)}.heat-cell[data-level="2"]{background:var(--heat-2)}.heat-cell[data-level="3"]{background:var(--heat-3);opacity:.8}.heat-cell[data-level="4"]{background:var(--heat-3)}.heat-cell.is-goal{box-shadow:inset 0 0 0 1.5px var(--accent-2-text)}.heat-cell.is-today{outline:1.5px solid var(--accent);outline-offset:1px}.grade-bar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-2);width:100%}.grade-btn{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:60px;padding:var(--sp-2) var(--sp-1);border-radius:var(--r-lg);font-weight:700;font-size:var(--fs-2);line-height:1.15;background:var(--surface-sunk);color:var(--ink);transition:transform var(--dur-1) var(--ease-out),filter var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.grade-btn:active{transform:scale(.96)}.grade-btn:hover{filter:brightness(.97)}.grade-btn .grade-interval{font-size:var(--fs-1);font-weight:600;opacity:.85}.grade-again{background:var(--again-soft);color:var(--again)}.grade-hard{background:var(--hard-soft);color:var(--hard)}.grade-good{background:var(--good-soft);color:var(--good)}.grade-easy{background:var(--easy);color:var(--on-accent)}.grade-btn .kbd{position:absolute;top:6px;right:6px}.flip-scene{perspective:1200px}.flip-card{position:relative;transform-style:preserve-3d;transition:transform var(--dur-3) var(--ease-in-out)}.flip-card.is-flipped{transform:rotateY(180deg)}.flip-face{backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip-back{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotateY(180deg)}@media(prefers-reduced-motion:reduce){.flip-card{transition:none}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--sp-2);padding:var(--sp-6) var(--sp-4)}.empty-icon{font-size:var(--fs-6);line-height:1;margin-bottom:var(--sp-2);color:var(--ink-decor)}.empty-icon svg{width:40px;height:40px}.empty-title{font-family:var(--font-display);font-size:var(--fs-4);font-weight:700;letter-spacing:-.015em}.empty-body{color:var(--ink-muted);max-width:34ch}.empty-action{margin-top:var(--sp-3)}.llm-badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-1);font-weight:700;color:var(--ink-muted);padding:3px 11px 3px 9px;border-radius:var(--r-pill);background:var(--surface-sunk)}.llm-badge .dot{width:8px;height:8px;border-radius:var(--r-pill);background:var(--ink-faint);flex:none}.llm-badge.is-live{color:var(--accent-2-text);background:var(--accent-2-soft)}.llm-badge.is-live .dot{background:var(--accent-2)}.llm-badge.is-error{color:var(--warn)}.llm-badge.is-error .dot{background:var(--warn)}.speak-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-pill);color:var(--ink-muted);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.speak-btn svg{width:22px;height:22px}.speak-btn:hover:not(:disabled){background:var(--accent-soft);color:var(--accent)}.speak-btn:active:not(:disabled){transform:scale(.94)}.speak-btn:disabled{opacity:.35}.speak-btn.speak-sm{width:36px;height:36px}.speak-btn.speak-sm svg{width:18px;height:18px}.speak-btn.speak-lg{width:56px;height:56px}.speak-btn.speak-lg svg{width:28px;height:28px}.wordmark{display:inline-flex;align-items:baseline;gap:2px;font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;color:var(--ink);line-height:1;white-space:nowrap}.wordmark-small{font-size:var(--fs-3)}.wordmark-large{font-size:var(--fs-6)}.wordmark-flourish{color:var(--accent);width:.5em;height:.5em;align-self:flex-start;margin-top:-.12em}.pill-row{display:flex;gap:var(--sp-2);overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.pill-row::-webkit-scrollbar{display:none}mark{background:var(--accent-soft);color:var(--accent);border-radius:3px;padding:0 1px}.correction{color:var(--accent-2-text);background:var(--accent-2-soft);border-radius:4px;padding:0 3px}.grade-dots{display:inline-flex;align-items:center;gap:4px}.grade-dots .gd{width:8px;height:8px;border-radius:50%;flex:none}.gd-again{background:var(--accent)}.gd-hard{box-shadow:inset 0 0 0 1.5px var(--border-strong)}.gd-good{background:var(--accent-2);opacity:.55}.gd-easy{background:var(--accent-2)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);font-family:var(--font-display);font-weight:700;font-size:15px;line-height:1;flex:none;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.avatar svg{width:20px;height:20px}.avatar.is-active,.nav-item-avatar.is-active .avatar{background:var(--accent);color:var(--on-accent)}.avatar-btn{display:inline-flex;border-radius:var(--r-pill);flex:none}.avatar-btn:hover .avatar{background:var(--accent);color:var(--on-accent)}.mark{display:block;flex:none}.practise-rows{display:flex;flex-direction:column;gap:var(--sp-2)}.practise-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:68px;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-lg);background:var(--surface-2);border:1px solid transparent;transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.practise-row:hover{border-color:var(--border-strong)}.practise-row:active{transform:scale(.985)}.practise-row-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-md);background:var(--accent-soft);color:var(--accent);flex:none}.practise-row-icon svg{width:22px;height:22px}.practise-row-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto;text-align:left}.practise-row-title{font-weight:700;font-size:var(--fs-3);color:var(--ink)}.practise-row-sub{font-size:var(--fs-1);color:var(--ink-muted)}.practise-row-chevron{width:20px;height:20px;color:var(--ink-decor);flex:none}.level-card{display:flex;flex-direction:column;gap:var(--sp-4)}.level-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.level-head-text{min-width:0}.level-kicker{font-size:var(--fs-1);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint)}.level-name{margin-top:2px;font-family:var(--font-display);font-weight:800;font-size:var(--fs-6);line-height:var(--lh-display);letter-spacing:-.03em;overflow-wrap:anywhere}.level-next{font-size:var(--fs-2);font-weight:600;color:var(--accent-2-text);white-space:nowrap}@media(min-width:641px){.level-name{font-size:var(--fs-7)}}.level-progress{display:flex;flex-direction:column;gap:var(--sp-2)}.level-bar{position:relative;height:10px;border-radius:var(--r-pill);background:var(--ring-track);overflow:hidden}.level-bar-fill{height:100%;border-radius:inherit;background:var(--accent-2);transition:width var(--dur-4) var(--ease-out)}.level-figures{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.level-pct{font-weight:600;color:var(--accent-2-text)}.level-count{font-size:var(--fs-1);color:var(--ink-muted)}.level-bands{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-3)}.level-band{display:flex;flex-direction:column;gap:6px;min-width:0}.level-band-name{display:flex;align-items:center;gap:4px;font-family:var(--font-display);font-weight:700;font-size:var(--fs-2);color:var(--ink-muted)}.level-band.is-next .level-band-name{color:var(--ink);font-weight:600}.level-band.is-passed .level-band-name{color:var(--accent-2-text)}.level-band-tick{font-size:var(--fs-1);color:var(--accent-2-text)}.level-band-track{display:block;height:4px;border-radius:var(--r-pill);background:var(--ring-track);overflow:hidden}.level-band-fill{display:block;height:100%;border-radius:inherit;background:var(--accent-2);opacity:.55}.level-band.is-passed .level-band-fill,.level-band.is-next .level-band-fill{opacity:1}.level-actions{display:flex;flex-direction:column;gap:var(--sp-2)}.level-actions .btn{width:100%}.level-note{font-size:var(--fs-1);color:var(--ink-muted);text-align:center}.level-hint{font-size:var(--fs-1);color:var(--ink-faint);text-align:center}.level-top{display:flex;flex-direction:column;gap:var(--sp-1)}.level-top-title{font-family:var(--font-display);font-size:var(--fs-4);font-weight:700}.level-test-sub{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);margin-top:2px}.level-test-bar{width:90px;height:3px;border-radius:var(--r-pill);background:var(--ring-track);overflow:hidden}.level-test-bar-fill{height:100%;border-radius:inherit;background:var(--accent-2);transition:width var(--dur-3) var(--ease-out)}@media(min-width:641px){.level-test-bar{width:140px}}.level-q{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5) var(--sp-4);background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2)}.level-q-head{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center;animation:level-q-in var(--dur-3) var(--ease-out) both}@keyframes level-q-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.level-q-ask{font-size:var(--fs-1);color:var(--ink-faint)}.level-q-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-6);line-height:var(--lh-display);overflow-wrap:anywhere}.level-options{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-3)}.level-option{display:flex;align-items:center;gap:var(--sp-3);min-height:60px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);color:var(--ink);font-size:var(--fs-3);text-align:left;cursor:pointer;transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.level-option:hover:not(:disabled){background:var(--bg-2);border-color:var(--accent-2)}.level-option:active:not(:disabled){transform:scale(.985)}.level-option:disabled{opacity:.5;cursor:default}.level-option-text{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}@media(min-width:641px){.level-q{padding:var(--sp-6)}.level-options{grid-template-columns:repeat(2,minmax(0,1fr))}}.level-result{display:flex;flex-direction:column;gap:var(--sp-4)}.level-result-card{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center}.level-result-score{font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;font-size:var(--fs-7);line-height:var(--lh-display)}.level-result-card.is-pass .level-result-score{color:var(--accent-2-text)}.level-result-title{font-family:var(--font-display);font-size:var(--fs-5);font-weight:700}.level-result-body{color:var(--ink-muted);max-width:34ch}.level-missed-title{font-size:var(--fs-3);font-weight:600;margin-bottom:var(--sp-3)}.level-missed{display:flex;flex-direction:column}.level-missed>li{display:flex;flex-direction:column;gap:2px;padding:var(--sp-3) 0}.level-missed>li+li{border-top:1px solid var(--border)}.level-missed-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:1.2;overflow-wrap:anywhere}.level-missed-line{display:flex;flex-wrap:wrap;gap:6px;font-size:var(--fs-1);color:var(--ink-muted);overflow-wrap:anywhere}.level-missed-label{color:var(--ink-faint)}.level-missed-given{color:var(--danger)}.level-missed-expected{color:var(--accent-2-text);font-weight:600}.level-result-actions .btn{min-height:52px}.level-loading{padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--ink-muted)}@media(prefers-reduced-motion:reduce){.level-bar-fill,.level-test-bar-fill{transition:none}.level-q-head{animation:none}.level-option:active:not(:disabled){transform:none}}.scene{position:relative;border-radius:var(--r-xl);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-2)}html[data-theme=dark] .scene{box-shadow:var(--shadow-2),inset 0 0 0 1px var(--border)}.scene-svg{display:block;width:100%;height:auto;aspect-ratio:358 / 236}.scene-stage{transition:opacity var(--dur-4) var(--ease-out)}.scene-stage-in{animation:scene-stage-in var(--dur-4) var(--ease-out) both;transform-box:fill-box;transform-origin:50% 100%}@keyframes scene-stage-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}.scene-lights{position:absolute;top:10px;left:20px;right:20px;display:flex;justify-content:center;gap:4px;pointer-events:none}.scene-light{display:flex;flex-direction:column;align-items:center}.scene-light:before{content:"";width:1.5px;height:8px;background:var(--scene-wire)}.scene-bulb{width:6px;height:6px;border-radius:50%;background:var(--scene-bulb);box-shadow:0 0 6px 2px var(--scene-bulb-glow);transition:background var(--dur-4) var(--ease-out),box-shadow var(--dur-4) var(--ease-out)}.scene-lights.is-dim .scene-bulb{background:var(--scene-bulb-off);box-shadow:none}.scene-caption{position:absolute;left:14px;bottom:12px;padding:4px 11px;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--shadow-1);font-family:var(--font-display);font-weight:700;font-size:13px;letter-spacing:-.01em;color:var(--ink-muted)}.auth-screen{position:relative;min-height:100vh;min-height:var(--vvh);display:flex;align-items:center;justify-content:center;padding:var(--sp-5);padding-bottom:max(var(--sp-5),env(safe-area-inset-bottom));padding-top:calc(max(var(--sp-4),env(safe-area-inset-top)) + 44px + var(--sp-3))}.lang-menu{position:absolute;top:max(var(--sp-4),env(safe-area-inset-top));left:max(var(--sp-4),env(safe-area-inset-left));z-index:var(--z-sticky)}.lang-menu-btn{width:44px;height:44px;display:grid;place-items:center;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--shadow-1);transition:background var(--dur-1) var(--ease-out)}.lang-menu-btn:hover{background:var(--surface-2)}.flag{display:block;width:26px;height:26px}.flag-ring{fill:none;stroke:var(--border-strong);stroke-width:1px;vector-effect:non-scaling-stroke}.lang-menu-list{position:absolute;top:calc(100% + var(--sp-2));left:0;min-width:200px;display:flex;flex-direction:column;gap:2px;padding:var(--sp-2);border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-2);animation:lang-menu-in var(--dur-2) var(--ease-out)}@keyframes lang-menu-in{0%{opacity:0;transform:translateY(-4px)}}.lang-menu-item{display:flex;align-items:center;gap:var(--sp-3);min-height:44px;padding:0 var(--sp-3);border-radius:var(--r-md);font-weight:600;color:var(--ink);transition:background var(--dur-1) var(--ease-out)}.lang-menu-item:hover{background:var(--surface-2)}.lang-menu-item.is-active{background:var(--accent-soft);color:var(--accent)}.auth-side{display:none}.auth-main{width:100%;display:flex;align-items:center;justify-content:center}.auth-card{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-6) var(--sp-5)}.auth-head{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);text-align:center}.auth-mark{margin-bottom:var(--sp-1)}.auth-head .wordmark-large{font-size:var(--fs-5)}.auth-title{font-size:var(--fs-5);letter-spacing:-.025em;margin:var(--sp-2) 0 0}.auth-blurb{margin:0;font-size:var(--fs-2);text-wrap:balance}.auth-field{display:flex;flex-direction:column;gap:var(--sp-1)}.auth-label{font-size:var(--fs-1);font-weight:700;color:var(--ink-muted)}.auth-password{display:flex;gap:var(--sp-2);align-items:stretch}.auth-password .input{flex:1;min-width:0}.auth-reveal{flex:none;min-width:50px}.auth-hint{margin:0}.auth-error{margin:0;padding:var(--sp-3);border-radius:var(--r-md);background:var(--accent-soft);color:var(--danger);font-size:var(--fs-2);font-weight:600}.auth-submit{width:100%;min-height:52px;margin-top:var(--sp-1)}.auth-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2) var(--sp-4)}.auth-link{background:none;border:none;padding:var(--sp-1) 0;font-size:var(--fs-2);font-weight:600;color:var(--accent);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.auth-link:hover{color:var(--accent-hover)}.auth-notice{margin:0;padding:var(--sp-3);border-radius:var(--r-md);background:var(--accent-2-soft);color:var(--ink);font-size:var(--fs-2)}@media(min-width:900px){.auth-screen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:0}.auth-side{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--sp-6);padding:var(--sp-7);background:var(--bg-2);border-right:1px solid var(--border)}.auth-side-scene{width:100%;max-width:520px}.auth-side-tagline{max-width:22ch;font-family:var(--font-display);font-weight:800;font-size:var(--fs-6);line-height:var(--lh-display);letter-spacing:-.03em;text-align:center;text-wrap:balance}.auth-main{padding:var(--sp-7)}.auth-screen{padding-top:0}.lang-menu{top:max(var(--sp-5),env(safe-area-inset-top));left:max(var(--sp-5),env(safe-area-inset-left))}}.home{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4)}.home>*{min-width:0}.home-main,.home-side{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}@media(min-width:641px){.home{grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:var(--sp-5);row-gap:var(--sp-5)}.home-head,.home-greet,.home-wide{grid-column:1 / -1}.home-main{grid-column:1}.home-side{grid-column:2}.home-main,.home-side{gap:var(--sp-5)}}.home-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:40px}.home-head-side{display:flex;align-items:center;gap:var(--sp-2)}.home-greet{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-1) 0}.home-greeting{font-size:var(--fs-6);letter-spacing:-.03em;overflow-wrap:anywhere}.home-streak{font-weight:700;color:var(--accent)}.home-streak.is-empty{font-weight:600;color:var(--ink-muted)}@media(min-width:641px){.home-greeting{font-size:40px}.home-greet{gap:var(--sp-2)}}.home-goal{display:flex;flex-direction:column;gap:var(--sp-4)}.home-goal-row{display:flex;align-items:center;gap:var(--sp-4)}.home-goal-text{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}.home-goal-done{color:var(--accent-2-text);font-weight:700;font-size:var(--fs-3)}.home-pending{color:var(--ink-muted);font-weight:600}.home-goal .home-cta{flex-direction:column;gap:2px;min-height:64px;white-space:normal}.home-cta-main{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-4)}.home-cta-sub{font-size:var(--fs-1);font-weight:600;opacity:.85}.home-allclear{text-align:center;font-size:var(--fs-1);font-weight:600;color:var(--ink-muted)}.home-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}.home-actions .home-secondary{min-height:52px;padding:0 var(--sp-3)}@media(min-width:641px){.home-actions{gap:var(--sp-3)}.home-actions .home-secondary{min-height:56px}}.stat-tiles.home-tiles{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr}.home-tiles .stat-tile{display:flex;flex-direction:column;justify-content:center;min-height:84px}.home-row{display:flex;align-items:center;gap:var(--sp-4)}.home-row .btn{flex:none}.home-row-title{font-size:var(--fs-3);letter-spacing:-.01em}.home-row-body{margin-top:2px;font-size:var(--fs-1);color:var(--ink-muted)}.home-sweep{border-color:var(--accent)}.home-section{display:flex;flex-direction:column;gap:var(--sp-3)}.home-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.home-section-title{font-size:var(--fs-4);letter-spacing:-.015em}.hm-wrap{min-width:0}.hm{max-width:100%;overflow-x:auto;overflow-y:hidden;padding-bottom:var(--sp-1);scrollbar-width:thin}.hm-inner{display:grid;grid-template-columns:auto auto;grid-template-rows:auto auto;column-gap:6px;row-gap:4px;width:max-content}.hm-months{grid-column:2;grid-row:1;display:grid;gap:3px;height:14px;font-size:10px;font-weight:600;line-height:14px;color:var(--ink-faint)}.hm-month{min-width:0;overflow:visible;white-space:nowrap}.hm-days{grid-column:1;grid-row:2;display:grid;grid-template-rows:repeat(7,10px);gap:3px;font-size:10px;font-weight:600;line-height:10px;color:var(--ink-faint);text-align:right}.hm-grid{grid-column:2;grid-row:2;display:grid;grid-template-rows:repeat(7,10px);grid-auto-flow:column;grid-auto-columns:10px;gap:3px}.hm-cell{position:relative;display:block;width:10px;height:10px;border-radius:2px;background:var(--heat-0);flex:none}.hm-cell.is-empty{visibility:hidden}.hm-cell[data-level="1"]{background:var(--heat-1)}.hm-cell[data-level="2"]{background:var(--heat-2)}.hm-cell[data-level="3"]{background:var(--heat-3)}.hm-cell.is-goal:after{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border-radius:var(--r-pill);background:var(--accent)}.hm-cell.is-today{outline:1.5px solid var(--ink-muted);outline-offset:1px}.hm-legend{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:var(--sp-2);font-size:var(--fs-1);color:var(--ink-faint)}.hm-legend-goal{display:inline-flex;align-items:center;gap:4px;margin-left:var(--sp-3)}.trouble-list{display:flex;flex-direction:column}.trouble-list>li+li{border-top:1px solid var(--border)}.trouble-row{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:56px;padding:var(--sp-2) var(--sp-1);border-radius:var(--r-sm);transition:background var(--dur-1) var(--ease-out)}.trouble-row:hover{background:var(--surface-2)}.trouble-row:active{background:var(--surface-sunk)}.trouble-word{display:block;font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:1.2;letter-spacing:-.01em}.trouble-article{color:var(--ink-muted);font-weight:500;font-size:var(--fs-3)}.trouble-trans{display:block;color:var(--ink-muted);font-size:var(--fs-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trouble-meta{display:flex;align-items:center;gap:var(--sp-2);flex:none}.trouble-lapses{font-size:var(--fs-1);color:var(--ink-faint);white-space:nowrap}.trouble-sheet{display:flex;flex-direction:column;gap:var(--sp-3)}.trouble-sheet-word{font-family:var(--font-display);font-weight:800;font-size:var(--fs-6);line-height:var(--lh-display);letter-spacing:-.025em;min-width:0;overflow-wrap:anywhere}.trouble-sheet-trans{font-size:var(--fs-3)}.trouble-examples{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3) 0;border-top:1px solid var(--border)}.trouble-example-es{font-family:var(--font-display);font-weight:600;font-size:var(--fs-3)}.trouble-example-en{color:var(--ink-muted);font-size:var(--fs-1)}.trouble-note{color:var(--ink-muted);font-size:var(--fs-2);padding-left:var(--sp-3);border-left:3px solid var(--accent-2-soft)}.trouble-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);margin-top:var(--sp-2)}.trouble-actions .btn{min-height:48px}.lang-chip{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:4px 12px;border:1px solid var(--border-strong);border-radius:var(--r-pill);background:var(--surface);color:var(--ink);cursor:pointer;font-size:var(--fs-1);font-weight:700;transition:border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.lang-chip:hover{border-color:var(--accent);color:var(--accent)}.lang-chip-name{font-family:var(--font-ui)}.lang-chip svg{width:14px;height:14px}.lang-sheet{display:flex;flex-direction:column;gap:var(--sp-2)}.lang-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3);min-height:56px;padding:var(--sp-2) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);color:var(--ink);cursor:pointer;text-align:left;transition:border-color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.lang-row:hover:not(:disabled){border-color:var(--accent)}.lang-row.is-current{border-color:var(--accent-2);background:var(--accent-2-soft)}.lang-row-name{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4)}.typed-progress{width:120px;height:3px;margin:4px auto 0;border-radius:var(--r-pill);background:var(--ring-track);overflow:hidden}.typed-progress-fill{height:100%;border-radius:inherit;background:var(--accent);transition:width var(--dur-3) var(--ease-out)}.typed-progress-fill.is-complete{background:var(--accent-2)}.typed-confirm{display:inline-flex;align-items:center;gap:var(--sp-2)}.typed-confirm-btn{min-height:32px;padding:0 var(--sp-3);border-radius:var(--r-pill);font-weight:600;font-size:var(--fs-1);background:var(--surface-2);color:var(--ink)}.typed-confirm-btn.is-yes{background:var(--accent);color:var(--on-accent)}@media(min-width:641px){.typed-progress{width:160px}}.typed-card{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5) var(--sp-4);background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2);transition:opacity var(--dur-2) var(--ease-out)}.typed-card.is-loading{opacity:.6}.typed-prompt{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);text-align:center;animation:typed-in var(--dur-3) var(--ease-out) both}@keyframes typed-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.typed-prompt-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2)}.typed-en-word{font-family:var(--font-display);font-size:var(--fs-6);line-height:var(--lh-display);font-weight:800;letter-spacing:-.03em;overflow-wrap:anywhere}.typed-hint{font-size:var(--fs-1);color:var(--ink-faint)}.typed-sentence{font-family:var(--font-display);font-weight:700;font-size:var(--fs-5);line-height:1.35;overflow-wrap:anywhere}.typed-slot{display:inline-block;min-width:4.5ch;padding:0 .25ch;border-bottom:2px solid var(--accent);border-radius:2px 2px 0 0;color:var(--accent);text-align:center;line-height:1.1}.typed-slot.is-correct,.typed-slot.is-slip{color:var(--accent-2-text);border-color:var(--accent-2)}.typed-slot.is-wrong{color:var(--ink-muted);border-color:var(--danger)}.typed-en{min-height:40px;padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);color:var(--ink-muted);font-size:var(--fs-2);line-height:var(--lh-body);text-align:center;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.typed-en:hover{background:var(--surface-2)}.typed-en.is-hidden{color:var(--ink-muted);font-size:var(--fs-1);font-weight:600}.answer-input{display:flex;flex-direction:column;gap:var(--sp-3)}.typed-input{min-height:52px;font-size:20px;font-family:var(--font-display);font-weight:700;text-align:center}.typed-input.is-correct{border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-2-soft)}.typed-input.is-slip{border-color:var(--warn);box-shadow:0 0 0 3px var(--accent-soft)}.typed-input.is-wrong{border-color:var(--danger);box-shadow:0 0 0 3px var(--accent-soft)}.typed-check{min-height:52px}.accent-row{display:none}@media(min-width:641px){.accent-row{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2)}}.accent-key{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 var(--sp-2);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink);font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:1;transition:background var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out),opacity var(--dur-1) var(--ease-out)}.accent-key:hover:not(:disabled){background:var(--bg-2)}.accent-key:active:not(:disabled){transform:scale(.94)}.accent-key:disabled{opacity:.4}.result{display:flex;flex-direction:column;gap:var(--sp-3)}.result-correct{flex-direction:row;align-items:center;justify-content:center;gap:var(--sp-2);min-height:52px;color:var(--accent-2-text)}.result-tick{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--r-pill);background:var(--accent-2-soft);animation:tick-in var(--dur-3) var(--ease-out) both}.result-tick svg{width:20px;height:20px}@keyframes tick-in{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.result-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4)}.result-line{font-size:var(--fs-4);line-height:1.3;text-align:center;overflow-wrap:anywhere}.result-lead{color:var(--ink-muted)}.result-word{font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;font-size:var(--fs-5)}.result-translation{text-align:center}.result-example{display:flex;flex-direction:column;gap:2px;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-2)}.result-example .serif{font-size:var(--fs-3)}.result-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-2)}.result-actions .btn,.result-next{min-height:52px}@media(min-width:641px){.result-actions{grid-template-columns:repeat(2,minmax(0,1fr))}}.typed-foot{display:flex;justify-content:center}.typed-loading{padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--ink-muted)}.typed-wait{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-3)}.typed-wait-icon{width:40px;height:40px;color:var(--ink-faint)}.typed-wait-title{font-family:var(--font-display);font-size:var(--fs-5);font-weight:700}.typed-wait-actions{display:flex;gap:var(--sp-3);width:100%;margin-top:var(--sp-2)}.typed-wait-actions .btn{flex:1 1 0}@media(min-width:641px){.typed-card{padding:var(--sp-6)}}@media(prefers-reduced-motion:reduce){.typed-prompt,.result-tick{animation:none}.accent-key:active:not(:disabled){transform:none}}.typed-topic{max-width:130px;min-height:34px;padding:4px 8px;font-size:var(--fs-1)}.map-wrap{position:relative;width:100%;height:100%;min-height:0;flex:1 1 auto;overflow:hidden;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-2)}.focus-body:has(.map-wrap){display:flex;align-items:stretch;padding:var(--sp-3)}.map-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;cursor:grab;touch-action:none}.map-canvas:active{cursor:grabbing}.map-loading{margin:auto}.map-legend{position:absolute;top:var(--sp-3);left:var(--sp-3);display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);padding:6px var(--sp-3);border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface) 82%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-size:var(--fs-1);color:var(--ink-muted);pointer-events:none}.map-legend-item{display:inline-flex;align-items:center;gap:6px}.map-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.map-dot.is-new{background:var(--ink-faint);opacity:.6}.map-dot.is-learning{background:var(--accent)}.map-dot.is-review{background:var(--ink-muted)}.map-dot.is-known{background:var(--accent-2)}.map-hint{position:absolute;bottom:var(--sp-2);left:0;right:0;text-align:center;font-size:var(--fs-1);pointer-events:none}.map-pop{position:absolute;left:var(--sp-3);right:var(--sp-3);bottom:var(--sp-3);max-width:440px;margin:0 auto;padding:var(--sp-3) var(--sp-4);animation:sess-rise var(--dur-2) var(--ease-out) both}.map-pop-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.map-pop-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-5);line-height:var(--lh-display);margin-right:2px}.map-pop-close{margin-left:auto}.map-state.is-known{color:var(--accent-2-text)}.map-state.is-review{color:var(--ink-muted)}.map-state.is-learning,.map-state.is-relearning{color:var(--accent)}.map-pop-trans{margin-top:4px;color:var(--ink-muted)}.map-pop-example{margin-top:6px;font-family:var(--font-display);font-weight:700;font-size:var(--fs-2);color:var(--ink-muted)}@media(max-width:640px){.map-legend{top:auto;bottom:calc(var(--sp-3) + 28px);left:var(--sp-3);right:auto}}.reading-screen{display:flex;flex-direction:column;gap:var(--sp-4);max-width:720px;margin:0 auto;width:100%}.reading-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3)}.reading-head h1{font-size:var(--fs-5)}.reading-count{min-height:1.4em}.reading-new{flex:none}.reading-offline{margin-top:calc(-1 * var(--sp-2))}.reading-list{list-style:none;display:flex;flex-direction:column;gap:var(--sp-2);padding:0;margin:0}.reading-row-wrap{display:flex;align-items:stretch;gap:var(--sp-1)}.reading-row{flex:1;min-width:0;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);text-align:left;cursor:pointer}.reading-row:hover{border-color:var(--accent)}.reading-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--sp-1)}.reading-row-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reading-row-meta{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.reading-row-score{flex:none;font-size:var(--fs-1);color:var(--ink-faint)}.reading-row-score.is-read{color:var(--accent-2-text);font-weight:600}.reading-row-delete{flex:none;width:40px;border-radius:var(--r-md);border:none;background:none;color:var(--ink-faint);cursor:pointer;display:grid;place-items:center}.reading-row-delete:hover{color:var(--accent);background:var(--accent-soft)}.reading-row-delete svg{width:18px;height:18px}.reading-topics{display:flex;flex-direction:column;gap:var(--sp-4)}.reading-topic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2)}.reading-topic{min-height:44px;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-size:var(--fs-2);cursor:pointer}.reading-topic:hover{border-color:var(--accent);color:var(--accent)}.reading-working{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-7) var(--sp-4);text-align:center}.reading-working-icon{color:var(--accent);animation:reading-breathe 1.6s ease-in-out infinite}.reading-working-icon svg{width:44px;height:44px}@keyframes reading-breathe{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}@media(prefers-reduced-motion:reduce){.reading-working-icon{animation:none}}.reader-head{display:flex;align-items:flex-start;gap:var(--sp-3)}.reader-head h1{font-family:var(--font-display);font-weight:700;font-size:var(--fs-5);line-height:1.2}.reader-back{flex:none;width:40px;height:40px;margin-top:2px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--ink-muted);cursor:pointer;display:grid;place-items:center}.reader-back:hover{color:var(--ink)}.reader-back svg{width:20px;height:20px}.reader-play{flex:none}.reader-play.is-on{color:var(--accent)}.reader-readbefore{margin-top:calc(-1 * var(--sp-2))}.reader-body{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:1.75;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5)}.reader-sentence{border-radius:var(--r-sm)}.reader-sentence.is-line{display:block;margin-top:var(--sp-2)}.reader-sentence.is-line:first-child{margin-top:0}.reader-body.is-dialogue .reader-sentence.is-line{margin-top:var(--sp-3)}.reader-sentence.is-speaking{background:var(--surface-sunk);box-shadow:0 0 0 3px var(--surface-sunk)}.reader-body .tok{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;border-radius:4px}.reader-body .tok:hover{background:var(--accent-soft)}.reader-body .tok.is-active{background:var(--accent-soft);color:var(--accent)}.reader-hint{text-align:center}.reader-questions{display:flex;flex-direction:column;gap:var(--sp-4)}.reader-questions h2{font-size:var(--fs-4)}.reader-q{display:flex;flex-direction:column;gap:var(--sp-2)}.reader-q-text{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3)}.reader-q-options{display:flex;flex-direction:column;gap:var(--sp-2)}.reader-opt{min-height:44px;padding:var(--sp-2) var(--sp-3);text-align:left;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-size:var(--fs-2);cursor:pointer}.reader-opt:hover:not(:disabled){border-color:var(--accent)}.reader-opt:disabled{cursor:default}.reader-opt.is-right{border-color:var(--accent-2);background:var(--accent-2-soft);color:var(--ink);font-weight:600}.reader-opt.is-wrong{border-color:var(--accent);background:var(--accent-soft)}.reader-opt.is-muted{opacity:.55}.reader-result{font-size:var(--fs-3)}@media(max-width:640px){.reading-screen{padding-bottom:88px}.reader-body{padding:var(--sp-4);font-size:var(--fs-3)}.reading-topic-grid{grid-template-columns:repeat(2,1fr)}}.reading-count{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}.reading-streak{display:inline-flex;align-items:center;gap:4px;color:var(--accent);font-weight:600}.reading-streak svg{width:14px;height:14px}.reader-playwrap{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-1)}.reader-fromstart{border:none;background:none;padding:0;color:var(--ink-muted);font-size:var(--fs-1);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.reader-fromstart:hover{color:var(--accent)}.sweep{display:flex;flex-direction:column;gap:var(--sp-4);flex:1 0 auto}.sweep-top{display:flex;flex-direction:column;gap:var(--sp-2)}.sweep-progress{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:20px;font-size:var(--fs-1);font-weight:600;color:var(--ink-muted);letter-spacing:.01em}.sweep-dot{color:var(--ink-faint)}.sweep-bar{height:4px;border-radius:var(--r-pill);background:var(--ring-track);overflow:hidden}.sweep-bar-fill{height:100%;border-radius:inherit;background:var(--accent);transition:width var(--dur-3) var(--ease-out)}.sweep-stage{flex:1 1 auto;display:flex;align-items:center;justify-content:center}.sweep-card{position:relative;width:100%;min-height:clamp(220px,calc(var(--vvh) * .36),300px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-6) var(--sp-4);text-align:center;animation:sweep-in var(--dur-2) var(--ease-out) both}.sweep-card-prev{position:absolute;top:var(--sp-3);left:0;right:0;font-size:var(--fs-1);color:var(--ink-faint)}.sweep-card-prev strong{font-weight:600;color:var(--ink-muted)}.sweep-card-word{font-size:40px;color:var(--ink);overflow-wrap:anywhere;-webkit-hyphens:manual;hyphens:manual}.sweep-card-meta{display:flex;align-items:center;justify-content:center;gap:var(--sp-2)}.sweep-card-reveal{display:flex;align-items:center;justify-content:center;min-height:48px;width:100%}.sweep-card-reveal-btn{min-height:48px;padding:0 var(--sp-3);color:var(--ink-muted);font-size:var(--fs-2);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;border-radius:var(--r-sm);transition:background var(--dur-1) var(--ease-out)}.sweep-card-reveal-btn:hover{background:var(--surface-sunk)}.sweep-card-translations{font-size:var(--fs-4);color:var(--ink);line-height:var(--lh-display);animation:sweep-fade var(--dur-2) var(--ease-out) both}@keyframes sweep-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes sweep-fade{0%{opacity:0}to{opacity:1}}.sweep-actions{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}.sweep-answers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);width:100%}.sweep-answer{min-height:64px;font-size:var(--fs-3);border-radius:var(--r-lg)}.sweep-answer:active:not(:disabled){transform:scale(.96)}.sweep-back{color:var(--ink-faint);min-height:40px}.sweep-back svg{width:16px;height:16px}.sweep-back:hover:not(:disabled){color:var(--ink)}.sweep-skip-long{display:none}@media(min-width:641px){.sweep-skip-short{display:none}.sweep-skip-long{display:inline}}.sk{display:block;border-radius:var(--r-pill);background:var(--surface-2);animation:sk-pulse 1.2s ease-in-out infinite}.sk-progress{width:140px;height:12px}.sk-word{width:60%;height:40px;border-radius:var(--r-md)}.sk-chip{width:96px;height:24px}.sk-line{width:40%;height:14px}.sweep-skeleton{gap:var(--sp-4)}@keyframes sk-pulse{0%,to{opacity:1}50%{opacity:.45}}.sweep-summary{justify-content:center}.sweep-summary-card{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);padding:var(--sp-6) var(--sp-4);text-align:center;animation:sweep-in var(--dur-3) var(--ease-out) both}.sweep-summary-kicker{font-size:var(--fs-1);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-2-text)}.sweep-summary-title{font-size:var(--fs-6);font-weight:700;margin-top:calc(-1 * var(--sp-2))}.sweep-summary-stats{display:flex;align-items:flex-start;justify-content:center;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);width:100%;margin-top:var(--sp-2)}.sweep-stat{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:120px;flex:1 1 140px}.sweep-stat-n{font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;font-size:var(--fs-7);line-height:1}.sweep-stat.is-known .sweep-stat-n{color:var(--accent-2-text)}.sweep-stat.is-unknown .sweep-stat-n{color:var(--accent)}.sweep-stat-l{font-size:var(--fs-1);color:var(--ink-muted);max-width:16ch}.sweep-stat-sep{align-self:center;font-family:var(--font-display);font-weight:700;font-size:var(--fs-6);color:var(--ink-faint)}.sweep-summary-body{color:var(--ink-muted);max-width:36ch}.sweep-summary-actions{display:flex;flex-direction:column;gap:var(--sp-2);width:100%;margin-top:var(--sp-2)}.sweep-confirm-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}@media(min-width:641px){.sweep{flex:0 0 auto;gap:var(--sp-5)}.sweep-card-word{font-size:var(--fs-7)}.sweep-card,.sweep-summary-card{padding:var(--sp-7) var(--sp-6)}.sweep-summary-actions{max-width:360px}}.sess-start{display:flex;flex-direction:column;gap:var(--sp-4)}.sess-start-counts{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);letter-spacing:-.015em;text-align:center;color:var(--ink)}.sess-dot{color:var(--ink-faint);margin:0 .4em}.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;padding:4px;background:var(--surface-sunk);border-radius:var(--r-md)}.seg-btn{min-height:44px;border-radius:calc(var(--r-md) - 4px);font-weight:700;font-size:var(--fs-2);color:var(--ink-muted);text-align:center;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}.seg-btn:hover{color:var(--ink)}.seg-btn.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.seg-hint{min-height:1.45em;text-align:center}.sess-progress{width:120px;height:3px;margin:4px auto 0;border-radius:var(--r-pill);background:var(--ring-track);overflow:hidden}.sess-progress-fill{height:100%;border-radius:inherit;background:var(--accent);transition:width var(--dur-3) var(--ease-out)}.sess-confirm{display:inline-flex;align-items:center;gap:var(--sp-2)}.sess-confirm-btn{min-height:32px;padding:0 var(--sp-3);border-radius:var(--r-pill);font-weight:700;font-size:var(--fs-1);background:var(--surface-sunk);color:var(--ink)}.sess-confirm-btn.is-yes{background:var(--accent);color:var(--on-accent)}@media(min-width:641px){.sess-progress{width:160px}}.sess-stage{display:flex;flex-direction:column;gap:var(--sp-4)}.sess-slot{min-height:64px;display:flex;align-items:center}.sess-slot>*{animation:sess-rise var(--dur-2) var(--ease-out) both}.sess-ghost{min-height:340px;border-radius:var(--r-xl);background:var(--surface);border:1px dashed var(--border-strong);opacity:.6}@keyframes sess-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(max-width:359px){.grade-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.sess-slot{min-height:128px}}@media(min-width:641px){.sess-ghost{min-height:400px}}.grade-btn.is-pressed{transform:scale(.96)}.grade-btn:disabled{opacity:.6;cursor:default;transform:none}.grade-label{display:block}.fc{animation:sess-rise var(--dur-2) var(--ease-out) both}.fc-card{display:grid;min-height:340px}.fc-card>.flip-face{grid-area:1 / 1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:var(--sp-3);padding:var(--sp-5) var(--sp-4);background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2)}html[data-theme=dark] .fc-card>.flip-face{box-shadow:var(--shadow-2),inset 0 0 0 1px var(--border)}.fc-card>.flip-back{position:relative;inset:auto}.fc-card:not(.is-flipped)>.flip-back,.fc-card.is-flipped>.flip-front{pointer-events:none}.fc-front{cursor:pointer}.fc-word{font-family:var(--font-display);font-size:var(--fs-7);line-height:var(--lh-display);font-weight:800;letter-spacing:-.03em;overflow-wrap:anywhere;text-wrap:balance;max-width:100%}.fc-word-en{font-size:var(--fs-6)}.fc-article{color:var(--ink-muted);font-weight:500}.fc-hint{margin-top:auto;font-size:var(--fs-1);font-weight:600;color:var(--ink-faint)}.fc-hint-key{display:none}.fc-clue{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);max-width:34ch}.fc-clue-btn{display:inline-flex;align-items:center;gap:var(--sp-2);min-height:36px;padding:6px var(--sp-4);border:1px solid var(--border-strong);border-radius:var(--r-pill);background:transparent;color:var(--ink-muted);font-size:var(--fs-1);font-weight:700;cursor:pointer;transition:background var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}.fc-clue-btn:hover{background:var(--surface-sunk)}.fc-clue-btn.is-on{border-color:transparent;color:var(--ink-faint)}.fc-clue-text{font-family:var(--font-display);font-weight:500;font-size:var(--fs-3);line-height:1.35;color:var(--ink-muted);text-wrap:balance;animation:sess-rise var(--dur-2) var(--ease-out) both}.fc-back{justify-content:flex-start;align-items:stretch;text-align:left}.fc-back-head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.fc-back-word{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:var(--lh-display);letter-spacing:-.015em;color:var(--ink-muted);overflow-wrap:anywhere}.fc-back-word.is-answer{font-size:var(--fs-6);font-weight:800;letter-spacing:-.03em;color:var(--ink)}.fc-trans-primary{font-size:var(--fs-4);font-weight:700;line-height:var(--lh-display);color:var(--ink-muted)}.fc-trans.is-answer .fc-trans-primary{font-family:var(--font-display);font-size:var(--fs-5);letter-spacing:-.02em;color:var(--ink)}.fc-trans-more{margin-top:2px;color:var(--ink-muted)}.fc-example{display:flex;align-items:flex-start;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--border)}.fc-example-es{font-family:var(--font-display);font-weight:500;font-size:var(--fs-3);line-height:1.35}.fc-example-en{margin-top:4px;color:var(--ink-muted);animation:sess-rise var(--dur-2) var(--ease-out) both}.fc-example-actions{display:flex;align-items:center;gap:2px;flex:none}.fc-en-toggle{min-height:44px;min-width:44px;padding:0 var(--sp-2);border-radius:var(--r-pill);font-size:var(--fs-1);font-weight:800;letter-spacing:.06em;color:var(--ink-muted);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.fc-en-toggle:hover{background:var(--surface-sunk)}.fc-en-toggle.is-on{background:var(--ink);color:var(--bg)}.fc-similar{display:flex;align-items:baseline;gap:var(--sp-2);padding-top:var(--sp-3);border-top:1px solid var(--border);font-size:var(--fs-1)}.fc-similar-label{flex:0 0 auto;color:var(--ink-faint);font-weight:700}.fc-similar-words{display:flex;flex-wrap:wrap;gap:4px var(--sp-2)}.fc-similar-chip{display:inline-flex;align-items:baseline;gap:4px;color:var(--ink-muted)}.fc-similar-chip>[lang]:not(.fc-similar-tr){font-family:var(--font-display);font-weight:600;color:var(--ink)}.fc-similar-chip.is-known>[lang]:not(.fc-similar-tr){color:var(--accent-2-text)}.fc-similar-chip.is-review>[lang]:not(.fc-similar-tr){color:var(--ink-muted)}.fc-similar-tr{color:var(--ink-faint)}.fc-note{font-size:var(--fs-1);color:var(--ink-muted)}.fc-known{align-self:center;margin-top:auto;min-height:44px;padding:0 var(--sp-4);border-radius:var(--r-pill);display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:var(--fs-2);color:var(--accent-2-text);transition:background var(--dur-1) var(--ease-out)}.fc-known:hover:not(:disabled){background:var(--accent-2-soft)}.fc-known:disabled{opacity:.5}.fc-known-sub{font-weight:500;color:var(--ink-muted)}@media(min-width:641px){.fc-card{min-height:400px}.fc-card>.flip-face{padding:var(--sp-6) var(--sp-5)}.fc-word{font-size:52px}.fc-word-en{font-size:40px}.fc-hint-touch{display:none}.fc-hint-key{display:block}}@media(prefers-reduced-motion:reduce){.fc .fc-card.is-flipped{transform:none}.fc .fc-card>.flip-back{transform:none}.fc-card:not(.is-flipped)>.flip-back,.fc-card.is-flipped>.flip-front{opacity:0}.fc,.sess-slot>*,.fc-example-en{animation:none}.grade-btn.is-pressed,.grade-btn:active{transform:none}}.sess-wait{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-3)}.sess-wait-icon{width:40px;height:40px;color:var(--ink-decor)}.sess-wait-title{font-family:var(--font-display);font-size:var(--fs-5);font-weight:700;letter-spacing:-.02em}.sess-wait-actions{display:flex;gap:var(--sp-3);width:100%;margin-top:var(--sp-2)}.sess-wait-actions .btn{flex:1 1 0}.sd{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--sp-5);padding:var(--sp-4) 0}.sd-head{display:flex;flex-direction:column;gap:var(--sp-1)}.sd-title{font-family:var(--font-display);font-size:var(--fs-6);font-weight:800;letter-spacing:-.03em}.sd-stats{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--sp-2);width:100%}.sd-stats .stat-tile{text-align:center;padding:var(--sp-3) var(--sp-1)}@media(max-width:640px){.sd-stats .stat-tile-value{font-size:var(--fs-4);white-space:nowrap}}.sd-actions{display:flex;flex-direction:column;gap:var(--sp-3);width:100%;max-width:360px}.fc-history{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);font-size:var(--fs-1);font-weight:600;color:var(--ink-faint)}.speak-card{display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-5) var(--sp-4);background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2)}.speak-loading{padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--ink-muted)}.speak-turn{display:flex;flex-direction:column;gap:var(--sp-3);animation:speak-in var(--dur-3) var(--ease-out) both}@keyframes speak-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.speak-hint{font-size:var(--fs-1);color:var(--ink-faint);text-align:center}.speak-target{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);text-align:center}.speak-word{font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;font-size:var(--fs-6);line-height:var(--lh-display);overflow-wrap:anywhere}.speak-sentence{font-family:var(--font-display);font-weight:700;font-size:var(--fs-5);line-height:1.35;overflow-wrap:anywhere}.speak-missed{background:none;color:var(--ink-muted);text-decoration:underline dotted var(--accent);text-decoration-thickness:2px;text-underline-offset:3px}.speak-trans{font-size:var(--fs-2);color:var(--ink-muted);text-align:center}.speak-mic-row{display:flex;justify-content:center;padding:var(--sp-2) 0}.speak-mic{position:relative;overflow:visible;display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface-2);color:var(--ink);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.speak-mic svg{width:28px;height:28px}.speak-mic:hover{background:var(--bg-2)}.speak-mic:active{transform:scale(.95)}.speak-mic.is-listening{color:var(--on-accent);border-color:var(--accent);background:var(--accent)}.speak-mic-pulse{position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:inherit;border:2px solid var(--accent);opacity:.55;animation:speak-breathe 1.6s ease-in-out infinite;pointer-events:none}@keyframes speak-breathe{0%,to{transform:scale(1);opacity:.55}50%{transform:scale(1.12);opacity:.2}}.speak-heard{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:52px;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);background:var(--surface-2);text-align:center}.speak-heard-label{font-size:var(--fs-1);color:var(--ink-faint)}.speak-heard-text{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);overflow-wrap:anywhere}.speak-verdict{text-align:center;font-weight:600;color:var(--ink-muted)}.speak-verdict.is-pass{color:var(--accent-2-text)}.speak-score{display:flex;align-items:baseline;justify-content:center;gap:var(--sp-2)}.speak-score-num{font-family:var(--font-display);letter-spacing:-.03em;font-weight:800;font-size:var(--fs-7, 44px);line-height:1;color:var(--accent)}.speak-score-num.is-pass{color:var(--accent-2-text)}.speak-score-label{font-size:var(--fs-1);color:var(--ink-faint)}.speak-fluency{font-size:var(--fs-1);color:var(--ink-muted)}.speak-w-good{color:var(--accent-2-text)}.speak-w-warn{color:var(--warn)}.speak-w-bad{color:var(--danger);text-decoration:underline dotted var(--danger);text-decoration-thickness:2px;text-underline-offset:3px}.speak-error{text-align:center;font-size:var(--fs-1);color:var(--ink-muted)}.speak-unavailable{padding:var(--sp-4);text-align:center;color:var(--ink-muted)}.speak-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2)}.speak-foot{display:flex;justify-content:center}.speak-next{min-width:160px;min-height:48px}.wed-practice{padding:var(--sp-3) var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--surface-2)}.wed-practice .speak-heard,.wed-practice .speak-mic{background:var(--surface)}.wed-practice .speak-mic.is-listening{background:var(--accent)}@media(prefers-reduced-motion:reduce){.speak-turn{animation:none}.speak-mic-pulse{animation:none;opacity:.4}.speak-mic:active{transform:none}}.words-screen{display:flex;flex-direction:column;gap:var(--sp-3)}.words-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-3);padding-top:var(--sp-1)}.words-count{min-height:1.4em;font-weight:600}.words-add{flex:none}@media(max-width:640px){.words-add{position:fixed;right:var(--sp-4);bottom:calc(var(--nav-h) + 30px + env(safe-area-inset-bottom) + var(--sp-3));z-index:var(--z-sticky);min-height:56px;padding:0 var(--sp-5) 0 var(--sp-4);box-shadow:var(--shadow-3);font-size:var(--fs-3)}.words-screen{padding-bottom:96px}}.words-search{position:relative}.words-search .input{padding-left:46px;padding-right:48px;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.words-search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--ink-faint);pointer-events:none}.words-search-icon svg{width:20px;height:20px}.words-search-clear{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;color:var(--ink-muted)}.words-search-clear:hover{background:var(--surface-sunk)}.words-search-clear svg{width:18px;height:18px}.words-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.words-states{flex:1 1 280px;min-width:0}.words-states .chip{min-height:36px;padding:0 14px;font-size:var(--fs-2);flex:none}select.input.words-source{width:auto;min-height:36px;padding:0 var(--sp-3);font-size:var(--fs-1);font-weight:700;color:var(--ink-muted);border-radius:var(--r-pill);background:var(--surface-sunk);border-color:transparent;box-shadow:none}.words-list{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2);overflow:hidden;transition:opacity var(--dur-1) var(--ease-out)}html[data-theme=dark] .words-list{box-shadow:var(--shadow-2),inset 0 0 0 1px var(--border)}.words-list.is-stale{opacity:.6}.wrow{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:64px;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);text-align:left;transition:background var(--dur-1) var(--ease-out)}.wrow:last-child{border-bottom:0}.wrow:hover{background:var(--surface-2)}.wrow:active{background:var(--surface-sunk)}.wrow-main{flex:1 1 auto;min-width:0}.wrow-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:1.2;letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wrow-article{color:var(--ink-muted);font-weight:500}.wrow-trans{font-size:var(--fs-2);color:var(--ink-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wrow-meta{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px}.wrow-sub{display:flex;gap:var(--sp-2);font-size:var(--fs-1);font-weight:600;color:var(--ink-faint);font-variant-numeric:tabular-nums}.words-more{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-3) 0}.words-skel{display:flex;flex-direction:column;gap:var(--sp-2)}.words-skel-row,.gen-skel-row{height:60px;border-radius:var(--r-md);background:var(--surface-sunk);animation:words-pulse 1.4s ease-in-out infinite}@keyframes words-pulse{0%,to{opacity:1}50%{opacity:.55}}.add-menu{display:flex;flex-direction:column;gap:var(--sp-2)}.add-opt{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:68px;padding:var(--sp-3) var(--sp-4);border-radius:var(--r-lg);border:1px solid transparent;background:var(--surface-2);text-align:left;transition:border-color var(--dur-1) var(--ease-out),transform var(--dur-1) var(--ease-out)}.add-opt:hover:not(:disabled){border-color:var(--border-strong)}.add-opt:active:not(:disabled){transform:scale(.985)}.add-opt:disabled{opacity:.55}.add-opt-icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-md);background:var(--accent-soft);color:var(--accent)}.add-opt-icon svg{width:20px;height:20px}.add-opt-text{display:flex;flex-direction:column;gap:2px;min-width:0}.add-opt-title{font-weight:700;font-size:var(--fs-3)}.add-opt-body{font-size:var(--fs-1);color:var(--ink-muted)}.add-menu-llm{display:flex;justify-content:center;padding-top:var(--sp-2)}.wed{display:flex;flex-direction:column;gap:var(--sp-4)}.wed-hero{display:flex;align-items:center;gap:var(--sp-2)}.wed-word{flex:1 1 auto;min-width:0;font-family:var(--font-display);font-weight:800;font-size:var(--fs-6);line-height:1.1;letter-spacing:-.03em;overflow-wrap:anywhere}.wed-article{color:var(--ink-muted);font-weight:500}.wed-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.wed-sub{font-size:var(--fs-1);color:var(--ink-faint)}.wed-section{display:flex;flex-direction:column;gap:var(--sp-2)}.wed-label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.wed-trans{font-size:var(--fs-3)}.wed-example{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-2)}.wed-example-es{font-family:var(--font-display);font-weight:500;font-size:var(--fs-3);line-height:1.35}.wed-example-en{margin-top:2px;font-size:var(--fs-1);color:var(--ink-muted)}.wed-note{font-size:var(--fs-2);color:var(--ink-muted)}.wed-deck-hint{font-size:var(--fs-1);color:var(--ink-faint)}.wed-form{display:flex;flex-direction:column;gap:var(--sp-3)}.wed-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2)}.wed-grid3 select.input{padding-left:var(--sp-3)}.wed-example-edit{display:flex;align-items:center;gap:var(--sp-1);margin-bottom:var(--sp-1)}.wed-example-edit .input{flex:1 1 auto;min-width:0}.wed-actions{display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-2)}.wed-actions-row{display:flex;gap:var(--sp-2)}.wed-actions-row .btn{flex:1 1 0;min-width:0}.wed-actions>.btn{align-self:stretch}.wed-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md);background:var(--accent-soft)}.wed-confirm-text{flex:1 1 100%;font-size:var(--fs-2)}.gen{display:flex;flex-direction:column;gap:var(--sp-4)}.gen-form{display:flex;flex-direction:column;gap:var(--sp-3)}.gen-count{display:flex;gap:var(--sp-2)}.gen-count .chip{min-height:40px;padding:0 18px;font-size:var(--fs-2)}.gen-hint{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink-muted);font-size:var(--fs-2)}.gen-skel{display:flex;flex-direction:column;gap:var(--sp-2)}.gen-skel-row{height:56px}.gen-status{display:flex;align-items:center;gap:var(--sp-2);color:var(--ink-muted);font-size:var(--fs-2);padding-bottom:var(--sp-1)}.gen-spinner{width:18px;height:18px;border-radius:var(--r-pill);border:2px solid var(--border);border-top-color:var(--accent);animation:gen-spin .8s linear infinite}@keyframes gen-spin{to{transform:rotate(360deg)}}.gen-topic{display:flex;align-items:center;gap:var(--sp-3)}.cand{display:flex;flex-direction:column;gap:var(--sp-2)}.cand-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-1);color:var(--ink-muted)}.cand-list{border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.cand-item{border-bottom:1px solid var(--border)}.cand-item:last-child{border-bottom:0}.cand-item.is-checked{background:var(--surface)}.cand-item:not(.is-checked) .cand-text{opacity:.55}.cand-row{display:flex;align-items:center;gap:var(--sp-1);padding-right:var(--sp-1)}.cand-main{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:var(--sp-3);min-height:56px;padding:var(--sp-2) var(--sp-3);cursor:pointer}.cand-check{flex:none;width:22px;height:22px;margin:0;accent-color:var(--accent);cursor:pointer}.cand-text{display:flex;flex-direction:column;min-width:0;transition:opacity var(--dur-1) var(--ease-out)}.cand-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);line-height:1.25}.cand-trans{font-size:var(--fs-1);color:var(--ink-muted)}.cand-pos{color:var(--ink-faint)}.cand-expand{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-pill);color:var(--ink-muted)}.cand-expand:hover{background:var(--surface-sunk)}.cand-expand svg{width:20px;height:20px;transition:transform var(--dur-2) var(--ease-out)}.cand-expand.is-open svg{transform:rotate(180deg)}.cand-sentences{display:flex;flex-direction:column;gap:var(--sp-2);padding:0 var(--sp-3) var(--sp-3) calc(var(--sp-3) + 22px + var(--sp-3))}.cand-sentence{display:flex;align-items:flex-start;gap:var(--sp-1)}.cand-es{font-family:var(--font-display);font-weight:500;font-size:var(--fs-2);line-height:1.35}.cand-en,.cand-note{font-size:var(--fs-1);color:var(--ink-muted)}.cand-foot{position:sticky;bottom:0;padding-top:var(--sp-3);background:var(--surface);border-top:1px solid var(--border)}.wed-similar{display:flex;flex-wrap:wrap;gap:6px var(--sp-3)}.wed-similar-chip{display:inline-flex;align-items:baseline;gap:5px;font-size:var(--fs-2);color:var(--ink-muted)}.wed-similar-chip>[lang]:not(.wed-similar-tr){font-family:var(--font-display);font-weight:600;color:var(--ink)}.wed-similar-chip.st-known>[lang]:not(.wed-similar-tr){color:var(--accent-2-text)}.wed-similar-chip.st-review>[lang]:not(.wed-similar-tr){color:var(--ink-muted)}.wed-similar-tr{font-size:var(--fs-1);color:var(--ink-faint)}.wed-history{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-2)}.settings{display:flex;flex-direction:column;gap:var(--sp-4)}.st-head{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--sp-1);padding-top:var(--sp-1)}.st-head-sub{color:var(--ink-muted)}.st-card{display:flex;flex-direction:column;gap:var(--sp-4)}.st-card-title{font-size:var(--fs-4);letter-spacing:-.015em}.st-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-2) var(--sp-4)}.st-row-text{flex:1 1 14rem;min-width:0}.st-row-label{font-weight:700}.st-row-hint{margin-top:2px;font-size:var(--fs-1);line-height:1.4;color:var(--ink-faint)}.st-row-control{flex:none;display:flex;align-items:center;gap:var(--sp-2)}.st-row-stacked{flex-direction:column;align-items:stretch}.st-row-stacked .st-row-text{flex:none}.st-row-stacked .st-row-control{display:block}.st-seg{display:flex;gap:3px;width:100%;padding:3px;border-radius:var(--r-md);background:var(--surface-sunk)}.st-seg-btn{flex:1 1 0;min-width:0;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px 8px;border-radius:calc(var(--r-md) - 3px);border:1px solid transparent;font-weight:700;font-size:var(--fs-2);line-height:1.2;color:var(--ink-muted);transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}.st-seg-btn:hover{color:var(--ink)}.st-seg-btn.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.st-seg.is-wrap{flex-wrap:wrap}.st-seg.is-wrap .st-seg-btn{flex:1 1 calc(33.333% - 3px)}.st-seg-sub{font-size:11px;font-weight:600;line-height:1;color:var(--ink-faint)}.st-seg-btn.is-active .st-seg-sub{color:var(--ink-muted)}.st-stepper .btn-icon{font-size:var(--fs-4);font-weight:500}.st-select{width:auto;min-width:7ch;min-height:44px;font-size:var(--fs-2)}.st-select-wide{width:100%}.st-switch-row{cursor:pointer;-webkit-tap-highlight-color:transparent}.st-switch-row .st-row-control{min-height:44px}.st-status{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2) var(--sp-3);font-size:var(--fs-1);color:var(--ink-muted)}.st-mono{font-family:var(--font-mono);font-size:var(--fs-1);color:var(--ink-muted);background:var(--surface-sunk);padding:2px 8px;border-radius:var(--r-sm);word-break:break-all}.st-hint{font-size:var(--fs-1);line-height:1.45;color:var(--ink-faint)}.st-hint .st-mono{padding:0 5px}.st-warn{color:var(--warn)}.st-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2) var(--sp-3)}.st-subhead{margin:var(--sp-3) 0 0;color:var(--ink-muted)}.st-summary strong{font-family:var(--font-display);font-size:var(--fs-4);font-weight:800;letter-spacing:-.02em;color:var(--accent-2-text)}.st-summary strong.is-accent{color:var(--accent)}.st-copy{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-3)}.st-copy-url{flex:1 1 12rem;min-width:0;padding:var(--sp-2) var(--sp-3);font-size:var(--fs-2);color:var(--ink);user-select:all;-webkit-user-select:all}.st-about{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--sp-2);color:var(--ink-muted)}@media(max-width:640px){.st-card{padding:var(--sp-4)}}@media(min-width:641px){.settings{gap:var(--sp-5)}}.ac-row{gap:var(--sp-2)}.ac-tag{display:inline-block;margin-left:var(--sp-2);padding:1px 8px;border-radius:var(--r-pill);background:var(--accent-2-soft);color:var(--accent-2-text);font-size:var(--fs-1);font-weight:700;vertical-align:middle}.ac-tag-pending{background:var(--accent-soft);color:var(--accent)}.ac-confirm{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-4);border-radius:var(--r-md);background:var(--accent-soft)}.tutor-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.tutor-intro{color:var(--ink-muted);max-width:48ch}.tutor-section-title{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:var(--sp-3)}.tutor-landing .empty-state{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl)}.tutor-landing code{font-family:var(--font-mono);font-size:.92em;background:var(--surface-sunk);padding:1px 5px;border-radius:4px}.scen-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}@media(min-width:641px){.scen-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.scen-card{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:132px;padding:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);text-align:left;transition:transform var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),opacity var(--dur-1) var(--ease-out)}.scen-card:hover:not(:disabled){border-color:var(--accent);box-shadow:var(--shadow-2);transform:translateY(-1px)}.scen-card:active:not(:disabled){transform:scale(.98)}.scen-card:disabled{opacity:.55;cursor:default}.scen-card.is-free{background:var(--accent);border-color:transparent;color:var(--on-accent);box-shadow:var(--shadow-1)}.scen-card.is-free:hover:not(:disabled){background:var(--accent-hover)}.scen-card.is-free .scen-title{color:var(--on-accent)}.scen-card.is-free .scen-goal{color:var(--on-accent);opacity:.85}.scen-emoji{font-size:var(--fs-5);line-height:1;margin-bottom:var(--sp-2)}.scen-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);line-height:var(--lh-display);letter-spacing:-.01em}.scen-goal{font-size:var(--fs-1);color:var(--ink-muted);line-height:1.35;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.chat-list{display:flex;flex-direction:column;gap:var(--sp-2)}.chat-row{display:flex;align-items:center;gap:var(--sp-2);min-height:60px;padding:var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.chat-row-main{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;text-align:left;border-radius:var(--r-sm)}.chat-row-main:hover .chat-row-title{color:var(--accent)}.chat-row-emoji{font-size:var(--fs-4);line-height:1;flex:none}.chat-row-text{min-width:0;display:flex;flex-direction:column;gap:1px}.chat-row-title{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color var(--dur-1) var(--ease-out)}.chat-row-time{font-size:var(--fs-1);color:var(--ink-faint)}.chat-row-x{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-pill);color:var(--ink-faint);flex:none;transition:background var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.chat-row-x:hover{background:var(--accent-soft);color:var(--danger)}.chat-row-x svg{width:18px;height:18px}.chat-row-confirm{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-1);color:var(--ink-muted);flex:none}.tutor-chat{display:flex;flex-direction:column;margin:calc(-1 * var(--sp-4)) calc(-1 * var(--sp-4)) calc(-1 * (var(--sp-7) + env(safe-area-inset-bottom)));height:calc(min(var(--vvh),100dvh) - var(--nav-h) - env(safe-area-inset-top) - env(safe-area-inset-bottom));min-height:280px}.tutor-chat-head{flex:none;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}.tutor-chat-emoji{font-size:var(--fs-5);line-height:1;flex:none}.tutor-chat-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-4);line-height:var(--lh-display);letter-spacing:-.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tutor-chat-goal{font-size:var(--fs-1);color:var(--ink-muted);margin-top:2px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tutor-chat-head .btn{flex:none}@media(min-width:641px){.tutor-chat{margin:calc(-1 * var(--sp-6)) 0;height:calc(min(var(--vvh),100dvh) - env(safe-area-inset-top))}.tutor-chat-head{padding:var(--sp-4) 0 var(--sp-3)}}.msg-list{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4) var(--sp-3)}@media(min-width:641px){.msg-list{padding:var(--sp-4) var(--sp-1) var(--sp-3)}}.msg-list-note{text-align:center;color:var(--ink-faint);font-size:var(--fs-1);padding:var(--sp-2) 0}.msg-list .empty-state{margin:auto}.msg{display:flex;width:100%}.msg-assistant{justify-content:flex-start}.msg-user{justify-content:flex-end}.msg-bubble{max-width:min(88%,560px);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-lg);white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5}.msg-assistant .msg-bubble{background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:var(--r-sm);font-size:var(--fs-3);box-shadow:var(--shadow-1)}.msg-user .msg-bubble{background:var(--accent);color:var(--on-accent);border-bottom-right-radius:var(--r-sm);font-size:var(--fs-2);font-weight:600}.msg-bubble em{font-style:italic}.tok{display:inline;border-radius:3px;text-decoration:underline dotted transparent;text-decoration-thickness:1px;text-underline-offset:3px;transition:color var(--dur-1) var(--ease-out),text-decoration-color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.tok:hover,.tok:focus-visible{color:var(--accent);text-decoration-color:var(--accent);outline:none}.tok.is-active{background:var(--accent-soft);color:var(--accent);text-decoration-color:transparent}.msg-user .tok:hover,.msg-user .tok:focus-visible,.msg-user .tok.is-active{color:inherit;background:transparent;text-decoration-color:currentColor}.msg-caret{display:inline-block;width:2px;height:1em;margin-left:2px;vertical-align:-.15em;background:var(--accent);animation:caret-blink 1s steps(2,start) infinite}@keyframes caret-blink{to{visibility:hidden}}.typing{display:inline-flex;align-items:center;gap:5px;height:1.5em;padding:0 2px}.typing i{width:7px;height:7px;border-radius:var(--r-pill);background:var(--ink-faint);animation:typing-bounce 1.2s ease-in-out infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes typing-bounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-3px);opacity:1}}.tutor-cap{flex:none;display:flex;align-items:center;gap:var(--sp-3);margin:0 var(--sp-4) var(--sp-2);padding:var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-3);border-radius:var(--r-md);background:var(--accent-2-soft);color:var(--ink);font-size:var(--fs-1)}.tutor-cap .btn{flex:none}@media(min-width:641px){.tutor-cap{margin:0 0 var(--sp-2)}}.composer{flex:none;padding:var(--sp-2) var(--sp-4) var(--sp-3);border-top:1px solid var(--border);background:var(--bg)}.composer-row{display:flex;align-items:flex-end;gap:var(--sp-2)}.composer-input{flex:1 1 auto;max-height:calc(4 * 1.45 * var(--fs-3) + 2 * var(--sp-3) + 2px);overflow-y:auto;resize:none;border-radius:var(--r-lg);background:var(--surface)}.composer .btn{min-height:52px;flex:none}.composer .btn-icon{width:52px;min-width:52px}.composer-hint{display:none;font-size:var(--fs-1);color:var(--ink-faint);padding-top:var(--sp-2)}@media(min-width:641px){.composer{padding:var(--sp-2) 0 var(--sp-4)}.composer-hint{display:block}}.mic-btn{position:relative;overflow:visible}.mic-btn.is-listening{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.mic-pulse{position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:inherit;border:2px solid var(--accent);opacity:.55;animation:mic-breathe 1.6s ease-in-out infinite;pointer-events:none}@keyframes mic-breathe{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.09);opacity:.12}}.composer-interim{padding-top:var(--sp-2);font-size:var(--fs-2);font-weight:500;color:var(--ink-faint);overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){.mic-pulse{animation:none;opacity:.5}}.wpop{position:fixed;z-index:var(--z-scrim);display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-3);animation:fade-in var(--dur-1) var(--ease-out) both}.wpop.is-measuring{visibility:hidden}.wpop-word{font-family:var(--font-display);font-weight:700;font-size:var(--fs-3);padding:0 var(--sp-2) 0 var(--sp-3);max-width:40vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wpop .btn{min-height:40px}.wpop .btn svg,.wpop-sheet-actions .btn svg{width:18px;height:18px}.wpop-sheet-word{font-family:var(--font-display);font-weight:800;font-size:var(--fs-6);line-height:var(--lh-display);letter-spacing:-.03em;text-align:center;margin:var(--sp-2) 0 var(--sp-5);overflow-wrap:anywhere}.wpop-sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3)}.lookup-word{font-family:var(--font-display);font-weight:800;font-size:var(--fs-5);line-height:var(--lh-display);letter-spacing:-.02em}.lookup-loading{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-2) 0 var(--sp-3)}.lookup-skel{height:14px;border-radius:6px;background:var(--surface-sunk);animation:lookup-skel 1.2s ease-in-out infinite}.lookup-skel.w-60{width:60%}.lookup-skel.w-90{width:90%}.lookup-skel.w-75{width:75%}@keyframes lookup-skel{0%,to{opacity:1}50%{opacity:.45}}.lookup-form{display:flex;flex-direction:column;gap:var(--sp-3)}.lookup-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--sp-3)}.lookup-grid.is-even{grid-template-columns:repeat(2,minmax(0,1fr))}.lookup-form textarea.input{min-height:60px;resize:vertical}.lookup-banner{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--accent-2-soft);color:var(--accent-2-text);font-weight:700}.lookup-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-2)}.lookup-error{color:var(--danger);font-size:var(--fs-2)}
