:root{--bg:#f5f7fb;--card:#fff;--ink:#1f2937;--sub:#6b7280;--line:#e5e7eb;--pri:#2f6fed;--pri2:#e8f0ff;--ok:#16a34a;--ok2:#e7f7ee;--bad:#dc2626;--bad2:#fdecec;--warn:#d97706;--warn2:#fff4e0;--r:14px}
*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
a{color:var(--pri);text-decoration:none}
.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;background:#fff;border-bottom:1px solid var(--line)}
.brand{font-weight:700;color:var(--ink);display:inline-flex;align-items:center;gap:8px;flex-shrink:0;white-space:nowrap}.brand-icon{display:block;flex:none}.login-brand{display:flex;align-items:center;gap:10px}.login-brand img{display:block;flex:none}#nav{display:flex;gap:4px}#nav a{padding:6px 10px;border-radius:8px;color:var(--sub);font-size:15px}#nav a.on{background:var(--pri2);color:var(--pri);font-weight:600}
main{max-width:860px;margin:0 auto;padding:16px 14px 90px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;margin:12px 0}
h1{font-size:22px;margin:6px 0 4px}h2{font-size:18px;margin:4px 0 10px}h3{font-size:16px;margin:12px 0 6px}
.sub{color:var(--sub);font-size:14px}.muted{color:var(--sub)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}.kpi b{display:block;font-size:24px}.kpi span{color:var(--sub);font-size:13px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:9px 14px;font-size:15px;cursor:pointer}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.danger{color:var(--bad)}
.btn:disabled{opacity:.5;cursor:not-allowed}.btn.block{width:100%}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.sp{flex:1}
.lesson{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.lesson:first-of-type{border-top:0}
.tag{display:inline-block;font-size:12px;padding:1px 8px;border-radius:999px;background:var(--pri2);color:var(--pri);margin-right:4px}
.tag.ok{background:var(--ok2);color:var(--ok)}.tag.bad{background:var(--bad2);color:var(--bad)}.tag.warn{background:var(--warn2);color:var(--warn)}.tag.gray{background:#f1f2f4;color:var(--sub)}
/* quiz */
.qbar{position:sticky;top:53px;z-index:5;background:var(--bg);padding:8px 0;display:flex;align-items:center;gap:10px}
.timer{font-variant-numeric:tabular-nums;font-weight:700;padding:4px 10px;border-radius:8px;background:#fff;border:1px solid var(--line)}.timer.low{color:var(--bad);border-color:var(--bad)}
.progress{flex:1;height:6px;background:var(--line);border-radius:3px;overflow:hidden}.progress i{display:block;height:100%;background:var(--pri)}
.stem{white-space:pre-wrap}.src{color:var(--pri);font-size:13px}
.items{margin:10px 0;padding:0;list-style:none}.items li{padding:6px 0;border-top:1px dashed var(--line)}.items li:first-child{border-top:0}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.opt{border:2px solid var(--line);background:#fff;border-radius:12px;padding:12px;font-size:17px;cursor:pointer;text-align:left}.opt.sel{border-color:var(--pri);background:var(--pri2)}
.conf{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.conf button{border:2px solid var(--line);background:#fff;border-radius:12px;padding:10px 4px;font-size:15px;cursor:pointer}
.conf button.sel[data-c=sure]{border-color:var(--ok);background:var(--ok2)}.conf button.sel[data-c=unsure]{border-color:var(--warn);background:var(--warn2)}.conf button.sel[data-c=guess]{border-color:var(--bad);background:var(--bad2)}
.dots{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.dot{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:14px;cursor:pointer}
.dot.done{background:var(--pri2);border-color:var(--pri)}.dot.half{background:var(--warn2);border-color:var(--warn)}.dot.cur{outline:2px solid var(--pri);outline-offset:1px}
.imgbox img{max-width:100%;border:1px solid var(--line);border-radius:8px}
/* review */
.judge{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0}
.judge .jrow{display:flex;gap:8px;margin-top:6px}.judge .jrow button{flex:1;border:2px solid var(--line);background:#fff;border-radius:10px;padding:7px;font-size:15px;cursor:pointer}
.judge .jrow button.sel.y{border-color:var(--ok);background:var(--ok2)}.judge .jrow button.sel.n{border-color:var(--bad);background:var(--bad2)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 11px;font-size:14px;cursor:pointer}.chip.sel{background:var(--pri);border-color:var(--pri);color:#fff}
textarea,input[type=text],input[type=password]{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px;font:inherit;background:#fff}
.cmp{border-radius:12px;padding:10px 12px;margin:8px 0;border:1px solid var(--line)}.cmp.right{background:var(--ok2);border-color:#bfe8cf}.cmp.wrong{background:var(--bad2);border-color:#f5c2c2}
.quick{background:var(--pri2);border-radius:12px;padding:10px 14px}.quick div{margin:2px 0}
.ai{white-space:pre-wrap;background:#fbfaff;border:1px solid #e3dcff;border-radius:12px;padding:12px 14px}
/* charts */
.bars{display:flex;align-items:flex-end;gap:4px;height:140px;padding-top:10px}.bars .b{flex:1;display:flex;flex-direction:column-reverse;align-items:stretch;height:100%;position:relative}
.bars .b i{display:block}.bars .b small{position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--sub)}
.donut{width:130px;height:130px;border-radius:50%;position:relative;flex:none}.donut:after{content:"";position:absolute;inset:26px;background:#fff;border-radius:50%}
.legend div{display:flex;align-items:center;gap:6px;font-size:14px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
.hbar{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:14px}.hbar .l{width:11em;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar .t{flex:1;height:10px;background:#eef0f4;border-radius:5px;overflow:hidden}.hbar .t i{display:block;height:100%}.hbar .v{width:7.5em;white-space:nowrap;text-align:right;color:var(--sub);flex:none}
table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:7px 6px;border-bottom:1px solid var(--line);text-align:left}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#111827;color:#fff;padding:9px 16px;border-radius:10px;font-size:14px;opacity:0;transition:.2s;pointer-events:none;z-index:50}#toast.on{opacity:.95}
.loading{padding:40px;text-align:center;color:var(--sub)}
.login{max-width:360px;margin:12vh auto}
.foot{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px;justify-content:center;z-index:8}.foot .btn{flex:1;max-width:260px}
@media (max-width:560px){#nav a{padding:6px 7px;font-size:14px}.brand{font-size:15px}.opts{grid-template-columns:1fr 1fr}}
.hbar.stack{flex-wrap:wrap}.hbar.stack .l{width:100%;white-space:normal}

.modal{position:fixed;inset:0;background:rgba(17,24,39,.45);z-index:60;display:flex;align-items:flex-end;justify-content:center}.modal .sheet{background:#fff;width:100%;max-width:480px;border-radius:16px 16px 0 0;padding:18px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.modal .sheet .btn{flex-direction:column;align-items:flex-start;text-align:left;padding:12px 14px}.modal .sheet .btn[data-a=stay]{align-items:center}@media(min-width:700px){.modal{align-items:center}.modal .sheet{border-radius:16px}}
/* vocab */
.vhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.vhead h1{flex:1}.vhead.vocab-head{flex-wrap:nowrap}.vhead.vocab-head h1{flex:none;margin:0}.vhead.vocab-head .vsearch{flex:1;min-width:0;width:auto;max-width:none}.vsearch{position:relative;width:min(260px,100%)}.vsearch input{padding:8px 10px}
#vres{position:absolute;right:0;left:0;top:100%;z-index:20;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.08);max-height:60vh;overflow:auto}#vres:empty{display:none}#vres a{display:block;padding:8px 10px;border-bottom:1px solid var(--line);color:var(--ink)}
.books{display:flex;gap:8px;margin:10px 0}.bk{flex:1;border:2px solid var(--line);background:#fff;border-radius:12px;padding:10px;text-align:left;cursor:pointer;font:inherit}.bk span{display:block;font-size:13px;color:var(--sub)}.bk.on{border-color:var(--pri);background:var(--pri2)}
.btn.big{padding:13px 18px;font-size:17px;font-weight:600}.btn.mini{padding:4px 10px;font-size:14px;border-radius:8px;min-height:40px;display:inline-flex;align-items:center;justify-content:center}.btn.faved{color:var(--bad);border-color:#f5c2c2}
.srow{display:flex;align-items:center;gap:10px;margin:8px 0}.srow>span{width:3em;color:var(--sub);font-size:14px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}.seg button{border:0;background:#fff;padding:7px 14px;font:inherit;font-size:15px;cursor:pointer;border-left:1px solid var(--line)}.seg button:first-child{border-left:0}.seg button.on{background:var(--pri);color:#fff}
.vbar{display:flex;align-items:center;gap:8px;margin:0 0 8px}.ok{color:var(--ok)}.bad{color:var(--bad)}
.vcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px 18px 14px;overflow:auto;max-height:calc(100dvh - 190px);overscroll-behavior:contain}
#vc{min-height:calc(100dvh - 210px)}
.vcard.quiz{text-align:center;padding:26px 16px;max-height:none}
.vno{font-size:13px;color:var(--sub)}.vw{font-size:34px;font-weight:700;letter-spacing:.3px;cursor:pointer;line-height:1.3;margin-top:4px;word-break:break-word}.vw .say{font-size:20px;vertical-align:middle;opacity:.7}
.vph{color:var(--sub);font-size:16px;min-height:1.4em;font-family:"Lucida Sans Unicode","Arial Unicode MS",sans-serif}
.vm{font-size:20px;margin:10px 0 6px;font-weight:600}.pos{font-style:normal;color:var(--pri);font-weight:400;font-size:.85em}
.vsec{border-top:1px dashed var(--line);margin-top:10px;padding-top:10px;font-size:15px}.vsec>b{font-size:14px;color:var(--sub);margin-right:4px}.forms{color:#374151}
.parts{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0}.part{background:var(--pri2);border-radius:8px;padding:2px 9px}.part b{color:var(--pri)}.plus{color:var(--sub)}
.cogs{margin-top:6px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.cog{border:1px solid var(--line);border-radius:999px;padding:1px 9px;font-size:14px}.cog.in{border-color:var(--pri);color:var(--pri);cursor:pointer}
.tip{margin-top:6px;background:var(--warn2);border-radius:8px;padding:5px 10px}
.vfoot{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.vhint{text-align:center;margin:6px 0}
.vopts{display:grid;grid-template-columns:1fr;gap:9px;margin:12px 0}.vopts .opt{font-size:17px;padding:13px 14px}.opt.right{border-color:var(--ok);background:var(--ok2)}.opt.wrong{border-color:var(--bad);background:var(--bad2)}.opt:disabled{cursor:default;color:inherit}
#after .vcard{margin-top:12px;max-height:none}#after .btn{margin-top:10px}
@keyframes vup{from{transform:translateY(40px);opacity:.2}to{transform:none;opacity:1}}@keyframes vdown{from{transform:translateY(-40px);opacity:.2}to{transform:none;opacity:1}}
.in-up{animation:vup .22s ease-out}.in-down{animation:vdown .22s ease-out}
.sheet.edit,.edit{gap:8px}.edit label{display:block;font-size:13px;color:var(--sub);margin-bottom:6px}.edit label input,.edit label textarea{margin-top:2px;color:var(--ink);font-size:15px}
.modal .sheet{max-height:92dvh;overflow:auto}.modal .sheet.vcard{max-height:92dvh}.modal .sheet .btn.mini{flex-direction:row;padding:4px 10px}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:10px}.cw{text-align:center;font-size:12px;color:var(--sub)}.cd{text-align:center;border-radius:8px;padding:5px 0;font-size:14px;background:#f6f7f9;line-height:1.2;min-height:40px}.cd small{display:block;font-size:11px}.cd.on{background:var(--ok2);color:var(--ok);font-weight:600}.cd.today{outline:2px solid var(--pri)}
@media (max-width:560px){.vw{font-size:30px}#nav{gap:0}#nav a{padding:6px 6px}}
.grid.k{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px}.grid.k .kpi{padding:9px 10px}.grid.k .kpi b{font-size:20px}.grid.k .kpi span{font-size:12px;line-height:1.3;display:block}
.btn{white-space:nowrap}
body.vlock{overflow:hidden;overscroll-behavior:none;height:100%}body.vlock main{padding-bottom:0}
#vc{min-height:0;touch-action:pan-y}
.pcnav{display:none;gap:8px;margin-top:10px}.pcnav .btn{flex:1}
@media (hover:hover) and (pointer:fine){.pcnav{display:flex}}
/* 极简浏览卡 */
body.vlock .top{display:none}body.vlock{background:#f6f6f9}
.bbar{display:flex;align-items:center;padding:4px 2px 0;color:#9aa0a6;font-size:14px}.bback{font-size:26px;color:#555;line-height:1;padding:4px 10px 4px 0}
#vc{overflow:auto;overscroll-behavior:contain;touch-action:pan-y}
.bc{min-height:100%;display:flex;flex-direction:column;align-items:center;text-align:center;font-family:"Helvetica Neue",-apple-system,"PingFang SC",sans-serif}
.bc-top{padding-top:9vh}
.bc-no{font-size:38px;font-weight:200;color:#222;line-height:1.2}
.bc-w{font-size:clamp(34px,13vw,58px);font-weight:200;color:#111;line-height:1.25;margin-top:6px;word-break:break-word;cursor:pointer;letter-spacing:.5px}
.bc-m{font-size:26px;font-weight:300;color:#222;margin-top:10px;padding:0 10px;cursor:pointer}
.bc-f{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;margin:9vh auto 0;max-width:420px;width:100%;padding:0 22px;text-align:left;font-size:16px;font-weight:300;color:#333}.bc-f span{overflow-wrap:anywhere}
.bc-more{width:100%;text-align:left;margin-top:18px}.bc-more .vsec{border-top:1px dashed #ddd}
.bc-fav{margin-top:auto;margin-bottom:6px;padding-top:24px;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
html:has(body.vlock){background:#f6f6f9}
.bc-f{grid-template-columns:repeat(2,max-content);justify-content:center;column-gap:48px;row-gap:10px;text-align:left;padding:0 12px;width:auto;max-width:100%}

.safe-top{position:fixed;left:0;right:0;top:0;height:max(env(safe-area-inset-top),1px);background:#f6f6f9;z-index:30}
@media (max-width:380px){.bc-f{column-gap:28px}}

/* 默认放大，展开词根后缩小 */
.bc-no{font-size:44px}.bc-w{font-size:clamp(40px,15vw,68px)}.bc-m{font-size:30px}.bc-f{font-size:19px;row-gap:12px}
.bc.open .bc-top{padding-top:3vh}.bc.open .bc-no{font-size:28px}.bc.open .bc-w{font-size:clamp(30px,10vw,44px)}.bc.open .bc-m{font-size:21px;margin-top:4px}.bc.open .bc-f{font-size:15px;margin-top:3vh;row-gap:6px}
.phr{margin-top:8px}.phr>b{font-size:14px;color:var(--sub)}.phr div{margin:3px 0}.phr .pe{font-weight:600}.phr .pm{color:#555}
#vpos{display:inline;font-size:13px;color:var(--sub)}
.bc{font-family:-apple-system,"SF Pro Display","Helvetica Neue","PingFang SC",sans-serif}
.bc-w{font-weight:100;font-size:clamp(48px,18vw,84px);letter-spacing:0;white-space:nowrap;word-break:normal}
.bc.open .bc-w{font-size:clamp(34px,12vw,52px)}
.bc-no{font-weight:100}.bc-m{font-weight:200}
.bc-top{width:100%}
.bc-w{display:inline-block;max-width:none}
.bc-m{font-weight:400;font-size:34px}.bc.open .bc-m{font-size:24px}
.bc-m{font-weight:300;font-size:clamp(32px,11vw,46px);line-height:1.3}.bc.open .bc-m{font-size:26px}
.bc-m{font-weight:200;font-size:38px}.bc.open .bc-m{font-size:24px}
.bc-f{font-weight:200}.bc-no{font-weight:100}.bc-w{font-weight:100}

/* 极简单词首页 */
body.vmin{background:#f6f6f9}body.vmin .top{background:#f6f6f9;border-bottom:0}
.hm{font-family:-apple-system,"Helvetica Neue","PingFang SC",sans-serif;min-height:calc(100dvh - 90px);display:flex;flex-direction:column}
.hm-top{display:flex;align-items:center;padding:4px 0}.hm-book{border:0;background:none;font:inherit;font-size:15px;color:#666;padding:6px 0;cursor:pointer}.hm-ic{border:0;background:none;padding:6px;cursor:pointer}
.hm-search{position:relative;margin:4px 0 0}.hm-search input{border-radius:12px;border:1px solid #e4e4ea;background:#fff}
.hm-stats{display:flex;justify-content:space-around;text-align:center;margin-top:12vh}.hm-stats b{display:block;font-size:44px;font-weight:200;color:#111;line-height:1.1}.hm-stats span{font-size:14px;color:#999;font-weight:300;letter-spacing:.5px}
.hm-bar{height:2px;background:#e6e6ec;margin:7vh 12px 0;border-radius:1px;overflow:hidden}.hm-bar i{display:block;height:100%;background:#111}
.hm-hint{text-align:center;color:#999;font-size:13px;font-weight:300;margin:10px 0 0}
.hm-go{display:block;margin:9vh auto 0;width:min(260px,70%);text-align:center;padding:15px 0;border-radius:999px;background:#111;color:#fff;font-size:18px;font-weight:300;letter-spacing:4px}
.hm-links{margin-top:auto;padding:30px 0 10px;display:flex;justify-content:center;gap:34px}.hm-links a{color:#888;font-size:15px;font-weight:300;cursor:pointer}
.hm-sheet h2{font-weight:500}.hm-opt{display:flex;flex-direction:column;align-items:flex-start;width:100%;border:1px solid #eee;background:#fff;border-radius:12px;padding:12px 14px;font:inherit;cursor:pointer;text-align:left}.hm-opt.on{border-color:#111}.hm-opt small{color:#999}
.hm-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0}.hm-row>span{color:#555}
.hm-sheet .seg button.on{background:#111;color:#fff}
.star{position:relative;height:300px;margin:8px -14px 4px;background:radial-gradient(ellipse at 50% 45%,#e9f0ff 0%,rgba(245,247,251,0) 70%);border-radius:18px}.star canvas{display:block}
.vhead h1{white-space:nowrap}
.bk[data-pick]{flex:1.45}.bk b{white-space:nowrap}.bk-sw{font-style:normal;color:var(--pri);margin-left:8px;font-weight:600}.books .bk{text-align:center}.vk .kpi{text-align:center}.bkp b{font-size:16px}.bkp.on{border-color:var(--pri);background:var(--pri2)}
.vcats{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:-2px 0 10px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.vcats::-webkit-scrollbar{display:none}
.vcat{flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font:inherit;font-size:14px;cursor:pointer;display:flex;gap:6px;align-items:baseline;white-space:nowrap}.vcat span{font-size:12px;color:var(--sub)}
.vcat.on{background:var(--pri);border-color:var(--pri);color:#fff}.vcat.on span{color:#dbe4ff}.vcat.done:not(.on) span{color:var(--ok)}
.vsec.light{opacity:.6}.vsec.light .forms{font-size:14px}.bc-f.light{opacity:.5}.bc-cat{display:block;font-size:13px;font-weight:400;color:#999;letter-spacing:1px;margin-top:-4px}
/* 听力 */
.lk{margin:10px 0}.lk .kpi{text-align:center}.kpi small{font-size:13px;color:var(--sub);font-weight:400}
.lh3{font-size:16px;margin:16px 0 8px}.lh3 .sub{font-weight:400;font-size:13px}
.lsegs{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.lsg{border:1px solid var(--line);border-radius:10px;padding:8px 0;text-align:center;text-decoration:none;color:inherit;background:#fff;display:flex;flex-direction:column}.lsg b{font-size:18px}.lsg span{font-size:12px;min-height:14px}.lsg.ok{border-color:var(--ok);background:#eefbf3}.lsg.ok span{color:var(--ok)}.lsg.bad{border-color:var(--bad);background:#fff1f1}.lsg.bad span{color:var(--bad)}
.lplayer{position:sticky;top:0;z-index:5;box-shadow:0 4px 14px rgba(0,0,0,.06)}
.lbig{min-width:118px;padding:12px 14px;font-size:16px}.lbar{height:8px;background:#e8ebf2;border-radius:4px;cursor:pointer;position:relative;overflow:hidden}.lbar i{position:absolute;left:0;top:0;bottom:0;background:var(--pri);border-radius:4px}
.lrate button{padding:5px 9px;font-size:13px}
.lsec.now{border-color:var(--pri);box-shadow:0 0 0 2px var(--pri2)}.lsech{margin-bottom:6px}
.lq{margin:4px 0 14px}.lstem{font-size:16px;margin-bottom:6px;line-height:1.5}.lopts{display:flex;flex-direction:column;gap:6px}
.lopt{text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;font:inherit;font-size:15px;cursor:pointer;line-height:1.4}.lopt.sel{border-color:var(--pri);background:var(--pri2)}.lopt.right{border-color:var(--ok);background:#eefbf3}.lopt.wrong{border-color:var(--bad);background:#fff1f1}
.lwhy{background:#f7f8fb;border-radius:8px;padding:8px 10px;margin-top:8px;font-size:14px;line-height:1.6}
.lscore{font-size:54px;font-weight:700;margin:6px 0}.lscore small{font-size:22px;color:var(--sub)}
.lgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.lg{border-radius:8px;padding:6px 0;text-align:center;text-decoration:none;color:inherit;display:flex;flex-direction:column;font-size:13px}.lg b{font-size:16px}.lg.ok{background:#eefbf3;color:#137a3a}.lg.bad{background:#fff1f1;color:#c0262d}
.lwr{border-top:1px dashed var(--line);padding:10px 0}.lwr:first-of-type{border-top:0}.lwr .btn{margin-top:6px}
.ltools{gap:6px;margin:8px 0 0}.ltools .chip{margin:0}
.lline{display:flex;gap:8px;padding:8px 6px;border-radius:10px;align-items:flex-start;transition:background .2s}.lline.ev{background:#fff8e6}.lline.now{background:#e7efff}
.lpl{flex:0 0 32px;height:32px;border-radius:50%;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:12px;color:var(--pri)}.lpl[data-playing]{background:var(--pri);color:#fff}
.len{font-size:17px;line-height:1.6}.spk{display:inline-block;font-size:12px;color:#fff;background:#8a93a6;border-radius:4px;padding:0 5px;margin-right:6px;vertical-align:2px}.lw{cursor:pointer;border-radius:3px}.lw:hover{background:#dde7ff}
.lev{color:#b7791f;font-size:16px}.lzh{font-size:14px;color:var(--sub);margin-top:2px;line-height:1.5}
.lqzh{display:block;padding-left:20px}
.lline.blind .len,.lline.blind .lzh{filter:blur(6px);user-select:none}
.wtabs{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin:10px 0}.wtab{min-width:0;white-space:nowrap;display:flex;flex-direction:column;align-items:center;border:1px solid var(--line);background:#fff;border-radius:12px;padding:7px 2px;color:var(--ink)}.wtab b{font-size:15px}.wtab span{font-size:11.5px;color:var(--sub)}.wtab span i{font-style:normal;color:var(--warn)}.wtab.on{border-color:var(--pri);background:var(--pri2)}.wtab.on b{color:var(--pri)}.wtab.empty{opacity:.45}
.wtabs.sm{margin-top:-2px}.wtabs.sm .wtab{padding:5px 1px;border-radius:10px}.wtabs.sm .wtab b{font-size:13px}.wtabs.sm .wtab span{font-size:11px}
.wbtns{flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.lconfh{margin:8px 0 4px}.conf.lconf{gap:6px}.conf.lconf button{padding:6px 4px;font-size:14px;border-radius:10px}
.lkpi i{font-style:normal}
.lastb{margin-top:4px}.lastb .ok{color:var(--ok)}.lastb .wn{color:var(--warn)}.lastb .bad{color:var(--bad)}.tri{display:flex;height:6px;border-radius:99px;overflow:hidden;background:var(--line);margin-top:5px;max-width:260px}.tri i{display:block}.tri .s{background:var(--ok)}.tri .g{background:#f5b84a}.tri .w{background:#f08a8a}
.hsub.empty h2{color:var(--sub)}.hsub.empty{opacity:.75}.lesson.empty{opacity:.45}.lesson.empty b{font-weight:600}
.krow{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}.krow>*{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 4px;text-align:center;color:var(--ink)}.krow b{display:block;font-size:19px;line-height:1.3}.krow span{font-size:12px;color:var(--sub)}
.sgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.scard{position:relative;display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;color:var(--ink);min-height:104px}.scard .sic{font-size:26px;line-height:1.2}.scard b{font-size:17px}.scard .sl{font-size:12.5px;color:var(--sub);line-height:1.4}.scard.off{background:#fafbfc}.scard.off .sic,.scard.off b{opacity:.45}.scard:active{transform:scale(.98)}
.sbadge{position:absolute;top:10px;right:10px;min-width:22px;height:22px;padding:0 6px;border-radius:99px;background:var(--bad);color:#fff;font-style:normal;font-size:12.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
.mods{padding:4px 14px}.mod{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line);color:var(--ink)}.mods .mod:first-child{border-top:0}.mod .sic{font-size:22px;width:30px;text-align:center}.mod.off{opacity:.5}a.card.mod{padding:14px 16px}
@media (max-width:560px){.bt{display:none}.top{padding:10px 10px;gap:6px}#nav a{padding:6px 5px;font-size:14px}}
@media (max-width:370px){#nav a{padding:6px 3px;font-size:13px}}
@media (min-width:720px){.sgrid{grid-template-columns:repeat(3,1fr)}}
.cngo{display:flex;align-items:center;gap:12px;border-color:var(--pri)}.cnp{align-items:flex-start}.cnbt{display:flex;flex-direction:column;gap:6px}.btn.mini{padding:5px 10px;font-size:13px}
.cntext p{margin:0 0 10px;font-size:18px;line-height:2.1;font-family:"Songti SC","Noto Serif CJK SC","SimSun",serif}.cntext.poem p{text-align:center;margin:0}.cntext.hide .cl{background:var(--line);color:transparent;border-radius:4px;cursor:pointer}.cntext.hide .cl ruby,.cntext.hide .cl ruby rt{color:transparent}.cntext.hide .cl.show ruby{color:var(--bad)}.cntext.hide .cl.show{background:var(--ok2);color:var(--ink)}.cntext.hide .cl.show ruby rt{color:var(--bad)}
ruby.hz{color:var(--bad);font-weight:600;ruby-position:over}ruby.hz rt{font-size:10px;font-weight:400;color:var(--bad)}
.cnhard{display:flex;flex-wrap:wrap;gap:6px 14px}.cnhard span{font-size:14px;color:var(--sub)}.cnhard b{color:var(--bad);font-size:17px}
.cncard{min-height:200px}.cnq{font-size:16px;margin:12px 0 4px}.cnline{font-size:20px;line-height:2;margin:12px 0;font-family:"Songti SC","Noto Serif CJK SC","SimSun",serif}.cnblank{display:inline-block;width:9em;border-bottom:2px solid var(--ink);margin:0 4px;vertical-align:-4px}
.cnans{font-size:21px;line-height:2.2;padding:10px 12px;background:var(--ok2);border-radius:10px;margin:8px 0;font-family:"Songti SC","Noto Serif CJK SC","SimSun",serif}.cnm{margin-top:6px}
.cnrate{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.cnrate .btn{flex-direction:column;padding:10px 4px;gap:0}.cnrate .btn span{font-size:12px;color:var(--sub)}.cnrate .cr0{border-color:var(--bad);color:var(--bad)}.cnrate .cr1{border-color:var(--warn);color:var(--warn)}.cnrate .cr2{border-color:var(--ok);color:var(--ok);background:var(--ok2)}
.cnprog{height:4px;background:var(--line);border-radius:99px;overflow:hidden;margin:4px 0 8px}.cnprog i{display:block;height:100%;background:var(--pri)}
.mone{background:var(--pri2);color:#1e3a8a;border-radius:12px;padding:10px 12px;font-size:15px;margin:6px 0 4px}.mnum{font-weight:700;color:var(--pri);font-size:18px}
.mdemo{padding:12px}.msvg{width:100%;height:auto;display:block;touch-action:pan-y;user-select:none}
.msvg .ax{stroke:#9ca3af;stroke-width:1}.msvg .uc{fill:none;stroke:#cbd5e1;stroke-width:1.5}.msvg .lb{font-size:12px;fill:#6b7280}.msvg .lb.sm{font-size:10px}.msvg .pl{fill:var(--ink);font-weight:600}.msvg .ql{fill:#7c3aed;font-weight:600}
.msvg .op{stroke:#111827;stroke-width:2}.msvg .oq{stroke:#7c3aed;stroke-width:2;stroke-dasharray:5 3}.msvg .arc{fill:none;stroke:#f59e0b;stroke-width:2}
.msvg .sinl{stroke:#dc2626;stroke-width:3}.msvg .cosl{stroke:#2563eb;stroke-width:3}.msvg .lk{stroke:#dc2626;stroke-width:1;stroke-dasharray:3 3;opacity:.6}
.msvg .pt{fill:#111827}.msvg .qt{fill:#7c3aed}.msvg .wpt{fill:#dc2626}.msvg .wv0{fill:none;stroke:#cbd5e1;stroke-width:1.5;stroke-dasharray:4 3}.msvg .wv{fill:none;stroke:#dc2626;stroke-width:2.5}.msvg .sym{stroke:#7c3aed;stroke-width:1;stroke-dasharray:6 4;opacity:.7}
.msvg #cur.wv{stroke:#2563eb}.msvg .tanl{font-size:14px;fill:#059669;font-weight:700}
.msvg .hl{stroke-width:5;animation:mpulse 1s ease-in-out infinite}.msvg .wv.hl{stroke-width:3.5}@keyframes mpulse{50%{opacity:.45}}
.mread{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14px;margin:6px 0}.mread .sn,.sn{color:#dc2626}.mread .cs,.cs{color:#2563eb}.mcap{background:var(--warn2);color:#92400e;padding:0 8px;border-radius:6px}
.mctl{display:flex;align-items:center;gap:10px;margin:6px 0}.mctl input{flex:1;accent-color:var(--pri)}.mctl b{min-width:46px;text-align:right;font-size:14px}.mctl .sub{min-width:14px;font-size:16px;font-style:italic}
.msteps{margin-top:10px;display:flex;flex-direction:column;gap:6px}.mstep{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-size:14px;line-height:1.5}.mstep>b{flex:0 0 22px;height:22px;border-radius:50%;background:var(--line);color:var(--sub);display:flex;align-items:center;justify-content:center;font-size:12px}.mstep.on{border-color:var(--pri);background:var(--pri2)}.mstep.on>b{background:var(--pri);color:#fff}
.mf{font-family:"Times New Roman",serif;font-size:17px;background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:6px 0;line-height:1.8}.mf.flash{animation:mflash 1.2s 2}@keyframes mflash{50%{background:var(--warn2)}}
.mres{margin-top:6px}.mul{margin:4px 0;padding-left:20px;font-size:14.5px;line-height:1.8}.mq{font-size:16px;margin:4px 0}.mwhy{background:#f8fafc;border-radius:10px;padding:10px 12px;font-size:14.5px;line-height:1.7}

.cntext ruby.hz rt{display:none}.cntext ruby.hz{text-decoration:underline;text-underline-offset:4px}
.msvg .gd{stroke:#eef1f5;stroke-width:1}.msvg .ax2{stroke:#6b7280;stroke-width:1.3}.msvg .fl{fill:none;stroke:#2563eb;stroke-width:2.8}.msvg .slope{fill:rgba(245,158,11,.18);stroke:#f59e0b;stroke-width:1.5;stroke-dasharray:4 2}.msvg .bpt{fill:#16a34a}.msvg .vpt{fill:#dc2626}.msvg .rpt{fill:#7c3aed}.msvg .bl{fill:#16a34a;font-weight:600}.msvg .vl{fill:#dc2626;font-weight:600}.msvg .kl{fill:#b45309;font-weight:700}
.msvg .pa{fill:#dbeafe;stroke:#2563eb;stroke-width:1.5}.msvg .pab{fill:#ffedd5;stroke:#ea580c;stroke-width:1.5}.msvg .pb{fill:#dcfce7;stroke:#16a34a;stroke-width:1.5}.msvg .pout{fill:none;stroke:#111827;stroke-width:2}.msvg .lbig{font-size:16px;font-weight:700;fill:#1f2937}
.msvg .phole{fill:none;stroke:#9ca3af;stroke-width:1.5;stroke-dasharray:4 3}.msvg .phole.filled{fill:#dbeafe;stroke:#2563eb;stroke-dasharray:none}
.msvg .pbig{fill:#fff;stroke:#111827;stroke-width:2}.msvg .pgap{fill:#fef3c7;stroke:#d97706;stroke-width:1.5}.msvg .ptri{fill:#bfdbfe;stroke:#1d4ed8;stroke-width:1.2}
.msvg .hl2{animation:mpulse 1s ease-in-out infinite;stroke-width:3}.msvg .hypl{stroke:#111827;stroke-width:3}.msvg .ra{fill:none;stroke:#6b7280;stroke-width:1.2}
.mtab{border-collapse:collapse;margin:8px 0;font-size:15px}.mtab td,.mtab th{border:1px solid var(--line);padding:4px 12px;text-align:center}.mtab th{background:#f8fafc}
.wn{color:var(--warn)}
/* 名句默写 v2：译文 + 真题 */
.cnbg{background:#fffaf0;border-color:#f5e3c0;font-size:15px;line-height:1.75}.cnbg b{display:block;margin-bottom:2px}
.cnseg{display:flex;margin:4px 0 10px}.cnseg button{flex:1;padding:8px 4px;font-size:14px}
.cntext .cs2{display:block;margin-bottom:12px}.cntext .cs2 .cl{display:inline}.cntext .tr{display:block;font-family:inherit;font-size:14px;line-height:1.6;color:var(--sub);font-family:system-ui,-apple-system,"PingFang SC",sans-serif}
.cntext.both p,.cntext.hide p{margin-bottom:4px}.cntext.poem.both p,.cntext.poem.hide p{text-align:left}
.cntext.hide .hidec .cl{background:var(--line);color:transparent;border-radius:4px;cursor:pointer;line-height:1.9}.cntext.hide .hidec .cl ruby{color:transparent}.cntext.hide .hidec{cursor:pointer}
.cntext.hide .hidec.show .cl{background:var(--ok2);color:var(--ink)}.cntext.hide .hidec.show .cl ruby{color:var(--bad)}.cntext.hide .tr{color:var(--ink);font-size:15px}
.tag.zt{background:#fde8e8;color:#b42318;font-weight:600}
.cnq{font-size:17px;line-height:2;margin:12px 0 4px}.cnq .cnblank{width:5.5em;vertical-align:-3px}
.cntr{margin-top:8px;font-size:14px;line-height:1.7;color:var(--sub);background:var(--bg,#f6f7f9);border-radius:8px;padding:8px 10px}.cnm{font-size:14px;line-height:1.7}
.cnrk{display:inline-block;min-width:22px;height:22px;line-height:22px;text-align:center;border-radius:6px;background:var(--line);font-size:12px;font-weight:700;margin-right:6px;vertical-align:1px}.cnfq{color:var(--pri)}
.msvg .k1{stroke:#2563eb;stroke-width:2;fill:none}.msvg .k2{stroke:#dc2626;stroke-width:2;fill:none}.msvg .k3{stroke:#16a34a;stroke-width:2;fill:none}.msvg .k4{stroke:#ea580c;stroke-width:2;fill:none}.msvg .k5{stroke:#7c3aed;stroke-width:2;fill:none}.msvg .k0{stroke:#111827;stroke-width:2;fill:none}
.msvg .thick{stroke-width:3.5}.msvg .kd{stroke:#9ca3af;stroke-width:1.3;stroke-dasharray:5 4;fill:none}.msvg .kra{fill:none;stroke:#6b7280;stroke-width:1.2}
.msvg .kp{fill:#111827}.msvg .kp2{fill:#dc2626}.msvg .kp3{fill:#16a34a}.msvg .kp4{fill:#2563eb}.msvg .kp5{fill:#7c3aed}
.msvg .kf0{fill:#f8fafc;stroke:#111827;stroke-width:1.6}.msvg .kf1{fill:#dbeafe;stroke:#2563eb;stroke-width:1.3}.msvg .kf2{fill:#ffedd5;stroke:#ea580c;stroke-width:1.3}.msvg .kf3{fill:#dcfce7;stroke:#16a34a;stroke-width:1.3}.msvg .kf4{fill:#fee2e2;stroke:#dc2626;stroke-width:1.3}.msvg .kf5{fill:#ede9fe;stroke:#7c3aed;stroke-width:1.3}
.msvg .kgray{fill:#f3f4f6;stroke:#d1d5db;stroke-width:1.2}.msvg .kout{fill:none;stroke:#111827;stroke-width:2}.msvg .kc0{fill:none;stroke:#374151;stroke-width:1.6}
.msvg .ks1{fill:rgba(37,99,235,.25);stroke:#2563eb;stroke-width:1}.msvg .ks2{fill:rgba(220,38,38,.22);stroke:#dc2626;stroke-width:1}.msvg .ks3{fill:rgba(22,163,74,.25);stroke:#16a34a;stroke-width:1}.msvg .ks4{fill:rgba(234,88,12,.25);stroke:#ea580c;stroke-width:1}
.msvg .t1{fill:#2563eb;font-weight:600}.msvg .t2{fill:#dc2626;font-weight:600}.msvg .t3{fill:#16a34a;font-weight:600}.msvg .t4{fill:#ea580c;font-weight:600}.msvg .t5{fill:#7c3aed;font-weight:600}.msvg .sm2{font-size:14px}
.mread .t1{color:#2563eb}.mread .t2{color:#dc2626}.mread .t3{color:#16a34a}.mread .t4{color:#ea580c}.mread .t5{color:#7c3aed}
.msvg .dash{stroke-dasharray:6 4}.msvg .k1h{fill:#2563eb}.msvg .k2h{fill:#dc2626}.msvg .k3h{fill:#16a34a}.msvg .k4h{fill:#ea580c}.msvg .k5h{fill:#7c3aed}.msvg .k0h{fill:#111827}
.msvg .kw{fill:#fff;font-weight:700}
.linear-equation-demo .chip{min-height:44px;padding:9px 13px}
.linear-equation-demo .mctl{min-height:44px}
.linear-equation-demo .mctl input{min-height:32px}
.linear-equation-demo .mstep{min-height:44px;align-items:center}
.linear-equation-demo #mplay{min-height:44px}
.linear-equation-demo :focus-visible{outline:3px solid #1d4ed8;outline-offset:2px}
@media(prefers-reduced-motion:reduce){.linear-equation-demo .hl2{animation:none!important}}
.kn-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.kn-h h2{margin:0}
.kn-bar{display:flex;height:10px;border-radius:99px;overflow:hidden;background:#e9ebef;margin:10px 0 8px}.kn-bar i{display:block;height:100%}.kn-bar .k1,.kn-lg i.k1{background:var(--ok)}.kn-bar .k0,.kn-lg i.k0{background:#f5a524}
.kn-lg{display:flex;flex-wrap:wrap;gap:14px;font-size:14px;color:var(--sub)}.kn-lg i{display:inline-block;width:9px;height:9px;border-radius:2px;background:#e9ebef;margin-right:4px}.kn-lg b{color:var(--ink,#222)}
.kn-btns{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}.kn-due{border-color:#f5a524;color:#b26b00}.kn-tip{margin:8px 0 0}
.kn-btn{font-size:13px}.vcard.quiz{position:relative}.qk{position:absolute;right:10px;top:10px}
.qtime{min-height:20px;font-size:14px;color:var(--sub);margin-top:6px}.qthink{margin:12px 0;text-align:center}.qthink .btn{margin-top:8px}
.sv .sv-m{min-height:52px;margin-top:12px;font-size:19px}.sv-btns{display:flex;gap:10px;margin:12px 0}.sv-btns .btn{flex:1;justify-content:center;padding:16px 0;font-size:18px}.sv-yes{border-color:var(--ok);color:var(--ok)}.sv-no{border-color:#f5a524;color:#b26b00}
.vopts[hidden],#dunno[hidden]{display:none!important}

.sv-last{margin:10px auto 0;max-width:520px;text-align:center;font-size:14px;color:var(--sub,#666)}.sv-last .btn{margin-left:6px}

.bc-ph{text-align:center;font-size:20px;color:#5b6470;margin:4px 0 10px;cursor:pointer;font-family:'Lucida Sans Unicode','Segoe UI','Noto Sans',Arial,sans-serif}
.bc-ph{display:none;margin:2px 0 0;font-size:19px}.bc.open .bc-ph{display:block}

body.stu .cdedit,body.stu [data-act="edit"],body.stu [data-act="regen"],body.stu #genGo,body.stu #e_ai{display:none!important}

.pl-h{display:flex;align-items:center;gap:8px}.pl-h h2{margin:0}
.pl-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 10px}.pl-k{background:#f6f7f9;border-radius:12px;padding:10px 4px;text-align:center}.pl-k b{display:block;font-size:24px}.pl-k b small{font-size:14px;color:#888;font-weight:400}.pl-k span{font-size:13px;color:#666}
.pl .kn-bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:#e5e7eb}.pl .kn-bar i{display:block;height:100%}
.pl .wn{color:#b45309;margin:8px 0}
.pl-row{grid-template-columns:repeat(4,1fr)!important}.pl-k b{font-size:22px!important}.pl-free{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px dashed #e5e7eb}
.d3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0 0}.d3>div{border:1px solid #e5e7eb;border-radius:10px;padding:8px 4px;text-align:center;font-size:13px}.d3 b{display:block;font-size:13px;margin-bottom:2px}.d3 span{color:#666}.d3 .on{border-color:var(--ok);background:#effaf3}.d3 .go{border-color:#f59e0b;background:#fff8eb}
