: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-face{object-fit:cover}
.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}
/* ---- 知识点分组：左侧分组导航（最多显示6个，超出滚动） + 右侧两列知识点框（超出滚动） ---- */
.kp-layout{display:flex;gap:16px;align-items:flex-start;--kp-max:350px}
.kp-side{width:250px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;position:sticky;top:16px;
  max-height:var(--kp-max);overflow-y:auto;overflow-x:hidden;padding:2px;scrollbar-width:thin}
.kp-side-item{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-shrink:0;
  padding:14px 16px;border-radius:12px;background:#fff;border:1px solid #e8edf7;cursor:pointer;
  font-size:14px;font-weight:600;color:var(--text);transition:.15s;line-height:1.4}
.kp-side-item:hover{border-color:#c8d8ff;background:#fafcff}
.kp-side-item.on{background:linear-gradient(135deg,var(--kp-on-a,#4f86ff),var(--kp-on-b,#2f6bff));border-color:transparent;color:#fff;font-weight:600;
  box-shadow:0 6px 14px var(--kp-on-sh,rgba(47,107,255,.25))}
.kp-side-item .gs-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kp-side-item .gs-meta{flex-shrink:0;font-size:12px;color:var(--text3);font-variant-numeric:tabular-nums}
.kp-side-item.on .gs-meta{color:rgba(255,255,255,.85)}
.kp-main-list{flex:1;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start;
  max-height:var(--kp-max);overflow-y:auto;padding:2px 8px 2px 2px;scrollbar-width:thin}
.kp-main-list>.ch-empty{grid-column:1/-1}
.kp-side::-webkit-scrollbar,.kp-main-list::-webkit-scrollbar{width:6px;height:6px}
.kp-side::-webkit-scrollbar-thumb,.kp-main-list::-webkit-scrollbar-thumb{background:#ccd7ea;border-radius:4px}
.kp-side::-webkit-scrollbar-thumb:hover,.kp-main-list::-webkit-scrollbar-thumb:hover{background:#b3c2de}
.kp-side::-webkit-scrollbar-track,.kp-main-list::-webkit-scrollbar-track{background:transparent}
body[data-theme] .kp-side-item{background-color:var(--card);border-color:var(--line)}
body[data-theme] .kp-side-item:hover{background-color:var(--bg2)}
body[data-theme] .kp-side-item.on{background-color:transparent}
body[data-theme="night"] .kp-side-item.on{--kp-on-a:#5f86f5;--kp-on-b:#3f63c8;--kp-on-sh:rgba(0,0,0,.35)}
body[data-theme="eye"] .kp-side-item.on{--kp-on-a:#c68a28;--kp-on-b:#a06a12;--kp-on-sh:rgba(120,95,50,.22)}
body[data-theme="green"] .kp-side-item.on{--kp-on-a:#3d9160;--kp-on-b:#2b7047;--kp-on-sh:rgba(45,90,60,.25)}
.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}

/* ---- 计时页（顶栏「计时」→ 整页 iframe 嵌入计时器；背景透明与主题融合） ---- */
.st-content.tool-full{max-width:none;padding:12px 20px 16px}
.tool-page{display:flex;flex-direction:column}
.tool-frame{width:100%;height:calc(100vh - 175px);min-height:540px;border:0;border-radius:0;
  background:transparent;display:block;box-shadow:none}
body[data-theme] .tool-frame{background:transparent;box-shadow:none}

/* ---- 学习报告 ---- */
.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-layout{flex-direction:column;gap:12px}
  .kp-side{position:static;width:100%;max-height:none;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding-bottom:4px}
  .kp-side-item{max-width:210px}
  .kp-main-list{grid-template-columns:1fr;max-height:none;padding-right:2px}
  .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}
  /* ---- 计时页 ---- */
  .st-content.tool-full{padding:10px 14px 84px}
  .tool-frame{height:calc(100vh - 200px);min-height:420px}
  /* ---- 学习报告 ---- */
  .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}
}

/* ================= 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%;height:1123px;overflow:hidden;background:linear-gradient(160deg,#f2f5fa 0%,#fbfcfe 55%,#eef2f9 100%);border-radius:6px;box-shadow:0 4px 18px rgba(15,23,41,.10);padding:56px 60px;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:flex-start;gap:10px;padding-top:52px}
#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:18px 0 4px}
#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:14px 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:20px 0 12px}
#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;height:auto;overflow:visible}
  #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;height:auto;overflow:visible;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 - 160px);min-height:560px;border:0;border-radius:0;background:transparent;display:block}
/* 键盘学堂：容器去四周留白，iframe 内容贴满整个页面（老浏览器不支持 :has 时自动退回原留白） */
.st-content.wt-fluid:has(.wt-frame){padding:0 0 0}
.st-content.wt-fluid:has(.wt-frame) .wt-frame{height:calc(100vh - 66px)}
/* 键盘学堂：顶栏去底线去白底，与页面内容融为一体（离开本页自动还原） */
body:has(.wt-frame) .st-top{background:transparent;border-bottom:0;backdrop-filter:none;box-shadow:none}

.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}
/* 记忆学习 5 秒倒计时 */
.wq-cdline{font-size:13px;color:#8a94a7;margin:2px 0 8px}
.wq-cdline b{color:#e0343f;font-size:15px}
.wq-cdbar{height:6px;background:#eef2f8;border-radius:4px;overflow:hidden;margin:0 24px 12px}
.wq-cdbar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#6b8cff,#2f6bff);transition:width 1s linear}
/* 听音拼写（单词速记第③步）：音节格子 + 音节块 */
.wq-ls-slots{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:16px 0 4px}
.wq-ls-slot{min-width:66px;min-height:52px;border:2px dashed #c3d0e4;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:21px;font-weight:700;color:#9aa8bd;background:#f7fafc;cursor:pointer;transition:.15s;padding:0 12px}
.wq-ls-slot.filled{border-style:solid;border-color:#2f6bff;background:#eef4ff;color:#2f6bff}
.wq-ls-slot.ok{border-color:#0e9f5f;background:#e7f8ef;color:#0e9f5f}
.wq-ls-slot.no{border-color:#e5484d;background:#fdecec;color:#e5484d;animation:ph2shake .35s}
.wq-ls-tiles{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:10px 0 6px}
.wq-ls-tile{min-width:66px;min-height:52px;border:0;border-radius:10px;background:linear-gradient(135deg,#34c77b,#0e9f5f);color:#fff;font-size:21px;font-weight:700;cursor:pointer;box-shadow:0 3px 8px rgba(14,159,95,.28);transition:.15s;padding:0 14px}
.wq-ls-tile:hover{transform:translateY(-2px);box-shadow:0 5px 12px rgba(14,159,95,.36)}
.wq-ls-tile.used{opacity:.22;pointer-events:none;transform:none;box-shadow:none}
/* 听音拼写：中文释义「贴纸」遮挡，点一下显示 */
.wq-ls-meancover{display:inline-block;margin:10px auto 2px;padding:8px 24px;border:0;border-radius:12px;background:repeating-linear-gradient(45deg,#ffe9a8,#ffe9a8 10px,#fff3c9 10px,#fff3c9 20px);color:#8a6100;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 3px 8px rgba(0,0,0,.14);transform:rotate(-2deg);transition:.15s}
.wq-ls-meancover:hover{transform:rotate(0) scale(1.05)}
/* 训练页禁用文字选中：连点/误点拖动不再出现蓝色选区（输入框仍可正常选中编辑） */
.wt-root.wt-fluid,body.wt-stage .wt-root{-webkit-user-select:none;user-select:none}
.wt-root.wt-fluid input,.wt-root.wt-fluid textarea,body.wt-stage .wt-root input,body.wt-stage .wt-root textarea{-webkit-user-select:text;user-select:text}

.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}

/* 听音拼句：听音阶段大卡片（点击「播放」出声，不出句子文字） */
.wl-listen{display:flex;flex-direction:column;align-items:center;gap:8px;padding:34px 20px 30px;
  border-radius:14px}
.wl-ic{font-size:52px;line-height:1;animation:wlPulse 1.6s ease-in-out infinite}
.wl-listen.playing .wl-ic{animation-duration:1.1s}
@keyframes wlPulse{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.12);opacity:1}}
.wl-t{margin:6px 0 0;font-size:22px;font-weight:700;color:var(--text,#1d2c4c)}
.wl-sub{margin:0;font-size:13px;color:var(--text3,#8a97b3)}
.wl-play{min-width:200px;letter-spacing:6px;margin-top:12px}
/* 倒计时条：正常蓝；≤5 秒变红提醒 */
.wl-count{display:inline-block;margin:2px auto 10px;padding:7px 18px;border-radius:999px;
  background:#eaf1ff;color:#2457d6;font-size:15px;font-weight:600}
.wl-count b{font-size:19px;font-variant-numeric:tabular-nums}
.wl-count.urgent{background:#fdecec;color:#e0343f;animation:wlBlink .5s step-end infinite alternate}
@keyframes wlBlink{from{opacity:1}to{opacity:.55}}

.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:6px;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}
/* ---- 语境填空（短语速记第④步）：大字例句 + 成分标注融在句子上方 + 挖空白框 ---- */
.ctx-sent{font-size:26px;font-weight:700;color:var(--text1,#222);line-height:1.8;margin:14px 0 6px}
.ctx-sent.big{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;column-gap:12px;row-gap:18px;
  font-size:32px;font-weight:800;line-height:1.5;margin:22px 0 6px}
@media (max-width:640px){.ctx-sent.big{font-size:22px;column-gap:8px;row-gap:14px}}
.ctx-blank{display:inline-block;min-width:120px;border-bottom:3px solid var(--brand,#2f6bff);color:var(--brand,#2f6bff);
  font-weight:800;text-align:center;padding:0 8px;letter-spacing:2px}
/* 嵌在句中的填空框：和短语默写一样的白框，不带字形提示 */
.ctx-input{border:2px solid #d8e2f2;outline:none;background:#fff;border-radius:12px;
  font:inherit;font-weight:800;color:var(--text1,#222);text-align:center;
  padding:2px 10px;margin:0 2px;min-width:9ch;box-sizing:content-box;
  box-shadow:0 2px 6px rgba(20,40,80,.05)}
.ctx-input:focus{border-color:var(--brand,#2f6bff);background:#f7faff}
.ctx-cn{font-size:20px;color:#5b6878;margin:4px 0 12px;line-height:1.6;font-weight:600}
.ctx-ans{color:#16a34a;font-weight:800;border-bottom:2px solid #16a34a;padding:0 2px}
/* ---- 句子成分标注（直接长在句子上方）：彩色成分名在上，连线向下接到该成分的原文 ---- */
.stx-seg{display:inline-flex;flex-direction:column;align-items:center}
.stx-seg-role{font-size:14px;font-weight:800;line-height:1.3;padding:1px 10px;border-radius:999px;margin-bottom:2px;white-space:nowrap}
.stx-seg-line{display:block;width:2px;height:10px;background:#cfd8ea;border-radius:2px}
.stx-seg-line.none{background:transparent}
.stx-seg-text{color:var(--text1,#222);white-space:nowrap}
.stx-seg-role.r-主语{color:#16a34a;background:#e8f8ef}
.stx-seg-role.r-谓语{color:#2f6bff;background:#e8f1ff}
.stx-seg-role.r-系动词{color:#0ea5e9;background:#e5f6fd}
.stx-seg-role.r-表语{color:#f79009;background:#fff4e5}
.stx-seg-role.r-宾语{color:#9333ea;background:#f3ecff}
.stx-seg-role.r-定语{color:#0d9488;background:#e6f7f5}
.stx-seg-role.r-状语{color:#db2777;background:#ffeef5}
.stx-seg-role.r-补语{color:#b45309;background:#fdf1df}
.stx-seg-role.r-其他{color:#64748b;background:#eef1f6}
@media (max-width:640px){.stx-seg-role{font-size:12px;padding:1px 7px}.stx-seg-line{height:7px}}
/* 连词成句：中文意思加大加粗 */
.wq-note.cn-big{font-size:20px;font-weight:600;color:var(--text1,#222);line-height:1.6}
/* ---- 速记：四步学习流（箭头彩块样式：学习 / 记忆 / 消消乐 / 默写） ---- */
.wt-steps{display:flex;margin-bottom:16px}
.wt-step{position:relative;flex:1;display:flex;align-items:center;justify-content:center;gap:9px;
  background:var(--st-bg,#eef2f8);color:var(--st-fg,#44506b);cursor:pointer;user-select:none;
  padding:16px 30px 16px 36px;font-size:20px;font-weight:700;transition:filter .15s,opacity .15s;
  clip-path:polygon(0 0,calc(100% - 24px) 0,100% 50%,calc(100% - 24px) 100%,0 100%,24px 50%);
  margin-left:-14px}
.wt-step:first-child{margin-left:0;clip-path:polygon(0 0,calc(100% - 24px) 0,100% 50%,calc(100% - 24px) 100%,0 100%)}
.wt-step:nth-child(4n+1){--st-bg:#FDEBE7;--st-fg:#993C1D}
.wt-step:nth-child(4n+2){--st-bg:#FAEEDA;--st-fg:#854F0B}
.wt-step:nth-child(4n+3){--st-bg:#EEEDFE;--st-fg:#534AB7}
.wt-step:nth-child(4n+4){--st-bg:#E1F5EE;--st-fg:#0F6E56}
.wt-step i{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.78);color:var(--st-fg,#44506b);font-style:normal;font-size:14px;font-weight:700;flex:none}
.wt-step .wt-step-lock{font-style:normal;font-size:13px;margin-left:2px}
.wt-step:hover{filter:brightness(.96)}
.wt-step.on{filter:brightness(.9) saturate(1.25)}
.wt-step.on i{background:var(--st-fg,#2f6bff);color:#fff}
.wt-step.past span::before{content:'✓ '}
.wt-step.past i{background:var(--st-fg);color:#fff}
.wt-step.lock{opacity:.42;filter:grayscale(.55);cursor:not-allowed}
.wt-step.lock:hover{filter:grayscale(.55)}
/* 学习流程提示条（先做什么再做什么）：放大加醒目 */
.wt-flow{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 14px;padding:14px 20px;
  border:2px dashed #9db9ff;border-radius:12px;background:#f3f7ff;color:#2c4a8a;font-size:18px;font-weight:600}
.wt-flow b{color:#2f6bff;font-size:20px;margin:0 2px}
.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:13px;padding:10px 12px 10px 18px;margin-left:-6px;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%,10px 50%)}.wt-step:first-child{margin-left:0;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 50%,calc(100% - 10px) 100%,0 100%)}}

/* ================= 全屏学习舞台（勾选分组后的大弹窗，类似全屏视频） ================= */
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}
/* 语境填空接入字号三档（之前 .ctx-* 全是写死像素，导致 大/中/小 切了没反应）：
   句子用 --fs-sent，中文释义用 --fs-cn；填空框 .ctx-input 是 font:inherit，自动跟句子缩放 */
body.wt-stage{--fs-sent:40px;--fs-cn:26px}
body.wt-stage.wt-fs-mid{--fs-sent:31px;--fs-cn:21px}
body.wt-stage.wt-fs-small{--fs-sent:24px;--fs-cn:17px}
body.wt-stage .wt-root .ctx-sent.big{font-size:var(--fs-sent);row-gap:20px}
body.wt-stage .wt-root .ctx-cn{font-size:var(--fs-cn);font-weight:700;color:#33445c}
body.wt-stage .wt-root .stx-seg-role{font-size:calc(var(--fs-sent) * .4);padding:2px 12px}
body.wt-stage .wt-root .stx-seg-line{height:calc(var(--fs-sent) * .3)}
body.wt-stage .wt-root .ctx-input{min-width:9ch}

/* 舞台右上角：字号 大/中/小 + 退出 */
.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:28px 8px 12px;text-align:center;font-size:22px;font-weight:700;color:#2f6bff;letter-spacing:2px}
.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:48px;padding:0 28px;border:2px solid var(--line);border-radius:14px;background:#fff;color:var(--text2);font-size:17px;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)}
.rd-chip.done{border-color:#34c77b;background:#e9f8f0;color:#17945a}
.rd-chip.done.on{background:#34c77b;border-color:#34c77b;color:#fff;box-shadow:0 2px 8px rgba(52,199,123,.3)}
body[data-theme="dark"] .rd-chip.done,body[data-theme="night"] .rd-chip.done{background:#1f4530;border-color:#34c77b;color:#8ff0b8}
body[data-theme="dark"] .rd-chip.done.on,body[data-theme="night"] .rd-chip.done.on{background:#34c77b;border-color:#34c77b;color:#fff}
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);
  }
}

/* ============================================================
 * 词汇训练 / 语感训练：内容区左侧模块导航
 * 顶部胶囊 = 三大模块（词汇训练/语感训练/指法练习），
 * 模块内小功能（单词速记…）收进内容区左边的 .wt-sidenav。
 * ============================================================ */
.st-layout .st-content.wt-fluid{max-width:none!important}   /* 词汇页解除 1320/1280 限宽，内容自适应整屏 */
.wt-layout{display:flex;gap:14px;align-items:flex-start}
.wt-sidenav{
  width:232px;flex-shrink:0;background:#fff;border:1px solid #e8eef6;border-radius:16px;
  padding:12px 12px 14px;position:sticky;top:0;box-shadow:0 8px 24px rgba(15,23,42,.05);
}
.wt-side-bar{display:flex;justify-content:flex-end;padding:0 2px 10px}
.wt-side-fold,.wt-side-unfold{
  width:38px;height:38px;border-radius:12px;border:1.5px solid #a7c3f8;background:#eef4ff;color:#2457d6;
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:19px;font-weight:700;
  box-shadow:0 3px 10px rgba(37,99,235,.16);transition:.15s;
}
.wt-side-fold:hover,.wt-side-unfold:hover{background:#2457d6;border-color:#2457d6;color:#fff;box-shadow:0 4px 14px rgba(37,99,235,.3)}
.wt-side-unfold{flex-shrink:0;margin-top:2px}
.wt-sidenav a{display:flex;align-items:center;gap:12px;padding:17px 14px;border-radius:12px;
  font-size:16px;font-weight:500;color:#3a4a63;cursor:pointer;margin-bottom:3px;transition:.15s}
.wt-sidenav a .ai{font-size:18px;color:#7c8aa5}
.wt-side-ic{width:32px;height:32px;border-radius:9px;flex-shrink:0;display:block;object-fit:cover;
  box-shadow:0 2px 6px rgba(37,99,235,.22)}
.wt-sidenav a:hover{background:#f5f8ff;color:#2457d6}
.wt-sidenav a.on{background:#eaf1ff;color:#2457d6;font-weight:700}
.wt-sidenav a.on .ai{color:#2457d6}
.wt-layout .words-pane{flex:1;min-width:0}
/* 全屏学习舞台：隐藏侧边导航，内容恢复独占 */
body.wt-stage .wt-layout{display:block}
body.wt-stage .wt-sidenav{display:none}
/* 窄屏：侧导航变横向胶囊条 */
@media (max-width:920px){
  .wt-layout{flex-direction:column}
  .wt-sidenav{position:static;width:auto;display:flex;flex-wrap:wrap;align-items:center;gap:2px}
  .wt-side-bar{width:100%;justify-content:flex-end}
  .wt-sidenav a{margin-bottom:0}
  .wt-layout .words-pane{width:100%}
  .wt-side-unfold{width:100%;margin-bottom:8px}
}
/* 主题适配 */
body[data-theme] .wt-sidenav{background:var(--card,#fff);border-color:var(--line);box-shadow:0 8px 24px var(--t-sh,rgba(15,23,42,.05))}
body[data-theme] .wt-sidenav a{color:var(--text2)}
body[data-theme] .wt-sidenav a .ai{color:var(--text3)}
body[data-theme] .wt-sidenav a:hover{background:var(--t-soft,#f5f8ff);color:var(--brand)}
body[data-theme] .wt-sidenav a.on{background:var(--brand-l,#eaf1ff);color:var(--brand)}
body[data-theme] .wt-sidenav a.on .ai{color:var(--brand)}
body[data-theme] .wt-side-fold,body[data-theme] .wt-side-unfold{background:var(--brand-l,#eef4ff);border-color:var(--brand,#2457d6);color:var(--brand,#2457d6)}
body[data-theme] .wt-side-fold:hover,body[data-theme] .wt-side-unfold:hover{background:var(--brand,#2457d6);color:#fff}

/* ==================================================================
 * 20261024 批量更新：
 *  ① 全站固定视口（整页不滚动，内容区内部滚动）
 *  ② 统计信息内联头部 / 错误出处标签 / 复习中心（SM-2）
 *  ③ 记忆学习表情按钮 / 连连看碰撞消除
 *  ④ 顶部标签 + 左侧栏 AI 图标
 * ================================================================== */

/* ---------- ① 全站固定视口 ---------- */
html,body{height:100%}
body{overflow:hidden}
.st-layout{height:100vh;overflow:hidden}
.st-main{height:100vh;display:flex;flex-direction:column;overflow:hidden}
.st-top{flex:none}
.st-layout .st-content{flex:1 1 auto;min-height:0;overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:#c9d6ee transparent}
.st-layout .st-content::-webkit-scrollbar{width:8px}
.st-layout .st-content::-webkit-scrollbar-thumb{background:#c9d6ee;border-radius:4px}
/* 全屏学习舞台：#view 同时是 .st-content 和 .wt-root（fixed 全屏覆盖层），
   舞台滚动就靠 .wt-root 的 overflow-y:auto（见 1132 行）。
   ⚠️ 这里绝不能设 overflow:hidden——特异性更高会把舞台自己的滚动条杀掉，
   导致连连看等超高内容被裁掉且无法滚动（20261024 连连看 bug 根因）。 */
body.wt-stage .st-layout .st-content{padding-bottom:90px}
/* 窄屏底部导航模式：给底部导航留空间 */
@media (max-width:760px){
  .st-layout .st-content{padding-bottom:96px!important}
}

/* ---------- ② 头部统计内联 + 错误出处 + 复习中心 ---------- */
.wt-inline-stats{font-size:13px;color:#64748b;margin-right:auto;padding-right:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wt-inline-stats b{color:#2457d6;font-weight:700}
.wt-inline-stats b.g{color:#0e9f5f}.wt-inline-stats b.o{color:#c77700}.wt-inline-stats b.r{color:#e0343f}
.wt-wrong-n,.wt-wwrong-n,.wt-review-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-src{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;
  background:#fff4e6;color:#b45309;font-size:12px;font-weight:600;border:1px solid #fcd9a8}
/* 复习中心弹窗 */
.wt-rv-hero{text-align:center;padding:6px 0 2px}
.wt-rv-go{width:auto;padding:0 34px;font-size:16px}
.wt-rv-go[disabled]{opacity:.5;cursor:not-allowed}
.wt-rv-hero-tip{margin-top:8px;font-size:12.5px;color:#94a3b8}
.wt-rv-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0 4px}
.wt-rv-card{background:#f6f9ff;border:1px solid #e3ebfa;border-radius:12px;padding:12px 8px;text-align:center}
.wt-rv-card b{display:block;font-size:22px;font-weight:800;color:#2457d6;line-height:1.2}
.wt-rv-card span{font-size:12px;color:#64748b}
.wt-rv-card.hot{background:#fff3f2;border-color:#ffd9d6}
.wt-rv-card.hot b{color:#e8483f}
.wt-rv-card.ok{background:#f0fbf5;border-color:#d3f2e0}
.wt-rv-card.ok b{color:#0e9f5f}
.wt-rv-sec{margin-top:14px}
.wt-rv-sec-t{font-size:13.5px;font-weight:700;color:#334155;margin-bottom:8px}
.wt-rv-sec-t em{font-style:normal;font-weight:500;font-size:12px;color:#94a3b8;margin-left:8px}
.wt-rv-heat{display:flex;flex-wrap:wrap;gap:5px;background:#f8fafc;border:1px solid #eef2f8;border-radius:10px;padding:10px}
.wt-rv-cell{width:18px;height:18px;border-radius:4px;display:block}
.wt-rv-cell.lv1{background:#dceafe}
.wt-rv-cell.lv2{background:#9cc2fb}
.wt-rv-cell.lv3{background:#5b8def}
.wt-rv-cell.lv4{background:#2457d6}
.wt-rv-due{max-height:220px;overflow-y:auto;border:1px solid #eef2f8;border-radius:10px}
.wt-rv-due-item{display:flex;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}
.wt-rv-due-item:last-child{border-bottom:none}
.wt-rv-word{font-weight:700;color:#1e293b;min-width:96px}
.wt-rv-mean{flex:1;color:#64748b;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wt-rv-when{font-size:12px;color:#e8483f;background:#fff3f2;border-radius:999px;padding:2px 10px;font-weight:600}
.wt-rv-none{margin-top:14px;text-align:center;color:#94a3b8;font-size:13px;background:#f8fafc;border-radius:10px;padding:14px}

/* ---------- ③ 记忆学习表情按钮（白色字体 + 卡通字重） ---------- */
.wq-emo-no,.wq-emo-yes{
  font-family:'Comic Sans MS','Segoe UI Emoji','幼圆','YouYuan','Microsoft YaHei',sans-serif;
  color:#fff!important;font-size:16.5px;font-weight:700;letter-spacing:1px;
  border:none;box-shadow:0 4px 12px rgba(15,23,42,.14);transition:.15s}
.wq-emo-no{background:linear-gradient(135deg,#ff8a8a,#f0525c)}
.wq-emo-no:hover{background:linear-gradient(135deg,#ff7373,#e63e49);transform:translateY(-1px)}
.wq-emo-yes{background:linear-gradient(135deg,#4ade80,#16a34a)}
.wq-emo-yes:hover{background:linear-gradient(135deg,#34d375,#128a3e);transform:translateY(-1px)}
/* ---------- ③ 连连看：字体缩小适配单屏 + 碰撞消除 ---------- */
.wq-match{gap:10px}
.wq-pair{padding:10px 10px;font-size:14px;border-radius:10px;line-height:1.35}
/* 相向碰撞 + 消失 */
.wq-pair.boom{animation:wq-boom-move .5s ease-out forwards}
@keyframes wq-boom-move{
  0%{transform:translateX(0) scale(1)}
  38%{transform:translateX(var(--bx,0)) scale(.94)}
  100%{transform:translateX(var(--bx,0)) scale(.2);opacity:0}
}
.wt-boom-layer{position:fixed;z-index:9500;width:0;height:0;pointer-events:none}
.wt-boom-layer i{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:50%;
  opacity:.95;animation:wq-boom-fly .62s cubic-bezier(.16,.84,.44,1) forwards}
@keyframes wq-boom-fly{
  0%{transform:translate(0,0) scale(1);opacity:.95}
  100%{transform:translate(var(--tx,0),var(--ty,0)) scale(.15);opacity:0}
}

/* ---------- ④ 顶部标签 + 左侧栏 AI 图标 ---------- */
.st-tabs a{display:inline-flex;align-items:center;gap:7px}
.st-tabs a .wt-tab-ic{width:22px;height:22px;border-radius:7px;object-fit:cover;flex-shrink:0;
  box-shadow:0 2px 6px rgba(37,99,235,.22)}
.st-subj a .st-rail-ic{width:26px;height:26px;border-radius:50%;object-fit:cover;flex-shrink:0;display:block;
  box-shadow:0 2px 6px rgba(37,99,235,.25)}
.st-subj a{display:flex;align-items:center}
.st-subj a .ic{display:grid;place-items:center}


/* ---------- ⑤ 页面标题条粘性固定（课程页/课程详情页：头部钉住，仅下方内容滚动） ---------- */
/* 学生端实际 padding 来自 ruoyi.css 的 rail 规则（22px 28px / 窄屏 14px 14px），top 与负 margin 按其补偿 */
.st-layout .st-content > .st-hello,
.st-layout .st-content > .st-backbar{
  position:sticky;top:-22px;z-index:40;
  margin:-22px -28px 20px;padding:22px 28px 14px;
  border-radius:0;border-left:none;border-right:none;border-top:none;
}
/* 标题条要有完整的「条」的样子：下边框 + 投影，滚动内容从底下穿过（背景色仍由主题控制） */
.st-layout .st-content > .st-hello,
.st-layout .st-content > .st-backbar{
  border-bottom:1px solid rgba(15,23,42,.09)!important;
  box-shadow:0 10px 22px rgba(15,23,42,.07)!important;
}
@media (max-width:640px){
  .st-layout .st-content > .st-hello,
  .st-layout .st-content > .st-backbar{top:-14px;margin:-14px -14px 16px;padding:14px 14px 10px}
}
/* 连连看：已配对消除的词块重渲染后保持隐藏（占位不塌陷） */
.wq-pair.gone{visibility:hidden!important;pointer-events:none}

/* ---------- ⑥ 错词本/错句本：列表区内部滚动 + 分页条 ---------- */
.modal .wt-ws-list{
  max-height:54vh;overflow-y:auto;padding-right:6px;
  overscroll-behavior:contain;
  scrollbar-width:thin;scrollbar-color:#c3d2ea transparent;
}
.modal .wt-ws-list::-webkit-scrollbar{width:8px}
.modal .wt-ws-list::-webkit-scrollbar-thumb{background:#c3d2ea;border-radius:8px}
.modal .wt-ws-list::-webkit-scrollbar-track{background:transparent}
.wt-pager{display:flex;align-items:center;gap:10px;margin-right:auto}
.wt-pg-btn{width:auto;padding:6px 16px;font-size:13.5px}
.wt-pg-btn:disabled{opacity:.4;cursor:not-allowed}
.wt-pg-info{font-size:13px;color:#6b7280;min-width:72px;text-align:center}

/* ---------- ⑦ 语音基础：字母乐园 / 音标训练 ---------- */
/* 默认科技皮肤把 .st-layout 文字染浅(#e8eef8)，老训练页靠 .wt-wrap 强制深色；
   字母乐园/音标训练直接用 .card，标题必须拉回正文字色，否则白底浅字看不清 */
.wt-fluid .wt-title{color:var(--text)}
.ph-letters{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;padding:8px 4px 4px}
.ph-letter{
  width:96px;height:70px;border:none;cursor:pointer;border-radius:14px;
  background:linear-gradient(180deg,#4f94ef,#2f6fd8);color:#fff;
  font-size:26px;font-style:italic;font-weight:700;letter-spacing:2px;
  box-shadow:0 4px 0 #2159b0,0 7px 16px rgba(33,89,176,.32);transition:transform .12s
}
.ph-letter:hover{transform:translateY(-3px)}
.ph-letter:active{transform:translateY(1px);box-shadow:0 2px 0 #2159b0}
.ph-big{text-align:center;font-size:52px;font-weight:800;color:#1d4e89;letter-spacing:2px;margin:6px 0 10px}
.ph-big .ph-cue{display:block;font-size:17px;font-weight:600;color:#2a6db5;margin-top:6px;letter-spacing:0}
.ph-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:12px}
.ph-stroke{text-align:center;margin:6px 0 12px}
.ph-stroke img{max-width:100%;max-height:44vh;border:1px solid var(--line);border-radius:12px;background:#fff}
.ph-video{margin:8px 0 12px}
.ph-res{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px}
.ph-res-t{font-size:13px;color:#5b7ea6;margin-bottom:6px}
.ph-res-item{display:block;padding:7px 10px;margin-bottom:6px;border-radius:8px;background:#f5faff;color:#1d4e89;text-decoration:none;font-size:14px}
.ph-res-item:hover{background:#eaf2ff}
.ph-sec{margin-bottom:16px}
.ph-sec-t{font-size:15px;font-weight:700;color:#1d4e89;margin-bottom:8px}
.ph-sec-t em{font-style:normal;font-weight:400;color:#7a8ca3;font-size:13px;margin-left:6px}
.ph-grp{margin-bottom:10px}
.ph-grp-t{font-size:13px;color:#5b7ea6;margin-bottom:6px}
.ph-ipa{display:flex;flex-wrap:wrap;gap:10px}
.ph-ipa-card{
  min-width:88px;border:1px solid #d9e6f7;border-radius:12px;background:#fff;cursor:pointer;
  padding:9px 12px;display:flex;flex-direction:column;gap:2px;transition:.15s
}
.ph-ipa-card b{font-size:17px;color:#1d4e89}
.ph-ipa-card span{font-size:12px;color:#7a8ca3}
.ph-ipa-card.v{background:#fff6f6;border-color:#ffd9d9}
.ph-ipa-card.v b{color:#c0392b}
.ph-ipa-card.c{background:#f4f9ff}
.ph-ipa-card:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(47,127,224,.14)}
.ph-samples{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.ph-sample{border:1px solid var(--line);border-radius:10px;background:#fff;padding:8px 12px;cursor:pointer;text-align:left;display:flex;flex-direction:column;gap:2px}
.ph-sample .ph-smp-w{font-size:16px;font-weight:700;color:#101828}
.ph-sample .ph-hl{color:#d93025}
.ph-sample .ph-smp-i{font-size:12px;color:#2a6db5}
.ph-sample .ph-smp-z{font-size:12px;color:#7a8ca3}
.ph-modes{display:flex;flex-direction:column;gap:10px}
.ph-mode{border:1px solid #d9e6f7;border-radius:12px;background:#fff;padding:12px 14px;cursor:pointer;text-align:left}
.ph-mode b{display:block;font-size:15px;color:#1d4e89;margin-bottom:3px}
.ph-mode span{font-size:13px;color:#7a8ca3}
.ph-mode:disabled{opacity:.5;cursor:not-allowed}
.ph-q-head{font-size:13px;color:#5b7ea6;margin-bottom:8px}
.ph-q{font-size:20px;font-weight:700;color:#101828;margin:6px 0 12px}
.ph-q-opts{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.ph-q-opt{border:1px solid #d9e6f7;background:#fff;border-radius:10px;padding:10px 18px;font-size:16px;cursor:pointer;min-width:120px}
.ph-q-opt.ok{background:#e8f8ee;border-color:#8fd6a8;color:#1e7a3c}
.ph-q-opt.bad{background:#fdecec;border-color:#f2a9a8;color:#b32b2b}
.ph-q-fb{margin-top:12px;font-size:15px}
.ph-wrong{margin-top:10px;text-align:left}
.ph-wrong-item{font-size:13px;padding:6px 0;border-bottom:1px dashed var(--line);color:#5b3b3b}

/* ---------- ⑧ 字母乐园（一比一复刻原型：天空底 + 白面板 + 底部 dock + 弹窗） ---------- */
.wt-ph-card{padding:0;overflow:hidden;position:relative}
.ph2-stage{
  max-width:960px;margin:0 auto;padding:14px 20px 96px;min-height:auto;
  background:linear-gradient(180deg,#aee1ff 0%,#d9efff 45%,#eaf6ff 100%);
  border-radius:18px;color:#1e3a5f;position:relative;
}
.ph2-view{display:none}
.ph2-view.active{display:block;animation:ph2fade .25s ease}
@keyframes ph2fade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.ph2-title{text-align:center;color:#2a6db5;font-size:18px;margin-bottom:22px}
.ph2-panel{
  background:rgba(255,255,255,.92);border-radius:22px;
  box-shadow:0 10px 30px rgba(60,120,190,.18);padding:22px 26px 26px;
}
.ph2-phead{text-align:center;color:#2a6db5;font-size:17px;padding-bottom:14px;
  border-bottom:1px solid #e3edf8;margin-bottom:18px}
/* 字母卡片：7/7/6/6 居中排布 */
.ph2-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;max-width:856px;margin:0 auto}
.ph2-card{
  width:106px;height:68px;border:none;cursor:pointer;
  background:linear-gradient(180deg,#4f94ef,#2f6fd8);color:#fff;
  font-size:30px;font-style:italic;font-weight:600;border-radius:14px;letter-spacing:3px;
  box-shadow:0 4px 0 #2159b0,0 7px 16px rgba(33,89,176,.35);
  transition:transform .12s ease,box-shadow .12s ease;
  display:flex;align-items:center;justify-content:center;
}
.ph2-card:hover{transform:translateY(-3px)}
.ph2-card:active{transform:translateY(1px);box-shadow:0 2px 0 #2159b0}
.ph2-card .small{font-size:19px;margin-left:3px;opacity:.95}
/* 底部 dock */
.ph2-dock{
  position:fixed;left:50%;transform:translateX(-50%);bottom:22px;
  display:flex;gap:8px;background:rgba(255,255,255,.95);border-radius:999px;
  padding:10px 18px;box-shadow:0 10px 26px rgba(60,120,190,.28);z-index:60;
}
.ph2-dock button{
  border:none;background:transparent;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:6px 20px;border-radius:16px;color:#2a6db5;font-size:13px;transition:background .15s;
}
.ph2-dock button:hover,.ph2-dock button.active{background:#e3f0ff}
.ph2-dock .ico{font-size:24px;line-height:1}
/* 弹窗 */
.modal.ph2{width:min(680px,96vw);max-width:min(680px,96vw)!important;border-radius:16px;overflow:hidden}
.modal.ph2 .ph2-mhead{
  background:linear-gradient(90deg,#4f94ef,#2f6fd8);color:#fff;
  padding:12px 18px;display:flex;align-items:center;justify-content:space-between;
}
.modal.ph2 .ph2-mtitle{font-size:16px;font-weight:600}
.modal.ph2 .close-x{
  border:none;background:rgba(255,255,255,.25);color:#fff;width:30px;height:30px;
  border-radius:50%;cursor:pointer;font-size:15px;line-height:1;
}
.ph2-mbody{padding:22px 26px 26px;position:relative}
.ph2-arrow{
  position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;
  border:none;border-radius:50%;cursor:pointer;z-index:5;
  background:linear-gradient(180deg,#ffd54d,#ffb824);color:#a05a00;
  font-size:24px;font-weight:bold;box-shadow:0 3px 0 #e09a12,0 5px 12px rgba(30,58,95,.25);
  display:flex;align-items:center;justify-content:center;transition:transform .12s;
}
.ph2-arrow:hover{transform:translateY(-50%) scale(1.08)}
.ph2-arrow:active{transform:translateY(-48%) scale(.97)}
.ph2-arrow.prev{left:10px}
.ph2-arrow.next{right:10px}
.ph2-minner{position:relative;padding:0 58px}
.ph2-cols{display:flex;gap:22px;align-items:stretch;flex-wrap:wrap;justify-content:center}
.ph2-col{flex:1;min-width:220px;text-align:center}
.ph2-colabel{color:#5b7ea6;font-size:14px;margin-bottom:10px}
.ph2-print{font-size:88px;color:#22364e;font-weight:600;line-height:1.2}
.ph2-print .lc{color:#22364e;font-size:72px}
.ph2-gif{display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px;overflow:hidden;min-height:150px}
.ph2-gif img{max-width:100%;max-height:150px;display:block}
.ph2-funcs{display:flex;gap:16px;justify-content:center;margin-top:24px;flex-wrap:wrap}
.ph2-fbtn{
  border:none;cursor:pointer;border-radius:14px;padding:13px 30px;font-size:16px;color:#fff;
  display:flex;align-items:center;gap:8px;transition:transform .12s;
}
.ph2-fbtn:hover{transform:translateY(-2px)}
.ph2-fbtn.listen{background:linear-gradient(180deg,#ffa257,#f0763a);box-shadow:0 4px 0 #cf5526}
.ph2-fbtn.write{background:linear-gradient(180deg,#59a3f5,#2f7fe0);box-shadow:0 4px 0 #2159b0}
.ph2-fbtn.back{background:#9db6d2;box-shadow:0 4px 0 #7d95b3}
.ph2-video{margin-top:18px}
.ph2-video video{width:100%;max-height:380px;border-radius:12px;background:#000}
.ph2-cap{text-align:center;color:#7d95b3;font-size:13px;margin-top:10px}
/* 字母歌封面卡片网格 */
.ph2-songgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;max-width:680px;margin:0 auto;padding:4px 2px}
.ph2-songcard{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:10px;background:#fff;border:1.5px solid #dfe9f7;border-radius:14px;padding:10px 10px 14px;cursor:pointer;transition:transform .15s, box-shadow .15s, border-color .15s;text-align:center}
.ph2-songcard:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(61,127,255,.16);border-color:#9dc0ff}
.ph2-songcover{position:relative;display:block;width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:linear-gradient(135deg,#dce9fb,#c3d9f7)}
.ph2-songcover img{width:100%;height:100%;object-fit:cover;display:block}
.ph2-songcover i{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:40px}
.ph2-songplay{position:absolute;top:52px;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;background:rgba(20,40,80,.62);color:#fff;font-size:18px;display:flex;align-items:center;justify-content:center;padding-left:4px;pointer-events:none}
.ph2-songname{font-size:17px;font-weight:700;color:#20406e;line-height:1.35;word-break:break-all}
@media (max-width:640px){.ph2-songgrid{grid-template-columns:1fr}.ph2-songplay{top:calc(50% - 24px)}}
.ph2-empty{
  margin-top:14px;padding:28px;text-align:center;color:#7d95b3;
  background:#f2f7fd;border-radius:12px;font-size:15px;
}
/* 听选练习 */
.ph2-qflex{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap;justify-content:center}
.ph2-qleft{display:flex;flex-direction:column;align-items:center;gap:14px;min-width:170px}
.ph2-speaker{
  width:88px;height:88px;border-radius:20px;border:none;cursor:pointer;
  background:linear-gradient(180deg,#ffa257,#f2703d);color:#fff;font-size:40px;
  box-shadow:0 6px 0 #cf5526,0 10px 18px rgba(207,85,38,.3);
}
.ph2-speaker:active{transform:translateY(2px)}
.ph2-qhint{color:#7d95b3;font-size:13px}
.ph2-qgrid{display:grid;grid-template-columns:repeat(6,84px);gap:10px;justify-content:center}
@media (max-width:900px){.ph2-qgrid{grid-template-columns:repeat(4,76px)}}
.ph2-cell{
  height:52px;border:none;cursor:pointer;border-radius:10px;
  background:linear-gradient(180deg,#4f94ef,#2f6fd8);color:#fff;
  font-size:22px;font-style:italic;font-weight:600;
  box-shadow:0 3px 0 #2159b0;transition:transform .1s;
}
.ph2-cell:active{transform:translateY(2px)}
.ph2-cell.correct{background:linear-gradient(180deg,#4cd07d,#2fa85a);box-shadow:0 3px 0 #1f7f43}
.ph2-cell.wrong{background:linear-gradient(180deg,#f2726f,#d5453f);box-shadow:0 3px 0 #a8322d;animation:ph2shake .3s}
@keyframes ph2shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.ph2-qstats{display:flex;justify-content:center;gap:40px;margin-top:22px;color:#4a6a8f;font-size:15px;flex-wrap:wrap}
.ph2-qstats b{color:#2a6db5}
/* 配套资料 */
.ph2-mat{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid #eef4fb}
.ph2-mat:last-child{border-bottom:none}
.ph2-mat-ic{font-size:30px}
.ph2-mat-info{flex:1;min-width:0}
.ph2-mat-name{font-size:15px;color:#22364e;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ph2-mat-meta{font-size:12px;color:#8aa2bd;margin-top:3px}
.ph2-mat-acts{display:flex;gap:8px}
.ph2-mini{border:none;cursor:pointer;border-radius:9px;padding:8px 16px;font-size:13px;color:#fff}
.ph2-mini.view{background:linear-gradient(180deg,#59a3f5,#2f7fe0)}
.ph2-mini.dl{background:linear-gradient(180deg,#4cd07d,#2fa85a)}

/* ==================== 音标训练（一比一复刻原型 chart/course/practice/res） ==================== */
.ip-stage{max-width:1060px;padding-bottom:118px}  /* 底部 dock 悬浮，留白让长表格能滚到其上方 */
.ip-panel{
  background:rgba(255,255,255,.94);border-radius:22px;
  box-shadow:0 10px 30px rgba(60,120,190,.18);padding:18px 22px 22px;color:#22364e;
}
.ip-phead{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px solid #e3edf8}
.ip-phead h2{font-size:18px;color:#2f7fe0;margin:0}
.ip-desc{font-size:13px;color:#7d95b3}
.ip-right{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ip-pbody{padding-top:14px}
.ip-seg{display:flex;gap:4px;background:#eef5fc;border-radius:999px;padding:3px}
.ip-seg button{border:none;background:transparent;color:#2f7fe0;padding:5px 14px;border-radius:999px;font-size:13px;cursor:pointer}
.ip-seg button.active{background:#fff;box-shadow:0 2px 6px rgba(60,120,190,.18);font-weight:600}
.ip-switch{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:#7d95b3;cursor:pointer;user-select:none}
.ip-switch input{accent-color:#2f7fe0;width:15px;height:15px}
.ip-note{font-size:13px;color:#7d95b3}
.ip-note b{color:#1d4e89}
/* 发音规则表（表格） */
.ip-twrap{overflow-x:auto}
.ipa-table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0;table-layout:fixed}
.ipa-table .ip-cat{width:74px;color:#fff;font-size:16px;font-weight:700;letter-spacing:.22em;padding:8px 4px;line-height:1.35;text-align:center;vertical-align:middle}
.ipa-table .ip-cat span{display:block;font-size:9.5px;letter-spacing:.14em;font-weight:600;opacity:.82;margin-top:4px}
.ipa-table .ip-cat.vowel{background:linear-gradient(160deg,#4f94ef,#2f7fe0)}
.ipa-table .ip-cat.consonant{background:linear-gradient(160deg,#6d7fd6,#4a55ab)}
.ipa-table .ip-sub{width:88px;background:#f5f9fd;font-size:12.5px;color:#35506b;font-weight:600;text-align:center;vertical-align:middle}
.ipa-table .ip-label{width:92px;background:#fafcfe;font-size:12px;color:#6b7c89;text-align:center;vertical-align:middle}
.ipa-table .ip-slot{padding:5px 5px;text-align:center;vertical-align:middle;background:#fff;border-right:1px solid #e1eaf3;border-bottom:1px solid #e1eaf3}
.ipa-table tr:first-child .ip-slot,.ipa-table tr:first-child .ip-sub,.ipa-table tr:first-child .ip-label{border-top:1px solid #e1eaf3}
.ipa-table .ip-sub,.ipa-table .ip-label{border-right:1px solid #e1eaf3;border-bottom:1px solid #e1eaf3}
.ip-chip{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:100%;min-width:56px;height:40px;padding:0 6px;border-radius:11px;
  background:#fff;border:1px solid #dce8f5;font-size:17px;font-weight:600;color:#22364e;
  cursor:pointer;transition:transform .12s,box-shadow .12s,background .12s,color .12s;
}
.ip-chip:hover{background:linear-gradient(180deg,#4f94ef,#2f7fe0);border-color:#2f7fe0;color:#fff;transform:translateY(-2px);box-shadow:0 4px 0 #2159b0,0 8px 14px rgba(33,89,176,.3)}
.ip-chip[data-type="consonant"]:hover{background:linear-gradient(180deg,#7f8ede,#5a66c4);border-color:#5a66c4;box-shadow:0 4px 0 #41499c,0 8px 14px rgba(65,73,156,.3)}
.ip-chip .dot{position:absolute;top:4px;right:5px;width:6px;height:6px;border-radius:50%;background:#ffb824;box-shadow:0 0 0 2px #fff}
/* 卡片视图 */
.ip-cards{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.ipa-card{
  position:relative;width:104px;height:72px;border:none;cursor:pointer;border-radius:14px;
  color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:linear-gradient(180deg,#4f94ef,#2f7fe0);
  box-shadow:0 4px 0 #2159b0,0 7px 16px rgba(33,89,176,.32);transition:transform .12s ease;
}
.ipa-card[data-type="consonant"]{background:linear-gradient(180deg,#7f8ede,#5a66c4);box-shadow:0 4px 0 #41499c,0 7px 16px rgba(65,73,156,.32)}
.ipa-card:hover{transform:translateY(-3px)}
.ipa-card:active{transform:translateY(1px);box-shadow:0 2px 0 #2159b0}
.ipa-card .sym{font-size:22px;font-weight:600;line-height:1.1}
.ipa-card .nm{font-size:11px;opacity:.92;margin-top:2px}
.ipa-card .dot{position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:#ffd54d;box-shadow:0 0 0 2px rgba(255,255,255,.55)}
.ip-foot{display:flex;gap:18px;flex-wrap:wrap;padding:14px 2px 4px;font-size:12.5px;color:#7d95b3}
.ip-dot{width:8px;height:8px;border-radius:50%;background:#ffb824;display:inline-block}
/* 系统课课程卡（原型 course-card 同款） */
.ip-coursegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:980px){.ip-coursegrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.ip-coursegrid{grid-template-columns:1fr}}
.ip-course{border:none;cursor:pointer;border-radius:18px;overflow:hidden;text-align:left;background:#fff;box-shadow:0 8px 20px rgba(60,120,190,.16);padding:0;transition:transform .15s;display:block}
.ip-course:hover{transform:translateY(-3px)}
.ip-course-cover{position:relative;height:108px;padding:14px 16px;background:linear-gradient(135deg,var(--c1,#2f7fe0),var(--c2,#7ec8ff));display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;display:flex}
.ip-course-cover::after{content:"";position:absolute;right:-30px;bottom:-42px;width:130px;height:130px;border-radius:50%;background:rgba(255,255,255,.16)}
.ip-course-no{position:relative;font-size:28px;font-weight:700;color:#fff;line-height:1}
.ip-course-badges{position:relative;display:flex;gap:8px}
.ip-course-badges span{font-size:11px;color:#fff;background:rgba(255,255,255,.24);padding:2px 9px;border-radius:999px}
.ip-course-play{position:absolute;right:14px;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.9);color:#2f7fe0;display:grid;place-items:center;font-size:15px}
.ip-course-body{padding:12px 16px 16px;display:block}
.ip-course-body h3{font-size:15px;color:#22364e;margin:0}
.ip-course-state{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#2fa85a;margin-top:8px}
.ip-course-state i{width:6px;height:6px;border-radius:50%;background:currentColor}
/* 训练场（原型 adv-menu 同款） */
.ip-adv{text-align:center}
.ip-welcome h3{font-size:20px;color:#1d4e89;margin:0}
.ip-welcome p{font-size:13px;color:#7d95b3;margin:4px 0 0}
.ip-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;max-width:880px;margin:16px auto}
@media (max-width:820px){.ip-modes{grid-template-columns:1fr}}
.ip-mode{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #dce8f5;background:#fff;border-radius:16px;padding:14px 16px;cursor:pointer;transition:transform .12s,box-shadow .12s;box-shadow:0 4px 12px rgba(60,120,190,.1)}
.ip-mode:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 8px 18px rgba(60,120,190,.18)}
.ip-mode:disabled{opacity:.45;cursor:default}
.ip-mode-ic{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;background:#eef5fc;flex:none}
.ip-mode.m-listen .ip-mode-ic{background:#fff0e6}
.ip-mode.m-sort .ip-mode-ic{background:#e9f8f6}
.ip-mode-b{display:flex;flex-direction:column;min-width:0}
.ip-mode-b b{font-size:15px;color:#22364e}
.ip-mode-b em{font-style:normal;font-size:12px;color:#7d95b3;margin-top:2px}
.ip-mode-badge{margin-left:auto;font-size:11px;padding:2px 8px;border-radius:999px;background:#eef5fc;color:#2f7fe0;flex:none}
.ip-mode.m-listen .ip-mode-badge{background:#fff0e6;color:#f0763a}
.ip-mode.m-sort .ip-mode-badge{background:#e9f8f6;color:#2b8f85}
.ip-tip{font-size:12.5px;color:#7d95b3;max-width:520px;margin:0 auto}
/* 音标卡弹窗（原型 phonemeModal 同款） */
.modal.ipm{width:min(920px,96vw);max-width:min(920px,96vw)!important;padding:0;overflow:hidden;display:flex;flex-direction:column;max-height:92vh;color:#22364e;text-align:left}
.ipm-head{background:linear-gradient(90deg,#4f94ef,#2f7fe0);color:#fff;padding:12px 18px;display:flex;align-items:center;gap:12px;flex:none}
.ipm-head .ipm-title{font-size:16px;font-weight:600}
.ipm-tags{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}
.ipm-tags span{font-size:11.5px;background:rgba(255,255,255,.22);padding:2px 10px;border-radius:999px}
.ipm-close{border:none;background:rgba(255,255,255,.25);color:#fff;width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:15px;flex:none}
.ipm-body{padding:20px 24px 24px;overflow:auto;position:relative;flex:1;min-height:0}
.ipm-body::-webkit-scrollbar{width:8px}
.ipm-body::-webkit-scrollbar-thumb{background:#d6e4f5;border-radius:8px}
.ip-arrow{
  position:absolute;top:170px;width:44px;height:44px;border:none;border-radius:50%;cursor:pointer;
  background:linear-gradient(180deg,#ffd54d,#ffb824);color:#a05a00;font-size:24px;font-weight:700;z-index:5;
  box-shadow:0 3px 0 #e09a12,0 5px 12px rgba(30,58,95,.25);display:flex;align-items:center;justify-content:center;transition:transform .12s;
}
.ip-arrow:hover{transform:scale(1.08)}
.ip-arrow.prev{left:8px}
.ip-arrow.next{right:8px}
.card-cols{display:flex;gap:22px;align-items:stretch;flex-wrap:wrap;margin:2px 0 10px}
.card-col{flex:1;min-width:240px;display:flex}
.muse-box{
  cursor:pointer;position:relative;transition:box-shadow .16s,border-color .16s;
  border-radius:16px;padding:16px;text-align:center;
  background:linear-gradient(160deg,#eef6ff,#dbeaff);border:1px solid #d3e4f8;width:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
}
.muse-box:hover{border-color:#2f7fe0;box-shadow:0 8px 22px rgba(60,120,190,.18)}
.muse-box .m-play{position:absolute;top:10px;right:12px;font-size:15px;opacity:.45;transition:opacity .15s}
.muse-box:hover .m-play{opacity:.95}
.muse-box .m-cue{display:block;font-size:14px;color:#35506b;font-weight:600}
.muse-box .m-sym{display:block;font-size:52px;font-weight:700;color:#1d4e89;line-height:1.15}
.muse-box .m-emoji{font-size:34px}
.muse-box .m-name{display:inline-block;margin-top:8px;padding:5px 16px;border-radius:999px;background:#fff;color:#2f7fe0;font-size:14px;font-weight:600;box-shadow:0 3px 8px rgba(60,120,190,.16)}
.tip-box{background:#f5f9fd;border:1px solid #e3edf8;border-radius:14px;padding:14px 16px;width:100%}
.tip-box .t-label{font-size:13px;color:#7d95b3;margin-bottom:6px}
.tip-box p{font-size:13.5px;color:#35506b;line-height:1.75;margin:0}
.tip-box .spell{margin-top:10px;font-size:13px;color:#22364e}
.tip-box .spell b{color:#2f7fe0}
.video-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:26px}
@media (max-width:760px){.video-grid{grid-template-columns:1fr}}
.video-cell{background:#fff;border:1px solid #e3edf8;border-radius:14px;padding:12px}
.video-cell .vc-head{display:flex;align-items:center;gap:8px;font-size:13.5px;color:#2f7fe0;font-weight:600;margin-bottom:10px}
.video-cell video{width:100%;height:210px;border-radius:10px;background:#000;border:0}
.ip-vempty{min-height:150px;border-radius:12px;border:1.5px dashed #c9dcf2;background:#f7fbff;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#8aa2bd;font-size:13.5px;line-height:1.8}
.ip-vempty small{font-size:11.5px;opacity:.8}
.section-label{display:flex;align-items:center;gap:10px;margin:20px 0 10px;font-size:14px;color:#2f7fe0;font-weight:600}
.section-label::after{content:"";flex:1;height:1px;background:#e3edf8}
.word-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:700px){.word-grid{grid-template-columns:1fr}}
.word-card{border:1px solid #e3edf8;cursor:pointer;border-radius:14px;padding:14px 12px;text-align:center;background:#fff;box-shadow:0 4px 12px rgba(60,120,190,.1);transition:transform .12s}
.word-card:hover{transform:translateY(-2px);border-color:#4f94ef}
.word-card .wc-play{font-size:15px}
.word-card .wc-word{font-size:21px;font-weight:600;color:#1a1a1a;margin-top:2px}
.word-card .wc-word .hl{color:#d5453f;font-weight:700}
.word-card .wc-ipa{font-size:13px;color:#7d95b3;margin-top:3px}
.word-card .wc-zh{font-size:12px;color:#6b7c89;margin-top:2px}
.sim-row{display:flex;gap:10px;flex-wrap:wrap}
.sim-chip{border:1px solid #dce8f5;background:#fff;border-radius:999px;padding:6px 14px;font-size:13px;color:#22364e;cursor:pointer}
.sim-chip b{color:#2f7fe0;margin-right:6px}
.sim-chip:hover{border-color:#2f7fe0;background:#f2f8ff}
/* ==================== 音标系统课：课程卡网格 + 课程详情 ==================== */
.ip-cgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (min-width:980px){.ip-cgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ip-ccard{
  display:flex;flex-direction:column;align-items:stretch;text-align:left;cursor:pointer;
  background:linear-gradient(150deg,#f2fbf7,#eaf6f0 55%,#fff);border:1px solid #e2efe7;border-radius:16px;
  padding:14px 16px 12px;box-shadow:0 6px 16px rgba(40,90,120,.08);transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden;
}
.ip-ccard:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(40,90,120,.14)}
.ip-ccard::after{content:"";position:absolute;right:-26px;bottom:-38px;width:110px;height:110px;border-radius:50%;background:linear-gradient(160deg,var(--c1,#1f8c82),var(--c2,#7ed0c4));opacity:.14}
/* 课程封面（管理端上传 / AI 生成）：铺在卡片顶部 16:9 */
.ip-cc-img{display:block;margin:-14px -16px 10px;position:relative;z-index:1}
.ip-cc-img img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:16px 16px 0 0}
.ip-ccard.has-img::after{display:none}
.ip-ccard.has-img .ip-cc-top b{font-size:15px}
.ip-cc-top{display:flex;align-items:flex-start;gap:8px}
.ip-cc-top b{font-size:15.5px;color:#22364e;line-height:1.4;flex:1}
.ip-cc-badge{flex:none;font-size:10.5px;color:#fff;background:linear-gradient(135deg,var(--c1,#1f8c82),var(--c2,#7ed0c4));padding:2px 8px;border-radius:999px;font-weight:600}
.ip-cc-sub{font-size:12px;color:#7d95b3;margin-top:4px;display:block}
.ip-cc-foot{display:flex;align-items:center;gap:10px;margin-top:12px;position:relative;z-index:1}
.ip-cc-progwrap{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.ip-cc-proglabel{font-size:11.5px;color:#8aa2bd;flex:none}
.ip-cc-prog{flex:1;height:5px;border-radius:99px;background:#e2efe7;overflow:hidden;max-width:110px}
.ip-cc-prog i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--c1,#1f8c82),var(--c2,#7ed0c4));transition:width .3s}
.ip-cc-progwrap b{font-size:12px;color:#35506b;flex:none}
.ip-cc-enter{flex:none;font-size:12px;color:#fff;background:linear-gradient(135deg,var(--c1,#1f8c82),var(--c2,#7ed0c4));padding:5px 13px;border-radius:999px;font-weight:600;box-shadow:0 3px 8px rgba(31,140,130,.28)}
/* 课程详情：返回条 + 分类导航 + 课时卡片 */
.ip-cback{display:flex;align-items:center;gap:14px;padding:4px 0 12px;border-bottom:1px solid #e3edf8}
.ip-cbackbtn{border:1px solid #dce8f5;background:#fff;color:#35506b;border-radius:10px;padding:7px 14px;font-size:13px;cursor:pointer;flex:none}
.ip-cbackbtn:hover{border-color:#2f7fe0;color:#2f7fe0}
.ip-cback-t{flex:1;min-width:0}
.ip-cback-t b{display:block;font-size:16px;color:#22364e}
.ip-cback-t em{font-style:normal;font-size:12px;color:#7d95b3;display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ip-cprog{flex:none;font-size:12.5px;color:#7d95b3}
.ip-cprog b{color:#2f7fe0}
.ip-cdocs-btn{flex:none;display:inline-flex;align-items:center;gap:6px;border:1px solid #bfe0ff;background:linear-gradient(135deg,#eaf4ff,#dcebff);color:#2f7fe0;border-radius:12px;padding:8px 15px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.ip-cdocs-btn:hover{background:#2f7fe0;border-color:#2f7fe0;color:#fff;box-shadow:0 4px 12px rgba(47,127,224,.3)}
.ip-doclist{max-height:56vh;overflow:auto}
.ip-docrow{display:flex;align-items:center;gap:13px;padding:13px 16px;border-bottom:1px solid #eef4fb}
.ip-docrow:last-child{border-bottom:none}
.ip-doc-ic{flex:none;width:42px;height:42px;border-radius:11px;background:linear-gradient(135deg,#eaf4ff,#dcebff);display:flex;align-items:center;justify-content:center;font-size:21px}
.ip-doc-info{flex:1;min-width:0}
.ip-doc-info b{display:block;font-size:14.5px;color:#22364e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ip-doc-info em{font-style:normal;display:block;font-size:12px;color:#8aa2bd;margin-top:3px}
.ip-doc-dl{flex:none;display:inline-flex;align-items:center;gap:5px;border:1px solid #bfe0ff;background:#fff;color:#2f7fe0;border-radius:9px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:none}
.ip-doc-dl:hover{background:#2f7fe0;border-color:#2f7fe0;color:#fff}
.ip-cwrap{display:flex;gap:16px;align-items:flex-start;margin-top:2px}
.ip-cate{width:150px;flex:none;display:flex;flex-direction:column;gap:8px}
.ip-cate-btn{display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid #e3edf8;background:#fff;color:#35506b;border-radius:12px;padding:11px 13px;font-size:13.5px;cursor:pointer;text-align:left}
.ip-cate-btn span{font-size:11.5px;color:#8aa2bd}
.ip-cate-btn:hover{border-color:#7fb2ef}
.ip-cate-btn.active{background:#2f7fe0;border-color:#2f7fe0;color:#fff;box-shadow:0 4px 12px rgba(47,127,224,.3)}
.ip-cate-btn.active span{color:rgba(255,255,255,.85)}
.ip-citems{flex:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-content:start}
@media (max-width:820px){.ip-citems{grid-template-columns:1fr}.ip-cate{width:120px}}
.ip-citem{
  display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;
  border:1px solid #e3edf8;background:#fff;border-radius:14px;padding:12px 14px;
  box-shadow:0 3px 10px rgba(60,120,190,.08);transition:transform .12s,border-color .12s;
}
.ip-citem:hover{transform:translateY(-2px);border-color:#4f94ef}
.ip-ci-no{flex:none;width:30px;height:30px;border-radius:9px;background:#eef5fc;color:#2f7fe0;font-size:12.5px;font-weight:700;display:grid;place-items:center}
.ip-ci-b{flex:1;min-width:0}
.ip-ci-b b{display:block;font-size:14px;color:#22364e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ip-ci-b em{font-style:normal;font-size:11.5px;color:#a0b4c9;margin-top:3px;display:block}
.ip-ci-b em.ok{color:#2fa85a}
.ip-ci-play{flex:none;font-size:12.5px;font-weight:600;color:#fff;background:#2f7fe0;padding:6px 13px;border-radius:999px;box-shadow:0 3px 8px rgba(47,127,224,.3)}
/* 课时配套讲义下载 */
.ip-ci-docs{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ip-ci-doc{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;color:#2f7fe0;background:#eef5fc;border:1px solid #d6e6f8;border-radius:999px;padding:3px 10px;text-decoration:none;white-space:nowrap;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.ip-ci-doc:hover{background:#2f7fe0;color:#fff;border-color:#2f7fe0}
/* 训练场：题目中间的大喇叭按钮 */
.ph-q-say{display:flex;justify-content:center;margin:6px 0 14px}
.ph-saybtn{
  width:68px;height:68px;border-radius:50%;border:none;cursor:pointer;font-size:27px;color:#fff;
  background:linear-gradient(180deg,#4f94ef,#2f7fe0);box-shadow:0 5px 0 #2159b0,0 10px 20px rgba(33,89,176,.32);
  display:grid;place-items:center;transition:transform .12s,box-shadow .12s;
}
.ph-saybtn:hover{transform:scale(1.06)}
.ph-saybtn:active{transform:translateY(3px);box-shadow:0 2px 0 #2159b0}

/* ================= 学习概况面板（词书+单元选择入框，替代旧头部横条 20261026） ================= */
.wt-panel{display:flex;flex-direction:column;align-items:stretch;gap:14px;padding:18px 22px}
.wt-panel-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.wt-panel-book{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wt-panel-lb{font-size:13px;font-weight:700;color:var(--text2);white-space:nowrap}
.wt-panel-btns{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.wt-panel-units{display:flex;align-items:stretch;gap:12px;flex-wrap:wrap}
.wt-panel-lb-u{align-self:center}
.wt-uchips{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;flex:1;min-width:300px}
.wt-uchips .wt-uchip{justify-content:center;min-width:0;width:100%}
.wt-uchip-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wt-uchip{height:40px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line);background:#fff;
  font-size:13.5px;font-weight:600;color:var(--text2);cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.15s}
/* 单元完成联动：该单元所有分组学完 → 单元框变绿 */
.wt-uchip.utdone{border-color:#34c77b;background:#e9f8f0;color:#17945a}
.wt-uchip.utdone .wt-uchip-t{color:#17945a}
.wt-uchip.utdone i{color:#3fae77}
.wt-uchip.utdone.on{border-color:#34c77b;background:#34c77b;color:#fff}
.wt-uchip.utdone.on .wt-uchip-t,.wt-uchip.utdone.on i{color:#fff}
body[data-theme] .wt-uchip.utdone{background:#e9f8f0;border-color:#34c77b;color:#17945a}
body[data-theme] .wt-uchip.utdone.on{background:#34c77b;color:#fff}
/* 「全部单元」卡片：自动拉伸与整个单元网格同高（两排=顶对第一排顶、底对第二排底），两行文字上下左右居中、中等圆角 */
.wt-uchip-all{flex:none;min-width:96px;height:auto;min-height:40px;padding:0 10px;border-radius:10px;
  flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:13px;line-height:1.25}
.wt-uchip i{font-style:normal;font-size:12px;font-weight:700;color:var(--text3)}
.wt-uchip-all i{font-size:11px;font-weight:600}
.wt-uchip:hover{border-color:#9db9ff;color:var(--text)}
.wt-uchip.on{background:linear-gradient(135deg,var(--brand),#6b8cff);border-color:transparent;color:#fff;box-shadow:0 3px 10px rgba(47,107,255,.25)}
.wt-uchip.on i{color:rgba(255,255,255,.9)}
.wt-panel-stats{font-size:13px;color:var(--text2);padding-top:2px}
.wt-panel-stats b{color:#2457d6;font-weight:700}
.wt-panel-stats b.g{color:#0e9f5f}.wt-panel-stats b.o{color:#c77700}.wt-panel-stats b.r{color:#e0343f}
/* 学习流程提示条（面板正下方） */
.wt-flow{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text2);
  background:#f4f8ff;border:1px dashed #c9d9f5;border-radius:12px;padding:9px 16px}
.wt-flow .ai{font-size:16px;color:var(--brand);flex:none}
.wt-flow b{color:var(--brand);font-weight:700}
/* 主题适配 */
body[data-theme] .wt-uchip{background:var(--card);color:var(--text2);border-color:var(--line)}
body[data-theme] .wt-uchip i{color:var(--text3)}
body[data-theme] .wt-uchip.on{background:linear-gradient(135deg,var(--brand),var(--brand-d));border-color:transparent;color:#fff}
body[data-theme] .wt-uchip.on i{color:rgba(255,255,255,.9)}
body[data-theme] .wt-flow{background:var(--t-soft);border-color:var(--line)}
body[data-theme] .wt-flow b{color:var(--brand)}
body[data-theme] .wt-panel-stats b{color:var(--brand)}

/* ================= 错词本：本日/历史页签 + 历史单元分组（20261026） ================= */
.wt-tabs{display:flex;gap:8px;margin-bottom:14px}
.wt-tab{height:36px;padding:0 18px;border-radius:999px;border:1.5px solid var(--line);background:#fff;
  font-size:14px;font-weight:600;color:var(--text2);cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.15s}
.wt-tab i{font-style:normal;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#eef2f8;
  color:var(--text2);font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.wt-tab.on{border-color:var(--brand);color:var(--brand);background:var(--brand-l)}
.wt-tab.on i{background:var(--brand);color:#fff}
.wt-err-n{display:inline-flex;align-items:center;font-size:12px;font-weight:700;color:#e8483f;background:#fff3f2;
  border-radius:999px;padding:3px 10px;white-space:nowrap}
.wt-ww-old-tip{margin-top:8px;font-size:12.5px;color:var(--text3)}
.wt-hist-g{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.wt-hist-g + .wt-hist-g{margin-top:10px}
.wt-hist-h{display:flex;align-items:center;justify-content:space-between;font-size:13.5px;font-weight:700;color:var(--text);
  background:#f6f8fc;border-bottom:1px solid var(--line);padding:9px 14px}
.wt-hist-h span{font-size:12px;font-weight:500;color:var(--text3)}
.wt-hist-row{display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid #f1f5f9}
.wt-hist-row:last-child{border-bottom:none}
.wt-hist-w{font-weight:700;color:var(--text);min-width:96px}
.wt-hist-m{flex:1;color:var(--text3);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wt-hist-d{font-size:12px;color:var(--text3);white-space:nowrap}
/* 主题适配 */
body[data-theme] .wt-tab{background:var(--card);color:var(--text2);border-color:var(--line)}
body[data-theme] .wt-tab i{background:var(--t-chip);color:var(--text2)}
body[data-theme] .wt-tab.on{border-color:var(--brand);color:var(--brand);background:var(--brand-l)}
body[data-theme] .wt-tab.on i{background:var(--brand);color:#fff}
body[data-theme] .wt-hist-g{border-color:var(--line)}
body[data-theme] .wt-hist-h{background:var(--t-soft);border-bottom-color:var(--line);color:var(--text)}
body[data-theme] .wt-hist-row{border-bottom-color:var(--t-soft)}
body[data-theme] .wt-hist-w{color:var(--text1)}

/* ================= AI学情诊断：双入口卡片 + 上传弹窗 + 扫码弹窗（20261026 管理端） ================= */
.ar-entry{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.ar-entry-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;
  border:1.5px solid var(--line);border-radius:14px;background:#fff;padding:22px 24px;cursor:pointer;transition:.15s}
.ar-entry-card:hover{border-color:#9db9ff;box-shadow:0 6px 18px rgba(47,107,255,.12);transform:translateY(-2px)}
.ar-entry-ic{font-size:34px;line-height:1}
.ar-entry-t{font-size:17px;font-weight:800;color:var(--text)}
.ar-entry-d{font-size:13px;color:var(--text3);line-height:1.5}
/* 电脑上传弹窗内的上传区 */
.ar-upload-zone{margin-top:14px;border:1.5px dashed #c9d9f5;border-radius:12px;background:#f6f9ff;
  padding:18px 20px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.ar-upload-zone b{font-size:15px;color:var(--text)}
.ar-upload-zone p{font-size:12.5px;color:var(--text3);margin:0}
.ar-upload-zone label.btn{margin-top:6px}
/* 扫码弹窗 */
.ar-scan-box{display:flex;gap:22px;align-items:center;justify-content:center;flex-wrap:wrap}
.ar-qr{padding:14px;background:#fff;border:1.5px solid var(--line);border-radius:14px;flex:none}
.ar-qr img,.ar-qr canvas{display:block}
.ar-scan-tips{flex:1;min-width:220px;max-width:320px}
.ar-scan-tips p{font-size:13.5px;color:var(--text2);line-height:1.7;margin:0 0 6px}
.ar-scan-tips b{color:var(--brand);margin-right:4px}
body[data-theme] .ar-entry-card{background:var(--card);border-color:var(--line)}
body[data-theme] .ar-entry-t{color:var(--text1)}
body[data-theme] .ar-upload-zone{background:var(--t-soft);border-color:var(--line)}
body[data-theme] .ar-qr{background:var(--card);border-color:var(--line)}
@media (max-width:720px){.ar-entry{grid-template-columns:1fr}.ar-scan-box{flex-direction:column}}

/* ================= 纸质化生成（单词/短语速记 → 纸质默写表） ================= */
.wt-paper-btn{background:#fff7e8!important;border-color:#f0a93c!important;color:#b45309!important}
.wt-paper-btn:hover{background:#fdefd3!important;border-color:#e08f14!important}
.wt-paper-modal .modal-b{max-height:62vh;overflow:auto}
.wp-ctl-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.wp-prev{margin-top:4px}
.wp-prev .empty{padding:44px 0}

/* ================================================================
   智能题库（2026-10）：学生端做练习 / 试卷 / 错题本
   ================================================================ */
/* 知识点操作区「练习」按钮 */
.kb-quiz{background:linear-gradient(135deg,#22b57f,#12b76a);color:#fff;box-shadow:0 4px 12px rgba(18,183,106,.24)}
.kb-quiz:hover{filter:brightness(1.07)}
.kb-quiz .kb-n{display:inline-block;min-width:18px;height:18px;line-height:18px;padding:0 5px;margin-left:4px;border-radius:9px;background:rgba(255,255,255,.26);font-size:11px;text-align:center}

/* ---------- 试卷 / 错题本页面骨架 ---------- */
.bank-host{padding:0 0 30px}
.bk-head{padding:18px 4px 6px}
.bk-head b{font-size:20px;color:var(--text)}
.bk-head span{display:block;font-size:13px;color:var(--text3);margin-top:2px}
.bk-tabs{display:flex;gap:8px;flex-wrap:wrap;padding:12px 4px 16px}
.bk-tabs a{display:inline-flex;align-items:center;gap:6px;padding:7px 15px;border-radius:999px;background:#fff;border:1px solid var(--line);color:var(--text2);font-size:13px;font-weight:500;cursor:pointer;transition:.15s}
.bk-tabs a:hover{border-color:var(--brand);color:var(--brand)}
.bk-tabs a.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}
.bk-tabs a i{font-style:normal;min-width:18px;height:18px;line-height:18px;padding:0 5px;border-radius:9px;background:rgba(47,107,255,.1);font-size:11px;text-align:center}
.bk-tabs a.on i{background:rgba(255,255,255,.26)}
.bk-paper-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;padding:0 4px}
.bk-paper{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow);transition:.15s}
.bk-paper:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.bp-face{min-width:0}
.bp-title{font-size:15px;font-weight:700;color:var(--text);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bp-meta{font-size:12px;color:var(--text3);margin-top:3px}
.bp-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.bp-tags .tag{display:inline-block;padding:2px 9px;border-radius:999px;background:#f2f5fa;color:#5a6a85;font-size:11.5px}
.bp-tags .tag.ok{background:#e7f8ef;color:#12b76a}
.bp-act{flex:none}
.bp-act .btn{width:auto;height:36px;padding:0 18px;font-size:13px;border-radius:9px}
.bk-mist-list{display:flex;flex-direction:column;gap:12px;padding:0 4px}
.bk-mist{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow)}
.bk-mist.resolved{opacity:.68}
.bm-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.bm-top .tag{display:inline-block;padding:2px 9px;border-radius:999px;background:#f2f5fa;color:#5a6a85;font-size:11.5px}
.bm-top .tag.subj{background:var(--brand-l);color:var(--brand);font-weight:600}
.bm-top .tag.ok{background:#e7f8ef;color:#12b76a}
.bm-top .tag.no{background:#fdeaea;color:#e5484d}
.bm-top .tag.gray{background:#f2f5fa;color:#8a97ad}
.bm-time{margin-left:auto;font-size:12px;color:var(--text3)}
.bm-stem{font-size:14.5px;color:var(--text);line-height:1.7;margin-bottom:8px;white-space:pre-wrap;word-break:break-word}
.bm-opts{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}
.bm-opt{font-size:13px;color:var(--text2);line-height:1.6}
.bm-acts{display:flex;gap:10px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.bm-acts .btn.primary{width:auto;height:34px;padding:0 16px;font-size:13px;border-radius:9px}

/* ---------- 做题弹层 ---------- */
.quiz-mask{position:fixed;inset:0;background:rgba(15,23,41,.52);z-index:1200;display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(3px)}
.quiz-box{width:860px;max-width:100%;max-height:94vh;background:#fff;border-radius:18px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden}
.quiz-h{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px}
.quiz-h-t b{font-size:17px;color:var(--text)}
.quiz-h-t span{display:block;font-size:12px;color:var(--text3);margin-top:1px}
.quiz-h-r{display:flex;align-items:center;gap:14px}
.quiz-prog{font-size:12.5px;color:var(--text2)}
.quiz-h .close-x{width:34px;height:34px;border:none;border-radius:9px;background:#f2f5fa;color:#5a6a85;font-size:20px;cursor:pointer;line-height:1}
.quiz-h .close-x:hover{background:#fdeaea;color:#e5484d}
.quiz-bar{height:4px;background:#eef2f8;margin:0 20px;border-radius:2px;overflow:hidden}
.quiz-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),#5a8bff);border-radius:2px;transition:width .3s}
.quiz-dots{display:flex;gap:6px;flex-wrap:wrap;padding:10px 20px 0}
.qz-dot{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--text2);font-size:12px;cursor:pointer;transition:.12s}
.qz-dot.done{background:var(--brand-l);border-color:var(--brand);color:var(--brand);font-weight:600}
.qz-dot.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:700}
.quiz-body{flex:1;overflow:auto;padding:14px 20px 6px}
.qz-qhead{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.qz-qno{font-size:12.5px;color:var(--text3)}
.qz-qtype{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--brand-l);color:var(--brand);font-size:12px;font-weight:600}
.qz-qtip{display:inline-block;padding:2px 10px;border-radius:999px;background:#fff5e6;color:#c77700;font-size:12px}
.qz-material{border:1px solid #e3ecff;background:#f6f9ff;border-radius:10px;margin-bottom:12px;overflow:hidden}
.qz-mat-t{padding:8px 14px;font-size:12.5px;color:var(--brand);cursor:pointer;user-select:none;font-weight:600}
.qz-material .qz-mat-t::before{content:'▸ ';}
.qz-material:not(.folded) .qz-mat-t::before{content:'▾ ';}
.qz-mat-b{padding:4px 14px 12px;font-size:13.5px;line-height:1.9;color:#33445c;white-space:pre-wrap;word-break:break-word;font-family:inherit;max-height:180px;overflow:auto;margin:0}
.qz-material.folded .qz-mat-b{display:none}
.qz-stem{font-size:16px;color:var(--text);line-height:1.8;margin-bottom:16px;white-space:pre-wrap;word-break:break-word}
.qz-opts{display:flex;flex-direction:column;gap:10px}
.qz-opt{display:flex;align-items:flex-start;gap:12px;text-align:left;width:100%;padding:12px 14px;border-radius:12px;border:1.5px solid var(--line);background:#fff;cursor:pointer;font-size:14.5px;color:var(--text);line-height:1.6;transition:.12s}
.qz-opt:hover{border-color:#9dbcf0;background:#f8faff}
.qz-opt.on{border-color:var(--brand);background:#eef4ff}
.qz-l{flex:none;width:26px;height:26px;border-radius:8px;background:#f2f5fa;color:#5a6a85;font-size:13px;font-weight:700;display:grid;place-items:center}
.qz-opt.on .qz-l{background:var(--brand);color:#fff}
.qz-ot{flex:1;word-break:break-word}
.qz-judge{display:flex;gap:14px}
.qz-jb{flex:1;height:56px;border-radius:14px;border:1.5px solid var(--line);background:#fff;font-size:16px;font-weight:600;color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:.12s}
.qz-jb:hover{border-color:#9dbcf0}
.qz-jb.on.ok{border-color:var(--ok);background:#e7f8ef;color:var(--ok)}
.qz-jb.on.no{border-color:var(--err);background:#fdeaea;color:var(--err)}
.qz-fills{display:flex;flex-direction:column;gap:12px}
.qz-fill{display:flex;align-items:center;gap:12px}
.qz-fill span{flex:none;font-size:13px;color:var(--text2);width:52px}
.qz-fill input{flex:1;height:46px;border:1.5px solid var(--line);border-radius:10px;padding:0 14px;font-size:15px}
.qz-fill input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
.qz-sort{display:flex;flex-direction:column;gap:14px}
.qz-sort-built{min-height:52px;border:1.5px dashed #c9d9f2;border-radius:12px;background:#fbfdff;padding:9px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.qz-sort-tip{font-size:12.5px;color:var(--text3)}
.qz-chip{border:1px solid var(--brand);background:var(--brand-l);color:var(--brand);border-radius:9px;padding:7px 12px;font-size:13.5px;cursor:pointer;max-width:100%;text-align:left}
.qz-chip::before{content:attr(data-undo);display:none}
.qz-sort-pool{display:flex;flex-direction:column;gap:8px}
.qz-pool-it{text-align:left;padding:11px 14px;border-radius:10px;border:1px solid var(--line);background:#fff;font-size:14px;color:var(--text);cursor:pointer;transition:.12s;line-height:1.6}
.qz-pool-it:hover{border-color:var(--brand);background:#f8faff}
.qz-pool-it.used{opacity:.35;cursor:not-allowed}
.quiz-f{display:flex;gap:10px;padding:14px 20px 18px;border-top:1px solid var(--line);background:#fbfcfe}
.quiz-f .btn{width:auto;min-width:110px;height:40px;padding:0 22px;font-size:14px;border-radius:10px}
.quiz-f .btn.primary{flex:1;max-width:220px;margin-left:auto}
.quiz-f .btn.ghost:disabled{opacity:.45;cursor:not-allowed}

/* ---------- 结果页 ---------- */
.qz-score{text-align:center;padding:18px 0 8px}
.qz-score .v{font-size:44px;font-weight:800;color:var(--brand);line-height:1.2}
.qz-score .v span{font-size:22px;color:var(--text3);font-weight:600}
.qz-score.bad .v{color:var(--err)}
.qz-score .l{font-size:14px;color:var(--text2);margin-top:4px}
.qz-score .tip{font-size:12.5px;color:var(--text3);margin-top:8px}
.qz-results{display:flex;flex-direction:column;gap:12px;padding:12px 0 18px}
.qz-rq{border:1.5px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff}
.qz-rq.ok{border-color:#bfe8d2;background:#fbfffc}
.qz-rq.no{border-color:#f6c9c5;background:#fffbfa}
.qz-rq-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.qz-rstate{font-size:13px;font-weight:700}
.qz-rq.ok .qz-rstate{color:var(--ok)}
.qz-rq.no .qz-rstate{color:var(--err)}
.qz-rtag,.qz-rpoint{display:inline-block;padding:1px 9px;border-radius:999px;font-size:11.5px;background:#f2f5fa;color:#5a6a85}
.qz-rpoint{background:#fff5e6;color:#c77700}
.qz-rq .qz-stem{font-size:14.5px;margin-bottom:10px}
.qz-rq .qz-material{margin-bottom:10px}
.qz-rrow{display:flex;align-items:flex-start;gap:10px;margin-top:6px;font-size:13.5px;line-height:1.7}
.qz-rrow span{flex:none;color:var(--text3);width:64px}
.qz-rrow em{font-style:normal;flex:1;word-break:break-word;color:var(--text)}
.qz-rrow em.ok{color:var(--ok);font-weight:600}
.qz-rrow em.no{color:var(--err);font-weight:600}
.qz-ana{margin-top:10px;padding:10px 12px;border-radius:10px;background:#f6f9ff;border:1px solid #e3ecff;font-size:13px;color:#33445c;line-height:1.8;display:flex;gap:10px}
.qz-ana span{flex:none;color:var(--brand);font-weight:700}

/* 手机端适配 */
@media (max-width:760px){
  .quiz-mask{padding:0}
  .quiz-box{border-radius:0;max-height:100vh;height:100%}
  .quiz-body{padding:12px 14px 6px}
  .qz-stem{font-size:15px}
  .qz-opt{padding:10px 12px;font-size:14px}
  .bk-paper-list{grid-template-columns:1fr}
  .quiz-f{padding:12px 14px calc(12px + env(safe-area-inset-bottom))}
}

/* 护眼 / 豆沙绿主题下的弹层底色 */
body[data-theme="eye"] .quiz-box,body[data-theme="eye"] .bk-paper,body[data-theme="eye"] .bk-mist{background:#fdf6e8;border-color:#e8dcc0}
body[data-theme="eye"] .qz-opt,body[data-theme="eye"] .qz-jb,body[data-theme="eye"] .qz-pool-it,body[data-theme="eye"] .qz-dot{background:#fdf6e8}
body[data-theme="green"] .quiz-box,body[data-theme="green"] .bk-paper,body[data-theme="green"] .bk-mist{background:#f3f8f2;border-color:#d5e5d4}
body[data-theme="green"] .qz-opt,body[data-theme="green"] .qz-jb,body[data-theme="green"] .qz-pool-it,body[data-theme="green"] .qz-dot{background:#f3f8f2}

/* ================================================================
   智能题库（2026-10）：管理端 题库管理 / 智能组卷 / 课文习题 / 错题记录
   ================================================================ */
.bk-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:14px;background:#f7f9fd;border:1px solid #eef1f8;border-radius:12px;margin-bottom:12px}
.bk-filters select,.bk-filters input{height:36px;border:1px solid #dfe5f1;border-radius:10px;padding:0 12px;background:#fff;font-size:13px;color:var(--text);transition:border-color .15s, box-shadow .15s}
.bk-filters select{appearance:none;-webkit-appearance:none;padding-right:32px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239aa6bb' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;cursor:pointer;min-width:110px}
.bk-filters select:hover,.bk-filters input:hover{border-color:#b9c8f5}
.bk-filters select:focus,.bk-filters input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
.bk-filters input{min-width:130px}
.bk-count{font-size:13px;color:var(--text2);margin:6px 0 10px}
.bk-count b{color:var(--brand)}
table .bk-stem{color:var(--text);line-height:1.6}
table .bk-diff{color:#f79009;letter-spacing:1px}
table .bk-pos{color:var(--text3);font-size:12px}
table .bk-ops{white-space:nowrap}
table .bk-ops .link-btn{margin-right:8px}
table .tag.blue{background:var(--brand-l);color:var(--brand)}
.link-btn.danger{color:#e5484d}
.link-btn.danger:hover{color:#c5303a}

/* 题目表单 */
.bk-form .bk-form-row{display:flex;gap:10px;flex-wrap:wrap}
.bk-form .bk-form-row .field{margin-bottom:10px}
.bk-opts-edit{display:flex;flex-direction:column;gap:8px}
.bk-opt-row{display:flex;align-items:center;gap:8px}
.bk-opt-row input[type="radio"],.bk-opt-row input[type="checkbox"]{width:17px;height:17px;flex:none;cursor:pointer}
.bk-opt-l{flex:none;width:24px;height:24px;border-radius:7px;background:#f2f5fa;color:#5a6a85;font-size:12.5px;font-weight:700;display:grid;place-items:center}
.bk-opt-in{flex:1;height:38px}

/* 智能组卷 */
.pp-form{padding-bottom:6px}
.pp-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.pp-row .field{margin-bottom:8px}
.pp-n input{width:92px}
.pp-prev-h{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 0 8px;border-top:1px dashed var(--line);margin-top:8px}
.pp-prev-h b{font-size:15px}
.pp-prev-h span{font-size:12.5px;color:var(--text2)}
.pp-prev-acts{margin-left:auto;display:flex;gap:8px}
.pp-group{margin:8px 0 16px}
.pp-gt{font-weight:700;color:var(--text);margin-bottom:6px}
.pp-q{display:flex;align-items:flex-start;gap:10px;padding:7px 0;border-bottom:1px dashed #eef1f6}
.pp-q-main{flex:1;line-height:1.7;font-size:13.5px}
.pp-mat{font-size:12px;color:#667;background:#f6f9ff;border-radius:6px;padding:3px 8px;margin-bottom:4px}
.pe-list{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:6px 12px}
.pk-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-bottom:1px dashed #eef1f6;cursor:pointer;font-size:13.5px}
.pk-row:hover{background:#f8faff}
.pk-row input{width:17px;height:17px;flex:none}

/* 课文习题 */
.lq-layout{display:flex;gap:16px;align-items:flex-start;padding-top:8px}
.lq-layout.grouped .lq-side{width:210px;flex:none;background:#f8fafd;border:1px solid var(--line);border-radius:12px;padding:8px}
.lq-side-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-radius:9px;color:var(--text2);cursor:pointer;font-size:13.5px;margin-bottom:2px}
.lq-side-item:hover{background:#eef3fb;color:var(--text)}
.lq-side-item.on{background:var(--brand-l);color:var(--brand);font-weight:600}
.lq-main{flex:1;display:flex;flex-direction:column;gap:10px}
.lq-video{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:13px 16px;transition:.15s}
.lq-video:hover{border-color:#bcd0f5;box-shadow:var(--shadow)}
.lq-v-info{display:flex;align-items:center;gap:10px;min-width:0}
.lq-v-info b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lq-v-info .tag{flex:none}
.vq-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.vq-head b{font-size:15px}
.vq-list{max-height:44vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px 12px}
.vq-item{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px dashed #eef1f6}
.vq-item:last-child{border-bottom:none}
.vq-ans{font-size:12px;color:#12b76a;margin-top:2px}

/* ================= 智能题库优化（2026-10-27 第二轮） ================= */
/* ---- 管理端：卡片头右侧 / 组卷表单的下拉与输入统一美化 ---- */
.card-h-r select,.pp-form select,.pp-form input{
  height:36px;border:1px solid #dfe5f1;border-radius:10px;padding:0 12px;background:#fff;font-size:13px;color:var(--text);
  transition:border-color .15s, box-shadow .15s}
.card-h-r select,.pp-form select{
  appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer;min-width:100px;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239aa6bb' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center}
.card-h-r select:hover,.pp-form select:hover,.pp-form input:hover{border-color:#b9c8f5}
.card-h-r select:focus,.pp-form select:focus,.pp-form input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
/* 弹窗表单里的原生 select / input 同步美化（textarea 走原有 .input 样式） */
.el-dialog .field select,.el-dialog .field input:not([type="checkbox"]):not([type="radio"]):not([type="file"]){
  height:36px;border:1px solid #dfe5f1;border-radius:10px;padding:0 12px;background:#fff;font-size:13px;color:var(--text);width:100%}
.el-dialog .field select{
  appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239aa6bb' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center}
.el-dialog .field select:focus,.el-dialog .field input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,107,255,.12)}
/* 表格行 hover 更柔和 */
.card table tbody tr{transition:background .12s}
.card table tbody tr:hover{background:#f8faff}
/* ---- 导入结果反馈 ---- */
.im-ok{background:#e7f8ef;color:#0e7a49;border:1px solid #bfe8d2;border-radius:10px;padding:10px 14px;font-size:13.5px}
.im-errs{margin-top:10px;background:#fff5f5;border:1px solid #ffd9d9;border-radius:10px;padding:10px 14px;font-size:12.5px;color:#a33030;max-height:180px;overflow:auto}
.im-errs ul{margin:6px 0 0;padding-left:18px}
.im-errs li{margin:3px 0;line-height:1.5}
/* ---- 课文习题：级联筛选条 ---- */
.lq-filters{margin-bottom:14px}
.lq-filters select{min-width:130px}
/* ---- 错题记录：复习进度三圈 ---- */
.ml-dots{color:#f79009;letter-spacing:3px;font-size:13px}
/* ---- 学生端：错题本统计卡 + 开始复习 ---- */
.bk-stats{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap;margin:4px 0 14px}
.bk-stat{flex:0 0 auto;min-width:104px;background:#fff;border:1px solid #eef1f8;border-radius:14px;padding:12px 16px;text-align:center;box-shadow:0 1px 3px rgba(20,40,80,.04)}
.bk-stat b{display:block;font-size:22px;color:var(--text);line-height:1.2}
.bk-stat span{font-size:12px;color:var(--text3)}
.bk-stat.hot{border-color:#ffd4d4;background:#fff7f7}
.bk-stat.hot b{color:#e5484d}
.bk-stat.ok b{color:#12b76a}
/* ---- 错题本改版 2：顶部学科 tab + 清爽白卡（无大色块） ---- */
.bk-review-strip{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:0 4px 14px;
  border:1px dashed #ffc2c2;background:#fff5f5;color:#e5484d;border-radius:12px;padding:11px 16px;
  font-size:14px;font-weight:600;cursor:pointer;transition:.15s}
.bk-review-strip:hover{background:#ffecec}
.bk-review-strip b{font-size:16px}
/* 错题本学科 tab：渲染进顶栏白框（#bkTabsMount 挂载点） */
#bkTabsMount{display:inline-flex;align-items:center;min-width:0}
.st-tabs #bkTabsMount .bk2-tabs{padding:0;flex-wrap:nowrap;gap:10px}
.st-tabs #bkTabsMount .bk2-tabs a{height:auto;padding:8px 16px;font-size:14px}
@media (max-width:760px){
  .st-tabs #bkTabsMount .bk2-tabs{gap:7px}
  .st-tabs #bkTabsMount .bk2-tabs a{padding:7px 11px;font-size:13px;gap:5px}
  .st-tabs #bkTabsMount .bk2-tabs a b{min-width:17px;height:17px;line-height:17px;font-size:11px}
}
/* 错题本内容整体上移（tab 已在顶栏，内容区不再留 tab 的位置） */
#mistakesHost{margin-top:-12px}
.bk2-tabs{display:flex;gap:10px;flex-wrap:wrap;padding:2px 4px 16px}
.bk2-tabs a{display:inline-flex;align-items:center;gap:7px;padding:9px 18px;border-radius:12px;background:#fff;
  border:1px solid var(--line);color:var(--text2);font-size:14px;font-weight:600;cursor:pointer;transition:.15s;user-select:none}
.bk2-tabs a:hover{border-color:var(--brand);color:var(--brand)}
.bk2-tabs a .bmt-ic{font-size:15px}
.bk2-tabs a b{font-style:normal;min-width:20px;height:20px;line-height:20px;padding:0 6px;border-radius:10px;
  background:#f1f4fa;font-size:12px;font-weight:700;text-align:center;color:var(--text3)}
.bk2-tabs a.on{color:#fff;border-color:transparent}
.bk2-tabs a.on b{background:rgba(255,255,255,.26);color:#fff}
.bk2-tabs a.on.smath{background:#2f6bff;box-shadow:0 4px 12px rgba(47,107,255,.28)}
.bk2-tabs a.on.seng{background:#12b76a;box-shadow:0 4px 12px rgba(18,183,106,.28)}
.bk2-tabs a.on.sphy{background:#f79009;box-shadow:0 4px 12px rgba(247,144,9,.28)}
.bk2-tabs a.on.schem{background:#e5484d;box-shadow:0 4px 12px rgba(229,72,77,.28)}
/* 时间强化统计：白卡 + 左侧细色条 */
.bk2-buckets{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:0 4px 6px}
@media (max-width:720px){.bk2-buckets{grid-template-columns:repeat(3,1fr);gap:8px}.bk2-bucket{padding:13px 12px}}
.bk2-bucket{position:relative;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 16px 14px;
  text-align:left;cursor:pointer;overflow:hidden;transition:.15s;box-shadow:0 1px 3px rgba(20,40,80,.04)}
.bk2-bucket::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--bc)}
.bk2-bucket:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px rgba(20,40,80,.1);border-color:var(--bc)}
.bk2-bucket:disabled{opacity:.62;cursor:default}
.bk2-bucket em{font-style:normal;display:block;font-size:30px;font-weight:800;line-height:1.1;color:var(--bc)}
.bk2-bucket span{display:block;font-size:13px;font-weight:600;color:var(--text2);margin-top:4px}
.bk2-bucket i{font-style:normal;display:inline-block;font-size:12px;font-weight:700;color:var(--bc);
  background:#f2f5fb;border-radius:999px;padding:3px 10px;margin-top:9px}
.bk2-bucket.c-red{--bc:#e5484d}
.bk2-bucket.c-red i{background:#fdecec}
.bk2-bucket.c-orange{--bc:#f79009}
.bk2-bucket.c-orange i{background:#fef3e2}
.bk2-bucket.c-blue{--bc:#2f6bff}
.bk2-bucket.c-blue i{background:#e8f1ff}
/* 线性 SVG 图标容器 */
.bki{display:inline-flex;flex-shrink:0;vertical-align:-2px}
.bki svg{width:100%;height:100%;display:block}
.bk2-tabs a .bmt-ic{display:inline-flex;color:inherit;opacity:.85}
.bk2-tabs a.on .bmt-ic{opacity:1}
/* 功能入口：白卡 + 淡彩图标 */
.bk2-funcs{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:6px 4px 4px}
@media (max-width:640px){.bk2-funcs{grid-template-columns:1fr}}
.bk2-func{display:flex;align-items:center;gap:13px;background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:15px 16px;text-align:left;cursor:pointer;transition:.15s;box-shadow:0 1px 3px rgba(20,40,80,.04)}
.bk2-func:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px rgba(20,40,80,.1);border-color:#d8e0ee}
.bk2-func:disabled{opacity:.6;cursor:default}
.bkf-ic{flex-shrink:0;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center}
.bkf-ic.i-purple{background:#f3ecff;color:#7c3aed}
.bkf-ic.i-blue{background:#e8f1ff;color:#2f6bff}
.bkf-ic.i-amber{background:#fff6e0;color:#d97706}
.bkf-ic.i-pink{background:#ffeef5;color:#db2777}
.bkf-m{flex:1;min-width:0}
.bkf-m b{display:flex;align-items:center;gap:6px;font-size:14.5px;font-weight:700;color:var(--text)}
.bkf-m b .bkf-ai{font-style:normal;font-size:10px;font-weight:800;color:#7c3aed;background:#f3ecff;border:1px solid #e2d5ff;
  border-radius:6px;padding:1px 5px;line-height:1.4}
.bkf-m > span{display:block;font-size:12.5px;color:var(--text3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bkf-arrow{font-style:normal;font-size:20px;color:#c3ccdc;font-weight:600}
/* 薄弱知识点 AI 识别状态 */
.bk-ai-loading{background:#fff;border:1px solid var(--line);border-radius:16px;padding:38px 20px;text-align:center;
  margin:0 4px;box-shadow:0 1px 3px rgba(20,40,80,.04)}
.bk-ai-loading b{display:block;font-size:15px;font-weight:700;color:var(--text);margin-top:14px}
.bk-ai-loading span{display:block;font-size:13px;color:var(--text3);margin-top:6px}
.bai-spin{display:inline-block;width:30px;height:30px;border-radius:50%;border:3px solid #e8eefb;border-top-color:#7c3aed;
  animation:bkSpin 0.9s linear infinite}
@keyframes bkSpin{to{transform:rotate(360deg)}}
.bk-ai-done{margin:0 4px 12px;font-size:13px;font-weight:600;color:#7c3aed;background:#f9f5ff;border:1px solid #e9dcff;
  border-radius:10px;padding:9px 14px}
.bk-ai-rest{margin:12px 4px 0;font-size:12.5px;color:var(--text3);text-align:center}
/* 学科内页头 */
.bk-shead{display:flex;align-items:center;gap:12px;padding:4px 4px 14px}
.bk-shead-t{font-size:17px;font-weight:800;color:var(--text)}
.bk-up-fab{position:sticky;bottom:16px;display:block;margin:22px auto 8px;border:none;border-radius:999px;cursor:pointer;
  background:linear-gradient(135deg,#2f6bff,#6c4dff);color:#fff;font-size:15px;font-weight:700;padding:13px 42px;
  box-shadow:0 8px 20px rgba(47,107,255,.35);transition:.15s;z-index:5}
.bk-up-fab:hover{filter:brightness(1.08);transform:translateY(-1px)}
/* ---- 薄弱知识点 / 上传错题列表 ---- */
.bk-pt-list{display:flex;flex-direction:column;gap:10px;padding:0 4px}
.bk-pt-it{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid #eef1f8;border-radius:12px;
  padding:13px 16px;cursor:pointer;text-align:left;transition:.15s}
.bk-pt-it:hover{border-color:var(--brand);box-shadow:0 3px 10px rgba(47,107,255,.12)}
.bk-pt-it .bp-name{flex:1;font-size:14px;font-weight:600;color:var(--text)}
.bk-pt-it b{font-size:13px;color:var(--text2);font-weight:600}
.bk-pt-it i{font-style:normal;font-size:13px;color:var(--brand);font-weight:600}
.bk-up-list{display:flex;flex-direction:column;gap:12px;padding:0 4px}
.bk-up-it{background:#fff;border:1px solid #eef1f8;border-radius:14px;padding:14px 16px;box-shadow:0 1px 3px rgba(20,40,80,.04)}
.bk-up-it .bu-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.bk-up-it .bu-note{font-size:13px;color:var(--text2);margin-bottom:8px}
.bk-up-it .bu-ok{font-size:13px;color:#12b76a;font-weight:600;margin-top:8px}
.bk-up-it .bu-no{font-size:13px;color:#e5484d;margin-top:8px}
.bk-up-it .bu-wait{font-size:13px;color:var(--text3);margin-top:8px}
/* ---- 题目图片（纸质错题）+ 放大查看 ---- */
.qz-imgs{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}
.qz-img{max-width:min(360px,100%);max-height:260px;border-radius:10px;border:1px solid #e5e9f2;cursor:zoom-in;background:#fff}
.imgzoom-mask{z-index:200}
.imgzoom-box{max-width:92vw;max-height:88vh;display:flex;flex-direction:column;align-items:center;gap:10px}
.imgzoom-box img{max-width:92vw;max-height:78vh;border-radius:10px;background:#fff}
.imgzoom-box p{color:#fff;font-size:13px;opacity:.8}
/* ---- 微信扫码上传二维码弹窗 ---- */
.qr-box{background:#fff;border-radius:18px;padding:26px 30px 20px;text-align:center;position:relative;max-width:320px}
.qr-box .qr-t{display:block;font-size:17px;font-weight:800;margin-bottom:16px;color:var(--text)}
.qr-box #qrCanvas{display:flex;justify-content:center;min-height:208px}
.qr-box img{border:1px solid #eef1f8;border-radius:8px}
.qr-box .qr-tip{font-size:13px;color:var(--text2);line-height:1.7;margin:14px 0 6px}
.qr-box .qr-exp{font-size:12px;color:var(--text3)}
.qr-box .close-x{position:absolute;right:10px;top:10px}
.bk-review-go{flex:1;min-width:200px;border:none;border-radius:14px;cursor:pointer;
  background:linear-gradient(135deg,#2f6bff,#6c4dff);color:#fff;font-size:15px;font-weight:700;
  padding:0 22px;display:flex;align-items:center;justify-content:center;gap:8px;
  box-shadow:0 4px 14px rgba(47,107,255,.28);transition:transform .12s, box-shadow .12s}
.bk-review-go:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 18px rgba(47,107,255,.36)}
.bk-review-go:disabled{background:#eef1f6;color:var(--text3);box-shadow:none;cursor:not-allowed}
/* ---- 学生端：错题条目复习状态 ---- */
.bm-dots{color:#f79009;letter-spacing:3px;font-size:14px;align-self:center}

/* ---- 顶栏错题本：醒目橙色渐变按钮 + 未掌握数角标（2026-10-27 第三轮） ---- */
.st-mist-btn{display:inline-flex;align-items:center;gap:7px;border:none;border-radius:11px;padding:7px 16px 7px 8px;
  cursor:pointer;font-size:13.5px;font-weight:700;color:#fff;letter-spacing:.5px;
  background:linear-gradient(135deg,#ff9f43,#f4633a);box-shadow:0 4px 14px rgba(244,99,58,.32);transition:.18s}
.st-mist-btn img{width:28px;height:28px;border-radius:8px;object-fit:cover;display:block;background:#fff}
.st-mist-btn:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(244,99,58,.42);filter:brightness(1.05)}
.st-mist-btn.on{box-shadow:0 0 0 3px rgba(244,99,58,.28),0 4px 14px rgba(244,99,58,.4)}
.st-mist-n{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#fff;color:#f4633a;
  font-style:normal;font-size:12px;font-weight:800;line-height:20px;text-align:center}
.st-mist-btn:active{transform:translateY(0)}
@media (max-width:760px){.st-mist-btn{padding:5px 10px 5px 6px}.st-mist-btn img{width:24px;height:24px}}

/* ---- 顶栏页标题（试卷/错题本页替代分类栏） ---- */
.st-tabs a.st-page-title{font-size:19px;font-weight:800;color:var(--text);cursor:default;padding:8px 2px}
.st-tabs a.st-page-title:hover{color:var(--text)}


/* ---- 魔方题库（题库·目录树 / 网络采集 / 试卷管理 / 录题工作台）---- */
.mf-wrap{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.mf-card{min-width:260px}
.mf-card.grow{flex:1;min-width:520px}
.mf-card .card-b{padding:10px 12px}
.mf-sel{width:100%;margin-bottom:8px}
.mf-treebox{max-height:420px;overflow:auto;border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:6px 4px}
.mf-node{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:4px}
.mf-node a{color:var(--text);text-decoration:none;font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mf-node a:hover{color:var(--primary,#3b82f6)}
.mf-node a.on{color:var(--primary,#3b82f6);font-weight:700}
.mf-nq{font-size:11px;color:#9ca3af}
.mf-treectl{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.mf-form{display:flex;flex-wrap:wrap;gap:10px}
.mf-form .field{display:flex;flex-direction:column;gap:4px;min-width:150px;font-size:13px}
.mf-form .field.wide{flex:1;min-width:300px}
.mf-form .field label{color:#6b7280}
.mf-form .inp,.mf-form textarea,.mf-form select{padding:6px 8px;border:1px solid var(--border,#d1d5db);border-radius:5px;font:inherit}
.mf-batchbar{display:flex;align-items:center;gap:10px;margin:8px 0;font-size:13px;flex-wrap:wrap}
.mf-stem{max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mf-tip{background:#f8fafc;border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:10px 12px;font-size:13px;color:#475569;margin-bottom:12px;line-height:1.7}
.mf-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:900px){.mf-grid2{grid-template-columns:1fr}}
.mf-box{border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:12px}
.mf-box h4{margin:0 0 6px;font-size:14px}
.mf-box .hint,.mf-parsed .hint{color:#6b7280;font-size:12px}
.mf-box textarea{width:100%;margin-top:8px}
.mf-box .row,.mf-parsed .row{display:flex;gap:8px;align-items:center;margin-top:8px;flex-wrap:wrap}
.mf-parsed{margin-top:14px;border-top:1px dashed var(--border,#e5e7eb);padding-top:10px}
.mf-qcard{border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:8px 10px;margin-bottom:8px;font-size:13px}
.mf-qtext{margin:4px 0;line-height:1.6}
.mf-pick{max-height:320px;overflow:auto;border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:8px;margin:8px 0}
.mf-pickitem{display:flex;gap:8px;align-items:flex-start;padding:4px 2px;font-size:13px;line-height:1.5}
.mf-seg{margin:14px 0 8px;font-size:14px}
.mf-papers{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.mf-paper{border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:10px 12px}
.mf-pt{font-weight:700;font-size:14px;margin-bottom:4px}
.mf-pbtns{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.mf-paperedit{font-size:13px}
.mf-cards{max-height:420px;overflow:auto}
.mf-card2{border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:8px 10px;margin-bottom:8px;display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.mf-card2>label{flex:1;min-width:180px;font-weight:700}

/* ===== 魔方复刻 UI 第二期（2026-10-29）：题库管理 / 网络采集 / 设置 ===== */
.mf-fbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.mf-fsel{padding:6px 8px;border:1px solid var(--border,#d1d5db);border-radius:6px;font:inherit;font-size:13px;background:#fff}
.mf-qitem{border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:10px 12px;margin-bottom:8px;background:#fff}
.mf-qitem:has(.mf-qck:checked){border-color:#a5b4fc;background:#f8faff}
.mf-qhead{display:flex;gap:8px;align-items:flex-start}
.mf-qhead .mf-qck{margin-top:4px}
.mf-qno{color:#9a3412;flex:0 0 auto;line-height:1.7}
.mf-qstem{flex:1;line-height:1.7;font-size:13.5px;overflow-wrap:anywhere}
.mf-qopts{display:flex;gap:14px;flex-wrap:wrap;margin-top:6px;color:#334155}
.mf-qmeta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:12px}
.mf-qmeta .tag{font-size:11px}
.mf-qacts{margin-left:auto}
.mf-qacts a{color:#6366f1;text-decoration:none;margin-left:10px;font-size:12px}
.mf-qfold{display:flex;gap:10px;margin-top:6px}
.mf-qfold details{border:1px solid var(--border,#e5e7eb);border-radius:6px;padding:4px 10px;flex:1}
.mf-qfold summary{cursor:pointer;font-size:12px;color:#6b7280;user-select:none}
.mf-qfold summary.dim{color:#cbd5e1}
.mf-qans{margin-top:6px;font-size:13px;color:#b91c1c;line-height:1.6;overflow-wrap:anywhere}
.mf-empty{text-align:center;color:#94a3b8;padding:46px 0;font-size:14px;line-height:2}
.mf-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.mf-dot{color:#16a34a;font-size:13px;white-space:nowrap}
.mf-browser{border:1px solid var(--border,#e5e7eb);border-radius:10px;overflow:hidden;background:#fff}
.mf-segs{display:flex;gap:6px}
.mf-setcard{border:1px solid var(--border,#e5e7eb);border-radius:10px;padding:14px 16px;margin-bottom:12px}
.mf-sett{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:15px}
.mf-setnum{margin-top:8px;font-size:14px;font-weight:700;color:#0f172a}
.mf-prole{border-top:1px dashed var(--border,#e5e7eb);padding:10px 2px}
.mf-prole:first-of-type{border-top:0}
.mf-prole-t{margin-bottom:6px}
.mf-prole-b{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12.5px}
.mf-pitem{display:inline-flex;gap:6px;align-items:center;background:#f8fafc;border:1px solid var(--border,#e5e7eb);border-radius:14px;padding:2px 10px}
.mf-pitem a{color:#6366f1;text-decoration:none}
.mf-tw{width:16px;text-align:center;color:#94a3b8;text-decoration:none;flex:0 0 16px}
.mf-tw.leaf{visibility:hidden}

/* ===== 公式计算器 + 归属 chips（2026-10-29 晚） ===== */
.mf-fpad{border:1px solid #c7d2fe;background:#f8faff;border-radius:10px;padding:10px 12px;max-width:520px}
.mf-fpad-h{display:flex;gap:8px;align-items:center;margin-bottom:8px;font-size:13px}
.mf-fpad-x{color:#94a3b8;text-decoration:none;font-size:14px}
.mf-fpad-in{width:100%;margin-bottom:8px;font-size:14px}
.mf-fpad-tabs{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.mf-fpad-tabs a{font-size:12px;color:#475569;text-decoration:none;padding:3px 10px;border-radius:12px;background:#e2e8f0}
.mf-fpad-tabs a.on{background:#6366f1;color:#fff}
.mf-fpad-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin-bottom:8px}
.mf-fpad-k{padding:7px 0;text-align:center;border:1px solid #e2e8f0;border-radius:6px;background:#fff;font-size:13.5px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mf-fpad-k:hover{border-color:#6366f1;color:#4338ca}
.mf-fpad-b{display:flex;gap:10px;align-items:center;font-size:12.5px;color:#64748b}
.mf-fpad-b a{color:#475569;text-decoration:none}
.mf-fpad-b a.on{color:#4338ca;font-weight:700}
.mf-chipck a{color:#334155;text-decoration:none;cursor:pointer}
.mf-chipck.on a{color:#4338ca;font-weight:600}
.mf-kx{color:#94a3b8;text-decoration:none;font-size:11px}

/* ===== 未分类 / 待审核入口（2026-10-29 晚二） ===== */
/* 题库管理左栏：章节 / 知识点 胶囊连体切换框（选中=蓝底白字） */
.mf-segbox{display:flex;margin-top:10px;border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:3px;gap:3px}
.mf-segit{flex:1;display:flex;align-items:center;justify-content:center;padding:7px 10px;border:0;border-radius:8px;background:transparent;cursor:pointer;transition:.18s;font-family:inherit;line-height:1.2;white-space:nowrap}
.mf-segit b{font-size:13.5px;font-weight:600;color:#374151;letter-spacing:.5px}
.mf-segit:hover b{color:#4f6ef2}
.mf-segit.on{background:#4f6ef2;box-shadow:0 1px 4px rgba(79,110,242,.35)}
.mf-segit.on b{color:#fff}

/* 右上角「待审核题目」按钮（带数量徽标） */
.card-h-r .btn{white-space:nowrap}
.card-h-r .hint{white-space:nowrap}
.mf-revhot{border-color:#f7c98b;background:#fffaf2}
.mf-revhot:hover{border-color:#f0b45e;background:#fdf3e3}
.btn.xs .rev-n{margin-left:5px;padding:0 7px;min-width:20px;height:18px;line-height:18px;border-radius:9px;background:#f3f4f6;color:#6b7280;font-size:12px;font-weight:700;display:inline-block}
.btn.xs.mf-revhot .rev-n{background:#f59e0b;color:#fff}
.mf-rvimgs{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.mf-rvimgs img{height:110px;border-radius:8px;border:1px solid #e5e7eb;cursor:zoom-in;object-fit:cover}

/* ==================== 学生端试卷页：我的任务 / 章节测评 / 学段冲刺 / 试卷库 ==================== */
.pk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:0 4px}
@media (max-width:900px){.pk-grid{grid-template-columns:1fr}}
.pk-box{display:flex;flex-direction:column;min-height:190px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}
.pk-h{display:flex;align-items:center;gap:7px;padding:12px 14px;border-bottom:1px solid var(--line);font-size:14px;font-weight:700;color:var(--text)}
.pk-h .bki{color:var(--brand)}
.pk-sub{margin-left:auto;font-size:11.5px;font-weight:400;color:var(--text3)}
.pk-body{flex:1;overflow:auto;max-height:260px;padding:8px 10px}
.pk-task{display:flex;align-items:center;gap:8px;padding:9px 8px;border-radius:10px;cursor:pointer;transition:.15s}
.pk-task:hover{background:#f4f7fd}
.pk-t-main{flex:1;min-width:0}
.pk-t-main b{display:block;font-size:13.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pk-t-main .hint{font-size:11.5px}
.pk-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px 10px;color:var(--text3);font-size:12.5px;text-align:center}
.pk-entry-b{flex:1;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:14px}
.pk-entry-b p{margin:0;font-size:12.5px;line-height:1.7;color:var(--text2)}
.pk-lib{margin:14px 4px 0;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.pk-lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;padding:14px}
.pk-libcard{display:flex;flex-direction:column;gap:7px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fafcff;transition:.15s;cursor:pointer}
.pk-libcard:hover{border-color:var(--brand);box-shadow:var(--shadow)}
.pk-libcard b{font-size:13.5px;color:var(--text)}
.pk-lib-acts{display:flex;align-items:center;justify-content:space-between;margin-top:auto}
/* 选范围弹层 */
.pk-sel-mask,.pk-radar-mask{position:fixed;inset:0;z-index:2100;background:rgba(15,32,68,.55);display:flex;align-items:center;justify-content:center;padding:18px}
.pk-sel-box{display:flex;flex-direction:column;width:min(560px,94vw);max-height:86vh;background:#fff;border-radius:16px;overflow:hidden}
.pk-sel-h{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-size:15px;color:var(--text)}
.pk-sel-h .close-x{border:0;background:none;font-size:22px;color:var(--text3);cursor:pointer;line-height:1}
.pk-sel-tip{padding:10px 18px 0;font-size:12.5px;color:var(--text3)}
.pk-tree{flex:1;overflow:auto;padding:10px 18px}
.pk-node{margin:2px 0}
.pk-node.d1{margin-left:18px}
.pk-node.d2{margin-left:36px}
.pk-node.d3{margin-left:54px}
.pk-nd{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--text);user-select:none}
.pk-nd:hover{background:#f2f6fd}
.pk-kids.fold{display:none}
.pk-sel-f{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 18px;border-top:1px solid var(--line);background:#fafcff}
.pk-sel-f .hint b{color:var(--brand)}
/* 雷达扫描 */
.pk-radar-box{display:flex;gap:26px;align-items:center;width:min(760px,94vw);background:#fff;border-radius:16px;padding:28px;flex-wrap:wrap;justify-content:center}
.pk-radar-l{display:flex;flex-direction:column;align-items:center;gap:12px}
.pk-radar{position:relative;width:170px;height:170px;border-radius:50%;background:radial-gradient(circle,#f2f8ff 0%,#e4efff 100%);border:2px solid #cfe2ff;overflow:hidden}
.pk-ring{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid rgba(47,107,255,.25);border-radius:50%}
.pk-ring.r0{width:120px;height:120px}
.pk-ring.r1{width:80px;height:80px}
.pk-ring.r2{width:40px;height:40px}
.pk-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(47,107,255,.38) 0deg,rgba(47,107,255,.05) 70deg,transparent 120deg);animation:pkspin 1.6s linear infinite}
.pk-radar.done .pk-sweep{animation-play-state:paused;opacity:.25}
@keyframes pkspin{to{transform:rotate(360deg)}}
.pk-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:52px;height:52px;line-height:52px;border-radius:50%;background:var(--brand);color:#fff;font-size:13px;font-weight:700;text-align:center;box-shadow:0 0 0 6px rgba(47,107,255,.15)}
.pk-radar-tip{font-size:13px;color:var(--text2);font-weight:600}
.pk-radar-r{flex:1;min-width:260px;display:flex;flex-direction:column;gap:12px}
.pk-radar-title{font-size:16px;font-weight:800;color:var(--text)}
.pk-chips{display:flex;flex-wrap:wrap;gap:8px;max-height:300px;overflow:auto;align-content:flex-start;min-height:120px}
.pk-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#eef4ff;border:1px solid #d5e3ff;color:#2b57b8;font-size:12.5px;font-weight:600;opacity:.96}
.pk-chip b{font-weight:700;color:var(--brand)}
.pk-chip.pop{animation:pkpop .35s ease both}
@keyframes pkpop{from{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}
.pk-radar-acts{display:flex;gap:10px;justify-content:flex-end}

/* ===== 录题上传工作台（一比一复刻魔方录题，2026-10-30） ===== */
.mf-wk-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.mf-wk-title{font-size:15px;margin-right:6px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mf-wk-hint{color:#8a94a6;font-size:12.5px;margin-top:8px}
.mf-wk .sp{flex:1}
.mf-wk-prog{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12.5px;color:#475069}
.mf-wk-prog-t{width:240px;height:6px;border-radius:4px;background:#e8ecf3;overflow:hidden;flex:none}
.mf-wk-prog-t>i{display:block;height:100%;width:0;border-radius:4px;background:#3b82f6;transition:width .3s}
.mf-wk-body{display:grid;grid-template-columns:var(--mfwk-l,480px) 8px minmax(0,1fr);gap:0;align-items:stretch}
.mf-wk-body>.card{margin:0}
.mf-wk-split{cursor:col-resize;border-radius:4px;background:transparent;position:relative;z-index:5}
.mf-wk-split::after{content:'';position:absolute;left:3px;top:12px;bottom:12px;width:2px;border-radius:2px;background:#e5e8f0;transition:background .15s}
.mf-wk-split:hover::after,.mf-wk-split.on::after,.mf-wk-split:focus::after{background:#4b7bec}
.mf-wk-split:focus{outline:none}
.mf-wk-split.on::before{content:'';position:fixed;inset:0;z-index:-1}
.mf-wk-pages{display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 240px);overflow:auto;min-height:120px}
.mf-wk-page{border:1px solid #e5e8f0;border-radius:8px;padding:8px}
.mf-wk-phead{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.mf-wk-page>img{display:block;width:100%;border-radius:6px;cursor:zoom-in;background:#f5f7fb}
.mf-wk-ocr{margin-top:6px;font-size:12px}
.mf-wk-ocr summary{cursor:pointer;color:#475069;user-select:none}
.mf-wk-ocr textarea{width:100%;margin-top:6px;font-size:12px;line-height:1.6}
.mf-wk-ocrbtn{margin-top:6px;text-align:right}
.mf-wk-cards{display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 240px);overflow:auto;min-height:120px}
.mf-wk-card{flex-direction:column;align-items:stretch}
.mf-wk-chead{display:flex;align-items:center;gap:8px;font-weight:700}
.mf-wk-cmeta{color:#8a94a6;font-size:12px;font-weight:400}
.mf-wk-cgrid{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px}
.mf-wk-cgrid .field{margin:0}
.mf-wk-cgrid .wide{grid-column:1 / -1}
.mf-wk-cards .empty,.mf-wk-pages .empty{padding:24px 0}
/* 左栏（原文/页图）填满整列高度 */
.mf-wk-left{display:flex;flex-direction:column;min-width:0}
.mf-wk-left .card-b{flex:1;min-height:0}
.mf-wk-pages .mf-wk-page{display:flex;flex-direction:column}
.mf-wk-pages .mf-wk-page>textarea{flex:1;min-height:200px}
/* 题卡分类行（章节 / 知识点 / 难度） */
.mf-wk-cls{display:flex;gap:8px}
.mf-wk-cls select{min-width:0}
.mf-wk-cls .cls-ch{flex:1.3}
.mf-wk-cls .cls-pt{flex:1}
.mf-wk-cls .cls-df{flex:none;width:76px}
/* 题卡插图缩略图（Word 导入等） */
.mf-wk-figs{display:flex;flex-wrap:wrap;gap:8px}
.mf-wk-fig{width:120px;height:90px;object-fit:cover;border:1px solid #e5e8f0;border-radius:6px;background:#f5f7fb;cursor:zoom-in}
.mf-wk-fig:hover{border-color:#4b7bec}
/* 大图查看（在线翻页缩放） */
.mf-lb{position:fixed;inset:0;z-index:9999;background:rgba(15,18,25,.88);display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.mf-lb>img{max-width:92vw;max-height:88vh;border-radius:6px;background:#fff;transform-origin:center center}
.mf-lb-bar{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;background:rgba(255,255,255,.96);border-radius:10px;padding:6px 14px;box-shadow:0 6px 24px rgba(0,0,0,.28)}
.mf-lb-n{font-size:13px;font-weight:700;min-width:52px;text-align:center}
.mf-lb-hint{color:#8a94a6;font-size:12px;margin:0 6px}

/* ============ 智能题库：数学输入键盘 / AI 讲解 / 题目反馈 / 题目编号（2026-10-30） ============ */
/* 题干内联图片 */
.qz-img-inline { display: inline-block; height: 42px; max-width: 180px; vertical-align: middle; margin: 2px 6px; border: 1px solid #e2e8f0; border-radius: 6px; cursor: zoom-in; }
/* 题目编号角标 */
.qz-raqno { font-size: 11.5px; color: #94a3b8; background: #f1f5f9; border-radius: 4px; padding: 1px 6px; margin-left: 6px; }
.bk-qno { font-family: Consolas, Menlo, monospace; font-size: 12px; color: #6366f1; background: #eef2ff; border-radius: 4px; padding: 1px 6px; white-space: nowrap; }
/* 做错题操作区 */
.qz-racts { display: flex; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
/* 数学键盘 */
.qz-kpad { border-top: 1px solid #e5e7eb; background: #f8fafc; padding: 8px 10px; }
.kpad-wrap { display: flex; gap: 8px; align-items: stretch; }
.kpad-sym { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; flex: 0 0 auto; }
.kpad-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; flex: 1; }
.kpad-fn { display: grid; grid-template-rows: repeat(4, 1fr); gap: 5px; flex: 0 0 auto; min-width: 64px; }
.kpad-k { border: 1px solid #dbe3ec; background: #fff; border-radius: 7px; font-size: 15px; min-height: 32px; cursor: pointer; color: #1e293b; }
.kpad-k:active { background: #e0e7ff; }
.kpad-k.kpad-mode { background: #eef2ff; color: #4f46e5; font-weight: 600; }
.kpad-k.kpad-hide { background: #f1f5f9; color: #64748b; }
/* AI 讲解弹层 */
.qz-ai-mask { position: fixed; inset: 0; background: rgba(15,23,42,.5); z-index: 1300; display: flex; align-items: center; justify-content: center; padding: 16px; }
.qz-ai-box { background: #fff; border-radius: 14px; width: 100%; max-width: 520px; max-height: 82vh; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 18px 50px rgba(2,6,23,.25); }
.qz-ai-h { display: flex; justify-content: space-between; align-items: center; padding: 13px 16px; border-bottom: 1px solid #eef2f7; font-size: 15px; }
.qz-ai-body { padding: 14px 16px; overflow-y: auto; flex: 1; font-size: 14px; line-height: 1.75; }
.qz-ai-f { padding: 11px 16px; border-top: 1px solid #eef2f7; text-align: right; }
.qz-ai-stem { background: #f8fafc; border-radius: 8px; padding: 9px 11px; font-size: 13.5px; color: #334155; margin-bottom: 12px; }
.qz-ai-no { display: inline-block; font-size: 12px; color: #4f46e5; background: #eef2ff; border-radius: 999px; padding: 2px 10px; margin-bottom: 8px; }
.qz-ai-ask { font-weight: 600; color: #1e293b; margin: 0 0 6px; }
.qz-ai-hint { color: #475569; margin: 0; }
.qz-ai-step.done .qz-ai-no { color: #16a34a; background: #f0fdf4; }
/* 反馈弹层 */
.qz-fb-q { font-size: 13px; color: #64748b; margin-bottom: 6px; }
.qz-fb-q b { font-family: Consolas, Menlo, monospace; color: #4f46e5; }
.qz-fb-stem { font-size: 13.5px; color: #334155; background: #f8fafc; border-radius: 8px; padding: 8px 11px; margin-bottom: 10px; }
.qz-fb-rs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.qz-fb-r { border: 1px solid #dbe3ec; background: #fff; border-radius: 999px; padding: 5px 14px; font-size: 13px; cursor: pointer; color: #475569; }
.qz-fb-r.on { border-color: #4f46e5; color: #4f46e5; background: #eef2ff; font-weight: 600; }
#qzFbNote { width: 100%; border: 1px solid #dbe3ec; border-radius: 8px; padding: 8px 10px; font-size: 13.5px; resize: vertical; }
/* 管理端：反馈页状态 tabs */
.bk-tabs2 { display: flex; gap: 4px; padding: 0 16px; border-bottom: 1px solid #eef2f7; }
.bk-tabs2 a { padding: 9px 14px; font-size: 13.5px; color: #64748b; cursor: pointer; border-bottom: 2px solid transparent; }
.bk-tabs2 a.on { color: #4f46e5; border-bottom-color: #4f46e5; font-weight: 600; }
.bk-tabs2 a i { font-style: normal; font-size: 11.5px; background: #f1f5f9; border-radius: 999px; padding: 0 7px; margin-left: 4px; color: #94a3b8; }

/* 题库管理顶部模块入口（网络采集 / 录题上传 / 错题反馈 集合进题库管理） */
.bk-mods { display: flex; gap: 10px; padding: 14px 16px 0; flex-wrap: wrap; }
.bk-mod { flex: 1 1 180px; display: flex; align-items: center; gap: 10px; border: 1px solid #e2e8f0; background: linear-gradient(180deg,#fbfdff,#f6f9fd); border-radius: 10px; padding: 11px 14px; cursor: pointer; text-align: left; transition: border-color .15s, box-shadow .15s; }
.bk-mod:hover { border-color: #a5b4fc; box-shadow: 0 2px 10px rgba(79,70,229,.10); }
.bk-mod .bm-ico { display: inline-flex; width: 34px; height: 34px; border-radius: 9px; background: #eef2ff; color: #4f46e5; align-items: center; justify-content: center; flex: 0 0 auto; }
.bk-mod .bm-ico svg { width: 17px; height: 17px; }
.bk-mod .bm-tt { font-size: 14px; font-weight: 600; color: #1e293b; display: flex; align-items: center; gap: 6px; position: relative; }
.bk-mod .bm-tt em { display: block; font-style: normal; font-weight: 400; font-size: 12px; color: #94a3b8; margin-top: 2px; }
.bk-mod .bm-badge { font-style: normal; font-size: 11px; background: #ef4444; color: #fff; border-radius: 999px; padding: 1px 7px; font-weight: 600; }

/* ============ 做题弹层 step 模式（做一题核对一题）+ 美化（2026-10-30） ============ */
.quiz-box.quiz-step { border-radius: 18px; }
.quiz-box.quiz-step .quiz-h { padding: 14px 18px; background: #fff; border-bottom: 1px solid #eef2f7; }
.quiz-step .quiz-h-t b { font-size: 15.5px; }
.quiz-step .quiz-h-t span { display: block; font-size: 12px; color: #94a3b8; margin-top: 2px; font-weight: 400; }
.qz-timer { font-family: Consolas, Menlo, monospace; font-size: 13px; color: #475569; background: #f1f5f9; border-radius: 6px; padding: 3px 9px; }
.qz-fs { display: inline-flex; gap: 3px; background: #f1f5f9; border-radius: 7px; padding: 2px; }
.qz-fs button { border: 0; background: transparent; font-size: 12px; color: #64748b; padding: 3px 9px; border-radius: 5px; cursor: pointer; }
.qz-fs button.on { background: #4f46e5; color: #fff; font-weight: 600; }
.quiz-box.fs-sm .quiz-body { font-size: 13.5px; }
.quiz-box.fs-md .quiz-body { font-size: 15px; }
.quiz-box.fs-lg .quiz-body { font-size: 17px; }
/* 题号导航：方块数字（参考样式） */
.quiz-step .quiz-dots { padding: 10px 18px 2px; }
.quiz-step .qz-dot { width: 30px; height: 30px; border-radius: 8px; font-size: 13px; border: 1px solid #dbe3ec; background: #fff; color: #64748b; margin: 0 4px 6px 0; }
.quiz-step .qz-dot.on { background: #4f46e5; border-color: #4f46e5; color: #fff; font-weight: 700; }
.quiz-step .qz-dot.ok { background: #f0fdf4; border-color: #86efac; color: #16a34a; }
.quiz-step .qz-dot.no { background: #fef2f2; border-color: #fca5a5; color: #dc2626; }
.quiz-step .qz-dot[disabled] { opacity: .45; cursor: not-allowed; }
/* 选项大圆角卡片 */
.quiz-step .qz-opts { gap: 10px; }
.quiz-step .qz-opt { border-radius: 12px; padding: 13px 14px; border: 1.5px solid #e5eaf1; background: #fff; box-shadow: 0 1px 2px rgba(15,23,42,.03); }
.quiz-step .qz-opt:hover { border-color: #c7d2fe; }
.quiz-step .qz-opt.on { border-color: #4f46e5; background: #f5f7ff; box-shadow: 0 2px 8px rgba(79,70,229,.12); }
.quiz-step .qz-opt .qz-l { width: 26px; height: 26px; border-radius: 8px; font-size: 13px; }
.quiz-step .qz-opt .qz-ot { font-size: inherit; }
.quiz-step .qz-fill input, .quiz-step .qz-jb { border-radius: 12px; }
/* 逐题核对结果面板 */
.qz-judge-box { margin-top: 14px; border-radius: 12px; padding: 13px 15px; border: 1.5px solid; }
.qz-judge-box.ok { background: #f0fdf4; border-color: #bbf7d0; }
.qz-judge-box.no { background: #fef7f7; border-color: #fecaca; }
.qz-jb-h { font-size: 15px; font-weight: 700; display: flex; align-items: center; gap: 7px; margin-bottom: 8px; }
.qz-judge-box.ok .qz-jb-h { color: #16a34a; }
.qz-judge-box.no .qz-jb-h { color: #dc2626; }
.qz-jb-h i { font-style: normal; display: inline-flex; width: 22px; height: 22px; border-radius: 50%; align-items: center; justify-content: center; color: #fff; font-size: 12px; }
.qz-judge-box.ok .qz-jb-h i { background: #22c55e; }
.qz-judge-box.no .qz-jb-h i { background: #ef4444; }
.qz-jb-r { font-size: 13.5px; color: #475569; margin: 4px 0; display: flex; gap: 10px; align-items: baseline; }
.qz-jb-r span { color: #94a3b8; flex: 0 0 auto; }
.qz-jb-r em { font-style: normal; font-weight: 600; }
.qz-jb-r em.ok { color: #16a34a; } .qz-jb-r em.no { color: #dc2626; }
.qz-jb-ana { margin-top: 8px; font-size: 13.5px; line-height: 1.7; color: #334155; background: #fff; border-radius: 9px; padding: 10px 12px; }
.qz-jb-ana span { color: #4f46e5; font-weight: 600; margin-right: 8px; }
/* 底部按钮：居中主按钮 */
.quiz-step .quiz-f { justify-content: center; gap: 12px; padding: 12px 18px; }
.quiz-step .quiz-f .btn.primary { min-width: 160px; border-radius: 999px; }
