@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;--gold-ink: var(--gold-ink);--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;--gold-ink: #ffcf7a;--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:var(--gold-ink)}.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:var(--gold-ink)}.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:var(--gold-ink);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:var(--gold-ink);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:var(--gold-ink);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:var(--gold-ink)}.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:var(--gold-ink)}.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:var(--gold-ink);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:var(--gold-ink)}.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:var(--gold-ink)}.dark .flame{background:#3a2318}.dark .pill.hot svg{color:#ff8a5b}.dark .mod-seal{opacity:1}.dark .login-art{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)}.dark .login-zh{opacity:.07}.dark .course-card .cover .play{background:#ffffff24}.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:var(--gold-ink)}.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}.theme-btn{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-sunken);color:var(--ink-2);transition:background .15s,color .15s}.theme-btn:hover{background:var(--accent-soft);color:var(--accent)}.theme-btn svg{width:18px;height:18px}.mobilebar .right{display:flex;align-items:center;gap:8px}.brand-logo{height:40px;width:auto;display:block}.brand-logo.sm{height:30px}.brand-logo.lg{height:64px;margin-bottom:10px}.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:var(--gold-ink)}.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:var(--gold-ink)}.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:var(--gold-ink)}.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}}.track-pick{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}.track{display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:14px;background:var(--surface);text-align:left;box-shadow:inset 0 0 0 1.5px var(--hairline);transition:box-shadow .12s}.track .ic{width:32px;height:32px;border-radius:9px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;margin-bottom:4px}.track .ic svg{width:18px;height:18px}.track.teen .ic{background:var(--gold-soft);color:var(--gold-ink)}.track b{font-size:14px}.track small{font-size:12px;color:var(--ink-2);line-height:1.4}.track.on{box-shadow:inset 0 0 0 2.5px var(--accent);background:var(--accent-soft)}.track.teen.on{box-shadow:inset 0 0 0 2.5px var(--gold);background:var(--gold-soft)}.level-path{display:flex;flex-direction:column;gap:8px}.level-path .lv{display:flex;align-items:center;gap:14px;padding:12px 16px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);opacity:.72}.level-path .lv.on{opacity:1;box-shadow:var(--shadow-card),inset 0 0 0 2px var(--accent-soft)}.level-path .lv-no{width:46px;text-align:center;font-size:24px;color:var(--navy)}.dark .level-path .lv-no{color:var(--ink)}.level-path .lv b{display:block;font-size:14.5px}.level-path .lv small{color:var(--ink-3);font-size:12px}.level-path .tag svg{width:11px;height:11px;vertical-align:-1px}.level-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.parts.three{grid-template-columns:1fr 1fr 1fr}@media(max-width:899px){.parts.three{grid-template-columns:1fr}}.teen-hero{display:flex;align-items:center;gap:18px;padding:18px 20px;margin-bottom:16px;border-radius:var(--radius-l);background:linear-gradient(120deg,var(--gold-soft),var(--surface));box-shadow:var(--shadow-card)}.missions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.mission{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:100px;background:var(--surface);box-shadow:var(--shadow-card);font-weight:600;font-size:13.5px}.mission span{font-size:18px}.teen-stickers{font-size:34px;letter-spacing:.1em;white-space:nowrap}.teen-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.teen-card{position:relative;display:flex;flex-direction:column;gap:4px;padding:16px;border-radius:var(--radius-l);color:#fff;text-align:left;min-height:132px;transition:transform .12s}.teen-card:hover{transform:translateY(-2px)}.teen-card:disabled{opacity:.85;cursor:default;transform:none}.teen-card .em{font-size:34px;line-height:1}.teen-card b{font-size:16px;margin-top:4px}.teen-card small{font-size:12px;opacity:.9;line-height:1.4}.teen-card .tag{position:absolute;top:12px;right:12px}.teen-card.c1{background:linear-gradient(135deg,#0051a2,#4d9be7)}.teen-card.c2{background:linear-gradient(135deg,#7c5cff,#b48cff)}.teen-card.c3{background:linear-gradient(135deg,#1f9d83,#4fd1b3)}.teen-card.c4{background:linear-gradient(135deg,#c7111e,#f26b6b)}@media(max-width:899px){.teen-grid{grid-template-columns:1fr 1fr}.teen-stickers{display:none}}.game-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.game-card{display:flex;align-items:center;gap:14px;padding:16px;border-radius:var(--radius-l);background:var(--surface);box-shadow:var(--shadow-card);transition:transform .12s}.game-card:hover{transform:translateY(-2px)}.game-card.soon{opacity:.6;cursor:default;transform:none}.game-em{font-size:40px;line-height:1}.game-card b{display:block;font-size:16px}.game-card small{display:block;color:var(--ink-2);font-size:12.5px;margin:2px 0 6px;line-height:1.4}.game-card .tiny{display:block}.game-card>svg{width:18px;height:18px;color:var(--ink-3)}@media(max-width:620px){.game-grid{grid-template-columns:1fr}}.game-run{max-width:640px;margin:0 auto}.memory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mcard{aspect-ratio:1;perspective:800px;background:none;padding:0}.mcard-in{display:block;position:relative;width:100%;height:100%;transition:transform .45s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}.mcard.open .mcard-in{transform:rotateY(180deg)}.mcard .face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:16px;display:flex;align-items:center;justify-content:center;overflow:hidden}.mcard .face.back{background:linear-gradient(135deg,var(--navy),var(--accent));color:#ffffff59;font-size:30px;font-weight:700;box-shadow:0 4px 0 var(--accent-deep)}.mcard .face.front{background:var(--surface);transform:rotateY(180deg);box-shadow:inset 0 0 0 2px var(--hairline)}.mcard .face.front img{width:100%;height:100%;object-fit:contain}.mcard .face.front .hz{font-size:30px;font-weight:700}.mcard.done .face.front{box-shadow:inset 0 0 0 3px var(--jade);opacity:.75}@media(max-width:480px){.memory-grid{grid-template-columns:repeat(3,1fr)}}.whack-start{width:100%;display:flex;flex-direction:column;align-items:center;gap:8px;padding:40px 20px;border-radius:var(--radius-l);background:var(--surface);box-shadow:var(--shadow-card)}.whack-start .big-em{font-size:64px}.whack-start b{font-size:18px}.whack-start small{color:var(--ink-2);max-width:360px}.whack-target{text-align:center;margin-bottom:14px}.whack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.hole{aspect-ratio:1;border-radius:50% 50% 22px 22px;background:radial-gradient(ellipse at 50% 70%,var(--surface-sunken),var(--ground-tint));box-shadow:inset 0 8px 16px #0c1b381f;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;padding:0}.hole .mole{display:block;width:76%;padding:14px 0 18px;border-radius:40px 40px 8px 8px;background:var(--gold);color:#3a2400;font-size:30px;font-weight:700;box-shadow:0 -2px #d48d18 inset;animation:mole-up .25s cubic-bezier(.2,.9,.3,1.2)}@keyframes mole-up{0%{transform:translateY(100%)}to{transform:none}}.hole.hit .mole{background:var(--jade);color:#fff}.runner-head .timer{margin-right:6px}.live-card{margin-bottom:16px}.live-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--hairline)}.live-row:first-of-type{border-top:0}.live-row .tt{font-weight:600;font-size:14px}.live-row .ds{font-size:12px;color:var(--ink-3);margin-top:2px}.live-row.ended{opacity:.8}.live-dot{width:10px;height:10px;border-radius:50%;background:var(--ink-3);flex:0 0 auto}.live-dot.on{background:var(--seal);box-shadow:0 0 0 4px var(--seal-soft);animation:pulse-soft 1.2s infinite}.live-row .btn.sm svg{width:14px;height:14px}:root{--font-display: "Onest", -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;--grad-ai: linear-gradient(135deg, #0051a2 0%, #4d9be7 55%, #7c5cff 100%);--grad-seal: linear-gradient(135deg, #c7111e 0%, #ff6a6a 100%);--glow: 0 0 0 1px rgba(77, 155, 231, .35), 0 10px 30px -10px rgba(0, 81, 162, .55);--glow-strong: 0 0 0 1px rgba(77, 155, 231, .5), 0 14px 40px -10px rgba(77, 155, 231, .7);--space: #070d1c;--space-2: #0c1b38;--line-glow: rgba(77, 155, 231, .28)}.dark{--glow: 0 0 0 1px rgba(77, 155, 231, .28), 0 12px 34px -12px rgba(77, 155, 231, .55)}.page-title,.section-head h2,.mod h2,.hello .page-title,.paper h2,.score-line .big,.exam-result .score-big,.teacher-name,.tree-title,.login-form h1,.login-line,.serif,.result h1{font-family:var(--font-display);font-weight:700;letter-spacing:-.025em}.ls-no,.set .set-no,.level-path .lv-no,.hello-stats .st b{font-family:var(--font-display);font-weight:800;letter-spacing:-.03em}.login-line{font-weight:600;letter-spacing:0}body{position:relative}.app:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(700px 400px at 8% -10%,color-mix(in srgb,var(--accent-soft) 70%,transparent),transparent 70%),radial-gradient(600px 400px at 100% 10%,color-mix(in srgb,var(--violet-soft) 60%,transparent),transparent 70%),linear-gradient(var(--hairline) 1px,transparent 1px) 0 0 / 44px 44px,linear-gradient(90deg,var(--hairline) 1px,transparent 1px) 0 0 / 44px 44px;mask-image:linear-gradient(180deg,#000 0%,#000 45%,transparent 100%);-webkit-mask-image:linear-gradient(180deg,#000 0%,#000 45%,transparent 100%);opacity:.7}.topnav{background:color-mix(in srgb,var(--surface) 78%,transparent);border-bottom:0}.topnav:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--line-glow),transparent)}.topnav-links a.active{border-bottom-color:transparent;position:relative}.topnav-links a.active:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;border-radius:2px;background:var(--grad-ai)}.avatar{background:var(--grad-ai);box-shadow:var(--glow)}.btn.glow,.module-action .btn:not(.ghost):not(.seal),.home .btn:not(.ghost):not(.seal),.mod-go .btn,.ai-pick .btn{background:var(--grad-ai);box-shadow:var(--glow);border:0;transition:transform .12s,box-shadow .15s}.btn.glow:hover,.module-action .btn:not(.ghost):not(.seal):hover{transform:translateY(-1px);box-shadow:var(--glow-strong)}.btn.glow:active{transform:translateY(1px)}.btn.lg{padding:14px 24px;font-size:16px;border-radius:14px}.btn.ghost-dark{background:#ffffff14;color:#fff;box-shadow:inset 0 0 0 1px #ffffff47;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.btn.ghost-dark:hover{background:#ffffff24}.btn.seal{background:var(--grad-seal);box-shadow:0 0 0 1px #ff6a6a4d,0 10px 30px -10px #c7111e99}.card,.mod,.qk,.ls,.paper,.drill,.set,.game-card,.course-card,.player-wrap,.teacher-side,.teacher-layout .chat-wrap{position:relative}.dark .card:before,.dark .mod:before,.dark .paper:before,.dark .qk:before,.dark .ls:before,.dark .drill:before,.dark .set:before,.dark .game-card:before,.dark .course-card:before,.dark .player-wrap:before,.dark .teacher-side:before,.dark .teacher-layout .chat-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;pointer-events:none;background:linear-gradient(135deg,rgba(77,155,231,.35),rgba(124,92,255,.12) 50%,transparent);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.glass{background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.hello:before{display:none}.hello{overflow:visible}.content>*{animation:rise .45s cubic-bezier(.2,.8,.2,1) both}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.sk:after{background:linear-gradient(90deg,transparent,rgba(77,155,231,.18),transparent)}@media(prefers-reduced-motion:reduce){.content>*{animation:none}}.ai-pick{display:flex;align-items:center;gap:12px;margin-top:14px;padding:10px 12px 10px 10px;width:100%;max-width:620px;border-radius:16px;background:color-mix(in srgb,var(--accent-soft) 60%,var(--surface));text-align:left;box-shadow:inset 0 0 0 1px var(--line-glow)}.ai-pick-av{width:52px;height:52px;border-radius:50%;overflow:hidden;background:var(--surface);flex:0 0 auto;display:flex;align-items:center;justify-content:center}.ai-pick-label{display:block;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;background:var(--grad-ai);-webkit-background-clip:text;background-clip:text;color:transparent}.ai-pick-text{display:block;font-size:14px;font-weight:600;margin-top:2px}.mods.six{grid-template-columns:repeat(3,1fr)}.mods.six .mod{min-height:210px;padding:20px 20px 16px;gap:8px;color:#fff;isolation:isolate}.mods.six .mod:before{display:none}.mod-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background-size:cover;background-position:center;filter:saturate(1.05);transition:transform .5s cubic-bezier(.2,.8,.2,1)}.mods.six .mod:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(180deg,#070d1c26,#070d1cb8 70%,#070d1ce6)}.mods.six .mod:hover .mod-bg{transform:scale(1.05)}.mods.six .mod-ic{background:#ffffff24;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.mods.six .mod h2{color:#fff;font-size:21px;margin-top:auto}.mods.six .mod p{color:#ffffffc7;font-size:12.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mods.six .mod-go{border-top-color:#ffffff2e}.mods.six .mod-go .muted{color:#ffffffb3;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mods.six .mod-go .go{color:#fff;width:28px;height:28px;border-radius:50%;background:#ffffff29;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}@media(max-width:899px){.mods.six{grid-template-columns:1fr 1fr;gap:10px}.mods.six .mod{min-height:170px;padding:14px}.mods.six .mod h2{font-size:17px}.mods.six .mod p{display:none}}.landing{--ld-bg: #f3f6fc;--ld-ink: #0f1a33;--ld-ink-2: #4a5a75;--ld-ink-3: #7a889e;--ld-surface: #ffffff;--ld-surface-2: #e9eef8;--ld-line: rgba(15,26,51,.09);--ld-line-strong: rgba(15,26,51,.16);--ld-nav: rgba(243,246,252,.82);--ld-eyebrow: #2663eb;--ld-link: #2663eb;--ld-halo: rgba(38,99,235,.12);--ld-shadow: 0 12px 40px rgba(15,26,51,.08);background:var(--ld-bg);color:var(--ld-ink);min-height:100vh;font-family:var(--font-ui)}html.dark .landing{--ld-bg: var(--space);--ld-ink: #e8eef7;--ld-ink-2: #9fb0c8;--ld-ink-3: #6b7d96;--ld-surface: rgba(255,255,255,.04);--ld-surface-2: rgba(255,255,255,.08);--ld-line: rgba(255,255,255,.08);--ld-line-strong: rgba(255,255,255,.16);--ld-nav: rgba(7,13,28,.72);--ld-eyebrow: #7fb6ff;--ld-link: #7fb6ff;--ld-halo: rgba(77,155,231,.16);--ld-shadow: 0 12px 40px rgba(0,0,0,.35)}.landing .tag{background:var(--ld-surface-2);color:var(--ld-ink-2)}.landing .tag.lock{background:var(--ld-surface-2);color:var(--ld-ink-3)}.ld-nav{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:28px;padding:0 28px;height:72px;background:var(--ld-nav);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.ld-nav:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--line-glow),transparent)}.ld-logo{height:52px;width:auto}.ld-right{margin-left:auto;display:flex;align-items:center;gap:10px}.ld-lang{background:var(--ld-surface-2);color:var(--ld-ink);border-color:var(--ld-line-strong)}.ld-lang option{color:#000}.landing .theme-btn{background:var(--ld-surface-2);color:var(--ld-ink-2)}.ld-login{color:var(--ld-ink);font-weight:600;padding:8px 10px}.ld-hero{position:relative;min-height:640px;display:flex;align-items:center;overflow:hidden;color:#e8eef7;background:var(--space)}.ld-hero-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:right center}.ld-hero-fade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#070d1ceb,#070d1cb8 28%,#070d1c47 52%,#070d1c00 72%),linear-gradient(180deg,rgba(7,13,28,.35) 0%,transparent 18%,transparent 80%,rgba(7,13,28,.55) 100%)}.particles{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.ld-hero-in{position:relative;max-width:1240px;width:100%;margin:0 auto;padding:80px 28px 72px}.ld-eyebrow{font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ld-eyebrow);display:flex;align-items:center;gap:10px}.ld-hero .ld-eyebrow{color:#7fb6ff}.ld-title{font-family:var(--font-display);font-weight:800;font-size:clamp(38px,6vw,68px);line-height:1.02;letter-spacing:-.035em;margin:14px 0 18px;max-width:16ch;text-wrap:balance;text-shadow:0 2px 24px rgba(7,13,28,.75)}.ld-title-zh{font-size:clamp(22px,3vw,34px);font-weight:600;letter-spacing:.2em;color:#cfe2ff;margin:-6px 0 16px}.ld-sub{font-size:17px;line-height:1.6;color:#dbe6f5;max-width:56ch;text-shadow:0 1px 14px rgba(7,13,28,.9),0 0 2px rgba(7,13,28,.9)}.ld-carousel{min-height:680px;outline:none}.ld-slide{opacity:0;transform:scale(1.06);transition:opacity 1.1s ease,transform 6s linear;will-change:opacity,transform}.ld-slide.on{opacity:1;transform:scale(1)}.ld-carousel .ld-hero-in{animation:ld-in .7s cubic-bezier(.2,.7,.2,1) both}@keyframes ld-in{0%{opacity:0;transform:translateY(18px)}}.ld-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:#070d1c73;color:#fff;display:grid;place-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;transition:background .2s,border-color .2s}.ld-arrow:hover{background:#2663eb8c;border-color:#fff6}.ld-arrow.prev{left:22px}.ld-arrow.prev svg{transform:rotate(180deg)}.ld-arrow.next{right:22px}.ld-arrow svg{width:20px;height:20px}@media(prefers-reduced-motion:reduce){.ld-slide{transition:opacity .3s;transform:none}.ld-carousel .ld-hero-in{animation:none}}.ld-section{max-width:1240px;margin:0 auto;padding:72px 28px}.ld-section-head{margin-bottom:30px;max-width:720px}.ld-section-head.center{margin-left:auto;margin-right:auto;text-align:center}.ld-section-head.center .ld-eyebrow{justify-content:center}.ld-section-head h2{font-family:var(--font-display);font-weight:800;font-size:clamp(28px,3.6vw,44px);letter-spacing:-.03em;margin-top:10px;line-height:1.1;text-wrap:balance}.ld-section-head p{color:var(--ld-ink-2);margin-top:10px;font-size:15px}.ld-card{background:var(--ld-surface);border-radius:18px;padding:18px 20px;box-shadow:inset 0 0 0 1px var(--ld-line)}.ld-auds{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.ld-aud{position:relative;border-radius:24px;overflow:hidden;padding:0;border:0;cursor:pointer;background:var(--ld-surface);box-shadow:inset 0 0 0 1px var(--ld-line),var(--ld-shadow);transition:transform .25s,box-shadow .25s;text-align:left}.ld-aud:hover{transform:translateY(-5px);box-shadow:inset 0 0 0 1px #4d9be780,var(--glow-strong)}.ld-aud img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .6s}.ld-aud:hover img{transform:scale(1.04)}.ld-aud-title{position:absolute;left:0;right:0;bottom:0;padding:70px 22px 18px;display:flex;align-items:flex-end;justify-content:space-between;gap:10px;color:#fff;background:linear-gradient(180deg,transparent,rgba(7,13,28,.9))}.ld-aud-title>span{display:flex;flex-direction:column;gap:4px;min-width:0}.ld-aud-title b{font-family:var(--font-display);font-weight:800;font-size:24px;letter-spacing:-.02em}.ld-aud-title small{font-size:13px;line-height:1.45;color:#cfe2ff}.ld-aud-title svg{width:22px;height:22px;opacity:.8;flex:none;margin-bottom:4px}.silk-map{position:relative}.silk-svg{width:100%;height:auto;display:block;overflow:visible}.silk-base{fill:none;stroke:var(--ld-line);stroke-width:14;stroke-linecap:round}.silk-glow{fill:none;stroke:url(#silkGrad);stroke-width:10;stroke-linecap:round;opacity:.55;stroke-dasharray:1800;stroke-dashoffset:1800;transition:stroke-dashoffset 2.2s cubic-bezier(.2,.8,.2,1)}.silk-line{fill:none;stroke:url(#silkGrad);stroke-width:3;stroke-linecap:round;stroke-dasharray:1800;stroke-dashoffset:1800;transition:stroke-dashoffset 2.2s cubic-bezier(.2,.8,.2,1)}.silk-map.on .silk-glow,.silk-map.on .silk-line{stroke-dashoffset:0}.silk-stop{cursor:pointer;opacity:0;transform-box:fill-box;transition:opacity .5s,transform .5s}.silk-map.on .silk-stop{opacity:1}.silk-stop .stop-halo{fill:var(--ld-halo);transition:fill .2s,r .2s}.silk-stop .stop-dot{fill:var(--ld-surface-2);stroke:#4d9be7;stroke-width:2}html.dark .silk-stop .stop-dot{fill:#12244a}.silk-stop.live .stop-dot{fill:#0051a2}.silk-stop.sel .stop-dot{fill:#4d9be7;stroke:#fff}.silk-stop.sel .stop-halo{fill:#4d9be747}.silk-stop:hover .stop-halo{fill:#4d9be738}.silk-stop .stop-no{fill:var(--ld-ink);font-family:var(--font-display);font-weight:800;font-size:15px;pointer-events:none}.silk-stop.live .stop-no,.silk-stop.sel .stop-no{fill:#fff}.silk-stop .stop-name{fill:var(--ld-ink);font-size:13px;font-weight:700;pointer-events:none}.silk-stop .stop-words{fill:var(--ld-ink-2);font-size:11px;pointer-events:none}.silk-detail{margin-top:10px;background:var(--ld-surface);border-radius:18px;padding:18px 20px;box-shadow:inset 0 0 0 1px #4d9be740;animation:rise .35s both}.silk-detail-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.silk-detail-head b{font-size:16px}.silk-badge{display:inline-block;padding:4px 12px;border-radius:100px;background:var(--grad-ai);color:#fff;font-weight:800;font-size:13px}.silk-skills{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}.silk-skills>div{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--ld-ink-2);background:var(--ld-surface-2);border-radius:12px;padding:10px 12px}.silk-skills i{font-style:normal;font-size:18px}.silk-exam{margin-top:10px;color:var(--ld-ink-3)}.ld-matrix{margin-top:22px}.ld-matrix summary{cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--ld-link);list-style:none}.ld-matrix summary::-webkit-details-marker{display:none}.ld-matrix summary svg{width:16px;height:16px;transition:transform .2s}.ld-matrix[open] summary svg{transform:rotate(90deg)}.matrix-wrap{overflow-x:auto;margin-top:14px;border-radius:16px;box-shadow:inset 0 0 0 1px var(--ld-line);background:var(--ld-surface)}.matrix{border-collapse:collapse;min-width:1100px;width:100%;font-size:12.5px}.matrix th,.matrix td{padding:10px 12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--ld-line)}.matrix thead th{background:var(--ld-surface-2)}.matrix thead th .lvl{display:block;font-family:var(--font-display);font-weight:800;font-size:22px;letter-spacing:-.03em}.matrix thead th .nm{display:block;color:var(--ld-ink-2);font-size:12px;margin:2px 0 6px}.matrix thead th.live .lvl{color:var(--ld-link)}.matrix tbody th{color:var(--ld-ink-3);font-weight:700;white-space:nowrap;width:90px}.matrix td{color:var(--ld-ink-2);min-width:130px}.ld-plat{position:relative}.ld-plat-in{display:grid;grid-template-columns:380px 1fr;gap:48px;align-items:center}.ld-plat-text h2{font-family:var(--font-display);font-weight:800;font-size:clamp(28px,3.2vw,40px);letter-spacing:-.03em;line-height:1.1;margin:10px 0 22px;text-wrap:balance}.ld-feats{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}.ld-feats li{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;padding:12px 14px;border-radius:14px;background:var(--ld-surface);box-shadow:inset 0 0 0 1px var(--ld-line)}.ld-feat-ic{width:32px;height:32px;border-radius:10px;background:var(--grad-ai);color:#fff;display:flex;align-items:center;justify-content:center;flex:none;box-shadow:var(--glow)}.ld-feat-ic svg{width:17px;height:17px}.plat-mock{position:relative;min-height:460px}.mock-win{position:absolute;left:0;top:10px;width:84%;border-radius:16px;background:var(--ld-surface);box-shadow:inset 0 0 0 1px var(--ld-line),var(--ld-shadow);overflow:hidden}html.dark .mock-win{background:#0e1a36}.mock-bar{display:flex;gap:6px;padding:10px 12px;border-bottom:1px solid var(--ld-line)}.mock-bar i{width:9px;height:9px;border-radius:50%;background:var(--ld-line-strong)}.mock-body{display:grid;grid-template-columns:150px 1fr;min-height:380px}.mock-side{border-right:1px solid var(--ld-line);padding:14px 10px;display:flex;flex-direction:column;gap:4px}.mock-logo{height:16px;width:70px;border-radius:5px;background:var(--grad-ai);margin:2px 6px 12px}.mock-nav{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;font-size:12px;font-weight:600;color:var(--ld-ink-2)}.mock-nav svg{width:14px;height:14px;flex:none}.mock-nav em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mock-nav.on{background:var(--grad-ai);color:#fff;box-shadow:var(--glow)}.mock-main{padding:16px;display:flex;flex-direction:column;gap:14px}.mock-h{font-family:var(--font-display);font-weight:800;font-size:18px;letter-spacing:-.02em}.mock-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mock-card{border-radius:12px;padding:10px 12px;background:var(--ld-surface-2);display:flex;flex-direction:column;gap:4px}.mock-card small{font-size:10.5px;color:var(--ld-ink-3);font-weight:600}.mock-card b{font-family:var(--font-display);font-weight:800;font-size:20px;letter-spacing:-.02em}.mock-card b em{font-style:normal;font-size:12px;color:var(--ld-ink-3)}.mock-prog{height:5px;border-radius:5px;background:var(--ld-line-strong);overflow:hidden}.mock-prog i{display:block;height:100%;background:var(--grad-ai)}.mock-rows{display:flex;flex-direction:column;gap:8px}.mock-row{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;background:var(--ld-surface-2)}.mock-row i{width:22px;height:22px;border-radius:7px;background:var(--ld-line-strong);flex:none}.mock-row span{height:8px;border-radius:8px;background:var(--ld-line-strong)}.mock-row.hl{box-shadow:inset 0 0 0 1px #4d9be799}.mock-row.hl i{background:var(--grad-ai)}.mock-phone{position:absolute;right:0;bottom:0;width:200px;border-radius:26px;background:var(--ld-surface);box-shadow:inset 0 0 0 1px var(--ld-line-strong),0 0 0 6px #0f1a33e6,var(--ld-shadow);padding:30px 12px 18px}html.dark .mock-phone{background:#0e1a36;box-shadow:inset 0 0 0 1px var(--ld-line-strong),0 0 0 6px #1a2947,var(--ld-shadow)}.mock-notch{position:absolute;top:10px;left:50%;transform:translate(-50%);width:60px;height:8px;border-radius:8px;background:var(--ld-line-strong)}.mock-chat{display:flex;flex-direction:column;gap:7px}.mock-chat-head{display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:4px}.mock-bub{max-width:92%;padding:7px 10px;border-radius:12px;font-size:11.5px;line-height:1.4;display:inline-flex;align-items:center;gap:5px}.mock-bub svg{width:12px;height:12px}.mock-bub.bot{align-self:flex-start;background:var(--ld-surface-2);color:var(--ld-ink);border-bottom-left-radius:4px}.mock-bub.me{align-self:flex-end;background:var(--grad-ai);color:#fff;border-bottom-right-radius:4px}.mock-score{padding:1px 7px;border-radius:100px;background:#16a34a;color:#fff;font-size:11px}.ld-voices{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}.ld-voice{background:var(--ld-surface);border-radius:22px;padding:20px 18px;box-shadow:inset 0 0 0 1px var(--ld-line),var(--ld-shadow);display:flex;flex-direction:column;gap:14px}.ld-voice-head{display:flex;align-items:center;gap:10px}.ld-voice-head img{width:48px;height:48px;border-radius:50%;object-fit:cover;flex:none;box-shadow:0 0 0 2px var(--ld-surface),0 0 0 4px #4d9be759}.ld-voice-head span{display:flex;flex-direction:column;min-width:0}.ld-voice-head b{font-size:14px}.ld-voice-head small{font-size:11.5px;color:var(--ld-ink-3)}.ld-voice p{font-size:13.5px;line-height:1.6;color:var(--ld-ink-2)}.ld-footer{background:#0b1631;color:#e8eef7;position:relative}.ld-footer:before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,var(--line-glow),transparent)}.ld-footer-in{max-width:1240px;margin:0 auto;padding:48px 28px 28px;display:grid;grid-template-columns:1fr 340px;gap:40px;align-items:start}.ld-footer-brand{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.ld-footer-logo{height:56px;width:auto}.ld-footer-brand b{font-size:16px}.ld-footer-brand p{color:#9fb0c8;font-size:14px}.ld-socials{display:flex;gap:8px;margin-top:6px}.ld-socials a{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#ffffff12;color:#cfe2ff;transition:background .2s,transform .2s}.ld-socials a:hover{background:var(--grad-ai);color:#fff;transform:translateY(-2px)}.ld-support{border-radius:18px;padding:18px 20px;background:#ffffff0d;box-shadow:inset 0 0 0 1px #ffffff1a;display:flex;flex-direction:column;gap:8px}.ld-support b{font-size:15px}.ld-support-phone{font-family:var(--font-display);font-weight:800;font-size:24px;letter-spacing:-.02em}.ld-support-btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.ld-support small{color:#6b7d96;font-size:12px}.ld-footer-bottom{max-width:1240px;margin:0 auto;padding:18px 28px 26px;border-top:1px solid rgba(255,255,255,.08);display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;color:#6b7d96}.ld-footer-langs{display:flex;gap:6px;flex-wrap:wrap}.landing .chip{background:var(--ld-surface-2);color:var(--ld-ink-2)}.landing .chip.on{background:#4d9be733;color:var(--ld-ink)}.landing .ld-footer .chip{background:#ffffff0f;color:#9fb0c8}.landing .ld-footer .chip.on{background:#4d9be740;color:#fff}@media(max-width:1099px){.ld-voices{grid-template-columns:repeat(3,1fr)}.ld-plat-in{grid-template-columns:1fr}}@media(max-width:899px){.ld-nav{padding:0 16px;gap:12px;height:62px}.ld-logo{height:38px}.ld-carousel{min-height:600px}.ld-arrow{display:none}.ld-hero-in{padding:56px 20px 48px}.ld-hero-fade{background:linear-gradient(180deg,rgba(7,13,28,.5) 0%,rgba(7,13,28,.9) 70%,var(--space) 100%)}.ld-hero-img{object-position:60% center}.ld-title-zh{letter-spacing:.12em}.ld-section{padding:48px 20px}.ld-auds{grid-template-columns:1fr}.ld-aud-title{font-size:20px}.silk-svg{min-width:760px}.silk-map{overflow-x:auto}.silk-skills,.ld-feats{grid-template-columns:1fr 1fr}.plat-mock{min-height:0}.mock-win{position:static;width:100%}.mock-phone{display:none}.mock-body{grid-template-columns:110px 1fr;min-height:0}.ld-voices{grid-template-columns:1fr}.ld-footer-in{grid-template-columns:1fr;gap:24px}}.ld-slogan{font-size:13.5px;font-weight:600;color:var(--ld-ink-2);padding-left:18px;border-left:1px solid var(--ld-line-strong);white-space:nowrap}.ld-contact-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:100px;border:1px solid var(--ld-line-strong);background:var(--ld-surface-2);color:var(--ld-ink);font-weight:700;font-size:13.5px;cursor:pointer;transition:background .2s,border-color .2s}.ld-contact-btn:hover{border-color:#4d9be7;background:var(--ld-halo)}.ld-contact-btn svg{width:17px;height:17px;color:#4d9be7}.ct-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0408148c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px}.ct-sheet{width:100%;max-width:520px;max-height:min(88vh,720px);display:flex;flex-direction:column;background:var(--ld-surface, #fff);color:var(--ld-ink);border-radius:24px;box-shadow:0 30px 80px #00000073,inset 0 0 0 1px var(--ld-line);overflow:hidden;animation:ld-in .3s cubic-bezier(.2,.7,.2,1) both}html.dark .ct-sheet{background:#0e1a36}.ct-head{display:flex;align-items:center;gap:10px;padding:14px 14px 0}.ct-tabs{display:flex;gap:4px;padding:4px;border-radius:100px;background:var(--ld-surface-2)}.ct-tab{padding:8px 16px;border-radius:100px;border:0;background:transparent;color:var(--ld-ink-2);font-weight:700;font-size:13.5px;cursor:pointer}.ct-tab.on{background:var(--grad-ai);color:#fff;box-shadow:var(--glow)}.ct-close{margin-left:auto;width:36px;height:36px;border-radius:50%;border:0;background:var(--ld-surface-2);color:var(--ld-ink-2);display:grid;place-items:center;cursor:pointer}.ct-close svg{width:18px;height:18px}.ct-body{padding:14px;overflow:auto;display:flex;flex-direction:column;gap:10px;flex:1;min-height:0}.ct-chat{display:flex;flex-direction:column;gap:8px;flex:1;min-height:260px}.ct-msg{max-width:88%;padding:10px 13px;border-radius:16px;font-size:14px;line-height:1.5;white-space:pre-wrap}.ct-msg.bot{align-self:flex-start;background:var(--ld-surface-2);border-bottom-left-radius:5px}.ct-msg.me{align-self:flex-end;background:var(--grad-ai);color:#fff;border-bottom-right-radius:5px}.ct-msg.bot.think{color:var(--ld-ink-3)}.ct-msg.bot.think i{display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;margin-right:4px;animation:ct-blink 1s infinite}.ct-msg.bot.think i:nth-child(2){animation-delay:.2s}.ct-msg.bot.think i:nth-child(3){animation-delay:.4s}@keyframes ct-blink{50%{opacity:.2}}.ct-bot-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ld-ink-2)}.ct-input{display:flex;gap:8px;padding:10px 14px 14px;border-top:1px solid var(--ld-line)}.ct-input input,.ct-form input,.ct-form textarea{flex:1;padding:11px 13px;border-radius:12px;border:1px solid var(--ld-line-strong);background:var(--ld-surface);color:var(--ld-ink);font:inherit;font-size:14px}html.dark .ct-input input,html.dark .ct-form input,html.dark .ct-form textarea{background:#ffffff0d}.ct-input input:focus,.ct-form input:focus,.ct-form textarea:focus{outline:none;border-color:#4d9be7;box-shadow:0 0 0 3px var(--ld-halo)}.ct-send{width:44px;height:44px;border-radius:12px;border:0;background:var(--grad-ai);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:var(--glow)}.ct-send:disabled{opacity:.5;cursor:default}.ct-send svg{width:18px;height:18px}.ct-phone{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-radius:16px;background:var(--ld-surface-2)}.ct-phone b{font-family:var(--font-display);font-weight:800;font-size:22px;letter-spacing:-.02em}.ct-phone-btns{display:flex;gap:8px}.ct-form{display:flex;flex-direction:column;gap:8px}.ct-form textarea{min-height:96px;resize:vertical}.ct-form .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ct-ok{padding:12px 14px;border-radius:12px;background:#16a34a1f;color:#16a34a;font-weight:700}.ct-err{padding:10px 14px;border-radius:12px;background:#dc26261a;color:#dc2626;font-size:13px}.ct-msg .link{background:none;border:0;color:var(--ld-link);font-weight:700;cursor:pointer;padding:0;font:inherit}.ct-hint{color:var(--ld-ink-2);font-size:13.5px;line-height:1.5}@media(max-width:899px){.ld-slogan,.ld-contact-btn span{display:none}.ld-contact-btn{padding:8px 10px}.ct-backdrop{align-items:flex-end;padding:0}.ct-sheet{border-radius:24px 24px 0 0;max-height:92vh}.ct-form .row2{grid-template-columns:1fr}}.login-art.dark-space{background:var(--space);color:#e8eef7}.login-art.dark-space:before{display:none}.login-art-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:.55}.login-art.dark-space:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#070d1c33,#070d1cd9)}.login-art.dark-space .login-art-in{position:relative;z-index:1}.login-art.dark-space .login-line{color:#fff}.login-art.dark-space .login-points li{color:#c9d6ea}.login-back{display:inline-block;margin-bottom:18px;color:#9fb0c8;font-size:13px;font-weight:600}.login-back:hover{color:#fff}.class-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.class-grid .span2{grid-column:1 / -1}.timetable{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.tt-day{min-height:92px;border-radius:12px;background:var(--surface-sunken);padding:10px}.tt-day.today{box-shadow:inset 0 0 0 2px var(--accent)}.tt-day.has{background:color-mix(in srgb,var(--accent-soft) 70%,var(--surface))}.tt-label{font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:6px}.tt-slot{border-radius:8px;background:var(--surface);padding:6px 8px;font-size:12.5px;box-shadow:var(--shadow-card);margin-top:6px}.tt-slot b{display:block}.tt-slot small{color:var(--ink-3)}.pill.hot-glow{background:var(--grad-ai);color:#fff;box-shadow:var(--glow)}.pill.hot-glow svg{color:#fff}.mates{display:grid;grid-template-columns:1fr 1fr;gap:8px}.mate{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;background:var(--surface-sunken)}.mate.me{box-shadow:inset 0 0 0 1.5px var(--accent)}.mate b{display:block;font-size:13.5px}.mate small{display:inline-flex;align-items:center;gap:4px;color:var(--ink-3);font-size:12px}.mate small svg{width:12px;height:12px;color:#ff6a2f}.avatar.sm{width:30px;height:30px;font-size:13px;box-shadow:none}.flame.ok{background:var(--jade-soft);color:var(--jade)}.cover-card{position:relative;overflow:hidden;background-size:cover;background-position:center;color:#fff;min-height:260px;display:flex;align-items:flex-end}.cover-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#070d1c33,#070d1cd9)}.cover-card-in{position:relative;z-index:1;padding:8px;max-width:520px}.cover-card-in h2{font-family:var(--font-display);font-size:24px;margin-bottom:8px}.cover-card-in p{color:#fffc;margin-bottom:14px}@media(max-width:899px){.class-grid{grid-template-columns:1fr}.timetable{grid-template-columns:repeat(7,minmax(88px,1fr));overflow-x:auto}.mates{grid-template-columns:1fr}}.lib-search{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 16px;border-radius:16px;background:var(--surface);box-shadow:var(--shadow-card),inset 0 0 0 1px var(--hairline)}.lib-search:focus-within{box-shadow:var(--glow)}.lib-search input{flex:1;border:0;background:transparent;padding:10px 0;font-size:16px;color:var(--ink);outline:none}.dict-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.dict-item{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);overflow:hidden}.dict-head{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;text-align:left;cursor:pointer}.dict-img{width:54px;height:54px;border-radius:12px;object-fit:cover;background:var(--surface-sunken);flex:0 0 auto}.dict-img.ph{display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;color:var(--ink-3)}.dict-hz{font-size:24px;font-weight:700}.dict-body{padding:0 14px 16px;border-top:1px solid var(--hairline)}.dict-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding-top:12px}.stroke-box{width:120px}.stroke-box .writer-box{width:120px;height:120px;border-radius:14px}.py-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.py-grid.tones{grid-template-columns:repeat(4,1fr)}.py-cell{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow-card);transition:transform .1s,box-shadow .15s}.py-cell:hover{transform:translateY(-2px);box-shadow:var(--glow)}.py-cell b{font-size:18px;color:var(--accent)}.py-cell.big b{font-size:26px}.py-cell small{color:var(--ink-3);font-size:13px}.writer-page .writer-chars .c{cursor:pointer}@media(max-width:620px){.dict-cols{grid-template-columns:1fr}}.tabbar button{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}.tabbar button svg{width:24px;height:24px}.tabbar button.active{color:var(--accent)}.more-sheet{max-width:640px}.more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.more-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px;border-radius:14px;background:var(--surface);box-shadow:var(--shadow-card);font-size:12.5px;font-weight:600;color:var(--ink)}.more-item.teach{color:var(--seal)}.more-ic{width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center}.more-ic svg{width:20px;height:20px}.topnav-links a{white-space:nowrap;padding:0 12px;font-size:14px}.linkish svg{width:14px;height:14px;vertical-align:-2px}@media(max-width:1240px){.topnav-in{gap:16px;padding:0 16px}.topnav-links a{padding:0 9px;font-size:13.5px}.topnav-teacher span{display:none}.topnav-right{gap:8px}}.login-points li>span:last-child{display:flex;flex-direction:column;gap:2px}.login-points li b{font-size:15px}.login-points li small{font-size:12.5px;color:#9fb0c8;line-height:1.45}.rowi.ann .ann-pin{font-size:18px;flex:none}.rowi.praise.me .tt{color:var(--accent)}.syllabus{display:grid;grid-template-columns:1fr 1fr;gap:6px}.syl{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:var(--surface-2, rgba(127,127,127,.08));border:0;color:inherit;font:inherit;text-align:left;cursor:pointer}.syl:hover{background:var(--surface-3, rgba(127,127,127,.14))}.syl-no{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:12px;background:var(--ground);flex:none}.syl.done .syl-no{background:#16a34a;color:#fff}.syl.done .syl-no svg{width:14px;height:14px}@media(max-width:899px){.syllabus{grid-template-columns:1fr}}.cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.cat-card{position:relative;min-height:200px;border-radius:22px;overflow:hidden;border:0;padding:0;text-align:left;cursor:pointer;color:#fff;background:var(--space);box-shadow:inset 0 0 0 1px #ffffff14;transition:transform .25s,box-shadow .25s;display:flex;align-items:flex-end}.cat-card:hover{transform:translateY(-4px);box-shadow:inset 0 0 0 1px #4d9be780,var(--glow-strong)}.cat-bg{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;transition:transform .6s}.cat-card:hover .cat-bg{transform:scale(1.05)}.cat-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#070d1c0d 20%,#070d1ce6)}.cat-seal{position:absolute;top:14px;right:14px;z-index:1;width:36px;height:36px;border-radius:8px;background:var(--seal);color:#fff;display:grid;place-items:center;font-size:18px;box-shadow:0 4px 14px #00000059}.cat-body{position:relative;z-index:1;padding:18px 18px 16px;display:flex;flex-direction:column;gap:4px;width:100%}.cat-body b{font-family:var(--font-display);font-weight:800;font-size:22px;letter-spacing:-.02em}.cat-body small{font-size:12.5px;color:#cfe2ff}.cat-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;font-size:12px;font-weight:700;color:#9fd0ff}.cat-foot svg{width:18px;height:18px}.cat-card.empty .cat-foot{color:#8a96ad}.crumb{display:inline-block;font-size:13px;color:var(--ink-3);margin-bottom:6px}@media(max-width:899px){.cat-grid{grid-template-columns:1fr 1fr;gap:10px}.cat-card{min-height:150px}.cat-body b{font-size:17px}.cat-body small{display:none}}.login{position:relative;grid-template-columns:1fr minmax(400px,520px);background:var(--space);overflow:hidden}.login .login-art.dark-space{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;display:flex;align-items:center;justify-content:flex-start;padding:0 0 0 clamp(24px,7vw,120px)}.login .login-art-img{opacity:.95}.login .login-art.dark-space:after{background:linear-gradient(90deg,#070d1cc7,#070d1c73 38%,#070d1c26 65%,#070d1c59),linear-gradient(180deg,rgba(7,13,28,.25),transparent 30%,transparent 70%,rgba(7,13,28,.6))}.login .login-art-in{max-width:520px}.login .login-points li b{text-shadow:0 1px 12px rgba(7,13,28,.8)}.login .login-points li small{color:#c9d6ea;text-shadow:0 1px 10px rgba(7,13,28,.9)}.login-side{position:relative;z-index:1;background:transparent;justify-content:center;padding:22px 48px 40px;grid-column:2}.login-side .login-langs{position:absolute;top:20px;right:28px}.login-side .login-langs .chip{background:#ffffff14;color:#c9d6ea}.login-side .login-langs .chip.on{background:#4d9be747;color:#fff}.login-side .theme-btn{background:#ffffff14;color:#c9d6ea}.login-form{flex:0 0 auto;margin:auto;max-width:420px;padding:34px 32px 28px;border-radius:26px;background:#0a1224a8;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:inset 0 0 0 1px #ffffff1f,0 30px 80px #00000073;--ink: #e8eef7;--ink-2: #c9d6ea;--ink-3: #9fb0c8;color:var(--ink)}.login-form h1{color:#fff}.login-form .muted{color:#9fb0c8}.login-form .fld>span{color:#c9d6ea}.login-form input,.login-form select{background:#ffffff12;color:#fff;border-color:#ffffff29}.login-form input::placeholder{color:#6b7d96}.login-form input:focus{border-color:#4d9be7;box-shadow:0 0 0 3px #4d9be740}.login-form .btn.primary,.login-form button[type=submit]{background:var(--grad-ai);color:#fff;border:0;box-shadow:var(--glow)}.login-form a{color:#7fb6ff}.login-form .login-foot,.login-form .tiny{color:#9fb0c8}@media(max-width:899px){.login{grid-template-columns:1fr}.login .login-art.dark-space{display:block;padding:0}.login .login-art-in{display:none}.login .login-art.dark-space:after{background:linear-gradient(180deg,#070d1c59,#070d1ccc)}.login-side{grid-column:1;padding:64px 16px 28px;min-height:100dvh}.login-side .login-langs{right:12px;top:12px}.login-form{padding:26px 20px 22px}.login-form .login-logo.sm{display:block}}.bell{position:relative}.bell-btn{position:relative;width:36px;height:36px;border-radius:50%;border:0;background:var(--surface-2, rgba(127,127,127,.12));color:var(--ink-2);display:grid;place-items:center;cursor:pointer}.bell-btn svg{width:18px;height:18px}.bell-btn.has{color:var(--accent)}.bell-n{position:absolute;top:-3px;right:-3px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--seal);color:#fff;font-size:10px;font-weight:800;display:grid;place-items:center;box-shadow:0 0 0 2px var(--ground)}.bell-pop{position:absolute;right:0;top:44px;width:340px;max-height:420px;overflow:auto;z-index:50;background:var(--surface);border-radius:18px;box-shadow:0 20px 60px #00000059,inset 0 0 0 1px var(--hairline);padding:8px;animation:rise .2s both}.bell.compact .bell-pop{position:fixed;left:10px;right:10px;top:58px;width:auto}.bell-head{font-weight:800;padding:8px 10px 6px;font-size:14px}.bell-empty{padding:18px 10px 14px;color:var(--ink-3);font-size:13px}.bell-item{display:flex;gap:10px;padding:9px 10px;border-radius:12px;align-items:flex-start}.bell-item .tt{font-size:13.5px;line-height:1.45;white-space:pre-wrap}.bell-item .ds{font-size:11.5px;color:var(--ink-3);margin-top:2px}.bell-dot{width:8px;height:8px;border-radius:50%;background:transparent;margin-top:6px;flex:none}.bell-item.new{background:var(--accent-soft, rgba(77,155,231,.1))}.bell-item.new .bell-dot{background:var(--accent)}
