/* ==========================================================================
   全局样式 —— 照「出题机」那套来（2026-09-26 晚·六改）
   底：纯白 + #F5F5F7 浅灰分区   字：近黑 #1D1D1F / 中灰 #6E6E73
   主色：苹果蓝 #0071E3，只用在主按钮 / 选中态 / 关键数字 / 入口卡图标
   形：卡片 22px 圆角、无描边、按钮统一圆角矩形、超大标题、大段留白
   去掉：渐变、emoji 图标、成段灰色小字、彩色标签堆叠
   类名全部保持原样（页面很多，改名会连坐）
   ========================================================================== */
:root{
  --brand:#0071E3; --brand-d:#0060C4; --brand-l:#EAF3FD; --brand-l2:#D5E7FB;
  --ink:#1D1D1F; --muted:#6E6E73; --faint:#86868B;
  --line:#D2D2D7; --line-2:#E8E8ED;
  --bg:#FFFFFF; --bg2:#FBFBFD; --soft:#F5F5F7; --soft2:#EEF0F2; --card:#F5F5F7;
  --red:#C0392B; --amber:#A8620A; --green:#1D8A4E; --blue:#0071E3;
  --r:22px; --r-s:12px;
  --shadow:0 2px 6px rgba(0,0,0,.04), 0 12px 32px rgba(0,0,0,.06);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.6 -apple-system,BlinkMacSystemFont,"SF Pro SC","SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  letter-spacing:-.01em;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.wrap{max-width:1080px;margin:0 auto;padding:0 26px}

/* ---------- nav ---------- */
.nav{background:rgba(255,255,255,.8);backdrop-filter:saturate(1.8) blur(18px);
  border-bottom:1px solid var(--line-2);position:sticky;top:0;z-index:50}
.nav-inner{display:flex;align-items:center;height:54px;gap:22px}
/* 左上角「返回」：点一下回上一页，没有上一页时回服务器算好的兜底页 */
.back{display:inline-flex;align-items:center;gap:4px;flex:none;
  font-size:13px;color:var(--muted);white-space:nowrap;
  border:1px solid var(--line);background:#fff;border-radius:10px;
  padding:4px 13px 4px 10px;transition:.15s}
.back:hover{color:var(--ink);border-color:var(--ink);background:#fff}
.logo{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600;letter-spacing:-.022em}
/* 出题机左上角就是一个小蓝点，不搞图形 logo */
.logo-mark{width:9px;height:9px;border-radius:3px;background:var(--brand);flex:none}
.nav-links{display:flex;gap:26px;margin-left:auto;align-items:center;font-size:14px;color:var(--ink)}
.nav-links a{padding:4px 0;border-bottom:1.5px solid transparent;transition:.15s}
.nav-links a:hover{color:var(--brand)}
.nav-links a.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:500}
.nav-links a.shut:hover{color:var(--red)}   /* 同款式，只是悬停时变红提醒「这是个危险动作」 */
.nav-warn{background:#FDF1F0;color:var(--red);padding:4px 12px;border-radius:980px;font-size:12.5px}

.main{padding:0 26px 96px;min-height:72vh}

/* ---------- hero（首页：超大居中标题） ---------- */
.hero{padding:80px 0 50px;text-align:center}
.hero .eyebrow{color:var(--muted);font-size:14px;letter-spacing:0;margin-bottom:16px}
.hero h1{font-size:clamp(38px,6vw,66px);line-height:1.06;font-weight:600;letter-spacing:-.035em;
  margin:0 auto 20px;max-width:15em}
.hero .sub{color:var(--muted);font-size:17px;max-width:34em;margin:0 auto;line-height:1.6}
.hero .note{color:var(--faint);font-size:13px;margin-top:22px}
.hero-act{display:flex;gap:14px;justify-content:center;margin-top:32px;flex-wrap:wrap}
.hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}

/* ---------- page head（内页标题，比首页小一号） ---------- */
.page-head{padding:44px 0 26px}
.page-head h1{font-size:36px;font-weight:600;letter-spacing:-.032em;margin:0;line-height:1.15}
.page-head .eyebrow{color:var(--muted);font-size:13.5px;margin-bottom:10px}
.page-head .eyebrow a:hover{color:var(--ink)}
.hint-inline{color:var(--muted);font-size:14px;margin-top:10px;display:flex;align-items:center;
  gap:9px;flex-wrap:wrap}

/* ---------- headings ---------- */
.h1{font-size:30px;font-weight:600;letter-spacing:-.03em;margin:0 0 8px}
.sub{color:var(--muted);font-size:15px;margin-bottom:26px;line-height:1.6}
.h2{font-size:18px;font-weight:600;margin:0 0 6px;letter-spacing:-.022em}
.h2s{color:var(--muted);font-size:14px;margin:0 0 20px;line-height:1.6}
.h3{font-size:15px;font-weight:600;margin:0 0 12px;letter-spacing:-.015em}

/* ---------- card（出题机那样：浅灰、无描边、大圆角） ---------- */
.card{background:var(--card);border:none;border-radius:var(--r);padding:28px 30px;margin-bottom:18px}
.card.soft{background:var(--soft)}
.card.plain{background:transparent;padding:0;margin-bottom:26px}
.grid{display:grid;gap:18px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
@media(max-width:900px){.g4,.g3,.g2{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.g4,.g3,.g2{grid-template-columns:1fr}}

/* ---------- stat ---------- */
.stat{background:transparent;border:none;padding:0}
.stat .n{font-size:34px;font-weight:600;line-height:1.1;letter-spacing:-.035em}
.stat .l{color:var(--muted);font-size:13.5px;margin-top:4px}

/* ---------- 主入口大卡（首页 / 出题页共用，照出题机的方式一/方式二） ---------- */
.entry{display:flex;flex-direction:column;background:var(--soft);border-radius:var(--r);
  padding:30px 30px 28px;transition:.2s;border:none;min-height:228px}
.entry:hover{background:var(--soft2)}
.entry .ec-ico{width:46px;height:46px;border-radius:13px;background:#fff;color:var(--brand);
  display:grid;place-items:center;margin-bottom:26px;box-shadow:0 1px 2px rgba(0,0,0,.06);flex:none}
.entry .ec-ico svg{width:23px;height:23px;display:block}
.entry .et{font-size:26px;font-weight:600;letter-spacing:-.028em;margin:0 0 10px;line-height:1.15}
.entry .ed{color:var(--muted);font-size:14px;line-height:1.65;margin:0}
.entry .em{color:var(--muted);font-size:13.5px}
.entry .ea,
.entry .ec-go{margin-top:auto;padding-top:22px;font-size:14.5px;color:var(--brand);font-weight:500}
.entry .ea::after,
.entry .ec-go::after{content:" ›"}
.entry.todo{background:var(--bg2);border:1px dashed var(--line)}
.entry.todo .ea,
.entry.todo .ec-go{color:var(--muted)}
@media(max-width:620px){.entry{min-height:0}}

/* ---------- 状态行（上传资料 / 认题入口共用） ---------- */
.slabs{}
.slab{display:flex;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}
.slab:last-child{border-bottom:none}
.slab .si{width:8px;height:8px;border-radius:50%;flex:none;background:var(--line)}
.slab .si.ok{background:var(--brand)}
.slab .si.no{background:#E0A72C}
.slab .sb{flex:1;min-width:0}
.slab .st{font-size:15px;font-weight:500}
.slab .sd{color:var(--muted);font-size:13.5px;margin-top:3px}
.slab .sa{flex:none;display:flex;gap:8px;flex-wrap:wrap}

/* ---------- 折叠区（「一般不用点」的工具都收在这儿） ---------- */
.fold{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.fold>summary{cursor:pointer;color:var(--muted);font-size:13.5px;user-select:none;list-style:none}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary::before{content:"＋ ";color:var(--faint)}
.fold[open]>summary::before{content:"− "}
.fold>summary:hover{color:var(--ink)}
.fold>summary + *{margin-top:12px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);
  background:#fff;color:var(--ink);padding:9px 18px;min-height:42px;border-radius:var(--r-s);font-size:14px;cursor:pointer;
  transition:.16s;font-family:inherit;font-weight:500;letter-spacing:-.01em}
.btn:hover{border-color:var(--ink);background:#fff}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-d);border-color:var(--brand-d)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--brand)}
/* 次要操作：浅蓝底，确保一眼看得出是按钮（不要用透明底） */
.btn.soft{background:var(--brand-l2);border-color:transparent;color:var(--brand-d)}
.btn.soft:hover{background:#C3DCF8}
.btn.ghost:hover{background:var(--brand-l);border-color:transparent}
.btn.danger{color:var(--red);border-color:#EBD7D5}
.btn.danger:hover{border-color:var(--red)}
.btn.sm{padding:6px 14px;font-size:13px;min-height:34px;border-radius:10px}
.btn.lg{padding:13px 30px;font-size:15.5px}
.btn:disabled{opacity:.38;cursor:not-allowed}
.btn:disabled:hover{border-color:var(--line);background:#fff}
.btn.primary:disabled:hover{background:var(--brand);border-color:var(--brand)}
.btn-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* ---------- form ---------- */
label{display:block;font-size:13.5px;color:var(--muted);margin:0 0 7px}
input:not([type]),input[type=text],input[type=password],input[type=number],input[type=search],input[type=email],input[type=date],input[type=tel],textarea,select{
  width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:var(--r-s);font-size:14px;
  font-family:inherit;background:#fff;color:var(--ink);outline:none;transition:.16s;letter-spacing:-.01em}
input:focus,textarea:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3.5px var(--brand-l)}
textarea{min-height:120px;resize:vertical;line-height:1.75}
.field{margin-bottom:18px}
.frow{display:grid;gap:16px 18px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));align-items:end;margin-bottom:16px}
.frow3{display:grid;gap:16px 18px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;margin-bottom:16px}
.frow>*,.frow3>*{min-width:0}
.frow .field,.frow3 .field{margin-bottom:0}
.field>label{white-space:nowrap}
.frow>label,.frow3>label{display:flex;flex-direction:column;align-items:flex-start;gap:7px;margin:0;white-space:nowrap}
@media(max-width:380px){.frow,.frow3{grid-template-columns:minmax(0,1fr)}}
.hint{font-size:12.5px;color:var(--faint);margin-top:8px;line-height:1.65;letter-spacing:0}
.check{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--ink);cursor:pointer;margin:4px 0 16px}
.check input{width:auto;margin-top:3px}

/* ---------- 难度滑块（三档，出题机与补练共用一套） ---------- */
.range{padding:2px 0 0}
.range input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--line);
  border-radius:2px;outline:none;margin:12px 0 0;padding:0;border:none}
.range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;
  width:22px;height:22px;border-radius:50%;background:#fff;border:1px solid var(--line);
  box-shadow:0 1px 4px rgba(0,0,0,.16);cursor:pointer;margin-top:-9px}
.range input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:2px}
.range .ticks{display:flex;justify-content:space-between;margin-top:11px}
.range .ticks button{border:none;background:none;font-family:inherit;font-size:13px;color:var(--faint);
  cursor:pointer;padding:2px 0;transition:.15s;letter-spacing:-.01em}
.range .ticks button:hover{color:var(--ink)}
.range .ticks button.on{color:var(--brand);font-weight:600}

/* ---------- 每道几道：胶囊一行 ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chips button{border:1px solid var(--line);background:#fff;font-family:inherit;font-size:13.5px;
  color:var(--ink);padding:7px 17px;border-radius:var(--r-s);cursor:pointer;transition:.15s}
.chips button:hover{border-color:var(--ink)}
.chips button.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:500}

/* ---------- 出题摘要（「将生成 8 道」这种一句话） ---------- */
.gen-sum{background:#fff;border-radius:var(--r-s);padding:12px 16px;font-size:14px;
  color:var(--muted);margin:4px 0 16px}
.gen-sum b{color:var(--ink);font-weight:600}

/* ---------- misc ---------- */
.tag{display:inline-block;padding:3px 10px;border-radius:7px;font-size:12.5px;background:#fff;color:var(--muted)}
.tag.b{background:var(--brand-l);color:var(--brand-d)}
.tag.r{background:#FBF0EF;color:var(--red)}
.tag.g{background:var(--brand-l);color:var(--brand-d)}
.tag.y{background:#FAF3E4;color:var(--amber)}
.tag.ok{background:var(--brand-l);color:var(--brand-d)}
.tag.wait{background:#fff;color:var(--faint)}
.empty{color:var(--faint);font-size:14px;padding:34px 0;text-align:center}
.divider{height:1px;background:var(--line-2);margin:24px 0}
.muted{color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}
.settings-data-path{overflow-wrap:anywhere}

/* toast —— 贴屏幕底部居中（2026-09-26 老师反馈：提示原来挂在页面顶上，
   在页面底部点「保存」根本看不见。fixed 之后滚到哪都看得见） */
#toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);z-index:200;display:flex;
  flex-direction:column-reverse;gap:8px;align-items:center;pointer-events:none}
.tst{background:rgba(29,29,31,.94);color:#fff;padding:10px 20px;border-radius:980px;font-size:14px;
  animation:tin .22s ease;backdrop-filter:blur(10px);box-shadow:0 8px 28px rgba(0,0,0,.18)}
.tst.err{background:rgba(192,57,43,.95)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}}

/* table */
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-weight:500;color:var(--faint);font-size:12.5px;padding:9px 10px;
  border-bottom:1px solid var(--line);white-space:nowrap;letter-spacing:0}
td{padding:13px 10px;border-bottom:1px solid var(--line-2);vertical-align:top}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:rgba(255,255,255,.7)}

/* bar */
.bar{height:5px;border-radius:3px;background:var(--line-2);overflow:hidden;min-width:70px}
.bar i{display:block;height:100%;border-radius:3px}

/* stepper */
.stepper{display:flex;align-items:center;gap:0;margin:6px 0;flex-wrap:wrap}
.step{display:flex;align-items:center;gap:10px;padding:10px 0;cursor:pointer;color:var(--muted);
  background:none;border:none;font-family:inherit;font-size:14px}
.step .sn{width:26px;height:26px;border-radius:50%;border:1px solid var(--line);display:grid;
  place-items:center;font-size:12px;font-weight:500;color:var(--faint);background:#fff;transition:.18s;flex:none}
.step.on{color:var(--ink);font-weight:500}
.step.on .sn{background:var(--brand);border-color:var(--brand);color:#fff}
.step.done .sn{background:var(--brand-l);border-color:var(--brand-l2);color:var(--brand-d)}
.step .sl{white-space:nowrap}
.sarr{color:#C7C7CC;margin:0 14px;font-size:13px;flex:none}

/* tabs */
.tabs{display:flex;gap:28px;border-bottom:1px solid var(--line-2);margin:24px 0 26px;flex-wrap:wrap}
.tab{background:none;border:none;padding:0 2px 13px;font-family:inherit;font-size:15px;
  color:var(--muted);cursor:pointer;position:relative;font-weight:500;letter-spacing:-.015em}
.tab:hover{color:var(--ink)}
.tab.on{color:var(--ink)}
.tab.on::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--brand);border-radius:2px}
.tab .tn{font-size:11.5px;color:var(--faint);margin-left:5px;font-weight:400}

/* lecture head */
.lec-head{display:flex;align-items:center;gap:16px;padding:22px 26px;background:var(--soft);
  border:none;border-radius:var(--r)}
.lec-head .ic{width:42px;height:42px;border-radius:13px;background:#fff;color:var(--brand);
  display:grid;place-items:center;flex:none}
.lec-head .tt{font-size:19px;font-weight:600;letter-spacing:-.022em}
.lec-head .mm{color:var(--muted);font-size:13.5px;margin-top:4px}
.lec-head .right{margin-left:auto}

/* resource card */
.res{background:#fff;border-radius:var(--r);padding:26px;display:flex;flex-direction:column;
  gap:6px;transition:.18s;border:none}
.res:hover{background:#fff}
.res .top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
/* 原来的 emoji 图标去掉 —— 苹果风不靠 emoji 撑场面 */
.res .ic{display:none}
.res h4{font-size:17px;font-weight:600;margin:0;letter-spacing:-.022em}
.res p{color:var(--muted);font-size:14px;line-height:1.65;margin:8px 0 0}
.res .act{margin-top:auto;padding-top:20px}

/* drop */
.drop{border:1.5px dashed var(--line);border-radius:var(--r);padding:30px 22px;text-align:center;
  background:#fff;cursor:pointer;transition:.16s}
.drop:hover,.drop.on{border-color:var(--brand);background:var(--brand-l)}
.drop .t{font-size:15px;font-weight:500;margin-bottom:5px}
.drop .s{font-size:13px;color:var(--faint)}
.drop.big{padding:48px 24px}
.drop .up{color:var(--brand);font-size:20px;margin-bottom:8px}

/* pages */
.pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px;margin-top:16px}
.pg{border:1px solid var(--line-2);border-radius:12px;overflow:hidden;cursor:pointer;background:#fff;transition:.15s;position:relative}
.pg:hover{border-color:var(--line)}
.pg.sel{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
.pg img{width:100%;display:block;background:#FAFAFB}
.pg .pn{font-size:12px;color:var(--muted);padding:6px 8px;border-top:1px solid var(--line-2);
  display:flex;justify-content:space-between;align-items:center}
.pg .psec{position:absolute;top:6px;left:6px;font-size:11px;padding:2px 8px;border-radius:980px;
  background:rgba(255,255,255,.94);color:var(--muted);border:1px solid var(--line-2);display:none;max-width:92%}
.pg .psec:not(:empty){display:inline-block}
.pg .psec.hot{background:var(--brand);color:#fff;border-color:var(--brand)}
.pg .psec.dim{background:rgba(255,255,255,.92);color:var(--faint)}

/* thumbs */
.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.thumb{position:relative;border:1px solid var(--line-2);border-radius:12px;overflow:hidden;background:#fff}
.thumb img{width:100%;display:block;cursor:zoom-in;background:#FAFAFB}
.thumb .cap{padding:10px 11px;font-size:12.5px;display:flex;justify-content:space-between;gap:6px;align-items:center;flex-wrap:wrap}
.thumb .idx{position:absolute;top:8px;left:8px;z-index:2;background:rgba(29,29,31,.72);color:#fff;font-size:11.5px;line-height:1;padding:4px 7px;border-radius:6px;font-variant-numeric:tabular-nums}
.thumb .pcls{position:absolute;top:8px;right:8px;z-index:2;background:var(--brand);color:#fff;font-size:11.5px;line-height:1;padding:4px 8px;border-radius:6px;max-width:74%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thumb .cap input{min-width:0}

/* textbook card */
.tb{background:var(--soft);border-radius:var(--r);padding:28px;transition:.2s;display:block;border:none}
.tb:hover{background:var(--soft2)}
.tb h3{margin:0 0 10px;font-size:21px;font-weight:600;letter-spacing:-.025em}
.tb .meta{color:var(--muted);font-size:12.5px;display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
.tb .track{font-size:12.5px;color:var(--brand-d);background:#fff;padding:3px 11px;border-radius:980px}
.tb .muted{font-size:13px}

/* lecture row */
.lec{display:flex;align-items:center;gap:15px;padding:16px 20px;border:none;
  border-radius:var(--r-s);margin-bottom:10px;background:#fff;transition:.15s}
.lec:hover{background:#fff;box-shadow:var(--shadow)}
.lec .no{width:38px;height:38px;border-radius:11px;background:var(--soft);color:var(--ink);
  display:grid;place-items:center;font-weight:600;flex:none;font-size:13.5px}
.lec .info{flex:1;min-width:0}
.lec .tt{font-weight:500;font-size:15px}
.lec .mm{font-size:13px;color:var(--muted);margin-top:3px}

/* markdown */
.md{font-size:15px;line-height:1.85}
.md h2{font-size:18px;font-weight:600;margin:26px 0 10px;letter-spacing:-.022em}
.md h3{font-size:16px;font-weight:600;margin:20px 0 8px}
.md p{margin:10px 0}
.md ul{margin:10px 0;padding-left:22px}
.md li{margin:5px 0}
.md strong{font-weight:600;color:var(--ink)}
.md blockquote{margin:12px 0;padding:10px 16px;background:#fff;
  border-left:2px solid var(--brand);border-radius:0 8px 8px 0;color:var(--muted);font-size:14px}
.md hr{border:none;border-top:1px solid var(--line-2);margin:22px 0}

/* progress */
.prog{display:none;margin-top:12px;font-size:14px;color:var(--muted)}
.prog.on{display:block}
.prog.done{display:block;color:var(--brand-d);background:var(--brand-l);border:none;border-radius:var(--r-s);padding:12px 15px;line-height:1.7}
.prog.err{color:var(--red);background:#FCF1F0;border:none;border-radius:var(--r-s);padding:12px 15px;line-height:1.7}
.spin{display:inline-block;width:13px;height:13px;border:2px solid var(--line-2);
  border-top-color:var(--brand);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:7px}
@keyframes sp{to{transform:rotate(360deg)}}

/* Image previews use the native dialog component in app.js. */

/* detail row */
.detail>td{background:#fff}

.foot{text-align:center;color:var(--faint);font-size:12.5px;padding:30px 0 44px;line-height:1.8}

/* 内容类型识别条（教材 / 出门测 / 课后作业） */
.ctline{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:12px 0 0;
  padding:11px 15px;background:#fff;border-radius:var(--r-s);font-size:13px;color:var(--muted)}
.ctline b{font-weight:600;color:var(--ink)}
.ctline span{white-space:nowrap}
.ctline .warn{color:var(--amber);background:#FAF3E4;padding:2px 10px;border-radius:980px}
.ctdet{margin-top:10px;font-size:13px}
.ctdet summary{cursor:pointer;color:var(--muted);padding:5px 0;user-select:none}
.ctdet summary:hover{color:var(--ink)}
table.cttab{margin-top:8px;font-size:12.5px}
table.cttab th{padding:6px 9px}
table.cttab td{padding:7px 9px}
table.cttab tr.cur{background:var(--brand-l)}
table.cttab tr.cur td{font-weight:500}

/* 页面缩略图上的放大按钮 */
.pg .zoombox{position:absolute;top:6px;right:6px;z-index:3;width:27px;height:27px;border-radius:8px;
  border:1px solid var(--line-2);background:rgba(255,255,255,.96);color:var(--muted);
  display:grid;place-items:center;cursor:zoom-in;opacity:0;transition:.15s;font-size:13px;line-height:1}
.pg:hover .zoombox{opacity:1}
.pg .zoombox:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.pg .zoombox:focus{opacity:1;outline:2px solid var(--brand)}

/* 成功态提示条（补全讲次、姓名校正等用完就长在页面上） */
.hint.ok{color:var(--brand-d);background:var(--brand-l);border:none;
  border-radius:var(--r-s);padding:12px 15px;margin-top:12px;font-size:13.5px;line-height:1.7}

/* 姓名：花名册里查无此人时必须一眼看得出来，不能含混 */
.nameless{color:var(--amber);font-weight:500}
.tag.warn{background:#FAF3E4;color:var(--amber)}

/* ===== 出题机 / 补练 / 学生档案（2026-09-26） ===== */

/* 分段开关：按学生 / 按全班 这种「二选一」 */
.seg{display:inline-flex;background:#fff;border-radius:980px;padding:3px;gap:2px}
.seg button{border:none;background:none;font-family:inherit;font-size:14px;color:var(--muted);
  padding:8px 22px;border-radius:980px;cursor:pointer;transition:.15s;font-weight:500}
.seg button:hover{color:var(--ink)}
.seg button.on{background:var(--soft);color:var(--ink)}

/* 题目卡：题面 + 选项 + 答案/解析，母题和生成题共用 */
.q{border:none;border-radius:var(--r-s);background:#fff;padding:18px 20px;margin-bottom:12px}
.q .qh{display:flex;align-items:center;gap:9px;margin-bottom:11px;flex-wrap:wrap}
.q .qno{width:26px;height:26px;border-radius:8px;background:var(--soft);color:var(--ink);
  display:grid;place-items:center;font-size:12.5px;font-weight:600;flex:none}
.q .stem{font-size:15px;line-height:1.8;white-space:pre-wrap;word-break:break-word}
.q .opts{margin:10px 0 0;padding:0;list-style:none;display:grid;gap:6px}
.q .opts li{font-size:14px;color:var(--ink);padding-left:2px}
.q .ans{margin-top:12px;padding:12px 15px;background:var(--soft);border-radius:9px;
  font-size:13.5px;line-height:1.8;color:var(--ink)}
.q .ans b{font-weight:600;color:var(--brand-d)}
.q .ana{margin-top:9px;padding:12px 15px;background:#FCFCFD;border:none;
  border-radius:9px;font-size:13.5px;line-height:1.8;color:var(--muted)}
.q .mother{background:#FCFCFD;border:1px dashed var(--line);border-radius:var(--r-s);padding:13px 16px;
  margin-bottom:14px;font-size:13.5px;line-height:1.8;color:var(--muted)}
.q .mother .lb{font-size:11.5px;letter-spacing:.05em;color:var(--faint);display:block;margin-bottom:5px}
.q img.fig{max-width:100%;border-radius:8px;margin-top:10px;border:1px solid var(--line-2)}

/* 可点选的行（学生列表、班级列表） */
.pick{display:flex;align-items:center;gap:12px;padding:13px 16px;border:none;
  border-radius:var(--r-s);background:#fff;cursor:pointer;transition:.15s;text-align:left;width:100%;
  font-family:inherit;font-size:14px;color:var(--ink)}
.pick:hover{background:#fff;box-shadow:var(--shadow)}
.pick.on{background:var(--brand-l);box-shadow:0 0 0 2px var(--brand-l)}
.pick .nm{font-weight:500;min-width:76px}
.pick .mt{color:var(--muted);font-size:13px}
.pick .rt{margin-left:auto;font-size:13px;color:var(--faint);white-space:nowrap}
.picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(248px,1fr));gap:9px;
  max-height:342px;overflow:auto;padding:2px;margin-top:4px}
.picks.narrow{max-height:250px}

/* 档案页 */
.dossier-head{display:flex;align-items:center;gap:18px;padding:26px 28px;background:var(--soft);
  border:none;border-radius:var(--r);margin-bottom:18px}
.dossier-head .av{width:56px;height:56px;border-radius:16px;background:#fff;color:var(--brand-d);
  display:grid;place-items:center;font-size:21px;font-weight:600;flex:none;letter-spacing:.5px}
.dossier-head .nm{font-size:25px;font-weight:600;letter-spacing:-.03em}
.dossier-head .mt{color:var(--muted);font-size:13.5px;margin-top:4px}
.dossier-head .rt{margin-left:auto;text-align:right}

/* 流水时间线 */
.tl{position:relative;padding-left:22px}
.tl::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--line-2)}
.tl .ev{position:relative;padding:0 0 18px}
.tl .ev::before{content:"";position:absolute;left:-21px;top:6px;width:9px;height:9px;border-radius:50%;
  background:#fff;border:2px solid var(--line)}
.tl .ev.hot::before{background:var(--brand);border-color:var(--brand)}
.tl .ev .tt{font-size:14.5px;font-weight:500}
.tl .ev .dt{font-size:12.5px;color:var(--faint);margin-top:3px}
.tl .ev .dd{font-size:13.5px;color:var(--muted);margin-top:5px;white-space:pre-wrap;line-height:1.75}

/* 打印视图 */
@media print{
  .nav,.foot,.no-print{display:none !important}
  body{background:#fff}
  .wrap{max-width:none;padding:0}
  .card{background:#fff;border:none;padding:0}
  .fold>summary{display:none}
  .fold>div,.fold>*{display:block !important}
  .q{break-inside:avoid;page-break-inside:avoid;border:1px solid #DDD}
}
.paper-print{max-width:760px;margin:0 auto}
.paper-print h1{font-size:20px;font-weight:600;text-align:center;margin:0 0 4px}
.paper-print .sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:6px}
.paper-print .blank{display:inline-block;border-bottom:1px solid #999;min-width:70px;margin:0 4px}

/* ---------- 个人错题本：按知识点分组的折叠卡 ---------- */
.kp{border:none;border-radius:var(--r-s);background:#fff;margin-bottom:12px;overflow:hidden}
.kp .kph{display:flex;align-items:center;gap:11px;padding:15px 18px;flex-wrap:wrap;
  background:#fff;border-bottom:1px solid var(--line-2)}
.kp.closed .kph{border-bottom:none}
.kp .kph .kn{font-size:15.5px;font-weight:600;letter-spacing:-.02em;cursor:pointer}
.kp .kph .rt{margin-left:auto;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.kp .kpb{padding:14px 18px 6px}
.kp.closed .kpb{display:none}
.kp .chev{transition:transform .16s ease;color:var(--faint);font-size:11px;cursor:pointer;
  display:inline-block;width:12px;text-align:center}
.kp.closed .chev{transform:rotate(-90deg)}
.kp .qi{display:flex;gap:11px;padding:13px 0;border-bottom:1px solid var(--line-2)}
.kp .qi:last-child{border-bottom:none}
.kp .qi .cb{padding-top:4px}
.kp .qi .bd{flex:1;min-width:0}
.kp .qi .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px;
  font-size:12.5px;color:var(--faint)}
.kp .qi .tm{font-size:14px;line-height:1.8;white-space:pre-wrap;word-break:break-word}
.kp .qi .aw{margin-top:7px;font-size:13px;display:flex;gap:18px;flex-wrap:wrap}

/* ---------- 错题本打印版 ---------- */
.wb-print{max-width:760px;margin:0 auto}
.wb-print h1{font-size:20px;font-weight:600;text-align:center;margin:0 0 4px}
.wb-print .sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:18px;line-height:1.8}
.wb-print .kh{font-size:15px;font-weight:600;margin:24px 0 2px;padding-bottom:6px;
  border-bottom:1px solid #CCC}
.wb-print .kh .rc{float:right;font-size:12px;font-weight:400;color:#888}
.wb-print .pi{padding:13px 0;border-bottom:1px dashed #E3E3E3}
.wb-print .pi .no{font-size:12px;color:#888;margin-bottom:5px}
.wb-print .pi .tm{font-size:14px;line-height:1.9;white-space:pre-wrap;word-break:break-word}
.wb-print .pi .lines{margin-top:10px}
.wb-print .pi .lines i{display:block;height:23px;border-bottom:1px solid #DDD}
.wb-print .pi .aw{margin-top:8px;font-size:13px;color:#444;line-height:1.9}
.wb-print .pi .aw b{color:#111}
.wb-bar{position:sticky;top:0;z-index:9;display:flex;gap:10px;align-items:center;
  padding:12px 0 14px;background:var(--bg);border-bottom:1px solid var(--line-2);margin-bottom:18px}
@media print{
  .kp{break-inside:auto}
  .wb-print .pi{break-inside:avoid;page-break-inside:avoid}
  .wb-bar{display:none !important}
}

/* ==========================================================================
   细节精进（2026-09-26 晚 · 贾老师要的「苹果那味儿」再进一步）
   原则：产品功能优先，美化只做减法和质感 —— 毛玻璃、柔和投影、焦点光圈、
   可交互卡片的轻微悬浮。不加渐变、不加彩色。
   ========================================================================== */
html{scroll-behavior:smooth}
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* 交互卡片：悬浮时轻微上浮 + 阴影加深（入口卡 / 教材卡） */
.entry,.tb{transition:transform .22s cubic-bezier(.2,.6,.2,1),box-shadow .22s}
.entry:hover,.tb:hover{transform:translateY(-3px);
  box-shadow:0 2px 6px rgba(0,0,0,.04),0 18px 44px rgba(0,0,0,.10)}

/* 卡片：加一层几乎看不见的柔和投影，层次感出来但不「卡片堆」 */
.card{box-shadow:0 1px 2px rgba(0,0,0,.03)}

/* 主按钮：苹果那种「浮起来一点」的胶囊 */
.btn.primary{box-shadow:0 1px 2px rgba(0,113,227,.25),0 6px 16px rgba(0,113,227,.16)}
.btn.primary:hover{box-shadow:0 2px 4px rgba(0,113,227,.28),0 10px 22px rgba(0,113,227,.22)}

/* 输入框聚焦：品牌色光圈（全局原本有，这里统一过渡动画） */
input,select,textarea{transition:border-color .15s,box-shadow .15s,background .15s}

/* 顶栏毛玻璃再柔一点：饱和度提高、底部发丝线更淡 */
.nav{background:rgba(255,255,255,.72);backdrop-filter:saturate(1.9) blur(22px);
  -webkit-backdrop-filter:saturate(1.9) blur(22px);
  border-bottom:1px solid rgba(0,0,0,.055)}

/* toast 本身就是毛玻璃胶囊，加一层投影让它从任何背景上浮起来 */
.tst{box-shadow:0 8px 30px rgba(0,0,0,.22)}

/* 滚动条：细一点、淡一点（WebKit） */
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:rgba(0,0,0,.16);border-radius:8px;
  border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.28);border:2px solid transparent;background-clip:content-box}
::-webkit-scrollbar-track{background:transparent}

/* 页面标题：更接近苹果官网的内页头（小、静、重排版） */
.page-head h1{letter-spacing:-.022em}
.page-head .sub{color:var(--muted);font-size:14px;margin:6px 0 0}

/* 出题参数控件（2026-09-26 十改）：数量=滑块，难度=三段胶囊 */
.segs{display:inline-flex;background:var(--gray-l,#F5F5F7);border-radius:980px;padding:3px;gap:2px}
.segs button{border:none;background:transparent;color:var(--muted);font-size:13px;
  padding:6px 16px;border-radius:980px;cursor:pointer;font-family:inherit;transition:.15s}
.segs button:hover{color:var(--ink)}
.segs button.on{background:#fff;color:var(--ink);font-weight:600;
  box-shadow:0 1px 3px rgba(0,0,0,.12)}
.perrange{width:min(320px,100%);accent-color:var(--brand);height:26px}

/* 题库题干：多行自动增高（2026-09-27） */
textarea.stem-in{width:100%;min-width:300px;padding:6px 9px;font-size:12.5px;line-height:1.7;
  font-family:inherit;border:1px solid transparent;border-radius:9px;background:transparent;
  resize:vertical;overflow-y:auto;display:block;
  white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere}
textarea.stem-in:hover{border-color:var(--line);background:#fff}
textarea.stem-in:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3.5px var(--brand-l)}

/* 题库「标准答案」列：淡蓝底表示这是核对区；没读到答案的用琥珀色提示（2026-09-27） */
textarea.ans-in{background:#F7FAFE;border-color:#E3EDF9}
textarea.ans-in:hover{background:#fff;border-color:var(--brand)}
textarea.ans-in.miss{background:#FDF6EE;border-color:#EBD9C6}
textarea.ans-in.miss::placeholder{color:#B26A00}

/* 答卷身份选择器保留原生值，搜索触发器负责完整班名与统一样式。 */
select.cls-sel,select.name-sel{padding:3px 6px;font-size:12.5px;border:1px solid var(--line);
  border-radius:8px;background:#fff;font-family:inherit;max-width:100%}
select.cls-sel{width:100%}
select.name-sel{width:100%}
select.name-sel:focus,select.cls-sel:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}

/* 2026-10-13 作业检查 */
.g5{grid-template-columns:repeat(5,minmax(0,1fr))}.hw-heading{display:flex;justify-content:space-between;gap:24px;align-items:center;margin:20px 0 30px}.hw-heading h1{margin:6px 0;font-size:40px}.hw-controls{display:flex;gap:20px;align-items:end;flex-wrap:wrap}.hw-controls label{display:flex;flex-direction:column;gap:8px}.hw-controls select,.hw-controls input{min-width:170px}.hw-books{display:flex;gap:18px;flex-wrap:wrap;padding-bottom:12px}.hw-books label{display:block}.hw-books input{min-width:0;width:auto}.hw-table-wrap{overflow:auto;border-radius:22px;background:#fff}.hw-table{min-width:1000px;width:100%;border-collapse:separate;border-spacing:0}.hw-table th,.hw-table td{padding:18px;vertical-align:top;border-bottom:1px solid #e8e8ed}.hw-table th{background:#f5f5f7;color:#1d1d1f}.hw-table th:first-child,.hw-table td:first-child{position:sticky;left:0;z-index:1;background:#fff;min-width:115px}.hw-table td{min-width:200px}.hw-table td label{display:flex;align-items:center;gap:7px;font-size:12px;margin-bottom:8px}.hw-table select{width:115px;padding:8px}.hw-table input:not([type=checkbox]){width:100%;font-size:12px}.hw-table input[type=checkbox]{width:auto}.hw-table textarea{min-height:90px;min-width:190px;width:100%;font-size:13px}.hw-report-link{display:block;font-size:12px;color:#0071e3;margin-top:8px}.hw-batch{display:block;border:0;background:none;color:#0071e3;font-size:11px;padding:8px 0 0;cursor:pointer}.hw-save{position:sticky;bottom:12px;display:flex;justify-content:flex-end;align-items:center;gap:18px;margin-top:20px;padding:14px 20px;border-radius:20px;background:rgba(255,255,255,.96);box-shadow:0 4px 30px #00000012;z-index:3}.hw-save span{margin-right:auto;font-size:13px}.hw-history{display:flex;gap:12px;flex-wrap:wrap}[hidden]{display:none!important}@media(max-width:1100px){.g5{grid-template-columns:repeat(3,minmax(0,1fr))}.nav-links{gap:12px}}@media(max-width:650px){.g5{grid-template-columns:repeat(2,minmax(0,1fr))}.hw-heading{align-items:start}.hw-heading h1{font-size:30px}.hw-save{flex-wrap:wrap}.hw-controls{gap:12px}.hw-heading>p{max-width:80%}}

.hw-controls input[type=date]{padding:11px 14px;border:1px solid #d2d2d7;border-radius:12px;background:#fff;font:inherit}.hw-heading>.btn{white-space:nowrap;flex:none}
@media(max-width:700px){.nav-inner{height:auto;min-height:54px;flex-wrap:wrap;padding-top:12px;padding-bottom:10px;gap:8px}.logo{white-space:nowrap}.nav-links{width:100%;overflow-x:auto;gap:20px;margin:0}.nav-links a{white-space:nowrap;flex:none}.hw-save{position:static;padding:16px;gap:10px}.hw-save span{flex-basis:100%}.hw-save .btn{font-size:12px;padding:10px 12px}.hw-heading{gap:12px}.hw-heading>.btn{font-size:12px;padding:9px}.hw-controls select{max-width:100%}}

/* 第23轮：分类题库 */
#question-bank,#generate-section{scroll-margin-top:80px}.bank-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:20px 0}.bank-filters input{width:100%;padding:11px 14px;border:1px solid #d2d2d7;border-radius:12px;font:inherit}.bank-path{font-size:12px;color:#626970;margin:4px 0 12px;line-height:1.7}.bank-question details{margin:14px 0;font-size:13px}.bank-question summary{color:#0071e3;cursor:pointer}.bank-question .qh{justify-content:space-between}.bank-question .qh label{margin:0;color:#1d1d1f}.bank-cart{padding-top:24px;border-top:1px solid #e8e8ed}.bank-picked-row{display:flex;gap:12px;align-items:start;margin:14px 0;font-size:13px}.bank-picked-row>span{flex:1}.bank-picked-row small{display:block;color:#6e6e73;margin-top:5px}.bank-cart input{max-width:320px}.bank-dialog{border:0;border-radius:22px;padding:28px;width:min(640px,92vw);max-height:85vh;box-shadow:0 20px 90px #0003}.bank-dialog::backdrop{background:#0005}.bank-dialog p{font-size:13px;line-height:1.8}.bank-dialog [role=alert]{color:#b42318}.bank-dialog select,.bank-dialog input{box-sizing:border-box}@media(max-width:650px){.bank-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.bank-cart input{max-width:100%}}

#bank-cart{scroll-margin-top:90px}.bank-question .qh{flex-wrap:wrap}@media(max-width:650px){#question-bank{padding:18px}.bank-question{padding:14px}.bank-filters{gap:12px}}
/* PDF资料与可编辑题库 */
.document-row{display:grid;gap:9px;padding:22px 0;border-bottom:1px solid #e8e8ed;color:var(--text);text-decoration:none}.document-row span{font-size:14px}.document-page{padding:24px 0;border-bottom:1px solid #e8e8ed}.document-page form{margin-top:14px}.document-page form label{flex:1;max-width:600px}.issue{color:#925c16}.bank-source{margin:12px 0;font-size:14px}.bank-review-note{margin:12px 0;padding:12px 16px;background:#f5f5f7;border-radius:12px}.bank-question .fig{max-width:100%;max-height:480px;object-fit:contain}.bank-content-dialog{width:min(900px,95vw);max-height:92vh;overflow:auto;border:0;border-radius:22px;padding:30px}.bank-content-dialog::backdrop{background:#0006}.bank-content-dialog textarea{min-height:110px;width:100%;box-sizing:border-box}.bank-content-dialog label{margin:14px 0}.bank-content-dialog .original-preview{max-width:100%;max-height:380px;object-fit:contain}.bank-refs-row{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.bank-refs-row label{max-width:220px}.bank-refs-row input[type=number]{width:100%}@media(max-width:600px){.bank-content-dialog{padding:20px}.document-page .btn-row{align-items:stretch}.document-page form label{width:100%}}

/* 出题工作区：独立任务页与可搜索目录 */
input[type=search]{width:100%;padding:11px 14px;border:1px solid var(--line);border-radius:14px;font:inherit;font-size:14px;background:#fff;outline:none;min-height:44px}
input[type=search]:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l)}
select{appearance:none;-webkit-appearance:none;min-height:44px;padding-right:38px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236E6E73' stroke-width='1.8' 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 13px center;cursor:pointer;line-height:1.5}
select:hover{border-color:#A7A7AE}select:disabled{opacity:.55;cursor:default}
.page-intro{margin:12px 0 0;color:var(--muted);font-size:15px}
.workspace-tabs{display:flex;gap:6px;padding:5px;background:var(--soft);border-radius:16px;width:fit-content;max-width:100%;margin-bottom:26px}
.workspace-tabs a{padding:10px 20px;border-radius:12px;font-size:14px;white-space:nowrap;transition:.15s}
.workspace-tabs a:hover{color:var(--brand)}.workspace-tabs a[aria-current=page]{background:#fff;color:var(--brand);font-weight:600;box-shadow:0 2px 5px #00000008}
.workflow-links{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 24px;font-size:14px;color:var(--muted)}.workflow-links a{color:var(--brand)}
.point-tools{display:grid;grid-template-columns:1fr 1.3fr;gap:14px;margin-bottom:14px;max-width:720px}
.point-tools label{margin:0}.point-tools input,.point-tools select{margin-top:6px}
.search-picker{position:relative;margin:0;width:100%;color:var(--ink);font-size:14px}
select.picker-native{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none;padding:0;min-height:0}
.picker-trigger{width:100%;min-height:44px;padding:10px 38px 10px 14px;border:1px solid var(--line);border-radius:var(--r-s);background:#fff;text-align:left;cursor:pointer;font:inherit;line-height:1.5;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picker-trigger::after{content:'';position:absolute;right:16px;top:17px;width:7px;height:7px;border:solid var(--muted);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
.picker-trigger:hover{border-color:#A7A7AE}.picker-trigger:focus-visible,.picker-trigger[aria-expanded=true]{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px var(--brand-l)}
.picker-popup{position:absolute;z-index:120;background:#fff;border:1px solid var(--line-2);box-shadow:var(--shadow);border-radius:18px;padding:10px;display:flex;flex-direction:column;gap:8px;max-height:390px}
.picker-popup[hidden]{display:none}.picker-popup input{flex:none;font-size:14px}.picker-options{overflow:auto;overscroll-behavior:contain;min-height:40px;scroll-padding:6px}.picker-count{font-size:12px;padding:0 8px;color:var(--muted);flex:none}
.picker-option{display:block;width:100%;border:0;border-radius:9px;padding:10px 12px;text-align:left;background:transparent;color:var(--ink);font:inherit;font-size:14px;line-height:1.5;cursor:pointer}
.picker-option:hover,.picker-option.highlight{background:var(--soft)}.picker-option[aria-selected=true]{background:var(--brand-l);color:var(--brand-d);font-weight:500}.picker-group{padding:12px 12px 5px;font-size:12px;font-weight:600;color:var(--muted)}
.bank-source-scope{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0;color:var(--muted);font-size:14px}.bank-source-scope strong{color:var(--ink)}.bank-source-scope>a:not(.btn){color:var(--brand)}
.bank-filters{gap:14px 18px}.bank-filters label{margin:0}.bank-filters select,.bank-filters input,.bank-filters .search-picker{margin-top:6px}
.bank-selection-bar{position:sticky;bottom:18px;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 18px;background:#fff;border:1px solid var(--line-2);box-shadow:var(--shadow);border-radius:18px;margin:16px 0}.bank-selection-bar span{font-size:14px;color:var(--muted)}
#bank-cart{scroll-margin-top:80px}#bank-picked{max-height:340px;overflow:auto}.bank-question{background:#fff;border:1px solid var(--line-2);border-radius:18px;padding:22px}.bank-path{line-height:1.7}.bank-review-note{line-height:1.7}
.document-row{position:relative}.document-manage{font-size:13px;color:var(--brand)!important}
@media(max-width:640px){.main{padding-left:0;padding-right:0}.main>.wrap{padding-left:18px;padding-right:18px}.workspace-tabs{width:100%;gap:2px}.workspace-tabs a{flex:1;text-align:center;padding:10px 7px;font-size:13px}.point-tools{grid-template-columns:1fr}.bank-selection-bar{bottom:10px;padding:10px 12px}.bank-selection-bar span{font-size:12px}.bank-question{padding:16px}.page-head h1{font-size:30px}.picker-popup{border-radius:14px}}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.page-head>.btn{flex:none}
.bank-selection-bar{top:70px;bottom:auto}
@media(max-width:700px){.bank-selection-bar{top:110px;bottom:auto}.page-head{gap:16px}}
.table-scroll{width:100%;overflow-x:auto;overscroll-behavior-x:contain}.table-scroll table{min-width:580px}
input[type=file]{display:block;width:100%;max-width:100%;padding:12px;border:1px dashed var(--line);border-radius:14px;background:#fff;font:inherit;color:var(--muted);margin-top:8px}
input[type=file]::file-selector-button{border:0;border-radius:10px;background:var(--soft);padding:9px 14px;font:inherit;color:var(--ink);margin-right:12px;cursor:pointer}
input[type=file]:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.ocr-settings{padding:22px;margin:24px 0;border:1px solid var(--line-2);border-radius:18px;background:#fff}.ocr-settings h3{margin:0 0 12px}.ocr-settings p{font-size:14px;line-height:1.8}.ocr-settings a:not(.btn){color:var(--brand)}.quality-question .fig{display:block;max-height:none;width:auto;max-width:100%;margin:20px 0}.quality-question .stem{white-space:pre-wrap}
.vector-dialog{border:0;border-radius:22px;padding:26px;width:min(1040px,94vw);max-height:92vh;overflow:auto;box-shadow:var(--shadow)}.vector-dialog::backdrop{background:#0005}.vector-dialog h2{margin:0}.vector-dialog>p{font-size:14px}.vector-grid{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:22px;margin:18px 0}.vector-tools{display:flex;gap:8px;flex-wrap:wrap}.vector-canvas{border:1px solid var(--line-2);border-radius:14px;background:#fff;padding:8px;align-self:start;touch-action:none}.vector-canvas svg{width:100%;max-height:600px;display:block}.vector-canvas [data-index]{cursor:move}.vector-selected{filter:drop-shadow(0 0 3px #0071e3)}.vector-properties{max-height:580px;overflow:auto}.vector-properties label{margin:12px 0}.vector-properties input{width:100%}.vector-error{color:var(--red)}@media(max-width:680px){.vector-grid{grid-template-columns:1fr}.vector-properties{max-height:300px}.vector-dialog{padding:18px}}
.vector-tools>label{width:130px;margin:0}.vector-canvas svg{height:auto}.quality-history{padding:18px;border:1px solid var(--line-2);border-radius:16px;margin-bottom:18px}.quality-history p{margin:12px 0}

/* 书架与逐级选题 */
.library-crumbs{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 24px;font-size:13px;color:var(--muted)}.library-crumbs a{color:var(--brand)}.library-tools{display:grid;grid-template-columns:2fr 1fr 1fr;gap:18px;margin-bottom:28px}.library-tools label{margin:0}.library-tools input,.library-tools select{margin-top:8px}.bookshelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:28px;margin-bottom:36px}.library-book{display:block;min-width:0;color:var(--ink)}.book-cover{height:254px;border-radius:8px 18px 18px 8px;padding:22px 23px 22px 31px;background:linear-gradient(145deg,#e5f0ec,#c9ded6);position:relative;display:flex;flex-direction:column;box-shadow:2px 5px 13px #264d3820,inset 7px 0 0 #ffffff70,inset 9px 0 0 #aec9bd60;border:1px solid #cbded4}.book-cover.generated{background:linear-gradient(145deg,#e6eefb,#cdddf4);border-color:#c9d7ec;box-shadow:2px 5px 13px #27456820,inset 7px 0 0 #ffffff70,inset 9px 0 0 #afc3e160}.book-kind{font-size:12px;color:#445d54;letter-spacing:2px}.book-cover strong{margin:26px 0;font-size:23px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;font-weight:600}.book-cover-bottom{margin-top:auto;display:flex;justify-content:space-between;align-items:center;font-size:12px;gap:10px;color:#445d54}.book-cover-bottom span{border:1px solid #849f9270;padding:3px 8px;border-radius:12px;white-space:nowrap}.book-info{padding:15px 3px 0;display:flex;flex-direction:column;gap:7px}.book-info strong{font-size:15px;line-height:1.6}.book-info span,.book-info small{font-size:12px;line-height:1.6;color:var(--muted)}.book-info small{white-space:pre-wrap;max-height:60px;overflow:hidden}.book-info .book-cleared{color:#856641}.book-details{padding:28px}.book-detail-head{display:flex;justify-content:space-between;gap:18px;align-items:center;flex-wrap:wrap}.book-detail-head h2{margin:10px 0}.book-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:20px 0 24px}.book-facts dt{font-size:12px;color:var(--muted)}.book-facts dd{margin:8px 0 0;font-size:14px}.book-details textarea{min-height:75px;max-height:180px;width:100%;resize:vertical}.directory-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:28px 0 20px}.directory-heading h2{font-size:22px;margin:0}.directory-heading input{max-width:360px}.directory-heading .muted{font-size:13px;margin-left:8px}.point-group{margin-bottom:26px}.point-group h3{font-size:15px;margin:0 0 12px;color:var(--muted);font-weight:500}.point-directory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.point-directory-link{padding:19px 20px;background:#fff;border:1px solid var(--line);border-radius:17px;display:flex;align-items:center;gap:15px;justify-content:space-between}.point-directory-link strong{font-size:15px;line-height:1.5}.point-directory-link small{display:block;font-size:12px;line-height:1.6;margin-top:7px;color:var(--muted)}.point-directory-link>span{white-space:nowrap;color:var(--brand);font-size:13px}.bank-leaf-tools{display:grid;grid-template-columns:2fr 1fr auto;gap:16px;align-items:end;margin:22px 0}.bank-leaf-tools label{margin:0}.bank-leaf-tools input,.bank-leaf-tools select{margin-top:8px}.bank-cart{background:#fff;border:1px solid var(--line);border-radius:22px;padding:26px;margin-top:30px}.bank-cart>p{font-size:13px}#bank-list .q{margin-top:18px}#bank-status{margin-top:15px;font-size:13px;color:var(--muted)}[hidden]{display:none!important}
@media(max-width:700px){.library-tools{grid-template-columns:1fr 1fr;gap:12px}.library-tools label:first-child{grid-column:1/-1}.bookshelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 16px}.book-cover{height:235px;padding:18px 14px 18px 22px}.book-cover strong{font-size:18px;margin:20px 0}.book-cover-bottom{flex-wrap:wrap}.book-facts{grid-template-columns:1fr 1fr}.book-details,.bank-cart{padding:20px}.directory-heading{flex-wrap:wrap}.directory-heading input{max-width:none}.point-directory-grid{grid-template-columns:1fr}.bank-leaf-tools{grid-template-columns:1fr 1fr}.bank-leaf-tools label:first-child{grid-column:1/-1}.bank-cart input[type=text]{max-width:100%}}
/* 轻微抬升与图标回应，减少动态偏好下停用 */
.btn,.pick,.segs button,.seg button,.entry,.library-book,.point-directory-link,.document-row,.picker-trigger,.nav-links a{transition:transform .2s ease,box-shadow .2s ease,background-color .2s ease,border-color .2s ease,color .2s ease}.entry .ec-ico svg,.nav .logo-mark{transition:transform .25s ease}.btn:active,.pick:active,.segs button:active,.seg button:active{transform:scale(.97)}.btn:focus-visible,.library-book:focus-visible,.point-directory-link:focus-visible,.pick:focus-visible{outline:3px solid #91bdfa;outline-offset:4px}
@media(hover:hover) and (pointer:fine){.btn:not(:disabled):hover,.pick:hover,.segs button:hover,.seg button:hover,.picker-trigger:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000009}.library-book:hover{transform:translateY(-5px)}.point-directory-link:hover,.document-row:hover{transform:translateY(-3px);border-color:#bed1ea;box-shadow:0 8px 22px #00000007}.entry:hover .ec-ico svg{transform:scale(1.09) rotate(-3deg)}.nav-links a:hover{transform:translateY(-1px)}.nav .logo:hover .logo-mark{transform:rotate(12deg)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.btn,.pick,.entry,.library-book,.point-directory-link,.document-row,.picker-trigger,.nav-links a,.ec-ico svg,.logo-mark{transform:none!important}}
@media print{*,*::before,*::after{animation:none!important;transition:none!important;transform:none!important}}
@media print{.gaodu-logo img{transform:translateY(-50%)!important}}

/* 资料管理与明显的多选区域 */
.library-book-link{display:block;color:inherit}.book-actions{display:flex;gap:8px;margin-top:12px}.book-actions .btn{flex:1}.library-book-link:focus-visible{outline:3px solid #91bdfa;outline-offset:4px;border-radius:16px}.book-manage-dialog{width:min(640px,calc(100vw - 40px));box-sizing:border-box}.book-manage-dialog label{display:block;margin:18px 0}.book-manage-dialog input,.book-manage-dialog select,.book-manage-dialog textarea{width:100%;box-sizing:border-box;min-height:46px}.book-manage-dialog textarea{min-height:110px}.book-manage-dialog .frow label{margin-top:0}.book-manage-dialog h2{margin-top:0}.book-manage-dialog p{line-height:1.7}#document-name-form{align-items:end}#document-name-form label{min-width:240px;margin:0}#document-name-form input{width:100%;min-height:46px;box-sizing:border-box;margin-top:8px}#document-name-message{flex-basis:100%;font-size:13px}.bank-bulk-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.bank-bulk-actions span{font-size:12px;color:var(--muted)}.bank-selection-bar{align-items:center;gap:16px;flex-wrap:wrap}#bank-list{position:relative}.bank-question{position:relative;transition:border-color .15s,box-shadow .15s;background:#fff!important;border:1px solid var(--line)!important;padding-left:76px!important}.bank-question.is-picked{border-color:#6ba9ed!important;box-shadow:inset 4px 0 0 #0071e3;background:#f8fbff!important}.bank-pick-zone{position:absolute;left:10px;top:12px;bottom:12px;width:52px;margin:0;display:flex;align-items:flex-start;justify-content:center;padding-top:3px;cursor:pointer;user-select:none;border-radius:12px}.bank-pick-zone:hover{background:#edf5ff}.bank-pick-zone input{appearance:none;-webkit-appearance:none;width:28px;height:28px;margin:8px 0;padding:0;border:2px solid #a7b5c6;border-radius:8px;display:block;flex:none;background:white;cursor:pointer}.bank-pick-zone input:checked{background:var(--brand);border-color:var(--brand);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4 10-10'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:center}.bank-pick-zone input:focus-visible{outline:3px solid #91bdfa;outline-offset:4px}.bank-pick-zone input:disabled{cursor:default;background:#f2f2f4;border-color:#d5d8df}.bank-pick-zone:has(input:disabled){cursor:default}.bank-select-overlay{position:fixed;pointer-events:none;z-index:50;border:1px solid #70a9ed;background:#0071e318;border-radius:10px}.bank-dragging{user-select:none;cursor:ns-resize}.bank-question .pick-state{font-size:13px;color:var(--brand);font-weight:500}.bank-question .pick-state.pending{color:var(--muted)}@media(max-width:650px){.bank-question{padding-left:66px!important}.bank-pick-zone{width:44px;left:8px}.book-actions{flex-wrap:wrap}.book-manage-dialog{padding:22px}.bank-bulk-actions span{flex-basis:100%}#document-name-form label{min-width:0;width:100%;flex-basis:100%}}

/* Equivalent choice controls use the same rounded rectangle. */
.chip,.segs button,.seg button,.pick{border-radius:var(--r-s)}
/* Round 48: native and custom selectors inherit the page's system font.
   No borders, backgrounds, spacing, or button geometry are introduced. */
select,option,optgroup,.picker-trigger,.picker-option,.picker-count{font-family:inherit;font-style:normal;font-variant:normal}
.track-sel,.move-sel{font-family:inherit;letter-spacing:normal;font-feature-settings:normal}
.track-sel{font-size:13px;font-weight:500}

@media screen{.fig[data-dimension-figure]{display:block;width:min(100%,380px);height:auto;margin:16px auto;object-fit:contain}.fig[data-dimension-figure="wide"]{width:min(100%,620px)}}

/* 2026-10-31 教辅卡片：识别状态单独一行，别再做成一个点了会跳走的按钮 */
.aux-state{display:inline-block;font-size:12.5px;color:#6e6e73;line-height:1.35;max-width:100%}

/* 11-03：控件按内容收宽，保留既有容器与业务布局。 */
body .main select:not(.picker-native){width:auto;min-width:0;max-width:100%;padding-left:8px;padding-right:24px}
body .main input[type=text],body .main input[type=search],body .main input[type=tel],body .main input[type=email],body .main input:not([type]){width:auto;min-width:min(10ch,100%);max-width:min(240px,100%);box-sizing:border-box}
body .main input[type=number]{width:6ch;min-width:0;max-width:100%;box-sizing:content-box}
body .main .search-picker{width:max-content;min-width:0;max-width:100%}
body .main .picker-trigger{width:auto;min-width:0;max-width:100%;box-sizing:border-box}
body .main input[type=file]{max-width:100%;min-width:0;box-sizing:border-box}

/* 11-03：题库知识点/题目/组卷侧栏，复用既有卡片与选题逻辑。 */
.bank-workspace1103{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:start;min-width:0}
.bank-workspace1103.composing{grid-template-columns:220px minmax(0,1fr) 320px}
.bank-menu1103,.bank-main1103,.bank-cart-panel1103{min-width:0;max-width:100%}
.bank-menu1103{position:relative;max-height:calc(100vh - 230px);overflow-y:auto}
.bank-menu-content1103>input{width:100%!important;max-width:100%!important;margin-bottom:12px}
.bank-menu1103 .point-group{padding:0;margin:8px 0;border:0;background:transparent}
.bank-menu1103 .point-group summary{padding:8px 4px;color:#6E6E73;font-size:12px}
.bank-menu1103 .point-directory-link{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;margin:2px 0;border:0;border-left:3px solid transparent;border-radius:0;background:transparent;font-size:13px;box-shadow:none}
.bank-menu1103 .point-directory-link.on{border-left-color:#0071E3;background:#F5F5F7;color:#0071E3}
.bank-menu1103 .point-directory-link span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bank-menu1103 .point-directory-link small{font-size:11px;color:#6E6E73;flex:none}
.bank-info1103{font-size:13px;margin-bottom:12px}
.bank-main1103 #question-browser{margin:0;max-height:calc(100vh - 230px);overflow:auto;padding:18px}
.bank-browser-heading1103{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.bank-browser-heading1103 h2{font-size:18px;margin:0;min-width:0}
.bank-leaf-tools{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:8px;margin:0}
.bank-leaf-tools>*{flex:none}.bank-leaf-tools input{width:130px!important}.bank-leaf-tools select,.bank-leaf-tools input{font-size:12px;min-height:32px;padding:6px 8px}.bank-leaf-tools .btn{font-size:12px;padding:6px 8px;white-space:nowrap}
.bank-cart-panel1103[hidden]{display:none}
.bank-cart-panel1103 .bank-cart{margin:0;padding:18px;background:#F5F5F7;position:static;max-height:calc(100vh - 230px);display:flex;flex-direction:column}
.bank-cart-panel1103 .bank-cart h3{font-size:16px;margin:0 0 8px}
.bank-cart-panel1103 #bank-picked{overflow:auto;min-height:100px;flex:1}
.bank-cart-panel1103 .bank-picked-row{display:flex;gap:8px;padding:10px 0;align-items:start}
.bank-cart-panel1103 .bank-picked-row span{min-width:0;flex:1;overflow-wrap:anywhere;font-size:13px}
.bank-cart-panel1103 .bank-picked-row small{display:block;color:#6E6E73;font-size:11px}
.bank-cart-footer1103{flex:none;padding-top:12px}.bank-cart-footer1103 .btn-row{gap:8px;margin-top:10px}
.bank-cart-footer1103 details{margin-top:12px;font-size:12px}
#bank-menu-toggle{display:none}
@media(max-width:1100px) and (min-width:800px){.bank-workspace1103{grid-template-columns:60px minmax(0,1fr)}.bank-workspace1103.composing{grid-template-columns:60px minmax(0,1fr) 300px}.bank-menu1103{overflow:visible}.bank-menu-content1103{display:none}.bank-menu1103.open .bank-menu-content1103{display:block;position:absolute;top:42px;left:0;width:220px;max-height:65vh;overflow:auto;background:white;z-index:8;padding:8px}#bank-menu-toggle{display:block}}
@media(max-width:799px){.bank-workspace1103,.bank-workspace1103.composing{display:flex;flex-direction:column}.bank-menu1103,.bank-main1103,.bank-cart-panel1103{width:100%}.bank-menu1103{max-height:220px}.bank-menu-content1103{display:none}.bank-menu1103.open .bank-menu-content1103{display:block}#bank-menu-toggle{display:block}.bank-main1103 #question-browser{max-height:none;padding:12px}.bank-cart-panel1103{position:sticky;bottom:0;z-index:6}.bank-cart-panel1103 .bank-cart{max-height:45vh;background:#F5F5F7}.bank-cart-panel1103 #bank-picked{max-height:18vh}}

/* 11-03-2：密排只重排容器；字段顺序、窄控件与业务保持。 */
.compact-form1103{margin-bottom:16px}
body .main .compact-form1103 .field>input,body .main .compact-form1103 .field>select{display:block}
body .main .compact-form1103 input:not([type=file]):not([type=checkbox]):not([type=hidden]),body .main .compact-form1103 select{height:45px;box-sizing:border-box}
body .main .compact-form1103 input[type=number]{padding-left:6px;padding-right:6px}
body .main .compact-form1103 input[type=file]{width:auto;max-width:100%;height:45px;margin-top:0;padding:6px;font-size:13px;box-sizing:border-box}
.compact-form1103 input[type=file]::file-selector-button{padding:5px 8px;margin-right:8px}
body .main .care-range46.frow3,.compact-form1103.frow,.compact-form1103.frow3{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px 18px;align-items:end}
body .main .care-range46.frow3>label{min-width:0}
#f-new .new-preview1103{grid-column:1/-1}
#f-new .new-preview1103 p{line-height:1.6}
@media(max-width:380px){body .main .care-range46.frow3,.compact-form1103.frow,.compact-form1103.frow3{grid-template-columns:minmax(0,1fr)}}

@media(max-width:480px){[data-setup="textbooks"] .slab{flex-wrap:wrap}[data-setup="textbooks"] .slab .sa{flex-basis:100%;min-width:0;max-width:100%}}
