.cloud-open{position:fixed;right:12px;bottom:calc(var(--tabs) + 12px);z-index:40;width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1);font-size:22px}.cloud-login{min-height:100dvh;display:grid;place-items:center;padding:24px;background:var(--bg);color:var(--ink)}.cloud-login form{width:min(100%,400px);display:grid;gap:18px}.cloud-login h1{font-size:clamp(32px,8vw,48px);line-height:1.1;letter-spacing:-.04em}.cloud-login p{color:var(--ink-2);line-height:1.6}.cloud-eyebrow{font-size:12px;letter-spacing:.15em}.cloud-login input{width:100%;padding:14px;border:1px solid var(--line-strong);border-radius:12px;background:var(--surface);color:var(--ink);font-size:18px}.cloud-login button,.cloud-panel button,.cloud-file{padding:14px 18px;border:0;border-radius:12px;background:var(--pen);color:var(--on-pen);font:inherit;min-height:48px;cursor:pointer}.cloud-login button:disabled{opacity:.6}.cloud-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--scrim);display:grid;place-items:center;padding:20px}.cloud-panel{background:var(--surface);color:var(--ink);width:min(100%,440px);padding:24px;border-radius:24px;display:grid;gap:16px;max-height:90dvh;overflow:auto}.cloud-panel p{line-height:1.5}.cloud-file{background:var(--surface-2);color:var(--ink);display:grid;gap:12px}.cloud-file input{max-width:100%;font-size:14px}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-cyrillic-ext-wght-normal-DOFToQv1.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-cyrillic-wght-normal-DayYxulF.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-math-wght-normal-Bl4ZGkZl.woff2) format("woff2-variations");unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-symbols-wght-normal-DxQzqQfC.woff2) format("woff2-variations");unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-vietnamese-wght-normal-BBxOatbv.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-latin-ext-wght-normal-QAhDxQuo.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Onest Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./onest-latin-wght-normal-Dun_Rd-l.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: oklch(97.3% .005 275);--surface: oklch(100% 0 0);--surface-2: oklch(95.3% .008 275);--surface-3: oklch(91.8% .011 275);--ink: oklch(23% .025 275);--ink-2: oklch(45% .022 275);--ink-3: oklch(56% .018 275);--line: oklch(91% .009 275);--line-strong: oklch(64% .015 275);--pen: oklch(47% .21 277);--pen-ink: oklch(42% .2 277);--pen-wash: oklch(94.5% .035 277);--on-pen: oklch(100% 0 0);--ok: oklch(50% .14 152);--ok-ink: oklch(41% .11 152);--ok-wash: oklch(95% .045 152);--flag: oklch(53% .2 27);--flag-ink: oklch(45% .18 27);--flag-wash: oklch(95.5% .03 27);--amber: oklch(64% .17 52);--on-ink: oklch(100% 0 0);--scrim: oklch(20% .02 275 / .45);--shadow-1: 0 1px 2px oklch(23% .03 275 / .06), 0 2px 8px -2px oklch(23% .03 275 / .08);--shadow-2: 0 1px 2px oklch(23% .03 275 / .06), 0 8px 22px -8px oklch(23% .03 275 / .18);--shadow-up: 0 -1px 0 var(--line), 0 -12px 28px -16px oklch(23% .03 275 / .25);--font: "Onest Variable", "Onest", system-ui, -apple-system, "Segoe UI", sans-serif;--pad: 1.25rem;--r-sm: 10px;--r-md: 14px;--r-lg: 20px;--r-xl: 26px;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ease-std: cubic-bezier(.2, 0, 0, 1);--t-press: .1s;--t-state: .18s;--t-sheet: .28s;--kb: 0px;--bar: 9rem;--tabs: calc(64px + env(safe-area-inset-bottom)) ;--c: var(--pen);--c-ink: #fff;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: oklch(16.5% .014 275);--surface: oklch(21.5% .017 275);--surface-2: oklch(26% .019 275);--surface-3: oklch(30.5% .021 275);--ink: oklch(95% .008 275);--ink-2: oklch(76% .016 275);--ink-3: oklch(64% .016 275);--line: oklch(29% .018 275);--line-strong: oklch(52% .02 275);--pen: oklch(73% .14 277);--pen-ink: oklch(82% .1 277);--pen-wash: oklch(30% .075 277);--on-pen: oklch(19% .04 277);--ok: oklch(73% .15 152);--ok-ink: oklch(82% .13 152);--ok-wash: oklch(28.5% .06 152);--flag: oklch(69% .17 27);--flag-ink: oklch(80% .12 27);--flag-wash: oklch(29.5% .07 27);--amber: oklch(76% .15 60);--on-ink: oklch(16.5% .014 275);--scrim: oklch(5% .01 275 / .6);--shadow-1: 0 1px 2px oklch(0% 0 0 / .3);--shadow-2: 0 1px 2px oklch(0% 0 0 / .3), 0 10px 24px -10px oklch(0% 0 0 / .55);--shadow-up: 0 -1px 0 var(--line), 0 -12px 28px -16px oklch(0% 0 0 / .6)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.5;font-feature-settings:"ss01" 0;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:contain}h1,h2,h3,p{margin:0}h1,h2,h3,.done__title,.drill__meaning{text-wrap:balance}p,.note,.tile-row__sub,.station__text{text-wrap:pretty}button,input,textarea{font:inherit;color:inherit}button{background:none;border:none;padding:0;cursor:pointer;touch-action:manipulation}button:disabled{cursor:default}a{color:inherit;text-decoration:none}:focus-visible{outline:2.5px solid var(--pen);outline-offset:2px;border-radius:6px}::selection{background:var(--pen-wash);color:var(--pen-ink)}input,textarea{caret-color:var(--pen)}.icon{flex:none;display:block}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.btn,.primary,.option,.mic,.tool,.tile-row,.resume__go,.chipword,.drill__option,.station__btn,.bookline,.jump__go,.level,.topic,.chatbar__hint,.chatbar__send{transition:transform var(--t-press) var(--ease-out),background-color var(--t-state) var(--ease-std),color var(--t-state) var(--ease-std),box-shadow var(--t-state) var(--ease-std)}.btn:active:not(:disabled),.primary:active:not(:disabled),.option:active,.mic:active,.tool:active:not(:disabled),.tile-row:active,.resume__go:active,.chipword:active,.drill__option:active:not(:disabled),.jump__go:active:not(:disabled),.level:active,.topic:active,.chatbar__hint:active,.chatbar__send:active:not(:disabled){transform:scale(.97)}.app{max-width:40rem;margin:0 auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.scroll{flex:1;padding:0 var(--pad) calc(2.5rem + env(safe-area-inset-bottom))}.app--exercise .scroll{padding-bottom:calc(var(--bar) + var(--kb) + env(safe-area-inset-bottom))}.app--tabs .scroll{padding-bottom:calc(var(--tabs) + 2rem)}.topbar{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:.25rem;min-height:3.5rem;padding:env(safe-area-inset-top) calc(var(--pad) - .6rem) 0;background:var(--bg)}.topbar__back,.topbar__tool{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;padding:0 .6rem;border-radius:var(--r-sm);font-size:.9375rem;font-weight:600;color:var(--ink);white-space:nowrap}.topbar__back{min-width:0;max-width:70%}.topbar__back .icon,.topbar__tool .icon{color:var(--ink-2)}.topbar__back span:last-child{overflow:hidden;text-overflow:ellipsis}.topbar__tool{font-weight:500;color:var(--ink-2)}@media(hover:hover){.topbar__back:hover,.topbar__tool:hover{background:var(--surface-2)}}.topbar__spacer{flex:1}.topbar__count{padding-right:.6rem;font-size:.875rem;font-weight:500;color:var(--ink-2);font-variant-numeric:tabular-nums}.page-title{padding:calc(1.1rem + env(safe-area-inset-top)) 0 .9rem;font-size:1.875rem;font-weight:700;letter-spacing:-.025em;line-height:1.15}.badge{flex:none;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;font-size:.8125rem;font-weight:700;line-height:1;color:var(--c-ink);background:var(--c);font-variant-numeric:tabular-nums}.badge--small{width:24px;height:24px;font-size:.75rem}.line{position:relative;display:block;height:20px;container-type:inline-size}@media(prefers-color-scheme:dark){.line,.stations{--c: color-mix(in oklab, var(--c-line, currentColor) 72%, white)}}.line__track,.line__done{position:absolute;left:0;right:0;top:8px;height:4px;border-radius:2px}.line__track{background:color-mix(in oklab,var(--c) 22%,var(--surface))}.line__done{background:var(--c);transform-origin:left center;transform:scaleX(var(--at, 0));transition:transform .45s var(--ease-out)}.line__train{position:absolute;top:50%;left:5px;width:0;height:0;transform:translate(calc(var(--at, 0) * (100cqw - 10px)));transition:transform .45s var(--ease-out);pointer-events:none}.line__here{position:absolute;left:-10px;top:-10px;width:20px;height:20px;border-radius:50%;background:var(--surface);box-shadow:inset 0 0 0 5px var(--c),0 0 0 4px color-mix(in oklab,var(--c) 20%,transparent);transition:box-shadow var(--t-state) var(--ease-std)}.line__here--wrong{box-shadow:inset 0 0 0 5px var(--flag),0 0 0 4px color-mix(in oklab,var(--flag) 20%,transparent)}.line--ticks .line__train{left:1px;transform:translate(calc(var(--at, 0) * (100cqw - 2px)))}.line--ticks .line__here{left:-7px;top:-7px;width:14px;height:14px;box-shadow:inset 0 0 0 3.5px var(--c)}.line--ticks .line__here--wrong{box-shadow:inset 0 0 0 3.5px var(--flag)}.line--lit .line__done{animation:line-fill .9s var(--ease-out) both}.line--lit .line__stop{animation:stop-light .38s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 45ms + .2s)}@keyframes line-fill{0%{transform:scaleX(0)}}@keyframes stop-light{0%{opacity:0;transform:scale(.3)}}.line__stops{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:space-between;align-items:center}.line__stop{flex:none;width:10px;height:10px;border-radius:50%;background:var(--surface);box-shadow:inset 0 0 0 2.5px color-mix(in oklab,var(--c) 40%,var(--surface))}.line__stop--partial,.line__stop--answered{background:color-mix(in oklab,var(--c) 35%,var(--surface));box-shadow:inset 0 0 0 2.5px var(--c)}.line__stop--pending{background:var(--surface);box-shadow:inset 0 0 0 2.5px var(--c)}.line__stop--right{background:var(--c);box-shadow:none}.line__stop--wrong{background:var(--flag);box-shadow:0 0 0 2px var(--surface)}.line--ticks .line__stop{width:2px;height:10px;border-radius:1px;background:color-mix(in oklab,var(--c) 40%,var(--surface));box-shadow:none}.line--ticks .line__stop--right{background:var(--c)}.line--ticks .line__stop--partial,.line--ticks .line__stop--answered,.line--ticks .line__stop--pending{background:color-mix(in oklab,var(--c) 70%,var(--surface))}.line--ticks .line__stop--wrong{width:3px;height:14px;background:var(--flag)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:8;display:grid;grid-template-columns:repeat(4,1fr);max-width:40rem;margin:0 auto;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--surface);box-shadow:var(--shadow-up)}@media(min-width:40rem){.tabbar{border-radius:var(--r-lg) var(--r-lg) 0 0}}.tabbar__tab{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:52px;padding-top:4px;border-radius:var(--r-md);font-size:.75rem;font-weight:600;color:var(--ink-3)}.tabbar__tab--on{color:var(--pen)}@media(hover:hover){.tabbar__tab:hover{color:var(--ink)}.tabbar__tab--on:hover{color:var(--pen)}}.strip{position:sticky;top:calc(3.5rem + env(safe-area-inset-top));z-index:5;padding:.15rem var(--pad) .5rem;background:var(--bg)}.strip__open{display:block;width:100%;min-height:44px;padding:12px 0;margin:-6px 0;border-radius:var(--r-sm)}.strip__meta{display:flex;align-items:center;gap:.5rem;min-height:40px}.strip__where{flex:1;min-width:0;font-size:.875rem;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.strip__where b{font-weight:600;color:var(--ink)}.strip__step{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ink-2)}@media(hover:hover){.strip__step:hover:not(:disabled){background:var(--surface-2);color:var(--ink)}}.strip__step:disabled{opacity:.3}.strip__count{min-width:3.75rem;font-size:.875rem;font-weight:600;text-align:center;color:var(--ink);font-variant-numeric:tabular-nums}.strip--plain{display:flex;align-items:center;gap:3px;min-height:2.25rem}.strip__marks{flex:1;display:flex;align-items:center;gap:3px;min-width:0}.strip__mark{flex:1;min-width:2px;height:6px;border-radius:3px;background:var(--surface-3);transition:background-color var(--t-state) var(--ease-std)}.strip__mark--partial,.strip__mark--answered{background:color-mix(in oklab,var(--pen) 35%,var(--surface))}.strip__mark--right{background:var(--ok)}.strip__mark--wrong{background:var(--flag)}.strip__mark--current{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ink)}.ex__head{padding:.6rem 0 .25rem}.ex__address{display:flex;flex-wrap:wrap;align-items:center;column-gap:.6rem;font-size:.875rem;font-weight:400;color:var(--ink-2)}.ex__where{font-weight:600;color:var(--ink)}.ex__page{margin-left:auto;color:var(--ink-2);font-variant-numeric:tabular-nums}.ex__open{margin-left:auto;min-height:44px;font:inherit;font-weight:600;color:var(--pen)}.ex__instruction{margin:.35rem 0 0;font-size:1.0625rem;font-weight:500;line-height:1.45;color:var(--ink)}.ex__instruction--folded{display:block;width:100%;text-align:left}.ex__more{font-weight:600;color:var(--pen)}.ex__example{margin-top:.4rem;font-size:.9375rem;color:var(--ink-2)}.ex__example summary{display:inline-flex;align-items:center;min-height:36px;font-weight:600;color:var(--pen);cursor:pointer}.ex__example p{margin:.15rem 0 0;padding:.6rem .8rem;background:var(--surface-2);border-radius:var(--r-sm)}.intro{margin-top:.75rem;padding:1.1rem 1.15rem 1rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.intro__eyebrow{margin:0 0 .5rem;font-size:1.125rem;font-weight:700;letter-spacing:-.01em}.intro__then{margin:.9rem 0 0;padding-top:.75rem;border-top:1px solid var(--line);font-size:.9375rem;color:var(--ink-2)}.rule{font-size:1rem;line-height:1.6}.rule__heading{margin:.4rem 0;font-size:1rem;font-weight:700}.rule__prose{margin:0 0 .6rem}.rule__list,.rule__example{margin:0 0 .7rem;padding:.55rem .8rem;background:var(--surface-2);border-radius:var(--r-sm)}.rule__example{color:var(--ink-2)}.rule__row{display:flex;flex-wrap:wrap;column-gap:1.4rem}.rule__row+.rule__row{margin-top:.15rem}.rule__cell{min-width:0}.step-enter{animation:step-in .28s var(--ease-out)}.step-enter[data-dir="-1"]{animation-name:step-in-back}@keyframes step-in{0%{opacity:0;transform:translate(28px)}}@keyframes step-in-back{0%{opacity:0;transform:translate(-28px)}}.card{padding:1rem 0 .4rem}.card__sentence{font-size:clamp(1.4rem,1.1rem + 1.3vw,1.75rem);font-weight:450;line-height:2.05;letter-spacing:-.012em;word-break:break-word}.card__source{font-size:clamp(1.3rem,1.05rem + 1.2vw,1.6rem);font-weight:450;line-height:1.5;letter-spacing:-.01em}.w,.slot__field{background-image:linear-gradient(var(--pen),var(--pen));background-repeat:no-repeat;background-position:0 92%;background-size:0% 2.5px;transition:background-size .22s var(--ease-out)}.w--read,.slot--read .slot__field{background-size:100% 2.5px}.card--lookup .w{cursor:pointer;border-radius:4px}.w--looked{background-color:var(--pen-wash);box-shadow:0 0 0 3px var(--pen-wash)}.w--slip{text-decoration:underline wavy var(--flag);text-decoration-thickness:1.5px;text-underline-offset:.28em}.answer{display:block;width:100%;margin-top:1rem;padding:.85rem 1rem;font-size:1.1875rem;line-height:1.55;color:var(--pen-ink);background:var(--surface);border:none;border-radius:var(--r-md);box-shadow:inset 0 0 0 1.5px var(--line),var(--shadow-1);resize:none;overflow:hidden;min-height:5.5rem;transition:box-shadow var(--t-state) var(--ease-std)}.answer:focus{outline:none;box-shadow:inset 0 0 0 2px var(--pen),var(--shadow-1)}.answer::placeholder{color:var(--ink-3)}.slot{display:inline-flex;align-items:center;max-width:100%;margin:0 .1em;white-space:nowrap;vertical-align:middle}.slot__field{position:relative;display:inline-block;border-radius:11px}.slot__prompt{margin-right:.25em;font-size:.62em;font-weight:500;color:var(--ink-2);-webkit-user-select:none;user-select:none}.slot__ordinal{position:absolute;top:-7px;left:-6px;z-index:1;display:grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:9px;font-size:11px;font-weight:700;line-height:1;color:var(--ink-2);background:var(--surface);box-shadow:0 0 0 1.5px var(--line);pointer-events:none}.slot__input{height:1.7em;min-height:44px;min-width:2.6em;padding:0 .3em;font-size:1em;font-weight:600;line-height:1;text-align:center;color:var(--pen-ink);background:var(--surface-2);border:none;border-radius:11px;box-shadow:inset 0 -2px color-mix(in oklab,var(--ink) 18%,transparent);caret-color:var(--pen);vertical-align:middle;transition:background-color var(--t-state) var(--ease-std),color var(--t-state) var(--ease-std),box-shadow var(--t-state) var(--ease-std);-webkit-appearance:none;-moz-appearance:none;appearance:none}@media(hover:hover){.slot__input:hover{background:var(--surface-3)}}.slot__input:focus,.slot--active .slot__input{outline:none;background:var(--pen-wash);box-shadow:inset 0 0 0 2px var(--pen)}.slot__input--filled{background:var(--pen-wash);box-shadow:none}.slot--correct .slot__input,.slot--acceptable .slot__input{color:var(--ok-ink);background:var(--ok-wash);box-shadow:none}.slot--unclear .slot__input{background:var(--surface-2);box-shadow:inset 0 0 0 2px var(--line-strong);color:var(--ink)}.slot--wrong .slot__input{color:var(--flag-ink);background:var(--flag-wash);box-shadow:inset 0 0 0 2px var(--flag);text-decoration:line-through;text-decoration-thickness:2px}.slot--wrong .slot__input:focus,.slot--wrong.slot--active .slot__input{box-shadow:inset 0 0 0 2px var(--flag),0 0 0 3px color-mix(in oklab,var(--flag) 25%,transparent)}.slot--inked .slot__input{animation:ink-in .7s var(--ease-out)}.slot--fresh-ok .slot__input{animation:slot-ok .56s var(--ease-out)}.slot--fresh-bad .slot__input{animation:slot-bad .42s var(--ease-std)}@keyframes slot-ok{35%{transform:scale(1.08);box-shadow:0 0 0 6px color-mix(in oklab,var(--ok) 28%,transparent)}}@keyframes slot-bad{20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}@keyframes ink-in{0%{color:transparent;text-shadow:0 0 8px var(--pen)}60%{color:var(--pen-ink);text-shadow:0 0 2px var(--pen)}}.slot--slip .slot__input{text-decoration:underline wavy var(--flag);text-decoration-thickness:1.5px;text-underline-offset:.2em}.slot__mark{display:inline-grid;place-items:center;width:22px;height:22px;margin-left:.15em;border-radius:50%;font-size:13px;font-weight:700;line-height:1;color:var(--on-pen);background:var(--ok)}.slot__mark--wrong{background:var(--flag)}.slot__mark--unclear{color:var(--ink);background:var(--surface-3)}.slot__fix{margin-left:.3em;font-weight:700;color:var(--flag-ink)}.feedback{padding:.35rem 0 0}.feedback__status{display:flex;align-items:center;gap:.5rem;margin:.6rem 0 0;padding:.7rem .9rem;border-radius:var(--r-md);font-size:1rem;font-weight:600;line-height:1.35}.feedback__status--pen{color:var(--ok-ink);background:var(--ok-wash)}.feedback__status--flag{color:var(--flag-ink);background:var(--flag-wash)}.feedback__status--quiet{font-weight:500;color:var(--ink-2);background:var(--surface-2)}.feedback__status--quiet:before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--pen);animation:breathe 1.2s var(--ease-std) infinite}.feedback__error{margin:.6rem 0 0;padding:.7rem .9rem;border-radius:var(--r-md);font-size:.9375rem;line-height:1.5;color:var(--flag-ink);background:var(--flag-wash)}.feedback__whole{margin:.6rem 0 0;font-size:.9375rem;color:var(--ink-2)}.feedback__whole span{font-size:1.0625rem;font-weight:600;color:var(--ok-ink)}.feedback__comment{margin:.6rem 0 0;font-size:.9375rem;line-height:1.55;color:var(--ink-2)}.feedback__heard,.feedback__quiet{margin:.6rem 0 0;font-size:.9375rem;color:var(--ink-2)}.feedback__quiet{animation:breathe 1.6s var(--ease-std) infinite}@keyframes breathe{50%{opacity:.5}}.notes{list-style:none;margin:.5rem 0 0;padding:0}.note{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;margin-bottom:.5rem;padding:.7rem .9rem;font-size:.9875rem;line-height:1.55;background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-1)}.note>.note__ref+span{flex:1 1 0;min-width:12rem}.note--block{display:block;margin-top:.6rem}.note--wrong,.note--minor{background:var(--flag-wash);box-shadow:none}.note--acceptable,.note--correct{background:var(--ok-wash);box-shadow:none}.note--unclear{background:var(--surface-2);box-shadow:none}.note__ref{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:10px;font-size:12px;font-weight:700;line-height:1;color:var(--ink);background:var(--surface);align-self:center}.note__given{color:var(--ink-2);text-decoration-color:var(--flag)}.note__fix{font-weight:700;color:var(--flag-ink)}.note__alt{font-weight:700;color:var(--ok-ink)}.note__why{color:var(--ink)}.note__source{font-size:.8125rem;color:var(--ink-2)}.note__lead{margin:0}.note__corrected{margin:0 0 .3rem;font-size:1.0625rem;font-weight:600;color:var(--ok-ink)}.note__issues{margin:0;padding-left:1.1rem}.note__actions{display:flex;flex-wrap:wrap;gap:0 1.2rem;width:100%}.note__confirm{display:inline-flex;flex-wrap:wrap;align-items:center;gap:0 1rem;font-size:.9375rem;font-weight:600}.note__action{min-height:44px;padding:.3rem 0;font-size:.9375rem;font-weight:600;color:var(--pen-ink)}.note--wrong .note__action,.note--minor .note__action{color:var(--flag-ink)}@media(hover:hover){.note__action:hover{text-decoration:underline;text-underline-offset:3px}}.hint{margin-top:.6rem;padding:.75rem .9rem;background:var(--pen-wash);border-radius:var(--r-md)}.hint__level{display:block;font-size:.8125rem;font-weight:700;color:var(--pen-ink)}.hint__text{margin:.2rem 0 0;font-size:.9875rem;line-height:1.55}.pron{margin-top:.7rem;padding:.7rem .9rem .75rem;background:var(--flag-wash);border-radius:var(--r-md)}.pron__label{margin:0 0 .3rem;font-size:.8125rem;font-weight:700;color:var(--flag-ink)}.pron__list{list-style:none;margin:0;padding:0}.pron__note{display:flex;align-items:baseline;gap:.6rem;padding:.2rem 0;font-size:.9875rem;line-height:1.5}.pron__play{flex:none;display:inline-grid;place-items:center;width:36px;height:36px;margin:-.35rem 0;border-radius:50%;color:var(--on-pen);background:var(--flag)}.pron__word{font-weight:700;text-decoration:underline wavy var(--flag);text-decoration-thickness:1.5px;text-underline-offset:.25em}.pron__tip{color:var(--ink)}.listen{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.8rem}.listen__play{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:0 1.05rem 0 .85rem;border-radius:999px;font-size:.9375rem;font-weight:600;color:var(--pen-ink);background:var(--pen-wash);transition:background-color var(--t-state) var(--ease-std),color var(--t-state) var(--ease-std)}.listen__play--on{color:var(--on-pen);background:var(--pen)}.listen__slow{min-height:44px;padding:0 .95rem;border-radius:999px;font-size:.875rem;font-weight:600;color:var(--ink-2);background:var(--surface-2)}.listen__slow[aria-pressed=true]{color:var(--pen-ink);background:var(--pen-wash);box-shadow:inset 0 0 0 1.5px var(--pen)}.listen__note{font-size:.8125rem;color:var(--ink-2)}.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:.5rem;margin-top:1.1rem}.tool{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;min-height:66px;padding:.55rem .25rem .5rem;border-radius:var(--r-md);font-size:.8125rem;font-weight:500;line-height:1.2;text-align:center;color:var(--ink-2);background:var(--surface);box-shadow:var(--shadow-1)}.tool .icon{color:var(--ink)}@media(hover:hover){.tool:hover:not(:disabled){color:var(--ink);box-shadow:var(--shadow-2)}}.tool:disabled{opacity:.5}.tool[aria-pressed=true]{color:var(--pen-ink);background:var(--pen-wash);box-shadow:inset 0 0 0 1.5px var(--pen)}.tool[aria-pressed=true] .icon{color:var(--pen)}.tool__badge{position:absolute;top:6px;right:calc(50% - 24px);display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:9px;font-size:11px;font-weight:700;color:var(--on-pen);background:var(--pen)}.actionbar{position:fixed;left:0;right:0;bottom:var(--kb);z-index:8;max-width:40rem;margin:0 auto;padding:.7rem calc(var(--pad) - .25rem) calc(.8rem + env(safe-area-inset-bottom));background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-up)}.kb-open .actionbar{padding-bottom:.6rem;border-radius:0}.options{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.55rem}.option{flex:1 0 auto;min-width:3.4rem;min-height:52px;padding:0 .75rem;border-radius:var(--r-md);font-size:1.25rem;font-weight:600;color:var(--pen-ink);background:var(--surface-2)}@media(hover:hover){.option:hover{background:var(--surface-3)}}.option[aria-pressed=true]{color:var(--on-pen);background:var(--pen)}.option--key{flex:0 0 auto;display:inline-grid;place-items:center;width:52px;min-width:52px;padding:0;color:var(--ink-2)}.actionbar__row{display:flex;align-items:stretch;gap:.55rem}.mic{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-width:56px;min-height:56px;padding:0 1rem 0 .85rem;border-radius:var(--r-md);font-size:.9375rem;font-weight:600;color:var(--pen-ink);background:var(--pen-wash);--level: 0}.mic__ring{position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:calc(var(--r-md) + 3px);border:3px solid var(--pen);opacity:0;pointer-events:none}.mic--listening{color:var(--on-pen);background:var(--pen)}.mic--listening .mic__ring{opacity:calc(.2 + var(--level) * .8);transform:scale(calc(1 + var(--level) * .12));transition:transform 60ms linear,opacity 60ms linear}.mic--starting,.mic--working{animation:breathe 1.2s var(--ease-std) infinite}.mic--off{color:var(--ink-3);background:var(--surface-2)}.primary{flex:1;min-height:56px;padding:0 1rem;border-radius:var(--r-md);font-size:1.0625rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.primary--ink{color:var(--on-ink);background:var(--ink)}.primary--quiet{color:var(--ink);background:var(--surface-2)}@media(hover:hover){.primary--quiet:hover:not(:disabled){background:var(--surface-3)}}.primary:disabled{opacity:.55}.wordcard{position:fixed;left:var(--pad);right:var(--pad);bottom:calc(var(--bar) + var(--kb) + .25rem);z-index:9;max-width:calc(40rem - 2 * var(--pad));margin:0 auto;padding:.65rem .9rem .8rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:0 0 0 1px var(--line),var(--shadow-2);animation:lift var(--t-sheet) var(--ease-out)}.wordcard__head{display:flex;align-items:center;gap:.6rem}.wordcard__word{font-size:1.3125rem;font-weight:700;letter-spacing:-.01em}.wordcard__play,.wordcard__close{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;color:var(--ink-2)}.wordcard__play{position:relative;width:36px;height:36px;color:var(--pen-ink);background:var(--pen-wash)}.wordcard__play:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%}@media(hover:hover){.wordcard__close:hover{background:var(--surface-2)}}.wordcard__spacer{flex:1}.wordcard__body{max-height:9.5rem;overflow-y:auto}.wordcard__text{margin:.3rem 0 0;font-size:1rem;line-height:1.5}.wordcard__examples{display:block;margin-top:.2rem;font-size:.875rem;color:var(--ink-2)}.wordcard__source{display:block;margin-top:.15rem;font-size:.75rem;font-weight:500;color:var(--ink-2)}.wordcard__quiet{margin:.3rem 0 0;font-size:.875rem;color:var(--ink-2)}.wordcard__error{margin:.3rem 0 0;font-size:.9375rem;color:var(--flag-ink)}.wordcard__list{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 .8rem;margin:.5rem 0 0;padding:.1rem .15rem 0 .75rem;border-radius:var(--r-sm);font-size:.8125rem;font-weight:600;color:var(--ok-ink);background:var(--ok-wash)}.wordcard__list .note__action{color:var(--ok-ink);font-size:.8125rem;min-height:36px;padding:0 .6rem}.sheet{position:fixed;inset:0 0 var(--kb) 0;z-index:30;display:flex;flex-direction:column;justify-content:flex-end}.sheet__scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--scrim);animation:fade var(--t-sheet) var(--ease-out)}.sheet__panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:40rem;max-height:88%;margin:0 auto;padding-bottom:env(safe-area-inset-bottom);background:var(--bg);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-up);animation:lift var(--t-sheet) var(--ease-out)}.sheet__panel:before{content:"";position:absolute;top:8px;left:50%;width:40px;height:5px;margin-left:-20px;border-radius:3px;background:var(--surface-3)}.sheet__panel:focus{outline:none}@keyframes lift{0%{transform:translateY(1.5rem);opacity:0}}@keyframes fade{0%{opacity:0}}.sheet__head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.4rem var(--pad) .6rem}.sheet__titles{min-width:0}.sheet__title{font-size:1.1875rem;font-weight:700;letter-spacing:-.01em;line-height:1.3}.sheet__eyebrow{margin:.15rem 0 0;font-size:.875rem;color:var(--ink-2)}.sheet__context{margin:0;font-size:.9375rem;font-weight:400;line-height:1.5}.sheet__note{margin:0 0 .6rem;font-size:.875rem;color:var(--ink-2)}.sheet__close{flex:none;min-height:40px;padding:0 .9rem;border-radius:999px;font-size:.875rem;font-weight:600;color:var(--ink);background:var(--surface-2)}.sheet__body{flex:1;min-height:0;padding:.4rem var(--pad) 1.2rem;overflow-y:auto}.sheet__footer{padding:.6rem var(--pad) .8rem;border-top:1px solid var(--line)}.stepmap{display:grid;grid-template-columns:repeat(auto-fill,minmax(3.25rem,1fr));gap:.45rem;margin:0;padding:0;list-style:none}.stepmap__tile{position:relative;width:100%;min-height:3.25rem;border-radius:var(--r-md);font-size:.9375rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);background:var(--surface);box-shadow:var(--shadow-1)}.stepmap__tile--partial,.stepmap__tile--answered,.stepmap__tile--pending{color:var(--pen-ink);background:var(--pen-wash);box-shadow:none}.stepmap__tile--right{color:var(--c-ink);background:var(--c);box-shadow:none}.stepmap__tile--wrong{color:var(--on-pen);background:var(--flag);box-shadow:none}.stepmap__tile--current{box-shadow:0 0 0 2px var(--bg),0 0 0 4.5px var(--ink)}.chat{display:flex;flex-direction:column;gap:.6rem}.chat__starters{display:flex;flex-wrap:wrap;gap:.45rem}.chip-q{min-height:44px;padding:.45rem .95rem;border-radius:999px;font-size:.9375rem;font-weight:500;text-align:left;color:var(--pen-ink);background:var(--pen-wash)}.msg{max-width:88%;padding:.6rem .9rem;font-size:.9875rem;line-height:1.55;white-space:pre-wrap;border-radius:18px}.msg--user{align-self:flex-end;color:var(--on-pen);background:var(--pen);border-bottom-right-radius:6px}.msg--assistant{align-self:flex-start;background:var(--surface);box-shadow:var(--shadow-1);border-bottom-left-radius:6px}.msg--streaming:after{content:"";display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:var(--pen);animation:breathe 1s var(--ease-std) infinite}.chat__form{display:flex;align-items:flex-end;gap:.5rem}.chat__input{flex:1;max-height:8rem;padding:.7rem .9rem;font-size:1rem;line-height:1.45;background:var(--surface);border:none;border-radius:var(--r-md);box-shadow:inset 0 0 0 1.5px var(--line);resize:none}.chat__input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--pen)}.today__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:calc(1.1rem + env(safe-area-inset-top)) 0 .9rem}.today__title{font-size:1.875rem;font-weight:700;letter-spacing:-.025em;line-height:1.15}.today__done{margin-top:.15rem;font-size:.9375rem;color:var(--ink-2)}.streak{flex:none;display:inline-flex;align-items:center;gap:.35rem;height:38px;padding:0 .85rem 0 .65rem;border-radius:999px;font-size:.9375rem;font-weight:700;font-variant-numeric:tabular-nums;background:var(--surface);box-shadow:var(--shadow-1)}.streak .icon{color:var(--amber)}.status{margin:0 0 .9rem;padding:.7rem .9rem;border-radius:var(--r-md);font-size:.9375rem;line-height:1.5;color:var(--ink-2);background:var(--surface-2)}.resume{display:block;width:100%;padding:1.05rem 1.1rem 1.1rem;text-align:left;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-2)}.resume__where{display:flex;align-items:center;gap:.6rem;font-size:.9375rem;color:var(--ink-2)}.resume__where b{min-width:0;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resume__where span{flex:none}.preview{display:block;margin:.85rem 0 .15rem;font-size:1.375rem;font-weight:450;line-height:1.5;letter-spacing:-.01em}.preview__written{margin:0 .1em;padding:0 .25em;border-radius:7px;font-weight:600;color:var(--pen-ink);background:var(--pen-wash)}.preview__written--wrong{color:var(--flag-ink);background:var(--flag-wash);text-decoration:line-through}.preview__gap{display:inline-block;width:2.3em;height:1.15em;margin:0 .1em;vertical-align:-.2em;border-radius:7px;background:var(--surface-2);box-shadow:inset 0 -2px color-mix(in oklab,var(--ink) 15%,transparent)}.resume .line{margin-top:.9rem}.resume__go{display:flex;align-items:center;justify-content:center;margin-top:1rem;min-height:52px;border-radius:var(--r-md);font-size:1.0625rem;font-weight:600;color:var(--on-ink);background:var(--ink)}.resume--compact{display:flex;align-items:center;gap:.8rem;margin-bottom:1rem;padding:.85rem 1rem}.resume__label{display:block;font-size:1.0625rem;font-weight:700}.resume--compact .resume__where{display:block}.due-list{margin-top:1.6rem}.due-list__title{margin-bottom:.6rem;font-size:1.25rem;font-weight:700;letter-spacing:-.015em}.tile-row{display:flex;align-items:center;gap:.85rem;width:100%;padding:.85rem .9rem;text-align:left;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.tile-row+.tile-row{margin-top:.5rem}@media(hover:hover){.tile-row:hover{box-shadow:var(--shadow-2)}}.tile-row__icon{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:13px}.tile-row__icon--pen{color:var(--pen-ink);background:var(--pen-wash)}.tile-row__icon--ok{color:var(--ok-ink);background:var(--ok-wash)}.tile-row__icon--flag{color:var(--flag-ink);background:var(--flag-wash)}.tile-row__text{flex:1;min-width:0}.tile-row>.icon{color:var(--ink-3)}.tile-row__title{display:block;font-weight:600;line-height:1.3}.tile-row__sub{display:block;font-size:.875rem;color:var(--ink-2)}.count{flex:none;display:inline-grid;place-items:center;min-width:32px;height:28px;padding:0 9px;border-radius:999px;font-size:.9375rem;font-weight:700;font-variant-numeric:tabular-nums}.count--pen{color:var(--on-pen);background:var(--pen)}.count--ok{color:var(--on-pen);background:var(--ok)}.count--flag{color:var(--flag-ink);background:var(--flag-wash)}.count--quiet{color:var(--ink-2);background:var(--surface-2)}.jump{display:flex;gap:.5rem}.jump__label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.jump__field{position:relative;flex:1;display:flex;align-items:center}.jump__field .icon{position:absolute;left:.9rem;color:var(--ink-3);pointer-events:none}.jump__input{width:100%;min-height:50px;padding:0 1rem 0 2.75rem;font-size:1.0625rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--ink);background:var(--surface);border:none;border-radius:var(--r-md);box-shadow:inset 0 0 0 1.5px var(--line),var(--shadow-1);transition:box-shadow var(--t-state) var(--ease-std)}.jump__input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--pen),var(--shadow-1)}.jump__input--error,.jump__input--error:focus{box-shadow:inset 0 0 0 2px var(--flag),var(--shadow-1)}.jump__input::placeholder{color:var(--ink-3);font-weight:400}.jump__go{flex:none;min-height:50px;padding:0 1.15rem;border-radius:var(--r-md);font-size:1rem;font-weight:600;color:var(--on-ink);background:var(--ink)}.jump__go:disabled{opacity:.35}.jump__error{margin:.45rem 0 0;font-size:.9375rem;color:var(--flag-ink)}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:.9rem;padding:4px;border-radius:var(--r-md);background:var(--surface-2)}.segmented__item{min-height:40px;border-radius:11px;font-size:.9375rem;font-weight:600;color:var(--ink-2);transition:background-color var(--t-state) var(--ease-std),color var(--t-state) var(--ease-std),box-shadow var(--t-state) var(--ease-std)}.segmented__item[aria-selected=true]{color:var(--ink);background:var(--surface);box-shadow:var(--shadow-1)}.bookmap-view__map{margin-top:1rem;padding:.5rem;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-1)}.bookmap{display:block;width:100%;height:auto;overflow:visible}.bookmap__group{cursor:pointer;outline:none;transition:opacity var(--t-state) var(--ease-std)}.bookmap__group--dim{opacity:.4}.bookmap__hit{stroke:transparent;stroke-width:24;stroke-linecap:round}.bookmap__hit-badge{fill:transparent}.bookmap__track,.bookmap__ring{fill:none;stroke:color-mix(in oklab,var(--c) 30%,var(--surface));stroke-width:6;stroke-linecap:round}.bookmap__tick{stroke:color-mix(in oklab,var(--c) 70%,var(--surface));stroke-linecap:butt}.bookmap__tick--right{stroke:var(--c)}.bookmap__tick--wrong{stroke:var(--flag)}.bookmap__stop{fill:var(--surface);stroke:color-mix(in oklab,var(--c) 50%,var(--surface));stroke-width:2.5}.bookmap__stop--right{fill:var(--c);stroke:var(--surface)}.bookmap__stop--wrong{fill:var(--flag);stroke:var(--surface)}.bookmap__here{fill:var(--surface);stroke:var(--c);stroke-width:4}.bookmap__badge{fill:var(--c);transition:stroke-width var(--t-press) var(--ease-out)}.bookmap__badge-n{fill:var(--c-ink);font-size:12px;font-weight:700;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-variant-numeric:tabular-nums}.bookmap__group:focus-visible .bookmap__badge,.bookmap__group[aria-pressed=true] .bookmap__badge{stroke:var(--ink);stroke-width:3}@media(prefers-color-scheme:dark){.bookmap__group>*{--c: color-mix(in oklab, var(--c-line, currentColor) 72%, white)}.bookmap__badge{fill:var(--c-line)}}.bookmap-view__card{display:grid;gap:.75rem;margin-top:.75rem;padding:.95rem 1rem 1rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1);animation:lift var(--t-sheet) var(--ease-out)}.bookmap-view__card .line{margin-left:2.45rem;height:16px}.bookmap-view__card .line__track,.bookmap-view__card .line__done{top:6px}.bookmap-view__hint{margin-top:.8rem;font-size:.9375rem;text-align:center;color:var(--ink-2)}.booklines{list-style:none;margin:1rem 0 0;padding:.25rem 1rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.booklines li+li{border-top:1px solid var(--line)}.bookline{display:block;width:100%;padding:.85rem 0 .8rem;text-align:left;border-radius:var(--r-sm)}.bookline__head{display:flex;align-items:center;gap:.7rem}.bookline__title{flex:1;min-width:0;font-size:1rem;font-weight:600;line-height:1.3}.bookline__count{flex:none;font-size:.875rem;color:var(--ink-2);font-variant-numeric:tabular-nums}.bookline__count--done{color:var(--ok-ink);font-weight:600}.bookline .line{margin:.55rem 0 0 2.45rem;height:16px}.bookline .line__track,.bookline .line__done{top:6px}@media(hover:hover){.bookline:hover .bookline__title{color:var(--pen-ink)}}.section-head{padding:.4rem 0}.section-head__title{display:flex;align-items:center;gap:.7rem;font-size:1.625rem;font-weight:700;line-height:1.2;letter-spacing:-.02em}.section-head__title .badge{width:34px;height:34px;font-size:.9375rem}.section-head__meta{margin:.35rem 0 0;font-size:.9375rem;color:var(--ink-2)}.group{margin-top:1.4rem}.group__title{margin:0 0 .25rem;padding:.55rem .85rem;border-radius:var(--r-md);font-size:.9375rem;font-weight:500;line-height:1.45;color:var(--ink-2);background:var(--surface-2)}.stations{position:relative;list-style:none;margin:0;padding:0}.stations:before{content:"";position:absolute;top:0;bottom:0;left:13px;width:4px;border-radius:2px;background:color-mix(in oklab,var(--c) 30%,var(--bg))}.station__btn{position:relative;display:grid;grid-template-columns:30px 2.6rem 1fr auto;align-items:start;gap:0 .5rem;width:100%;padding:.85rem 0;text-align:left;border-radius:var(--r-sm)}.station__dot{position:relative;z-index:1;justify-self:center;margin-top:.3em;width:14px;height:14px;border-radius:50%;background:var(--bg);box-shadow:inset 0 0 0 3px color-mix(in oklab,var(--c) 45%,var(--bg))}.station--started .station__dot{background:color-mix(in oklab,var(--c) 35%,var(--bg));box-shadow:inset 0 0 0 3px var(--c)}.station--solved .station__dot{background:var(--c);box-shadow:none}.station--wrong .station__dot{background:var(--flag);box-shadow:0 0 0 2.5px var(--bg)}.station--here .station__dot{width:20px;height:20px;background:var(--bg);box-shadow:inset 0 0 0 5px var(--c),0 0 0 4px color-mix(in oklab,var(--c) 20%,transparent)}.station__n{font-size:1rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.station__text{min-width:0;font-size:1rem;line-height:1.45}.station__sub{display:block;margin-top:.15rem;font-size:.8125rem;color:var(--ink-2)}.station__meter{font-size:.875rem;font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}.station__meter--done{color:var(--ok-ink)}.station__meter--wrong{color:var(--flag-ink)}@media(hover:hover){.station__btn:hover .station__text{color:var(--pen-ink)}}.rows{list-style:none;margin:0;padding:0}.sheetview__summary{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin:.9rem 0 0;font-size:.9375rem;font-weight:500;color:var(--ink-2)}.sheetview__right{color:var(--ok-ink)}.sheetview__wrong{color:var(--flag-ink)}.sheetview__actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}.written{list-style:none;margin:1rem 0 0;padding:.2rem 1rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.written li+li{border-top:1px solid var(--line)}.written__item{display:grid;grid-template-columns:2rem 1fr 1.5rem;gap:.4rem;width:100%;padding:.85rem 0;text-align:left;font-size:1.0625rem;line-height:1.6}@media(hover:hover){.written__item:hover .written__body{color:var(--pen-ink)}}.written__n{padding-top:.15rem;font-size:.9375rem;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}.written__body{min-width:0}.written__state{font-size:.9375rem;font-weight:700;text-align:right;color:var(--ink-3)}.written__item--right .written__state{color:var(--ok)}.written__item--wrong .written__state{color:var(--flag)}.written__gap{color:var(--ink-3);letter-spacing:.05em}.written__empty{color:var(--ink-3)}.written__slot{padding:0 .2em;border-radius:6px;font-weight:600;color:var(--pen-ink);background:var(--pen-wash)}.written__slot--checked{color:var(--ok-ink);background:var(--ok-wash)}.written__slot--wrong{color:var(--flag-ink);background:var(--flag-wash)}.written__slot--wrong s{text-decoration-thickness:1.5px}.written__fix{font-weight:700;color:var(--flag-ink)}.written__source{display:block}.written__answer{display:block;margin-top:.15rem;font-weight:500;color:var(--pen-ink)}.written__answer--wrong{color:var(--ink-2)}.mistakes{list-style:none;margin:.6rem 0 0;padding:0}.mistakes li+li{margin-top:.5rem}.mistake{display:block;width:100%;padding:.85rem 1rem;text-align:left;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1);transition:box-shadow var(--t-state) var(--ease-std)}@media(hover:hover){.mistake:hover{box-shadow:var(--shadow-2)}}.mistake__where{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.25rem .6rem;font-size:.875rem;font-weight:600;color:var(--ink)}.mistake__when{font-weight:500;color:var(--ink-2)}.mistake__when--due{padding:.1rem .55rem;border-radius:999px;color:var(--pen-ink);background:var(--pen-wash)}.mistake__text{display:block;margin-top:.35rem;font-size:1.0625rem;line-height:1.6}.marked{color:inherit;background:none;text-decoration:underline;text-decoration-color:var(--pen);text-decoration-thickness:2.5px;text-underline-offset:.22em}.sentence{margin-top:.85rem;padding:.5rem 1rem .85rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1);animation:lift var(--t-sheet) var(--ease-out)}.sentence__head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.sentence__label{font-size:.9375rem;font-weight:700}.sentence__text{font-size:1.0625rem;line-height:1.55}.sentence__words{display:flex;flex-wrap:wrap;gap:.45rem;margin:.75rem 0 0;padding:0;list-style:none}.sentence__hint{margin:.6rem 0 0;font-size:.8125rem;color:var(--ink-2)}.chipword{display:inline-flex;align-items:center;gap:.45rem;min-height:44px;padding:.3rem .65rem .3rem .85rem;border-radius:999px;font-size:.9375rem;line-height:1.3;text-align:left;background:var(--surface-2)}@media(hover:hover){.chipword:hover{background:var(--surface-3)}}.chipword [lang=en]{font-weight:600}.chipword__ru{color:var(--ink-2)}.chipword__mark{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;font-size:.875rem;font-weight:700;color:var(--ink-2);background:var(--surface)}.chipword--listed{background:var(--ok-wash)}.chipword--listed .chipword__ru{color:var(--ok-ink)}.chipword--listed .chipword__mark{color:var(--on-pen);background:var(--ok)}.drill{position:relative;padding:1.4rem 0 1rem}.flip{display:block;width:100%;margin-top:.9rem;padding:0;text-align:left;perspective:1400px;border-radius:var(--r-xl)}.flip__inner{position:relative;display:grid;transform-style:preserve-3d;transition:transform .52s var(--ease-out)}.flip--on .flip__inner{transform:rotateY(180deg)}.flip__face{grid-area:1 / 1;display:flex;flex-direction:column;gap:.55rem;min-height:15.5rem;padding:1.4rem 1.25rem 1.3rem;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-2);backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip__front{align-items:center;justify-content:center;text-align:center}.flip__back{transform:rotateY(180deg)}.flip__hint{font-size:.9375rem;color:var(--ink-2)}.flip__word{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.flip__met{display:flex;flex-direction:column;gap:.1rem;margin-top:.4rem;padding-top:.6rem;font-size:1.0625rem;line-height:1.5;border-top:1px solid var(--line)}.flip__listen{position:absolute;top:.95rem;right:0}.drill__label{font-size:.9375rem;font-weight:600;color:var(--ink-2)}.drill__wordline{display:flex;align-items:center;gap:.75rem;margin-top:.35rem}.drill__word{min-width:0;font-size:2.5rem;font-weight:700;line-height:1.1;letter-spacing:-.03em;overflow-wrap:anywhere}.drill__meaning{margin:.4rem 0 0;font-size:1.3125rem;line-height:1.4}.drill__met{display:flex;flex-direction:column;gap:.1rem;margin:1.1rem 0 0;padding:.75rem .9rem;font-size:1.0625rem;line-height:1.5;background:var(--surface);border-radius:var(--r-md);box-shadow:var(--shadow-1)}.drill__small{font-size:.8125rem;font-weight:500;color:var(--ink-2)}.drill__ru{font-size:.9375rem;color:var(--ink-2)}.drill__sentence{margin:.9rem 0 .2rem;font-size:1.4375rem;font-weight:450;line-height:1.5;letter-spacing:-.01em}.drill__options{display:grid;gap:.5rem;margin-top:1.3rem}.drill__options--short{grid-template-columns:1fr 1fr}.drill__option{min-height:56px;padding:.6rem 1rem;border-radius:var(--r-md);font-size:1.0625rem;font-weight:500;line-height:1.35;text-align:left;background:var(--surface);box-shadow:var(--shadow-1)}@media(hover:hover){.drill__option:hover:not(:disabled){box-shadow:inset 0 0 0 1.5px var(--pen),var(--shadow-1)}}.drill__option:disabled{cursor:default}.drill__option--right{color:var(--on-pen);background:var(--ok);box-shadow:none}.drill__option--wrong{color:var(--flag-ink);background:var(--flag-wash);box-shadow:inset 0 0 0 2px var(--flag)}.drill__input{display:block;width:100%;min-height:56px;margin-top:1.3rem;padding:0 1rem;font-size:1.375rem;font-weight:600;color:var(--pen-ink);background:var(--surface);border:none;border-radius:var(--r-md);box-shadow:inset 0 0 0 1.5px var(--line),var(--shadow-1);transition:box-shadow var(--t-state) var(--ease-std)}.drill__input:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--pen),var(--shadow-1)}.drill__input::placeholder{font-size:1rem;font-weight:400;color:var(--ink-3)}.drill__input--right{color:var(--ok-ink);background:var(--ok-wash);box-shadow:none}.drill__input--near,.drill__input--wrong{color:var(--flag-ink);background:var(--flag-wash);box-shadow:inset 0 0 0 2px var(--flag)}.drill__verdict{margin:.9rem 0 0;padding:.7rem .9rem;border-radius:var(--r-md);font-size:1.0625rem;font-weight:600;line-height:1.45}.drill__verdict--right{color:var(--ok-ink);background:var(--ok-wash)}.drill__verdict--near,.drill__verdict--wrong{color:var(--flag-ink);background:var(--flag-wash)}.drill__verdict .drill__ru{font-weight:400}.vocab__head{padding:calc(1.1rem + env(safe-area-inset-top)) 0 .2rem}.vocab__title{font-size:1.875rem;font-weight:700;letter-spacing:-.025em;line-height:1.15}.vocab__count{margin-top:.15rem;font-size:.9375rem;color:var(--ink-2)}.vocab__lede{margin:.4rem 0 0;font-size:1rem;line-height:1.5;color:var(--ink-2)}.vocab__study{margin-top:1rem;width:100%}.vocab__group{margin-top:1.6rem}.vocab__group-title{margin:0 0 .6rem;font-size:1.125rem;font-weight:700;letter-spacing:-.01em}.vocab__list{margin:0;padding:.15rem 1rem;list-style:none;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.vocab__row{padding:.85rem 0 .2rem}.vocab__row+.vocab__row{border-top:1px solid var(--line)}.vocab__pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center}.vocab__en{display:flex;align-items:center;gap:.45rem;min-width:0;padding-right:.8rem;font-size:1.125rem;font-weight:700;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;border-right:1px solid var(--line)}.vocab__en b{min-width:0}.vocab__play{flex:none;width:32px;height:32px}.vocab__ru{padding-left:.8rem;font-size:1rem;line-height:1.45}.vocab__met{margin:.45rem 0 0;font-size:.9375rem;line-height:1.5;color:var(--ink-2)}.vocab__meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 .9rem}.vocab__where{min-height:44px;font-size:.875rem;font-weight:600;color:var(--pen-ink)}.vocab__when{font-size:.875rem;color:var(--ink-2)}.vocab__spacer{flex:1}.vocab__remove,.vocab__meta .vocab__remove{color:var(--flag-ink)}.vocab__row--known .vocab__en,.vocab__row--known .vocab__ru{color:var(--ink-2)}.vocab__foot{margin:1.2rem 0 0;font-size:.875rem;color:var(--ink-2)}.finish{padding:1.6rem 0 1rem}.finish__title{font-size:1.875rem;font-weight:700;letter-spacing:-.025em;line-height:1.15}.finish__sub{margin-top:.3rem;font-size:1rem;color:var(--ink-2)}.finish__line{margin-top:1.6rem}.finish__score{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:.6rem;margin:1.4rem 0 0}.finish__num{display:flex;flex-direction:column-reverse;justify-content:flex-end;padding:.8rem 1rem .85rem;border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);animation:rise-in .42s var(--ease-out) both;animation-delay:.65s}.finish__num+.finish__num{animation-delay:.72s}.finish__num dt{font-size:.875rem;line-height:1.3;color:var(--ink-2)}.finish__num dd{margin:0 0 .15rem;font-size:2rem;font-weight:700;line-height:1.15;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.finish__num--ok dd{color:var(--ok-ink)}.finish__num--flag dd{color:var(--flag-ink)}.finish__actions{display:grid;gap:.5rem;margin-top:1.6rem;animation:rise-in .42s var(--ease-out) both;animation-delay:.8s}.finish__next{justify-content:space-between}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}.done{padding:3rem 0 1rem}.done__title{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}.done__text{margin:.6rem 0 0;font-size:1.0625rem;line-height:1.55;color:var(--ink-2)}.done__actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.4rem}.level-chip{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 1rem;border-radius:999px;font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--pen-ink);background:var(--pen-wash)}.level-chip__label{font-size:.8125rem;font-weight:500}.levels__lede{margin:-.2rem 0 .9rem;font-size:.9375rem;color:var(--ink-2)}.levels__list,.topics,.memory__list,.talk-end__learned{list-style:none;margin:0;padding:0}.levels__list,.topics{display:grid;gap:.5rem}.level,.topic{display:flex;align-items:center;width:100%;text-align:left;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1)}.level{gap:.9rem;padding:.8rem .9rem}.level__id{flex:none;display:grid;place-items:center;width:46px;height:46px;border-radius:13px;font-size:1.0625rem;font-weight:750;letter-spacing:-.01em;color:var(--pen-ink);background:var(--pen-wash);transition:color var(--t-state) var(--ease-std),background-color var(--t-state) var(--ease-std)}.level__body,.topic__text{flex:1;min-width:0;display:grid;gap:.15rem}.level__name{font-weight:600;line-height:1.3}.level__can{font-weight:450;color:var(--ink-2)}.level__sample{font-size:.9375rem;line-height:1.4;color:var(--ink-2)}.level--on{box-shadow:inset 0 0 0 2px var(--pen),var(--shadow-1)}.level--on .level__id{color:var(--on-pen);background:var(--pen)}.topic{gap:.75rem;padding:.85rem .8rem .85rem 1rem}.topic__title{font-size:1.0625rem;font-weight:650;line-height:1.3}.topic__why{font-size:.875rem;line-height:1.4;color:var(--ink-2);text-wrap:pretty}.topic__tag{justify-self:start;margin-bottom:.2rem;padding:.15rem .6rem;border-radius:999px;font-size:.75rem;font-weight:650;color:var(--pen-ink);background:var(--pen-wash)}.topic>.icon{color:var(--ink-3)}@media(hover:hover){.level:hover,.topic:hover{box-shadow:var(--shadow-2)}.level--on:hover{box-shadow:inset 0 0 0 2px var(--pen),var(--shadow-2)}}.topic-own{display:flex;gap:.5rem;margin-top:.75rem}.topic-own__input{flex:1;min-width:0;padding-left:1rem;font-variant-numeric:normal}.memory,.past{margin-top:2rem}.memory__lede{margin:-.2rem 0 .75rem;font-size:.9375rem;color:var(--ink-2)}.memory__list{display:flex;flex-wrap:wrap;gap:.4rem}.memory__item{display:inline-flex;align-items:center;max-width:100%;padding-left:.8rem;border-radius:var(--r-md);font-size:.9375rem;background:var(--surface);box-shadow:inset 0 0 0 1px var(--line)}.memory__item--thread{color:var(--pen-ink);background:var(--pen-wash);box-shadow:none}.memory__text{padding:.4rem 0;line-height:1.35}.memory__forget{position:relative;flex:none;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;color:var(--ink-3)}.memory__item--thread .memory__forget{color:var(--pen-ink)}.memory__forget:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px}@media(hover:hover){.memory__forget:hover{color:var(--ink)}}.past .tile-row__sub{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.level-step{display:inline-flex;align-items:center;padding:2px;border-radius:999px;background:var(--surface-2)}.level-step__btn{min-height:40px;padding:0 .8rem;border-radius:999px;font-size:.875rem;font-weight:600;color:var(--ink-2);transition:color var(--t-state) var(--ease-std),background-color var(--t-state) var(--ease-std)}.level-step__btn:disabled{color:var(--ink-3);opacity:.55}@media(hover:hover){.level-step__btn:hover:not(:disabled){color:var(--ink);background:var(--surface)}}.level-step__now{min-width:2.4rem;text-align:center;font-weight:750;font-variant-numeric:tabular-nums;color:var(--pen-ink)}.convo__level{margin-right:.6rem}.convo__topic{padding:.3rem 0 .2rem;font-size:1.625rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}.convo__lede{margin-top:.2rem;font-size:.9375rem;color:var(--ink-2)}.convo__log{list-style:none;margin:1.1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.8rem}.turn{display:flex;flex-direction:column;animation:rise-in var(--t-sheet) var(--ease-out)}.turn--partner{align-items:flex-start}.turn--mine{align-items:flex-end}.msg--partner{display:flex;align-items:flex-end;gap:.55rem;max-width:92%;padding:.75rem .6rem .75rem 1rem;font-size:1.125rem;line-height:1.5;letter-spacing:-.005em;white-space:normal;background:var(--surface);border-radius:20px 20px 20px 6px;box-shadow:var(--shadow-1)}.msg__text{flex:1;min-width:0}.msg--partner .w{cursor:pointer;border-radius:4px}.msg__play{position:relative;flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;color:var(--pen-ink);background:var(--pen-wash)}.msg__play:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%}.msg__play--loading{animation:breathe 1.2s var(--ease-std) infinite}.msg--mine{max-width:85%;padding:.65rem .95rem;font-size:1.0625rem;line-height:1.5;color:var(--ink);background:var(--pen-wash);border-radius:20px 20px 6px}.msg__said{display:inline-block;margin-right:.35rem;vertical-align:-2px;color:var(--pen-ink)}.slip{text-decoration:underline wavy var(--flag);text-decoration-thickness:1.5px;text-decoration-skip-ink:none;text-underline-offset:.28em}.fix{max-width:85%;margin-top:.4rem;padding:0 .35rem;animation:rise-in var(--t-sheet) var(--ease-out)}.fix__line{font-size:.9875rem;line-height:1.55}.fix__label{font-size:.8125rem;font-weight:650;color:var(--ok-ink)}.fix__in{font-weight:650;color:var(--ok-ink);background:var(--ok-wash);border-radius:4px;box-shadow:0 0 0 2px var(--ok-wash)}.fix__note{margin-top:.15rem;font-size:.875rem;color:var(--ink-2)}.msg--typing{display:inline-flex;align-items:center;gap:5px;padding:1rem 1.1rem}.msg--typing span{width:7px;height:7px;border-radius:50%;background:var(--ink-3);animation:typing 1.2s var(--ease-std) infinite}.msg--typing span:nth-child(2){animation-delay:.15s}.msg--typing span:nth-child(3){animation-delay:.3s}@keyframes typing{0%,60%,to{opacity:.35;transform:none}30%{opacity:1;transform:translateY(-3px)}}.convo__error{display:flex;flex-wrap:wrap;align-items:center;gap:0 1rem;margin-top:.9rem;padding:.3rem .9rem;border-radius:var(--r-md);font-size:.9375rem;color:var(--flag-ink);background:var(--flag-wash)}.convo__error>span{padding:.45rem 0}.convo__error .note__action{color:var(--flag-ink)}.talk-end{margin-top:1.6rem;padding:1.1rem 1.1rem 1.2rem;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-1);animation:rise-in var(--t-sheet) var(--ease-out)}.talk-end__title{font-size:1.25rem;font-weight:700;letter-spacing:-.015em}.talk-end__text{margin-top:.3rem;color:var(--ink-2)}.talk-end__sub{margin:1.15rem 0 .5rem;font-size:.9375rem;font-weight:650}.talk-end__learned{display:flex;flex-wrap:wrap;gap:.4rem}.talk-end__learned li{padding:.35rem .75rem;border-radius:var(--r-md);font-size:.9375rem;color:var(--pen-ink);background:var(--pen-wash)}.talk-end__mistakes{display:grid;gap:.3rem;margin:0;padding-left:1.15rem;font-size:.9375rem}.talk-end__mistakes li::marker{color:var(--flag)}.talk-end .topic{box-shadow:inset 0 0 0 1px var(--line)}.talk-end__back{width:100%;margin-top:1.2rem}.chatbar__hints{display:grid;gap:.4rem;margin-bottom:.6rem}.chatbar__hint{min-height:44px;padding:.5rem .9rem;border-radius:var(--r-md);font-size:.9875rem;line-height:1.4;text-align:left;color:var(--pen-ink);background:var(--pen-wash);animation:rise-in var(--t-state) var(--ease-out)}.chatbar__row{display:flex;align-items:center;gap:.5rem}.chatbar__mic{width:52px;min-width:52px;min-height:52px;padding:0}.chatbar__mic:disabled{opacity:.45}.chatbar__input{flex:1;min-width:0;min-height:52px;padding:0 1rem;font-size:1.0625rem;color:var(--ink);background:var(--surface-2);border:none;border-radius:var(--r-md);transition:box-shadow var(--t-state) var(--ease-std),background-color var(--t-state) var(--ease-std)}.chatbar__input:focus{outline:none;background:var(--surface);box-shadow:inset 0 0 0 2px var(--pen)}.chatbar__input::placeholder{color:var(--ink-3)}.chatbar__send{flex:none;display:grid;place-items:center;width:52px;height:52px;border-radius:var(--r-md);color:var(--on-ink);background:var(--ink)}.chatbar__send:disabled{color:var(--ink-3);background:var(--surface-2)}.chatbar__tools{display:flex;justify-content:space-between;margin-top:.1rem;padding:0 .3rem}.chatbar__tools .note__action:disabled{color:var(--ink-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:52px;padding:0 1.25rem;border-radius:var(--r-md);font-size:1rem;font-weight:600;white-space:nowrap;color:var(--on-ink);background:var(--ink)}.btn--ghost{color:var(--ink);background:var(--surface-2)}@media(hover:hover){.btn--ghost:hover:not(:disabled){background:var(--surface-3)}}.btn:disabled{opacity:.4}.empty-state{margin-top:1.4rem;padding:1.6rem 1.2rem 1.4rem;text-align:center;background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-1)}.empty-state__art{display:block;width:200px;max-width:70%;margin:0 auto .6rem}.empty-state__title{font-size:1.25rem;font-weight:700;letter-spacing:-.015em}.empty-state__text{margin:.4rem auto 0;max-width:30ch;font-size:.9875rem;line-height:1.55;color:var(--ink-2)}.empty-state__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.1rem}.art-line{fill:none;stroke:var(--c);stroke-width:6;stroke-linecap:round;stroke-linejoin:round}.art-line--soft{stroke:color-mix(in oklab,var(--c) 35%,var(--surface))}.art-stop{fill:var(--surface);stroke:color-mix(in oklab,var(--c) 45%,var(--surface));stroke-width:3.5}.art-stop--done{fill:var(--c);stroke:var(--surface);stroke-width:2.5}.art-ring{fill:var(--surface);stroke:var(--c);stroke-width:7}.art-buffer{fill:none;stroke:var(--ink-3);stroke-width:5;stroke-linecap:round}.art-card{fill:var(--surface);stroke:var(--line-strong);stroke-width:2}.art-card--back{fill:var(--pen-wash);stroke:none}.art-text{fill:none;stroke:var(--pen);stroke-width:5;stroke-linecap:round}.art-text--flag{stroke:var(--flag)}.art-text--ok{stroke:var(--ok)}.art-badge{fill:var(--c)}.art-badge-n{fill:#fff;font:700 12px var(--font);text-anchor:middle;dominant-baseline:central}.art-word{fill:var(--surface-3)}.art-gap{fill:var(--pen-wash);stroke:var(--pen);stroke-width:2.5}.art-return{fill:none;stroke:var(--ink-3);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}.onboard{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:end center;background:var(--scrim);animation:fade var(--t-sheet) var(--ease-out)}@media(min-width:40rem){.onboard{place-items:center}}.onboard__panel:focus{outline:none}.onboard__panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:40rem;padding:1.2rem var(--pad) calc(1.2rem + env(safe-area-inset-bottom));background:var(--bg);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-up);animation:lift var(--t-sheet) var(--ease-out)}@media(min-width:40rem){.onboard__panel{width:min(32rem,calc(100% - 2rem));border-radius:var(--r-xl)}}.onboard__skip{align-self:flex-end;min-height:40px;padding:0 .9rem;border-radius:999px;font-size:.875rem;font-weight:600;color:var(--ink-2);background:var(--surface-2)}.onboard__slide{padding:.4rem 0 0;animation:step-in .3s var(--ease-out)}.onboard__art{display:block;width:100%;max-width:22rem;margin:.4rem auto 1.1rem;padding:1rem;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-1);box-sizing:border-box}.onboard__title{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.onboard__text{margin-top:.5rem;font-size:1.0625rem;line-height:1.55;color:var(--ink-2)}.onboard__foot{display:flex;align-items:center;gap:1rem;margin-top:1.4rem}.onboard__dots{flex:1;max-width:7rem}.onboard__foot .btn{flex:1}.empty{margin-top:1rem;padding:1.6rem 1.2rem;border-radius:var(--r-lg);font-size:1rem;line-height:1.55;color:var(--ink-2);text-align:center;background:var(--surface-2)}.notice{margin:1rem 0;padding:.8rem 1rem;border-radius:var(--r-md);font-size:.9375rem;line-height:1.55;color:var(--ink-2);background:var(--surface-2)}.notice-toast{position:fixed;left:50%;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:20;display:flex;align-items:center;gap:.4rem;width:min(calc(100% - 2 * var(--pad)),36rem);padding:.4rem .4rem .4rem 1rem;border-radius:var(--r-md);font-size:.9375rem;font-weight:500;color:var(--on-ink);background:var(--ink);box-shadow:var(--shadow-2);transform:translate(-50%);animation:rise var(--t-sheet) var(--ease-out)}.app-root:has(.app--exercise)~.notice-toast{bottom:calc(var(--bar) + var(--kb) + env(safe-area-inset-bottom) - .5rem)}.app-root:has(.app--tabs)~.notice-toast{bottom:calc(var(--tabs) + .75rem)}.notice-toast span{flex:1}.notice-toast__open,.notice-toast__close{min-height:40px;padding:0 .7rem;border-radius:var(--r-sm);font-weight:600;color:inherit}.notice-toast__open{background:color-mix(in oklab,var(--on-ink) 14%,transparent)}@keyframes rise{0%{opacity:0;transform:translate(-50%,.6rem)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
