@font-face{font-family:Onest;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/onest-400-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Onest;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/onest-400-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Onest;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/onest-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Onest;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/onest-400-latin.woff2) format("woff2");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:Onest;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/onest-500-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Onest;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/onest-500-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Onest;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/onest-500-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Onest;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/onest-500-latin.woff2) format("woff2");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:Onest;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/onest-600-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Onest;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/onest-600-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Onest;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/onest-600-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Onest;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/onest-600-latin.woff2) format("woff2");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:Onest;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/onest-700-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Onest;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/onest-700-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Onest;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/onest-700-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Onest;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/onest-700-latin.woff2) format("woff2");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:Cormorant Infant;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/cormorant-500-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Infant;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/cormorant-500-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Cormorant Infant;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/cormorant-500-latin-ext.woff2) format("woff2");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:Cormorant Infant;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/cormorant-500-latin.woff2) format("woff2");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:Cormorant Infant;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cormorant-600-cyrillic-ext.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Infant;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cormorant-600-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Cormorant Infant;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cormorant-600-latin-ext.woff2) format("woff2");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:Cormorant Infant;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cormorant-600-latin.woff2) format("woff2");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{--ground: #f6f8fc;--ground-tint: #e9eff8;--surface: #ffffff;--surface-sunken: #eef2f9;--accent: #0051a2;--accent-deep: #003b78;--accent-soft: #dbe9f9;--accent-ink: #ffffff;--navy: #0c1b38;--seal: #c7111e;--seal-soft: #fde3e5;--gold: #f5a623;--gold-soft: #fff1d6;--jade: #1f9d83;--jade-soft: #dcf5ee;--sky: #3b82f6;--sky-soft: #dbeafe;--violet: #7c5cff;--violet-soft: #ebe6ff;--ink: #0c1b38;--ink-2: #5a6b85;--ink-3: #93a1b8;--hairline: rgba(12, 27, 56, .1);--danger: #c7111e;--radius-s: 12px;--radius: 18px;--radius-l: 26px;--shadow-card: 0 1px 2px rgba(12, 27, 56, .05), 0 10px 28px -14px rgba(12, 27, 56, .2);--shadow-pop: 0 20px 50px -20px rgba(12, 27, 56, .38);--font-ui: "Onest", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--font-zh: "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Noto Sans SC", "Microsoft YaHei", "Onest", sans-serif;--font-display: "Cormorant Infant", "Noto Serif SC", "Songti SC", "STSong", "SimSun", Georgia, serif;--nav-h: 64px;--content-w: 1240px;--tab-h: 62px}.dark{--ground: #0a1220;--ground-tint: #101c30;--surface: #142033;--surface-sunken: #0e1828;--accent: #4a95e0;--accent-deep: #0051a2;--accent-soft: #16304f;--accent-ink: #06121f;--navy: #dbe9f9;--seal: #ef5350;--seal-soft: #3a1b1d;--gold: #ffb84d;--gold-soft: #3a2e17;--jade: #35c4a6;--jade-soft: #173a32;--sky: #63a3ff;--sky-soft: #1c2b45;--violet: #a08cff;--violet-soft: #2a2347;--ink: #e8eef7;--ink-2: #9fb0c8;--ink-3: #6b7d96;--hairline: rgba(232, 238, 247, .11);--danger: #ef5350;--shadow-card: 0 1px 2px rgba(0, 0, 0, .35), 0 10px 28px -14px rgba(0, 0, 0, .7);--shadow-pop: 0 20px 50px -20px rgba(0, 0, 0, .9)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);background:var(--ground);color:var(--ink);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}.zh{font-family:var(--font-zh)}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.content{flex:1;width:100%;max-width:var(--content-w);margin:0 auto;padding:14px 16px calc(var(--tab-h) + 24px + env(safe-area-inset-bottom))}.content.narrow{max-width:640px}.app.fullscreen .content{padding-bottom:16px}.app.fullscreen .content.narrow{max-width:720px}.center-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:24px}.logo-mark{width:64px;height:64px;border-radius:18px;background:var(--accent);color:#fff;font-family:var(--font-zh);font-size:34px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px -10px #0051a28c}.muted{color:var(--ink-2)}.small{font-size:12.5px}.tiny{font-size:11.5px;color:var(--ink-3)}.hr{height:1px;background:var(--hairline);margin:16px 0}.row{display:flex;align-items:center;gap:10px}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.stack{display:flex;flex-direction:column;gap:10px}.mt{margin-top:14px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;justify-content:space-around;align-items:stretch;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--hairline)}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--ink-3);font-size:11px;font-weight:500;transition:color .15s,transform .15s}.tabbar a svg{width:24px;height:24px}.tabbar a.active{color:var(--accent)}.tabbar a.active svg{transform:translateY(-1px)}.topbar{display:flex;align-items:center;gap:10px;padding:4px 0 14px}.topbar h1{font-size:22px;font-weight:700;letter-spacing:-.01em;flex:1}.icon-btn{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--surface);box-shadow:var(--shadow-card);color:var(--ink)}.icon-btn svg{width:22px;height:22px}.icon-btn.ghost{background:transparent;box-shadow:none;color:var(--ink-2)}.card{background:var(--surface);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-card)}.card.tap{transition:transform .12s}.card.tap:active{transform:scale(.985)}.card.soft{box-shadow:none;background:var(--surface-sunken)}.card-title{font-size:15.5px;font-weight:700}.section-title{font-size:17px;font-weight:700;margin:22px 0 10px;letter-spacing:-.01em}.section-title:first-child{margin-top:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;border-radius:14px;font-weight:700;font-size:15px;background:var(--accent);color:var(--accent-ink);box-shadow:0 6px 0 var(--accent-deep);transition:transform .08s,box-shadow .08s;-webkit-user-select:none;user-select:none}.btn:active{transform:translateY(4px);box-shadow:0 2px 0 var(--accent-deep)}.btn:disabled{opacity:.45;pointer-events:none}.btn.block{width:100%}.btn.jade{background:var(--jade);box-shadow:0 6px #17806a}.btn.jade:active{box-shadow:0 2px #17806a}.btn.gold{background:var(--gold);color:#3a2400;box-shadow:0 6px #d18a0f}.btn.gold:active{box-shadow:0 2px #d18a0f}.btn.ghost{background:var(--surface);color:var(--ink);box-shadow:0 6px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.btn.ghost:active{box-shadow:0 2px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.btn.sm:active{transform:translateY(3px);box-shadow:0 1px 0 var(--accent-deep)}.btn.sm.ghost{box-shadow:0 4px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.btn.sm.ghost:active{box-shadow:0 1px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.btn svg{width:20px;height:20px}.linklike{color:var(--accent);font-weight:600}.fld{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.fld>span{font-size:12.5px;font-weight:600;color:var(--ink-2)}.fld input,.fld textarea,.fld select{width:100%;padding:13px 14px;border-radius:13px;border:1.5px solid var(--hairline);background:var(--surface);color:var(--ink);font-size:16px}.fld input:focus,.fld textarea:focus{outline:none;border-color:var(--accent)}.fld textarea{min-height:110px;resize:vertical}.error{color:var(--danger);font-size:13px}.hero{background:linear-gradient(135deg,var(--navy) 0%,var(--accent) 100%);color:#fff;border-radius:var(--radius-l);padding:18px 18px 16px;position:relative;overflow:hidden;box-shadow:0 16px 36px -18px #0c1b388c}.hero:after{content:"丝";position:absolute;right:-6px;bottom:-22px;font-family:var(--font-zh);font-size:120px;font-weight:800;opacity:.12;line-height:1}.hero-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.hero-hello{font-size:20px;font-weight:800;letter-spacing:-.01em}.hero-sub{opacity:.9;font-size:13px;margin-top:2px}.streak-pill{display:flex;align-items:center;gap:5px;padding:7px 11px;border-radius:100px;background:#ffffff2e;font-weight:700;font-size:14px;white-space:nowrap}.streak-pill svg{width:18px;height:18px;color:#ff8a4c}.streak-pill.off svg{color:#ffffff8c}.goal{margin-top:16px}.goal-row{display:flex;justify-content:space-between;font-size:12.5px;opacity:.95;margin-bottom:6px}.goal-bar{height:10px;border-radius:100px;background:#ffffff40;overflow:hidden}.goal-bar>i{display:block;height:100%;border-radius:100px;background:#ffd166;transition:width .5s cubic-bezier(.2,.8,.2,1)}.quick{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.quick .card{display:flex;flex-direction:column;gap:4px;padding:14px;min-height:92px}.quick .ic{width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;margin-bottom:4px}.quick .ic.jade{background:var(--jade-soft);color:var(--jade)}.quick .ic.sky{background:var(--sky-soft);color:var(--sky)}.quick .ic.gold{background:var(--gold-soft);color:#b46f00}.quick .ic.violet{background:var(--violet-soft);color:var(--violet)}.quick .tt{font-weight:700;font-size:14.5px}.quick .ds{font-size:12px;color:var(--ink-2)}.badge-n{position:absolute;top:12px;right:12px;min-width:22px;height:22px;padding:0 7px;border-radius:100px;background:var(--accent);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center}.unit-list{display:flex;flex-direction:column;gap:10px}.unit{display:flex;align-items:center;gap:13px;padding:13px 14px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);position:relative;transition:transform .12s}.unit:active{transform:scale(.985)}.unit .em{width:50px;height:50px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:26px;background:var(--surface-sunken);flex:0 0 auto}.unit.done .em{background:var(--jade-soft)}.unit .tt{font-weight:700;font-size:15px}.unit .ds{font-size:12px;color:var(--ink-2);margin-top:2px}.unit .meta{display:flex;gap:8px;align-items:center;margin-top:7px}.unit .pbar{flex:1;height:6px;border-radius:100px;background:var(--surface-sunken);overflow:hidden}.unit .pbar>i{display:block;height:100%;background:var(--jade);border-radius:100px}.unit .pct{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}.unit .score{position:absolute;top:10px;right:12px;font-size:11px;font-weight:700;padding:3px 8px;border-radius:100px;background:var(--gold-soft);color:#b46f00}.level-head{display:flex;align-items:baseline;gap:8px;margin:22px 0 10px}.level-head h2{font-size:17px;font-weight:800}.level-head span{font-size:12px;color:var(--ink-3)}.runner-head{display:flex;align-items:center;gap:12px;padding:6px 0 16px}.runner-head .pbar{flex:1;height:12px;border-radius:100px;background:var(--surface-sunken);overflow:hidden}.runner-head .pbar>i{display:block;height:100%;background:var(--jade);border-radius:100px;transition:width .35s cubic-bezier(.2,.8,.2,1)}.runner-head .xp{font-size:13px;font-weight:700;color:#b46f00;background:var(--gold-soft);padding:5px 10px;border-radius:100px;white-space:nowrap}.ex-title{font-size:19px;font-weight:800;margin-bottom:14px;letter-spacing:-.01em}.ex-body{min-height:45vh}.prompt-card{background:var(--surface);border-radius:var(--radius-l);padding:24px 18px;text-align:center;box-shadow:var(--shadow-card);margin-bottom:16px}.prompt-card .hz{font-family:var(--font-zh);font-size:46px;font-weight:700;line-height:1.2;letter-spacing:.04em}.prompt-card .py{color:var(--accent);font-size:17px;margin-top:4px;font-weight:600}.prompt-card .tr{color:var(--ink-2);font-size:15px;margin-top:8px}.prompt-card .big-tr{font-size:22px;font-weight:700}.speaker-btn{width:62px;height:62px;border-radius:50%;background:var(--sky-soft);color:var(--sky);display:inline-flex;align-items:center;justify-content:center;margin:4px auto 8px;transition:transform .1s}.speaker-btn:active{transform:scale(.92)}.speaker-btn svg{width:30px;height:30px}.speaker-btn.sm{width:40px;height:40px;margin:0}.speaker-btn.sm svg{width:22px;height:22px}.speaker-btn.playing{animation:pulse 1s infinite}@keyframes pulse{0%,to{box-shadow:0 0 #3b82f659}50%{box-shadow:0 0 0 10px #3b82f600}}.options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.options.one-col{grid-template-columns:1fr}.opt{padding:16px 12px;border-radius:16px;background:var(--surface);text-align:center;font-weight:600;font-size:16px;box-shadow:0 4px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline);transition:transform .08s,background .15s;min-height:60px;display:flex;align-items:center;justify-content:center}.opt .zh{font-size:26px;font-weight:700}.opt:active{transform:translateY(3px);box-shadow:0 1px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.opt.sel{background:var(--sky-soft);box-shadow:0 4px 0 var(--sky),inset 0 0 0 2px var(--sky)}.opt.ok{background:var(--jade-soft);box-shadow:0 4px 0 var(--jade),inset 0 0 0 2px var(--jade);color:var(--jade)}.opt.bad{background:var(--accent-soft);box-shadow:0 4px 0 var(--accent),inset 0 0 0 2px var(--accent);color:var(--accent)}.opt:disabled{pointer-events:none}.match{display:grid;grid-template-columns:1fr 1fr;gap:10px}.match .col{display:flex;flex-direction:column;gap:10px}.match .opt.gone{opacity:.35;pointer-events:none}.match .opt.shake{animation:shake .35s}@keyframes shake{0%,to{transform:none}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.tokens-target{min-height:74px;border-bottom:2px dashed var(--hairline);display:flex;flex-wrap:wrap;gap:8px;padding:8px 4px 14px;margin-bottom:16px;align-content:flex-start}.tokens-bank{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.tok{padding:10px 14px;border-radius:12px;background:var(--surface);font-family:var(--font-zh);font-size:22px;font-weight:600;box-shadow:0 4px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline);transition:transform .08s}.tok:active{transform:translateY(3px);box-shadow:0 1px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.tok.ghost{visibility:hidden}.tok.blank{min-width:52px;background:var(--gold-soft);box-shadow:inset 0 0 0 2px var(--gold)}.sentence-line{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;font-family:var(--font-zh);font-size:28px;font-weight:600;margin:10px 0 18px}.flash{perspective:1200px;height:300px;margin-bottom:18px}.flash-inner{position:relative;width:100%;height:100%;transition:transform .5s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}.flash.flipped .flash-inner{transform:rotateY(180deg)}.flash-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px;text-align:center}.flash-face.back{transform:rotateY(180deg);background:var(--gold-soft)}.flash-face .hz{font-family:var(--font-zh);font-size:64px;font-weight:700}.flash-face .py{color:var(--accent);font-size:20px;font-weight:600}.flash-face .tr{font-size:24px;font-weight:700}.flash-face .ex{font-size:14px;color:var(--ink-2);margin-top:10px;line-height:1.5}.flash-face .hint{position:absolute;bottom:12px;font-size:11.5px;color:var(--ink-3)}.flash-counter{text-align:center;font-size:12.5px;color:var(--ink-3);margin-bottom:10px}.grade-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.grade-row.four{grid-template-columns:repeat(4,1fr)}.grade-row .btn{padding:12px 6px;font-size:13.5px}.writer-wrap{display:flex;flex-direction:column;align-items:center;gap:12px}.writer-box{width:min(260px,70vw);height:min(260px,70vw);background:var(--surface);border-radius:22px;box-shadow:var(--shadow-card);position:relative;overflow:hidden}.writer-box:before,.writer-box:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(var(--hairline),var(--hairline));background-size:1px 100%;background-repeat:no-repeat;background-position:center}.writer-box:after{background-size:100% 1px}.writer-chars{display:flex;gap:8px}.writer-chars .c{font-family:var(--font-zh);font-size:22px;padding:6px 12px;border-radius:10px;background:var(--surface-sunken)}.writer-chars .c.on{background:var(--accent-soft);color:var(--accent);font-weight:700}.writer-chars .c.done{background:var(--jade-soft);color:var(--jade)}.rec-btn{width:92px;height:92px;border-radius:50%;background:var(--accent);color:#fff;margin:14px auto 6px;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 0 var(--accent-deep),0 16px 36px -14px #e5484dcc;transition:transform .1s}.rec-btn svg{width:40px;height:40px}.rec-btn:active{transform:translateY(5px);box-shadow:0 3px 0 var(--accent-deep)}.rec-btn.on{background:var(--jade);box-shadow:0 8px #17806a;animation:pulse-rec 1s infinite}@keyframes pulse-rec{0%,to{outline:0 solid rgba(31,157,131,.3)}50%{outline:14px solid rgba(31,157,131,0)}}.rec-hint{text-align:center;font-size:13px;color:var(--ink-2)}.score-ring{display:flex;align-items:center;gap:16px;justify-content:center;margin:14px 0}.ring{width:110px;height:110px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative}.ring>b{font-size:34px;font-weight:800}.ring>span{position:absolute;bottom:16px;font-size:11px;color:var(--ink-2)}.subscores{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.subscores .card{text-align:center;padding:10px}.subscores b{font-size:20px;display:block}.subscores span{font-size:11.5px;color:var(--ink-2)}.word-scores{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}.word-scores .w{font-family:var(--font-zh);font-size:26px;font-weight:700;padding:4px 8px;border-radius:10px}.word-scores .w.good{color:var(--jade);background:var(--jade-soft)}.word-scores .w.mid{color:#b46f00;background:var(--gold-soft)}.word-scores .w.bad{color:var(--accent);background:var(--accent-soft)}.demo-tag{display:inline-flex;gap:6px;align-items:center;font-size:11.5px;color:var(--ink-2);background:var(--surface-sunken);padding:5px 10px;border-radius:100px}.feedback-bar{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:16px 16px calc(16px + env(safe-area-inset-bottom));animation:slideUp .25s cubic-bezier(.2,.8,.2,1)}.feedback-bar .inner{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.feedback-bar.ok{background:var(--jade-soft)}.feedback-bar.bad{background:var(--accent-soft)}.feedback-bar .tt{font-weight:800;font-size:18px}.feedback-bar.ok .tt{color:var(--jade)}.feedback-bar.bad .tt{color:var(--accent)}.feedback-bar .ans{font-size:14px;color:var(--ink-2)}.feedback-bar .ans .zh{font-size:18px;font-weight:700;color:var(--ink)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:none}}.bottom-cta{position:fixed;left:0;right:0;bottom:0;z-index:21;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--ground) 70%,transparent)}.bottom-cta .inner{max-width:720px;margin:0 auto}.has-cta{padding-bottom:110px!important}.app:not(.fullscreen) .bottom-cta{bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:12px}.app:not(.fullscreen) .has-cta{padding-bottom:calc(var(--tab-h) + 96px)!important}.result{text-align:center;padding:30px 16px 16px}.result .big-em{font-size:72px;line-height:1;margin-bottom:10px}.result h1{font-size:26px;font-weight:800;letter-spacing:-.01em}.result .score-big{font-size:56px;font-weight:800;color:var(--jade);margin:8px 0 0;letter-spacing:-.02em}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.stat-grid .card{padding:12px 8px;text-align:center}.stat-grid b{font-size:20px;display:block}.stat-grid span{font-size:11.5px;color:var(--ink-2)}.xp-pop{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:100px;background:var(--gold-soft);color:#b46f00;font-weight:800;font-size:18px}.xp-pop svg{width:20px;height:20px}.duel-hero{background:linear-gradient(135deg,var(--violet) 0%,#4f8bff 100%);color:#fff;border-radius:var(--radius-l);padding:20px 18px;box-shadow:0 16px 36px -18px #7c5cffb3}.duel-hero h1{font-size:24px;font-weight:800}.duel-hero p{opacity:.9;margin-top:4px;font-size:13.5px}.vs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:16px 0}.vs .p{text-align:center}.vs .av{width:58px;height:58px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-card);display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 6px}.vs .nm{font-weight:700;font-size:14px}.vs .sc{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}.vs .vs-mark{font-weight:900;font-size:22px;color:var(--accent);font-style:italic}.duel-timer{height:8px;border-radius:100px;background:var(--surface-sunken);overflow:hidden;margin-bottom:14px}.duel-timer>i{display:block;height:100%;background:var(--gold);transition:width .1s linear}.duel-q{text-align:center;font-size:12.5px;color:var(--ink-3);margin-bottom:6px}.opp-progress{display:flex;gap:4px;justify-content:center;margin:6px 0 14px}.opp-progress i{width:14px;height:6px;border-radius:3px;background:var(--surface-sunken)}.opp-progress i.ok{background:var(--jade)}.opp-progress i.bad{background:var(--accent)}.searching{text-align:center;padding:40px 0}.searching .spin{width:64px;height:64px;border-radius:50%;border:5px solid var(--surface-sunken);border-top-color:var(--violet);margin:0 auto 14px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.lb{display:flex;flex-direction:column;gap:6px}.lb .rowi{display:flex;align-items:center;gap:12px;padding:11px 12px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card)}.lb .rowi.me{box-shadow:inset 0 0 0 2px var(--accent)}.lb .rk{width:26px;text-align:center;font-weight:800;color:var(--ink-3)}.lb .rk.top{color:var(--gold);font-size:18px}.lb .nm{flex:1;font-weight:600}.lb .xp{font-weight:800;color:#b46f00}.history .rowi{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border-radius:12px;box-shadow:var(--shadow-card);font-size:13.5px}.history .res{font-weight:800;width:48px}.history .res.WIN{color:var(--jade)}.history .res.LOSE{color:var(--accent)}.history .res.DRAW{color:var(--ink-3)}.chat-wrap{display:flex;flex-direction:column;min-height:calc(100vh - var(--tab-h) - 28px - env(safe-area-inset-bottom));margin:-14px -16px calc(-1 * (var(--tab-h) + 24px + env(safe-area-inset-bottom)))}.chat-head{position:sticky;top:0;z-index:12;display:flex;align-items:center;gap:11px;padding:12px 16px;background:color-mix(in srgb,var(--ground) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline)}.agent-av{width:42px;height:42px;border-radius:50%;background:var(--accent-soft);display:flex;align-items:center;justify-content:center;font-size:22px;flex:0 0 auto}.agent-name{font-size:15.5px;font-weight:700}.agent-status{display:flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-3)}.dot-online{width:6px;height:6px;border-radius:50%;background:var(--jade);box-shadow:0 0 0 2px color-mix(in srgb,var(--jade) 25%,transparent)}.chat-body{flex:1;display:flex;flex-direction:column;gap:9px;padding:16px 16px 8px}.bubble{max-width:86%;padding:11px 14px;font-size:15px;line-height:1.55;border-radius:18px;white-space:pre-wrap;word-break:break-word;animation:bubbleIn .22s cubic-bezier(.2,.85,.3,1);position:relative}@keyframes bubbleIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.bubble.bot{align-self:flex-start;background:var(--surface);color:var(--ink);border-bottom-left-radius:5px;box-shadow:var(--shadow-card)}.bubble.user{align-self:flex-end;background:var(--accent);color:var(--accent-ink);border-bottom-right-radius:5px}.bubble.typing{display:flex;gap:4px;padding:14px 16px}.bubble.typing span{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:blink 1.2s infinite}.bubble.typing span:nth-child(2){animation-delay:.2s}.bubble.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.3}30%{opacity:1}}.bubble .tools{display:flex;gap:6px;margin-top:8px}.bubble .tools button{font-size:11.5px;color:var(--sky);font-weight:600;display:inline-flex;align-items:center;gap:4px}.bubble .tools svg{width:14px;height:14px}.suggests{display:flex;gap:8px;overflow-x:auto;padding:4px 16px 10px;scrollbar-width:none}.suggests::-webkit-scrollbar{display:none}.suggests button{flex:0 0 auto;padding:8px 13px;border-radius:100px;background:var(--surface);box-shadow:var(--shadow-card);font-size:13px;font-weight:600;color:var(--ink-2)}.chat-input{position:sticky;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));z-index:21;display:flex;align-items:flex-end;gap:9px;padding:10px 16px;background:color-mix(in srgb,var(--ground) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--hairline)}.chat-input textarea{flex:1;padding:11px 15px;border-radius:20px;border:1.5px solid var(--hairline);background:var(--surface);color:var(--ink);font-size:15px;resize:none;max-height:120px;line-height:1.4}.chat-input textarea:focus{outline:none;border-color:var(--accent)}.chat-input .send{width:42px;height:42px;border-radius:50%;flex:0 0 auto;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center}.chat-input .send:disabled{opacity:.35}.chat-input .send svg{width:20px;height:20px}.chat-wrap.with-tab{margin-bottom:0;min-height:calc(100vh - 14px)}.course{display:flex;gap:12px;padding:12px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card)}.course .cover{width:96px;height:72px;border-radius:12px;background:var(--surface-sunken);object-fit:cover;flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:28px}.course .tt{font-weight:700;font-size:15px}.course .ds{font-size:12.5px;color:var(--ink-2);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course .meta{font-size:11.5px;color:var(--ink-3);margin-top:6px;display:flex;gap:8px;align-items:center}.tag{font-size:11px;font-weight:700;padding:3px 8px;border-radius:100px;background:var(--jade-soft);color:var(--jade)}.tag.lock{background:var(--surface-sunken);color:var(--ink-3)}.tag.gold{background:var(--gold-soft);color:#b46f00}.lesson-row{display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card)}.lesson-row .n{width:34px;height:34px;border-radius:10px;background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--ink-2);flex:0 0 auto}.lesson-row.done .n{background:var(--jade-soft);color:var(--jade)}.lesson-row .tt{font-weight:600;font-size:14.5px}.lesson-row .ds{font-size:12px;color:var(--ink-3)}.lesson-row svg{width:20px;height:20px;color:var(--ink-3)}.video-wrap{background:#000;overflow:hidden;aspect-ratio:16/9;margin:0 -16px 14px;border-radius:0}.video-wrap video{width:100%;height:100%;display:block}.me-head{display:flex;align-items:center;gap:14px;padding:4px 0 16px}.me-avatar{width:64px;height:64px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:26px;font-weight:800;display:flex;align-items:center;justify-content:center}.me-name{font-size:20px;font-weight:800}.me-title{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:#b46f00;background:var(--gold-soft);padding:3px 10px;border-radius:100px;margin-top:4px}.me-title svg{width:14px;height:14px}.title-bar{height:8px;border-radius:100px;background:var(--surface-sunken);overflow:hidden;margin-top:8px}.title-bar>i{display:block;height:100%;background:var(--gold);border-radius:100px}.heat{display:flex;gap:4px;margin-top:8px}.heat i{flex:1;height:28px;border-radius:6px;background:var(--surface-sunken)}.heat i.l1{background:color-mix(in srgb,var(--jade) 30%,var(--surface-sunken))}.heat i.l2{background:color-mix(in srgb,var(--jade) 60%,var(--surface-sunken))}.heat i.l3{background:var(--jade)}.set-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);overflow:hidden}.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;width:100%;text-align:left}.set-row+.set-row{border-top:1px solid var(--hairline)}.set-row .tt{font-weight:600}.set-row .arrow{color:var(--ink-3)}.set-row .pick{color:var(--accent);font-weight:800}.toast{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:50;padding:10px 18px;border-radius:100px;font-weight:800;font-size:15px;background:var(--gold);color:#3a2400;box-shadow:var(--shadow-pop);animation:toastIn .3s cubic-bezier(.2,.8,.2,1)}.toast.info{background:var(--ink);color:var(--ground);font-weight:600}.toast.error{background:var(--danger);color:#fff;font-weight:600}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,-14px)}to{opacity:1;transform:translate(-50%)}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#00000073;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:640px;background:var(--ground);border-radius:24px 24px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));animation:slideUp .25s cubic-bezier(.2,.8,.2,1)}.sheet h3{font-size:18px;font-weight:800;margin-bottom:8px}.sk{border-radius:var(--radius);background:var(--surface-sunken);overflow:hidden;position:relative}.sk:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:sk 1.2s infinite}@keyframes sk{0%{transform:translate(-100%)}to{transform:translate(100%)}}.empty{text-align:center;color:var(--ink-2);padding:40px 16px}.empty .em{font-size:44px;margin-bottom:8px}.confetti{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;overflow:hidden}.confetti i{position:absolute;top:-10px;width:8px;height:14px;border-radius:2px;animation:fall 1.8s ease-in forwards}@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:.2}}@media(min-width:720px){.content{padding-top:24px}.options{gap:12px}}.tabs{display:flex;gap:6px;margin:18px 0 12px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:0 0 auto;padding:9px 15px;border-radius:100px;background:var(--surface-sunken);color:var(--ink-2);font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:6px}.tabs button b{font-size:12px;opacity:.7}.tabs button.on{background:var(--accent-soft);color:var(--accent)}.objectives{margin:8px 0 0 18px;padding:0}.objectives li{font-size:13.5px;color:var(--ink-2);line-height:1.7}.word-row{display:flex;align-items:center;gap:12px;padding:11px 12px;width:100%;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);transition:transform .1s}.word-row:active{transform:scale(.99)}.word-row .wimg{width:52px;height:52px;border-radius:12px;flex:0 0 auto;object-fit:cover;background:var(--surface-sunken)}.word-row .wimg.ph{display:flex;align-items:center;justify-content:center;font-family:var(--font-zh);font-size:24px;font-weight:700;color:var(--ink-3)}.word-row .w-hanzi{font-size:23px;font-weight:700;line-height:1.2}.word-row .py{color:var(--accent);font-size:13.5px;font-weight:600}.word-row .w-ex{margin-top:4px;color:var(--ink-3);line-height:1.5}.word-row .w-ex .zh{color:var(--ink-2);font-size:13px}.word-row>svg{width:20px;height:20px;color:var(--sky);flex:0 0 auto}.g-no{width:22px;height:22px;border-radius:50%;background:var(--violet-soft);color:var(--violet);font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.g-pattern{margin-top:8px;padding:8px 12px;border-radius:10px;background:var(--surface-sunken);font-size:16px;font-weight:600;letter-spacing:.04em}.g-ex{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;background:var(--surface-sunken);border-radius:11px;text-align:left}.g-ex .zh{font-size:17px;font-weight:600}.g-ex .py{color:var(--accent)}.g-ex svg{width:18px;height:18px;color:var(--sky);flex:0 0 auto}.dlg-sheet{max-height:92vh;display:flex;flex-direction:column;padding-top:14px}.dlg-head{display:flex;align-items:center;gap:10px;padding-bottom:12px;border-bottom:1px solid var(--hairline)}.dlg-pick{padding:14px 0 4px}.role-card{display:flex;align-items:center;gap:12px;padding:12px;width:100%;background:var(--surface);border-radius:14px;box-shadow:0 3px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline)}.role-card.on{box-shadow:0 3px 0 var(--accent),inset 0 0 0 2px var(--accent);background:var(--accent-soft)}.role-card .av{width:40px;height:40px;border-radius:50%;background:var(--violet-soft);color:var(--violet);font-family:var(--font-zh);font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.role-card .tt{font-size:16px;font-weight:700}.dlg-preview{margin-top:14px;padding:12px;border-radius:12px;background:var(--surface-sunken);display:flex;flex-direction:column;gap:4px}.dlg-body{flex:1;overflow-y:auto;padding:14px 2px;display:flex;flex-direction:column;gap:12px;min-height:200px;max-height:46vh}.dlg-line{display:flex;flex-direction:column;gap:3px;max-width:88%;opacity:.55;transition:opacity .25s}.dlg-line.current{opacity:1}.dlg-line.mine{align-self:flex-end;align-items:flex-end}.dlg-line .who{font-size:11.5px;color:var(--ink-3);font-weight:600}.dlg-line .bubble2{padding:10px 13px;border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card);position:relative}.dlg-line.mine .bubble2{background:var(--accent-soft);border-bottom-right-radius:5px}.dlg-line:not(.mine) .bubble2{border-bottom-left-radius:5px}.dlg-line .line-zh{font-size:20px;font-weight:600;line-height:1.4}.dlg-line .py{font-size:12.5px;color:var(--accent)}.dlg-line .tr{font-size:13px;color:var(--ink-2);margin-top:3px}.dlg-line .speaker-btn.sm{position:absolute;right:-44px;top:50%;transform:translateY(-50%)}.dlg-line.current .bubble2{box-shadow:var(--shadow-card),0 0 0 2px var(--accent-soft)}.dlg-foot{padding-top:12px;border-top:1px solid var(--hairline);text-align:center}.dlg-progress{display:flex;gap:4px;justify-content:center;margin-bottom:10px}.dlg-progress i{width:16px;height:5px;border-radius:3px;background:var(--surface-sunken)}.dlg-progress i[data-mine=true]{background:var(--accent-soft)}.dlg-progress i.done{background:var(--jade)}.dlg-progress i.on{background:var(--gold)}.line-score{font-size:34px;font-weight:800;padding:12px 0}.lesson-row .n.ok{background:var(--jade-soft);color:var(--jade)}.lesson-row .n.ok svg{width:18px;height:18px}.hw-banner{display:flex;align-items:center;gap:12px;width:100%;margin-top:12px;padding:13px 14px;border-radius:var(--radius);background:linear-gradient(135deg,var(--violet) 0%,#5b8def 100%);color:#fff;box-shadow:0 10px 26px -14px #7c5cffcc}.hw-banner .ic{font-size:24px}.hw-banner .tt{font-weight:800;font-size:15.5px}.hw-banner .ds{font-size:12.5px;opacity:.9}.hw-banner .n{min-width:26px;height:26px;padding:0 8px;border-radius:100px;background:#ffffff40;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px}.hw-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card)}.hw-row .em{width:42px;height:42px;border-radius:12px;background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;font-size:20px;flex:0 0 auto}.hw-row .em.ok{background:var(--jade-soft);color:var(--jade)}.hw-row .em.ok svg{width:20px;height:20px}.hw-row .tt{font-weight:700;font-size:14.5px}.hw-row .ds{font-size:12px;color:var(--ink-2);margin-top:2px}.hw-row.over{box-shadow:var(--shadow-card),inset 0 0 0 1.5px var(--accent)}.hw-row .over-txt{color:var(--accent);font-weight:600}.hw-row.done{opacity:.85}.badge-pop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .2s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.badge-card{position:relative;text-align:center;padding:34px 30px;border-radius:26px;background:var(--surface);box-shadow:var(--shadow-pop);animation:badgeIn .5s cubic-bezier(.2,1.3,.4,1)}@keyframes badgeIn{0%{transform:scale(.5) rotate(-8deg);opacity:0}to{transform:none;opacity:1}}.badge-card .rays{position:absolute;top:-40px;right:-40px;bottom:-40px;left:-40px;border-radius:50%;z-index:-1;background:conic-gradient(from 0deg,transparent 0 8%,rgba(245,166,35,.28) 8% 12%,transparent 12% 20%,rgba(245,166,35,.28) 20% 24%,transparent 24% 33%,rgba(245,166,35,.28) 33% 37%,transparent 37% 45%,rgba(245,166,35,.28) 45% 49%,transparent 49% 58%,rgba(245,166,35,.28) 58% 62%,transparent 62% 70%,rgba(245,166,35,.28) 70% 74%,transparent 74% 83%,rgba(245,166,35,.28) 83% 87%,transparent 87%);animation:spin 9s linear infinite}.badge-icon{font-size:78px;line-height:1;filter:drop-shadow(0 6px 14px rgba(0,0,0,.25))}.badge-label{margin-top:10px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}.badge-name{font-size:22px;font-weight:800;margin-top:2px}.badge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px}.badge-tile{text-align:center;padding:12px 6px;border-radius:14px;background:var(--surface);box-shadow:var(--shadow-card)}.badge-tile .ic{font-size:30px;line-height:1.2}.badge-tile .nm{font-size:11px;font-weight:600;margin-top:4px;line-height:1.3}.badge-tile.locked{opacity:.4;box-shadow:none;background:var(--surface-sunken)}.badge-tile.locked .ic{filter:grayscale(1)}.pic-card{border-radius:var(--radius-l);overflow:hidden;background:var(--surface);box-shadow:var(--shadow-card);margin-bottom:14px;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center}.pic-card img{width:100%;height:100%;object-fit:contain}.pic-options{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.pic-opt{position:relative;aspect-ratio:1;border-radius:16px;overflow:hidden;background:var(--surface);box-shadow:0 4px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline);transition:transform .08s}.pic-opt img{width:100%;height:100%;object-fit:contain}.pic-opt:active{transform:translateY(3px)}.pic-opt .mark{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;background:var(--surface-sunken);color:var(--ink-2);font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}.pic-opt.sel{box-shadow:0 4px 0 var(--sky),inset 0 0 0 3px var(--sky)}.pic-opt.ok{box-shadow:0 4px 0 var(--jade),inset 0 0 0 3px var(--jade)}.pic-opt.bad{box-shadow:0 4px 0 var(--accent),inset 0 0 0 3px var(--accent)}.qa-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.qa-grid .col{display:flex;flex-direction:column;gap:8px}.qa-item{padding:11px 10px;border-radius:13px;background:var(--surface);text-align:center;box-shadow:0 3px 0 var(--hairline),inset 0 0 0 1.5px var(--hairline);display:flex;flex-direction:column;gap:2px;min-height:62px;justify-content:center}.qa-item .zh{font-size:16px;font-weight:600;line-height:1.35}.qa-item.sel{background:var(--sky-soft);box-shadow:0 3px 0 var(--sky),inset 0 0 0 2px var(--sky)}.qa-item.gone{opacity:.3;pointer-events:none;box-shadow:0 3px 0 var(--jade),inset 0 0 0 2px var(--jade)}.qa-item.shake{animation:shake .35s}.lb-tabs{display:flex;gap:8px;margin-bottom:12px}.lb-tabs button{flex:1;padding:9px;border-radius:12px;background:var(--surface-sunken);font-weight:600;font-size:13.5px;color:var(--ink-2)}.lb-tabs button.on{background:var(--accent-soft);color:var(--accent)}.serif{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}.num{font-variant-numeric:tabular-nums}.page-title{font-family:var(--font-display);font-size:30px;font-weight:600;letter-spacing:-.01em;line-height:1.15;text-wrap:balance}.page-sub{color:var(--ink-2);margin-top:6px;font-size:14px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}.eyebrow.seal{color:var(--seal)}.crumb{font-size:12.5px;color:var(--ink-3);margin-bottom:10px}.crumb a{color:var(--ink-2)}.crumb b{color:var(--ink-2);font-weight:500}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:6px 0 12px}.section-head h2{font-family:var(--font-display);font-size:21px;font-weight:600}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.card-head h3{font-size:15px;font-weight:700}.linkish{color:var(--accent);font-weight:600;font-size:12.5px;padding:0}.linkish:hover{text-decoration:underline}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px}.empty.sm{padding:18px 8px;font-size:13px}.tag.seal{background:var(--seal-soft);color:var(--seal)}.tag.warn{background:var(--gold-soft);color:#b46f00}.tag.lg{font-size:14px;padding:6px 14px}.jade{color:var(--jade)}.sealc{color:var(--seal)}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:100px;background:var(--surface-sunken);color:var(--ink);font-size:13px;font-weight:600;white-space:nowrap}.pill svg{width:16px;height:16px;color:var(--ink-3)}.pill.hot svg{color:#ff6a2f}.btn.seal{background:var(--seal);box-shadow:0 6px #8f0b14}.btn.seal:active{box-shadow:0 2px #8f0b14}.btn.ghost{background:var(--surface);color:var(--accent);box-shadow:inset 0 0 0 1.5px var(--hairline),0 4px 0 var(--hairline)}.btn.ghost:active{box-shadow:inset 0 0 0 1.5px var(--hairline),0 1px 0 var(--hairline)}.btn.sm{padding:9px 14px;font-size:13.5px;border-radius:11px;box-shadow:0 4px 0 var(--accent-deep)}.btn.sm.seal{box-shadow:0 4px #8f0b14}.btn.sm.ghost{box-shadow:inset 0 0 0 1.5px var(--hairline),0 3px 0 var(--hairline)}.btn svg{width:18px;height:18px}.bar{height:8px;border-radius:100px;background:var(--surface-sunken);overflow:hidden}.bar>i{display:block;height:100%;border-radius:100px;background:var(--accent);transition:width .5s cubic-bezier(.2,.8,.2,1)}.bar>i.ok{background:var(--jade)}.bar>i.seal{background:var(--seal)}.bar>i.warn{background:var(--gold)}.bar.sm{height:6px}.rowi{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--hairline);width:100%;text-align:left}.rowi:first-of-type{border-top:0}.rowi .tt{font-weight:600;font-size:14px}.rowi .ds{font-size:12px;color:var(--ink-3);margin-top:1px}.rowi.me{background:linear-gradient(90deg,var(--accent-soft),transparent);margin:0 -8px;padding:10px 8px;border-radius:10px}.rowi>svg{width:18px;height:18px;color:var(--ink-3)}.flame{width:30px;height:30px;border-radius:9px;background:#fff0e8;color:#ff6a2f;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.flame svg{width:18px;height:18px}.flame.gold{background:var(--gold-soft);color:#b46f00}.dark .flame{background:#3a2318}.banner{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;margin-bottom:14px;border-radius:14px;background:var(--surface);box-shadow:var(--shadow-card);text-align:left;font-weight:600}.banner.warn{background:var(--gold-soft);color:#7a4b00}.banner svg{width:20px;height:20px;flex:0 0 auto}.lang-select{padding:6px 10px;border-radius:9px;border:1.5px solid var(--hairline);background:var(--surface);color:var(--ink);font-size:13px}.lang-select.compact{padding:5px 6px;font-size:12px;font-weight:700;letter-spacing:.04em}.brand-logo{height:40px;width:auto;display:block}.brand-logo.sm{height:30px}.brand-logo.lg{height:64px;margin-bottom:10px}.dark .brand-logo{filter:brightness(0) invert(1) opacity(.92)}.topnav{display:none;position:sticky;top:0;z-index:25;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--hairline)}.topnav-in{max-width:var(--content-w);margin:0 auto;padding:0 24px;height:var(--nav-h);display:flex;align-items:center;gap:28px}.topnav-brand{display:flex;align-items:center}.topnav-links{display:flex;gap:4px;height:100%}.topnav-links a{display:flex;align-items:center;padding:0 16px;height:100%;font-size:15px;font-weight:600;color:var(--ink-2);border-bottom:3px solid transparent;border-top:3px solid transparent;transition:color .15s}.topnav-links a:hover{color:var(--ink)}.topnav-links a.active{color:var(--navy);border-bottom-color:var(--seal);font-weight:700}.dark .topnav-links a.active{color:var(--ink)}.topnav-right{margin-left:auto;display:flex;align-items:center;gap:10px}.topnav-teacher{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:100px;font-size:13px;font-weight:600;color:var(--ink-2)}.topnav-teacher svg{width:18px;height:18px}.topnav-teacher:hover,.topnav-teacher.active{background:var(--accent-soft);color:var(--accent)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--navy);color:#fff;font-weight:800;font-size:15px;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--hairline)}.avatar.active{background:var(--accent)}.mobilebar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px 0;max-width:var(--content-w);margin:0 auto;width:100%}@media(min-width:900px){.topnav{display:block}.mobilebar,.tabbar{display:none}.content{padding:28px 24px 60px}.app.fullscreen .content{padding-bottom:40px}.app:not(.fullscreen) .bottom-cta{bottom:0;padding-bottom:12px}.app:not(.fullscreen) .has-cta{padding-bottom:110px!important}.chat-input{bottom:0}.chat-wrap{min-height:calc(100vh - var(--nav-h) - 28px);margin:-28px -24px 0}.chat-wrap.with-tab{min-height:calc(100vh - var(--nav-h) - 28px)}}.hello{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 26px;margin-bottom:20px;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);position:relative;overflow:hidden}.hello:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.5;background-image:linear-gradient(var(--hairline) 1px,transparent 1px),linear-gradient(90deg,var(--hairline) 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(90deg,transparent 55%,#000 100%);-webkit-mask-image:linear-gradient(90deg,transparent 55%,#000 100%)}.hello>*{position:relative}.hello .page-title{font-size:28px}.hello-sub{color:var(--ink-2);font-size:13.5px;margin-top:6px;display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.hello-sub .dot{color:var(--ink-3)}.hello-sub b{color:var(--ink);font-weight:600}.hello-stats{display:flex;flex:0 0 auto}.hello-stats .st{padding:0 22px;border-left:1px solid var(--hairline);text-align:center;min-width:96px}.hello-stats .st:first-child{border-left:0}.hello-stats .st b{display:block;font-family:var(--font-display);font-size:28px;font-weight:600;color:var(--navy);line-height:1.1}.dark .hello-stats .st b{color:var(--ink)}.hello-stats .st span{display:block;font-size:11.5px;color:var(--ink-3);margin-top:3px}.mods{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:20px}.mod{position:relative;display:flex;flex-direction:column;gap:12px;padding:22px 22px 16px;text-align:left;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);overflow:hidden;transition:transform .15s,box-shadow .15s}.mod:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop)}.mod:active{transform:scale(.99)}.mod-ic{width:46px;height:46px;border-radius:13px;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent)}.mod-ic svg{width:24px;height:24px}.mod.exam .mod-ic{background:var(--seal-soft);color:var(--seal)}.mod.video .mod-ic{background:var(--gold-soft);color:#b46f00}.mod-seal{position:absolute;top:16px;right:18px;width:30px;height:30px;border-radius:4px;background:var(--seal);color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;transform:rotate(6deg);box-shadow:inset 0 0 0 1.5px #ffffff59;opacity:.92}.mod h2{font-family:var(--font-display);font-size:24px;font-weight:600}.mod p{color:var(--ink-2);font-size:13.5px;line-height:1.5}.mod ul{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:5px 12px;font-size:13px;color:var(--ink-2)}.mod ul li:before{content:"·";color:var(--accent);font-weight:900;margin-right:6px}.mod-go{margin-top:auto;padding-top:12px;border-top:1px solid var(--hairline);display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13px}.mod-go .go{display:inline-flex;align-items:center;gap:2px;color:var(--accent);font-weight:700;white-space:nowrap}.mod-go .go svg{width:16px;height:16px}.home-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.week{display:flex;gap:6px}.week span{flex:1;aspect-ratio:1;border-radius:8px;background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--ink-3)}.week span.d{background:var(--accent);color:#fff}.week span.t{box-shadow:inset 0 0 0 2px var(--seal)}.week span.f{opacity:.5}.module-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.module-action{flex:0 0 auto}.module-body{display:grid;grid-template-columns:200px 1fr;gap:28px;align-items:start}.rail{position:sticky;top:calc(var(--nav-h) + 20px);display:flex;flex-direction:column;gap:4px}.rail-label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding:14px 12px 6px;font-weight:700}.rail-group:first-child .rail-label{padding-top:4px}.rail-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border-radius:10px;text-align:left;color:var(--ink-2);font-size:14px;font-weight:600;transition:background .12s,color .12s}.rail-item svg{width:18px;height:18px;opacity:.8;flex:0 0 auto}.rail-item:hover{background:var(--surface-sunken);color:var(--ink)}.rail-item.on{background:var(--accent-soft);color:var(--accent)}.rail-n{min-width:20px;height:20px;padding:0 6px;border-radius:100px;background:var(--seal);color:#fff;font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}.rail-n.quiet{background:var(--surface-sunken);color:var(--ink-2)}.rail-chips{display:none;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:4px;margin-bottom:12px}.rail-chips::-webkit-scrollbar{display:none}.rail-chips .chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px}.chip-n{font-size:11px;background:var(--seal);color:#fff;padding:0 6px;border-radius:100px}.module-main{min-width:0}@media(max-width:899px){.module-body{display:block}.rail{display:none}.rail-chips{display:flex}.module-head{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:14px}.page-title{font-size:26px}.mods,.home-grid,.two-col{grid-template-columns:1fr}.hello{flex-direction:column;align-items:flex-start;gap:16px;padding:18px}.hello-stats{width:100%;justify-content:space-between}.hello-stats .st{padding:0 8px;min-width:0;flex:1}.hello-stats .st b{font-size:22px}.hello:before{display:none}}.quick4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px}.qk{position:relative;display:flex;align-items:center;gap:12px;padding:14px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);text-align:left;transition:transform .12s}.qk:hover{transform:translateY(-2px)}.qk b{display:block;font-size:14px}.qk small{display:block;color:var(--ink-3);font-size:12px;margin-top:2px}.qk-ic{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}.qk-ic svg{width:20px;height:20px}.qk-ic.jade{background:var(--jade-soft);color:var(--jade)}.qk-ic.sky{background:var(--sky-soft);color:var(--sky)}.qk-ic.gold{background:var(--gold-soft);color:#b46f00}.qk-ic.violet{background:var(--violet-soft);color:var(--violet)}.qk-n{position:absolute;top:10px;right:10px;min-width:20px;height:20px;padding:0 6px;border-radius:100px;background:var(--seal);color:#fff;font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center}.lesson-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.ls{display:flex;align-items:center;gap:12px;padding:13px 14px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);text-align:left;transition:transform .12s,box-shadow .12s;position:relative}.ls:hover{transform:translateY(-2px)}.ls.cur{box-shadow:var(--shadow-card),0 0 0 2.5px var(--accent)}.ls-no{width:40px;height:40px;border-radius:12px;flex:0 0 auto;background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:22px;font-weight:600;color:var(--navy)}.dark .ls-no{color:var(--ink)}.ls.done .ls-no{background:var(--jade-soft);color:var(--jade)}.ls.done .ls-no svg{width:20px;height:20px}.ls .tt{font-weight:700;font-size:14.5px}.ls .ds{font-size:12px;color:var(--ink-3);margin:2px 0 7px}.ls-pct{font-size:12px;color:var(--ink-3);flex:0 0 auto}@media(max-width:1100px){.lesson-grid,.quick4{grid-template-columns:1fr 1fr}}@media(max-width:620px){.lesson-grid{grid-template-columns:1fr}}.exam-hero{display:grid;grid-template-columns:1.35fr 1fr;gap:16px}.paper{position:relative;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);padding:22px 24px;overflow:hidden}.paper h2{font-size:22px;margin:6px 0 14px}.parts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.part{border:1.5px solid var(--hairline);border-radius:14px;padding:12px 14px}.part b{display:block;font-size:15px}.part small{color:var(--ink-3)}.part ol{margin:8px 0 0 16px;font-size:12.5px;color:var(--ink-2);line-height:1.7}.score-line{display:flex;align-items:flex-end;gap:16px;margin:6px 0 18px}.score-line .big{font-size:48px;line-height:1;color:var(--navy)}.dark .score-line .big{color:var(--ink)}.score-line .big small{font-size:15px;color:var(--ink-3);font-family:var(--font-ui);font-weight:500}.score-meta{padding-bottom:4px}.chart{display:flex;align-items:flex-end;gap:10px;height:110px;padding:0 4px;border-bottom:1px solid var(--hairline);position:relative}.bar-v{flex:1;border-radius:5px 5px 0 0;background:var(--accent-soft);position:relative;transition:height .5s cubic-bezier(.2,.8,.2,1)}.bar-v.pass{background:color-mix(in srgb,var(--jade) 35%,var(--surface-sunken))}.bar-v.now{background:var(--accent)}.bar-v.now.pass{background:var(--jade)}.bar-v:after{content:attr(data-v);position:absolute;top:-20px;left:0;right:0;text-align:center;font-size:11.5px;font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}.chart-x{display:flex;gap:10px;padding:6px 4px 0;font-size:11px;color:var(--ink-3)}.chart-x span{flex:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pass-line{display:none}.weak{display:flex;flex-direction:column;gap:10px}.weak .w{display:grid;grid-template-columns:minmax(120px,1.2fr) 2fr 64px;gap:12px;align-items:center;width:100%;text-align:left}.weak .w .bar{height:8px}.weak .w .num{text-align:right}.drills{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.drill{display:flex;flex-direction:column;gap:4px;padding:16px 18px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);text-align:left;transition:transform .12s}.drill:hover{transform:translateY(-2px)}.drill b{font-size:16px}.drill small{color:var(--ink-2);font-size:12.5px}.sets{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.set{display:flex;flex-direction:column;gap:4px;padding:18px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);text-align:left;position:relative;overflow:hidden}.set .set-no{font-size:40px;line-height:1;color:var(--accent-soft);position:absolute;right:14px;top:10px}.set.done .set-no{color:var(--jade-soft)}.set b{font-size:16px}.set small{color:var(--ink-3);font-size:12px}.set .tag{align-self:flex-start;margin-top:8px}.part-tag{width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex:0 0 auto}.part-tag.L{background:var(--sky-soft);color:var(--sky)}.part-tag.R{background:var(--violet-soft);color:var(--violet)}.part-pill{padding:3px 9px;border-radius:100px;font-size:12px;font-weight:700;white-space:nowrap}.part-pill.L{background:var(--sky-soft);color:var(--sky)}.part-pill.R{background:var(--violet-soft);color:var(--violet)}@media(max-width:899px){.exam-hero,.drills,.sets,.parts{grid-template-columns:1fr}}.exam-run{max-width:760px;margin:0 auto}.exam-bar{display:flex;align-items:center;gap:12px;padding:4px 0 14px}.exam-bar .pbar{height:6px;border-radius:100px;background:var(--surface-sunken);overflow:hidden;margin-top:6px}.exam-bar .pbar>i{display:block;height:100%;background:var(--accent);border-radius:100px;transition:width .3s}.exam-part{display:flex;align-items:center;gap:8px;font-size:13.5px}.timer{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:100px;background:var(--surface-sunken);font-weight:700;font-size:14px;white-space:nowrap}.timer svg{width:16px;height:16px}.timer.hot{background:var(--seal-soft);color:var(--seal);animation:pulse-soft 1s infinite}@keyframes pulse-soft{50%{opacity:.6}}.exam-nav{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--ground) 75%,transparent)}.exam-nav .dots{flex:1;display:flex;flex-wrap:wrap;gap:4px;justify-content:center}.exam-nav .dot{width:10px;height:10px;border-radius:3px;background:var(--surface-sunken);box-shadow:inset 0 0 0 1px var(--hairline);padding:0}.exam-nav .dot.a{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.exam-nav .dot.on{background:var(--accent);box-shadow:none;transform:scale(1.3)}@media(max-width:620px){.exam-nav .dots{display:none}.exam-bar .btn.sm{padding:8px 10px}}.exam-result{max-width:860px;margin:0 auto;text-align:center;padding-top:10px}.exam-result .score-big{font-size:72px;line-height:1;color:var(--navy);margin:10px 0 12px}.dark .exam-result .score-big{color:var(--ink)}.exam-result .score-big small{font-size:18px;color:var(--ink-3);font-family:var(--font-ui);font-weight:500}.exam-result .section-head{justify-content:center;margin-top:24px}.review-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;text-align:left}.rq{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--surface);border-radius:12px;box-shadow:var(--shadow-card)}.rq .no{width:26px;text-align:center;font-weight:800;color:var(--ink-3)}.rq .tt{font-size:13px;font-weight:600}.rq .ds{font-size:11.5px;color:var(--ink-3)}.rq .mark{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800}.rq .mark svg{width:16px;height:16px}.rq.ok .mark{background:var(--jade-soft);color:var(--jade)}.rq.bad .mark{background:var(--seal-soft);color:var(--seal)}.rq.none .mark{background:var(--surface-sunken);color:var(--ink-3)}@media(max-width:620px){.review-grid{grid-template-columns:1fr}}.course-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.course-card{display:flex;flex-direction:column;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);overflow:hidden;text-align:left;transition:transform .15s}.course-card:hover{transform:translateY(-2px)}.course-card .cover{aspect-ratio:16/9;width:100%;object-fit:cover;display:flex;align-items:center;justify-content:center;position:relative;color:#fff}.course-card .cover .serif{font-size:40px;letter-spacing:.02em}.course-card .cover .lv{position:absolute;left:14px;top:12px;font-size:11px;letter-spacing:.14em;font-weight:700;opacity:.85}.course-card .cover .play{position:absolute;right:14px;bottom:12px;width:34px;height:34px;border-radius:50%;background:#ffffff2e;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.course-card .cover .play svg{width:16px;height:16px}.c1{background:linear-gradient(135deg,var(--navy),var(--accent))}.c2{background:linear-gradient(135deg,#1b3a5c,#2d7ac1)}.c3{background:linear-gradient(135deg,#7a1116,var(--seal))}.c4{background:linear-gradient(135deg,#5a4a1a,#b7791f)}.c5{background:linear-gradient(135deg,#1c5a45,#1f9d6a)}.course-card .cb{padding:14px 16px 16px;display:flex;flex-direction:column;gap:6px}.course-card h3{font-size:16px;font-weight:700}.course-card p{color:var(--ink-2);font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-card .meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink-3);margin-top:4px}.player-wrap{display:grid;grid-template-columns:300px 1fr;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);overflow:hidden;min-height:560px}.tree{border-right:1px solid var(--hairline);overflow-y:auto;max-height:calc(100vh - var(--nav-h) - 90px)}.tree-title{padding:16px 18px 10px;font-family:var(--font-display);font-size:18px;font-weight:600;border-bottom:1px solid var(--hairline)}.tree-ch{display:flex;align-items:center;gap:8px;padding:12px 18px 8px;font-weight:700;font-size:13px;background:var(--ground);border-bottom:1px solid var(--hairline);border-top:1px solid var(--hairline)}.tree-ch small{color:var(--ink-3);font-weight:500}.tree-it{display:flex;align-items:center;gap:10px;width:100%;padding:10px 18px;font-size:13.5px;color:var(--ink-2);text-align:left;border-bottom:1px solid var(--hairline)}.tree-it:hover{background:var(--surface-sunken)}.tree-it .ck{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--hairline);flex:0 0 auto;display:flex;align-items:center;justify-content:center}.tree-it .ck svg{width:12px;height:12px}.tree-it.done .ck{background:var(--jade);border-color:var(--jade);color:#fff}.tree-it.cur{background:var(--accent-soft);color:var(--accent);font-weight:700}.tree-it.cur .ck{border-color:var(--accent)}.tree-it.lock{opacity:.55}.tree-it .d{color:var(--ink-3);font-size:12px;white-space:nowrap;display:inline-flex;align-items:center}.tree-it .d svg{width:15px;height:15px}.stage{padding:22px 26px 28px;min-width:0}.stage-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.stage .video-wrap{margin:0;border-radius:14px}.vocab-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.vocab-chip{position:relative;display:flex;flex-direction:column;gap:2px;padding:10px 34px 10px 12px;border-radius:12px;background:var(--surface-sunken);text-align:left}.vocab-chip .hz{font-size:20px;font-weight:700}.vocab-chip small{font-size:11.5px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vocab-chip svg{position:absolute;right:10px;top:12px;width:16px;height:16px;color:var(--sky)}.tabs .ghosty{margin-left:auto;background:transparent;color:var(--accent)}@media(max-width:1100px){.course-grid{grid-template-columns:1fr 1fr}.vocab-grid{grid-template-columns:1fr 1fr 1fr}}@media(max-width:899px){.player-wrap{grid-template-columns:1fr;min-height:0}.tree{max-height:none;border-right:0;border-bottom:1px solid var(--hairline);order:2}.stage{order:1;padding:14px}.stage .video-wrap{margin:0 -14px;border-radius:0}}@media(max-width:620px){.course-grid{grid-template-columns:1fr}.vocab-grid{grid-template-columns:1fr 1fr}}.login{min-height:100vh;min-height:100dvh;display:grid;grid-template-columns:1.1fr 1fr;background:var(--ground)}.login-art{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:48px;background:radial-gradient(900px 500px at 15% 10%,var(--accent-soft),transparent 60%),radial-gradient(700px 500px at 90% 90%,var(--seal-soft),transparent 60%),var(--ground-tint)}.login-art:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(var(--hairline) 1px,transparent 1px),linear-gradient(90deg,var(--hairline) 1px,transparent 1px);background-size:36px 36px;mask-image:radial-gradient(closest-side at 50% 50%,#000 40%,transparent 100%);-webkit-mask-image:radial-gradient(closest-side at 50% 50%,#000 40%,transparent 100%)}.login-art-in{position:relative;max-width:460px}.login-logo{display:block;width:min(320px,80%);margin-bottom:18px}.login-logo.sm{display:none;width:180px;margin:0 0 18px}.login-line{font-family:var(--font-display);font-size:22px;font-weight:600;color:var(--navy);letter-spacing:.01em}.login-points{list-style:none;margin-top:26px;display:flex;flex-direction:column;gap:14px}.login-points li{display:flex;align-items:center;gap:12px;font-size:14.5px;color:var(--ink-2)}.login-points .ic{width:36px;height:36px;border-radius:11px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;flex:0 0 auto}.login-points .ic.seal{background:var(--seal-soft);color:var(--seal)}.login-points .ic.gold{background:var(--gold-soft);color:#b46f00}.login-points .ic svg{width:19px;height:19px}.login-zh{position:absolute;right:-14px;bottom:-34px;font-size:190px;font-weight:800;line-height:1;color:var(--navy);opacity:.05;pointer-events:none}.login-side{display:flex;flex-direction:column;padding:22px 48px;background:var(--surface)}.login-langs{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.login-form{flex:1;display:flex;flex-direction:column;justify-content:center;max-width:380px;width:100%;margin:0 auto}.login-form h1{font-family:var(--font-display);font-size:32px;font-weight:600;margin-bottom:4px}.login-foot{text-align:center;padding-top:12px}.chip{padding:7px 13px;border-radius:100px;background:var(--surface-sunken);color:var(--ink-2);font-size:13px;font-weight:600}.chip.on{background:var(--accent-soft);color:var(--accent)}@media(max-width:899px){.login{grid-template-columns:1fr}.login-art{display:none}.login-side{padding:18px 22px 28px;min-height:100dvh}.login-logo.sm{display:block}}.teach-link{display:flex;align-items:center;padding:0 14px;height:100%;font-size:14px;font-weight:700;color:var(--seal);border-bottom:3px solid transparent;border-top:3px solid transparent}.teach-link:hover{color:var(--seal);text-decoration:underline}.banner.teach{background:var(--seal-soft);color:var(--navy)}.dark .banner.teach{color:var(--ink)}.teach-card{box-shadow:var(--shadow-card),inset 0 0 0 1.5px var(--seal-soft)}.teacher-layout{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}.teacher-side{position:sticky;top:calc(var(--nav-h) + 20px);text-align:center;padding:22px 18px 18px;background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card)}.mascot-stage{display:flex;justify-content:center;padding:6px 0 4px}.teacher-name{font-family:var(--font-display);font-size:24px;font-weight:600;margin-top:4px}.teacher-side .agent-status{justify-content:center;margin-top:4px}.teacher-suggests{display:flex;flex-direction:column;gap:8px;margin-top:16px}.teacher-suggests button{padding:10px 12px;border-radius:12px;background:var(--surface-sunken);font-size:13px;font-weight:600;color:var(--ink-2);text-align:left;transition:background .12s,color .12s}.teacher-suggests button:hover{background:var(--accent-soft);color:var(--accent)}.teacher-side .linkish svg{width:14px;height:14px;vertical-align:-2px}.teacher-layout .chat-wrap{margin:0;min-height:0;height:calc(100vh - var(--nav-h) - 56px);background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow-card);overflow:hidden;display:flex;flex-direction:column}.teacher-layout .chat-head{background:transparent;border-bottom:1px solid var(--hairline)}.teacher-layout .chat-head .mascot-mini{display:none}.teacher-layout .chat-body{overflow-y:auto}.teacher-layout .chat-input{position:static;background:var(--surface)}.dot-online.busy{background:var(--gold);box-shadow:0 0 0 2px color-mix(in srgb,var(--gold) 30%,transparent);animation:pulse-soft 1s infinite}@media(max-width:899px){.teacher-layout{display:block}.teacher-side{display:none}.teacher-layout .chat-wrap{height:auto;min-height:calc(100vh - 120px - var(--tab-h));border-radius:0;box-shadow:none;background:transparent;margin:-14px -16px 0}.teacher-layout .chat-head{background:color-mix(in srgb,var(--ground) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.teacher-layout .chat-head .mascot-mini{display:block;flex:0 0 auto}.teacher-layout .chat-head .agent-av{display:none}.teacher-layout .chat-input{position:sticky;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--ground) 94%,transparent)}}.mascot{display:inline-block;position:relative}.mascot svg{overflow:visible}.mascot .ms-body{transform-origin:110px 206px;animation:ms-bob 3.2s ease-in-out infinite}.mascot .ms-head{transform-origin:110px 140px}.mascot .ms-eye{transform-origin:110px 98px;animation:ms-blink 4.6s infinite}.mascot .ms-eyes-happy{opacity:0}.mascot .ms-mouth-open{opacity:0;transform-origin:110px 120px}.mascot .ms-think{opacity:0;transition:opacity .25s}.mascot .ms-arm{transform-origin:66px 172px}.mascot .ms-scarf{transform-origin:128px 160px;animation:ms-scarf 3.2s ease-in-out infinite}.mascot .ms-shadow{transform-origin:110px 206px;animation:ms-shadow 3.2s ease-in-out infinite}@keyframes ms-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes ms-shadow{0%,to{transform:scaleX(1)}50%{transform:scaleX(.92)}}@keyframes ms-scarf{0%,to{transform:rotate(0)}50%{transform:rotate(-8deg)}}@keyframes ms-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.08)}}@keyframes ms-talk{0%,to{opacity:0;transform:scaleY(.3)}50%{opacity:1;transform:scaleY(1)}}@keyframes ms-nod{0%,to{transform:rotate(0)}30%{transform:rotate(3deg)}70%{transform:rotate(-2deg)}}@keyframes ms-lookup{0%,to{transform:translate(0)}50%{transform:translate(2px,-4px)}}@keyframes ms-jump{0%,to{transform:translateY(0)}35%{transform:translateY(-16px)}60%{transform:translateY(0)}80%{transform:translateY(-6px)}}@keyframes ms-wave{0%,to{transform:rotate(0)}25%{transform:rotate(-28deg)}50%{transform:rotate(-8deg)}75%{transform:rotate(-30deg)}}.mascot.m-talking .ms-mouth{opacity:0}.mascot.m-talking .ms-mouth-open{animation:ms-talk .34s ease-in-out infinite}.mascot.m-talking .ms-head{animation:ms-nod 1.6s ease-in-out infinite}.mascot.m-thinking .ms-think{opacity:1}.mascot.m-thinking .ms-eyes{animation:ms-lookup 1.4s ease-in-out infinite}.mascot.m-thinking .ms-mouth{d:path("M102 120q8 -2 16 0")}.mascot.m-thinking .ms-brow{transform:translateY(-3px)}.mascot.m-happy .ms-eyes{opacity:0}.mascot.m-happy .ms-eyes-happy{opacity:1}.mascot.m-happy .ms-body{animation:ms-jump .9s ease-out 1,ms-bob 3.2s ease-in-out .9s infinite}.mascot.m-happy .ms-mouth{d:path("M98 116q12 12 24 0")}.mascot.m-wave .ms-arm{animation:ms-wave 1.4s ease-in-out 1}.mascot.m-wave .ms-eyes{opacity:0}.mascot.m-wave .ms-eyes-happy{opacity:1}@media(prefers-reduced-motion:reduce){.mascot *,.mascot .ms-body,.mascot .ms-eye{animation:none!important}}
