/* 在线机考：做题页面样式 */
html, body.cbt { height: 100%; margin: 0; }
body.cbt {
  background: #eef1f5; color: #1f2733;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  overflow: hidden;
}
.cbt .muted { color: #6b7684; }

/* ---------- 选卷 ---------- */
.cbt-picker { height: 100%; overflow: auto; padding: 40px 20px 60px; }
.cbt-picker-inner { max-width: 880px; margin: 0 auto; }
.cbt-picker-head h1 { font-size: 26px; margin: 16px 0 6px; }
.cbt-picker-head p { margin: 0 0 22px; font-size: 14px; line-height: 1.7; }
.cbt-book { background: #fff; border: 1px solid #e2e7ee; border-radius: 16px; padding: 18px 20px; margin-bottom: 16px; }
.cbt-book h2 { font-size: 17px; margin: 0 0 4px; }
.cbt-book .sub { font-size: 12.5px; color: #6b7684; margin-bottom: 14px; }
.cbt-set {
  display: flex; align-items: center; gap: 12px; padding: 12px 14px;
  border: 1px solid #e6eaf1; border-radius: 12px; margin-bottom: 8px; cursor: pointer;
  transition: .15s; background: #fcfdff;
}
.cbt-set:hover { border-color: #2b6cb0; box-shadow: 0 4px 14px rgba(43,108,176,.10); }
.cbt-set .ic {
  width: 38px; height: 38px; border-radius: 10px; background: #eef4fd; color: #2b6cb0;
  display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; flex: none;
}
.cbt-set .t { font-weight: 600; font-size: 14.5px; }
.cbt-set .d { font-size: 12.5px; color: #6b7684; margin-top: 2px; }
.cbt-set .go { margin-left: auto; color: #2b6cb0; font-size: 13px; }
.cbt-set .badge {
  margin-left: auto; font-size: 12px; color: #1a7f4b; background: #e8f7ef;
  border-radius: 999px; padding: 3px 10px;
}

/* ---------- 做题 ---------- */
.cbt-run { height: 100%; display: flex; flex-direction: column; }
.cbt-bar {
  display: flex; align-items: center; gap: 10px; padding: 8px 14px; background: #fff;
  border-bottom: 1px solid #e2e7ee; flex: none; z-index: 20;
}
.cbt-title { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cbt-timer { margin-left: auto; font-variant-numeric: tabular-nums; font-size: 15px; font-weight: 600; letter-spacing: .4px; }
.cbt-timer.warn { color: #c0392b; }
.cbt-done { font-size: 12.5px; color: #6b7684; }
.cbt-btn {
  border: 1px solid #d7dee8; background: #fff; border-radius: 9px; padding: 6px 12px;
  font-size: 13px; color: #1f2733; cursor: pointer; text-decoration: none; display: inline-block;
}
.cbt-btn:hover { border-color: #2b6cb0; color: #2b6cb0; }
.cbt-btn.primary { background: #2b6cb0; border-color: #2b6cb0; color: #fff; }
.cbt-btn.primary:hover { background: #245c99; color: #fff; }
.cbt-btn.ghost { border-color: transparent; background: transparent; }
.cbt-nav-toggle { display: none; }

.cbt-body { flex: 1; display: flex; min-height: 0; }
.cbt-pane { min-width: 0; display: flex; flex-direction: column; background: #fff; }
.cbt-pane-scroll { overflow: auto; padding: 22px 26px 80px; }
.cbt-passage { width: 50%; border-right: 1px solid #e2e7ee; }
.cbt-questions { flex: 1; }
.cbt-splitter { width: 6px; cursor: col-resize; background: #eef1f5; flex: none; }
.cbt-splitter:hover { background: #d9e3f0; }

.cbt-mobile-tabs, .cbt-tabs { display: none; }

/* 文章排版 */
.cbt-h1 { font-size: 21px; font-weight: 700; margin: 0 0 6px; }
.cbt-kicker { font-size: 12px; letter-spacing: 1.4px; color: #6b7684; text-transform: uppercase; margin-bottom: 10px; }
.cbt-intro { font-size: 13px; color: #444f5e; background: #f5f8fc; border-left: 3px solid #2b6cb0; padding: 10px 12px; border-radius: 0 8px 8px 0; margin: 0 0 18px; line-height: 1.7; }
.cbt-para { font-size: 15px; line-height: 1.95; margin: 0 0 15px; text-align: justify; }
.cbt-sec { display: flex; gap: 10px; margin-bottom: 15px; }
.cbt-sec .lab { font-weight: 700; font-size: 15px; min-width: 18px; color: #2b6cb0; }
.cbt-sec .tx { font-size: 15px; line-height: 1.95; text-align: justify; }

/* 题目排版 */
.cbt-group { margin-bottom: 26px; }
.cbt-group-head { margin-bottom: 12px; }
.cbt-gtitle { font-size: 15.5px; font-weight: 700; margin: 0 0 4px; }
.cbt-gins { font-size: 13px; color: #4a5568; line-height: 1.8; white-space: pre-line; }
.cbt-gins em { font-style: normal; font-weight: 600; color: #1f2733; }
.cbt-notes { background: #f8fafd; border: 1px solid #e6ebf3; border-radius: 10px; padding: 12px 14px; margin: 10px 0; }
.cbt-line { font-size: 14.5px; line-height: 2.1; margin: 2px 0; }
.cbt-line.bullet { padding-left: 16px; position: relative; }
.cbt-line.bullet::before { content: "•"; position: absolute; left: 2px; color: #8a94a3; }
.cbt-line.h { font-weight: 700; margin-top: 8px; }
.cbt-line .lab { color: #2b6cb0; font-weight: 600; }
/* 表格题（听力/阅读里原本就是表格的题）：单元格内一个条目一行 */
.cbt-tt-wrap { overflow-x: auto; margin: 10px 0 6px; }
table.cbt-tt { width: 100%; border-collapse: collapse; font-size: 14.5px; background: #fff; }
table.cbt-tt th, table.cbt-tt td {
  border: 1px solid #d9e0ea; padding: 8px 10px; vertical-align: top;
  white-space: pre-line; line-height: 1.9;
}
table.cbt-tt th { background: #f3f6fb; font-weight: 700; text-align: left; }
table.cbt-tt td:first-child { font-weight: 600; }
table.cbt-tt .cbt-inline-num { margin-left: 4px; }

.cbt-q { display: flex; gap: 10px; padding: 9px 0; border-bottom: 1px dashed #edf1f6; }
.cbt-q:last-child { border-bottom: 0; }
.cbt-qn {
  flex: none; width: 26px; height: 26px; border-radius: 50%; background: #f0f4fa; color: #46536b;
  display: flex; align-items: center; justify-content: center; font-size: 12.5px; font-weight: 600;
}
.cbt-qn.ok { background: #e8f7ef; color: #1a7f4b; }
.cbt-qbody { flex: 1; min-width: 0; }
.cbt-stem { font-size: 14.5px; line-height: 1.85; }
.cbt-opts { margin-top: 6px; }
.cbt-opt { display: flex; gap: 8px; align-items: flex-start; padding: 5px 0; font-size: 14px; line-height: 1.7; cursor: pointer; }
.cbt-opt input { margin-top: 4px; }
.cbt-opt .k { font-weight: 600; color: #2b6cb0; min-width: 14px; }

.cbt-blank {
  display: inline-block; min-width: 112px; border: 0; border-bottom: 1.6px solid #9aa7b8;
  background: #f7f9fc; border-radius: 5px 5px 0 0; padding: 2px 8px; font-size: 14.5px;
  font-family: inherit; color: #12447e; font-weight: 600; text-align: center; outline: none;
}
.cbt-blank:focus { border-bottom-color: #2b6cb0; background: #eef4fd; }
.cbt-blank.answered { background: #eef4fd; }
.cbt-select {
  border: 1px solid #cfd8e4; border-radius: 7px; padding: 3px 7px; font-size: 14px; background: #fff;
  font-family: inherit; color: #12447e; font-weight: 600;
}
.cbt-inline-num { color: #2b6cb0; font-weight: 700; }

.cbt-optlist { background: #f8fafd; border: 1px solid #e6ebf3; border-radius: 10px; padding: 10px 14px; margin: 10px 0; }
.cbt-optlist div { font-size: 14px; line-height: 1.9; }
.cbt-optlist .k { font-weight: 700; color: #2b6cb0; display: inline-block; min-width: 16px; }

/* 答题卡 */
.cbt-mask { position: fixed; inset: 0; background: rgba(16,24,40,.35); z-index: 30; }
.cbt-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: 320px; background: #fff; z-index: 40;
  display: flex; flex-direction: column; box-shadow: -8px 0 30px rgba(16,24,40,.16);
}
.cbt-drawer-head { display: flex; align-items: center; padding: 12px 16px; border-bottom: 1px solid #e2e7ee; }
.cbt-drawer-head .cbt-btn { margin-left: auto; }
.cbt-drawer-body { flex: 1; overflow: auto; padding: 14px 16px; }
.cbt-drawer-foot { padding: 12px 16px; border-top: 1px solid #e2e7ee; }
.cbt-drawer-foot .cbt-btn { width: 100%; text-align: center; padding: 9px; }
.cbt-navgrid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 16px; }
.cbt-navcell {
  aspect-ratio: 1/1; border-radius: 9px; border: 1px solid #dde4ee; background: #fff;
  font-size: 13px; font-weight: 600; color: #46536b; cursor: pointer;
}
.cbt-navcell.done { background: #2b6cb0; border-color: #2b6cb0; color: #fff; }
.cbt-navcell.wrong { background: #fdeaea; border-color: #f2b8b5; color: #c0392b; }
.cbt-navcell.right { background: #e8f7ef; border-color: #9ad6b5; color: #1a7f4b; }
.cbt-navsec { font-size: 12px; color: #6b7684; margin: 14px 0 8px; }

/* 弹窗 */
.cbt-modal { position: fixed; inset: 0; background: rgba(16,24,40,.45); z-index: 50; display: flex; align-items: center; justify-content: center; }
.cbt-modal-box { background: #fff; border-radius: 16px; padding: 24px 26px; width: min(420px, 90vw); }
.cbt-modal-box h3 { margin: 0 0 10px; font-size: 18px; }
.cbt-modal-box p { font-size: 13.5px; line-height: 1.8; color: #4a5568; margin: 0 0 18px; }
.cbt-modal-actions { display: flex; gap: 10px; justify-content: flex-end; }

/* 成绩单 */
.cbt-result { height: 100%; overflow: auto; padding: 34px 20px 80px; }
.cbt-result-inner { max-width: 940px; margin: 0 auto; }
.cbt-result-card { display: flex; gap: 26px; align-items: center; background: #fff; border: 1px solid #e2e7ee; border-radius: 18px; padding: 26px 30px; }
.cbt-score-ring {
  width: 132px; height: 132px; border-radius: 50%; flex: none;
  background: conic-gradient(#2b6cb0 var(--p, 0%), #e8edf5 0);
  display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative;
}
.cbt-score-ring::before { content: ""; position: absolute; inset: 11px; background: #fff; border-radius: 50%; }
.cbt-score-ring span { position: relative; font-size: 38px; font-weight: 700; line-height: 1; }
.cbt-score-ring small { position: relative; font-size: 13px; color: #6b7684; margin-top: 4px; }
.cbt-result-meta h2 { margin: 0 0 6px; font-size: 20px; }
.cbt-result-stats { display: flex; gap: 26px; margin-top: 14px; flex-wrap: wrap; }
.cbt-result-stats div b { font-size: 20px; }
.cbt-result-stats div span { display: block; font-size: 12.5px; color: #6b7684; margin-top: 2px; }
.cbt-result-actions { display: flex; gap: 10px; margin: 18px 0; flex-wrap: wrap; }

/* 批改 */
.cbt-review-group { background: #fff; border: 1px solid #e2e7ee; border-radius: 14px; padding: 18px 22px; margin-bottom: 16px; }
.cbt-review-group h3 { font-size: 15.5px; margin: 0 0 12px; }
/* 成绩单：左原文 / 右题目，底部三个按钮 */
.cbt-rv-part { margin: 0 0 18px; }
.cbt-rv-head { margin: 0 0 10px; }
.cbt-rv-head h3 { font-size: 16px; margin: 0; }
.cbt-rv-wrap { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr); gap: 18px; align-items: stretch; }
.cbt-rv-wrap.solo { grid-template-columns: minmax(0, 1fr); }
.cbt-rv-col { min-width: 0; display: flex; flex-direction: column; height: min(78vh, 940px); min-height: 420px; }
.cbt-rv-left { background: #fff; border: 1px solid #e2e7ee; border-radius: 14px; padding: 16px 18px; }
.cbt-rv-wrap.solo .cbt-rv-col { height: auto; }
.cbt-rv-right { overflow: auto; }
.cbt-rv-right .cbt-review-group { margin-bottom: 0; }
.cbt-rv-right .cbt-review-group { padding: 16px 18px; }
.cbt-rv-right .cbt-stem { font-size: 15px; }
.cbt-rv-right .cbt-line { font-size: 15px; line-height: 2.05; }
.cbt-rv-right .cbt-rv-note { font-size: 13.5px; }
.cbt-rv-right .cbt-opt { font-size: 14.5px; }
.cbt-group-rv .cbt-q-rv { padding-bottom: 4px; }
.cbt-rv-val { display: inline-block; min-width: 74px; padding: 2px 10px; border: 1px solid #cfd8e3; border-radius: 8px; font-weight: 700; text-align: center; }
.cbt-rv-val.bad { border-color: #f0b4b4; background: #fff4f4; color: #b3261e; }
.cbt-rv-val.ok { border-color: #b7e0c2; background: #f2fbf5; color: #1b7a3d; }
.cbt-rv-correct { font-weight: 700; color: #17558c; }
.cbt-rv-note { margin: 6px 0 10px; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.cbt-rv-one { font-size: 13px; display: inline-block; border-radius: 8px; padding: 2px 8px; }
.cbt-rv-one.ok { color: #1b7a3d; background: #f2fbf5; }
.cbt-rv-one.bad { color: #b3261e; background: #fdf2f2; }
.cbt-rv-note .cbt-rv-ex { flex-basis: 100%; margin-top: 2px; }
.cbt-opt.rv-right { background: #f2fbf5; border-color: #b7e0c2; }
.cbt-opt.rv-wrong { background: #fdf2f2; border-color: #f0b4b4; }
.cbt-rv-mk { margin-left: 6px; font-weight: 700; }
.cbt-rv-mk.rv-no { color: #b3261e; }
.cbt-rv-h { font-weight: 700; font-size: 14px; margin-bottom: 8px; display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.cbt-rv-hint { font-weight: 400; font-size: 12px; }
.cbt-rv-audio { width: 100%; height: 34px; margin-bottom: 10px; }
.cbt-tx { flex: 1; min-height: 0; overflow: auto; line-height: 1.95; font-size: 15.5px; padding-right: 10px; }
.cbt-s { display: block; cursor: pointer; border-radius: 4px; padding: 1px 4px; margin-bottom: 2px; }
.cbt-s:hover { background: #eef4ff; }
.cbt-s.on { background: #ffe9a8; box-shadow: inset 0 -2px 0 #f5c542; }
.cbt-rv-ex { margin-top: 6px; font-size: 13.5px; color: #17558c; background: #f2f7fd; border-radius: 8px; padding: 7px 10px; }
.cbt-rv-ex:empty { display: none; }
.cbt-rv-ex b { margin-right: 6px; color: #0d3f6e; }
.cbt-rv-actions { display: flex; gap: 12px; flex-wrap: wrap; margin: 18px 0 30px; }
/* 提交为作业：选择作业的弹窗 */
.hw-list { max-height: 46vh; overflow: auto; margin: 10px 0 4px; }
.hw-item {
  display: flex; align-items: flex-start; gap: 8px; flex-wrap: wrap;
  border: 1px solid #e2e7ee; border-radius: 10px; padding: 10px 12px; margin-bottom: 8px; cursor: pointer;
}
.hw-item:hover { border-color: #9dbcf0; background: #f7faff; }
.hw-item.disabled { opacity: .55; cursor: not-allowed; }
.hw-t { font-weight: 600; font-size: 14.5px; }
.hw-d { font-size: 12.5px; color: #6b7684; flex-basis: 100%; padding-left: 22px; }
.hw-s { font-size: 12.5px; color: #b26a00; flex-basis: 100%; padding-left: 22px; }
/* 考试分析（整套/整套模考做完后） */
.cbt-exam-ai { margin: 0 0 14px; }
.cbt-exam-ai-out {
  margin-top: 12px; background: #fff; border: 1px solid #e2e7ee; border-radius: 14px; padding: 16px 18px;
}
.cbt-exam-ai-out .cbt-ai-out { white-space: normal; line-height: 1.95; font-size: 15px; }
.cbt-exam-ai-out .cbt-ai-loading { color: #6b7684; font-size: 14px; }
@media (max-width: 900px) {
  .cbt-rv-wrap { grid-template-columns: minmax(0, 1fr); }
  .cbt-rv-col { height: auto; max-height: 60vh; }
}
.cbt-rv { padding: 12px 0; border-bottom: 1px dashed #edf1f6; }
.cbt-rv:last-child { border-bottom: 0; }
.cbt-rv-top { display: flex; gap: 10px; align-items: baseline; }
.cbt-tag { flex: none; font-size: 11.5px; border-radius: 999px; padding: 2px 9px; font-weight: 600; }
.cbt-tag.r { background: #e8f7ef; color: #1a7f4b; }
.cbt-tag.w { background: #fdeaea; color: #c0392b; }
.cbt-rv-stem { font-size: 14px; line-height: 1.8; }
.cbt-rv-ans { font-size: 13px; margin-top: 6px; color: #4a5568; line-height: 1.9; }
.cbt-rv-ans b { color: #12447e; }
.cbt-rv-ans .bad { color: #c0392b; text-decoration: line-through; }
.cbt-empty { color: #6b7684; font-size: 13.5px; }

@media (max-width: 900px) {
  .cbt-nav-toggle { display: inline-block; }
  .cbt-bar { flex-wrap: wrap; padding: 7px 10px; gap: 7px; }
  .cbt-title { order: 3; width: 100%; font-size: 13px; }
  .cbt-timer { margin-left: auto; }
  .cbt-body { position: relative; }
  .cbt-pane { position: absolute; inset: 0; width: 100% !important; border: 0; display: none; }
  .cbt-pane.active { display: flex; }
  .cbt-splitter { display: none; }
  .cbt-tabs {
    display: flex; flex: none; border-top: 1px solid #e2e7ee; background: #fff;
  }
  .cbt-tabs button {
    flex: 1; border: 0; background: transparent; padding: 12px; font-size: 14px; color: #6b7684;
    font-family: inherit;
  }
  .cbt-tabs button.active { color: #2b6cb0; font-weight: 600; box-shadow: inset 0 2px 0 #2b6cb0; }
  .cbt-result-card { flex-direction: column; text-align: center; }
}

/* ---------- v2：套卷下的单元列表 ---------- */
.cbt-set .sinfo { min-width: 0; }
.cbt-units { margin: -4px 0 14px 50px; }
.cbt-unit {
  display: flex; align-items: center; gap: 10px; padding: 8px 12px; cursor: pointer;
  border-left: 2px solid #e6ebf3; margin-bottom: 2px; border-radius: 0 8px 8px 0; background: #fbfcfe;
}
.cbt-unit:hover { background: #eef4fd; border-left-color: #2b6cb0; }
.cbt-unit .uic {
  width: 26px; height: 26px; border-radius: 7px; background: #fff; border: 1px solid #dfe6f0;
  color: #2b6cb0; font-size: 10.5px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex: none;
}
.cbt-unit .ut { font-size: 13.5px; font-weight: 600; }
.cbt-unit .ud { font-size: 12px; color: #6b7684; margin-left: auto; }
.cbt-unit .ugo { font-size: 12px; color: #2b6cb0; flex: none; }

/* ---------- 听力音频条 ---------- */
.cbt-audio {
  display: flex; align-items: center; gap: 12px; padding: 8px 14px; background: #f3f7fd;
  border-bottom: 1px solid #e2e7ee; flex: none;
}
.cbt-audio .ab-t { font-size: 13px; font-weight: 600; color: #2b6cb0; white-space: nowrap; }
.cbt-audio audio { flex: 1; height: 34px; min-width: 200px; }

/* ---------- 单栏（写作 / 口语） ---------- */
.cbt-pane.solo { width: 100% !important; }
.cbt-prompt {
  background: #f5f8fc; border: 1px solid #e2eaf5; border-radius: 12px; padding: 16px 18px;
  font-size: 15px; line-height: 1.95; white-space: pre-wrap; margin: 8px 0 14px;
}
.cbt-prompt-img { max-width: 100%; border-radius: 10px; border: 1px solid #e2e7ee; margin-bottom: 14px; }

/* ---------- 图片缩放条（地图 / 平面图 / 流程图） ---------- */
.cbt-fig {
  position: relative; margin: 6px 0 12px; padding: 8px;
  border: 1px solid #e2e7ee; border-radius: 12px; background: #fff;
}
.cbt-fig .cbt-prompt-img {
  margin: 0; border: 0; border-radius: 8px; display: block; width: 100%; height: auto;
}
.cbt-fig-fs {
  position: absolute; right: 14px; bottom: 14px; cursor: pointer;
  border: 1px solid #dbe1ea; background: rgba(255, 255, 255, .95); color: #2b3445;
  border-radius: 8px; padding: 5px 12px; font-size: 13px;
}
.cbt-fig-fs:hover { border-color: var(--brand, #2b6cb0); color: var(--brand, #2b6cb0); }

/* ---------- 小作文：题目在左，输入框在右 ---------- */
/* 学习模式 / 练习模式选择 */
.mode-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 700px) { .mode-cards { grid-template-columns: 1fr; } }
.mode-card {
  text-align: left; cursor: pointer; padding: 18px 18px 20px; border-radius: 14px;
  border: 1px solid #dbe1ea; background: #fff; transition: .15s;
  display: flex; flex-direction: column; gap: 8px;
}
.mode-card:hover { border-color: var(--brand, #4c6fff); box-shadow: 0 8px 24px rgba(76,111,255,.14); transform: translateY(-1px); }
.mode-card .mc-ic { font-size: 26px; }
.mode-card .mc-t { font-weight: 700; font-size: 16px; color: #101a33; }
.mode-card .mc-d { font-size: 13px; color: #5b6880; line-height: 1.7; }

/* ---------- 学习模式：AI 即时辅助 / 名师讲解 ---------- */
.wr-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.wr-actions .cbt-btn.study { border-color: #c7d2fe; background: #f5f7ff; color: #3b4ea8; }
.wr-actions .cbt-btn.study:hover { border-color: var(--brand, #4c6fff); }
.ai-chat { margin-top: 12px; border: 1px solid #e2e7ee; border-radius: 14px; background: #fff; overflow: hidden; }
.ai-chat-head { display: flex; align-items: center; gap: 8px; padding: 10px 14px; background: #f5f7ff; font-weight: 600; font-size: 13.5px; color: #33406b; }
.ai-chat-head .mini { margin-left: auto; }
.ai-chat-body { max-height: 340px; overflow: auto; padding: 12px 14px; display: flex; flex-direction: column; gap: 10px; }
.ai-msg { max-width: 88%; padding: 10px 13px; border-radius: 12px; font-size: 13.5px; line-height: 1.75; white-space: pre-wrap; word-break: break-word; }
.ai-msg.me { align-self: flex-end; background: var(--brand, #4c6fff); color: #fff; }
.ai-msg.bot { align-self: flex-start; background: #f2f5fb; color: #1c2740; }
.ai-msg.sys { align-self: center; background: transparent; color: #8b96ab; font-size: 12.5px; }
.ai-chips { display: flex; gap: 8px; flex-wrap: wrap; padding: 10px 14px 0; }
.ai-chip { border: 1px solid #dbe1ea; background: #fff; color: #3b4a68; border-radius: 999px; padding: 5px 12px; font-size: 12.5px; cursor: pointer; }
.ai-chip:hover { border-color: var(--brand, #4c6fff); color: var(--brand, #4c6fff); }
.ai-chat-foot { display: flex; gap: 8px; padding: 10px 14px 14px; }
.ai-chat-foot input { flex: 1; border: 1px solid #dbe1ea; border-radius: 10px; padding: 9px 12px; font-size: 13.5px; }
.ai-chat-foot input:focus { outline: none; border-color: var(--brand, #4c6fff); }
.lecture-card { margin-top: 12px; border: 1px solid #e2e7ee; border-radius: 14px; background: #fff; padding: 16px 18px; }
.lecture-card h4 { margin: 0 0 8px; font-size: 15px; }
.lecture-body { font-size: 13.5px; line-height: 1.9; color: #22304d; white-space: pre-wrap; }

/* ---------- AI 批改报告 ---------- */
.rpt { margin-top: 14px; display: flex; flex-direction: column; gap: 14px; }
.rpt-hero {
  display: flex; align-items: center; gap: 18px; padding: 18px 20px; border-radius: 16px; color: #fff;
  background: linear-gradient(120deg, #4c6fff, #6f8cff 55%, #7a5af8);
}
.rpt-band { font-size: 40px; font-weight: 800; line-height: 1; }
.rpt-band small { display: block; font-size: 12px; font-weight: 500; opacity: .85; margin-top: 4px; }
.rpt-hero .rpt-sum { font-size: 13.5px; line-height: 1.8; opacity: .96; }
.rpt-card { border: 1px solid #e2e7ee; border-radius: 14px; background: #fff; padding: 16px 18px; }
.rpt-card h4 { margin: 0 0 10px; font-size: 15px; display: flex; align-items: center; gap: 8px; }
.rpt-essay {
  font-size: 15px; line-height: 2.15; color: #1b2740; white-space: pre-wrap;
  padding: 4px 6px; letter-spacing: .1px;
}
.rpt-mk-err { background: #ffe9ec; color: #b42318; border-bottom: 2px solid #f97066; padding: 1px 2px; border-radius: 3px; }
.rpt-mk-good { background: #e7f7ef; color: #087443; border-bottom: 2px solid #34bfa3; padding: 1px 2px; border-radius: 3px; }
.rpt-note { display: flex; gap: 10px; padding: 10px 0; border-top: 1px dashed #eaeff7; font-size: 13.5px; }
.rpt-note:first-of-type { border-top: 0; }
.rpt-note .rn-i {
  flex: 0 0 24px; height: 24px; border-radius: 50%; background: #ffe9ec; color: #b42318;
  font-size: 12.5px; font-weight: 700; display: flex; align-items: center; justify-content: center;
}
.rpt-note.good .rn-i { background: #e7f7ef; color: #087443; }
.rpt-note .rn-b { flex: 1; }
.rpt-note .rn-q { color: #6b7688; font-style: italic; }
.rpt-note .rn-fix { color: #087443; font-weight: 600; }
.rpt-crit { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 700px) { .rpt-crit { grid-template-columns: 1fr; } }
.rpt-crit .rc { border: 1px solid #e6ebf4; border-radius: 12px; padding: 12px 14px; background: #fbfcff; }
.rpt-crit .rc-h { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.rpt-crit .rc-name { font-weight: 700; font-size: 13.5px; color: #23304d; }
.rpt-crit .rc-band { margin-left: auto; font-weight: 800; color: #4c6fff; font-size: 15px; }
.rpt-crit .rc-c { font-size: 13px; color: #44506b; line-height: 1.75; }
.rpt-crit .rc-a { font-size: 12.8px; color: #087443; margin-top: 6px; line-height: 1.7; }
.rpt-lesson { display: grid; gap: 10px; }
.rpt-lesson .rl { display: flex; gap: 10px; font-size: 13.5px; line-height: 1.85; }
.rpt-lesson .rl-k {
  flex: 0 0 88px; font-weight: 700; color: #3b4ea8; background: #f2f5ff;
  border-radius: 8px; padding: 2px 8px; height: 24px; text-align: center; font-size: 12.5px;
}

.cbt-write .wr-cols {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 18px; align-items: start;
}
.cbt-write .wr-right { display: flex; flex-direction: column; min-width: 0; }
.cbt-write .wr-right .cbt-essay { flex: 1; min-height: 460px; }
@media (max-width: 820px) {
  .cbt-write .wr-cols { grid-template-columns: 1fr; }
  .cbt-write .wr-right .cbt-essay { min-height: 320px; }
}

.iz { margin: 4px 0 14px; }
.iz-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.iz-b {
  border: 1px solid #dbe1ea; background: #fff; color: #2b3445; border-radius: 8px;
  height: 30px; min-width: 32px; padding: 0 10px; font-size: 14px; line-height: 1; cursor: pointer;
}
.iz-b:hover { border-color: var(--brand, #2b6cb0); color: var(--brand, #2b6cb0); }
.iz-b.iz-t { font-size: 13px; }
.iz-p {
  min-width: 56px; text-align: center; font-size: 12px; color: #6b7688;
  font-variant-numeric: tabular-nums;
}
.iz-hint { font-size: 12px; color: #98a2b3; margin-left: auto; }
.iz-box {
  border: 1px solid #e2e7ee; border-radius: 10px; background: #fff;
  overflow: auto; max-height: 62vh; padding: 6px;
}
.iz-box .cbt-prompt-img { margin: 0; border: 0; border-radius: 6px; max-width: 100%; display: block; }
.iz-zoomed .iz-box { cursor: grab; }
.iz-box.iz-grab { cursor: grabbing; }
.iz-full {
  position: fixed; inset: 0; z-index: 9998; background: rgba(10, 14, 22, .9);
  display: flex; flex-direction: column; gap: 8px; padding: 14px;
}
.iz-full .iz-bar { justify-content: center; margin-bottom: 0; }
.iz-full .iz-b { background: #1b2230; border-color: #3a4658; color: #e9eef7; }
.iz-full .iz-p { color: #cbd6e6; }
.iz-full .iz-box { flex: 1; max-height: none; background: #0d121c; border-color: #2b3445; }
body.iz-lock { overflow: hidden; }
@media (max-width: 680px) { .iz-hint { display: none; } .iz-box { max-height: 68vh; } }
.cbt-writing-head { font-size: 12.5px; color: #6b7684; margin-bottom: 6px; }
.cbt-writing-head b { color: #2b6cb0; }
.cbt-essay {
  width: 100%; min-height: 340px; border: 1px solid #dbe3ee; border-radius: 12px; padding: 14px;
  font-size: 15px; line-height: 1.9; font-family: inherit; resize: vertical; outline: none;
}
.cbt-essay:focus { border-color: #2b6cb0; }
.cbt-writing-foot { display: flex; align-items: center; gap: 10px; margin-top: 12px; }
.cbt-ai-loading { padding: 14px; color: #6b7684; font-size: 13.5px; }
.cbt-ai-out {
  margin-top: 14px; background: #f8fafd; border: 1px solid #e6ebf3; border-radius: 12px;
  padding: 16px 18px; font-size: 14px; line-height: 1.9; white-space: pre-wrap;
}

/* ---------- 口语 ---------- */
.cbt-spk { border: 1px solid #e6ebf3; border-radius: 12px; padding: 14px 16px; margin-bottom: 12px; }
.cbt-spk-h { font-weight: 700; font-size: 14.5px; display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.cbt-spk-t { font-weight: 400; font-size: 12px; color: #6b7684; background: #f1f4f9; border-radius: 999px; padding: 2px 9px; }
.cbt-cue { background: #fff; border: 1px solid #cfd8e4; border-radius: 10px; padding: 12px 14px; font-size: 14.5px; line-height: 1.9; margin-bottom: 8px; }
.cbt-spk-ul { margin: 6px 0 8px 18px; padding: 0; }
.cbt-spk-ul li { font-size: 14px; line-height: 1.9; }
.cbt-spk-p { font-size: 14px; line-height: 2; color: #33405a; }
.cbt-big { font-size: 40px; font-weight: 700; color: #2b6cb0; margin: 6px 0; }

/* 口语：录音面板 */
.cbt-rec { border: 1px solid #e6ebf3; border-radius: 12px; padding: 16px; background: #f8fafd; }
.rec-h { font-weight: 700; font-size: 14.5px; margin-bottom: 6px; }
.rec-note { font-size: 12.5px; color: #6b7684; margin-bottom: 12px; line-height: 1.7; }
.rec-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rec-t { font-variant-numeric: tabular-nums; font-size: 15px; font-weight: 600; color: #2b6cb0; }
.rec-row audio { flex: 1; min-width: 220px; height: 34px; }
.spk-timer { font-size: 13px; font-weight: 600; color: #c0392b; margin-top: 6px; }

/* 口语：逐题卡片 */
.spk-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
.spk-voice { font-size: 12.5px; color: #6b7684; }
.spk-voice select { margin-left: 6px; padding: 4px 8px; border: 1px solid #cfd8e4; border-radius: 7px; font-size: 12.5px; }
.spk-q { border-top: 1px dashed #e6ebf3; padding: 12px 0 4px; }
.spk-q:first-of-type { border-top: 0; }
.spk-q-t { font-size: 14.5px; line-height: 1.85; margin-bottom: 8px; }
.spk-q-t b { color: #2b6cb0; margin-right: 4px; }
.spk-q-a { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.spk-q-a .rec-t { font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 600; color: #2b6cb0; min-width: 42px; }
.spk-q-a audio { height: 32px; max-width: 260px; }
.spk-q-a .spk-msg { font-size: 12px; }

/* ---------- v3：按听说读写分区 ---------- */
.cbt-picker-inner { max-width: 980px; }

/* 按册归档 */
.pbookbar { display: flex; gap: 10px; margin-bottom: 20px; flex-wrap: wrap; }
.pbbtn {
  border: 1px solid #d7dee8; background: #fff; border-radius: 12px; padding: 10px 18px;
  font-size: 15px; font-weight: 600; color: #46536b; cursor: pointer; font-family: inherit;
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px; min-width: 104px;
}
.pbbtn span { font-size: 11.5px; font-weight: 400; color: #8a94a3; }
.pbbtn:hover { border-color: #2b6cb0; color: #2b6cb0; }
.pbbtn.on { background: #2b6cb0; border-color: #2b6cb0; color: #fff; }
.pbbtn.on span { color: rgba(255,255,255,.8); }
.pbook { margin-bottom: 34px; }
.pbook-h { display: flex; align-items: baseline; gap: 12px; border-bottom: 2px solid #e2e7ee; padding-bottom: 10px; margin-bottom: 18px; }
.pbook-h .pbk { font-size: 20px; font-weight: 800; letter-spacing: .5px; }
.pbook-h .pbd { font-size: 12.5px; color: #6b7684; }
.pskill { margin-bottom: 26px; }
.pskill-h { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.pskill-h .pk {
  width: 42px; height: 42px; border-radius: 12px; display: flex; align-items: center; justify-content: center;
  font-size: 17px; font-weight: 700; color: #fff; flex: none;
}
.pskill-h .pk.listening { background: linear-gradient(135deg,#2b6cb0,#3f8fe0); }
.pskill-h .pk.speaking { background: linear-gradient(135deg,#6b46c1,#9061f9); }
.pskill-h .pk.reading  { background: linear-gradient(135deg,#1a7f4b,#38a169); }
.pskill-h .pk.writing  { background: linear-gradient(135deg,#b7791f,#dd9b34); }
.pskill-t { font-size: 17px; font-weight: 700; }
.pskill-d { font-size: 12.5px; color: #6b7684; margin-top: 2px; }
.pcard { background: #fff; border: 1px solid #e2e7ee; border-radius: 14px; padding: 14px 16px; margin-bottom: 10px; }
.pcard-h { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.pcard-t { font-size: 15px; font-weight: 600; }
.pcard-d { font-size: 12.5px; color: #6b7684; margin-top: 2px; }
.pcard-d .sc { color: #1a7f4b; }
.pall {
  margin-left: auto; border: 1px solid #cfd8e4; background: #fff; border-radius: 9px;
  padding: 7px 14px; font-size: 13px; color: #2b6cb0; cursor: pointer; font-family: inherit; flex: none;
}
.pall:hover { background: #2b6cb0; border-color: #2b6cb0; color: #fff; }
.punits { display: grid; grid-template-columns: repeat(auto-fill, minmax(228px, 1fr)); gap: 8px; }
.pu {
  display: flex; align-items: center; gap: 8px; text-align: left; cursor: pointer; font-family: inherit;
  border: 1px solid #e6ebf3; background: #fbfcfe; border-radius: 10px; padding: 10px 12px; transition: .14s;
}
.pu:hover { border-color: #2b6cb0; background: #eef4fd; transform: translateY(-1px); }
.pu-t { font-size: 13.5px; font-weight: 600; color: #1f2733; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pu-d { font-size: 11.5px; color: #6b7684; flex: none; }
.pu-go { font-size: 11.5px; color: #2b6cb0; background: #eaf1fb; border-radius: 999px; padding: 2px 9px; flex: none; }

/* 写作字数 */
.cbt-writing-head { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.cbt-writing-head .wr-req { color: #c0392b; font-weight: 600; }
.cbt-writing-head .wr-rec { color: #2b6cb0; }
.cbt-writing-head .wr-now b.pass { color: #1a7f4b; }
.cbt-writing-head .wr-now b.ok { color: #1a7f4b; }
.cbt-writing-head .wr-now b { color: #c0392b; }
