@font-face{font-family:"Baloo 2 Variable";font-style:normal;font-display:swap;font-weight:400 800;src:url(./baloo-2-devanagari-wght-normal-B4j4n2PV.woff2) format("woff2-variations");unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:"Baloo 2 Variable";font-style:normal;font-display:swap;font-weight:400 800;src:url(./baloo-2-vietnamese-wght-normal-C4ZonJY6.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Baloo 2 Variable";font-style:normal;font-display:swap;font-weight:400 800;src:url(./baloo-2-latin-ext-wght-normal-Dz43yst_.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Baloo 2 Variable";font-style:normal;font-display:swap;font-weight:400 800;src:url(./baloo-2-latin-wght-normal-B_TVFhwJ.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-cyrillic-wght-normal-CY6AOgYE.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-vietnamese-wght-normal-U01xdrZh.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-ext-wght-normal-CXYtwYOx.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(./nunito-latin-wght-normal-BzFMHfZw.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper: #faf3e3;--paper-2: #f2e6cf;--card: #fffcf5;--ink: #2e241c;--ink-soft: #5a4636;--muted: #8a7764;--line: #e8dac2;--coral: #e4572e;--coral-deep: #c8441f;--sun: #f2b84b;--teal: #2a9d8f;--sky: #4c7fb8;--shadow: 0 24px 50px -30px rgba(90, 60, 30, .5)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{background:radial-gradient(900px 520px at 6% -10%,#ffe9c9 0%,transparent 62%),radial-gradient(760px 460px at 100% -4%,#dff2ec 0%,transparent 58%),var(--paper);background-attachment:fixed;color:var(--ink);font-family:Nunito Variable,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input{font:inherit;color:inherit}button{-webkit-tap-highlight-color:transparent}a{color:inherit}.app{max-width:1080px;margin:0 auto;padding:0 clamp(16px,3vw,28px)}.app-main{padding-bottom:92px}.app.is-focus .app-main{padding-bottom:0}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;padding:16px 0 10px;background:linear-gradient(var(--paper) 55%,rgba(250,243,227,.82));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.brand{text-decoration:none;display:inline-flex}.logo{display:inline-flex;align-items:center;gap:8px}.logo-mark{width:34px;height:34px;flex:none}.logo-text{display:inline-flex;flex-direction:column;font-weight:800;font-size:18px;line-height:1.05;letter-spacing:.02em}.logo-text small{font-size:9px;font-weight:700;letter-spacing:.16em;color:var(--muted);text-transform:uppercase;margin-top:2px}.topnav{display:flex;gap:4px;margin-left:auto}.topnav a{padding:8px 14px;border-radius:999px;text-decoration:none;font-size:14px;font-weight:700;color:var(--muted);transition:background .18s,color .18s}.topnav a:hover{color:var(--ink);background:#fff9}.topnav a.is-on{color:var(--ink);background:#fff;box-shadow:0 6px 16px -12px #5a3c1e8c}.icon-btn{width:42px;height:42px;flex:none;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink);cursor:pointer;transition:transform .15s,background .15s}.icon-btn:hover{background:#fffaf0}.icon-btn:active{transform:scale(.94)}.page{padding-top:6px;animation:pageIn .35s ease both}.eyebrow{margin:0 0 6px;font-size:12px;font-weight:800;letter-spacing:.12em;color:var(--muted)}.title{margin:0;font-size:clamp(28px,4.6vw,42px);line-height:1.12;letter-spacing:-.02em;font-weight:800}.title em{font-style:normal;color:var(--coral)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;padding:13px 20px;font-size:15px;font-weight:800;cursor:pointer;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--coral);color:#fff;box-shadow:0 14px 26px -12px #e4572ebf}.btn-primary:hover{background:var(--coral-deep)}.btn-ghost{background:#fff;color:var(--ink-soft);border:1px solid var(--line)}.btn-ghost:hover{background:#fffaf0}.btn-lg{padding:16px 24px;font-size:18px}.link-btn{display:inline-flex;align-items:center;gap:4px;border:none;background:none;color:var(--teal);font-size:13px;font-weight:800;cursor:pointer;padding:4px}.chip{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink-soft);font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .18s,border-color .18s,color .18s}.chip.is-on{background:#e7f5f1;border-color:#9ad3c7;color:#1f7a6e}.home-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:12px 0 20px}.streak-pill{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:12px;font-weight:800;color:var(--coral-deep);white-space:nowrap}.hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:24px;padding:clamp(20px,4vw,32px);border-radius:32px;background:linear-gradient(135deg,#ffe4c3,#ffd2a6 60%,#ffc9a8);box-shadow:var(--shadow)}.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;background:#ffffff59;pointer-events:none}.hero:before{width:180px;height:180px;right:-40px;top:-70px}.hero:after{width:110px;height:110px;left:42%;bottom:-70px;background:#fff3}.hero-copy{position:relative;z-index:1;flex:1;min-width:0}.hero-label{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#ffffff8c;color:#9a4b1c;font-size:12px;font-weight:800}.hero-copy h2{margin:10px 0 6px;font-size:clamp(24px,3.4vw,32px);line-height:1.15;letter-spacing:-.02em}.hero-copy p{margin:0 0 16px;color:#7c4e2a;font-size:14px;line-height:1.6;max-width:34ch}.hero .btn-primary{background:var(--ink);box-shadow:0 14px 26px -14px #2e241ccc}.hero .btn-primary:hover{background:#1c1510}.hero-ring{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:8px;flex:none}.hero-ring .ring{background:#ffffff8c;border-radius:50%}.hero-ring>span{font-size:11px;font-weight:800;color:#8a5227}.ring{position:relative;display:inline-grid;place-items:center}.ring svg{position:absolute;top:0;right:0;bottom:0;left:0}.ring-label{display:flex;flex-direction:column;align-items:center;line-height:1}.ring-label b{font-family:"Baloo 2 Variable",sans-serif;font-size:30px;font-weight:700}.ring-label small{font-size:11px;font-weight:700;color:var(--muted);margin-top:2px}.quick-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 4px}.quick{display:flex;flex-direction:column;padding:12px 14px;border-radius:18px;background:#ffffffb8;border:1px solid var(--line)}.quick span{font-size:11px;font-weight:700;color:var(--muted)}.quick b{font-family:"Baloo 2 Variable",sans-serif;font-size:24px;line-height:1.2}.quick small{font-size:10px;color:var(--muted)}.section-head{display:flex;align-items:center;justify-content:space-between;margin:28px 0 12px}.section-head h2{margin:0;font-size:18px;letter-spacing:-.01em}.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(156px,1fr));gap:12px}.cat-card{display:grid;grid-template-columns:44px 1fr;grid-template-rows:auto auto;gap:8px 10px;align-items:center;text-align:left;padding:13px;border-radius:20px;border:1px solid var(--line);background:var(--card);cursor:pointer;box-shadow:0 8px 18px -18px #5a3c1e99;transition:transform .18s,box-shadow .18s;animation:rise .5s cubic-bezier(.34,1.56,.64,1) both;animation-delay:calc(var(--i) * 50ms)}.cat-card:hover{transform:translateY(-3px);box-shadow:0 16px 26px -20px #5a3c1eb3}.cat-emoji{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-size:22px}.cat-meta{display:flex;flex-direction:column;min-width:0}.cat-meta b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cat-meta small{font-size:10px;color:var(--muted)}.cat-bar{grid-column:1 / -1;height:5px;border-radius:999px;background:#efe3ce;overflow:hidden}.cat-bar i{display:block;height:100%;border-radius:999px;transition:width .4s ease}.report-banner{width:100%;display:flex;align-items:center;gap:14px;margin:26px 0 6px;padding:16px 18px;border:none;border-radius:24px;background:var(--ink);color:#fbf4e6;text-align:left;cursor:pointer;box-shadow:var(--shadow);transition:transform .18s}.report-banner:hover{transform:translateY(-2px)}.report-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#ffffff1f;color:var(--sun);flex:none}.report-copy{flex:1;display:flex;flex-direction:column;gap:2px}.report-copy b{font-size:15px}.report-copy small{font-size:11.5px;color:#fbf4e6a8}.home-foot{margin:22px 0 4px;font-size:11.5px;line-height:1.7;color:var(--muted)}.home-foot p{margin:0}.home-foot a{text-decoration:underline;text-underline-offset:2px}.learn{min-height:100dvh;max-width:720px;margin:0 auto;padding:14px clamp(14px,4vw,26px) 30px;display:flex;flex-direction:column}.learn-top{position:relative;z-index:3;display:flex;align-items:center;gap:14px}.segments{flex:1;display:flex;gap:4px}.segments span{flex:1;height:8px;border-radius:999px;background:#eadcc4;transition:background .3s}.segments span.on{background:var(--coral)}.segments span.now{background:var(--sun)}.learn-count{font-size:13px;font-weight:800;color:var(--muted);min-width:40px;text-align:right}.learn-count small{font-weight:700;opacity:.7}.learn-topic{align-self:center;margin:14px 0 0;padding:6px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:12px;font-weight:800;color:var(--ink-soft)}.learn-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:16px 0}.word-card{width:min(420px,100%);padding:14px;border-radius:32px;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}.art{position:relative;width:100%;aspect-ratio:1;border-radius:22px;overflow:hidden;background:#f3ead8}.art img{width:100%;height:100%;object-fit:cover;display:block}.word-art{border-radius:24px}.art-color{display:grid;place-items:center;background:#f7eedc}.swatch{width:62%;aspect-ratio:1;border-radius:50%;box-shadow:inset 0 -12px 24px #0000001f,0 14px 26px -14px #0000004d}.swatch.is-white{border:2px solid #e4d6c0}.art-number{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#f7eedc}.numeral{font-family:"Baloo 2 Variable",sans-serif;font-size:74px;line-height:1;font-weight:700}.dots{display:grid;grid-template-columns:repeat(5,10px);gap:6px;justify-content:center}.dots i{width:10px;height:10px;border-radius:50%;background:var(--coral)}.art-face{display:grid;place-items:center;background:#f7eedc}.art-face svg{width:68%;height:68%}.word-info{display:flex;flex-direction:column;gap:7px;text-align:center;padding-bottom:4px}.word-line{display:flex;align-items:baseline;justify-content:center;gap:10px;flex-wrap:wrap}.word-line h1.is-long{font-size:clamp(30px,7vw,42px)}.word-line h1{margin:0;font-family:"Baloo 2 Variable",sans-serif;font-size:clamp(40px,9vw,54px);font-weight:700;line-height:1;letter-spacing:-.01em}.ipa{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;color:var(--muted)}.zh{margin:0;font-size:19px;font-weight:800;color:var(--ink-soft)}.audio-row{display:flex;gap:8px;justify-content:center;margin-top:2px}.learn-actions{width:min(420px,100%);display:flex;flex-direction:column;align-items:center;gap:9px}.learn-actions .btn{width:100%}.hint{margin:0;font-size:12px;color:var(--muted);text-align:center;line-height:1.6}.quiz-prompt{margin:0;font-size:13px;font-weight:800;letter-spacing:.08em;color:var(--muted)}.speaker{position:relative;width:132px;height:132px;border:none;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;background:linear-gradient(160deg,#ffe4c3,#ffd0a3);color:#b04a1f;cursor:pointer;box-shadow:0 22px 36px -18px #be6428a6;transition:transform .16s}.speaker:hover{transform:scale(1.04)}.speaker:active{transform:scale(.96)}.speaker span{font-size:11px;font-weight:800}.speaker:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid rgba(228,87,46,.18);animation:softPulse 2.4s ease-out infinite}.options{width:min(420px,100%);display:grid;grid-template-columns:1fr 1fr;gap:12px}.option{position:relative;padding:0;border:3px solid transparent;border-radius:22px;overflow:hidden;background:#fff;cursor:pointer;box-shadow:0 12px 22px -18px #50321499;transition:transform .16s,border-color .2s,opacity .2s}.option .art{border-radius:0}.option:hover:not(:disabled){transform:translateY(-2px)}.option:disabled{cursor:default}.option.is-right{border-color:var(--teal);animation:pop .35s ease both}.option.is-wrong{border-color:var(--coral);animation:shake .4s ease both}.option.is-right .art,.option.is-wrong .art{opacity:.95}.options:has(.is-right) .option.is-idle,.options:has(.is-wrong) .option.is-idle{opacity:.55}.mark{position:absolute;top:8px;right:8px;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff;box-shadow:0 4px 10px -4px #0006}.feedback{min-height:26px;display:flex;align-items:center;gap:6px;font-size:15px;font-weight:800;color:var(--muted)}.feedback.ok{color:var(--teal)}.feedback.no{color:var(--coral)}.summary{position:relative;z-index:2;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:20px 0}.summary-badge{width:88px;height:88px;border-radius:50%;display:grid;place-items:center;background:#fff0d2;color:#d99a26;box-shadow:0 18px 30px -18px #d29628cc}.summary h1{margin:6px 0 0;font-size:34px;letter-spacing:-.02em}.summary p{margin:0;color:var(--ink-soft);font-size:15px}.summary p b{font-family:"Baloo 2 Variable",sans-serif;font-size:22px;color:var(--coral)}.stars{display:flex;gap:6px;color:#eadcc4;margin:4px 0 8px}.stars .on{color:var(--sun);animation:pop .4s ease both}.summary .btn-ghost{width:100%}.summary .learn-actions{margin-top:6px}.learn-empty{min-height:70dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:12px 0 18px}.count-pill{padding:8px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}.count-pill b{color:var(--coral);font-family:"Baloo 2 Variable",sans-serif;font-size:16px}.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;margin-bottom:12px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:12px}.tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:7px 7px 10px;border-radius:20px;border:1px solid var(--line);background:var(--card);cursor:pointer;text-align:left;transition:transform .16s,box-shadow .16s}.tile:hover{transform:translateY(-3px);box-shadow:0 16px 26px -22px #5a3c1ecc}.tile .art{width:100%;border-radius:14px}.tile .numeral{font-size:44px}.tile .dots i{width:7px;height:7px}.tile .dots{grid-template-columns:repeat(5,7px);gap:4px}.tile-word{margin-top:6px;padding-left:3px;font-family:"Baloo 2 Variable",sans-serif;font-size:17px;font-weight:700;line-height:1.15}.tile-zh{padding-left:3px;font-size:11px;color:var(--muted)}.learned-dot{position:absolute;top:13px;right:13px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:var(--teal);color:#fff;box-shadow:0 3px 8px -3px #0006}.learned-dot.is-mastered{background:var(--sun);color:#5a3d0a}.detail{display:flex;flex-direction:column;align-items:center;gap:9px;text-align:center;padding-top:4px}.detail-art{width:100%;border-radius:22px}.detail-line{display:flex;align-items:baseline;gap:8px;margin-top:4px}.detail-line h2{margin:0;font-family:"Baloo 2 Variable",sans-serif;font-size:38px;line-height:1}.detail .zh{font-size:21px}.detail-status{margin:2px 0 6px;font-size:12px;color:var(--muted);font-weight:700}.detail .btn{width:100%}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}.stat{display:flex;flex-direction:column;padding:15px 16px;border-radius:20px;background:#fff;border:1px solid var(--line)}.stat span{font-size:11.5px;color:var(--muted);font-weight:700}.stat b{font-family:"Baloo 2 Variable",sans-serif;font-size:32px;line-height:1.2}.stat small{font-size:11px;color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:24px;padding:16px;margin-bottom:12px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.panel-head h2{margin:0;font-size:15px}.muted{font-size:11.5px;color:var(--muted);font-weight:700}.bars{display:flex;align-items:flex-end;gap:8px;height:132px;padding-top:16px}.bar{flex:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px}.bar-value{height:12px;font-size:10px;color:var(--muted);font-weight:800}.bar-track{flex:1;width:100%;min-height:36px;display:flex;align-items:flex-end;border-radius:10px;background:#f6eedf;overflow:hidden}.bar-track i{width:100%;min-height:6px;border-radius:10px;background:#e8c99b;transition:height .5s ease}.bar.is-today .bar-track i{background:var(--coral)}.bar-label{font-size:11px;color:var(--muted);font-weight:700}.weak-list{display:flex;flex-direction:column;gap:8px}.weak{display:flex;align-items:center;gap:12px;padding:7px 12px 7px 7px;border:none;border-radius:16px;background:#fbf6ea;cursor:pointer;text-align:left}.weak:hover{background:#f7eedc}.weak .art{width:46px;height:46px;flex:none;border-radius:12px}.weak-copy{flex:1;display:flex;flex-direction:column;min-width:0}.weak-copy b{font-family:"Baloo 2 Variable",sans-serif;font-size:17px}.weak-copy small{font-size:11px;color:var(--muted)}.weak>svg{color:var(--teal);flex:none}.good-note{margin:0;padding:14px;border-radius:14px;background:#eaf6f2;color:#1f7a6e;font-size:13px;font-weight:700}.cat-progress{display:flex;flex-direction:column;gap:9px}.cat-row{display:grid;grid-template-columns:92px 1fr 42px;gap:10px;align-items:center;font-size:12px}.cat-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cat-track{height:7px;border-radius:999px;background:#f1e6d2;overflow:hidden}.cat-track i{display:block;height:100%;border-radius:999px;transition:width .5s ease}.cat-count{text-align:right;color:var(--muted);font-size:11px;font-weight:700}.suggestion{display:flex;gap:12px;padding:16px;border-radius:22px;background:#fff4d9;border:1px solid #f3dda5;margin-bottom:12px}.suggestion-icon{width:40px;height:40px;flex:none;border-radius:50%;display:grid;place-items:center;background:#f9e3a8;color:#a9761c}.suggestion h3{margin:0 0 3px;font-size:14px;color:#7a5a22}.suggestion p{margin:0;font-size:12.5px;line-height:1.65;color:#7a5a22}.fine-print{margin:4px 0 0;font-size:11px;line-height:1.7;color:var(--muted)}.report-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 20px;text-align:center}.empty-icon{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--coral);border:1px solid var(--line)}.report-empty h2{margin:6px 0 0;font-size:20px}.report-empty p{margin:0 0 10px;font-size:13px;color:var(--muted)}.print-btn{width:40px;height:40px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;padding:0;background:#281c1273;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fadeIn .2s ease both}.sheet-card{width:min(520px,100%);max-height:88dvh;overflow-y:auto;padding:16px 18px calc(24px + env(safe-area-inset-bottom));border-radius:28px 28px 0 0;background:var(--card);animation:sheetUp .32s cubic-bezier(.2,.8,.2,1) both}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.sheet-head h2{margin:0;font-size:17px}.settings{display:flex;flex-direction:column;gap:10px}.settings label{font-size:12px;font-weight:800;color:var(--muted);margin-top:8px}.seg{display:flex;gap:6px;padding:4px;border-radius:999px;background:#f3e8d5}.seg button{flex:1;border:none;border-radius:999px;padding:10px;background:transparent;font-size:13px;font-weight:800;color:#7a6653;cursor:pointer}.seg button.is-on{background:#fff;color:var(--ink);box-shadow:0 4px 12px -8px #5a3c1e99}.settings .danger{margin-top:8px;color:#b3402a;border-color:#edc9be}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:center;gap:4px;padding:7px 12px calc(7px + env(safe-area-inset-bottom));background:#faf3e3f0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line)}.tabbar a{flex:1;max-width:130px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border-radius:16px;text-decoration:none;font-size:10.5px;font-weight:800;color:var(--muted)}.tabbar a.is-on{color:var(--coral);background:#e4572e14}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:-1}.confetti span{position:absolute;top:-12%;display:block;animation-name:fall;animation-timing-function:ease-in;animation-fill-mode:both}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes rise{0%{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}@keyframes sheetUp{0%{transform:translateY(30px);opacity:0}to{transform:none;opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{transform:scale(.92)}60%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes fall{to{transform:translateY(118vh) rotate(620deg);opacity:.9}}@keyframes softPulse{0%{transform:scale(.94);opacity:.7}70%{transform:scale(1.12);opacity:0}to{transform:scale(1.12);opacity:0}}@media(min-width:840px){.tabbar{display:none}.app-main{padding-bottom:48px}.sheet-backdrop{align-items:center;padding:24px}.sheet-card{border-radius:28px;max-height:82dvh}.stat-grid{grid-template-columns:repeat(4,1fr)}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}@media(max-width:839px){.topnav{display:none}.topbar>.icon-btn{margin-left:auto}}@media(max-width:520px){.hero{flex-direction:column;align-items:flex-start}.hero-ring{align-self:flex-end;margin-top:-54px}.hero-copy p{max-width:26ch}.quick-stats{gap:8px}.quick{padding:10px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media print{.topbar,.tabbar,.print-btn,.btn,.link-btn{display:none!important}body{background:#fff}.app{max-width:none}.panel,.stat{break-inside:avoid}}.practice{min-height:70dvh;padding-top:6px}.practice-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:4px}.practice-tile{display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:18px;border:1px solid var(--line);background:var(--card);cursor:pointer;text-align:left;transition:transform .16s}.practice-tile:hover{transform:translateY(-2px)}.pt-icon{width:40px;height:40px;flex:none;border-radius:13px;display:grid;place-items:center}.practice-tile.is-speak .pt-icon{background:#fbe3da;color:#b3402a}.practice-tile.is-spell .pt-icon{background:#ddf1ec;color:#1f7a6e}.pt-copy{display:flex;flex-direction:column;min-width:0}.pt-copy b{font-size:14px}.pt-copy small{font-size:11px;color:var(--muted)}.practice-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:10px 0 18px}.practice-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:20px;border:none;border-radius:26px;cursor:pointer;text-align:left;position:relative;overflow:hidden;transition:transform .18s}.practice-card:hover{transform:translateY(-3px)}.practice-card.is-speak{background:linear-gradient(150deg,#ffe4c3,#ffcf9f)}.practice-card.is-spell{background:linear-gradient(150deg,#ddf1ec,#bfe4da)}.pc-icon{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;background:#ffffffa6;color:#8a4b22}.practice-card.is-spell .pc-icon{color:#1f6f66}.practice-card b{margin-top:8px;font-size:24px;letter-spacing:-.01em}.practice-card small{font-size:12.5px;line-height:1.55;color:#7a5a3a;max-width:24ch}.practice-card.is-spell small{color:#3d6b63}.pc-stat{margin-top:8px;padding:4px 10px;border-radius:999px;background:#fff9;font-size:11px;font-weight:800}.practice-note{padding:15px 17px;border-radius:20px;background:#fff;border:1px solid var(--line)}.practice-note b{font-size:13px}.practice-note p{margin:4px 0 0;font-size:12px;line-height:1.7;color:var(--muted)}.practice-stage{width:min(520px,100%);margin:10px auto 0;display:flex;flex-direction:column;align-items:center;gap:15px;padding-bottom:30px}.practice-word-card{width:100%;padding:13px;border-radius:28px;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);display:flex;align-items:center;gap:14px;text-align:left}.practice-art{width:150px;height:150px;flex:none;border-radius:20px}.practice-word-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.practice-word-info .word-line{justify-content:flex-start}.practice-word-info .word-line h1{font-size:clamp(34px,7vw,46px)}.practice-word-info .audio-row{justify-content:flex-start}.practice .learn-topic{width:fit-content;margin-left:auto;margin-right:auto;display:block}@media(max-width:420px){.practice-art{width:112px;height:112px}.practice-word-info .word-line h1{font-size:34px}}.practice-actions{width:min(360px,100%);display:flex;flex-direction:column;gap:8px}.recorder{width:100%;display:flex;flex-direction:column;align-items:center;gap:10px}.mic-btn{width:172px;height:172px;border:none;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:linear-gradient(160deg,#ffe4c3,#ffd0a3);color:#a8481f;cursor:pointer;position:relative;box-shadow:0 22px 36px -20px #be6428b3;transition:transform .16s}.mic-btn:hover{transform:scale(1.03)}.mic-btn:active{transform:scale(.97)}.mic-icon{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:#ffffffa6;margin-bottom:2px}.mic-btn span{font-size:15px;font-weight:800}.mic-btn small{font-size:10.5px;color:#9a6a4a}.mic-btn.is-recording{background:linear-gradient(160deg,#ffd1c6,#ffb09c);color:#b3402a;animation:recPulse 1.6s ease-in-out infinite}@keyframes recPulse{0%,to{box-shadow:0 0 #e4572e4d}50%{box-shadow:0 0 0 18px #e4572e00}}.rec-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.rec-actions .btn{padding:10px 14px;font-size:13px}.rec-hint{margin:0;max-width:34ch;text-align:center;font-size:12px;line-height:1.6;color:var(--coral)}.practice-stage.is-spell{width:min(520px,100%)}.spell{width:100%;padding:16px;border-radius:28px;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);display:flex;flex-direction:column;align-items:center;gap:14px}.spell-top{width:100%;display:flex;align-items:center;gap:14px}.spell-art{width:116px;height:116px;flex:none;border-radius:18px}.spell-info{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:3px}.speaker-mini{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:#fff;display:grid;place-items:center;color:#b04a1f;cursor:pointer}.spell-zh{margin:0;font-size:20px;font-weight:800}.spell-length{margin:0;font-size:11px;font-weight:700;color:var(--muted)}.slots{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.slot{width:34px;height:44px;border-radius:9px;border-bottom:4px solid #d8c7ac;background:#fff8ea;display:grid;place-items:center;font-family:"Baloo 2 Variable",sans-serif;font-size:24px;font-weight:700;color:var(--ink);transition:background .2s,border-color .2s}.slot.is-filled{border-bottom-color:var(--teal);background:#eaf6f2;animation:pop .25s ease both}.letter-tiles{width:100%;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.letter{min-width:46px;height:52px;padding:0 10px;border:1px solid #e4d2b6;border-radius:14px;background:#fff9ee;font-family:"Baloo 2 Variable",sans-serif;font-size:24px;font-weight:700;color:#3a2a1e;cursor:pointer;box-shadow:0 4px #e7d4b6;transition:transform .12s,box-shadow .12s}.letter:hover{transform:translateY(-2px)}.letter:active{transform:translateY(2px);box-shadow:0 1px #e7d4b6}.letter.is-used{visibility:hidden}.letter.is-shake{animation:shake .4s ease both}.spell-foot{min-height:30px;display:flex;flex-direction:column;align-items:center;gap:8px}.spell-result{font-size:15px;font-weight:800}.spell-result.ok{color:var(--teal)}.spell-result.no{color:var(--coral)}.spell-miss{font-size:11px;color:var(--coral)}.output-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.output-stats>div{display:flex;flex-direction:column;padding:12px 14px;border-radius:16px;background:#fbf6ea}.output-stats b{font-family:"Baloo 2 Variable",sans-serif;font-size:26px;line-height:1.2}.output-stats span{font-size:11px;color:var(--muted);font-weight:700}.practice .summary{min-height:72dvh}@media(max-width:430px){.practice-cards{grid-template-columns:1fr}.practice-card small{max-width:30ch}}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.art.is-loading:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,#f3ead859 25%,#fffaf0f2,#f3ead859 55%);background-size:220% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-220% 0}}.art-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:#f7eedc}.art-fallback span{font-size:clamp(44px,18vw,72px);line-height:1}.art-fallback small{font-family:"Baloo 2 Variable",sans-serif;font-size:16px;font-weight:700;color:var(--muted)}.art.is-pending{background:#f3ead8}.art-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:clamp(34px,16vw,56px);opacity:.28;-webkit-user-select:none;user-select:none}.art-placeholder+img{position:relative;z-index:1}
