:root{
  --brand:#2f6bff; --brand-d:#1e50d8; --brand-l:#eaf0ff;
  --ok:#12b76a; --err:#f04438; --warn:#f79009;
  --text:#0f1729; --text2:#5a6a85; --text3:#8a97ad;
  --line:#e6ebf2; --bg:#f4f7fb; --card:#fff;
  --radius:12px; --shadow:0 2px 10px rgba(23,43,77,.06);
  --shadow-lg:0 12px 32px rgba(23,43,77,.12);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
  color:var(--text);background:var(--bg);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;
}
a{color:var(--brand);text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:14px;outline:none}
.hide{display:none!important}

/* ---------- 登录 ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#eaf0ff 0%,#f4f7fb 45%,#e8f7f1 100%);padding:24px}
.login-card{width:100%;max-width:400px;background:#fff;border-radius:18px;box-shadow:var(--shadow-lg);padding:40px 36px}
.login-logo{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:6px}
.login-logo .mark{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--brand),#6b8cff);
  color:#fff;display:grid;place-items:center;font-size:20px;font-weight:700}
.login-logo h1{font-size:22px;font-weight:700;letter-spacing:.5px}
.login-sub{text-align:center;color:var(--text3);font-size:13px;margin-bottom:26px}
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;color:var(--text2);margin-bottom:6px;font-weight:500}
.input{width:100%;height:44px;border:1px solid var(--line);border-radius:10px;padding:0 14px;background:#fff;transition:.15s}
.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
textarea.input{height:auto;padding:10px 14px;resize:vertical;line-height:1.6}
.btn{height:44px;border:none;border-radius:10px;background:var(--brand);color:#fff;font-weight:600;
  cursor:pointer;width:100%;transition:.15s;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.btn:hover{background:var(--brand-d)}
.btn:disabled{opacity:.6;cursor:not-allowed}
.btn.ghost{background:#fff;color:var(--text2);border:1px solid var(--line);width:auto;padding:0 16px;height:36px;font-weight:500}
.btn.ghost:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-l)}
.btn.sm{height:32px;padding:0 14px;width:auto;font-size:13px;border-radius:8px}
.btn.primary-sm{background:var(--brand);color:#fff;width:auto;padding:0 14px;height:32px;font-size:13px;border-radius:8px;border:none;cursor:pointer}
/* 完成页「进入下一步」大按钮：醒目，孩子一眼看到该点哪里 */
.btn.primary-lg{background:linear-gradient(135deg,var(--brand,#2f6bff),#5a8bff);color:#fff;width:auto;padding:0 38px;height:52px;font-size:17px;font-weight:600;border-radius:14px;border:none;cursor:pointer;box-shadow:0 6px 18px rgba(47,107,255,.32);transition:transform .15s,box-shadow .15s}
.btn.primary-lg:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(47,107,255,.4)}
.btn.primary-lg:active{transform:translateY(0)}
.alert{padding:9px 12px;border-radius:9px;font-size:13px;margin-bottom:14px;background:#fff1f0;color:#c0342b;border:1px solid #ffd9d6}
.hint{text-align:center;color:var(--text3);font-size:12px;margin-top:18px;line-height:1.8}

/* ---------- 布局 ---------- */
.layout{display:flex;min-height:100vh}
.side{width:220px;background:#fff;border-right:1px solid var(--line);position:fixed;top:0;bottom:0;left:0;display:flex;flex-direction:column;z-index:20}
.brand{display:flex;align-items:center;gap:10px;padding:20px 20px 16px}
.brand .mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--brand),#6b8cff);color:#fff;display:grid;place-items:center;font-weight:700}
.brand b{font-size:16px}
.brand span{display:block;font-size:11px;color:var(--text3);font-weight:400}
.nav{padding:6px 12px;flex:1;overflow:auto}
.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;color:var(--text2);margin-bottom:3px;font-weight:500;transition:.15s;cursor:pointer}
.nav a:hover{background:#f4f7fb;color:var(--text)}
.nav a.on{background:var(--brand-l);color:var(--brand);font-weight:600}
.nav a .ico{width:18px;text-align:center;font-size:15px}
.side-foot{padding:14px 18px;border-top:1px solid var(--line);font-size:12px;color:var(--text3)}
.main{margin-left:220px;flex:1;min-width:0}
.topbar{height:62px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;
  justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:15}
.topbar h2{font-size:17px;font-weight:600}
.topbar .who{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text2)}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--brand-l);color:var(--brand);display:grid;place-items:center;font-weight:600}
.tag{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11px;background:var(--brand-l);color:var(--brand);font-weight:600}
.tag.ok{background:#e7f8ef;color:#0e9f5f}
.tag.warn{background:#fff5e6;color:#c77700}
.tag.gray{background:#f1f4f9;color:var(--text2)}
/* 开关（学生列表里切换倍速权限） */
.switch{width:42px;height:23px;border-radius:20px;border:none;background:#d8dee9;position:relative;cursor:pointer;
  transition:.2s;vertical-align:middle;padding:0}
.switch i{position:absolute;top:2.5px;left:2.5px;width:18px;height:18px;border-radius:50%;background:#fff;
  transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch.on{background:var(--brand)}
.switch.on i{left:21.5px}
.content{padding:24px 28px 48px;max-width:1180px}

/* ---------- 卡片 ---------- */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px;margin-bottom:18px}
.card-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}
.card-h h3{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.g3{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}

.stat{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;display:flex;gap:14px;align-items:center}
.stat .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:20px;background:var(--brand-l)}
.stat .v{font-size:24px;font-weight:700;line-height:1.2}
.stat .l{font-size:12px;color:var(--text3)}

/* ---------- 列表 / 表格 ---------- */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line)}
th{color:var(--text3);font-weight:500;font-size:12.5px;background:#fafcff;white-space:nowrap}
tbody tr:hover{background:#fafcff}
td .acts{display:flex;gap:6px;flex-wrap:wrap}
.link-btn{background:none;border:none;color:var(--brand);cursor:pointer;font-size:13px;padding:2px 4px;border-radius:5px}
.link-btn:hover{background:var(--brand-l)}
.link-btn.danger{color:var(--err)}
.link-btn.danger:hover{background:#fff1f0}

.empty{padding:48px 16px;text-align:center;color:var(--text3)}
.empty .e-ic{font-size:40px;opacity:.5;margin-bottom:10px}

.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 13px;border-radius:20px;border:1px solid var(--line);
  background:#fff;cursor:pointer;font-size:13px;color:var(--text2);transition:.15s}
.chip:hover{border-color:var(--brand);color:var(--brand)}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}

/* ---------- 讲义 ---------- */
.doc-item{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:11px;margin-bottom:10px;background:#fff;transition:.15s}
.doc-item:hover{border-color:#c8d8ff;box-shadow:var(--shadow)}
.doc-ic{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.doc-ic.pdf{background:#e5484d}.doc-ic.doc{background:#2b579a}.doc-ic.doc2{background:#2b579a}
.doc-ic.ppt{background:#d24726}.doc-ic.xls{background:#217346}.doc-ic.img{background:#0e9f5f}.doc-ic.zip{background:#8a6d3b}
.doc-info{flex:1;min-width:0}
.doc-info b{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.doc-info .meta{font-size:12px;color:var(--text3);margin-top:2px}

/* ---------- 视频 ---------- */
.video-item{border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff;cursor:pointer;transition:.15s}
.video-item:hover{border-color:#c8d8ff;box-shadow:var(--shadow)}
.video-thumb{height:140px;background:#0f1729;display:grid;place-items:center;color:#fff;font-size:34px;opacity:.92}
.video-body{padding:12px 14px}
.video-body b{font-size:14px;display:block;margin-bottom:6px}
.player-wrap{background:#000;border-radius:12px;overflow:hidden;margin-bottom:16px}
.player-wrap video{width:100%;max-height:520px;display:block;background:#000}
.player-wrap iframe{width:100%;height:520px;border:none;display:block}

/* ---------- 刷题 ---------- */
.practice-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#fff;
  border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;position:sticky;top:74px;z-index:10;flex-wrap:wrap;gap:10px}
.progress-bar{flex:1;height:8px;background:#eef2f8;border-radius:6px;overflow:hidden;min-width:120px}
.progress-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#6b8cff);transition:width .3s}
.q-card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 24px;margin-bottom:16px}
.q-title{font-size:15.5px;line-height:1.8;margin-bottom:16px}
.q-title .no{display:inline-block;background:var(--brand-l);color:var(--brand);border-radius:6px;padding:1px 9px;font-size:13px;margin-right:8px;font-weight:600}
.opts{display:flex;flex-direction:column;gap:10px}
.opt{display:flex;gap:11px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
  cursor:pointer;transition:.15s;background:#fff}
.opt:hover{border-color:#c8d8ff;background:#fafcff}
.opt.sel{border-color:var(--brand);background:var(--brand-l)}
.opt .k{width:24px;height:24px;border-radius:6px;background:#f1f4f9;display:grid;place-items:center;font-weight:600;font-size:13px;flex-shrink:0}
.opt.sel .k{background:var(--brand);color:#fff}
.opt.right{border-color:var(--ok);background:#effaf4}
.opt.right .k{background:var(--ok);color:#fff}
.opt.wrong{border-color:var(--err);background:#fff5f4}
.opt.wrong .k{background:var(--err);color:#fff}
.blank-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.blank-row .input{flex:1;min-width:150px;height:42px}
.result-box{margin-top:16px;padding:14px 16px;border-radius:10px;font-size:13.5px;line-height:1.8}
.result-box.right{background:#effaf4;border:1px solid #c4eed9}
.result-box.wrong{background:#fff5f4;border:1px solid #ffd9d6}
.result-box b{font-weight:600}
.analysis{margin-top:10px;padding-top:10px;border-top:1px dashed #d6e0ee;color:var(--text2)}

/* ---------- 报告 ---------- */
.chart{display:flex;align-items:flex-end;gap:8px;height:160px;padding:10px 0;overflow-x:auto}
.chart .bar-wrap{flex:1;min-width:34px;display:flex;flex-direction:column;align-items:center;gap:6px;justify-content:flex-end;height:100%}
.chart .bar{width:100%;background:linear-gradient(180deg,#6b8cff,var(--brand));border-radius:6px 6px 0 0;min-height:3px;transition:.3s}
.chart .bar-l{font-size:11px;color:var(--text3);white-space:nowrap}
.acc-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.acc-row .nm{width:150px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acc-row .track{flex:1;height:22px;background:#eef2f8;border-radius:6px;overflow:hidden}
.acc-row .track i{display:block;height:100%;background:linear-gradient(90deg,var(--ok),#4ade80);border-radius:6px;transition:width .4s}
.acc-row .pct{width:46px;text-align:right;font-weight:600;font-size:13px}

/* ---------- 弹窗 ---------- */
.mask{position:fixed;inset:0;background:rgba(15,23,41,.45);display:grid;place-items:center;z-index:140;padding:20px;overflow:auto}
.modal{background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:88vh;overflow:auto}
.modal.wide{max-width:820px}
.modal-h{padding:18px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:#fff;border-radius:16px 16px 0 0;z-index:2}
.modal-h h3{font-size:16px}
.modal-b{padding:22px}
.modal-f{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:0;background:#fff;border-radius:0 0 16px 16px}
.close-x{background:none;border:none;font-size:20px;color:var(--text3);cursor:pointer;line-height:1;padding:4px 8px;border-radius:6px}
.close-x:hover{background:#f1f4f9}

.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.toolbar .input,.toolbar select{height:38px;border:1px solid var(--line);border-radius:9px;padding:0 12px;background:#fff}
.toolbar .input{min-width:200px}
/* 级联选择：① 学科 → ② 课程分类 → ③ 课程目录 */
.cas{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;margin-bottom:2px}
.cas .field{margin-bottom:12px}
.cas .cas-full{grid-column:1/-1}
.cas label{font-size:12.5px}
.cas select:disabled{background:#f5f7fb;color:#b0b8c6;cursor:not-allowed}
/* 列表页三级筛选 */
.cas-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* 关联知识点：勾选已上传视频的列表 */
.vpick{border:1px solid var(--line);border-radius:10px;max-height:190px;overflow:auto;padding:4px;background:#fff}
.vpick-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13.5px}
.vpick-item:hover{background:#f4f7fd}
.vpick-item input{accent-color:var(--brand)}
.vpick-item i{margin-left:auto;font-style:normal;font-size:11px;color:var(--text3);flex-shrink:0}
.vpick-empty{padding:14px;color:var(--text3);font-size:12.5px}
/* 课程目录三级分组：一级学科 → 二级分类 → 三级目录 */
.grp{margin-bottom:26px}
.grp-h{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;background:linear-gradient(135deg,#f2f6ff,#eef1fb);margin-bottom:4px}
.grp-h b{font-size:15.5px}
.grp-ic{width:30px;height:30px;border-radius:9px;background:#fff;box-shadow:0 2px 6px rgba(30,50,120,.10);display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--brand)}
.grp-sub{display:flex;align-items:center;gap:12px;margin:16px 2px 8px}
.grp-cat{font-size:13px;font-weight:600;color:#33415c;background:#eef2fb;border-radius:999px;padding:3px 12px}
.grp-line{flex:1;height:1px;background:var(--line)}
.grp-grade{display:flex;align-items:center;gap:8px;margin:12px 2px 6px;font-size:12.5px;color:#5a6a8a}
.grp-grade span{font-weight:600;background:#f4f7fd;border:1px solid var(--line);border-radius:8px;padding:2px 10px}
.grp-grade i{font-style:normal;color:var(--text3)}
/* 册别分组（年级下再按 上册 / 下册 / 通用 分一层） */
.grp-term{display:flex;align-items:center;gap:8px;margin:8px 2px 6px 14px;font-size:12px;color:var(--text3)}
.grp-term span{font-weight:600;background:#eef4ff;border:1px solid #d7e4ff;color:#3f6ad8;border-radius:7px;padding:2px 9px}
.grp-term i{font-style:normal}
.grp table{margin-bottom:6px}
.grp td{padding:10px 12px}
/* 章节行的「分级目录」条（可选第四级） */
.sec-tr td{padding:0 12px 10px!important;background:transparent}
.sec-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;background:#f7f9fe;border:1px dashed #d7e0f3;border-radius:10px}
.sec-lbl{font-size:12px;font-weight:600;color:#5a6a8a;flex-shrink:0}
.sec-none{font-size:12px;color:var(--text3)}
.sec-chip{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:999px;
  padding:4px 6px 4px 12px;font-size:12.5px;font-weight:600;color:#2b3a55}
.sec-chip i{font-style:normal;font-weight:400;font-size:11px;color:var(--text3);background:#f2f5fb;border-radius:999px;padding:1px 8px}
.sec-chip .link-btn{font-size:12px}
.toast{position:fixed;top:22px;left:50%;transform:translateX(-50%);background:#0f1729;color:#fff;padding:11px 22px;
  border-radius:10px;font-size:13.5px;z-index:999;box-shadow:var(--shadow-lg);animation:drop .25s;max-width:80vw}
.toast.ok{background:#0e9f5f}.toast.err{background:#e5484d}
@keyframes drop{from{opacity:0;transform:translate(-50%,-14px)}to{opacity:1;transform:translate(-50%,0)}}
.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-page{padding:60px;text-align:center;color:var(--text3)}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#d3dceb;border-radius:6px}::-webkit-scrollbar-track{background:transparent}
@media(max-width:820px){
  .side{width:64px}.brand b,.brand span,.nav a span.txt,.side-foot{display:none}
  .nav a{justify-content:center;padding:12px 0}.main{margin-left:64px}.content{padding:16px}
  .topbar{padding:0 16px}.topbar h2{font-size:15px}
}

/* ========== 学生端 v4：学科（一级）→ 课程分类（二级）→ 知识点（视频 + 讲义）+ 习题库 ========== */
.st-layout{display:flex;min-height:100vh;background:#f5f7fb;color:#101828}

/* ---- 学科配色变量（卡片、进度条、详情页共用） ---- */
.st-数学{--c:#2f6bff;--c2:#6b9bff}
.st-英语{--c:#0e9f5f;--c2:#2bbd7f}
.st-物理{--c:#7c5cff;--c2:#9a83ff}
.st-化学{--c:#f0730e;--c2:#f69646}

/* ---- 左侧学科栏（一级目录） ---- */
.st-side{width:94px;background:#fff;border-right:1px solid #eef1f7;position:fixed;top:0;bottom:0;left:0;
  display:flex;flex-direction:column;align-items:center;padding:18px 0 14px;z-index:20}
.st-side .sbrand{font-size:16px;font-weight:800;color:var(--brand);letter-spacing:3px;margin-bottom:18px}
.st-subj{flex:1;width:100%;overflow:auto;display:flex;flex-direction:column;gap:6px;align-items:center;padding-bottom:8px}
.st-subj a{width:70px;padding:9px 0 8px;border-radius:14px;text-align:center;color:#667085;cursor:pointer;
  font-size:12.5px;transition:.18s;line-height:1.3;display:block}
.st-subj a .ic{display:grid;place-items:center;width:40px;height:40px;margin:0 auto 4px;border-radius:13px;
  font-size:14px;font-weight:800;background:#f2f4f8;color:#667085;transition:.18s}
.st-subj a:hover{background:#f8fafc}
.st-subj a.on{background:#eff4ff;color:var(--brand);font-weight:600}
.st-subj a.on .ic{color:#fff;background:linear-gradient(135deg,#4f86ff,#2f6bff);box-shadow:0 6px 14px rgba(47,107,255,.28)}
.st-subj .ic.ic-数学{color:#2f6bff;background:#e8efff}
.st-subj .ic.ic-英语{color:#0e9f5f;background:#e3f7ec}
.st-subj .ic.ic-物理{color:#7c5cff;background:#eeeaff}
.st-subj .ic.ic-化学{color:#f0730e;background:#ffefe2}
.st-subj a.on .ic.ic-数学{background:linear-gradient(135deg,#5b8def,#2f6bff);box-shadow:0 6px 14px rgba(47,107,255,.3);color:#fff}
.st-subj a.on .ic.ic-英语{background:linear-gradient(135deg,#2bbd7f,#0e9f5f);box-shadow:0 6px 14px rgba(14,159,95,.3);color:#fff}
.st-subj a.on .ic.ic-物理{background:linear-gradient(135deg,#9a83ff,#7c5cff);box-shadow:0 6px 14px rgba(124,92,255,.3);color:#fff}
.st-subj a.on .ic.ic-化学{background:linear-gradient(135deg,#f69646,#f0730e);box-shadow:0 6px 14px rgba(240,115,14,.3);color:#fff}
.st-me{padding-top:14px;border-top:1px solid #f0f2f7;width:100%;display:flex;flex-direction:column;align-items:center;gap:4px}
.st-me .avatar{width:44px;height:44px;border-radius:50%;
  color:#fff;display:grid;place-items:center;font-weight:700;box-shadow:0 4px 12px rgba(29,41,70,.18)}
.st-me .avatar.av-rand{font-size:21px;line-height:1}
.st-me b{font-size:13px;font-weight:600;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-me-grade{font-size:11px;color:#98a2b3;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.st-me-act{display:flex;flex-direction:column;gap:1px}
/* 退出登录：从灰色小字链接放大成醒目的胶囊按钮（侧栏 94px 宽，别溢出） */
.st-me .st-out{margin-top:5px;display:inline-flex;align-items:center;justify-content:center;gap:5px;
  border:1px solid #f0d3d0;background:#fff7f6;color:#d24a43;cursor:pointer;font-size:12.5px;font-weight:600;
  padding:7px 12px;border-radius:999px;transition:.15s;font-family:inherit;white-space:nowrap;max-width:88px}
.st-me .st-out:hover{background:#fdecea;border-color:#e8b7b3;color:#b9352e}

/* ---- 顶部：课程分类（二级目录）+ 右上角学习报告 ---- */
.st-main{margin-left:94px;flex:1;min-width:0}
.st-top{height:66px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid #eef1f7;
  display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 34px;position:sticky;top:0;z-index:15}
.st-tabs{display:flex;gap:30px;height:100%;min-width:0;overflow-x:auto}
.st-tabs a{display:flex;align-items:center;height:100%;font-size:15.5px;color:#667085;cursor:pointer;
  border-bottom:2.5px solid transparent;font-weight:500;transition:.18s;white-space:nowrap}
.st-tabs a:hover{color:#101828}
.st-tabs a.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:700}
.st-tabs a .n{font-style:normal;margin-left:7px;background:#f1f4f9;color:#667085;border-radius:20px;
  padding:1px 8px;font-size:11.5px;font-weight:700;line-height:17px}
.st-tabs a.on .n{background:var(--brand-l);color:var(--brand)}
.st-top-r{display:flex;align-items:center;gap:14px;flex-shrink:0}
.st-report{display:inline-flex;align-items:center;gap:7px;border:1px solid #e6ebf2;background:#fff;
  border-radius:11px;padding:8px 15px;cursor:pointer;font-size:13.5px;font-weight:600;color:#3a4a63;transition:.18s}
.st-report:hover{border-color:var(--brand);color:var(--brand);background:#f6f9ff;box-shadow:0 4px 12px rgba(47,107,255,.12)}
.st-report span{font-size:15px}
.st-report.on{border-color:#e0a83c;background:#fff7e6;color:#b7761a;box-shadow:0 4px 12px rgba(224,168,60,.18)}
.st-report.on:hover{border-color:#e0a83c;color:#b7761a;background:#fff3dc}
.st-content{padding:28px 34px 60px;max-width:1320px}

/* ---- 进度条 ---- */
.pbar{height:8px;background:#eef2f8;border-radius:6px;overflow:hidden}
.pbar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--c,#2f6bff),var(--c2,#6b8cff));
  transition:width .35s;min-width:0}
.pbar.lg{height:12px}
.fb-top{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;color:#667085;margin-bottom:7px}
.fb-top b{color:#101828;font-weight:700}
.fb-top b.full{color:#0e9f5f}

/* ---- 课程卡片 ---- */
.st-hello{margin-bottom:22px}
.st-hello .hh{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.st-hello .hh b{font-size:19px;font-weight:800;color:#101828}
.st-hello .hh-cat{font-size:13px;font-weight:600;color:var(--brand);background:#eaf0ff;border-radius:20px;padding:2px 12px}
.st-hello .hh-tip{font-size:12.5px;color:#98a2b3}
.st-hello p{font-size:13.5px;color:#667085;margin-top:6px}
.st-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(266px,1fr));gap:20px}
.st-card{background:#fff;border-radius:18px;box-shadow:0 2px 12px rgba(29,41,70,.07);overflow:hidden;cursor:pointer;
  transition:transform .2s,box-shadow .2s;border:1px solid #f0f3f9}
.st-card:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(29,41,70,.14)}
.st-card .head{padding:20px 20px 24px;position:relative;min-height:104px;
  background:linear-gradient(135deg,#dde9ff 0%,#eef5ff 65%,#f7fafe 100%)}
.st-card .head .tt{margin-bottom:7px;position:relative;z-index:1;padding-right:8px}
.st-card .head b{font-size:17.5px;font-weight:800;letter-spacing:.3px;line-height:1.35;display:block}
.st-card .head .bk{font-size:12.5px;color:#5a6a85;position:relative;z-index:1}
.st-card .head::after{content:'';position:absolute;right:-18px;top:-18px;width:86px;height:86px;border-radius:50%;
  background:rgba(47,107,255,.10)}
.st-card .head::before{content:'';position:absolute;right:22px;bottom:-26px;width:52px;height:52px;border-radius:50%;
  background:rgba(47,107,255,.06)}
.st-card .go{position:absolute;right:18px;bottom:14px;background:#fff;color:var(--brand);border-radius:16px;
  padding:3px 15px;font-size:12.5px;font-weight:700;box-shadow:0 3px 10px rgba(47,107,255,.2);z-index:2}
.st-card .foot{padding:15px 20px 18px}
.st-card.st-数学 .head{background:linear-gradient(135deg,#dbe8ff 0%,#eff5ff 65%,#f8fbff 100%)}
.st-card.st-数学 .go{color:#2f6bff}
.st-card.st-英语 .head{background:linear-gradient(135deg,#d5f5e4 0%,#ecfbf3 65%,#f6fdf9 100%)}
.st-card.st-英语 .go{color:#0e9f5f}
.st-card.st-物理 .head{background:linear-gradient(135deg,#e5e0ff 0%,#f2efff 65%,#faf8ff 100%)}
.st-card.st-物理 .go{color:#7c5cff}
.st-card.st-化学 .head{background:linear-gradient(135deg,#ffe9d4 0%,#fff4e8 65%,#fffaf4 100%)}
.st-card.st-化学 .go{color:#f0730e}
.st-card.st-数学 .head::after{background:rgba(47,107,255,.10)}
.st-card.st-英语 .head::after{background:rgba(18,183,106,.10)}
.st-card.st-物理 .head::after{background:rgba(124,92,255,.10)}
.st-card.st-化学 .head::after{background:rgba(240,115,14,.10)}

/* ---- 课程详情头部 ---- */
.st-backbar{display:flex;align-items:center;gap:18px;background:#fff;border-radius:16px;
  box-shadow:0 2px 12px rgba(29,41,70,.07);padding:15px 20px;margin-bottom:18px}
.st-back{border:1px solid #e6ebf2;background:#fff;border-radius:10px;padding:7px 18px;cursor:pointer;
  font-size:13.5px;color:#5a6a85;transition:.18s;flex-shrink:0}
.st-back:hover{border-color:var(--brand);color:var(--brand);background:#f6f9ff}
.bb-tt{min-width:0}
.bb-tt b{font-size:16.5px;font-weight:700;display:block;line-height:1.4}
.bb-tt span{font-size:12.5px;color:#98a2b3}
.st-backbar .bb-prog{margin-left:auto;min-width:200px;flex:0 0 240px}
.st-backbar .bb-prog .pbar{height:7px}

/* ---- 知识点 / 习题库 ---- */
.st-sec{background:#fff;border-radius:16px;box-shadow:0 2px 12px rgba(29,41,70,.06);padding:20px 22px;
  margin-bottom:18px;border:1px solid #f0f3f9}
.sec-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.sec-h b{font-size:15.5px;font-weight:700}
.sec-tip{font-size:12.5px;color:#98a2b3}
.sec-h .kb-fold{margin-left:auto;padding:6px 14px;font-size:12.5px;background:#f2f6ff;color:var(--brand)}
.sub-h{font-size:13.5px;font-weight:600;color:#5a6a85;margin:18px 0 10px}
.ch-empty{color:#98a2b3;font-size:13px;padding:10px 2px}

/* 分级目录：折叠分组，点击标题才展开 */
.kp-groups{display:flex;flex-direction:column;gap:12px}
.kp-group{border:1px solid #e8edf7;border-radius:14px;overflow:hidden;background:#fbfcff}
.kp-group-h{width:100%;display:flex;align-items:center;gap:12px;padding:14px 16px;border:none;cursor:pointer;
  background:#f5f8ff;text-align:left;font-family:inherit;transition:.16s}
.kp-group-h:hover{background:#eef3ff}
.g-arrow{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border-radius:6px;background:#fff;
  color:var(--brand);font-size:15px;font-weight:700;line-height:1;transform:rotate(90deg);transition:transform .2s;box-shadow:0 1px 4px rgba(29,41,70,.08)}
.kp-group.open .g-arrow{transform:rotate(90deg)}
.kp-group:not(.open) .g-arrow{transform:rotate(0deg)}
.g-name{font-size:14.5px;font-weight:700;color:#1b2a41}
.g-meta{font-size:12.5px;color:#7c8aa5;background:#fff;border:1px solid #e8edf7;border-radius:999px;padding:2px 10px}
.g-bar{margin-left:auto;width:150px;height:6px;background:#e6ecf9;border-radius:999px;overflow:hidden;flex-shrink:0}
.g-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#6b8cff,var(--brand));transition:width .3s}
.kp-group-b{display:none;padding:14px 14px 4px;flex-direction:column;gap:10px}
.kp-group.open .kp-group-b{display:flex}
@media(max-width:760px){.g-bar{display:none}}

.kp-list{display:flex;flex-direction:column;gap:12px}
.kp-box{display:flex;gap:14px;align-items:flex-start;border:1px solid #eef1f7;border-radius:14px;
  padding:15px 17px;background:#fff;transition:.18s}
.kp-box:hover{border-color:#c8d8ff;background:#fafcff}
.kp-box.done{border-color:#c9efdb;background:#f7fdfa}
.kp-idx{width:34px;height:34px;border-radius:10px;background:#eff4ff;color:var(--brand);display:grid;
  place-items:center;font-weight:800;font-size:13px;flex-shrink:0}
.kp-box.done .kp-idx{background:#e3f7ec;color:#0e9f5f}
.kp-main{flex:1;min-width:0}
.kp-tt{display:flex;align-items:center;gap:10px;margin-bottom:9px;flex-wrap:wrap}
.kp-tt b{font-size:14.5px;font-weight:600}
.kp-state{font-size:11.5px;color:#98a2b3;background:#f2f4f8;border-radius:20px;padding:1px 10px;flex-shrink:0}
.kp-box.done .kp-state{background:#e3f7ec;color:#0e9f5f;font-weight:600}
.kp-doc{display:flex;align-items:center;gap:8px;font-size:13px;color:#5a6a85;margin-bottom:13px;min-width:0}
.kp-doc .doc-dot{width:8px;height:8px;border-radius:3px;background:linear-gradient(135deg,#7fd4a8,#0e9f5f);flex-shrink:0}
.kp-doc .dl{flex-shrink:0;white-space:nowrap}
.kp-doc .dn{color:#3a4a63;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kp-doc .ds{color:#98a2b3;font-size:12px;flex-shrink:0;margin-left:auto}
.kp-doc.off{color:#b0b8c6}
.kp-doc.off .doc-dot{background:#dfe4ec}
.kp-acts{display:flex;gap:10px;flex-wrap:wrap}

.kb{border:none;cursor:pointer;border-radius:10px;font-size:13px;font-weight:600;padding:8px 16px;
  transition:.16s;display:inline-flex;align-items:center;gap:6px;text-decoration:none}
.kb-play{background:linear-gradient(135deg,#4f86ff,#2f6bff);color:#fff;box-shadow:0 4px 12px rgba(47,107,255,.24)}
.kb-play:hover{filter:brightness(1.07)}
.kb-print{background:#fff;color:#3a4a63;border:1px solid #e2e8f2}
.kb-print:hover{border-color:var(--brand);color:var(--brand);background:#f6f9ff}
.kb-dl{background:#f4f6fa;color:#5a6a85}
.kb-dl:hover{background:#eaeef6}

.ex-list{display:flex;flex-direction:column;gap:10px}
.ex-row{display:flex;align-items:center;gap:14px;padding:13px 16px;border:1px solid #eef1f7;border-radius:12px;
  background:#fcfdff;transition:.16s}
.ex-row:hover{border-color:#c8d8ff;background:#f8fbff}
.ex-info{flex:1;min-width:0}
.ex-info b{display:block;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-info span{font-size:12px;color:#98a2b3}
.ex-acts{display:flex;gap:8px;flex-shrink:0}
.doc-ic{width:42px;height:42px;border-radius:10px;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.doc-ic.pdf{background:#e5484d}.doc-ic.doc{background:#2b579a}.doc-ic.ppt{background:#d24726}
.doc-ic.xls{background:#217346}.doc-ic.img{background:#0e9f5f}.doc-ic.html{background:#e34f26}
.doc-ic.txt{background:#5a6a85}.doc-ic.zip{background:#8a6d3b}

/* ---- 播放器（弹窗） ---- */
.video-mask{padding:24px}
.video-box{background:#0f1729;border-radius:18px;overflow:hidden;width:100%;max-width:1000px;
  box-shadow:0 24px 60px rgba(15,23,41,.42)}
.video-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px}
.video-h b{font-size:14.5px;font-weight:600;color:#e7ecf5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.video-h .close-x{color:#8a97ad}
.video-h .close-x:hover{background:rgba(255,255,255,.08);color:#fff}
.player-wrap{background:#000;margin:0}
.player-wrap video{width:100%;max-height:62vh;display:block;background:#000}
.player-wrap iframe{width:100%;height:62vh;border:none;display:block}
.st-player-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 20px;background:#141d31;flex-wrap:wrap}
.pb-title{color:#e7ecf5;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:56%}
.pb-right{display:flex;align-items:center;gap:10px}
.pb-lbl{color:#8a97ad;font-size:12.5px}
.pb-lock{color:#8a97ad;font-size:12.5px}
.spd{display:flex;background:#0f1729;border-radius:10px;padding:3px;gap:2px}
.spd-b{background:transparent;border:none;color:#9aa8bd;font-size:12.5px;font-weight:600;padding:5px 11px;
  border-radius:8px;cursor:pointer;transition:.15s}
.spd-b:hover{color:#fff;background:rgba(255,255,255,.08)}
.spd-b.on{background:var(--brand);color:#fff}

/* ---- 打印 / 预览讲义 ---- */
.print-mask{padding:0}
.print-box{background:#fff;width:100%;height:100vh;display:flex;flex-direction:column}
.print-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 20px;
  border-bottom:1px solid var(--line);background:#fff}
.print-h b{font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.print-acts{display:flex;align-items:center;gap:10px;flex-shrink:0}
.print-frame{flex:1;width:100%;border:none;background:#f4f7fb}

/* ---- 学习报告 ---- */
.rp-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px;margin-bottom:20px}
.rp-tile{background:#f7f9fc;border-radius:12px;padding:14px 16px}
.rp-tile .v{font-size:24px;font-weight:800;line-height:1.2}
.rp-tile .v span{font-size:13px;font-weight:600;color:#98a2b3;margin-left:2px}
.rp-tile .l{font-size:12.5px;color:#667085;margin-top:3px}
.rp-block{margin-bottom:20px}
.rp-h{font-size:14px;font-weight:700;margin-bottom:11px}
.rp-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.rp-row .nm{width:52px;font-size:13px;color:#3a4a63;font-weight:600;flex-shrink:0}
.rp-row .pbar{flex:1}
.rp-row .pct{width:56px;text-align:right;font-size:12.5px;color:#667085;flex-shrink:0}
.rp-empty{color:#98a2b3;font-size:13px}
.rp-chart{display:flex;align-items:flex-end;gap:7px;height:120px;padding-top:6px;border-bottom:1px solid #eef1f7}
.rp-col{flex:1;min-width:20px;max-width:46px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}
.rp-col i{width:100%;background:linear-gradient(180deg,#6b8cff,var(--brand));border-radius:5px 5px 0 0;min-height:5px;transition:height .3s}
.rp-col span{font-size:10.5px;color:#98a2b3;white-space:nowrap}
.rp-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid #f2f5f9;font-size:13px}
.rp-item:last-child{border-bottom:none}
.rp-item b{font-weight:600;flex-shrink:0;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-item span{color:#98a2b3;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.rp-item em{font-style:normal;color:#b0b8c6;font-size:12px;flex-shrink:0}

@media(max-width:900px){
  .st-side{width:64px}.sbrand{display:none}.st-subj a{width:52px;font-size:11px}
  .st-subj a .ic{width:34px;height:34px;font-size:12px}
  .st-me b,.st-me-grade,.st-me-act{display:none}
  .st-main{margin-left:64px}.st-content{padding:16px}.st-top{padding:0 16px;gap:10px}
  .st-tabs{gap:16px}.st-tabs a{font-size:14px}
  .st-report{padding:7px 11px;font-size:12.5px}
  .st-cards{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
  .pb-title{max-width:100%}
  .st-backbar{flex-wrap:wrap;gap:10px}
  .st-backbar .bb-prog{margin-left:0;flex:1 1 100%}
  .kp-box{padding:13px}
  .kp-idx{width:28px;height:28px;font-size:12px}
  .ex-row{flex-wrap:wrap}
}

/* ================================================================
   学生端 v5：平板 / 手机自适应
   · 触屏设备：去掉 hover 位移、加大点击热区
   · 平板横屏（≤1024）：留白收紧，卡片自适应
   · 手机（≤640）：左侧学科栏改为底部导航，弹窗全屏化，输入框 16px 防聚焦缩放
   ================================================================ */

/* ---- 触屏：取消 hover 位移，避免点击后样式「粘住」 ---- */
@media (hover:none){
  .st-card:hover{transform:none;box-shadow:0 2px 12px rgba(29,41,70,.07)}
  .st-card:active{transform:scale(.985)}
  .kp-box:hover{border-color:#eef1f7;background:#fff}
  .ex-row:hover{border-color:#eef1f7;background:#fcfdff}
  .doc-item:hover,.video-item:hover{border-color:var(--line);box-shadow:none}
  .kb{min-height:40px}
  .link-btn{padding:6px 8px}
  .st-subj a,.st-tabs a,.kb,.switch,.st-report,.chip,.close-x,.st-card{-webkit-tap-highlight-color:transparent}
}

/* ---- 平板横屏 / 小尺寸笔记本 ---- */
@media (max-width:1024px){
  .st-content{padding:22px 24px 56px;max-width:100%}
  .st-top{padding:0 22px}
  .st-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
  .st-backbar .bb-prog{flex:0 0 200px;min-width:150px}
  .kp-box{padding:14px}
  .video-mask{padding:16px}
  .video-box{max-width:100%}
  .player-wrap video{max-height:58vh}
  .player-wrap iframe{height:58vh}
  .modal.wide{max-width:100%}
}

/* ---- 手机：学科栏 → 底部导航 ---- */
@media (max-width:640px){
  .st-side{top:auto;bottom:0;left:0;right:0;width:100%;height:auto;min-height:56px;
    flex-direction:row;align-items:center;gap:0;border-right:none;border-top:1px solid #eef1f7;
    padding:5px 6px calc(5px + env(safe-area-inset-bottom,0px));
    box-shadow:0 -2px 14px rgba(29,41,70,.06);z-index:40}
  .sbrand{display:none}
  .st-subj{flex:1;min-width:0;width:auto;flex-direction:row;align-items:center;justify-content:space-around;gap:2px;overflow:visible;padding:0}
  .st-subj a{flex:1;width:auto;max-width:76px;padding:3px 0 2px;font-size:11px;border-radius:12px}
  .st-subj a .ic{width:30px;height:30px;margin-bottom:2px;font-size:11.5px;border-radius:10px}
  /* 「我的」头像 → 点击弹出菜单 */
  .st-me{width:auto;flex-direction:row;align-items:center;margin-left:2px;padding:0 4px;border:none}
  .st-me b,.st-me-grade{display:none}
  .st-me .avatar{width:36px;height:36px;font-size:16px}
  .st-me-act{position:fixed;right:10px;bottom:calc(70px + env(safe-area-inset-bottom,0px));
    display:none;flex-direction:column;gap:2px;min-width:148px;padding:8px;background:#fff;
    border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);z-index:60}
  .st-me.open .st-me-act{display:flex}
  .st-me .st-out{width:100%;margin-top:0;border:none;background:none;color:#d24a43;
    font-size:14px;font-weight:600;padding:10px 14px;border-radius:9px;justify-content:flex-start}
  /* ---- 主区 ---- */
  .st-main{margin-left:0}
  .st-content{padding:14px 14px 84px;max-width:100%}
  .st-top{height:54px;padding:0 12px;gap:8px}
  .st-tabs{gap:14px}
  .st-tabs a{font-size:13.5px}
  .st-tabs a .n{margin-left:5px;padding:0 6px;font-size:10.5px;line-height:15px}
  .st-report{padding:7px 10px;gap:0;font-size:0}
  .st-report span{font-size:15px}
  /* ---- 卡片 / 列表 ---- */
  .st-hello{margin-bottom:16px}
  .st-hello .hh b{font-size:17px}
  .st-hello .hh-tip{display:none}
  .st-cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
  .st-card .head{padding:17px 16px 22px;min-height:96px}
  .st-card .head b{font-size:16.5px}
  .st-backbar{padding:12px 14px;gap:12px;border-radius:14px}
  .bb-tt b{font-size:15px}
  .st-backbar .bb-prog{flex:1 1 100%;min-width:0}
  .st-sec{padding:15px 14px;border-radius:14px}
  .sec-h{margin-bottom:12px}
  .sec-h .kb-fold{margin-left:0;width:100%;justify-content:center}
  .kp-groups{gap:10px}
  .kp-group-h{gap:9px;padding:12px}
  .g-meta{padding:1px 8px;font-size:11.5px}
  .kp-box{padding:12px;gap:11px;border-radius:12px}
  .kp-acts{gap:8px}
  .kp-acts .kb{flex:1;justify-content:center;padding:9px 10px}
  .ex-row{padding:12px;gap:10px;border-radius:11px}
  .ex-acts{width:100%;justify-content:flex-end}
  /* ---- 弹窗 ---- */
  .mask{padding:12px}
  .modal{max-height:92vh;max-height:92dvh;border-radius:14px}
  .modal-h{padding:15px 16px}
  .modal-b{padding:16px}
  .modal-f{padding:12px 16px}
  .video-mask{padding:0}
  .video-box{max-width:100%;border-radius:0;max-height:100vh;max-height:100dvh}
  .video-h{padding:10px 14px}
  .player-wrap video{max-height:52vh}
  .player-wrap iframe{height:52vh}
  .st-player-bar{padding:10px 14px;gap:10px}
  .pb-title{max-width:100%;font-size:13px}
  .spd-b{padding:6px 10px;font-size:12px}
  .print-box{height:100vh;height:100dvh}
  .print-h{padding:10px 12px}
  .print-h b{font-size:13.5px}
  .print-acts .kb{padding:8px 12px;font-size:12.5px}
  /* ---- 学习报告 ---- */
  .rp-tiles{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px}
  .rp-tile{padding:12px}
  .rp-tile .v{font-size:20px}
  .rp-row .nm{width:46px;font-size:12.5px}
  .rp-row .pct{width:48px}
  .rp-item b{max-width:46%}
  /* ---- 登录 ---- */
  .login-wrap{padding:16px;align-items:flex-start;padding-top:7vh}
  .login-card{padding:26px 20px;border-radius:16px}
  .login-logo h1{font-size:20px}
  /* 输入框 16px：避免 iOS 聚焦时自动放大页面 */
  .input,select.input,textarea.input,.toolbar .input,.toolbar select{font-size:16px}
  .toast{max-width:92vw;font-size:13px;padding:10px 16px}
  .empty{padding:36px 12px}
}

/* ---- 手机横屏：视频区域还能更高一些 ---- */
@media (max-width:900px) and (orientation:landscape) and (max-height:520px){
  .player-wrap video{max-height:62vh}
  .player-wrap iframe{height:62vh}
}

/* ================= 错题重组（扫描试卷 → 切题 → 双栏错题集 PDF） ================= */
.w-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.w-item{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;transition:.15s}
.w-item:hover{border-color:var(--brand);box-shadow:0 4px 14px rgba(47,107,255,.12)}
.w-item img{width:100%;height:130px;object-fit:contain;background:#fafcff;display:block;cursor:zoom-in}
.w-item canvas{width:100%;height:130px;object-fit:contain;background:#fafcff;display:block}
.w-item-chk{position:absolute;top:8px;left:8px;z-index:2;background:#fff;border:1px solid var(--line);border-radius:6px;padding:1px 5px 0}
.w-item-chk input{width:16px;height:16px;cursor:pointer}
.w-item-bar{display:flex;align-items:center;gap:6px;padding:6px 8px;border-top:1px solid var(--line);font-size:12px;color:var(--text3)}
.w-item-bar .w-seq{color:var(--brand);font-weight:600}
.w-item-bar .w-dim{margin-left:auto}
.w-chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text2);cursor:pointer}
.w-chk input{width:15px;height:15px}

.w-scan{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}
.w-cam{position:relative;background:#0f1729;border-radius:12px;overflow:hidden;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center}
.w-cam video{width:100%;height:100%;object-fit:contain;display:block}
.w-cam-tip{position:absolute;left:10px;bottom:10px;background:rgba(0,0,0,.62);color:#fff;font-size:12px;padding:5px 10px;border-radius:8px}
.w-tip{color:var(--text2);font-size:12.5px;line-height:1.7;margin:8px 0 0}
.w-file{color:var(--brand);cursor:pointer;text-decoration:underline}
.w-slider{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text2)}
.w-slider input[type=range]{width:130px}
.w-slider b{color:var(--brand);min-width:34px}

.w-thumbs{display:flex;flex-direction:column;gap:10px;max-height:520px;overflow:auto}
.w-thumb{border:2px solid var(--line);border-radius:10px;padding:6px;background:#fff;cursor:pointer;transition:.15s}
.w-thumb.on{border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
.w-thumb canvas{width:100%;max-height:150px;object-fit:contain;background:#fafcff;display:block;border-radius:6px}
.w-thumb-bar{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text3);margin-top:4px}
.w-thumb-bar span:first-child{color:var(--brand);font-weight:600}
.w-thumb-bar .link-btn{margin-left:auto}
.w-thumb-bar .link-btn + .link-btn{margin-left:0}
.w-thumb-empty{border:1px dashed var(--line);border-radius:10px;padding:38px 12px;text-align:center;color:var(--text3);font-size:13px}
.w-thumb-empty span{font-size:12px;color:var(--text3)}

.w-canvas-wrap{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;margin-top:12px;max-width:100%;cursor:crosshair;touch-action:none;user-select:none}
.w-seg-canvas{display:block;pointer-events:none}

/* 框选：一个方框 = 一道题 */
.w-box{position:absolute;border:2px solid #2f6bff;background:rgba(47,107,255,.10);border-radius:4px;z-index:2;cursor:move;box-shadow:0 0 0 1px rgba(255,255,255,.7) inset}
.w-box:hover{border-color:#1b4fd8;background:rgba(47,107,255,.16)}
.w-box-no{position:absolute;left:-1px;top:-22px;height:20px;min-width:20px;padding:0 6px;background:#2f6bff;color:#fff;font-size:12px;line-height:20px;text-align:center;border-radius:4px 4px 4px 0;font-weight:600}
.w-box-x{position:absolute;right:-11px;top:-11px;width:22px;height:22px;border-radius:50%;border:none;background:#f04438;color:#fff;font-size:13px;line-height:1;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}
.w-box-x:hover{background:#c53030}
/* 框上的「➕ 加入错题栏」按钮（加入后变 ✅、框变绿）。按钮在框内侧，避免被 wrap 的 overflow:hidden 裁掉 */
.w-box-add{position:absolute;right:28px;top:2px;height:22px;min-width:26px;padding:0 8px;border:none;border-radius:11px;background:#0e9f5f;color:#fff;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(14,159,95,.35)}
.w-box-add:hover{background:#0b8a51}
.w-box.added{border-color:#0e9f5f;background:rgba(14,159,95,.10)}
.w-box.added .w-box-no{background:#0e9f5f}
.w-box.added .w-box-add{background:#e5f7ee;color:#0b8a51;box-shadow:none;cursor:default}
/* 错题栏：勾选卡片 + 底部按钮区 */
.w-item.off{opacity:.45}
.w-item.off:hover{border-color:var(--line);box-shadow:none}
.w-jobs-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px dashed var(--line);margin-top:14px;padding-top:12px}
.w-selinfo{font-size:13px;color:var(--text2)}
.w-h{position:absolute;right:-7px;bottom:-7px;width:15px;height:15px;background:#fff;border:2px solid #2f6bff;border-radius:3px;cursor:nwse-resize}
.w-marquee{position:absolute;border:2px dashed #2f6bff;background:rgba(47,107,255,.12);border-radius:3px;z-index:3;pointer-events:none}

/* 摄像头体检面板 */
.w-diag{margin-top:10px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--bg2,#f7f9fc);font-size:12.5px;line-height:1.75}
.w-diag:empty{display:none}
.w-diag-row{color:var(--text2)}
.w-diag-row.ok{color:#0e9f5f}
.w-diag-row.bad{color:#c77700}
.w-diag-row + .w-diag-row{margin-top:3px}

@media (max-width:900px){
  .w-scan{grid-template-columns:1fr}
  .w-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .w-item img{height:110px}
}

/* ================= 使用说明（学生端弹窗列表） ================= */
.gd-list{display:flex;flex-direction:column;gap:10px}
.gd-item{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff;transition:.15s}
.gd-item:hover{border-color:var(--brand);box-shadow:0 3px 10px rgba(47,107,255,.10)}
.gd-ic{font-size:22px;width:34px;text-align:center}
.gd-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.gd-info b{font-size:14px;color:var(--text1)}
.gd-info span{font-size:12px;color:var(--text3)}
.gd-acts{flex:none}

/* ================= AI 学情诊断报告（仿纸质报告版式，可打印） =================
   作用域：全部规则限定在 #rpToolbar / #rpPages 之内，
   避免与学生端「学习报告」已有的 .rp-tile / .rp-row / .rp-col 等类名互相覆盖。 */
#rpToolbar{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
#rpToolbar b{font-size:14px;color:var(--text1)}
#rpPages{display:flex;flex-direction:column;gap:20px;align-items:center}
#rpPages .rp-page{position:relative;width:794px;max-width:100%;min-height:1080px;background:linear-gradient(160deg,#f2f5fa 0%,#fbfcfe 55%,#eef2f9 100%);border-radius:6px;box-shadow:0 4px 18px rgba(15,23,41,.10);padding:64px 68px;color:#22303f;font-family:"Microsoft YaHei","PingFang SC",sans-serif;box-sizing:border-box;display:flex;flex-direction:column}
#rpPages .rp-top{display:flex;justify-content:space-between;align-items:center;font-size:12px;letter-spacing:2px;color:#8a97ad}
#rpPages .rp-badge{background:#eaf1ff;color:#2f6bff;border-radius:14px;padding:4px 12px;font-size:12px;letter-spacing:1px}
#rpPages .rp-cover-main{flex:1;display:flex;flex-direction:column;justify-content:center;gap:10px}
#rpPages .rp-eyebrow{font-size:14px;letter-spacing:6px;color:#5b6b82}
#rpPages .rp-cover h1{font-size:34px;margin:0 0 4px;color:#182635;letter-spacing:1px}
#rpPages .rp-sub{color:#5b6b82;font-size:15px}
#rpPages .rp-score-row{display:flex;align-items:flex-end;gap:44px;margin:26px 0 6px}
#rpPages .rp-score .big{font-size:84px;font-weight:700;color:#e0343f;line-height:1}
#rpPages .rp-score .big i{font-size:34px;font-style:normal}
#rpPages .rp-score .l,#rpPages .rp-mini .l{font-size:12px;color:#8a97ad;letter-spacing:3px;margin-top:6px}
#rpPages .rp-mini b{font-size:34px;color:#182635}
#rpPages .rp-mini b i{font-size:16px;font-style:normal;color:#8a97ad}
#rpPages .rp-mini.red b{color:#e0343f}
#rpPages .rp-quote{margin:18px 0 0;border-left:4px solid #2f6bff;background:rgba(255,255,255,.75);border-radius:0 10px 10px 0;padding:14px 18px}
#rpPages .rp-quote b{color:#2f6bff;font-size:13px}
#rpPages .rp-quote p{margin:6px 0 0;font-size:15px;line-height:1.9;color:#33445c}
#rpPages .rp-foot{display:flex;justify-content:space-between;font-size:12px;color:#8a97ad;line-height:1.8}

#rpPages .rp-sec{display:flex;align-items:center;gap:10px;margin:26px 0 14px}
#rpPages .rp-sec:first-child{margin-top:0}
#rpPages .rp-sec .no{width:26px;height:26px;border-radius:50%;background:#2f6bff;color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;font-style:normal}
#rpPages .rp-sec .no.plus{background:#0e9f5f;border-radius:6px;font-size:12px}
#rpPages .rp-sec h2{font-size:18px;margin:0;color:#182635}
#rpPages .rp-sec .cnt{font-size:12px;color:#8a97ad}

#rpPages .rp-tiles3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
#rpPages .rp-tile{background:#fff;border-radius:10px;padding:18px;text-align:center;box-shadow:0 2px 8px rgba(15,23,41,.05)}
#rpPages .rp-tile b{font-size:34px;display:block;line-height:1.2}
#rpPages .rp-tile span{font-size:12px;color:#8a97ad}
#rpPages .rp-tile.g b{color:#0e9f5f}
#rpPages .rp-tile.o b{color:#e58a00}
#rpPages .rp-tile.r b{color:#e0343f}
#rpPages .rp-note{background:#f6f9ff;border-radius:10px;padding:14px 18px;margin-top:14px}
#rpPages .rp-note b{color:#2f6bff;font-size:13px}
#rpPages .rp-note p{margin:6px 0 0;font-size:14px;line-height:1.9;color:#33445c}

#rpPages .rp-diff{display:grid;grid-template-columns:280px 1fr;gap:26px;align-items:center}
#rpPages .rp-donut-wrap{text-align:center}
#rpPages .rp-donut{width:190px;height:190px;border-radius:50%;margin:0 auto;position:relative}
#rpPages .rp-donut-in{position:absolute;inset:34px;background:#fbfcfe;border-radius:50%;display:flex;align-items:center;justify-content:center}
#rpPages .rp-donut-in b{font-size:24px;color:#182635}
#rpPages .rp-legend{display:flex;justify-content:center;gap:14px;margin-top:12px;font-size:12px;color:#5b6b82}
#rpPages .rp-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:4px}
#rpPages .rp-table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 8px rgba(15,23,41,.05);font-size:13px}
#rpPages .rp-table th{background:#f2f6fc;color:#5b6b82;font-weight:600;padding:10px 12px;text-align:left;font-size:12px}
#rpPages .rp-table td{padding:10px 12px;border-top:1px solid #eef1f6;vertical-align:top}
#rpPages .rp-table td.g{color:#0e9f5f;font-weight:700}
#rpPages .rp-table td.o{color:#e58a00;font-weight:700}
#rpPages .rp-table td.r{color:#e0343f;font-weight:700}
#rpPages .rp-table td.cm{color:#5b6b82;line-height:1.7}

#rpPages .rp-map{display:flex;gap:18px;background:#fff;border-radius:12px;padding:18px;box-shadow:0 2px 8px rgba(15,23,41,.05)}
#rpPages .rp-map-root{flex:none;align-self:center;background:#f6f9ff;border:1px solid #cfe0ff;color:#2f6bff;border-radius:8px;padding:10px 14px;font-size:13px;font-weight:600}
#rpPages .rp-map-branches{flex:1;border-left:2px solid #e3eaf4;padding-left:18px;display:flex;flex-direction:column;gap:12px}
#rpPages .rp-map-g{display:flex;flex-direction:column;gap:6px}
#rpPages .rp-map-g>b{font-size:13px;color:#33445c;display:flex;align-items:center;gap:6px}
#rpPages .rp-map-g .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
#rpPages .rp-map-g .dot.g{background:#0e9f5f}
#rpPages .rp-map-g .dot.o{background:#f59e0b}
#rpPages .rp-map-g .dot.r{background:#e0343f}
#rpPages .rp-chips{display:flex;flex-wrap:wrap;gap:6px}
#rpPages .chip{font-size:12px;border-radius:12px;padding:3px 10px;line-height:1.5}
#rpPages .chip.g{background:#e7f8ef;color:#0e9f5f}
#rpPages .chip.r{background:#fdeaeb;color:#e0343f}
#rpPages .chip.o{background:#fdf3e2;color:#c77700}
#rpPages .chip.b{background:#e8f1ff;color:#2f6bff}
#rpPages .chip.none{background:#f0f2f6;color:#8a97ad}

#rpPages .rp-cmt{border-radius:10px;padding:14px 18px;margin-bottom:12px}
#rpPages .rp-cmt b{font-size:13px}
#rpPages .rp-cmt p{margin:6px 0 0;font-size:13.5px;line-height:1.9;color:#33445c}
#rpPages .rp-cmt.g{background:#e9f9f1}
#rpPages .rp-cmt.g b{color:#0e9f5f}
#rpPages .rp-cmt.o{background:#fdf6ea}
#rpPages .rp-cmt.o b{color:#c77700}
#rpPages .rp-cmt.r{background:#fdeff0}
#rpPages .rp-cmt.r b{color:#e0343f}

#rpPages .rp-lead{font-size:13.5px;color:#5b6b82}
#rpPages .rp-para{font-size:13.5px;line-height:1.9;color:#33445c;margin:8px 0}
#rpPages .rp-letter{background:#fff;border:1px solid #e3eaf4;border-radius:12px;padding:20px 24px;box-shadow:0 2px 8px rgba(15,23,41,.05)}
#rpPages .rp-letter b{font-size:12px;color:#fff;background:#2f6bff;border-radius:4px;padding:2px 8px}
#rpPages .rp-letter p{font-size:14px;line-height:2;color:#33445c;margin:12px 0 10px;text-indent:2em}
#rpPages .rp-letter .sig{text-align:right;font-size:12px;color:#8a97ad}
#rpPages .rp-q{background:#fff;border-radius:10px;padding:12px 16px;margin-bottom:10px;box-shadow:0 2px 8px rgba(15,23,41,.04)}
#rpPages .rp-q b{font-size:12px;color:#2f6bff}
#rpPages .rp-q p{margin:6px 0 0;font-size:13px;line-height:1.8;color:#33445c}

.ar-photos{min-height:120px}

@media (max-width:860px){
  #rpPages .rp-page{padding:34px 26px;min-height:0}
  #rpPages .rp-diff{grid-template-columns:1fr}
  #rpPages .rp-map{flex-direction:column}
  #rpPages .rp-map-root{align-self:flex-start}
}
@media print{
  body *{visibility:hidden}
  #rpPages,#rpPages *{visibility:visible}
  #rpPages{position:absolute;left:0;top:0;width:100%;display:block}
  #rpPages .rp-page{box-shadow:none;border-radius:0;page-break-after:always;background:#fff;min-height:auto;width:100%;margin:0}
  #rpPages .rp-page:last-child{page-break-after:auto}
  .no-print{display:none!important}
}

/* ================= AI 单词记忆（学生端） ================= */
.wt-side{display:flex;flex-direction:column;align-items:center;margin-bottom:6px;width:100%}
/* 速记入口的图标与下面「学科」图标做成同一个方形样式，视觉统一 */
.wt-side>a[data-wordhome]{width:70px;padding:9px 0 8px;border-radius:14px;text-align:center;color:#667085;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:4px;font-size:13.5px;font-weight:600;transition:.16s}
.wt-side>a[data-wordhome] .ic{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;
  font-size:17px;font-weight:800;letter-spacing:0;line-height:1;color:#f0730e;background:#ffefe2}
.wt-side>a[data-wordhome]:hover{background:#f8fafc}
.wt-side>a[data-wordhome]:hover .ic{background:#ffe6d2}
.wt-side>a[data-wordhome].on{background:#fff6ec;color:#e06d10;font-weight:700}
.wt-side>a[data-wordhome].on .ic{color:#fff;background:linear-gradient(135deg,#f69646,#f0730e);box-shadow:0 6px 14px rgba(240,115,14,.3)}
.wt-subnav{display:flex;flex-direction:column;padding-left:18px}
.wt-subnav a{font-size:13.5px;color:var(--text3);padding:7px 12px;border-radius:8px;cursor:pointer}
.wt-subnav a:hover{color:var(--brand,#2f6bff);background:var(--bg2,#f3f6fb)}
.wt-subnav a.on{color:var(--brand,#2f6bff);font-weight:600;background:#eaf1ff}

.wt-wrap{display:flex;flex-direction:column;gap:12px}
.wt-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.wt-head-r{margin-left:auto;display:flex;align-items:center}
/* 错句本入口 + 弹窗 */
.wt-wrong-btn{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.wt-wrong-n,.wt-wwrong-n{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#e8483f;color:#fff;font-size:12px;font-weight:700;font-style:normal}
.wt-ws-cnt{margin-left:10px;font-size:12px;color:var(--text3);font-weight:400}
.wt-ws-tip{font-size:13px;color:var(--text2);background:#f6f8fc;border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:14px;line-height:1.7}
.wt-ws-list{display:flex;flex-direction:column;gap:10px}
.wt-ws-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:12px;padding:12px 16px}
.wt-ws-item:hover{border-color:#c9d6ee;background:#fafbff}
.wt-ws-main{min-width:0}
.wt-ws-en{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wt-ws-cn{font-size:13px;color:var(--text3);margin-top:4px}
.wt-ws-acts{display:flex;align-items:center;gap:8px;flex-shrink:0}
.wt-ws-unit{font-size:12px;color:#5a6b85;background:#eef2f8;border-radius:999px;padding:3px 10px;white-space:nowrap}
.wt-ws-del{height:30px;padding:0 10px;font-size:12px}
/* 错词本（单词速记）里的音标小字 */
.wt-wl-phon{font-size:13px;color:#8a97ad}
.wt-head-sel{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.wt-title{font-size:18px;font-weight:700;margin-bottom:8px}
.wt-tabs{display:flex;gap:8px;flex-wrap:wrap}
.wt-tabs a{font-size:13.5px;padding:7px 14px;border-radius:18px;border:1px solid var(--line);color:var(--text2);cursor:pointer}
.wt-tabs a.on{background:var(--brand,#2f6bff);border-color:var(--brand,#2f6bff);color:#fff;font-weight:600}
.wt-head-r{display:flex;gap:8px}
.wt-sel{height:46px;border:1.5px solid var(--line);border-radius:12px;padding:0 14px;background:#fff;font-size:16px;font-weight:600;color:var(--text);cursor:pointer;box-shadow:0 1px 3px rgba(30,50,90,.06)}
.wt-sel:hover{border-color:#9db9ff}
.wt-sel:focus{outline:none;border-color:#2f6bff;box-shadow:0 0 0 3px rgba(47,107,255,.15)}
.wt-stats{font-size:13px;color:var(--text3);padding:0 4px}
.wt-stats b.g{color:#0e9f5f}.wt-stats b.o{color:#c77700}.wt-stats b.r{color:#e0343f}
/* 独立小模块（英语音标大冒险 / 指法练习）：整页小游戏用 iframe 原样嵌入 */
.wt-frame{width:100%;height:calc(100vh - 235px);min-height:560px;border:0;border-radius:14px;background:#fff;display:block;box-shadow:0 4px 15px rgba(0,0,0,.08)}

.wt-prog{position:relative;height:22px;background:#eef2f8;border-radius:11px;margin-bottom:16px;overflow:hidden}
.wt-prog i{display:block;height:100%;background:linear-gradient(90deg,#6b8cff,var(--brand,#2f6bff));border-radius:11px;transition:width .3s}
.wt-prog span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:#33445c;font-weight:600}

.wt-card{background:var(--bg2,#f7f9fc);border-radius:14px;padding:26px 22px;text-align:center}
.wt-card.center{text-align:center}
.wq-word{font-size:34px;font-weight:700;letter-spacing:1px;display:inline-flex;align-items:center;gap:10px}
.wq-word.big{font-size:40px}
.wq-spk{border:none;background:#e8f1ff;color:#1677ff;width:40px;height:40px;border-radius:50%;font-size:18px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:none}
.wq-spk .ai{width:20px;height:20px}
.wq-spk:hover{background:#d8e5ff}
.wq-phon{color:var(--text3);font-size:15px;margin-top:6px}
.wq-mean{font-size:20px;margin-top:14px;font-weight:600}
.wq-mean.big{font-size:26px}
.wq-mean.hide{filter:blur(7px);user-select:none;cursor:pointer}
.wq-ex{margin-top:10px;font-size:13.5px;color:var(--text3)}
/* 标签独占一行居中：inline-block 会和后面的 .wq-word（inline-flex）挤在同一行，短单词时尤其明显 */
.wt-tag{display:block;width:fit-content;background:#eaf1ff;color:var(--brand,#2f6bff);font-size:12px;border-radius:12px;padding:3px 12px;margin:0 auto 10px}
.wt-goal{margin-top:10px;font-size:13px;color:#c77700}
.wq-note{margin-top:10px;font-size:14px;color:var(--text3)}
.wq-title{font-size:15px;color:var(--text2);margin:0 0 14px}
.wq-sent{font-size:22px;line-height:1.9;max-width:640px;margin:0 auto}
.wt-blank{font-weight:700;border-bottom:2px dashed #98a2b3;padding:0 12px}
.wt-blank.g{color:#0e9f5f;border-color:#0e9f5f}
.wt-blank.r{color:#e0343f;border-color:#e0343f}
.wq-hint{font-size:26px;letter-spacing:6px;color:#98a2b3;margin:12px 0}
.wq-hint2{color:#98a2b3;font-size:14px}
.wt-input{max-width:320px;margin:14px auto 0;text-align:center;font-size:18px;letter-spacing:2px;display:block}
.wq-feedback{min-height:26px;margin-top:14px;font-size:15px}
.wq-feedback .g{color:#0e9f5f}.wq-feedback .r{color:#e0343f}

.wt-acts{display:flex;justify-content:center;gap:12px;margin-top:18px;flex-wrap:wrap}
/* 同一操作行内的按钮统一高度与最小宽度（认识/不认识 等成对按钮不会一大一小） */
.wt-acts .btn,.wt-acts .btn.ghost,.wt-acts .btn.primary-sm{width:auto;min-width:150px;height:44px;padding:0 22px;font-size:15px}
.btn.danger{background:#fff;color:#e0343f;border:1.5px solid #ffb9b4}
.btn.danger:hover{background:#fff4f3;border-color:#e0343f}
/* 词形训练：三个模式入口按钮放大（背诵学习 / 词性判断 / 词形默写） */
.pos-modebar{gap:14px;margin-bottom:20px}
.btn.pos-mode,.btn.pos-mode.ghost,.btn.pos-mode.primary-sm{height:52px;padding:0 26px;font-size:16px;font-weight:600;border-radius:14px;display:inline-flex;align-items:center;gap:8px;box-shadow:0 3px 10px rgba(0,0,0,.06);transition:transform .15s,box-shadow .15s}
.btn.pos-mode:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.1)}
.btn.pos-mode.primary-sm{background:linear-gradient(135deg,var(--brand),var(--brand-d));color:#fff;border:none}
@media (max-width:640px){.btn.pos-mode,.btn.pos-mode.ghost,.btn.pos-mode.primary-sm{height:46px;padding:0 16px;font-size:14px;flex:1;justify-content:center}}
.wt-subacts{text-align:center;margin-top:12px}
.wt-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:560px;margin:18px auto 0}
.wt-opt{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:14px 10px;font-size:17px;font-weight:600;cursor:pointer;transition:.15s}
.wt-opt:hover:not(:disabled){border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.wt-opt.ok{border-color:#0e9f5f;background:#e9f9f1;color:#0e9f5f}
.wt-opt.no{border-color:#e0343f;background:#fdeff0;color:#e0343f}

.wt-sent{min-height:64px;background:#fff;border:2px dashed #c9d6ea;border-radius:12px;padding:14px;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;max-width:640px;margin:0 auto}
.wt-pool{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:640px;margin:14px auto 0;background:var(--bg2,#f3f6fb);border-radius:12px;padding:14px}
.wt-tile{background:#fff;border:1.5px solid #c9d6ea;border-radius:9px;padding:7px 14px;font-size:16px;cursor:pointer;font-weight:600}
.wt-pool .wt-tile:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.wt-sent .wt-tile.on{background:#eaf1ff;border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
/* ---- 速记：单词分组条（灰=未完成，绿=四个练习全部完成） ---- */
.wt-groups{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.wt-grp{display:inline-flex;align-items:center;gap:10px;border:2px solid var(--line);background:#f5f7fa;border-radius:14px;padding:12px 22px;font-size:16px;color:var(--text2);cursor:pointer;transition:.15s;user-select:none;box-shadow:0 1px 3px rgba(15,35,95,.06)}
.wt-grp .cb{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:2px solid #b9c4d6;border-radius:6px;background:#fff;font-size:13px;font-style:normal;color:#fff;flex:none}
.wt-grp em{font-style:normal;font-size:13px;color:var(--text3)}
.wt-grp:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.wt-grp.on{border-color:var(--brand,#2f6bff);background:#eaf1ff;color:var(--brand,#2f6bff);font-weight:600}
.wt-grp.on .cb{border-color:var(--brand,#2f6bff);background:var(--brand,#2f6bff);color:#fff}
.wt-grp.done{border-color:#34c77b;background:#e9f8f0;color:#17945a}
.wt-grp.done em{color:#3fae77}
.wt-grp.done .cb{background:#34c77b;border-color:#34c77b}
.wt-grp.done .cb::after,.wt-grp.on .cb::after{content:'✓'}
.wt-grp.done.on{border-color:#34c77b;background:#e9f8f0;color:#17945a}
.wt-grp.done.on .cb{background:#34c77b;border-color:#34c77b}
.wt-grp.done.on .cb::after{content:'✓'}
.wq-grp-tip{font-size:13px;color:var(--text3);margin-bottom:14px;line-height:1.7}
.wq-grp-tip b{color:#17945a}
/* ---- 考纲单词：会/不会 筛选 + 自选分组 ---- */
.syl-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.syl-count{font-size:13.5px;color:var(--text2)}
.syl-count b{font-size:15px}
.syl-count b.k{color:#17945a}
.syl-count b.u{color:#e06d10}
.syl-size{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--text2)}
.syl-size button{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:13.5px;cursor:pointer;color:var(--text2);transition:.15s}
.syl-size button:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.syl-size button.on{border-color:var(--brand,#2f6bff);background:#eaf1ff;color:var(--brand,#2f6bff);font-weight:700}
.syl-modes{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.syl-modes a{font-size:13.5px;padding:7px 15px;border-radius:999px;border:1.5px solid var(--line);color:var(--text2);cursor:pointer;background:#fff;transition:.15s}
.syl-modes a:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.syl-modes a.on{background:var(--brand,#2f6bff);border-color:var(--brand,#2f6bff);color:#fff;font-weight:600}
.syl-modes-tip{font-size:12.5px;color:var(--text3)}
.syl-card{outline:none}
.syl-card:focus-visible{box-shadow:0 0 0 3px rgba(47,107,255,.25)}
.syl-card .wq-mean.hide{cursor:pointer}
.syl-cur{font-size:12.5px;color:var(--text3);margin-left:12px}
.syl-subacts{}
.syl-sum{margin-top:6px}
.syl-list-tools{margin-bottom:10px}
.syl-search{height:36px;border:1px solid var(--line);border-radius:9px;padding:0 12px;min-width:170px;flex:1;max-width:280px}
.syl-list{display:flex;flex-direction:column;gap:8px;max-height:56vh;overflow:auto;padding:2px}
.syl-item{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:9px 14px;background:#fff;transition:.15s}
.syl-item:hover{border-color:#c9d6ee}
.syl-item.know{background:#f2fbf6;border-color:#cdeada}
.syl-item.know .syl-w{color:#8ba99a;text-decoration:line-through}
.syl-w{font-size:16px;font-weight:700;min-width:112px;flex:none}
.syl-p{font-size:12.5px;color:var(--text3);min-width:92px;flex:none}
.syl-m{font-size:13.5px;color:var(--text2);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.syl-mini{flex:none;width:28px;height:28px;font-size:13px}
.syl-tog{flex:none;border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:13px;cursor:pointer;color:var(--text2);transition:.15s}
.syl-tog:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.syl-tog.know{border-color:#34c77b;background:#e9f8f0;color:#17945a;font-weight:700}
/* ============ 考纲单词 v2：学前检测 → 单词识记 → 学后检测 → 抗遗忘复习 ============ */
.syl-steps{margin-bottom:14px}
/* 学前检测统计条（对齐多多记单词：正确 / 错误 / 正确率） */
.syl-stat{display:inline-flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 16px;font-size:13.5px;color:var(--text2)}
.syl-stat .ss b{font-size:15px}
.syl-stat .ss b.g{color:#17945a}
.syl-stat .ss b.r{color:#e0524a}
.syl-stat .ss-rate b{font-size:15px;color:var(--brand,#2f6bff)}
.syl-stat .ss-bar{flex:none;width:96px;height:8px;border-radius:99px;background:#eef2f8;overflow:hidden}
.syl-stat .ss-bar u{display:block;height:100%;background:linear-gradient(90deg,#6b8cff,var(--brand,#2f6bff));text-decoration:none;transition:width .3s}
.syl-sort{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;color:var(--text2)}
.syl-sort button{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:13.5px;cursor:pointer;color:var(--text2);transition:.15s}
.syl-sort button:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.syl-sort button.on{border-color:var(--brand,#2f6bff);background:#eaf1ff;color:var(--brand,#2f6bff);font-weight:700}
/* 单词识记：词卡墙（点卡片翻释义） */
.syl-learn-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 12px;font-size:14px;color:var(--text2)}
.syl-learn-head b{font-size:15.5px;color:var(--text1,#222)}
.syl-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.syl-lcard{position:relative;min-height:118px;border:1.5px solid var(--line);border-radius:14px;background:#fff;padding:14px 16px;cursor:pointer;transition:.18s;display:flex;flex-direction:column;justify-content:center;gap:4px;overflow:hidden}
.syl-lcard:hover{border-color:#c9d6ee;box-shadow:0 6px 18px rgba(47,107,255,.1);transform:translateY(-2px)}
.syl-lcard .lc-en{font-size:20px;font-weight:800;color:var(--text1,#222);display:flex;align-items:center;gap:8px}
.syl-lcard .lc-phon{font-size:12.5px;color:var(--text3)}
.syl-lcard .lc-mean{font-size:13.5px;color:var(--text2);line-height:1.5}
.syl-lcard .lc-ex{font-size:12px;color:var(--text3);line-height:1.5}
.syl-lcard .lc-mask{font-size:12.5px;color:var(--text3)}
.syl-lcard:not(.open) .lc-mean,.syl-lcard:not(.open) .lc-ex{display:none}
.syl-lcard.open{border-color:#b9d2ff;background:#f7faff}
.syl-lcard.open .lc-mask{display:none}
.syl-learn-acts{margin-top:16px;flex-wrap:wrap}
/* 学后检测 / 抗遗忘复习答题页 */
.syl-quiz-card{max-width:720px;margin:0 auto}
/* 识记轮次标签（第 1 遍 / 第 2 遍识记）+ 结果页的识记说明 */
.syl-round-wrap{text-align:center;margin-bottom:6px}
.syl-round{display:inline-block;font-size:12.5px;font-weight:700;color:#2f6b3a;background:#eaf6ee;border:1px solid #cfe8d8;border-radius:999px;padding:3px 12px;margin-bottom:10px}
.syl-round-note{font-size:13px;color:var(--text3);margin:10px 0 0;line-height:1.6}
.syl-listen{display:flex;flex-direction:column;align-items:center;gap:8px}
.syl-listen .wq-spk.big{font-size:38px;width:76px;height:76px}
.syl-listen span{font-size:14px;color:var(--text2)}
.syl-result-fb{margin:12px 0 4px;font-size:15px;font-weight:600;color:var(--text2)}
.syl-bad{margin:14px auto 0;max-width:620px;text-align:left}
.syl-bad-h{font-size:13.5px;color:var(--text2);margin-bottom:8px;font-weight:600}
.syl-bad-i{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:8px;background:#fff}
.syl-bad-i b{font-size:16px}
.syl-bad-i i{font-size:12px;color:var(--text3);font-style:normal}
.syl-bad-i span{font-size:13.5px;color:var(--text2);flex:1;min-width:0}
.syl-bad.none{color:#17945a;font-weight:600}
.syl-result-acts{margin-top:18px;flex-wrap:wrap}
/* 抗遗忘复习：复习形式选择 */
.syl-forms{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.syl-form{display:flex;flex-direction:column;gap:4px;text-align:left;border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:14px 16px;cursor:pointer;transition:.18s}
.syl-form:hover{border-color:var(--brand,#2f6bff);box-shadow:0 6px 18px rgba(47,107,255,.12);transform:translateY(-2px)}
.syl-form b{font-size:15px;color:var(--text1,#222)}
.syl-form span{font-size:12.5px;color:var(--text3)}
.syl-form .sf-n{font-size:12.5px;color:var(--brand,#2f6bff)}
.syl-review-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.srl{display:inline-flex;align-items:baseline;gap:8px;border:1px solid var(--line);border-radius:999px;padding:5px 14px;background:var(--bg2,#f7f9fc);font-size:13.5px}
.srl b{font-size:14px}
.srl i{font-style:normal;color:var(--text3);font-size:12.5px}
@media (max-width:640px){
  .syl-p{display:none}
  .syl-w{min-width:78px;font-size:15px}
  .syl-m{font-size:12.5px}
  .syl-tog{padding:5px 10px;font-size:12px}
  .syl-modes-tip{display:none}
  .syl-cards{grid-template-columns:repeat(auto-fill,minmax(148px,1fr))}
  .syl-stat{width:100%;justify-content:space-between}
  .syl-learn-acts .btn{flex:1;min-width:130px}
  .syl-lcard .lc-en{font-size:17px}
}
/* 默写拼错：正确单词大字展示 */
.wq-spell-ans{font-size:44px;font-weight:800;letter-spacing:3px;color:var(--text1,#222);margin:8px 0 4px;line-height:1.3}
/* 连词成句：中文意思加大加粗 */
.wq-note.cn-big{font-size:20px;font-weight:600;color:var(--text1,#222);line-height:1.6}
/* ---- 速记：四步学习流（跟读 / 记忆学习 / 连连看 / 默写） ---- */
.wt-steps{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.wt-step{display:flex;align-items:center;gap:8px;border:2px solid var(--line);background:#fff;border-radius:14px;padding:10px 22px 10px 10px;font-size:15px;color:var(--text2);cursor:pointer;transition:.15s;user-select:none;box-shadow:0 1px 3px rgba(15,35,95,.06)}
.wt-step i{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:#eef2f8;color:#5a6b85;font-style:normal;font-size:13px;font-weight:700;flex:none}
.wt-step .wt-step-lock{font-style:normal;font-size:13px;margin-left:2px}
.wt-step:hover{border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.wt-step.on{border-color:var(--brand,#2f6bff);background:#eaf1ff;color:var(--brand,#2f6bff);font-weight:600}
.wt-step.on i{background:var(--brand,#2f6bff);color:#fff}
.wt-step.past{border-color:#34c77b;background:#e9f8f0;color:#17945a}
.wt-step.past i{background:#34c77b;color:#fff}
.wt-step.lock{opacity:.5;cursor:not-allowed}
.wt-step.lock:hover{border-color:var(--line);color:var(--text2)}
.wq-big{transform:scale(1.35);color:var(--brand,#2f6bff);transition:transform .35s,color .35s}
.wq-read-tip{margin-top:14px;font-size:13px;color:var(--text3);line-height:1.7}
.wq-heard{margin-top:8px;font-size:14px;color:var(--text2);min-height:20px}
/* 分音节跟读：音节 chip + 跟读/抄写任务清单 */
.wq-syls{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 2px}
.wq-syls > i{font-style:normal;color:var(--text3);font-weight:700;font-size:20px}
.wq-syl{border:1.5px solid #c9d6ea;background:#fff;border-radius:12px;padding:10px 22px;font-size:24px;font-weight:700;cursor:pointer;color:var(--text);transition:.15s}
.wq-syl:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-l,#eef4ff)}
.wq-feedback .o{color:#c77700}
.wq-match{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:660px;margin:16px auto 0}
/* ---- 词性训练：词形转换链（背诵卡 / 默写挖空） ---- */
.pos-chain{display:inline-flex;flex-direction:column;gap:10px;text-align:left;margin:6px auto 0}
.pos-row{display:flex;align-items:baseline;gap:8px;font-size:19px;flex-wrap:wrap}
.pos-row.base{font-size:26px}
.pos-w{cursor:pointer;color:var(--text);font-weight:700}
.pos-w:hover{color:var(--brand,#2f6bff)}
.pos-w.ok{color:#0e9f5f}
.pos-arrow{font-style:normal;color:var(--text3);font-weight:700}
.pos-tag{font-size:13px;color:#c77700;background:#fdf3e4;border-radius:9px;padding:1px 8px;white-space:nowrap}
.pos-mean{font-size:16px;color:#5c6b80;font-weight:600}
.pos-blank{font-weight:700;color:var(--brand,#2f6bff);letter-spacing:2px}
.pos-blank.dim{color:#b9c4d6;font-weight:400}
.pos-blank.g{color:#0e9f5f;letter-spacing:1px}
.pos-blank.r{color:#e0343f;letter-spacing:1px}
.wq-col{display:flex;flex-direction:column;gap:10px}
.wq-pair{border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:13px 12px;font-size:16px;font-weight:600;cursor:pointer;transition:.15s;text-align:center}
.wq-pair:hover:not(:disabled){border-color:var(--brand,#2f6bff);color:var(--brand,#2f6bff)}
.wq-pair.sel{border-color:var(--brand,#2f6bff);background:#eaf1ff;color:var(--brand,#2f6bff)}
.wq-pair.ok{border-color:#0e9f5f;background:#e9f9f1;color:#0e9f5f;opacity:.75}
.wq-pair.no{border-color:#e0343f;background:#fdeff0;color:#e0343f}
@media (max-width:640px){.wt-options{grid-template-columns:1fr}.wq-word.big{font-size:30px}.wq-sent{font-size:18px}.wq-match{grid-template-columns:1fr}.wt-step{font-size:12px;padding:5px 10px 5px 5px}}

/* ================= 全屏学习舞台（勾选分组后的大弹窗，类似全屏视频） ================= */
body.wt-stage .wt-root{
  position:fixed;inset:0;z-index:90;overflow-y:auto;
  max-width:none;   /* .st-content 自带 max-width:1320px，会把 fixed 全屏覆盖层也限宽 → 宽屏右侧露白 */
  background:radial-gradient(1200px 500px at 50% -100px,#f2faf2,#e6f2e6 60%,#ddebdd);
  padding:30px 22px 60px;
}
body.wt-stage .st-top{visibility:hidden}  /* 顶栏被舞台盖住，避免 tab 顺序残留 */
body.wt-stage .wt-root .wt-wrap{max-width:980px;margin:0 auto}
body.wt-stage .wt-root .card{background:transparent;border:none;box-shadow:none;padding:0}
body.wt-stage .wt-root .wt-head{display:none}          /* 舞台里不再显示词书/单元选择 */
body.wt-stage .wt-root .wt-stats{display:none}
body.wt-stage .wt-root .syl-bar,
body.wt-stage .wt-root .syl-modes{display:none}        /* 舞台里不再显示筛选工具条 */
body.wt-stage .wt-root .wt-card{background:#fff;border-radius:28px;padding:46px 40px 36px;box-shadow:0 18px 48px rgba(40,80,50,.10);max-width:860px;margin:8px auto 0}

/* 字号三档：大（默认）/ 中 / 小 */
body.wt-stage{--fs-hero:92px;--fs-mean:52px;--fs-tag:22px;--fs-text:26px;--fs-tip:22px;--fs-btn:24px;--fs-input:36px}
body.wt-stage.wt-fs-mid{--fs-hero:68px;--fs-mean:38px;--fs-tag:18px;--fs-text:22px;--fs-tip:18px;--fs-btn:20px;--fs-input:28px}
body.wt-stage.wt-fs-small{--fs-hero:48px;--fs-mean:28px;--fs-tag:16px;--fs-text:18px;--fs-tip:16px;--fs-btn:17px;--fs-input:22px}
body.wt-stage .wt-root{font-size:var(--fs-text)}

/* 舞台内练习元素放大 */
body.wt-stage .wt-root .wq-word.big{font-size:var(--fs-hero);font-weight:800;color:#12240f;letter-spacing:.01em;line-height:1.15}
body.wt-stage .wt-root .wq-mean{font-size:var(--fs-mean);font-weight:700;color:#1c3320;margin-top:14px}
body.wt-stage .wt-root .wq-phon{font-size:calc(var(--fs-mean) * .6);color:#3e5c44}
body.wt-stage .wt-root .wt-tag{font-size:14px;font-weight:700;color:#2f6b3a}
body.wt-stage .wt-root .wq-title{font-size:var(--fs-text);font-weight:600;color:#22381f}
body.wt-stage .wt-root .wq-read-tip{font-size:var(--fs-tip);color:#43604a}
body.wt-stage .wt-root .wq-feedback{font-size:18px;font-weight:600}
body.wt-stage .wt-root .wq-feedback .o{color:#e08a12}
body.wt-stage .wt-root .wq-note.cn-big{font-size:var(--fs-mean);font-weight:700;color:#1c3320}
body.wt-stage .wt-root .wt-prog span{font-size:16px;font-weight:600;color:#33455f;letter-spacing:.02em}
/* 舞台里进度条压细，但文字仍要完整可读：加高到能容纳文字，避免「条遮字」 */
body.wt-stage .wt-root .wt-prog{height:28px;border-radius:14px;margin:6px auto 18px;max-width:860px;background:#e7eef8}
body.wt-stage .wt-root .wt-prog i{height:28px;border-radius:14px;background:linear-gradient(90deg,#5b8cff,#2f6bff)}
body.wt-stage .wt-root .wt-acts .btn{font-size:var(--fs-btn);padding:12px 30px;border-radius:12px}
body.wt-stage .wt-root .wt-step{font-size:18px}
body.wt-stage .wt-root .wt-step span{font-size:18px}
body.wt-stage .wt-root .wt-tile{font-size:var(--fs-text);padding:10px 18px}
body.wt-stage .wt-root .wq-pair{font-size:var(--fs-text);padding:14px 16px}
body.wt-stage .wt-root .wt-input{font-size:var(--fs-input);padding:12px 18px;text-align:center;letter-spacing:.06em}
body.wt-stage .wt-root .wt-options button,
body.wt-stage .wt-root .wq-opt{font-size:var(--fs-text)}
body.wt-stage .wt-root .wt-sent{font-size:var(--fs-text)}
body.wt-stage .wt-root .empty{font-size:var(--fs-text);color:#22381f}
body.wt-stage .wt-root .empty .e-ic{font-size:52px}
body.wt-stage .wt-root .wt-steps{margin:14px 0 18px}

/* 舞台右上角：字号 大/中/小 + 退出 */
.wt-stage-bar{
  position:fixed;top:16px;right:20px;z-index:130;
  display:flex;align-items:center;gap:12px;
  background:rgba(255,255,255,.92);border:1px solid #cfe3cf;border-radius:999px;
  padding:8px 10px 8px 16px;box-shadow:0 6px 20px rgba(20,60,20,.12);
}
.wt-stage-cap{font-size:14px;font-weight:700;color:#2f6b3a}
.wt-stage-fs{display:inline-flex;background:#eef5ee;border-radius:999px;padding:3px;gap:2px}
.wt-stage-fs button{border:none;background:transparent;cursor:pointer;font-size:14px;font-weight:700;color:#4a6b52;padding:5px 14px;border-radius:999px}
.wt-stage-fs button:hover{color:#1d4227}
body.wt-fs-big .wt-stage-fs button[data-fs="big"],
body.wt-fs-mid .wt-stage-fs button[data-fs="mid"],
body.wt-fs-small .wt-stage-fs button[data-fs="small"]{background:#fff;color:#14532d;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.wt-stage-exit{border:1px solid #e3b7b7;background:#fff4f4;color:#c23a3a;cursor:pointer;font-size:14px;font-weight:700;padding:7px 16px;border-radius:999px}
.wt-stage-exit:hover{background:#fdeaea}

/* ================= 主题皮肤 =================
 * 四套主题：日间(day) / 夜间(night) / 护眼(eye) / 豆沙绿(green)，由 body[data-theme] 决定。
 * 具体色值见文件末尾「主题皮肤」一节；这里只保留护眼主题额外叠加的低蓝光暖色膜。 */
.eye-mask{
  position:fixed;inset:0;z-index:2147483000;pointer-events:none;
  background:#ffd39a;opacity:.14;mix-blend-mode:multiply;
}

/* ================= 速记模块：未选分组的提示 / 舞台里的分组标签 ================= */
.wt-pick-hold{padding:22px 8px 10px;text-align:center}
.wt-pick-hold .e-ic{font-size:46px;margin-bottom:6px}
.wt-pick-hold b{color:#12240f}
.wt-stage-grp{font-size:14px;font-weight:700;color:#14532d;background:#eaf6ea;border-radius:999px;padding:4px 12px}
.wt-stage-grp:empty{display:none}

/* ---------------- 速记全屏弹层 ----------------
 * 点侧栏「速记」→ 在当前页面上方弹出（不跳页面）；✕ 关闭回原页面。
 * 弹层里的学习环节与普通页面完全同构（.wt-root 同套舞台样式）。 */
.wt-layer{position:fixed;inset:0;z-index:120;background:#f5f7fb;display:flex;flex-direction:column;animation:wlayer .18s ease-out}
@keyframes wlayer{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.wt-layer-bar{display:flex;align-items:center;gap:14px;padding:10px 18px;background:#fff;
  border-bottom:1px solid #e8edf7;box-shadow:0 2px 12px rgba(29,41,70,.06);flex-wrap:wrap}
.wt-layer-bar>b{display:flex;align-items:center;gap:9px;color:#16233c;font-size:15px}
.wt-layer-bar>b .ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(135deg,#ff9f43,#ff7a1a);color:#fff;font-size:16px;font-weight:800;
  box-shadow:0 3px 8px rgba(255,122,26,.3)}
.wt-layer-tabs{display:flex;gap:6px;flex:1;flex-wrap:wrap;min-width:0}
.wt-layer-tabs a{padding:7px 14px;border-radius:999px;font-size:13.5px;font-weight:600;color:#4a5a75;cursor:pointer;transition:.15s}
.wt-layer-tabs a:hover{background:#eef3ff;color:var(--brand)}
.wt-layer-tabs a.on{background:var(--brand);color:#fff;box-shadow:0 3px 10px rgba(47,107,255,.25)}
.wt-layer-close{margin-left:auto;border:1px solid #ffd9d2;background:#fff3f0;color:#d4491f;
  border-radius:999px;padding:7px 16px;font-size:13.5px;font-weight:700;cursor:pointer;transition:.15s}
.wt-layer-close:hover{background:#ffe9e2}
.wt-layer-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px 46px}
/* 全屏学习进行中：隐藏弹层顶栏（舞台右上角已有「退出学习」），舞台内容铺满弹层 */
body.wt-stage .wt-layer-bar{display:none}
body.wt-stage .wt-layer{background:radial-gradient(1200px 500px at 50% -100px,#f2faf2,#e6f2e6 60%,#ddebdd)}
@media (max-width:640px){
  .wt-layer-bar{padding:8px 10px;gap:8px}
  .wt-layer-tabs a{padding:6px 10px;font-size:12.5px}
  .wt-layer-close{padding:6px 12px;font-size:12.5px}
  .wt-layer-body{padding:12px 12px 40px}
}

/* ---------------- 复查修复（小屏适配 / 边缘框操作） ---------------- */
/* 错题扫描的框选角标原来飘在框外（top:-22px / right:-11px 等），被 .w-canvas-wrap 的
 * overflow:hidden 裁掉 —— 最上 / 最右 / 最下那个框（尤其「整页一道题」）会点不到删除与缩放。
 * 统一挪到框内侧，既不会被裁，也不影响拖拽。 */
.w-box-no{left:0;top:0;border-radius:4px 0 4px 0}
.w-box-x{right:2px;top:2px}
.w-h{right:0;bottom:0;width:16px;height:16px}

@media (max-width:640px){
  /* 学习报告「最近 14 天」：14 根柱子最小宽 20px，窄屏会横向溢出被裁 → 允许左右滑动并收窄柱子 */
  .rp-chart{overflow-x:auto;padding-bottom:4px}
  .rp-col{min-width:14px}
  /* 全屏学习的顶部工具条：字号 + 分组标签 + 退出按钮，窄屏会顶出屏幕导致「退出」点不到 */
  .wt-stage-bar{left:8px;right:8px;top:8px;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:6px 10px;border-radius:16px}
  .wt-stage-cap{display:none}
  /* 管理端多级级联选择：窄屏下改单列，避免 5 个下拉挤成两列 */
  .cas{grid-template-columns:1fr}
}

/* ==================================================================
 * 学生端 v5 · 视觉美化（面向 3-9 年级孩子）
 * 全部零外部资源：背景用 CSS 渐变 + 内联 SVG 点阵，图标用表情方块，
 * 不引入任何图片/字体文件，不增加服务器带宽与打包体积。
 * ================================================================== */

/* ---------- 1. 页面背景：柔和渐变 + 隐约点阵 ---------- */
.st-layout{
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='46'%3E%3Cg fill='%232f6bff' fill-opacity='0.055'%3E%3Ccircle cx='5' cy='5' r='1.7'/%3E%3Ccircle cx='28' cy='28' r='1.7'/%3E%3C/g%3E%3C/svg%3E") 0 0/46px 46px repeat,
    radial-gradient(900px 460px at 6% -8%, #e7f0ff 0%, rgba(231,240,255,0) 62%) no-repeat,
    radial-gradient(780px 420px at 98% 0%, #e4f9f0 0%, rgba(228,249,240,0) 60%) no-repeat,
    radial-gradient(760px 480px at 76% 106%, #fff2e0 0%, rgba(255,242,224,0) 62%) no-repeat,
    linear-gradient(180deg,#f8fbff 0%,#f3f7fd 100%);
}

/* ---------- 2. 左侧栏：品牌标识 + 图标方块 ---------- */
.st-side{background:linear-gradient(180deg,#ffffff 0%,#fbfdff 100%)}
/* 注意：这里不要给 .sbrand 设 display —— 平板/手机的 `.sbrand{display:none}` 只是
 * 单类选择器，若此处用 `.st-side .sbrand{display:flex}` 会因优先级更高而在窄屏也显示出来，
 * 破坏底部导航布局。改用 text-align 居中，display 交给原有规则。 */
.st-side .sbrand{text-align:center;margin-bottom:16px;letter-spacing:0}
.st-side .sbrand .sb-mark{display:grid;place-items:center;width:44px;height:44px;margin:0 auto 6px;
  border-radius:15px;font-size:23px;
  background:linear-gradient(135deg,#5b8def,#2f6bff);box-shadow:0 8px 18px rgba(47,107,255,.32);
  transition:transform .25s cubic-bezier(.34,1.56,.64,1)}
.st-side .sbrand:hover .sb-mark{transform:translateY(-2px) rotate(-6deg)}
.st-side .sbrand b{display:block;font-size:12.5px;font-weight:800;color:var(--brand);letter-spacing:2.5px}

/* 学科图标：加大、圆角更柔和、彩色底更明显 */
.st-subj a .ic{width:44px;height:44px;border-radius:15px;font-size:21px;line-height:1;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);transition:transform .2s,box-shadow .2s,background .2s}
.st-subj a:hover .ic{transform:translateY(-2px)}
.st-subj .ic.ic-数学{background:#e6efff}
.st-subj .ic.ic-英语{background:#e0f6ea}
.st-subj .ic.ic-物理{background:#ebe6ff}
.st-subj .ic.ic-化学{background:#ffe9d8}
/* 选中态：白色方块 + 学科色描边与光晕，表情图标始终清晰可见 */
.st-subj a.on .ic.ic-数学{background:#fff;box-shadow:0 7px 16px rgba(47,107,255,.28),inset 0 0 0 2.5px #2f6bff}
.st-subj a.on .ic.ic-英语{background:#fff;box-shadow:0 7px 16px rgba(14,159,95,.28),inset 0 0 0 2.5px #0e9f5f}
.st-subj a.on .ic.ic-物理{background:#fff;box-shadow:0 7px 16px rgba(124,92,255,.28),inset 0 0 0 2.5px #7c5cff}
.st-subj a.on .ic.ic-化学{background:#fff;box-shadow:0 7px 16px rgba(240,115,14,.28),inset 0 0 0 2.5px #f0730e}
.st-subj a.on .ic{animation:ic-pop .34s cubic-bezier(.34,1.56,.64,1)}
@keyframes ic-pop{0%{transform:scale(.84)}60%{transform:scale(1.07)}100%{transform:scale(1)}}

/* 速记图标：与学科图标同一尺寸/圆角 */
.wt-side>a[data-wordhome] .ic{width:44px;height:44px;border-radius:15px;font-size:21px;line-height:1;
  background:#fff0e2;box-shadow:inset 0 1px 0 rgba(255,255,255,.9);transition:transform .2s,box-shadow .2s,background .2s}
.wt-side>a[data-wordhome]:hover .ic{background:#ffe6d2;transform:translateY(-2px)}
.wt-side>a[data-wordhome].on .ic{background:#fff;box-shadow:0 7px 16px rgba(240,115,14,.3),inset 0 0 0 2.5px #f0730e;
  animation:ic-pop .34s cubic-bezier(.34,1.56,.64,1)}

/* ---------- 3. 顶栏：音效开关 ---------- */
.st-sfx.off{color:#98a2b3;border-color:#e6ebf2;background:#fbfcfe}
.st-sfx.off:hover{color:#667085;border-color:#d8dee9;background:#f6f8fb}

/* ---------- 4. 课程页顶部问候条 ---------- */
.st-hello{position:relative;overflow:hidden;border-radius:18px;padding:18px 22px;margin-bottom:22px;
  background:linear-gradient(120deg,#eef4ff 0%,#f4f9ff 46%,#eefaf3 100%);
  border:1px solid #e9f0fb;box-shadow:0 6px 20px rgba(29,41,70,.05)}
.st-hello::after{content:'📚';position:absolute;right:22px;bottom:-16px;font-size:66px;opacity:.15;
  transform:rotate(-8deg);pointer-events:none}
.st-hello .hh b{font-size:20px}

/* ---------- 5. 课程卡片 ---------- */
.st-card{position:relative;border-radius:20px;border:1px solid #eef2f9;
  box-shadow:0 6px 18px rgba(29,41,70,.06);
  transition:transform .22s cubic-bezier(.2,.8,.3,1),box-shadow .22s,border-color .22s}
.st-card:hover{transform:translateY(-6px);box-shadow:0 20px 42px rgba(29,41,70,.15);border-color:#e3ebfa}
/* 悬停时掠过一道柔光 */
.st-card::after{content:'';position:absolute;top:0;left:-60%;width:42%;height:100%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.6),transparent);
  transform:skewX(-18deg);opacity:0}
.st-card:hover::after{opacity:1;animation:card-shine .8s ease-out}
@keyframes card-shine{from{left:-60%}to{left:125%}}
.st-card .head{padding:20px 20px 26px;min-height:112px;overflow:hidden}
.st-card .head .tt{padding-right:78px}
/* 学科表情水印：低年级孩子一眼认学科 */
.st-card .head .wm{position:absolute;right:12px;bottom:2px;font-size:58px;line-height:1;opacity:.17;
  transform:rotate(-7deg);pointer-events:none;transition:transform .25s,opacity .25s}
.st-card:hover .head .wm{transform:rotate(0) scale(1.08);opacity:.24}
/* 分类小标签 */
.st-card .head .cat-pill{position:absolute;right:16px;top:14px;z-index:2;font-size:11px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--c2,#6b9bff),var(--c,#2f6bff));border-radius:999px;padding:2px 10px;
  box-shadow:0 3px 9px rgba(29,41,70,.16)}
.st-card .go{background:#fff;box-shadow:0 4px 12px rgba(29,41,70,.14);transition:.2s}
.st-card:hover .go{background:linear-gradient(135deg,var(--c2,#6b9bff),var(--c,#2f6bff));color:#fff;
  box-shadow:0 6px 16px rgba(29,41,70,.22)}
/* 卡片入场：只淡入，不位移（避免与 hover 的 transform 冲突） */
.st-cards .st-card{animation:card-in .42s ease-out both}
.st-cards .st-card:nth-child(2){animation-delay:.04s}
.st-cards .st-card:nth-child(3){animation-delay:.08s}
.st-cards .st-card:nth-child(4){animation-delay:.12s}
.st-cards .st-card:nth-child(5){animation-delay:.16s}
.st-cards .st-card:nth-child(6){animation-delay:.2s}
@keyframes card-in{from{opacity:0}to{opacity:1}}
/* 卡片正文淡入 */
.st-content>.st-hello,.st-content>.st-sec,.st-content>.st-backbar{animation:st-fade .34s ease-out both}
@keyframes st-fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- 6. 登录页 ---------- */
.login-wrap{position:relative;overflow:hidden;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44'%3E%3Cg fill='%232f6bff' fill-opacity='0.05'%3E%3Ccircle cx='5' cy='5' r='1.6'/%3E%3Ccircle cx='27' cy='27' r='1.6'/%3E%3C/g%3E%3C/svg%3E") 0 0/44px 44px repeat,
    radial-gradient(820px 420px at 12% 0%, #e7f0ff 0%, rgba(231,240,255,0) 62%) no-repeat,
    radial-gradient(720px 420px at 92% 8%, #e4f9f0 0%, rgba(228,249,240,0) 60%) no-repeat,
    radial-gradient(760px 520px at 58% 112%, #fff2e0 0%, rgba(255,242,224,0) 62%) no-repeat,
    linear-gradient(160deg,#eef4ff 0%,#f7fbff 52%,#eefaf3 100%)}
.lw-float{position:absolute;font-size:30px;opacity:.5;pointer-events:none;user-select:none;
  animation:lw-float 6.5s ease-in-out infinite}
.lw-float.f1{left:7%;top:15%}
.lw-float.f2{left:14%;bottom:13%;font-size:26px;animation-delay:.9s}
.lw-float.f3{right:9%;top:19%;font-size:34px;animation-delay:1.7s}
.lw-float.f4{right:15%;bottom:17%;animation-delay:2.5s}
.lw-float.f5{left:44%;top:7%;font-size:24px;animation-delay:3.3s}
@keyframes lw-float{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-15px) rotate(5deg)}}
.login-card{position:relative;overflow:hidden;border:1px solid #eef2f9}
.login-card::before{content:'';position:absolute;left:0;right:0;top:0;height:5px;
  background:linear-gradient(90deg,#5b8def,#2bbd7f,#f69646,#9a83ff)}
.login-logo .mark{font-size:22px;box-shadow:0 8px 18px rgba(47,107,255,.3)}
.lw-foot{position:absolute;left:0;right:0;bottom:20px;text-align:center;color:#8a97ad;font-size:13px;letter-spacing:2px}

/* ---------- 7. 主题皮肤：底纹与登录页背景由 body[data-theme] 决定（见文件末尾） ---------- */
body[data-theme="eye"] .st-subj a.on .ic,
body[data-theme="green"] .st-subj a.on .ic,
body[data-theme="eye"] .wt-side>a[data-wordhome].on .ic,
body[data-theme="green"] .wt-side>a[data-wordhome].on .ic{background:#fffdf7}
body[data-theme="night"] .st-subj a.on .ic,
body[data-theme="night"] .wt-side>a[data-wordhome].on .ic{background:#1b2534}

/* ---------- 8. 窄屏适配 ---------- */
@media (max-width:900px){
  .st-subj a .ic{width:38px;height:38px;font-size:18px;border-radius:13px}
  .wt-side>a[data-wordhome] .ic{width:38px;height:38px;font-size:18px;border-radius:13px}
}
@media (max-width:640px){
  .st-subj a .ic{width:30px;height:30px;font-size:15px;border-radius:10px}
  .wt-side>a[data-wordhome] .ic{width:30px;height:30px;font-size:15px;border-radius:10px}
  /* 修：底部导航里 .wt-side 的 width:100% 会把学科栏（flex:1 基准为 0）挤成 0 宽，
   * 手机端只看得见「速记」看不到四个学科 —— 改成和学科一样的自适应宽度 */
  .wt-side{width:auto;margin:0}
  .wt-side>a[data-wordhome]{width:auto;max-width:76px;padding:3px 0 2px;font-size:11px;border-radius:12px}
  .st-top-r{gap:8px}
  .st-grade{display:none}                       /* 顶栏已有 4 个按钮，手机端收起年级姓名避免拥挤 */
  .st-card .head{padding:17px 16px 24px;min-height:100px}
  .st-card .head .tt{padding-right:68px}
  .st-card .head .wm{font-size:46px}
  .st-card .head .cat-pill{right:12px;top:11px;font-size:10px;padding:1px 8px}
  .st-hello{padding:14px 16px;border-radius:15px}
  .st-hello::after{font-size:52px;right:14px}
  .lw-float{display:none}
  .lw-foot{bottom:14px}
}

/* ---------- 9. 尊重「减少动态效果」系统设置 ---------- */
@media (prefers-reduced-motion:reduce){
  .st-cards .st-card,.st-content>.st-hello,.st-content>.st-sec,.st-content>.st-backbar,
  .lw-float,.st-card::after,.st-subj a.on .ic,.wt-side>a[data-wordhome].on .ic{animation:none!important}
  .st-card:hover{transform:none}
}

/* ============================================================================
   主题皮肤：日间 / 夜间 / 护眼 / 豆沙绿
   ----------------------------------------------------------------------------
   切换主题只改 body[data-theme]：
     · 日间 = 不写 data-theme 属性 —— 本节的规则一条都不生效，配色与改版前完全一致；
     · 其余主题 = data-theme="night|eye|green"，本节用 body[data-theme] 前缀统一接管。
   为什么不用 `body.theme-xxx`：主题要覆盖的颜色散落在 1000+ 行里（很多是硬编码 #fff），
   用属性选择器 + 变量双管齐下最省事——变量管住 var() 消费方，下面的定向规则管住硬编码。
   ============================================================================ */

/* ---- ① 各主题的设计变量（--t-* 是主题专用，--brand/--text 等会顺带覆盖原始变量） ---- */
body[data-theme="night"]{
  --brand:#6f97ff;--brand-d:#8fb0ff;--brand-l:#1d2b43;
  --text:#e7edf6;--text1:#f2f6fb;--text2:#a5b4ca;--text3:#7c8da6;
  --line:#2b3748;--bg:#0e1520;--bg2:#1b2634;--card:#18222f;
  --radius:12px;--shadow:0 2px 10px rgba(0,0,0,.4);--shadow-lg:0 12px 32px rgba(0,0,0,.5);
  --t-side:#131c28;--t-top:rgba(19,28,40,.94);--t-line2:#26313f;
  --t-soft:#1d2836;--t-chip:#212d3d;--t-hover:#1f2b3b;--t-sh:rgba(0,0,0,.45);
  --t-stage:radial-gradient(1200px 500px at 50% -100px,#1c283a,#131d29 60%,#0d141d);
  --t-card2:#18222f;--t-stext:#e7edf6;
}
body[data-theme="eye"]{
  --brand:#b7761a;--brand-d:#8f5a0e;--brand-l:#f7ecd6;
  --text:#3b3226;--text1:#2f281d;--text2:#6f6047;--text3:#9b8a6c;
  --line:#e6d8bf;--bg:#f5efe2;--bg2:#faf3e6;--card:#fdf9f1;
  --radius:12px;--shadow:0 2px 10px rgba(120,95,50,.10);--shadow-lg:0 12px 32px rgba(120,95,50,.18);
  --t-side:#fbf6ec;--t-top:rgba(251,246,236,.94);--t-line2:#ece0cb;
  --t-soft:#f9f2e4;--t-chip:#f1e7d3;--t-hover:#f9f2e4;--t-sh:rgba(120,95,50,.10);
  --t-stage:radial-gradient(1200px 500px at 50% -100px,#fbf4e4,#f5ead4 60%,#eddfc4);
  --t-card2:#fdf9f1;--t-stext:#3b3226;
}
body[data-theme="green"]{
  --brand:#2e7d4f;--brand-d:#24643f;--brand-l:#e0f0e3;
  --text:#26382a;--text1:#1e2f22;--text2:#4f6553;--text3:#7c907c;
  --line:#c8dcc5;--bg:#dcebda;--bg2:#eaf4e7;--card:#f4faf2;
  --radius:12px;--shadow:0 2px 10px rgba(45,90,60,.10);--shadow-lg:0 12px 32px rgba(45,90,60,.18);
  --t-side:#f1f8ef;--t-top:rgba(241,248,239,.94);--t-line2:#cfe1cc;
  --t-soft:#e8f3e5;--t-chip:#dcebd9;--t-hover:#e8f4e6;--t-sh:rgba(45,90,60,.10);
  --t-stage:radial-gradient(1200px 500px at 50% -100px,#eaf6e8,#dcecd8 60%,#cbe3c7);
  --t-card2:#f4faf2;--t-stext:#26382a;
}

/* ---- ② 外壳：背景 / 侧栏 / 顶栏 / 标签 ---- */
body[data-theme]{background:var(--t-bg,var(--bg))}
body[data-theme] .st-layout{background:var(--bg);color:var(--text)}
body[data-theme] .st-side{background:var(--t-side);border-right-color:var(--t-line2)}
body[data-theme] .st-me{border-top-color:var(--t-line2)}
body[data-theme] .st-me .link-btn{color:var(--text3)}
body[data-theme] .st-me .link-btn:hover{color:var(--brand);background:var(--t-hover)}
body[data-theme] .st-me-grade{color:var(--text3)}
body[data-theme] .st-me .st-out{background:var(--t-side);border-color:rgba(210,74,67,.35);color:#d24a43}
body[data-theme] .st-me .st-out:hover{background:var(--t-hover)}
body[data-theme="night"] .st-me .st-out{background:#3a1b1e;border-color:#63302f;color:#ff9d95}
body[data-theme="night"] .st-me .st-out:hover{background:#4a2226}
body[data-theme] .st-me.open .st-me-act{background:var(--card)}
body[data-theme] .st-top{background:var(--t-top);border-bottom-color:var(--t-line2)}
body[data-theme] .st-tabs a{color:var(--text2)}
body[data-theme] .st-tabs a:hover{color:var(--text1)}
body[data-theme] .st-tabs a.on{color:var(--brand);border-bottom-color:var(--brand)}
body[data-theme] .st-tabs a .n{background:var(--t-chip);color:var(--text2)}
body[data-theme] .st-tabs a.on .n{background:var(--brand-l);color:var(--brand)}
body[data-theme] .st-report{background:var(--t-side);border-color:var(--line);color:var(--text2)}
body[data-theme] .st-report:hover{border-color:var(--brand);color:var(--brand);background:var(--t-hover)}
body[data-theme] .st-grade{color:var(--text3)}
body[data-theme] .st-subj a{color:var(--text2)}
body[data-theme] .st-subj a:hover{background:var(--t-soft)}
body[data-theme] .st-subj a.on{background:var(--brand-l);color:var(--brand)}
body[data-theme] .wt-side>a[data-wordhome]{color:var(--text2)}
body[data-theme] .wt-side>a[data-wordhome]:hover{background:var(--t-soft)}
body[data-theme] .st-hello{background:var(--t-soft);border-color:var(--t-line2);box-shadow:0 6px 20px var(--t-sh)}
body[data-theme] .st-hello .hh b{color:var(--text1)}
body[data-theme] .st-hello .hh-cat{background:var(--brand-l);color:var(--brand)}
body[data-theme] .st-hello .hh-tip,body[data-theme] .st-hello p{color:var(--text2)}
body[data-theme] .st-hello::after{opacity:.12}

/* ---- ③ 课程卡片 / 课程详情 / 知识点 ---- */
body[data-theme] .st-card{background:var(--card);border-color:var(--line);box-shadow:0 6px 18px var(--t-sh)}
body[data-theme] .st-card:hover{border-color:var(--brand);box-shadow:0 20px 42px var(--t-sh)}
body[data-theme] .st-card .foot{background:var(--card)}
body[data-theme] .st-card .head .bk{color:var(--text2)}
body[data-theme] .st-card .go{background:var(--t-side);box-shadow:0 4px 12px var(--t-sh)}
body[data-theme] .st-backbar{background:var(--card);box-shadow:0 2px 12px var(--t-sh)}
body[data-theme] .st-back{background:var(--t-side);border-color:var(--line);color:var(--text2)}
body[data-theme] .st-back:hover{border-color:var(--brand);color:var(--brand);background:var(--t-hover)}
body[data-theme] .bb-tt span{color:var(--text3)}
body[data-theme] .st-sec{background:var(--card);border-color:var(--line);box-shadow:0 2px 12px var(--t-sh)}
body[data-theme] .sec-tip,body[data-theme] .ch-empty{color:var(--text3)}
body[data-theme] .sub-h,body[data-theme] .kp-doc{color:var(--text2)}
body[data-theme] .sec-h .kb-fold{background:var(--brand-l);color:var(--brand)}
body[data-theme] .sec-bar{background:var(--t-soft);border-color:var(--line)}
body[data-theme] .sec-lbl{color:var(--text2)}
body[data-theme] .sec-chip{background:var(--card);border-color:var(--line);color:var(--text1)}
body[data-theme] .sec-chip i{background:var(--t-chip);color:var(--text3)}
body[data-theme] .kp-group{background:var(--t-soft);border-color:var(--line)}
body[data-theme] .kp-group-h{background:var(--t-soft)}
body[data-theme] .kp-group-h:hover{background:var(--t-hover)}
body[data-theme] .g-arrow{background:var(--t-side);color:var(--brand);box-shadow:0 1px 4px var(--t-sh)}
body[data-theme] .g-name{color:var(--text1)}
body[data-theme] .g-meta{background:var(--t-side);border-color:var(--line);color:var(--text2)}
body[data-theme] .g-bar{background:var(--t-chip)}
body[data-theme] .kp-box{background:var(--card);border-color:var(--line)}
body[data-theme] .kp-box:hover{background:var(--t-hover);border-color:var(--brand)}
body[data-theme] .kp-idx{background:var(--brand-l);color:var(--brand)}
body[data-theme] .kp-state{background:var(--t-chip);color:var(--text3)}
body[data-theme] .kp-doc .dn{color:var(--text1)}
body[data-theme] .kp-doc.off,body[data-theme] .kp-doc.off .dn{color:var(--text3)}
body[data-theme] .kb-print{background:var(--t-side);border-color:var(--line);color:var(--text2)}
body[data-theme] .kb-print:hover{border-color:var(--brand);color:var(--brand);background:var(--t-hover)}
body[data-theme] .kb-dl{background:var(--t-chip);color:var(--text2)}
body[data-theme] .kb-dl:hover{background:var(--t-hover)}
body[data-theme] .ex-row{background:var(--card);border-color:var(--line)}
body[data-theme] .ex-row:hover{background:var(--t-hover);border-color:var(--brand)}
body[data-theme] .pbar{background:var(--t-chip)}
body[data-theme] .empty{color:var(--text3)}

/* ---- ④ 弹窗 / 通用控件 ---- */
body[data-theme] .modal,body[data-theme] .modal-h,body[data-theme] .modal-f{background:var(--card)}
body[data-theme] .modal-h,body[data-theme] .modal-f{border-color:var(--line)}
body[data-theme] .close-x:hover{background:var(--t-chip)}
body[data-theme] .toolbar .input,body[data-theme] .toolbar select,
body[data-theme] .input,body[data-theme] .vpick{background:var(--card);color:var(--text);border-color:var(--line)}
body[data-theme] .vpick-item:hover{background:var(--t-hover)}
body[data-theme] .switch{background:var(--t-chip)}
body[data-theme] .switch i{background:var(--card)}
body[data-theme] .switch.on i{background:#fff}
body[data-theme] .card{background:var(--card)}

/* ---- ⑤ 速记 / 考纲 / 词性：选择器、列表、卡片、答题区 ---- */
body[data-theme] .wt-sel{background:var(--card);color:var(--text);border-color:var(--line)}
body[data-theme] .wt-frame{background:var(--card)}
body[data-theme] .wt-ws-tip{background:var(--t-soft);border-color:var(--line)}
body[data-theme] .wt-ws-item{border-color:var(--line)}
body[data-theme] .wt-ws-item:hover{background:var(--t-hover);border-color:var(--brand)}
body[data-theme] .wt-ws-unit{background:var(--t-chip);color:var(--text2)}
body[data-theme] .wt-prog{background:var(--t-chip)}
body[data-theme] .wt-prog span{color:var(--text2)}
body[data-theme] .wt-opt,body[data-theme] .wt-sent,body[data-theme] .wt-tile,
body[data-theme] .wt-grp .cb,body[data-theme] .wt-step,body[data-theme] .wq-pair,
body[data-theme] .wq-syl,body[data-theme] .syl-item,body[data-theme] .syl-lcard,
body[data-theme] .syl-form,body[data-theme] .syl-bad-i,body[data-theme] .syl-stat,
body[data-theme] .syl-size button,body[data-theme] .syl-sort button,
body[data-theme] .syl-modes a,body[data-theme] .syl-tog{background:var(--card);border-color:var(--line);color:var(--text2)}
body[data-theme] .wt-sel,body[data-theme] .wt-tile,body[data-theme] .wq-syl,
body[data-theme] .syl-lcard .lc-en,body[data-theme] .syl-w{color:var(--text1)}
body[data-theme] .syl-lcard:hover{background:var(--t-hover);border-color:var(--brand)}
body[data-theme] .wt-step i{background:var(--t-chip);color:var(--text2)}
body[data-theme] .wt-grp{background:var(--t-soft)}
body[data-theme] .wt-tag,body[data-theme] .wq-spk{background:var(--brand-l);color:var(--brand)}
body[data-theme] .wt-grp.on .cb{background:var(--brand);border-color:var(--brand);color:#fff}
body[data-theme] .wt-grp.done .cb,
body[data-theme] .wt-grp.done.on .cb{background:#34c77b;border-color:#34c77b;color:#fff}
body[data-theme] .wt-grp.on,body[data-theme] .wt-step.on,
body[data-theme] .syl-size button.on,body[data-theme] .syl-sort button.on,
body[data-theme] .wq-pair.sel,body[data-theme] .wt-sent .wt-tile.on,
body[data-theme] .syl-lcard.open,body[data-theme] .wt-layer-tabs a:hover{background:var(--brand-l);border-color:var(--brand);color:var(--brand)}
body[data-theme] .syl-stat .ss-bar{background:var(--t-chip)}
body[data-theme] .syl-stat{color:var(--text2)}
body[data-theme] .syl-bad-i i,body[data-theme] .syl-lcard .lc-mask,body[data-theme] .pos-mean{color:var(--text3)}
body[data-theme] .syl-learn-head b,body[data-theme] .syl-form b{color:var(--text1)}
body[data-theme] .wq-note.cn-big,body[data-theme] .wq-spell-ans,body[data-theme] .pos-w{color:var(--text1)}
body[data-theme] .pos-tag{background:var(--t-chip);color:var(--brand)}
body[data-theme] .syl-round{background:var(--t-chip);border-color:var(--line);color:var(--text2)}

/* ---- ⑥ 速记全屏弹层 + 全屏学习舞台 ---- */
body[data-theme] .wt-layer{background:var(--bg)}
body[data-theme] .wt-layer-bar{background:var(--t-side);border-bottom-color:var(--t-line2)}
body[data-theme] .wt-layer-bar>b{color:var(--text1)}
body[data-theme] .wt-layer-tabs a{color:var(--text2)}
body[data-theme] .wt-layer-close{border-color:var(--line);background:var(--t-chip);color:var(--text2)}
body[data-theme].wt-stage .wt-layer,body[data-theme].wt-stage .wt-root{background:var(--t-stage)}
body[data-theme].wt-stage .wt-root .wt-card{background:var(--t-card2);box-shadow:0 8px 30px var(--t-sh)}
body[data-theme].wt-stage .wt-root .wq-word.big,body[data-theme].wt-stage .wt-root .wq-mean,
body[data-theme].wt-stage .wt-root .wq-title,body[data-theme].wt-stage .wt-root .wq-note.cn-big,
body[data-theme].wt-stage .wt-root .empty{color:var(--t-stext)}
body[data-theme].wt-stage .wt-root .wq-phon,body[data-theme].wt-stage .wt-root .wq-read-tip,
body[data-theme].wt-stage .wt-root .wt-prog span{color:var(--text2)}
body[data-theme].wt-stage .wt-root .wt-tag{color:var(--brand)}
body[data-theme] .wt-stage-bar{background:var(--t-top);border-color:var(--line);box-shadow:0 6px 20px var(--t-sh)}
body[data-theme] .wt-stage-cap{color:var(--text2)}
body[data-theme] .wt-stage-fs{background:var(--t-chip)}
body[data-theme] .wt-stage-fs button{color:var(--text3)}
body[data-theme] .wt-stage-fs button:hover{color:var(--text1)}
body[data-theme].wt-fs-big .wt-stage-fs button[data-fs="big"],
body[data-theme].wt-fs-mid .wt-stage-fs button[data-fs="mid"],
body[data-theme].wt-fs-small .wt-stage-fs button[data-fs="small"]{background:var(--card);color:var(--brand);box-shadow:0 1px 4px var(--t-sh)}
body[data-theme] .wt-stage-grp{color:var(--brand);background:var(--brand-l)}
body[data-theme] .wt-stage-exit{border-color:var(--line);background:var(--t-chip);color:var(--text2)}
body[data-theme] .wt-stage-exit:hover{background:var(--t-hover)}

/* ---- ⑦ 登录页 ---- */
body[data-theme] .login-wrap{
  background:
    radial-gradient(820px 420px at 12% 0%, var(--brand-l) 0%, rgba(0,0,0,0) 62%) no-repeat,
    radial-gradient(760px 520px at 58% 112%, var(--brand-l) 0%, rgba(0,0,0,0) 62%) no-repeat,
    linear-gradient(160deg,var(--bg) 0%,var(--t-side) 52%,var(--bg) 100%)}
body[data-theme] .login-card{background:var(--card);border-color:var(--line)}
body[data-theme] .lw-foot,body[data-theme] .login-sub{color:var(--text3)}

/* ---- ⑧ 夜间专属：把浅色「成功 / 提示 / 危险」底改成深色同色系，避免刺眼荧光块 ---- */
body[data-theme="night"] .kp-box.done,body[data-theme="night"] .wt-grp.done,
body[data-theme="night"] .wt-grp.done.on,body[data-theme="night"] .wt-step.past,
body[data-theme="night"] .wt-opt.ok,body[data-theme="night"] .wq-pair.ok,
body[data-theme="night"] .syl-item.know,body[data-theme="night"] .syl-tog.know,
body[data-theme="night"] .syl-bad.none,body[data-theme="night"] .wt-blank.g{background:#16301f;border-color:#2a5c3d}
body[data-theme="night"] .kp-box.done,body[data-theme="night"] .wt-grp.done,
body[data-theme="night"] .wt-grp.done.on,body[data-theme="night"] .wt-step.past,
body[data-theme="night"] .wt-opt.ok,body[data-theme="night"] .wq-pair.ok,
body[data-theme="night"] .syl-tog.know,body[data-theme="night"] .syl-bad.none{color:#5ed695}
body[data-theme="night"] .kp-box.done .kp-idx,body[data-theme="night"] .wt-step.past i,
body[data-theme="night"] .wt-grp.done .cb{background:#1f4530;color:#8ff0b8}
body[data-theme="night"] .syl-item.know .syl-w{color:#7d9b8b}
body[data-theme="night"] .wt-opt.no,body[data-theme="night"] .wq-pair.no,
body[data-theme="night"] .syl-bad-i.r,body[data-theme="night"] .alert,
body[data-theme="night"] .wt-stage-exit,body[data-theme="night"] .wt-layer-close{background:#3a1b1e;border-color:#63302f;color:#ff9d95}
body[data-theme="night"] .wt-stage-exit:hover,body[data-theme="night"] .wt-layer-close:hover{background:#4a2226}
body[data-theme="night"] .st-card.st-数学 .head{background:linear-gradient(135deg,#1b2c4d 0%,#182231 65%,#161e2a 100%)}
body[data-theme="night"] .st-card.st-英语 .head{background:linear-gradient(135deg,#15342a 0%,#182231 65%,#161e2a 100%)}
body[data-theme="night"] .st-card.st-物理 .head{background:linear-gradient(135deg,#26224a 0%,#182231 65%,#161e2a 100%)}
body[data-theme="night"] .st-card.st-化学 .head{background:linear-gradient(135deg,#3a2416 0%,#182231 65%,#161e2a 100%)}
body[data-theme="night"] .st-card .head b,body[data-theme="night"] .st-card .head .bk{color:var(--text1)}
body[data-theme="night"] .st-subj .ic.ic-数学{background:#1c2b47;color:#7ea6ff}
body[data-theme="night"] .st-subj .ic.ic-英语{background:#17352a;color:#4ed69b}
body[data-theme="night"] .st-subj .ic.ic-物理{background:#262247;color:#a894ff}
body[data-theme="night"] .st-subj .ic.ic-化学{background:#372716;color:#ffa760}
body[data-theme="night"] .wt-side>a[data-wordhome] .ic{background:#372716;color:#ffa760}
body[data-theme="night"] .toast{background:#243447}
body[data-theme="night"] .eye-mask{opacity:0}

/* ---- ⑩ 主题选择菜单（点顶栏右上角主题按钮弹出） ---- */
body[data-theme] .st-report.on,body[data-theme] .st-report.on:hover{
  background:var(--brand-l);border-color:var(--brand);color:var(--brand)}
.theme-menu{
  position:fixed;z-index:1300;width:264px;padding:10px;
  background:var(--card,#fff);border:1px solid var(--line);border-radius:16px;
  box-shadow:0 18px 46px rgba(15,23,41,.22);
  animation:tm-in .16s ease-out}
@keyframes tm-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.theme-menu-h{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px}
.theme-menu-h b{font-size:13px;color:var(--text2);font-weight:600}
.tm-close{border:none;background:none;cursor:pointer;color:var(--text3);font-size:13px;
  border-radius:7px;padding:2px 7px;font-family:inherit}
.tm-close:hover{background:var(--t-hover,#f1f4f9);color:var(--text)}
.theme-menu-list{display:flex;flex-direction:column;gap:4px}
.tm-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;cursor:pointer;
  border:1.5px solid transparent;border-radius:12px;background:transparent;text-align:left;
  font-family:inherit;transition:.15s}
.tm-item:hover{background:var(--t-hover,#f6f9ff)}
.tm-item.on{border-color:var(--brand);background:var(--brand-l)}
.tm-sw{flex:none;width:40px;height:40px;border-radius:11px;overflow:hidden;display:grid;
  grid-template-columns:1fr 1fr 1fr;border:1px solid rgba(0,0,0,.10);box-shadow:0 2px 6px rgba(15,23,41,.12)}
.tm-sw i{display:block}
.sw-day i:nth-child(1){background:#2f6bff}.sw-day i:nth-child(2){background:#f4f7fb}.sw-day i:nth-child(3){background:#fff}
.sw-night i:nth-child(1){background:#6f97ff}.sw-night i:nth-child(2){background:#0e1520}.sw-night i:nth-child(3){background:#18222f}
.sw-eye i:nth-child(1){background:#b7761a}.sw-eye i:nth-child(2){background:#f5efe2}.sw-eye i:nth-child(3){background:#fdf9f1}
.sw-green i:nth-child(1){background:#2e7d4f}.sw-green i:nth-child(2){background:#dcebda}.sw-green i:nth-child(3){background:#f4faf2}
.tm-tt{display:flex;flex-direction:column;min-width:0;flex:1}
.tm-tt b{font-size:13.5px;color:var(--text);font-weight:700;line-height:1.4}
.tm-tt em{font-style:normal;font-size:11.5px;color:var(--text3);line-height:1.45}
.tm-ck{flex:none;font-weight:800;font-size:14px;color:var(--brand);opacity:0;transition:.15s}
.tm-item.on .tm-ck{opacity:1}
@media (max-width:640px){
  .theme-menu{width:min(264px,calc(100vw - 20px))}
  .tm-tt em{display:none}
}
/* ---- ⑨ 护眼 / 豆沙绿 / 夜间：底纹质感（点阵），让「主题色」更明显 ---- */
body[data-theme="eye"] .st-layout,
body[data-theme="green"] .st-layout{
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='46'%3E%3Cg fill='%23000' fill-opacity='0.045'%3E%3Ccircle cx='5' cy='5' r='1.7'/%3E%3Ccircle cx='28' cy='28' r='1.7'/%3E%3C/g%3E%3C/svg%3E") 0 0/46px 46px repeat,
    radial-gradient(900px 460px at 6% -8%, var(--t-side) 0%, rgba(255,255,255,0) 62%) no-repeat,
    linear-gradient(180deg,var(--t-soft) 0%,var(--bg) 100%)}
body[data-theme="night"] .st-layout{
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='46' height='46'%3E%3Cg fill='%23fff' fill-opacity='0.035'%3E%3Ccircle cx='5' cy='5' r='1.7'/%3E%3Ccircle cx='28' cy='28' r='1.7'/%3E%3C/g%3E%3C/svg%3E") 0 0/46px 46px repeat,
    radial-gradient(900px 460px at 6% -8%, #1a2433 0%, rgba(0,0,0,0) 62%) no-repeat,
    linear-gradient(180deg,#111a26 0%,var(--bg) 100%)}

/* ---------------- 考纲单词 · 学前检测（60 词大组 + 纸条核对 + ➕ 筛生词） ---------------- */
.syl-fnav{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 12px}
.syl-fnav-t{display:inline-flex;align-items:baseline;gap:10px}
.syl-fnav-t b{font-size:16px}
.syl-fnav .btn{height:38px;padding:0 18px;font-size:14px}
/* 学前检测主体：窄栏居中，卡片化 */
.syl-fbody{max-width:920px;margin:0 auto}
.syl-table-wrap{border:1px solid var(--line);border-radius:10px;overflow:auto;background:var(--card)}
.syl-table{width:100%;border-collapse:collapse;background:var(--card);table-layout:fixed}
.syl-table th{text-align:left;font-size:15px;font-weight:700;color:var(--text3,#8c8c8c);background:var(--bg2,#fafafa);padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
.syl-table td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:17px;color:var(--text)}
.syl-table tr:last-child td{border-bottom:none}
.syl-table tbody tr:hover td{background:rgba(22,119,255,.06)}
.syl-table tr.in td{background:rgba(82,196,26,.12)}
.syl-table tr.in:hover td{background:rgba(82,196,26,.18)}
.syl-table th:nth-child(1),.syl-table td:nth-child(1){width:26%}
.syl-table th:nth-child(2),.syl-table td:nth-child(2){width:168px;text-align:center}
.syl-th-act,.syl-td-act{text-align:right;width:148px}
.syl-fw{font-size:20px;font-weight:700;color:var(--text)}
.syl-slip{display:inline-flex;align-items:center;justify-content:center;gap:4px;box-sizing:border-box;width:132px;height:38px;padding:0 10px;border:1px solid #ffe58f;border-radius:8px;background:#fffbe6;color:#ad6800;font-size:16px;font-weight:700;cursor:pointer}
.syl-slip .ai{width:16px;height:16px}
.syl-slip:hover{border-color:#ffd666}
.syl-slip.open{background:#f6ffed;border-color:#b7eb8f;color:#389e0d}
.syl-fcn{color:#bfbfbf;font-size:17px}
.syl-fcn.open{color:#389e0d;font-weight:700}
.syl-pager{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:12px;font-size:13px;color:#8c8c8c}
.syl-pbtn{min-width:32px;height:32px;padding:0 8px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--text2);cursor:pointer}
.syl-pbtn:hover:not(:disabled){color:#1677ff;border-color:#1677ff}
.syl-pbtn.on{color:#fff;background:#1677ff;border-color:#1677ff}
.syl-pbtn:disabled{opacity:.45;cursor:not-allowed}
.syl-pgap{padding:0 4px}
.syl-fadd{flex:none;justify-self:end;height:42px;min-width:46px;padding:0 14px;border:none;border-radius:8px;background:#e6f4ff;color:#1677ff;font-size:24px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:.15s}
.syl-fadd:hover{background:#dbe7ff}
.syl-fadd.on{background:#0e9f5f;color:#fff;font-size:15px;min-width:118px;height:42px}
.syl-fadd.on:hover{background:#0c8a52}
.syl-fsum{margin-top:12px;font-size:15px;color:var(--text2)}
.syl-fsum .u{color:#e07a00;font-size:18px}
.syl-fbottom{display:flex;justify-content:center;margin-top:18px}

/* ---------------- 管理端「词书管理」类型分区（单词书 / 短语书 / 词形转换书 / 句子书） ---------------- */
.w-kindbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 12px}
.w-kind{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:9px 16px;font-size:15px;font-weight:600;color:var(--text2);cursor:pointer;transition:.15s;user-select:none;font-family:inherit}
.w-kind:hover{border-color:#c3d4f5;background:#f7faff}
.w-kind.on{border-color:#2f6bff;background:#eef4ff;color:#1f4fd8;box-shadow:0 2px 8px rgba(47,107,255,.16)}
.w-kind em{font-style:normal;font-size:12px;font-weight:700;background:#eef2f8;color:#5a6b85;border-radius:9px;padding:1px 8px;min-width:22px;text-align:center}
.w-kind.on em{background:#2f6bff;color:#fff}

/* ---------------- 管理端「已有词书」列表（选中 / 就地编辑 / 删除） ---------------- */
.w-booklist{border:1px solid var(--line);border-radius:14px;overflow:hidden;margin:2px 0 14px;background:#fff}
.w-booklist-h{display:flex;align-items:center;padding:10px 16px;background:#f7f9fc;border-bottom:1px solid var(--line);font-size:15px;font-weight:700}
.w-bk{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid #eef1f6;cursor:pointer;transition:.12s;flex-wrap:wrap}
/* 批量删除勾选框（学生管理表格 / 词书列表） */
.stu-chk,.w-bk-chk{flex:none;width:16px;height:16px;cursor:pointer;accent-color:#2f6bff;margin:0}
table .stu-chk{vertical-align:middle}
.w-bk:last-child{border-bottom:none}
.w-bk:hover{background:#f7faff}
.w-bk.on{background:#eef4ff;box-shadow:inset 3px 0 0 #2f6bff}
.w-bk-kind{flex:none;font-size:12px;font-weight:700;background:#eef2f8;color:#5a6b85;border-radius:8px;padding:3px 10px;white-space:nowrap}
.w-bk.on .w-bk-kind{background:#2f6bff;color:#fff}
.w-bk-title{font-size:15px;font-weight:600;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.w-bk-cnt{font-size:12.5px;color:var(--text3);flex:1;min-width:180px}
.w-bk-acts{flex:none;display:flex;gap:12px;align-items:center}

/* ---------------- 课文朗读（#/words/context） ---------------- */
/* 课文朗读整体窄栏居中（与学前检测列表同宽） */
.rd-narrow{max-width:880px;margin:0 auto}
/* 课文朗读字号三档：小 / 中（默认，= 上面的基础样式）/ 大（≈ 考纲单词学习框：980px 宽 + 大字） */
.rd-sizes{display:inline-flex;background:#eef4ff;border-radius:999px;padding:3px;gap:2px}
.rd-sizes button{border:none;background:transparent;cursor:pointer;font-size:14px;font-weight:700;color:#4a6b85;padding:5px 14px;border-radius:999px;transition:.12s}
.rd-sizes button:hover{color:#1d3f7a}
.rd-sizes button.on{background:#fff;color:#1f66f0;box-shadow:0 1px 4px rgba(47,107,255,.28)}
/* 小号 */
.rd-narrow[data-rdsize="small"]{max-width:760px}
.rd-narrow[data-rdsize="small"] .rd-list{max-height:min(54vh,540px);gap:10px}
.rd-narrow[data-rdsize="small"] .rd-card{padding:12px 16px;border-radius:16px;gap:12px}
.rd-narrow[data-rdsize="small"] .rd-en{font-size:15px}
.rd-narrow[data-rdsize="small"] .rd-cn{font-size:12.5px;margin-top:4px}
.rd-narrow[data-rdsize="small"] .rd-spk{width:42px;height:42px;font-size:17px}
/* 大号：对齐考纲单词的学习框（舞台卡 980px 宽、34px 内边距、大字） */
.rd-narrow[data-rdsize="big"]{max-width:980px}
.rd-narrow[data-rdsize="big"] .rd-list{max-height:min(72vh,760px);gap:16px;padding-right:18px}
.rd-narrow[data-rdsize="big"] .rd-card{padding:30px 32px;border-radius:22px;gap:22px}
.rd-narrow[data-rdsize="big"] .rd-en{font-size:24px;line-height:1.45}
.rd-narrow[data-rdsize="big"] .rd-cn{font-size:18px;margin-top:10px}
.rd-narrow[data-rdsize="big"] .rd-spk{width:64px;height:64px;font-size:26px}
.rd-narrow[data-rdsize="big"] .rd-title{font-size:22px}
@media (max-width:640px){
  .rd-narrow[data-rdsize="big"] .rd-en{font-size:19px}
  .rd-narrow[data-rdsize="big"] .rd-cn{font-size:15px}
  .rd-narrow[data-rdsize="big"] .rd-card{padding:20px 18px}
  .rd-narrow[data-rdsize="big"] .rd-spk{width:52px;height:52px;font-size:22px}
}
body[data-theme="dark"] .rd-sizes{background:var(--line)}
body[data-theme="dark"] .rd-sizes button{color:var(--text3)}
body[data-theme="dark"] .rd-sizes button:hover{color:var(--text)}
body[data-theme="dark"] .rd-sizes button.on{background:var(--card);color:#7aa6ff;box-shadow:0 1px 4px var(--t-sh)}
.rd-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.rd-title{display:inline-flex;align-items:center;gap:8px;font-size:19px;font-weight:800;color:var(--text)}
.rd-title .ai{width:1.05em;height:1.05em}
.rd-spk .ai{width:26px;height:26px}
.wq-spk .ai,.syl-spk .ai{width:18px;height:18px;vertical-align:middle}
.btn .ai{width:1em;height:1em;margin-right:4px;vertical-align:-.12em}
.rd-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rd-rate-lb{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--text2);font-weight:600}
.rd-rate{height:40px;border:1.5px solid var(--line);border-radius:10px;padding:0 10px;background:#fff;font-size:15px;font-weight:700;cursor:pointer}
.rd-rate:focus{outline:none;border-color:#2f6bff}
/* 句子多时限高内部滚动：工具条/底部提示固定，页面不被拉长，右侧出现进度滚动条 */
.rd-list{display:flex;flex-direction:column;gap:14px;max-height:min(62vh,620px);overflow-y:auto;overscroll-behavior:contain;padding:2px 14px 2px 2px;margin:0 2px;scrollbar-width:thin;scrollbar-color:#9db9ff transparent}
.rd-list::-webkit-scrollbar{width:10px}
.rd-list::-webkit-scrollbar-track{background:#eef3ff;border-radius:5px}
.rd-list::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#6f9bff,#2f6bff);border-radius:5px;border:2px solid #eef3ff}
.rd-list::-webkit-scrollbar-thumb:hover{background:#2f6bff}
body[data-theme="dark"] .rd-list{scrollbar-color:#3d5aa0 transparent}
body[data-theme="dark"] .rd-list::-webkit-scrollbar-track{background:#1c2540}
body[data-theme="dark"] .rd-list::-webkit-scrollbar-thumb{background:#3d5aa0;border-color:#1c2540}
.rd-card{display:flex;align-items:center;gap:16px;background:#fff;border:1.5px solid #e3ebff;border-radius:20px;padding:18px 20px;box-shadow:0 2px 10px rgba(47,107,255,.07);transition:.15s}
.rd-card:hover{border-color:#b9ccff;box-shadow:0 4px 16px rgba(47,107,255,.13)}
.rd-card.playing{border-color:#2f6bff;background:#f4f8ff;box-shadow:0 4px 18px rgba(47,107,255,.2)}
.rd-txt{flex:1;min-width:0}
.rd-en{margin:0;font-size:17px;font-weight:700;color:var(--text);line-height:1.5;word-break:break-word}
.rd-cn{margin:6px 0 0;font-size:14.5px;color:var(--text2);line-height:1.5}
.rd-spk{flex:none;width:52px;height:52px;border:none;border-radius:50%;background:linear-gradient(180deg,#3d84ff,#1f66f0);color:#fff;font-size:22px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(47,107,255,.35);transition:.15s}
.rd-spk:hover{transform:scale(1.08);box-shadow:0 6px 16px rgba(47,107,255,.45)}
.rd-spk:active{transform:scale(.96)}
.rd-grps{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.rd-grps-t{font-size:14px;font-weight:700;color:var(--text2)}
.rd-chip{height:36px;padding:0 16px;border:1.5px solid var(--line);border-radius:18px;background:#fff;color:var(--text2);font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.rd-chip:hover{border-color:#9db9ff;color:var(--text)}
.rd-chip.on{background:#2f6bff;border-color:#2f6bff;color:#fff;box-shadow:0 2px 8px rgba(47,107,255,.3)}
body[data-theme="dark"] .rd-card{background:var(--card);border-color:var(--line)}
body[data-theme="dark"] .rd-rate,body[data-theme="dark"] .rd-chip{background:var(--card);color:var(--text);border-color:var(--line)}

/* ==================================================================
   商业化视觉：登录分栏、运营后台、学生端顶栏
   ================================================================== */
.login-wrap.login-pro{
  display:flex;align-items:stretch;justify-content:stretch;
  min-height:100vh;padding:0;overflow:hidden;
  background:#0b1220;
}
.login-hero{
  flex:1.15;min-width:0;color:#e8eef8;position:relative;
  display:flex;flex-direction:column;justify-content:center;
  padding:64px 72px;
  background:
    radial-gradient(520px 280px at 12% 18%, rgba(79,140,255,.45), transparent 70%),
    radial-gradient(420px 260px at 88% 80%, rgba(20,184,166,.28), transparent 68%),
    linear-gradient(165deg,#10192e 0%,#0c1424 48%,#0e1c33 100%);
}
.login-hero::after{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.45;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size:48px 48px;mask-image:linear-gradient(180deg,#000 0%, transparent 78%);
}
.lh-brand,.login-hero h2,.lh-lead,.lh-points{position:relative;z-index:1}
.lh-brand{display:flex;align-items:center;gap:12px;margin-bottom:36px}
.lh-mark{
  width:44px;height:44px;border-radius:14px;display:grid;place-items:center;
  font-weight:800;font-size:18px;color:#fff;
  background:linear-gradient(135deg,#60a5fa,#2563eb);
  box-shadow:0 10px 24px rgba(37,99,235,.35);
}
.lh-brand b{display:block;font-size:18px;letter-spacing:.5px}
.lh-brand span{display:block;font-size:12px;color:#93a4c3;margin-top:1px}
.login-hero h2{font-size:36px;line-height:1.28;font-weight:700;letter-spacing:-.4px;max-width:520px}
.lh-lead{max-width:440px;margin-top:16px;color:#b7c4da;font-size:15px;line-height:1.75}
.lh-points{list-style:none;margin-top:36px;display:flex;flex-direction:column;gap:14px;max-width:460px}
.lh-points li{display:flex;align-items:center;gap:14px;color:#d5deee;font-size:14.5px}
.lh-points b{
  width:36px;height:28px;border-radius:8px;display:grid;place-items:center;flex-shrink:0;
  background:rgba(255,255,255,.08);color:#9ec1ff;font-size:12px;letter-spacing:.4px;
}
.login-admin .login-hero{
  background:
    radial-gradient(480px 260px at 18% 12%, rgba(56,189,248,.28), transparent 70%),
    radial-gradient(420px 280px at 90% 88%, rgba(99,102,241,.32), transparent 70%),
    linear-gradient(165deg,#0b1220 0%,#111827 55%,#0f172a 100%);
}
.login-admin .lh-mark{background:linear-gradient(135deg,#38bdf8,#2563eb)}
.login-panel{
  flex:0 0 480px;display:flex;align-items:center;justify-content:center;
  background:#f5f7fb;padding:40px 36px;
}
.login-pro .login-card{
  width:100%;max-width:400px;border:none;border-radius:20px;
  box-shadow:0 18px 50px rgba(15,23,42,.08);padding:36px 34px 28px;
}
.login-pro .login-card::before{display:none}
.login-pro .login-logo{justify-content:flex-start}
.login-pro .login-logo h1{font-size:24px;letter-spacing:-.3px}
.login-pro .login-sub{text-align:left;margin:4px 0 22px;color:#667085}
.login-pro .btn{
  height:46px;border-radius:12px;font-size:15px;letter-spacing:.4px;
  background:linear-gradient(180deg,#3b82f6,#2563eb);
  box-shadow:0 8px 18px rgba(37,99,235,.28);
}
.login-pro .btn:hover{background:linear-gradient(180deg,#2563eb,#1d4ed8)}
.login-admin .login-pro .btn,
.login-pro.login-admin .btn{background:linear-gradient(180deg,#0f172a,#1e293b);box-shadow:0 8px 18px rgba(15,23,42,.22)}
.login-admin .login-logo .mark,
.login-pro.login-admin .login-logo .mark{
  background:linear-gradient(135deg,#0f172a,#334155);color:#fff;font-size:16px;font-weight:800;
}
.login-pro .hint{text-align:left;margin-top:18px}
.login-pro .login-logo .mark{font-size:16px;font-weight:800;color:#fff}

/* 学生端：去掉点阵底，改成干净的产品底色；顶栏标签做成胶囊 */
.st-layout{
  background:#f3f6fb;
}
.st-side .sbrand .sb-mark{font-size:16px;font-weight:800;color:#fff;letter-spacing:0}
.st-top{height:72px;background:rgba(255,255,255,.88);border-bottom:1px solid #e7edf5}
.st-tabs{gap:8px;align-items:center}
.st-tabs a{
  height:36px;padding:0 14px;border-radius:999px;border-bottom:none;
  font-size:14px;
}
.st-tabs a.on{background:#eaf1ff;color:#2457d6}
.st-hello{background:#fff;border:1px solid #e7edf5;box-shadow:0 8px 24px rgba(15,23,42,.04)}
.st-hello::after{display:none}
.st-card{border-radius:16px;border:1px solid #e8eef6;box-shadow:0 8px 24px rgba(15,23,42,.05)}

/* 管理端 */
.admin-app{background:#f3f5f9}
.admin-app .side{
  width:236px;background:#0c1222;border-right:none;color:#c9d4e8;
}
.admin-app .main{margin-left:236px;background:#f3f5f9;min-height:100vh}
.admin-app .brand{padding:22px 18px 14px}
.admin-app .brand .mark{
  width:36px;height:36px;border-radius:11px;font-size:15px;font-weight:800;color:#fff;
  background:linear-gradient(135deg,#60a5fa,#2563eb);box-shadow:0 8px 16px rgba(37,99,235,.35);
}
.admin-app .brand b{color:#fff;font-size:15px;line-height:1.25}
.admin-app .brand span{color:#8ea0bd;font-size:11px;font-weight:500;letter-spacing:.4px;margin-top:2px}
.admin-app .nav{padding:8px 12px 12px}
.admin-app .nav a{
  color:#b7c3d7;border-radius:10px;padding:10px 12px;margin-bottom:2px;font-weight:600;
}
.admin-app .nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.admin-app .nav a.on{
  background:linear-gradient(90deg,rgba(59,130,246,.28),rgba(59,130,246,.08));
  color:#fff;box-shadow:inset 3px 0 0 #60a5fa;
}
.admin-app .side-foot{
  border-top:1px solid rgba(255,255,255,.06);color:#7f8da8;
  display:flex;align-items:center;gap:8px;
}
.side-dot{width:7px;height:7px;border-radius:50%;background:#34d399;box-shadow:0 0 0 4px rgba(52,211,153,.15)}
.admin-app .topbar{
  height:auto;min-height:72px;padding:14px 28px;background:rgba(255,255,255,.92);
  border-bottom:1px solid #e6ebf2;backdrop-filter:blur(10px);
}
.admin-app .tb-title h2{font-size:18px;letter-spacing:-.2px}
.admin-app .tb-title p{font-size:12.5px;color:#8a97ad;margin-top:1px}
.admin-app .who{gap:8px}
.admin-app .who .link-btn{
  height:32px;padding:0 12px;border-radius:999px;border:1px solid #e6ebf2;background:#fff;color:#3a4a63;
}
.admin-app .who .link-btn:hover{border-color:#2563eb;color:#2563eb;background:#f5f8ff}
.admin-app .who .link-btn.danger{border-color:#f3d0cd;color:#d14343;background:#fff}
.admin-app .who .link-btn.danger:hover{background:#fff5f4;border-color:#e8b4b0}
.who-user{display:flex;align-items:center;gap:8px;padding-left:6px;font-weight:600;color:#1f2a3d}
.admin-app .avatar{background:#0c1222;color:#fff;width:32px;height:32px;font-size:13px}
.admin-app .content{max-width:1240px;padding:22px 28px 56px}
.admin-app .card{
  border:1px solid #e7edf5;border-radius:16px;
  box-shadow:0 8px 24px rgba(15,23,42,.04);
}
.dash-hero{
  display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;
  margin-bottom:18px;padding:22px 24px;border-radius:18px;color:#fff;
  background:
    radial-gradient(420px 160px at 90% 0%, rgba(96,165,250,.45), transparent 70%),
    linear-gradient(120deg,#12203a 0%,#1d4ed8 62%,#2563eb 100%);
  box-shadow:0 16px 36px rgba(29,78,216,.22);
}
.dash-kicker{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:#c7d7ff;margin-bottom:6px}
.dash-hero h3{font-size:22px;font-weight:700;letter-spacing:-.3px}
.dash-hero p{color:#dbe7ff;font-size:13.5px;margin-top:4px}
.dash-pills{display:flex;gap:8px;flex-wrap:wrap}
.dash-pills span{
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.18);
  border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;
}
.dash-stats{margin-bottom:18px}
.dash-stats .stat{
  border:1px solid #e7edf5;border-radius:16px;box-shadow:0 8px 22px rgba(15,23,42,.04);
  position:relative;overflow:hidden;
}
.dash-stats .stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#2563eb}
.dash-stats .stat:nth-child(2)::before{background:#0e9f5f}
.dash-stats .stat:nth-child(3)::before{background:#d97706}
.dash-stats .stat:nth-child(4)::before{background:#7c5cff}
.dash-stats .stat:nth-child(5)::before{background:#0891b2}
.dash-stats .stat .v{font-size:26px;letter-spacing:-.6px}
.admin-app .card .btn.ghost{border-radius:12px;background:#f8fafc}
.admin-app table{border-collapse:separate;border-spacing:0}
.admin-app th{background:#f8fafc;color:#7b879c;font-size:12px;letter-spacing:.3px}

@media (max-width:980px){
  .login-hero{display:none}
  .login-panel{flex:1;padding:28px 18px}
  .login-wrap.login-pro{background:#f5f7fb}
}
@media (max-width:820px){
  .admin-app .side{width:72px}
  .admin-app .main{margin-left:72px}
  .admin-app .tb-title p{display:none}
  .admin-app .who-user span{display:none}
}
body[data-theme] .login-wrap.login-pro{background:#0b1220}
body[data-theme] .login-panel{background:var(--bg)}
body[data-theme] .login-pro .login-card{background:var(--card);box-shadow:none;border:1px solid var(--line)}
body[data-theme] .login-pro .login-sub,body[data-theme] .login-pro .hint{color:var(--text3)}
body[data-theme] .st-layout{background:var(--bg)}
body[data-theme] .st-tabs a{border-bottom:none}
body[data-theme] .st-tabs a.on{background:var(--brand-l);color:var(--brand)}
body[data-theme] .st-hello{background:var(--t-soft)}
body[data-theme] .st-hello::after{display:none}

/* ==================================================================
   学生端 · 日间科技风（护眼 / 夜间 / 豆沙绿仍走原来的主题）
   ================================================================== */
body:not([data-theme]) .st-layout{
  color:#e8eef8;
  background:
    radial-gradient(720px 360px at 0% -10%, rgba(56,189,248,.22), transparent 62%),
    radial-gradient(640px 320px at 100% 0%, rgba(99,102,241,.2), transparent 58%),
    linear-gradient(180deg,#071018 0%,#0c1730 42%,#08101c 100%);
}
body:not([data-theme]) .st-main{
  background-image:
    linear-gradient(rgba(125,211,252,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(125,211,252,.05) 1px, transparent 1px);
  background-size:48px 48px;
  background-position:0 0;
}
body:not([data-theme]) .st-side{
  background:linear-gradient(180deg,#07101c 0%,#0c1730 100%);
  border-right:1px solid rgba(125,211,252,.16);
  box-shadow:8px 0 32px rgba(0,0,0,.25);
}
body:not([data-theme]) .st-side .sbrand .sb-mark{
  background:linear-gradient(135deg,#38bdf8,#2563eb);
  box-shadow:0 0 0 1px rgba(186,230,253,.35), 0 8px 18px rgba(37,99,235,.45);
}
body:not([data-theme]) .st-side .sbrand b{color:#7dd3fc;letter-spacing:2px}
body:not([data-theme]) .st-subj a{color:#9fb0c8}
body:not([data-theme]) .st-subj a:hover{background:rgba(255,255,255,.04)}
body:not([data-theme]) .st-subj a.on{background:rgba(56,189,248,.12);color:#e0f2fe}
body:not([data-theme]) .st-me{border-top-color:rgba(125,211,252,.16)}
body:not([data-theme]) .st-me b{color:#f8fbff}
body:not([data-theme]) .st-me-grade{color:#8aa0bb}
body:not([data-theme]) .st-me .st-out{
  background:rgba(248,113,113,.08);border-color:rgba(248,113,113,.35);color:#fecaca;
}
body:not([data-theme]) .st-top{
  height:72px;
  background:rgba(7,16,28,.78);
  border-bottom:1px solid rgba(125,211,252,.16);
  backdrop-filter:blur(14px);
}
body:not([data-theme]) .st-tabs a{color:#9fb0c8;border-bottom:none}
body:not([data-theme]) .st-tabs a:hover{color:#f8fbff}
body:not([data-theme]) .st-tabs a.on{
  background:linear-gradient(180deg,rgba(56,189,248,.22),rgba(37,99,235,.28));
  color:#e0f2fe;box-shadow:inset 0 0 0 1px rgba(125,211,252,.35);
}
body:not([data-theme]) .st-tabs a .n{background:rgba(255,255,255,.08);color:#dbeafe}
body:not([data-theme]) .st-tabs a.on .n{background:rgba(255,255,255,.16);color:#fff}
body:not([data-theme]) .st-report{
  background:rgba(255,255,255,.04);border-color:rgba(125,211,252,.28);color:#dbe7f5;
}
body:not([data-theme]) .st-report:hover{
  border-color:#38bdf8;color:#e0f2fe;background:rgba(56,189,248,.1);box-shadow:0 0 18px rgba(56,189,248,.15);
}
body:not([data-theme]) .st-hello{
  background:
    radial-gradient(420px 120px at 100% 0%, rgba(56,189,248,.28), transparent 70%),
    linear-gradient(110deg,#0e1c36 0%,#12315f 58%,#0c4a6e 100%);
  border:1px solid rgba(125,211,252,.28);
  box-shadow:0 16px 40px rgba(0,0,0,.28);
  color:#e8eef8;
}
body:not([data-theme]) .st-hello .hh b{color:#fff;font-size:22px;letter-spacing:.4px}
body:not([data-theme]) .hh-kicker{
  font-size:11px;letter-spacing:2px;font-weight:700;color:#7dd3fc;
  border:1px solid rgba(125,211,252,.35);border-radius:999px;padding:2px 10px;
}
body:not([data-theme]) .st-hello .hh-cat{background:rgba(255,255,255,.12);color:#e0f2fe}
body:not([data-theme]) .st-hello .hh-tip,body:not([data-theme]) .st-hello p{color:#b7c9de}
body:not([data-theme]) .st-card{
  background:linear-gradient(180deg,rgba(14,26,48,.96),rgba(8,16,30,.96));
  border:1px solid rgba(125,211,252,.2);
  box-shadow:0 14px 34px rgba(0,0,0,.32);
  color:#e8eef8;
}
body:not([data-theme]) .st-card:hover{
  transform:translateY(-4px);
  border-color:rgba(125,211,252,.55);
  box-shadow:0 18px 40px rgba(0,0,0,.4), 0 0 0 1px rgba(56,189,248,.25);
}
body:not([data-theme]) .st-card .head{
  display:flex;flex-direction:column;align-items:flex-start;
  min-height:0;padding:18px 18px 14px;
}
body:not([data-theme]) .st-card .head .tt{width:100%;padding-right:86px}
body:not([data-theme]) .st-card .head b{color:#fff}
body:not([data-theme]) .st-card .head .bk{
  color:rgba(255,255,255,.86);padding-right:0;line-height:1.45;width:100%;margin:2px 0 12px;
}
body:not([data-theme]) .st-card .go{position:static;align-self:flex-end;z-index:2;padding:4px 12px}
body:not([data-theme]) .st-card .head .wm{opacity:.22}
body:not([data-theme]) .st-card .cat-pill{
  background:rgba(255,255,255,.16);color:#fff;box-shadow:none;border:1px solid rgba(255,255,255,.2);
}
body:not([data-theme]) .st-card .go{
  background:rgba(255,255,255,.95);color:#0f172a;font-weight:700;
}
body:not([data-theme]) .st-card.st-数学 .head{background:linear-gradient(135deg,#1d4ed8,#38bdf8)}
body:not([data-theme]) .st-card.st-英语 .head{background:linear-gradient(135deg,#0f766e,#2dd4bf)}
body:not([data-theme]) .st-card.st-物理 .head{background:linear-gradient(135deg,#b45309,#fbbf24)}
body:not([data-theme]) .st-card.st-化学 .head{background:linear-gradient(135deg,#6d28d9,#c084fc)}
body:not([data-theme]) .st-card .foot{background:transparent}
body:not([data-theme]) .st-card .fb-top,body:not([data-theme]) .st-card .fb-top b{color:#d5e4f5}
body:not([data-theme]) .st-card .pbar{background:rgba(255,255,255,.1)}
body:not([data-theme]) .st-backbar,body:not([data-theme]) .st-sec{
  background:rgba(10,18,34,.82);
  border:1px solid rgba(125,211,252,.18);
  box-shadow:0 12px 32px rgba(0,0,0,.28);
  color:#e8eef8;
}
body:not([data-theme]) .bb-tt b,body:not([data-theme]) .sec-h b{color:#f8fbff}
body:not([data-theme]) .bb-tt span,body:not([data-theme]) .sec-tip,body:not([data-theme]) .ch-empty{color:#93a8c2}
body:not([data-theme]) .st-back{
  background:rgba(255,255,255,.04);border-color:rgba(125,211,252,.3);color:#dbe7f5;
}
body:not([data-theme]) .st-back:hover{border-color:#38bdf8;color:#e0f2fe;background:rgba(56,189,248,.1)}
body:not([data-theme]) .kp-group{background:rgba(255,255,255,.03);border-color:rgba(125,211,252,.16)}
body:not([data-theme]) .kp-group-h{background:rgba(56,189,248,.06)}
body:not([data-theme]) .g-name{color:#f8fbff}
body:not([data-theme]) .g-meta{background:rgba(255,255,255,.04);border-color:rgba(125,211,252,.2);color:#9fb0c8}
body:not([data-theme]) .g-arrow{background:#0b1730;color:#7dd3fc}
body:not([data-theme]) .kp-box,body:not([data-theme]) .ex-row{
  background:rgba(255,255,255,.03);border-color:rgba(125,211,252,.16);color:#e8eef8;
}
body:not([data-theme]) .kp-box:hover,body:not([data-theme]) .ex-row:hover{
  border-color:rgba(56,189,248,.55);background:rgba(56,189,248,.06);
}
body:not([data-theme]) .kp-tt b,body:not([data-theme]) .ex-info b{color:#f8fbff}
body:not([data-theme]) .kp-doc,body:not([data-theme]) .kp-doc .dn,body:not([data-theme]) .ex-info span{color:#9fb0c8}
body:not([data-theme]) .kp-idx{background:rgba(56,189,248,.12);color:#7dd3fc}
body:not([data-theme]) .kp-box.done{background:rgba(16,185,129,.08);border-color:rgba(52,211,153,.35)}
body:not([data-theme]) .kb-print,body:not([data-theme]) .kb-dl{
  background:rgba(255,255,255,.04);color:#dbe7f5;border-color:rgba(125,211,252,.28);
}
body:not([data-theme]) .kb-play{
  background:linear-gradient(180deg,#38bdf8,#2563eb);
  box-shadow:0 8px 18px rgba(37,99,235,.35);
}
body:not([data-theme]) .wt-wrap{
  background:rgba(255,255,255,.97);
  border:1px solid rgba(125,211,252,.22);
  border-radius:18px;
  padding:16px 16px 8px;
  box-shadow:0 16px 40px rgba(0,0,0,.28);
  color:#101828;
}
body:not([data-theme]) .empty{color:#9fb0c8}
@media (max-width:640px){
  body:not([data-theme]) .st-side{
    border-top:1px solid rgba(125,211,252,.2);
    box-shadow:0 -8px 24px rgba(0,0,0,.35);
  }
}
