@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAa0ABQAAAAADOwAAAZHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhYbbhwoP0hWQVJtP01WQVJGBmA/U1RBVIEcAGQvXBEICoMkgmcLFgAwhEwBNgIkAyYEIAWGXAdiDAcbOgtRlHLSRcD8TEzkdoghPRuspKefbVnJIM5yRfA8vZv9uTNJSCZY21Scrigr6qyJ/C3sE1OFKuVP3e+lxUTbYio1zb/kFdk2bufY2BlhWERRBrcDUBhB5GEpd2Cy+MDxqf9zLPX+XVsk5r+s50d6IpWLatqbdT6f2MAikiOKQocbjya2QT0DqPDX4R0jQBgAUAiCRhDA0EkvYeLk9X3I2bEWI8jBAihIANm+kUWQBgggWChcBBdFhXlAUgOCAgBA0AgKjUJ8HKvjddFCKSgAVklEBYAeEJgCQJH0qB3B+neDg4sAA4hAD0AVIEAA0IACJGeaUjMIIIhBUE/zNABjTQMBwEVRcwcYBUCObLERABAgjAA1M/ZSa9hSi4OlpsnZ2KBOVUsAZlRGl1W0NZ6gSwhQPIAFs7YFL0QS91vRQgdgx2VDAnIegKpQvwAJIoLgooBAGtCJcHizg0TDiz8vhPgIcVXaDJu37ZyDAIjFy4AAiC1JAA0olJwN6nFAACQk/zfQVUuA3t5ELKMT9hpBSRj+HBSggYCIAIEkUoC4PCIQIWHGA8+IStxf0PW15ntP22gc+Wo+BLyQAHECQiAVd+c3Ba8gZ4NOACBaLOhsbIMkAXEmuHsSAvkf4oJaAogH6nEQAzoBIEihUAwAA0AACAObAGcANYAAABaqgMmpWAhiiVyrvNyqFV8tMQ5Iyq6r9Lf7W82i8ILl2cv8zbfdJ5lnPzSnvt/XXPfRR/5pH3xA+u5uS0798EPJ3Fft33w36Wc+8E/7aIB/9fvvb1pE9erNXLB9mkw//cSg8Cnx03VGXDvZnRzKqV9Xkhn7eRHb3wVjHpg19nkZpX9bBU+vnHegrsuQcbW9Bi7oO33h+8SU0Tly/MbeYUuG1cftVz6oNxrW0qH1iezq446fkDFo/rgvTkqt7zmteFzncZ0uxXti09FFF2z+C7CODpjUudOE5NSeb3bv/mbPKcmOEzpWQ3VBgBAuj/AOY3qMm7UvgA8qo3+qvAUBBAX0wADQG4AG+jCKaSxkBe/zvcTG8jRpRZgqhCog4sd++cOo7J+/RdvaaMoc78Ri/PNPSclx6fDvG1Kt3qQFi1rq+5EaavTtt9TVvfvucYsA5wc4oESU+E1ikF9TkrOkIsIH5Fawx7SBNLnMcWlM3skBluCmQNs7GeyFvYVDamsqwhxx18n/+WdxzDgOLU1AqbUlb3m+KOT9+ONvY/7XlrdLS//5v7nN97XHj0VzJpJvz4spq0V7ioXDuv2YrSxtF/KZmvbWfKtorXSh8dfvgGu+ev/nFSaXM6jyuCE/f/EpmuP7Rqu8R98vP/+tXUdrOgKlZP9Q/s+fRF9+3CHZd4EugfPv158me9X7v/6aSMCxMJmIr//65bNXngl7+uiPP5oKx+y27D8trp+psUzMacpm80XlnYeMAct0LynxhNYgaP3dtn8/LBAi+ksr+7NvjjtJV+UXrz0uLXV1x08AZRN1S2A8EaVE5afk/dfGjz//+fdHn36Xdttz2d9/z+bawZ8/slNN1aYtq+ZPGzNuPGdwOsfYflwmHCkPgs5DcKizvdpS/3gEUMW9/lvQvWp1bGTW1fpngC/uSVYAfH3TeSusL8TtlHUD4KAAEHjahk4YpuffGwEBN/dUmpHqdHyJ3Ap8O3UlQ4gCNrMRwLBBKiskL6a+RoBi/9XGlgc8L4/CUejQxaiIyqmomdhktOhfgDbDfaNDb4+yKIPd6IgmzDa0CByijWFmL2dlSRKagTIWXeIU9HDphoZiJeBTjAefHMxDhVSRFUgVcOkW3EGMahYVMFjWHhMluB2wAcbHYqF1LpsDF9C6s+CI2fDgh4wSuFEyGadjXAmIk3CugIRibLIti9ZtC8S4VSqfikGqPaoI122XyRYLBmsOmdiiTpqK1OklUQzpMcZmQRQV4M4oJCMkfRQXK+qvjifUcQd1bRdetW/LWjacYxvcttnVjWg5h0q4xw6rZyejSpZVZ78LzC4uyDNRQ4bymHSTMyM+SZ7D75mg/7YTlmNz7W8T00h0VEiGKB+F7iWYZFvSTiA4LVxttm2ATt5EoUWLJbY4EnLGrfsvEROlHtzlKn3H9VUT5tU/2dt3/EBv7foYzV/W4upyj04woO/gh6Vwwt3WGQAA)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f4f8ff;--bg-raised:#fafcff;--card:#fff;--card-2:#e9f2ff;--text:#071334;--muted:#404d6b;--faint:#8293b4;--border:#d3e2f8;--border-deep:#bccfee;--trace:#d5dff0;--hairline:#07133414;--accent:#0164f9;--accent-fill:#0164f9;--accent-press:#0142d8;--accent-bg:#e2eeff;--sky:#038cfb;--sky-light:#19b6fc;--on-accent:#fff;--ok:#0b7a43;--ok-bright:#18b663;--ok-deep:#0e8a4a;--ok-bg:#ddf7e8;--close:#a65300;--close-bg:#fff1d6;--wrong:#c81e2a;--wrong-bright:#e5303a;--wrong-deep:#a81822;--wrong-bg:#ffe3e5;--heart:#e5303a;--sun:#fcc50e;--sun-deep:#d49f00;--flame:#f8820c;--flame-deep:#c4630a;--flame-text:#b85a06;--xp:#fcc50e;--navy:#071334;--cream:#efe7d0;--chart:#0164f9;--chart-2:#e07400;--seg-active:#fff;--locked:#e1e8f3;--locked-ink:#93a2bd;--locked-deep:#c7d2e3;--shadow-sm:0 1px 2px #0713340f;--shadow:0 2px 4px #0713340d, 0 8px 22px #07133417;--shadow-lg:0 12px 40px #07133433;--glass:#f4f8ffdb;--r-sm:12px;--r:16px;--r-lg:20px;--tabbar-h:64px;--spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.2, .8, .2, 1);--font:"Plus Jakarta Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", sans-serif;--font-round:var(--font);--text-xs:12px;--text-sm:14px;--text-base:16px;--text-md:18px;--text-lg:22px;--text-xl:28px;--text-2xl:34px;--tight:-.02em;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#070d1a;--bg-raised:#0b1428;--card:#0e1a33;--card-2:#15254a;--text:#f2f6ff;--muted:#a8b7d6;--faint:#61739a;--border:#22345e;--border-deep:#182847;--trace:#34496e;--hairline:#ffffff14;--accent:#5c9fff;--accent-fill:#0164f9;--accent-press:#0142d8;--accent-bg:#10285a;--sky:#19b6fc;--sky-light:#19b6fc;--on-accent:#fff;--ok:#45d483;--ok-bright:#18b663;--ok-deep:#0e7a41;--ok-bg:#0d2e1f;--close:#ffb547;--close-bg:#33230a;--wrong:#ff6b73;--wrong-bright:#e5303a;--wrong-deep:#9e1620;--wrong-bg:#3a1418;--heart:#ff5a64;--sun:#fcc50e;--sun-deep:#c79500;--flame:#f8820c;--flame-deep:#b85a06;--flame-text:#ff9f3d;--xp:#fcc50e;--navy:#071334;--cream:#efe7d0;--chart:#4e97ff;--chart-2:#e07400;--seg-active:#22345e;--locked:#1c2a49;--locked-ink:#5d6e92;--locked-deep:#131f3a;--shadow-sm:0 1px 2px #00000073;--shadow:0 1px 2px #0006, 0 8px 24px #0006;--shadow-lg:0 12px 48px #000000a6;--glass:#070d1adb;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#070d1a;--bg-raised:#0b1428;--card:#0e1a33;--card-2:#15254a;--text:#f2f6ff;--muted:#a8b7d6;--faint:#61739a;--border:#22345e;--border-deep:#182847;--trace:#34496e;--hairline:#ffffff14;--accent:#5c9fff;--accent-fill:#0164f9;--accent-press:#0142d8;--accent-bg:#10285a;--sky:#19b6fc;--sky-light:#19b6fc;--on-accent:#fff;--ok:#45d483;--ok-bright:#18b663;--ok-deep:#0e7a41;--ok-bg:#0d2e1f;--close:#ffb547;--close-bg:#33230a;--wrong:#ff6b73;--wrong-bright:#e5303a;--wrong-deep:#9e1620;--wrong-bg:#3a1418;--heart:#ff5a64;--sun:#fcc50e;--sun-deep:#c79500;--flame:#f8820c;--flame-deep:#b85a06;--flame-text:#ff9f3d;--xp:#fcc50e;--navy:#071334;--cream:#efe7d0;--chart:#4e97ff;--chart-2:#e07400;--seg-active:#22345e;--locked:#1c2a49;--locked-ink:#5d6e92;--locked-deep:#131f3a;--shadow-sm:0 1px 2px #00000073;--shadow:0 1px 2px #0006, 0 8px 24px #0006;--shadow-lg:0 12px 48px #000000a6;--glass:#070d1adb;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--text-base);font-feature-settings:"ss01" off;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;font-weight:500;line-height:1.45}body{min-height:100dvh}button{font:inherit;color:inherit;touch-action:manipulation}button,.tab,.seg{-webkit-user-select:none;user-select:none}h1,h2,h3{font-family:var(--font-round);letter-spacing:var(--tight);font-weight:700}b,strong{font-weight:700}.icon{flex:none;display:block}.btn,.card.tappable,button.card,.tile,.option,.pair,.icon-btn,.lesson-node,.seg,.lang-chip,.list-row.link,.mic,.lang-tile,.flag-btn,.tab-pill{transition:transform .12s var(--ease-out), background-color .2s, border-color .2s, box-shadow .12s var(--ease-out), opacity .2s}.btn:active:not(:disabled),button.card:active:not(:disabled),.tile:active:not(:disabled),.option:active:not(:disabled),.pair:active:not(:disabled),.lesson-node:active:not(:disabled),.lang-chip:active,.lang-tile:active,.flag-btn:active{transform:translateY(4px);box-shadow:0 0 #0000}.icon-btn:active,.seg:active,.list-row.link:active{transform:scale(.96)}.header{z-index:3;padding:env(safe-area-inset-top) max(16px, env(safe-area-inset-right)) 0 max(16px, env(safe-area-inset-left));background:var(--glass);-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);border-bottom:2px solid var(--border);position:sticky;top:0}.header-bar{align-items:center;gap:8px;max-width:560px;height:52px;margin:0 auto;display:flex}.header h1{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:18px;font-weight:700;overflow:hidden}.header .spacer,.header .header-action,.header .back{min-width:44px;display:flex}.header .header-action{justify-content:flex-end}.header.large{border-bottom:0}.header .large-title{letter-spacing:-.02em;text-align:left;flex:none;max-width:560px;margin:0 auto;padding:2px 0 10px;font-size:36px;font-weight:800;overflow:visible}.header.large .header-action{margin-left:auto}.icon-btn{color:var(--accent);cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;margin:-8px;padding:8px;display:grid}.header .back{justify-content:flex-start}.header.topbar .header-bar{justify-content:space-between;height:60px}.flag-btn{border:2px solid var(--border);background:var(--card);cursor:pointer;box-shadow:0 4px 0 var(--border-deep);border-radius:50%;padding:3px;display:grid}.flag{flex:none;display:block}.stat-pill{font-variant-numeric:tabular-nums;align-items:center;gap:5px;font-size:20px;font-weight:700;display:inline-flex}.stat-pill.streak{color:var(--flame-text)}.stat-pill.xp{color:var(--accent)}.stat-pill.hearts{color:var(--heart)}.stat-pill .icon.bolt{color:var(--sun);filter:drop-shadow(0 2px 0 var(--sun-deep))}.stat-pill .icon.heart{color:var(--heart);filter:drop-shadow(0 2px 0 var(--wrong-deep));animation:2.4s ease-in-out infinite heartbeat}@keyframes heartbeat{0%,70%,to{transform:scale(1)}78%{transform:scale(1.18)}86%{transform:scale(.96)}}.tabbar{z-index:4;padding:6px max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));background:var(--card);border-top:2px solid var(--border);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{max-width:120px;color:var(--faint);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:2px;padding:0;font-size:12px;font-weight:700;transition:color .2s;display:flex}.tab-pill{border:2px solid #0000;border-radius:14px;place-items:center;width:58px;height:36px;display:grid}.tab-icon .duo{stroke:none;fill:currentColor;opacity:.2}.tab.active{color:var(--accent)}.tab.active .tab-pill{background:var(--accent-bg);border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.tab.active .tab-icon{animation:tab-pop .45s var(--spring)}.tab.active .tab-icon .duo{opacity:.35}.tab:active .tab-pill{transform:scale(.9)}@keyframes tab-pop{0%{transform:scale(.8)}50%{transform:scale(1.22)rotate(-6deg)}to{transform:scale(1)}}.with-tabs .page{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 28px)}.page{max-width:560px;padding:12px max(16px, env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 28px) max(16px, env(safe-area-inset-left));flex-direction:column;gap:12px;margin:0 auto;display:flex}.page.fill{min-height:calc(100dvh - 60px - env(safe-area-inset-top))}.no-vt .page{animation:page-in .28s var(--ease-out)}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.heading{font-family:var(--font-round);letter-spacing:-.01em;margin:6px 0 0;font-size:24px;font-weight:800}.section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:16px 4px -2px;font-size:13px;font-weight:700}.card{background:var(--card);border:2px solid var(--border);border-radius:var(--r-lg);box-shadow:0 4px 0 var(--border);flex-direction:column;gap:10px;margin-bottom:4px;padding:18px;display:flex}button.card{text-align:left;cursor:pointer;width:100%}.row{align-items:center;gap:10px;display:flex}.row>.grow,.grow{flex:1;min-width:0}.muted{color:var(--muted);margin:0;font-size:15px}.small{font-size:13px}.target{font-weight:700;font-family:var(--font-round);letter-spacing:-.01em;margin:0}.pinyin{color:var(--accent);margin:0}.english{color:var(--muted);margin:0}.btn{min-height:56px;font-size:18px;font-weight:700;font-family:var(--font-round);letter-spacing:.01em;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;white-space:pre-line;box-shadow:0 5px 0 var(--accent-press);border:0;border-radius:16px;justify-content:center;align-items:center;gap:8px;margin-bottom:5px;padding:14px 20px;display:inline-flex}.btn:disabled{opacity:1;background:var(--locked);color:var(--locked-ink);box-shadow:0 5px 0 var(--locked-deep);cursor:default}.btn.secondary{background:var(--card);color:var(--text);border:2px solid var(--border);box-shadow:0 4px 0 var(--border)}.btn.secondary:disabled{color:var(--faint)}.btn.ghost{color:var(--accent);box-shadow:none;background:0 0;margin-bottom:0}.btn.danger{background:var(--wrong-bright);box-shadow:0 5px 0 var(--wrong-deep)}.btn.success{background:var(--ok-bright);box-shadow:0 5px 0 var(--ok-deep)}.btn.flex{flex:1}a.btn{text-decoration:none}.btn.picked-right{background:var(--ok-bg);border-color:var(--ok-bright);color:var(--ok);box-shadow:0 4px 0 var(--ok-bright)}.btn.picked-wrong{background:var(--wrong-bg);border-color:var(--wrong-bright);color:var(--wrong);box-shadow:0 4px 0 var(--wrong-bright)}.btn.faded{opacity:.5}.bar{background:var(--card-2);border-radius:999px;height:16px;overflow:hidden;box-shadow:inset 0 2px #0713340f}.bar>div{transform-origin:0;background:linear-gradient(90deg, var(--ok-bright), #3fd17f);width:100%;height:100%;transition:transform .9s var(--spring);border-radius:999px;position:relative}.bar>div:after{content:"";background:#fff6;border-radius:999px;height:4px;position:absolute;inset:3px 10px auto}.bar.accent>div{background:linear-gradient(90deg, var(--accent-fill), var(--sky-light))}.bar.flame>div{background:linear-gradient(90deg, var(--sun), var(--flame))}.stats-row{font-size:18px;font-weight:700;font-family:var(--font-round);justify-content:space-between}.flame{color:var(--faint)}.flame.lit{color:var(--flame);transform-origin:50% 90%;filter:drop-shadow(0 2px 0 var(--flame-deep)) drop-shadow(0 0 6px color-mix(in srgb, var(--sun) 55%, transparent));animation:1.4s ease-in-out infinite flicker}@keyframes flicker{0%,to{transform:scale(1)rotate(-3deg)}30%{transform:scale(1.08,.95)rotate(3deg)}60%{transform:scale(.95,1.08)rotate(-2deg)}}.lang-tiles{flex-direction:column;gap:14px;display:flex}.lang-tile{text-align:left;cursor:pointer;width:100%;min-height:92px;font-family:var(--font-round);border:0;border-radius:24px;align-items:center;gap:16px;margin-bottom:6px;padding:16px 20px;display:flex}.lang-tile .flag{border-radius:50%;box-shadow:0 0 0 4px #ffffffd9,0 4px 10px #0713342e}.lang-tile-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.lang-tile-name{letter-spacing:-.01em;font-size:25px;font-weight:800}.lang-tile-native{opacity:.85;font-size:16px;font-weight:650}.lang-tile-es{background:linear-gradient(135deg, #ffd84a, var(--sun) 40%, var(--flame));color:var(--navy);box-shadow:0 6px 0 var(--flame-deep)}.lang-tile-fr{background:linear-gradient(135deg, var(--sky-light), var(--accent-fill) 70%);color:#fff;box-shadow:0 6px 0 var(--accent-press)}.lang-tile-zh{background:linear-gradient(135deg, #ff5a63, var(--wrong-bright) 55%, #c81e2a);color:#fff;box-shadow:0 6px #8f121b}.lang-tile-pt{color:#fff;background:linear-gradient(135deg,#3fd27a,#17a34a 55%,#0d7f39);box-shadow:0 6px #0a5c2a}.lang-tile-it{color:#fff;background:linear-gradient(135deg,#2bc4a0,#12957a 55%,#0b6f5b);box-shadow:0 6px #084e40}.lang-tile.active{outline:3px solid var(--text);outline-offset:3px}.lang-tiles .lang-tile{animation:tile-pop .5s var(--spring) both}.lang-tiles .lang-tile:nth-child(2){animation-delay:70ms}.lang-tiles .lang-tile:nth-child(3){animation-delay:.14s}@keyframes tile-pop{0%{opacity:0;transform:translateY(14px)scale(.94)}}.lang-switch{overscroll-behavior-x:contain;scrollbar-width:none;flex:none;gap:8px;margin:0 -16px;padding:2px 16px 8px;display:flex;position:relative;overflow-x:auto}.lang-switch::-webkit-scrollbar{display:none}.lang-switch:after{content:"";flex:0 0 8px;margin-left:-8px}.lang-chip{border:2px solid var(--border);background:var(--card);cursor:pointer;white-space:nowrap;min-height:48px;box-shadow:0 3px 0 var(--border);border-radius:999px;flex:none;align-items:center;gap:8px;padding:6px 16px 6px 6px;font-size:15px;font-weight:700;display:flex}.lang-chip.no-flag{padding:6px 18px}.lang-chip.active{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);box-shadow:0 3px 0 var(--accent)}.card-title{font-size:17px;font-weight:700}.start-card{text-align:center;align-items:stretch;padding-top:22px}.start-sticker{background:radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--sun) 28%, var(--card)), var(--accent-bg));width:128px;height:128px;box-shadow:0 5px 0 var(--border);animation:pop .5s var(--spring) both, sticker-float 4s .5s ease-in-out infinite;border-radius:50%;align-self:center;place-items:center;display:grid}.start-kicker{text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-size:13px;font-weight:700}.start-title{letter-spacing:-.01em;font-size:28px;font-weight:800;line-height:1.15}.list>.list-row:nth-child(4n+2) .row-icon{background:color-mix(in srgb, var(--sun) 24%, var(--card));color:var(--flame-text)}.list>.list-row:nth-child(4n+3) .row-icon{background:color-mix(in srgb, var(--flame) 16%, var(--card));color:var(--flame-text)}.list>.list-row:nth-child(4n+4) .row-icon{background:color-mix(in srgb, var(--sky-light) 20%, var(--card));color:var(--accent)}.card-sticker{border-radius:18px;flex:none;place-items:center;width:56px;height:56px;display:grid}.tint-sun{background:color-mix(in srgb, var(--sun) 22%, var(--card))}.tint-sky{background:color-mix(in srgb, var(--sky-light) 18%, var(--card))}.tint-orange{background:color-mix(in srgb, var(--flame) 16%, var(--card))}.tint-blue{background:color-mix(in srgb, var(--accent-fill) 14%, var(--card))}.review-card{border-color:color-mix(in srgb, var(--accent) 35%, var(--border));background:linear-gradient(135deg, var(--accent-bg), var(--card) 70%);box-shadow:0 4px 0 color-mix(in srgb, var(--accent) 35%, var(--border))}.review-card .icon{color:var(--accent)}.row-icon.due-count{font-variant-numeric:tabular-nums;background:var(--accent-fill);color:#fff;width:40px;height:40px;box-shadow:0 3px 0 var(--accent-press);border-radius:12px;font-size:17px;font-weight:700}.daily-card:disabled .row-icon.due-count,.mistakes-card:disabled .row-icon.due-count{background:var(--ok-bg);box-shadow:none}.daily-card:disabled .due-count .icon,.mistakes-card:disabled .due-count .icon{color:var(--ok)}.goal-card{gap:12px}.quick-row{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:10px;display:grid}.quick{text-align:center;border:2px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;box-shadow:0 4px 0 var(--border);transition:transform .12s var(--ease-out), box-shadow .12s var(--ease-out);border-radius:18px;flex-direction:column;align-items:center;gap:4px;margin-bottom:4px;padding:12px 8px 10px;display:flex}.quick:active{transform:translateY(4px);box-shadow:0 0 #0000}.quick .unit-art{animation:4s ease-in-out infinite sticker-float}.quick-title{font-size:15px;font-weight:700;line-height:1.15}.quick-hint{color:var(--muted);font-size:12px;font-weight:700;line-height:1.2}.goal-icon{background:color-mix(in srgb, var(--flame) 16%, var(--card));width:38px;height:38px;color:var(--flame-text);border-radius:12px;flex:none;place-items:center;display:grid}.goal-card.done .goal-icon{background:var(--ok-bg);color:var(--ok);animation:pop .5s var(--spring)}.goal-text{font-size:17px;font-weight:700}.goal-count{color:var(--muted);font-variant-numeric:tabular-nums;font-weight:700}.stage{flex-direction:column;gap:16px;margin-top:18px;display:flex}.level-head{color:var(--accent);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:12px;margin:12px 4px 0;font-size:14px;font-weight:700;display:flex}.level-head:before,.level-head:after{content:"";background:var(--border);border-radius:3px;flex:1;height:3px}.stage-head{align-items:flex-start;gap:12px;display:flex}.stage-num{background:var(--navy);color:#fff;border-radius:12px;flex:none;place-items:center;width:36px;height:36px;font-weight:700;display:grid;box-shadow:0 3px #000}:root[data-theme=dark] .stage-num{background:var(--card-2);box-shadow:0 3px 0 var(--border-deep)}.stage-title{letter-spacing:var(--tight);font-size:21px;font-weight:800}.unit.soon{border:2px dashed var(--border);border-radius:var(--r-lg);color:var(--muted);justify-content:space-between;align-items:center;gap:8px;padding:14px 18px;font-weight:650;display:flex}.unit.soon .icon{color:var(--faint)}.tone-blue{--tone:#0164f9;--tone-deep:#0142d8;--tone-ink:#fff}.tone-sun{--tone:#fcc50e;--tone-deep:#d49f00;--tone-ink:#071334}.tone-sky{--tone:#19b6fc;--tone-deep:#038cfb;--tone-ink:#071334}.tone-orange{--tone:#f8820c;--tone-deep:#c4630a;--tone-ink:#071334}.tone-navy{--tone:#233c86;--tone-deep:#071334;--tone-ink:#fff}.tone-cream{--tone:#efe7d0;--tone-deep:#cfc19b;--tone-ink:#071334}.tone-red{--tone:#d42430;--tone-deep:#9e1620;--tone-ink:#fff}.card.unit{box-shadow:none;background:0 0;border:0;gap:12px;padding:0}.unit-banner{background:var(--tone);color:var(--tone-ink);box-shadow:0 5px 0 var(--tone-deep);border-radius:22px;align-items:center;gap:12px;padding:16px 16px 16px 20px;display:flex;position:relative;overflow:hidden}.unit-banner:before{content:"";background:#ffffff24;border-radius:50%;width:150px;height:150px;position:absolute;top:-40px;right:-30px}.unit-kicker{text-transform:uppercase;letter-spacing:.08em;opacity:.85;align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.unit-title{letter-spacing:-.01em;margin-top:2px;font-size:22px;font-weight:800;line-height:1.15}.unit-count{opacity:.85;margin-top:4px;font-size:14px;font-weight:700}.unit-sticker{width:70px;height:70px;box-shadow:0 4px 0 var(--tone-deep);background:#ffffffeb;border-radius:50%;flex:none;place-items:center;animation:4s ease-in-out infinite sticker-float;display:grid;position:relative}@keyframes sticker-float{0%,to{transform:rotate(-6deg)translateY(0)}50%{transform:rotate(4deg)translateY(-3px)}}.lessons{margin:0;padding:0;list-style:none}.lessons.path{flex-direction:column;align-items:center;gap:18px;padding:10px 0 8px;display:flex}.path-step{transform:translateX(var(--x,0));flex-direction:column;align-items:center;gap:8px;width:150px;display:flex;position:relative}.path-step.current{margin-top:34px}.lesson-node,.path-coin{--edge:7px;cursor:pointer;color:#fff;background:radial-gradient(ellipse 62% 40% at 50% 26%, #ffffff80, #ffffff1f 60%, transparent 72%), linear-gradient(180deg, color-mix(in srgb, var(--tone) 88%, #fff), var(--tone) 55%);width:78px;height:72px;box-shadow:0 var(--edge) 0 var(--tone-deep), inset 0 -3px 0 #0713341f;transition:transform .35s var(--spring), box-shadow .35s var(--spring), filter .2s;border:0;border-radius:50%;place-items:center;padding:0;display:grid;position:relative}.lesson-node:active:not(:disabled),.path-coin:active:not(:disabled){transform:translateY(var(--edge));box-shadow:0 0 0 var(--tone-deep), inset 0 -3px 0 #0713341f;transition-duration:80ms}.lesson-node .node-dot,.path-coin .node-dot{place-items:center;display:grid}.lesson-node .icon,.path-coin .icon,.coin-glyph{filter:drop-shadow(0 2px #07133447)}.coin-glyph{font-size:30px;font-weight:800;line-height:1}.tone-sun .lesson-node,.tone-cream .lesson-node,.tone-sun .path-coin,.tone-cream .path-coin,.tone-sky .lesson-node,.tone-sky .path-coin{color:var(--navy)}.tone-sun .lesson-node .icon,.tone-cream .lesson-node .icon,.tone-sky .lesson-node .icon{filter:drop-shadow(0 2px #ffffff80)}.lesson-node.open{filter:saturate(.75)brightness(1.05)}.lesson-node.locked,.lesson-node:disabled,.path-coin.locked,.path-coin:disabled{--tone:#e1e8f3;--tone-deep:#c7d2e3;color:#9aa9c2;cursor:default}:root[data-theme=dark] .lesson-node:disabled,:root[data-theme=dark] .path-coin:disabled{--tone:#26375c;--tone-deep:#172442;color:#6d80a8}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .lesson-node:disabled,:root:not([data-theme=light]) .path-coin:disabled{--tone:#26375c;--tone-deep:#172442;color:#6d80a8}}.coin-check{background:var(--sun);width:24px;height:24px;color:var(--navy);box-shadow:0 2px 0 var(--sun-deep), 0 0 0 3px var(--bg);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:-4px;right:-2px}.coin-ring{pointer-events:none;width:112px;height:112px;margin-left:-56px;position:absolute;top:-20px;left:50%}.path-step.current .coin-ring{top:-20px}.coin-ring-track{fill:none;stroke:color-mix(in srgb, var(--tone) 22%, var(--card));stroke-width:8px}.coin-ring-fill{fill:none;stroke:var(--tone);stroke-width:8px;stroke-linecap:round;transition:stroke-dasharray .8s var(--ease-out)}.path-step.current .lesson-node{animation:node-bounce 2s var(--spring) infinite}.path-step.current .node-label{margin-top:14px}@keyframes node-bounce{0%,55%,to{transform:translateY(0)}25%{transform:translateY(-6px)}40%{transform:translateY(1px)}}.path-coin.review{--edge:6px;width:62px;height:58px}.review-step .node-label{font-size:12px}.node-label{color:var(--muted);text-align:center;font-size:13px;font-weight:700;line-height:1.2}.path-step.locked .node-label{color:var(--faint)}.path-step.current .node-label{color:var(--text);font-weight:700}.node-cta{z-index:1;letter-spacing:.06em;text-transform:uppercase;background:var(--card);color:var(--accent);border:2px solid var(--border);box-shadow:0 3px 0 var(--border);pointer-events:none;border-radius:12px;padding:6px 14px;font-size:15px;font-weight:700;animation:1.8s ease-in-out infinite cta-bob;position:absolute;top:-40px}.node-cta:after{content:"";background:var(--card);border-right:2px solid var(--border);border-bottom:2px solid var(--border);width:12px;height:12px;position:absolute;bottom:-8px;left:50%;transform:translate(-50%)rotate(45deg)}@keyframes cta-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.path-buddy{pointer-events:none;width:62px;height:62px;transform:translateX(calc(var(--side) * 96px - 50%));animation:2.6s ease-in-out infinite buddy-hop;position:absolute;top:4px;left:50%}.path-buddy .bird{display:block}.path-buddy .bird,.path-bird .bird{transform:scaleX(calc(var(--side) * -1))}@keyframes buddy-hop{0%,to{translate:0;rotate:0deg}20%{translate:0 -10px;rotate:-6deg}35%{translate:0;rotate:0deg}}.path-bird{pointer-events:none;width:78px;height:78px;transform:translateX(calc(var(--side) * 104px - 50%));position:absolute;top:-6px;left:50%}.path-bird .bird{display:block}.bird{overflow:visible}:root[data-theme=dark] :is(.bird,.unit-art,.hint-picture,.chest-art){filter:drop-shadow(0 0 1.5px #ffffff73)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) :is(.bird,.unit-art,.hint-picture,.chest-art){filter:drop-shadow(0 0 1.5px #ffffff73)}}.bird-ledge{fill:var(--tone,#0164f9)}.bird-all,.bird-wing,.bird-head,.bird-zz text,.bird-globe-land{transform-box:fill-box}.bird-wing{transform-origin:80% 10%}.bird-wing.up{transform-origin:90% 90%}.bird-head{transform-origin:30% 90%}.bird-all{transform-origin:50% 100%}.bird-globe-land{transform-origin:50%}.bird.seen .bird-all{animation:bird-pop .5s var(--spring) both}.bird.pose-peek.seen .bird-all{animation:bird-peek 3.6s var(--ease-out) .1s infinite both}.bird.pose-hop.seen .bird-all{animation:1.9s ease-in-out infinite bird-hop}.bird.pose-wave.seen .bird-wing.up{animation:1.1s ease-in-out infinite bird-wave}.bird.pose-read.seen .bird-head{animation:3s ease-in-out infinite bird-nod}.bird.pose-globe.seen .bird-globe-land{animation:2.4s ease-in-out infinite alternate globe-turn}.bird.pose-nap.seen .bird-all{animation:3.2s ease-in-out infinite bird-breathe}.bird.pose-nap.seen .bird-zz text{animation:2.4s ease-in-out infinite zz-float}.bird.pose-nap.seen .bird-zz text:nth-child(2){animation-delay:.6s}@keyframes bird-pop{0%{opacity:0;transform:scale(.6)translateY(10px)}}@keyframes bird-peek{0%{transform:translateY(46%)}18%,70%{transform:translateY(0)}76%{transform:translateY(6%)}82%,to{transform:translateY(0)}}@keyframes bird-hop{0%,40%,to{transform:translateY(0)scale(1)}8%{transform:translateY(0)scale(1.06,.92)}20%{transform:translateY(-14%)scale(.96,1.05)}32%{transform:translateY(0)scale(1.05,.95)}}@keyframes bird-wave{0%,to{transform:rotate(0)}50%{transform:rotate(-24deg)}}@keyframes bird-nod{0%,60%,to{transform:rotate(0)}70%{transform:rotate(6deg)}85%{transform:rotate(-2deg)}}@keyframes globe-turn{0%{transform:translate(-12%)}to{transform:translate(12%)}}@keyframes bird-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.03,.97)}}@keyframes zz-float{0%{opacity:0;transform:translateY(4px)}30%{opacity:1}to{opacity:0;transform:translate(6px,-10px)}}.chest-step{margin:4px 0}.path-chest{cursor:pointer;background:0 0;border:0;place-items:center;width:84px;height:72px;padding:0;display:grid;position:relative}.path-chest:disabled{cursor:default}.path-chest:active:not(:disabled){transform:translateY(4px)scale(.97)}.chest-art{filter:drop-shadow(0 5px #0713342e);overflow:visible}.chest-body{fill:#f8820c}.chest-rim{fill:#c4630a}.chest-band,.chest-lid-top{fill:#fcc50e}.chest-lid-band{fill:#f8820c}.chest-shine{fill:none;stroke:#ffffffb3;stroke-width:3px;stroke-linecap:round}.chest-lock{fill:#071334}.chest-keyhole{fill:#fcc50e}.chest-glow{fill:#fcc50e;opacity:.45}.chest-coins circle{fill:#fcc50e;stroke:#d49f00;stroke-width:2px}.path-chest.locked .chest-art{filter:grayscale()opacity(.45)}.path-chest.ready{animation:2.2s ease-in-out infinite chest-wiggle}.path-chest.ready:after{content:"";z-index:-1;background:radial-gradient(circle,#fcc50e73,#0000 68%);border-radius:50%;position:absolute;inset:-8px}.path-chest.opened .chest-art{animation:pop .5s var(--spring)}@keyframes chest-wiggle{0%,55%,to{transform:rotate(0)}62%{transform:rotate(-8deg)scale(1.04)}70%{transform:rotate(7deg)scale(1.04)}78%{transform:rotate(-5deg)}86%{transform:rotate(3deg)}}.chest-burst{z-index:1;white-space:nowrap;color:#071334;animation:chest-xp 1.8s var(--ease-out) forwards;pointer-events:none;background:#fcc50e;border-radius:999px;padding:6px 14px;font-size:18px;font-weight:800;position:absolute;top:-26px;left:50%;transform:translate(-50%);box-shadow:0 3px #d49f00}.chest-rays{z-index:-1;background:repeating-conic-gradient(from 0deg, #fcc50e8c 0 12deg, transparent 12deg 30deg);width:150px;height:150px;animation:rays 1.8s var(--ease-out) forwards;border-radius:50%;margin:-75px 0 0 -75px;position:absolute;top:50%;left:50%;-webkit-mask:radial-gradient(circle,#000 30%,#0000 70%);mask:radial-gradient(circle,#000 30%,#0000 70%)}@keyframes chest-xp{0%{opacity:0;transform:translate(-50%,16px)scale(.6)}20%{opacity:1;transform:translate(-50%)scale(1.15)}35%{transform:translate(-50%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-24px)}}@keyframes rays{0%{opacity:1;transform:scale(.3)rotate(0)}to{opacity:0;transform:scale(1.3)rotate(60deg)}}.lesson-pop{z-index:1;text-align:center;background:var(--tone);width:min(320px,100%);color:var(--tone-ink);box-shadow:0 5px 0 var(--tone-deep);animation:pop-in .28s var(--spring);scroll-margin:130px 0 calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 24px);border-radius:20px;flex-direction:column;gap:6px;margin-top:4px;padding:16px 18px 14px;display:flex;position:relative}.lesson-pop:before{content:"";top:-8px;left:calc(50% + var(--x,0px));background:var(--tone);border-radius:4px;width:18px;height:18px;margin-left:-9px;position:absolute;transform:rotate(45deg)}@keyframes pop-in{0%{opacity:0;transform:translateY(-8px)scale(.94)}}.lesson-pop-kicker{letter-spacing:.08em;text-transform:uppercase;opacity:.85;font-size:12px;font-weight:700}.lesson-pop-title{font-size:20px;font-weight:800;line-height:1.2}.lesson-pop-covers{opacity:.92;margin:0;font-size:14px;font-weight:600;line-height:1.35}.lesson-pop-bonus{opacity:.8;margin:0;font-size:13px;font-weight:600}.btn.lesson-pop-start{color:var(--tone-deep);box-shadow:0 4px 0 color-mix(in srgb, var(--tone-deep) 70%, #000);background:#fff;margin-top:6px}.tone-sun .btn.lesson-pop-start,.tone-cream .btn.lesson-pop-start,.tone-sky .btn.lesson-pop-start,.tone-navy .btn.lesson-pop-start{color:#071334}.lesson-pop-xp{color:#071334;background:#fcc50e;border-radius:999px;margin-left:6px;padding:2px 8px;font-size:14px}.path-sticky{z-index:2;left:50%;top:calc(env(safe-area-inset-top) + 60px);background:var(--tone);width:min(528px,100% - 32px);color:var(--tone-ink);box-shadow:0 4px 0 var(--tone-deep), 0 8px 18px #07133429;animation:sticky-in .3s var(--spring);pointer-events:none;border-radius:16px;align-items:center;gap:10px;padding:10px 14px;display:flex;position:fixed;transform:translate(-50%)}@keyframes sticky-in{0%{opacity:0;transform:translate(-50%,-10px)}}.path-sticky-label{letter-spacing:.08em;text-transform:uppercase;opacity:.85;flex:none;font-size:11px;font-weight:800}.path-sticky-title{white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:800;overflow:hidden}.path-sticky-count{opacity:.85;flex:none;font-size:13px;font-weight:700}.jump-lesson{z-index:2;right:max(16px, env(safe-area-inset-right));bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px);border:2px solid var(--border);cursor:pointer;background:var(--card);width:54px;height:54px;color:var(--accent);box-shadow:0 4px 0 var(--border), 0 8px 18px #07133424;animation:pop .35s var(--spring);border-radius:50%;place-items:center;display:grid;position:fixed}.jump-lesson.down .icon{transform:rotate(90deg)}.jump-lesson.up .icon{transform:rotate(-90deg)}.jump-lesson:active{box-shadow:0 0 0 var(--border);transform:translateY(4px)}.exercise{display:contents}.hint-coach{flex-wrap:wrap;align-items:flex-end;gap:8px 10px;margin-top:4px;display:flex}.hint-bird{flex:none}.hint-bird.thinking .bird-head{animation:2.4s ease-in-out infinite bird-nod}.hint-bubble{background:var(--card);border:2px solid var(--border);box-shadow:0 3px 0 var(--border);animation:pop-in .3s var(--spring);transform-origin:0 100%;border-radius:22px;flex-direction:column;flex:200px;align-items:flex-start;gap:8px;margin:0 0 22px 4px;padding:12px 16px;display:flex;position:relative}.hint-bubble:before,.hint-bubble:after{content:"";background:var(--card);border:2px solid var(--border);border-radius:50%;position:absolute}.hint-bubble:before{width:14px;height:14px;bottom:-16px;left:-4px}.hint-bubble:after{width:8px;height:8px;bottom:-24px;left:-14px}.hint-line{color:var(--text);font-size:17px;font-weight:650}.hint-1 b{color:var(--accent);font-size:20px}.hint-picture{width:44px;height:44px;display:block}.hint-2{cursor:pointer;background:var(--accent-bg);color:var(--accent);box-shadow:0 3px 0 color-mix(in srgb, var(--accent) 30%, var(--card));border:0;border-radius:12px;align-items:center;gap:8px;padding:6px 12px;display:flex}.hint-2:active{box-shadow:none;transform:translateY(3px)}.hint-3{opacity:.42;flex-direction:column;font-size:21px;font-weight:700;display:flex}.hint-btn{cursor:pointer;border:2px solid var(--border);background:var(--card);color:var(--accent);box-shadow:0 3px 0 var(--border);border-radius:999px;flex:none;align-self:center;align-items:center;gap:6px;margin-left:auto;padding:8px 14px;font-size:15px;font-weight:700;display:flex}.hint-btn:active{box-shadow:none;transform:translateY(3px)}.hint-coach.compact .hint-bubble{margin-bottom:18px;padding:8px 12px}.hint-coach.compact .hint-line{font-size:15px}.hint-coach.compact .hint-3{font-size:17px}.hint-slider{width:100%;accent-color:var(--accent);margin:10px 0 2px}.hint-slider-labels{color:var(--muted);justify-content:space-between;font-size:13px;font-weight:700;display:flex}.hint-slider-labels .active{color:var(--accent)}.banner>.banner-bird{width:58px;max-width:none;margin:0}.banner-bird{right:max(12px, env(safe-area-inset-right));pointer-events:none;position:absolute;top:-44px;transform:scaleX(-1)}.bird-wing.far{transform-box:fill-box;transform-origin:10% 90%}.bird-flame,.bird-notes>g{transform-box:fill-box;transform-origin:50% 100%}.bird.pose-cheer.seen .bird-all{animation:bird-cheer .9s var(--spring) both}.bird.pose-cheer.seen .bird-wing.up,.bird.pose-streak.seen .bird-wing.up{animation:.45s ease-in-out 3 bird-flap}.bird.pose-cheer.seen .bird-wing.far,.bird.pose-streak.seen .bird-wing.far{animation:.45s ease-in-out 3 bird-flap-far}.bird.pose-streak.seen .bird-all{animation:bird-cheer .9s var(--spring) both}.bird.pose-streak.seen .bird-flame{animation:.6s ease-in-out infinite alternate flame-dance}.bird.pose-oops.seen .bird-head{animation:.8s ease-in-out both bird-oops}.bird.pose-oops.seen .bird-all{animation:.8s ease-in-out both bird-shrug}.bird.pose-dance.seen .bird-all{animation:1.1s ease-in-out infinite bird-dance}.bird.pose-dance.seen .bird-wing.up{animation:.55s ease-in-out infinite bird-flap}.bird.pose-dance.seen .bird-wing.far{animation:.55s ease-in-out infinite bird-flap-far}.bird.pose-dance.seen .bird-notes>g{animation:1.6s ease-in-out infinite note-float}.bird.pose-dance.seen .bird-notes>g:nth-child(2){animation-delay:.5s}@keyframes bird-cheer{0%{opacity:0;transform:translateY(8%)scale(.8)}45%{opacity:1;transform:translateY(-12%)scale(1.04)}70%{transform:translateY(0)scale(.98,1.02)}to{transform:none}}@keyframes bird-flap{0%,to{transform:rotate(0)}50%{transform:rotate(-18deg)}}@keyframes bird-flap-far{0%,to{transform:rotate(0)}50%{transform:rotate(16deg)}}@keyframes flame-dance{0%{transform:scale(.9)rotate(-6deg)}to{transform:scale(1.1)rotate(6deg)}}@keyframes bird-oops{0%{transform:rotate(0)}25%{transform:rotate(-8deg)}50%{transform:rotate(6deg)}75%{transform:rotate(-4deg)}to{transform:rotate(0)}}@keyframes bird-shrug{0%{opacity:0;transform:translateY(6%)}30%{opacity:1;transform:translateY(-3%)}to{transform:none}}@keyframes bird-dance{0%,to{transform:rotate(-7deg)translateY(0)}25%{transform:rotate(0)translateY(-9%)}50%{transform:rotate(7deg)translateY(0)}75%{transform:rotate(0)translateY(-9%)}}@keyframes note-float{0%{opacity:0;transform:translateY(6px)}30%{opacity:1}to{opacity:0;transform:translateY(-14px)}}.goal-bird{flex:none;margin:-12px -6px -10px 0;transform:scaleX(-1)}.trophy-row{justify-content:center;align-items:flex-end;gap:4px;display:flex}.trophy-row .trophy{margin:0}.complete-bird{margin-bottom:-6px}.page.lesson{isolation:isolate;position:relative}.lesson-watermark{opacity:.05;pointer-events:none;z-index:-1;filter:grayscale(.2);width:min(70vw,360px);height:auto;position:fixed;top:52%;left:50%;transform:translate(-50%,-50%)}:root[data-theme=dark] .lesson-watermark{opacity:.06}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .lesson-watermark{opacity:.06}}.shimmer{background:linear-gradient(90deg, var(--card-2) 25%, color-mix(in srgb, var(--card-2) 40%, #fff) 50%, var(--card-2) 75%);background-size:200% 100%;border-radius:10px;min-height:14px;animation:1.4s linear infinite shimmer}:root[data-theme=dark] .shimmer{background:linear-gradient(90deg,#17244a 25%,#22336a 50%,#17244a 75%) 0 0/200% 100%}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .shimmer{background:linear-gradient(90deg,#17244a 25%,#22336a 50%,#17244a 75%) 0 0/200% 100%}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.shimmer-lines{flex-direction:column;gap:8px;min-width:160px;padding:4px 0;display:flex}.shimmer-lines .shimmer:nth-child(2){width:70%}:root[data-text=large] body{zoom:1.12}:root[data-text=larger] body{zoom:1.25}.row-icon.sticker-icon{background:var(--card-2)}.list{background:var(--card);border:2px solid var(--border);border-radius:var(--r-lg);box-shadow:0 4px 0 var(--border);margin-bottom:4px;overflow:hidden}.list-row{text-align:left;width:100%;min-height:58px;color:var(--text);background:0 0;border:0;align-items:center;gap:12px;padding:13px 16px;font-size:16px;display:flex}.list-row+.list-row,.list>*+*{border-top:2px solid var(--border)}.list-row.link{cursor:pointer}.list-row.link>.icon:last-child{color:var(--faint)}.row-title{font-weight:700;display:block}.row-hint{color:var(--muted);margin-top:2px;font-size:13px;font-weight:600;display:block}.row-icon{background:var(--accent-bg);width:40px;height:40px;color:var(--accent);border-radius:13px;flex:none;place-items:center;font-size:22px;display:grid}.list-block{flex-direction:column;gap:10px;padding:14px 16px;display:flex}.toggle input[type=checkbox]{width:26px;height:26px;accent-color:var(--ok-bright);flex:none;margin:0}.toggle input[switch]{width:auto;height:auto;font-size:20px}.segmented{background:var(--card-2);border-radius:14px;gap:4px;padding:4px;display:flex}.seg{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:11px;flex-direction:column;flex:1;align-items:center;gap:1px;padding:9px 6px;font-size:15px;font-weight:700;display:flex}.seg.active{background:var(--seg-active);color:var(--accent);box-shadow:0 3px 0 var(--border)}.seg small{color:var(--muted);font-size:11px;font-weight:600}.choice{gap:10px;display:flex}.choice label{border:2px solid var(--border);background:var(--card);cursor:pointer;border-radius:14px;flex-direction:column;flex:1;gap:2px;padding:12px;display:flex}.choice label:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}.choice input{display:none}.haptic-switch{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed;top:0;left:-100px;overflow:hidden}.hero{align-items:flex-end;gap:10px;display:flex}.hero-value{font-size:54px;font-weight:800;font-family:var(--font-round);letter-spacing:-.03em;line-height:1}.tiles{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.tile-stat{background:var(--card);border:2px solid var(--border);border-radius:var(--r);box-shadow:0 4px 0 var(--border);flex-direction:column;gap:4px;padding:12px;display:flex}.tile-stat .tile-value{font-size:23px;font-weight:700;font-family:var(--font-round);align-items:center;gap:5px;display:flex}.tile-stat .tile-label{color:var(--muted);font-size:12px;font-weight:650}.chart{position:relative}.chart svg{width:100%;display:block;overflow:visible}.chart .grid{stroke:var(--hairline);stroke-width:1px}.chart .goal-line{stroke:var(--faint);stroke-width:1px}.chart .col{fill:var(--chart);transition:opacity .15s}.chart .col.dim{opacity:.35}.chart text{fill:var(--muted);font-size:12px;font-family:var(--font)}.chart text.value{fill:var(--text);font-weight:600}.chart .hit{fill:#0000;cursor:pointer}.chart-tip{pointer-events:none;white-space:nowrap;background:var(--text);color:var(--bg);box-shadow:var(--shadow);border-radius:8px;padding:5px 9px;font-size:13px;font-weight:600;position:absolute;transform:translate(-50%,-100%)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.calendar{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.calendar span{aspect-ratio:1;background:var(--card-2);color:var(--faint);border-radius:8px;place-items:center;font-size:11px;display:grid}.calendar span.on{background:color-mix(in srgb, var(--flame) 85%, transparent);color:#fff;font-weight:700}.calendar span.today{outline:2px solid var(--accent);outline-offset:1px}.mic{background:radial-gradient(circle at 30% 25%, var(--sky), var(--accent-fill) 62%);color:#fff;cursor:pointer;width:72px;height:72px;box-shadow:0 6px 0 var(--accent-press), var(--shadow);border:0;border-radius:50%;flex:none;align-self:center;place-items:center;display:grid;position:relative}.mic:active:not(:disabled){box-shadow:0 3px 0 var(--accent-press), var(--shadow);transform:translateY(3px)scale(.98)}.mic.on{background:radial-gradient(circle at 30% 25%, #ff6b73, var(--wrong-bright) 60%);box-shadow:0 6px 0 var(--wrong-deep), var(--shadow)}.mic.on:before,.mic.on:after{content:"";border:3px solid #ef4444;border-radius:50%;animation:1.6s ease-out infinite ring;position:absolute;inset:0}.mic.on:after{animation-delay:.8s}@keyframes ring{0%{opacity:.7;transform:scale(1)}to{opacity:0;transform:scale(1.7)}}.mic.checking{background:var(--card-2);color:var(--muted);box-shadow:0 6px 0 var(--border)}.mic:disabled{opacity:1}.waveform{width:min(280px,100%);height:48px;color:var(--wrong);opacity:0;align-self:center;transition:opacity .2s;display:block}.waveform.live{opacity:1}.spinner{border:4px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color:currentColor;border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.status{text-align:center;min-height:1.4em;margin:0;font-size:17px;font-weight:600}.tokens{flex-wrap:wrap;gap:6px;display:flex}.token{border-radius:8px;padding:2px 8px;font-size:24px;font-weight:600}.token.ok{color:var(--ok);background:var(--ok-bg)}.token.close{color:var(--close);background:var(--close-bg)}.token.wrong{color:var(--wrong);background:var(--wrong-bg)}.grade.ok{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}.grade.close{background:var(--close-bg);border-color:var(--close);color:var(--close)}.grade.wrong{background:var(--wrong-bg);border-color:var(--wrong);color:var(--wrong)}.grade .token{background:var(--card)}.grade .muted{color:var(--text)}.grade{animation:pop .35s var(--spring)}.flashcard{min-height:300px;box-shadow:var(--shadow);flex:1;justify-content:center;gap:16px;position:relative}.level{color:var(--ok);gap:3px;display:flex;position:absolute;top:16px;right:18px}.level svg{opacity:.25}.level svg.on{opacity:1}.lesson-top .header-bar{gap:14px}.lesson-top .grow{flex:1}.lesson-top .back{color:var(--muted)}.hearts{min-width:48px;font-weight:650;font-family:var(--font-round);color:var(--heart);justify-content:flex-end;align-items:center;gap:4px;display:flex}.hearts.lost{animation:.5s ease-out heart-lost}@keyframes heart-lost{30%{transform:scale(1.35)}60%{transform:scale(.9)}}.page.lesson{padding-bottom:calc(env(safe-area-inset-bottom) + 160px);gap:16px}.prompt{font-size:23px;font-weight:700;font-family:var(--font-round);align-items:center;gap:8px;margin:8px 0 0;display:flex}.chip-new{color:#fff;background:var(--flame-deep);font-size:12px;font-weight:700;font-family:var(--font);border-radius:7px;padding:3px 7px}.options{flex-direction:column;gap:10px;display:flex}.option{text-align:left;font-weight:650;font-family:var(--font);justify-content:flex-start}.btn.option{min-height:66px;box-shadow:0 5px 0 var(--border);border-radius:18px;gap:14px;padding:12px 18px;font-size:19px}.btn.option.selected{animation:tile-pick .4s var(--spring)}.option-text{min-width:0}.option-speaker{background:var(--accent-bg);width:48px;height:48px;color:var(--accent);box-shadow:0 3px 0 color-mix(in srgb, var(--accent) 30%, var(--card));border-radius:50%;flex:none;place-items:center;display:grid}.option.selected .option-speaker{background:var(--accent);color:#fff;box-shadow:0 3px 0 var(--deep,#0142d8)}.option.picked-right .option-speaker{background:var(--ok-bright);color:#fff;box-shadow:none}.option.picked-wrong .option-speaker{background:var(--wrong-bright);color:#fff;box-shadow:none}@keyframes tile-pick{0%{transform:scale(1)}35%{transform:translateY(-3px)scale(1.035)}65%{transform:translateY(1px)scale(.99)}to{transform:none}}.selected{border-color:var(--accent)!important;box-shadow:0 4px 0 var(--accent)!important;background:var(--accent-bg)!important;color:var(--accent)!important}.sound-row{align-items:flex-start;gap:16px;display:flex}.sound-big{border-radius:50%;width:96px;height:96px;padding:0}.sound-sm{border-radius:14px;flex-direction:column;gap:0;width:52px;height:52px;min-height:0;padding:0;font-size:10px}.answer-line{border-bottom:2px solid var(--border);flex-wrap:wrap;align-content:flex-start;gap:8px;min-height:68px;padding:10px 0;display:flex}.bank{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.tile{border:2px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;min-height:54px;box-shadow:0 5px 0 var(--border);border-radius:16px;margin-bottom:5px;padding:11px 18px;font-size:20px;font-weight:650}.tile:active:not(:disabled){transform:translateY(5px)}.answer-line .tile{animation:tile-in .22s var(--spring)}@keyframes tile-in{0%{opacity:0;transform:translateY(10px)scale(.9)}}.tile.used{visibility:hidden}.tile-zh{flex-direction:column;align-items:center;line-height:1.2;display:flex}.match{grid-template-columns:1fr 1fr;gap:10px;display:grid}.match-col{flex-direction:column;gap:10px;display:flex}.pair{min-height:58px;font-size:16px;font-weight:650;font-family:var(--font);padding:10px}.pair.picked-right{animation:pop .3s var(--spring)}.answer-input{width:100%;font:inherit;border:2px solid var(--border);background:var(--card);color:var(--text);resize:none;border-radius:16px;outline:none;padding:14px 16px;font-size:20px;font-weight:700;transition:border-color .2s,box-shadow .2s}.answer-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent)}.lesson-foot,.banner{z-index:2;padding:14px max(16px, env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 14px) max(16px, env(safe-area-inset-left));flex-direction:column;gap:10px;display:flex;position:fixed;bottom:0;left:0;right:0}.lesson-foot{background:var(--glass);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-top:2px solid var(--border)}.lesson-foot>*,.banner>*{width:100%;max-width:528px;margin:0 auto}.banner{box-shadow:var(--shadow-lg);animation:rise .32s var(--spring);border-radius:24px 24px 0 0}.banner.ok{background:var(--ok-bg);color:var(--ok)}.banner.ok .btn{background:var(--ok-bright);box-shadow:0 5px 0 var(--ok-deep)}.banner.bad{background:var(--wrong-bg);color:var(--wrong)}.banner.bad .btn{background:var(--wrong-bright);box-shadow:0 5px 0 var(--wrong-deep)}.banner.neutral{background:var(--card)}.banner-title{font-size:23px;font-weight:700;font-family:var(--font-round);flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.banner-badge{color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;display:grid;position:relative}.banner.ok .banner-badge{background:var(--ok-bright);animation:pop .45s var(--spring)}.banner.bad .banner-badge{background:var(--wrong-bright)}.banner-en{opacity:.8;font-size:15px;font-weight:500;font-family:var(--font)}.banner.streak .banner-title{font-size:26px}.streak-chip{background:linear-gradient(90deg, var(--sun), var(--flame));color:#fff;animation:pop .45s var(--spring);border-radius:999px;align-self:flex-start;align-items:center;gap:6px;padding:5px 14px 5px 10px;font-weight:700;display:inline-flex;width:auto!important;margin:0!important}.streak-chip .icon{color:#fff}@media (width>=560px){.streak-chip{margin-left:calc(50% - 264px)!important}}.flash{pointer-events:none;z-index:1;animation:.5s ease-out forwards flash;position:fixed;inset:0}.flash.ok{background:radial-gradient(circle at 50% 70%, color-mix(in srgb, var(--ok-bright) 30%, transparent), transparent 70%)}@keyframes flash{0%{opacity:1}to{opacity:0}}.lesson[data-feedback=ok] .picked-right,.lesson[data-feedback=ok] .answer-line,.lesson[data-feedback=ok] .answer-input{animation:bounce .5s var(--spring)}.lesson[data-feedback=bad] .picked-wrong,.lesson[data-feedback=bad] .answer-line,.lesson[data-feedback=bad] .answer-input{animation:.42s ease-in-out shake}.lesson[data-feedback=ok] .answer-input{border-color:var(--ok);background:var(--ok-bg)}.lesson[data-feedback=bad] .answer-input{border-color:var(--wrong);background:var(--wrong-bg)}button.card:disabled{opacity:.6;cursor:default}@keyframes bounce{0%{transform:scale(1)}35%{transform:scale(1.05)}65%{transform:scale(.98)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(2px)}}@keyframes rise{0%{opacity:0;transform:translateY(40%)}}@keyframes pop{0%{opacity:0;transform:scale(.6)}70%{opacity:1;transform:scale(1.08)}to{transform:scale(1)}}.burst{pointer-events:none;width:0;height:0;position:absolute;top:50%;left:50%}.burst>span{width:14px;height:14px;color:var(--xp);animation:burst .65s var(--ease-out) forwards;position:absolute;top:-7px;left:-7px}.burst>span svg{display:block}.burst>span:nth-child(3n){color:var(--ok-bright)}.burst>span:nth-child(3n+1){color:var(--sky)}@keyframes burst{0%{transform:rotate(var(--angle)) translateX(0) scale(1);opacity:1}to{transform:rotate(var(--angle)) translateX(var(--dist)) scale(.2);opacity:0}}.celebrate{text-align:center;padding-top:calc(env(safe-area-inset-top) + 28px);justify-content:center;gap:16px}.trophy{width:132px;height:132px;animation:trophy .8s var(--spring);box-shadow:var(--shadow-lg);background:#fff;border-radius:50%;place-items:center;margin:0 auto;display:grid}.trophy.perfect{background:color-mix(in srgb, var(--sun) 28%, #fff)}.trophy.done{background:color-mix(in srgb, var(--sky) 22%, #fff)}@keyframes trophy{0%{opacity:0;transform:scale(.3)rotate(-25deg)}60%{opacity:1;transform:scale(1.12)rotate(6deg)}to{transform:scale(1)rotate(0)}}.celebrate .heading{letter-spacing:var(--tight);margin:0;font-size:30px}.cheer{text-align:center;animation:pop .5s .25s var(--spring) both}.cheer-text{color:var(--ok);font-size:28px;font-weight:800;font-family:var(--font-round);letter-spacing:var(--tight)}.stats{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.stat{border:2px solid var(--border);box-shadow:0 4px 0 var(--border);text-align:center;background:var(--card);animation:pop .45s var(--spring) both;border-radius:18px;padding:12px 8px}.stat:nth-child(2){animation-delay:.1s}.stat:nth-child(3){animation-delay:.2s}.stat-value{font-size:26px;font-weight:800;font-family:var(--font-round);letter-spacing:var(--tight)}.stat.accent{border-color:var(--xp);color:var(--xp)}.stat.ok{border-color:var(--ok-bright);color:var(--ok)}.stat.close{border-color:var(--close);color:var(--close)}.stat.muted{color:var(--muted)}.streak-up{align-items:center;gap:6px;font-weight:650;display:inline-flex}.streak-up .flame.lit{animation:ignite .9s var(--spring), flicker 1.6s .9s ease-in-out infinite}@keyframes ignite{0%{transform:scale(.2)}60%{transform:scale(1.5)}to{transform:scale(1)}}.confetti{pointer-events:none;z-index:5;position:fixed;inset:0;overflow:hidden}.confetti>span{opacity:0;will-change:transform;animation-name:confetti-fall;animation-timing-function:cubic-bezier(.25,.6,.45,1);animation-fill-mode:forwards;position:absolute;top:-20px}@keyframes confetti-fall{0%{opacity:1;transform:translate(0,0)rotate(0)}85%{opacity:1}to{transform:translate3d(var(--drift), 105vh, 0) rotate(var(--spin));opacity:0}}::view-transition-old(root){animation-duration:.32s;animation-timing-function:var(--ease-out)}::view-transition-new(root){animation-duration:.32s;animation-timing-function:var(--ease-out)}:root[data-nav=forward]::view-transition-old(root){animation-name:vt-out-left}:root[data-nav=forward]::view-transition-new(root){animation-name:vt-in-right}:root[data-nav=back]::view-transition-old(root){animation-name:vt-out-right}:root[data-nav=back]::view-transition-new(root){animation-name:vt-in-left}:root[data-nav=tab]::view-transition-old(root){animation:.18s ease-out both vt-fade-out}:root[data-nav=tab]::view-transition-new(root){animation:.22s ease-out both vt-fade-in}@keyframes vt-out-left{to{opacity:.6;transform:translate(-24%)}}@keyframes vt-in-right{0%{transform:translate(100%)}}@keyframes vt-out-right{to{transform:translate(100%)}}@keyframes vt-in-left{0%{opacity:.6;transform:translate(-24%)}}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-fade-in{0%{opacity:0;transform:scale(.99)}}:root[data-nav=back]::view-transition-old(root){z-index:2}.tabbar{view-transition-name:tabbar}::view-transition-group(tabbar){animation:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.mic.on:before,.mic.on:after,.flame.lit,.path-step.current .lesson-node,.node-cta,.coin-ring-fill,.path-buddy,.unit-sticker,.bird *,.hint-bubble,.shimmer,.path-chest,.chest-burst,.chest-rays,.lesson-pop,.path-sticky,.jump-lesson,.quick .unit-art,.start-sticker,.level-tile,.stat-pill .icon.heart{animation:none!important}}.brand{align-items:center;gap:7px;text-decoration:none;display:flex}.brand img{width:auto;height:32px;display:block}.brand-name{font-family:var(--font-round);letter-spacing:-.02em;font-size:20px;font-weight:700;line-height:1}.brand-name .learn{color:var(--text)}.brand-name .guage{background:linear-gradient(180deg, var(--sky), var(--accent-fill));color:#0000;-webkit-background-clip:text;background-clip:text}.header.large .header-bar{height:46px}.header.large .header-bar .spacer{display:none}.welcome-logo{filter:drop-shadow(0 8px 24px #0b6bf62e);width:min(300px,78%);height:auto;margin:4px auto 0;display:block}.tone-chart{flex-direction:column;gap:8px;display:flex}.tone-head{color:var(--muted);align-items:center;gap:14px;font-size:14px;display:flex}.tone-head .legend{align-items:center;gap:6px;display:inline-flex}.tone-head .swatch{background:var(--chart);border-radius:2px;width:16px;height:3px}.tone-head .swatch.mine{background:var(--chart-2)}.tone-score{color:var(--text);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:700}.tone-chart .chart svg{touch-action:pan-y;-webkit-user-select:none;user-select:none}.tone-chart .grid.faint{stroke-dasharray:2 4}.tone-line{fill:none;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.tone-line.native{stroke:var(--chart)}.tone-line.mine{stroke:var(--chart-2);filter:drop-shadow(0 0 1.5px var(--card))}.tone-chart text.syllable{fill:var(--text);font-size:14px;font-weight:600}.tone-chart text.end-label{fill:var(--muted);font-size:11px;font-weight:600}.tone-chart .crosshair{stroke:var(--faint);stroke-width:1px}.tone-chart .chart-tip{white-space:nowrap}.tone-note{color:var(--muted);place-items:center;margin:0;font-size:14px;display:grid;position:absolute;inset:0}.tone-verdict{color:var(--muted);margin:0;font-size:14px}.tone-verdict.ok{color:var(--ok);font-weight:600}.tone-verdict.close{color:var(--close);font-weight:600}.tone-verdict.wrong{color:var(--wrong);font-weight:600}.banner-chart{background:var(--card);color:var(--text);border-radius:14px;padding:10px 12px}.banner-chart .tone-verdict{font-size:13px}.char-grid{grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:8px;display:grid}.char-tile{border:2px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;font:inherit;box-shadow:0 3px 0 var(--border);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px 8px;display:flex;position:relative}.char-tile.started{border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.char-tile.mastered{border-color:var(--ok);background:var(--ok-bg)}.char-glyph{font-size:30px;font-weight:500;line-height:1.1}.char-pinyin{color:var(--muted);font-size:13px}.char-badge{color:var(--ok);position:absolute;top:5px;right:5px}.write-pinyin{color:var(--accent);letter-spacing:var(--tight);font-size:26px;font-weight:800}.write-pad{aspect-ratio:1;background:var(--card);border:1px solid var(--border);width:min(300px,100%);box-shadow:var(--shadow);border-radius:18px;margin:0 auto;position:relative;overflow:hidden}.write-guide{width:100%;height:100%;position:absolute;inset:0}.write-guide path{stroke:var(--hairline);stroke-width:.4px;stroke-dasharray:2 2;fill:none}.write-box{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:relative}.write-box svg{display:block}.story-level{flex-direction:column;gap:10px;display:flex}.story-score{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}.story-score.full{color:var(--ok)}.story-head{gap:12px}.story-title{letter-spacing:var(--tight);font-size:24px;font-weight:800}.story-toggles{flex-wrap:wrap;gap:8px}.chip-toggle{border:2px solid var(--border);color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;font-weight:700;display:inline-flex}.chip-toggle:has(input:checked){border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.chip-toggle input{accent-color:var(--accent);margin:0}.speed-pick{gap:6px;display:inline-flex}.speed-pick .chip-toggle{font:inherit;background:0 0;font-size:14px;font-weight:600}.speed-pick .chip-toggle[aria-checked=true]{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.story-lines{flex-direction:column;gap:10px;display:flex}.story-line{flex-direction:column;gap:4px;scroll-margin:120px;display:flex}.story-line .speaker{color:var(--muted);padding:0 6px;font-size:12px;font-weight:700}.story-line .bubble{background:var(--card);border:2px solid var(--border);box-shadow:0 3px 0 var(--border);border-radius:18px;padding:12px 44px 12px 14px;transition:border-color .2s,box-shadow .2s;position:relative}.dialogue .story-line{max-width:88%}.dialogue .story-line.right{align-self:flex-end;align-items:flex-end}.dialogue .story-line.right .bubble{background:var(--accent-bg)}.story-line.active .bubble{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset}.line-text{margin:0;font-size:19px;line-height:1.55}.line-text .word{font:inherit;color:inherit;cursor:pointer;-webkit-text-decoration:underline dotted color-mix(in srgb, var(--muted) 55%, transparent);text-decoration:underline dotted color-mix(in srgb, var(--muted) 55%, transparent);text-underline-offset:4px;background:0 0;border:0;border-radius:6px;margin:0;padding:0 1px}.line-text .word.picked{background:var(--xp);color:#0a1a3a;text-decoration:none}.line-pinyin{color:var(--accent);margin:2px 0 0;font-size:15px}.line-en{color:var(--muted);margin:6px 0 0;font-size:15px}.line-play{position:absolute;top:8px;right:8px}.bubble:has(>.line-play){min-height:66px;padding-right:66px}.story-questions{flex-direction:column;gap:10px;display:flex}.question{gap:10px}.question-q{font-size:17px;font-weight:700}.word-sheet{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:30;background:var(--card);border:1px solid var(--border);max-width:560px;box-shadow:var(--shadow);border-radius:18px;align-items:center;gap:8px;margin:0 auto;padding:14px 10px 14px 16px;display:flex;position:fixed}.word-sheet-word{letter-spacing:var(--tight);font-size:22px;font-weight:800}.word-sheet-word .pinyin{font-size:16px;font-weight:600}.word-sheet-en{color:var(--muted)}.hf-now{justify-content:center;gap:8px;min-height:168px}.hf-english{letter-spacing:var(--tight);font-size:24px;font-weight:800;line-height:1.25}.hf-target{color:var(--accent);letter-spacing:var(--tight);font-size:26px;font-weight:800}.hf-prompt{font-size:18px}.hf-controls{justify-content:center;align-items:center;gap:28px;display:flex}.hf-play{border-radius:50%;place-items:center;width:84px;height:84px;padding:0;display:grid}.hf-skip{width:52px;height:52px;margin:0}.hf-skip:disabled,.hf-play:disabled{opacity:.45}.hf-time{font-variant-numeric:tabular-nums;gap:10px}.line-grade{flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 0;display:flex}.tokens.small .token{padding:1px 6px;font-size:15px}.score-chip{font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 8px;font-size:13px;font-weight:700}.score-chip.ok{color:var(--ok);background:var(--ok-bg)}.score-chip.close{color:var(--close);background:var(--close-bg)}.score-chip.wrong{color:var(--wrong);background:var(--wrong-bg)}.shadow-bar .waveform,.shadow-bar canvas{height:36px}.shadow-status{font-size:18px;font-weight:650}.shadow-dot{background:var(--accent-bg);width:40px;height:40px;color:var(--accent);border-radius:50%;flex:none;place-items:center;display:grid}.shadow-dot.speak,.shadow-dot.heard{background:var(--wrong);color:#fff;animation:2.2s ease-out infinite beacon}.mistake-chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.mistake-chip{background:var(--bg-raised);border:1px solid var(--border);border-radius:12px;align-items:center;gap:8px;padding:6px 10px;font-size:15px;font-weight:600;display:inline-flex}.mistake-chip .dots{gap:3px;display:inline-flex}.mistake-chip .dot{background:var(--border);border-radius:50%;width:7px;height:7px}.mistake-chip .dot.on{background:var(--ok-bright)}.sheet-backdrop{z-index:40;background:#070d1a73;justify-content:center;align-items:flex-end;animation:.2s ease-out fade-in;display:flex;position:fixed;inset:0}.sheet{overscroll-behavior:contain;background:var(--card);width:100%;max-width:560px;max-height:88dvh;box-shadow:var(--shadow-lg);padding:20px max(20px, env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 18px) max(20px, env(safe-area-inset-left));animation:rise .32s var(--spring);border-radius:24px 24px 0 0;flex-direction:column;gap:12px;display:flex;overflow-y:auto}@keyframes fade-in{0%{background:0 0}}.tip-kicker{color:var(--accent);text-transform:uppercase;letter-spacing:.06em;align-items:center;gap:6px;font-size:13px;font-weight:650;display:flex}.tip-title{font-size:22px;line-height:1.25;font-family:var(--font-round);letter-spacing:var(--tight);margin:0}.tip-body{margin:0;line-height:1.5}.tip-table{border-collapse:collapse;width:100%;font-size:15px}.tip-table td{border-top:1px solid var(--border);padding:8px 10px}.tip-table tr:first-child td{border-top:0}.tip-table td:first-child{white-space:nowrap;font-weight:700}.tip-table td:last-child{color:var(--muted)}.tip-examples{flex-direction:column;gap:8px;display:flex}.tip-example{text-align:left;cursor:pointer;border:1px solid var(--border);background:var(--bg-raised);width:100%;color:var(--text);font:inherit;border-radius:14px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.tip-example .icon{color:var(--accent);flex:none;margin-top:2px}.tip-example-text{font-weight:700}.tip-example-en{color:var(--muted);font-size:14px;display:block}.tip-open{text-align:left;justify-content:flex-start;gap:8px}.tile-sub{color:var(--faint);font-size:12px}.chart-title{font-size:15px;font-weight:700}.chart .series-line{fill:none;stroke:var(--chart);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .series-dot{fill:var(--chart);stroke:var(--card);stroke-width:2px;transition:opacity .15s}.chart .series-dot.dim{opacity:.35}.chart-empty{text-align:center;color:var(--muted);pointer-events:none;place-items:center;margin:0;padding:0 12px;font-size:14px;display:grid;position:absolute;inset:0 0 24px 34px}.calendar span.head{aspect-ratio:auto;color:var(--muted);background:0 0;font-weight:700}.calendar span.future{outline:1px dashed var(--border);outline-offset:-1px;background:0 0}.dot{border-radius:50%;flex:none;width:10px;height:10px}.dot.ok{background:var(--ok-bright)}.dot.off{background:var(--flame)}.offline-row{align-items:flex-start}.offline-row .grow{flex-direction:column;gap:2px;display:flex}.offline-row .pack-btn{border-radius:12px;flex:none;width:40px;height:40px}.offline-icon{background:var(--card-2);width:30px;height:30px;color:var(--muted);border-radius:9px;flex:none;place-items:center;display:grid}.offline-icon.ok{background:var(--ok-bg);color:var(--ok)}.restore-card{border-color:var(--accent);box-shadow:none;gap:10px}.summary-row{flex-direction:column;gap:2px;display:flex}.achievement{z-index:50;padding:calc(env(safe-area-inset-top) + 16px) 16px calc(env(safe-area-inset-bottom) + 16px);background:color-mix(in srgb, var(--bg) 55%, transparent);-webkit-backdrop-filter:blur(14px)saturate(160%);backdrop-filter:blur(14px)saturate(160%);place-items:center;animation:.3s ease-out both achievement-in;display:grid;position:fixed;inset:0}.achievement-card{text-align:center;background:var(--card);border:1px solid var(--border);width:min(380px,100%);box-shadow:var(--shadow-lg);animation:achievement-card .5s .1s var(--spring) both;border-radius:28px;flex-direction:column;align-items:center;gap:12px;padding:26px 22px 22px;display:flex}.achievement-card .btn{align-self:stretch;margin-top:6px}.achievement-logo{aspect-ratio:1;place-items:center;width:170px;max-width:60vw;display:grid;position:relative}.achievement-logo .bird{width:100%;height:auto;animation:logo-spin .95s .15s var(--spring) both;display:block;position:relative}.achievement-glow{background:radial-gradient(circle, color-mix(in srgb, var(--sun) 55%, transparent), color-mix(in srgb, var(--sky) 35%, transparent) 45%, transparent 70%);border-radius:50%;animation:1.6s ease-out .4s both logo-glow;position:absolute;inset:-18%}.achievement-title{letter-spacing:-.02em;color:var(--text);margin:4px 0 0;font-size:28px;font-weight:800}.achievement-detail{color:var(--muted);margin:0;font-size:17px}.achievement-more{color:var(--muted);flex-direction:column;gap:4px;margin:0;padding:0;font-size:15px;list-style:none;display:flex}.achievement-more b{color:var(--text)}@keyframes achievement-in{0%{opacity:0}}@keyframes achievement-card{0%{opacity:0;transform:translateY(24px)scale(.94)}}@keyframes logo-spin{0%{opacity:0;transform:rotate(-540deg)scale(.15)}65%{opacity:1;transform:rotate(12deg)scale(1.08)}to{transform:rotate(0)scale(1)}}@keyframes logo-glow{0%{opacity:0;transform:scale(.6)}40%{opacity:1;transform:scale(1.05)}to{opacity:.55;transform:scale(1)}}.achievement.calm .achievement-card,.achievement.calm .achievement-logo .bird{animation:.35s ease-out both achievement-in}.achievement.calm .achievement-glow{opacity:.5;animation:none}.turn-panel{background:color-mix(in srgb, var(--bg) 97%, transparent);gap:8px;max-height:72dvh;overflow-y:auto}.turn-prompt{flex-direction:column;gap:2px;display:flex}.turn-en{font-size:18px;font-weight:700;font-family:var(--font-round)}.turn-hint{font-size:var(--text-base);color:var(--flame-text);font-weight:600}.turn-hint b{font-weight:700}.turn-text{color:var(--accent);font-size:17px;font-weight:600}.turn-actions{justify-content:space-between;align-items:center}.turn-actions .sound-sm{width:64px;height:56px}.link-btn{color:var(--accent);font:inherit;cursor:pointer;text-align:left;text-underline-offset:3px;background:0 0;border:0;padding:2px 0;font-weight:600;text-decoration:underline}.bubble .line-text .token{font-size:inherit;font-weight:inherit;border-radius:5px;margin:0 1px;padding:0 3px}.story-lines.article{gap:2px}.story-lines.article .story-line{max-width:none}.story-lines.article .bubble{box-shadow:none;background:0 0;border:0;border-radius:0;padding:4px 66px 4px 0}.story-lines.article .line-text{font-size:18px;line-height:1.55}.story-lines.article .story-line.active .bubble{background:var(--accent-bg);border-radius:10px}.streak-warning{border-color:color-mix(in srgb, var(--flame) 55%, var(--border));background:linear-gradient(135deg, color-mix(in srgb, var(--sun) 16%, var(--card)), var(--card))}.unit-note{margin:-2px 0 2px}.unit-badge{letter-spacing:.02em;color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--card));border-radius:999px;flex:none;padding:3px 8px;font-size:12px;font-weight:700}.streak-warning .btn{white-space:nowrap;gap:6px}.steps{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.step-num{background:var(--accent-fill);color:#fff;width:30px;height:30px;font-weight:700;font-family:var(--font-round);border-radius:50%;flex:none;place-items:center;display:grid}.step-title{font-size:17px;font-weight:650;font-family:var(--font-round)}.ios-label{color:var(--text);white-space:nowrap;font-weight:700}.copy-row{align-items:center;gap:8px;display:flex}.copy-text{background:var(--card-2);overflow-wrap:anywhere;border-radius:10px;flex:1;min-width:0;padding:10px;font-family:ui-monospace,Menlo,monospace;font-size:13px}.copy-btn{flex:none;min-height:44px;padding:8px 12px;font-size:15px}.move-details summary{cursor:pointer;font-weight:700}.move-details[open]{flex-direction:column;gap:8px;display:flex}.move-code{word-break:break-all;margin-top:8px;font-family:ui-monospace,Menlo,monospace;font-size:12px;font-weight:500}.move-card{border-color:color-mix(in srgb, var(--sun) 60%, var(--border));background:linear-gradient(135deg, color-mix(in srgb, var(--sun) 20%, var(--card)), var(--card) 70%);box-shadow:0 4px 0 color-mix(in srgb, var(--sun) 60%, var(--border))}.level-start{gap:12px}.level-start .start-title{font-size:var(--text-lg);margin:0}.level-tiles{flex-direction:column;gap:12px;display:flex}.level-tile{text-align:left;cursor:pointer;background:var(--tone);width:100%;color:var(--tone-ink);box-shadow:0 5px 0 var(--tone-deep);transition:transform .12s var(--ease-out), box-shadow .12s var(--ease-out);animation:tile-pop .45s var(--spring) both;border:0;border-radius:20px;align-items:center;gap:14px;margin-bottom:5px;padding:14px 16px;display:flex;position:relative;overflow:hidden}.level-tile:nth-child(2){animation-delay:40ms}.level-tile:nth-child(3){animation-delay:80ms}.level-tile:nth-child(4){animation-delay:.12s}.level-tile:nth-child(5){animation-delay:.16s}.level-tile:nth-child(6){animation-delay:.2s}.level-tile:active{transform:translateY(5px);box-shadow:0 0 #0000}.level-tile.here{outline:3px solid var(--text);outline-offset:3px}.level-cefr{width:48px;height:48px;font-size:var(--text-md);letter-spacing:var(--tight);color:var(--navy);box-shadow:0 3px 0 var(--tone-deep);background:#ffffffeb;border-radius:14px;flex:none;place-items:center;font-weight:800;display:grid}.level-tile-text{flex-direction:column;gap:2px;display:flex}.level-tile-name{font-size:var(--text-md);letter-spacing:var(--tight);font-weight:800;line-height:1.2}.level-tile-about{font-size:var(--text-sm);opacity:.92;font-weight:500;line-height:1.35}.level-tile-meta{font-size:var(--text-xs);opacity:.8;margin-top:2px;font-weight:700}.level-art{background:#ffffffeb;border-radius:50%;flex:none;place-items:center;width:56px;height:56px;display:grid}.level-here{font-size:var(--text-xs);color:var(--navy);background:#ffffffeb;border-radius:999px;flex:none;padding:6px 10px;font-weight:700}.level-bar{cursor:pointer;text-align:left;border:2px solid var(--border);background:var(--card);width:100%;color:var(--text);box-shadow:0 4px 0 var(--border);transition:transform .12s var(--ease-out), box-shadow .12s var(--ease-out);border-radius:18px;align-items:center;gap:10px;margin-bottom:4px;padding:12px 16px;display:flex}.level-bar:active{transform:translateY(4px);box-shadow:0 0 #0000}.level-bar-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:700}.level-bar-name{font-weight:700;font-size:var(--text-base)}.level-bar-name .muted{font-size:var(--text-sm);font-weight:600}.level-bar-cta{color:var(--accent);font-weight:700;font-size:var(--text-sm)}.word-day{background:linear-gradient(135deg, color-mix(in srgb, var(--sky-light) 14%, var(--card)), var(--card) 65%);gap:10px}.word-day-kicker{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-weight:700}.word-day-word{font-size:var(--text-xl);letter-spacing:var(--tight);font-weight:800;line-height:1.15}.word-day-en{color:var(--muted);margin-top:2px;font-weight:600}.word-day-example{text-align:left;cursor:pointer;border:2px solid var(--border);background:var(--bg-raised);width:100%;color:var(--text);font:inherit;border-radius:14px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.word-day-example .icon{color:var(--accent);margin-top:3px}.word-day-example .grow{flex-direction:column;gap:2px;display:flex}.word-day-sentence{font-weight:600}.word-day-example .pinyin{color:var(--accent)}.adult-gate{border-color:color-mix(in srgb, var(--flame) 45%, var(--border));box-shadow:0 4px 0 color-mix(in srgb, var(--flame) 45%, var(--border));gap:12px}.recall{flex-direction:column;gap:8px;display:flex}.recall-en{font-size:var(--text-xl);letter-spacing:var(--tight);font-weight:700;line-height:1.2}.speak-first{align-self:flex-start}.guide-shot{justify-content:center;margin:8px auto 0;display:flex}.guide-shot svg{max-width:180px;height:auto}.guide-ring{transform-box:fill-box;transform-origin:50%;animation:1.8s ease-in-out infinite guide-pulse}@keyframes guide-pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.guide-ring{animation:none}}.talk-lines{padding-bottom:8px}.talk-fix{background:var(--close-bg);color:var(--text);font-size:var(--text-sm);border-radius:12px;margin-top:8px;padding:8px 10px}.talk-fix-label{color:var(--close);font-weight:700}.talk-problem{border-color:color-mix(in srgb, var(--flame) 45%, var(--border))}.talk-note{margin:0 4px}.talk-words{flex-direction:column;gap:6px;margin:0;padding-left:18px;display:flex}.page:has(.talk-lines){padding-bottom:calc(env(safe-area-inset-bottom) + 220px)}.chip-new.culture{background:var(--accent-fill)}.fact-q{font-size:var(--text-lg);letter-spacing:var(--tight);font-weight:700;line-height:1.3}.install-card{gap:12px}.install-icon{border-radius:12px;flex:none;box-shadow:0 2px 6px #07133426}.install-close{color:var(--faint);margin:-6px -6px 0 0}.install-backdrop{z-index:60;background:#070d1a8c;place-items:center;padding:16px;animation:.2s ease-out fade-in;display:grid;position:fixed;inset:0}.install-guide{text-align:center;width:min(380px,100%);animation:achievement-card .4s var(--spring) both;align-items:stretch;gap:10px}.install-logo{width:140px;height:auto;animation:logo-spin .9s var(--spring) both;align-self:center}.install-dots{justify-content:center;gap:6px;display:flex}.install-dots span{background:var(--border);border-radius:50%;width:8px;height:8px;transition:background .2s,width .2s}.install-dots span.on{background:var(--accent-fill);border-radius:4px;width:22px}.install-step{text-transform:uppercase;letter-spacing:.08em;font-weight:700}.install-art{width:100%;height:auto;display:block}.install-arrow{z-index:61;pointer-events:none;animation:.9s ease-in-out infinite arrow-bounce;position:fixed}.install-arrow.bottom{left:calc(50% - 20px);bottom:calc(env(safe-area-inset-bottom) + 6px)}.install-arrow.bottom-right{right:22px;bottom:calc(env(safe-area-inset-bottom) + 6px)}.install-arrow.top{animation-name:arrow-bounce-up;top:6px;right:80px;transform:rotate(180deg)}@keyframes arrow-bounce{0%,to{translate:0}50%{translate:0 10px}}@keyframes arrow-bounce-up{0%,to{translate:0}50%{translate:0 -10px}}@media (prefers-reduced-motion:reduce){.install-arrow,.install-logo,.install-guide{animation:none!important}}.heatmap{flex-direction:column;gap:8px;display:flex}.heatmap-words{flex-wrap:wrap;gap:6px;display:flex}.heat{font:inherit;cursor:pointer;color:var(--text);border:2px solid #0000;border-radius:10px;padding:4px 10px;font-size:22px;font-weight:700;line-height:1.2;position:relative}.heatmap.small .heat{font-size:var(--text-base);border-radius:8px;padding:2px 7px}.heat.ok{background:var(--ok-bg);color:var(--ok);cursor:default}.heat.close{background:color-mix(in srgb, var(--sun) 28%, var(--card));color:var(--close);border-color:color-mix(in srgb, var(--sun) 60%, transparent)}.heat.wrong{background:var(--wrong-bg);color:var(--wrong);border-color:color-mix(in srgb, var(--wrong) 40%, transparent)}.heat.picked{outline:3px solid var(--accent);outline-offset:1px}.heat-tone{background:var(--close);color:#fff;border-radius:999px;padding:1px 5px;font-size:11px;font-weight:700;position:absolute;top:-10px;right:-6px}.heatmap-legend{flex-wrap:wrap;align-items:center;gap:4px 6px;display:flex}.heatmap-legend .dot{width:9px;height:9px}.heatmap-legend .dot.ok{background:var(--ok-bright)}.heatmap-legend .dot.close{background:var(--sun)}.heatmap-legend .dot.wrong{background:var(--wrong-bright)}.word-practice{background:var(--card);border:2px solid var(--border);color:var(--text);animation:pop .3s var(--spring);border-radius:16px;flex-direction:column;gap:8px;padding:12px;display:flex}.word-practice-word{font-size:var(--text-xl);letter-spacing:var(--tight);overflow-wrap:anywhere;font-weight:800}.word-practice-head{flex-wrap:wrap}.word-practice-head>.grow{flex-basis:100%}.word-practice-result{margin:0;font-weight:700}.word-practice-result.ok{color:var(--ok)}.word-practice-result.close{color:var(--close)}.word-practice-result.wrong{color:var(--wrong)}.banner .heatmap-legend{color:inherit;opacity:.8}.weekly-icon{background:var(--accent-bg);width:38px;height:38px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid}.weekly.won .weekly-icon{background:var(--ok-bg);color:var(--ok)}.weekly.won{border-color:color-mix(in srgb, var(--ok-bright) 45%, var(--border))}.weekly-count{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:700}.weekly-history{flex-direction:column;margin:4px 0 0;padding:0;list-style:none;display:flex}.weekly-history li{border-top:1px solid var(--hairline);font-size:var(--text-sm);align-items:center;gap:10px;padding:8px 2px;display:flex}.weekly-mark{width:22px;color:var(--faint);place-items:center;display:grid}.weekly-history li.won .weekly-mark{color:var(--ok)}.karaoke{flex-direction:column;gap:10px;display:flex}.karaoke-line{background:var(--card);border:2px solid var(--border);transition:border-color .2s, transform .25s var(--spring);border-radius:18px;padding:12px 14px}.karaoke-line.active{border-color:var(--accent);transform:scale(1.02)}.karaoke-line.you{border-color:var(--flame);background:color-mix(in srgb, var(--sun) 12%, var(--card))}.karaoke-turn{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--flame-text);margin-bottom:2px;font-weight:700}.karaoke-text{margin:0;font-size:21px;font-weight:700;line-height:1.6}.kw{border-radius:4px;transition:color .12s,background-color .12s,box-shadow .12s}.kw.sung{color:var(--accent)}.kw.now{color:#fff;background:var(--accent-fill);box-shadow:0 0 0 3px var(--accent-fill)}.karaoke-line.you .kw.now{background:var(--flame);box-shadow:0 0 0 3px var(--flame)}.story-head .btn{white-space:nowrap}.karaoke-text ruby{ruby-position:over;margin:0 1px}.karaoke-text rt{font-size:12px;font-weight:700}.tone1{color:#0164f9}.tone2{color:#0e8a4a}.tone3{color:#c4630a}.tone4{color:#d42430}.tone5{color:var(--muted)}.kw.now .tone1,.kw.now .tone2,.kw.now .tone3,.kw.now .tone4,.kw.now .tone5{color:#fff}.tone-legend span{font-weight:700}.camera-frame{aspect-ratio:3/4;background:var(--card-2);border:2px solid var(--border);border-radius:22px;width:100%;max-height:56dvh;position:relative;overflow:hidden}.camera-video{object-fit:cover;opacity:0;width:100%;height:100%;display:block}.camera-video.on{opacity:1}.camera-empty,.camera-busy{text-align:center;align-content:center;place-items:center;gap:10px;padding:24px;display:grid;position:absolute;inset:0}.camera-busy{color:#fff;background:#070d1a59}.camera-thumb{object-fit:cover;border-radius:14px;flex:none;width:64px;height:64px}.camera-result{animation:pop .35s var(--spring);gap:12px}.bird-eye,.bird-body,.bird-look{transform-box:fill-box}.bird-eye{transform-origin:50%;transition:transform 70ms ease-in}.bird.blink .bird-eye{transform:scaleY(.1)}.bird-body{transform-origin:50% 100%}.bird.seen .bird-body{animation:3.4s ease-in-out infinite bird-breathe-soft}.bird-look{transform-origin:30% 90%;transform:rotate(calc(var(--glance,0) * 5deg));transition:transform .7s var(--spring)}.bird-layer.in{animation:.28s both bird-layer-in}.bird-layer.out{pointer-events:none;animation:.28s both bird-layer-out}@keyframes bird-breathe-soft{0%,to{transform:scale(1)}50%{transform:scale(1.02,.985)}}@keyframes bird-layer-in{0%{opacity:0;transform:scale(.96)}}@keyframes bird-layer-out{to{opacity:0}}.bird-layer{transform-box:view-box;transform-origin:60px 110px}@media (prefers-reduced-motion:reduce){.bird.seen .bird-body,.bird-look,.bird-eye{transition:none!important;animation:none!important;transform:none!important}.bird-layer.in{animation:.2s both bird-layer-fade}}@keyframes bird-layer-fade{0%{opacity:0}}.credits-list{flex-direction:column;gap:4px;margin:4px 0 0;padding-left:18px;display:flex}.credits-list a{color:var(--accent)}.step-strip{flex-wrap:wrap;gap:6px;margin:10px 2px 0;padding:0;list-style:none;display:flex}.step-chip{font-size:var(--text-xs);background:var(--card-2);color:var(--muted);border:1px solid var(--border);border-radius:999px;align-items:center;gap:6px;padding:5px 10px 5px 5px;font-weight:700;display:inline-flex}.step-num{background:var(--border);width:20px;height:20px;color:var(--text);border-radius:50%;place-items:center;font-size:11px;display:grid}.step-chip.current,.step-chip.open{color:var(--text);border-color:var(--accent)}.step-chip.current .step-num,.step-chip.open .step-num{background:var(--accent-fill);color:#fff}.step-chip.done{color:var(--ok);border-color:color-mix(in srgb, var(--ok-bright) 55%, transparent)}.step-chip.done .step-num{background:var(--ok-bright);color:#fff}.step-chip.locked{opacity:.7}.path-coin.class-node{--tone:#fcc50e;--tone-deep:#c99500;color:var(--navy)}.path-step.current .class-node{animation:node-bounce 2s var(--spring) infinite}@media (prefers-reduced-motion:reduce){.path-step.current .class-node{animation:none}}.path-coin.test-coin{--tone:#f8820c;--tone-deep:#b85a00;--edge:6px;width:70px;height:64px}.class-page{padding:8px 16px calc(env(safe-area-inset-bottom) + 16px);box-sizing:border-box;flex-direction:column;gap:12px;width:100%;max-width:560px;margin:0 auto;display:flex}.class-head{flex-direction:column;gap:4px;display:flex}.class-kicker{font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}.class-skip{align-self:flex-start;min-height:40px;padding:8px 12px}.class-teacher{align-items:flex-end;gap:10px;display:flex}.class-teacher .char-stage{flex:none;width:112px}.class-teacher .char-stage svg{width:112px;height:auto}.class-teacher .char-name{font-size:12px}.class-bubble{background:var(--card);border:1px solid var(--border);font-size:var(--text-sm);color:var(--text);box-shadow:var(--shadow-sm,0 2px 8px #07133414);border-radius:18px 18px 18px 6px;flex:1;max-height:240px;padding:10px 14px;line-height:1.45;position:relative;overflow-y:auto}.class-board{animation:class-board-in .3s var(--ease-out) both;gap:10px;padding:18px 16px;position:relative}@keyframes class-board-in{0%{opacity:0;transform:translateY(8px)}}.class-bird{pointer-events:none;position:absolute;top:-26px;right:8px}.class-intro,.class-word,.class-rule,.class-talk{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.class-intro,.class-word{text-align:center;align-items:center}.class-title{font-size:var(--text-lg);letter-spacing:var(--tight);margin:0;font-weight:800}.class-target{font-size:22px;font-weight:700}.class-target.big{font-size:34px}.class-en{font-size:var(--text-md);color:var(--muted);margin:0;font-weight:600}.class-pic{place-items:center;min-height:64px;display:grid}.class-tools{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.class-tips,.class-example,.class-why{text-align:left;background:var(--card-2);border-radius:14px;flex-direction:column;align-self:stretch;gap:4px;padding:10px 12px;display:flex}.class-tips p,.class-example p{margin:0}.class-why{border-left:4px solid var(--sun)}.class-tips-head{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.class-say{color:var(--accent);align-items:center;gap:6px;margin:2px 0 0;font-weight:700;display:inline-flex}.class-show{margin:0;font-size:26px;font-weight:700}.class-rule p{margin:0;line-height:1.5}.class-examples{flex-direction:column;align-self:stretch;gap:10px;display:flex}.class-foot{gap:8px;display:flex}.class-foot .btn.secondary{flex:none;min-width:56px}.hear{color:var(--text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:24px;align-items:center;gap:12px;min-height:48px;padding:0;display:inline-flex}.hear:active{background:var(--card-2)}.class-letters{grid-template-columns:repeat(auto-fill,minmax(58px,1fr));align-self:stretch;gap:6px;display:grid}.class-letter{border:1px solid var(--border);background:var(--card);color:var(--text);font:inherit;cursor:pointer;box-shadow:0 3px 0 var(--border);border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;display:flex}.class-letter b{font-size:20px}.class-letter span{color:var(--muted);font-size:11px}.class-letter:active{box-shadow:0 1px 0 var(--border);transform:translateY(2px)}.tone-pitch{flex-direction:column;align-self:center;align-items:center;gap:2px;margin:0;display:flex}.tone-pitch svg{width:200px;height:auto}.tone-pitch figcaption{font-size:var(--text-sm);font-weight:700}.tone-grid{stroke:var(--border);stroke-width:1px}.tone-level{fill:var(--muted);font-size:8px;font-family:var(--font)}.tone-curve{fill:none;stroke:var(--border);stroke-width:3px;stroke-linecap:round}.tone-curve.on{stroke:var(--accent);stroke-width:6px}.tone-dot{fill:var(--accent)}.tone-row{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;display:grid}.tone-row .tone-pitch svg{width:120px}.repeat-card{text-align:center;align-items:center;gap:10px}.lock-hint{color:var(--muted);font-weight:700}.list-row.locked{opacity:.72}.test-roleplays{text-align:left;align-self:stretch;gap:8px}.notebook-unit{gap:10px}.notebook-words,.need-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.notebook-word{text-align:left;width:100%;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:8px 6px;display:flex}.notebook-word .icon{color:var(--accent);align-self:center}.notebook-word:active,.notebook-word.active{background:var(--card-2)}.nb-text{font-weight:700}.notebook-rule{background:var(--card-2);border-radius:12px;padding:8px 12px}.notebook-rule summary{cursor:pointer;align-items:center;gap:6px;font-weight:700;list-style:none;display:flex}.notebook-rule summary::-webkit-details-marker{display:none}.notebook-rule p{line-height:1.5}.need-card{gap:12px}@media (prefers-reduced-motion:reduce){.class-board{animation:none}}.coach{flex-direction:column;align-items:stretch;gap:10px;width:100%;scroll-margin:72px 0 16px;display:flex}.class-talk{width:100%}.class-talk .tone-pitch{margin-inline:auto}.coach-controls{grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;display:grid}.coach-controls .coach-play{justify-self:end}.coach-controls .mic{grid-column:2}.coach-play{flex:none}.coach .status{min-height:1.3em;margin:0}.coach-result{background:var(--card-2);border-radius:14px;flex-direction:column;gap:6px;margin:0;padding:10px 12px;font-weight:600;display:flex}.coach-result.ok{color:var(--ok)}.coach-result.close{color:var(--close,var(--xp))}.coach-result.wrong{color:var(--wrong)}.coach-grade{align-items:center;gap:8px;font-size:20px;font-weight:700;display:flex}.coach-detail{color:var(--text);margin:0;font-weight:600}.coach-heard{margin:0;font-weight:400}.pitch-overlay{flex-direction:column;gap:4px;margin:0;display:flex}.pitch-overlay svg{width:100%;max-height:130px}.pitch-overlay .tone-line.mine{fill:none;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.coach .waveform:not(.live){display:none}.day1-section{flex-direction:column;gap:10px;margin:0;padding:12px 0 4px;list-style:none;display:flex}.day1-btn{text-align:left;background:var(--card-2);border:2px solid var(--border);width:100%;color:var(--text);font:inherit;cursor:pointer;border-radius:18px;align-items:center;gap:12px;padding:12px 14px;display:flex}.day1-btn.done{border-color:var(--ok)}.day1-btn .day1-title{font-weight:700}.day1-num{color:#fff;background:#0164f9;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.day1-btn.done .day1-num{background:#0a7d43}.day1-page{flex-direction:column;flex:1;gap:14px;display:flex}.day1-foot{gap:10px;margin-top:auto;padding-top:8px;display:flex}.day1-word{text-align:center;flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.day1-say{margin:0}.day1-match{grid-template-columns:1fr 1fr;gap:10px;display:grid}.day1-match-col{flex-direction:column;gap:10px;display:flex}.day1-match .pair{place-items:center;min-height:76px;display:grid}.day1-match [data-pic]{gap:2px;padding:6px}.day1-pic-label{font-size:var(--text-xs);color:var(--muted);font-weight:600;line-height:1.1}.tutor-topics{grid-template-columns:1fr 1fr;gap:10px;width:100%;display:grid}.tutor-card{border-left:5px solid var(--close,var(--xp));text-align:left;gap:4px}.tutor-card.mistake{border-left-color:var(--wrong)}.tutor-better{font-size:18px;font-weight:700}.audio-btn,.audio-disc{background:var(--accent-bg);width:48px;height:48px;color:var(--accent);box-shadow:0 3px 0 color-mix(in srgb, var(--accent) 30%, var(--card));border-radius:50%;flex:none;place-items:center;display:grid}.audio-disc.big{width:72px;height:72px}.audio-btn{cursor:pointer;border:0;padding:0}.audio-btn:active:not(:disabled){box-shadow:0 1px 0 color-mix(in srgb, var(--accent) 30%, var(--card));transform:translateY(2px)}.audio-labeled{min-width:56px;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:none;align-items:center;gap:6px;padding:0;display:inline-flex}.audio-labeled:active:not(:disabled) .audio-disc{box-shadow:0 1px 0 color-mix(in srgb, var(--accent) 30%, var(--card));transform:translateY(2px)}.audio-labeled:disabled{opacity:.5;cursor:default}.audio-label{font-size:var(--text-xs);font-weight:700;line-height:1.1}.class-tools,.turn-actions,.word-practice-head,.word-sheet{gap:16px}:is(.list:has(.audio-disc),.notebook-words,.need-list,.tip-examples){flex-direction:column;gap:8px;display:flex}.lesson-top .audio-btn{box-shadow:none}.coach{padding-top:10px}
