* { box-sizing: border-box; margin: 0; padding: 0; }

body {
  font-family: -apple-system, sans-serif;
  background:var(--kc-f5f5f5, #f5f5f5);
  min-height: 100vh;
}

/* Shared fallback for every static and dynamically inserted action button.
   Component rules below retain icon, tab, tag, primary and danger variants. */
button {
  appearance:none; font:inherit; font-size:14px; line-height:1.5;
  padding:9px 14px; border:1px solid var(--kc-dce1eb, #dce1eb); border-radius:9px;
  background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-4a5268, #4a5268); cursor:pointer;
  max-width:100%; overflow-wrap:anywhere;
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
button:hover:not(:disabled) { border-color:var(--kc-b9c8ed, #b9c8ed); }
button:focus-visible { outline:2px solid var(--kc-8fa8ff, #8fa8ff); outline-offset:2px; }
button:disabled { opacity:.55; cursor:not-allowed; }
button:is(.ai-primary,.btn-confirm,.btn-primary) { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
button:is(.ai-primary,.btn-confirm,.btn-primary):hover:not(:disabled) { background:var(--kc-3e5fe3, #3e5fe3); border-color:var(--kc-3e5fe3, #3e5fe3); }
button.ai-primary:disabled { background:var(--kc-e9edf5, #e9edf5); border-color:var(--kc-d8dfeb, #d8dfeb); color:var(--kc-8490a4, #8490a4); opacity:1; }
button:is(.btn-danger,.edit-btn-danger) { background:var(--kc-fff1f0, #fff1f0); border-color:var(--kc-f5c8c5, #f5c8c5); color:var(--kc-c83e3e, #c83e3e); }

/* ===== 基础布局（只保证元素能排开，不美化） ===== */
.header {
  background:var(--kc-ffffff, #fff);
  padding: 16px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom:1px solid var(--kc-eeeeee, #eee);
  position: sticky;
  top: 0;
  z-index: 10;
}
.header h1 { font-size: 18px; }
.header-left { display: flex; align-items: center; gap: 8px; }

.add-btn {
  display:inline-flex; align-items:center; justify-content:center;
  padding:0; line-height:1; flex:0 0 36px;
  width:36px; min-width:36px; height:36px;
  border-radius: 50%;
  border: none;
  font-size: 22px;
  cursor: pointer;
}
.add-btn svg { display:block; width:20px; height:20px; flex:none; pointer-events:none; }
.back-btn {
  border: none; background: none;
  font-size: 22px; cursor: pointer;
  padding: 0 4px;
}

.course-list { padding: 12px; }
.course-item {
  background:var(--kc-ffffff, #fff);
  border-radius: 10px;
  padding: 14px;
  margin-bottom: 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  cursor: pointer;
}
.course-name { font-size: 16px; }
.actions button {
  border: none; background: none;
  cursor: pointer; font-size: 14px;
  margin-left: 8px;
}

.empty { text-align: center; color:var(--kc-aaaaaa, #aaa); padding: 60px 20px; }

#detailPage { display: none; }

.detail-tabs {
  display: flex;
  background:var(--kc-ffffff, #fff);
  border-bottom:1px solid var(--kc-eeeeee, #eee);
  position: sticky;
  top: 57px;
  z-index: 9;
}
.detail-tabs .dtab {
  flex: 1; text-align: center; padding: 12px;
  cursor: pointer; font-size: 14px;
}
.detail-tabs .dtab.active {
  border-bottom:2px solid var(--kc-4a6cf7, #4a6cf7);
}

.tab-content { padding: 12px; }
.tab-pane { display: none; }
.tab-pane.active { display: block; }

.item-row {
  background:var(--kc-ffffff, #fff); border-radius: 10px; padding: 12px;
  margin-bottom: 10px;
  display: flex; justify-content: space-between; align-items: center;
}
.item-row .info { flex: 1; min-width: 0; }
.item-row .title { font-size: 14px; margin-bottom: 4px; word-break: break-all; }
.item-row .meta { font-size: 12px; color:var(--kc-999999, #999); }
.item-row button {
  border: none; background: none; cursor: pointer;
  font-size: 13px; margin-left: 4px;
  min-height: 34px; padding: 7px 10px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 7px; line-height: 1;
  transition: background .15s ease, color .15s ease;
}
.item-row button:hover { background:var(--kc-f0f4ff, #f0f4ff); color:var(--kc-4a6cf7, #4a6cf7); }
.item-row button:active { background:var(--kc-e6ecff, #e6ecff); }
.item-row a { font-size: 13px; margin-left: 8px; text-decoration: none; }
.item-row.card-openable {
  cursor: pointer;
  transition: box-shadow .18s ease, transform .18s ease;
}
.item-row.card-openable:hover {
  box-shadow: 0 6px 18px rgba(21, 30, 60, .08);
}
.item-row.card-openable:focus-visible {
  outline:2px solid var(--kc-4a6cf7, #4a6cf7);
  outline-offset: 2px;
}

/* The three normal content lists share one card surface; review selection stays unchanged. */
.content-card:not(.mistake-selectable) { align-items:flex-start; gap:16px; padding:16px; border:1px solid var(--kc-edf0f5, #edf0f5); }
.content-card:not(.mistake-selectable) .title { font-size:15px; font-weight:600; line-height:1.5; overflow-wrap:anywhere; }
.content-card:not(.mistake-selectable) .meta { line-height:1.6; }
.content-card:not(.mistake-selectable) .material-review-badge { margin:4px 0; }
.content-card .mistake-ai-saved { font-size:12px; color:var(--kc-798499, #798499); }

.upload-btn {
  width: 100%; padding: 12px;
  border:1px dashed var(--kc-cccccc, #ccc);
  background:var(--kc-ffffff, #fff);
  border-radius: 10px; font-size: 14px;
  cursor: pointer; margin-bottom: 12px;
}

/* ===== 功能必需：弹窗显隐 ===== */
.modal-mask {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.4);
  display: flex; justify-content: center; align-items: center;
  z-index: 100;
  /* 兜底：万一某个弹窗比屏幕还高，遮罩层自己也能滚，
     不会出现"上面看不到、下面够不着"（配合下面 .modal 的 margin: auto） */
  padding: 20px 16px;
  overflow-y: auto;
  overscroll-behavior: contain;
  opacity: 0; visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.modal-mask.show { opacity: 1; visibility: visible; }
/* Native confirmation joins the top layer above every currently open modal. */
#confirmModal { width:min(380px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); margin:auto; padding:0; border:0; border-radius:12px; background:var(--kc-ffffff, #fff); color:var(--kc-232a3d, #232a3d); overflow:auto; box-shadow:0 20px 60px #17213c33; }
#confirmModal:not([open]) { display:none; }
#confirmModal::backdrop { background:rgba(17,25,40,.45); }
#confirmModal .modal { width:100%; max-width:none; margin:0; transform:none; transition:none; padding:22px; }
#confirmModal .modal-actions button { min-height:40px; background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-4a5268, #4a5268); }
#confirmModal .modal-actions .btn-confirm { background:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
#confirmModal button:focus-visible { outline:2px solid var(--kc-8fa8ff, #8fa8ff); outline-offset:2px; }

.modal {
  background:var(--kc-ffffff, #fff); border-radius: 12px; padding: 20px;
  width: 80%; max-width: 340px;
  /* margin: auto 是关键：内容比屏幕高时，上下外边距自动收成 0，
     再配合遮罩层的 overflow-y: auto，顶部也滚得到（只靠 align-items: center 做不到） */
  margin: auto;
  transform: scale(0.8);
  transition: transform 0.3s ease;
}
.modal-mask.show .modal { transform: scale(1); }
.modal h3 { margin-bottom: 12px; font-size: 16px; }
.modal input, .modal textarea {
  width: 100%; padding: 10px;
  border:1px solid var(--kc-dddddd, #ddd); border-radius: 8px;
  font-size: 15px; margin-bottom: 12px;
}
.modal textarea { height: 70px; resize: none; }
.modal-actions {
  display: flex; justify-content: flex-end; gap: 10px;
}
.modal-actions button {
  padding: 8px 16px; border-radius: 8px;
  border: none; cursor: pointer; font-size: 14px;
}
#confirmMsg { margin-bottom: 16px; line-height: 1.5; }

/* ===== 功能必需：Toast 定位与淡入淡出 ===== */
#toastBox {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9999;
}
.toast {
  opacity: 0;
  transform: translateY(-10px);
  transition: opacity 0.3s, transform 0.3s;
}
.toast.show { opacity: 1; transform: translateY(0); }

/* ===== 功能必需：加载状态位置 ===== */
.loading-tip {
  text-align: center;
  padding: 40px 20px;
}
/* ===== 简陋版搜索框 ===== */
.search-bar {
  padding: 10px 12px;
  background:var(--kc-ffffff, #fff);
  border-bottom:1px solid var(--kc-eeeeee, #eee);
}
.search-bar input {
  width: 100%;
  padding: 10px;
  border:1px solid var(--kc-dddddd, #ddd);
  border-radius: 8px;
  font-size: 14px;
  outline: none;
}
.search-bar input:focus {
  border-color:var(--kc-4a6cf7, #4a6cf7);
}
/* ===== 知识框架（简陋版） ===== */
.tree-node { padding: 4px 0; }

.tree-node-row {
  display: flex;
  align-items: center;
  gap: 6px;
}

.tree-root-name {
  font-size: 15px;
  font-weight: bold;
  padding: 6px 10px;
  background:var(--kc-f0f4ff, #f0f4ff);
  border-radius: 6px;
  color:var(--kc-4a6cf7, #4a6cf7);
}

.tree-input {
  flex: 1;
  padding: 6px 10px;
  border:1px solid var(--kc-dddddd, #ddd);
  border-radius: 6px;
  font-size: 14px;
  outline: none;
}
.tree-input:focus { border-color:var(--kc-4a6cf7, #4a6cf7); }

.tree-add,
.tree-del {
  width: 26px;
  height: 26px;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 0;
  flex-shrink: 0;
}
.tree-add { background:var(--kc-f0f4ff, #f0f4ff); color:var(--kc-4a6cf7, #4a6cf7); }
.tree-del { background:var(--kc-ffeaea, #ffeaea); color:var(--kc-e74c3c, #e74c3c); }

.tree-children {
  margin-left: 22px;
  border-left:2px dashed var(--kc-e0e0e0, #e0e0e0);
  padding-left: 12px;
}

/* ===== 知识框架（Phase 2：数据来自后端） ===== */

/* 展开 / 折叠箭头；没有子节点时用同样宽度的占位符对齐 */
.tree-toggle {
  width: 20px; height: 20px;
  flex-shrink: 0;
  padding: 0;
  border: none; background: none;
  color:var(--kc-888888, #888); font-size: 12px; line-height: 1;
  cursor: pointer;
}
.tree-toggle-empty { display: inline-block; cursor: default; }

/* 分类（folder）：普通输入框 */
.tree-input-folder { background:var(--kc-ffffff, #fff); }

/* 知识点（knowledge）：更像一个标签 */
.tree-input-knowledge {
  background:var(--kc-eef7ee, #eef7ee);
  border-color:var(--kc-cfe8cf, #cfe8cf);
  color:var(--kc-2f7d32, #2f7d32);
}
.tree-input-knowledge:focus { border-color:var(--kc-2f7d32, #2f7d32); }

/* 添加内容菜单 */
.add-menu {
  position: fixed;
  z-index: 1000;
  min-width: 130px;
  padding: 6px;
  background:var(--kc-ffffff, #fff);
  border-radius: 10px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
  display: none;
}
.add-menu.show { display: block; }
.add-menu-item {
  padding: 9px 12px;
  font-size: 14px;
  border-radius: 6px;
  cursor: pointer;
}
.add-menu-item:hover { background:var(--kc-f0f4ff, #f0f4ff); color:var(--kc-4a6cf7, #4a6cf7); }

/* ===== 错题标签（folder / knowledge）/ 标签选择器 ===== */

/* 错题列表里的标签行 */
.mistake-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 6px;
}
.mistake-actions {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 2px 4px;
}
.mistake-actions button { position: relative; z-index: 3; pointer-events: auto; margin-left: 0; }
.mistake-actions .reading-favorite { padding: 0; }

/* 标签 chip 基础样式（列表里是静态的，选择器里带一个 × ） */
.tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 8px;
  background:var(--kc-f2f2f2, #f2f2f2);
  border:1px solid var(--kc-dddddd, #ddd);
  color:var(--kc-666666, #666);
  font-size: 12px;
  line-height: 1.4;
}
.tag-chip .tag-chip-icon { font-size: 10px; line-height: 1; }

/* folder 标签：方形 + 琥珀色 + ▣ */
.tag-chip.tag-folder {
  border-radius: 4px;
  background:var(--kc-fff7e6, #fff7e6);
  border:1px solid var(--kc-f0d9a8, #f0d9a8);
  color:var(--kc-a06a00, #a06a00);
}
/* knowledge 标签：圆形 pill + 绿色 + ● */
.tag-chip.tag-knowledge {
  border-radius: 12px;
  background:var(--kc-eef7ee, #eef7ee);
  border:1px solid var(--kc-cfe8cf, #cfe8cf);
  color:var(--kc-2f7d32, #2f7d32);
}
/* 未知类型兜底，保证不报错 */
.tag-chip.tag-unknown { background:var(--kc-f2f2f2, #f2f2f2); border:1px solid var(--kc-dddddd, #ddd); color:var(--kc-777777, #777); }

.tag-chip-x {
  border: none; background: none; cursor: pointer;
  color: inherit; font-size: 13px; line-height: 1;
  padding: 0; margin: 0;
}
.tag-none { font-size: 12px; color:var(--kc-aaaaaa, #aaa); }

/* 选择器弹窗 */
.modal-wide { max-width: 440px; }

/* 标签树：高度不再写死（旧版这里的 max-height: 240px 就是"看不全"的直接原因），
   树有多高就多高，滚动交给外面的 .tag-sheet-body。 */
.tag-picker-tree {
  padding: 6px;
  margin-bottom: 0;
  background:var(--kc-fafbfd, #fafbfd);
  border:1px solid var(--kc-eef0f5, #eef0f5);
  border-radius: 12px;
}
.tag-picker-tree .empty { padding: 24px 10px; font-size: 13px; }

/* 选择器里的树 */
.tag-tree-root-toggle {
  display: flex; align-items: center; gap: 8px; width: 100%; min-height: 34px;
  padding: 7px 10px; border: 0; border-radius: 8px; background:var(--kc-eef1f5, #eef1f5);
  color:var(--kc-657085, #657085); font: inherit; font-size: 13px; text-align: left; cursor: pointer;
}
.tag-tree-root-toggle:hover { background:var(--kc-e7ebf1, #e7ebf1); }
.tag-tree-root-toggle small { margin-left: auto; color:var(--kc-8a93a3, #8a93a3); font-size: 11px; font-weight: 400; }
.tag-tree-root-arrow { width: 16px; flex: 0 0 16px; color:var(--kc-7e8797, #7e8797); font-size: 12px; text-align: center; }
.tag-tree-root-children { margin-top: 6px; }
.tag-node { padding: 1px 0; }
.tag-row { display: flex; align-items: center; gap: 6px; }

/* 展开箭头：只有有子节点的 folder 才有；knowledge 用占位符对齐 */
.tag-toggle {
  width: 18px; height: 18px;
  flex-shrink: 0;
  padding: 0;
  border: none; background: none;
  color:var(--kc-888888, #888); font-size: 11px; line-height: 1;
  cursor: pointer;
}
.tag-toggle-empty { display: inline-block; cursor: default; }

/* 选择器里的复选框：
   必须覆盖「.modal input { width:100%; padding:10px; margin-bottom:12px }」这条通用表单样式，
   否则复选框会被撑满整行，把后面的节点名称右挤出可见区域（名称"看不见"的根因）。
   注意选择器要写成 .tag-picker-tree .tag-check（0,2,0），
   才能压过 .modal input（0,1,1）——只写 .tag-check 是压不过的。 */
.tag-picker-tree .tag-check {
  width: auto;
  min-width: 13px;
  height: 13px;
  padding: 0;
  margin: 0;
  flex-shrink: 0;
}

.tag-label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 2px 6px;
  font-size: 14px;
  border-radius: 6px;
  cursor: pointer;
}
.tag-label:hover { background:var(--kc-eef2ff, #eef2ff); }
.tag-label .tag-icon { font-size: 11px; line-height: 1; }
.tag-label.tag-folder { color:var(--kc-a06a00, #a06a00); }
.tag-label.tag-knowledge { color:var(--kc-2f7d32, #2f7d32); }
.tag-label.tag-unknown { color:var(--kc-777777, #777); }

.tag-children {
  margin-left: 16px;
  border-left:2px dashed var(--kc-e8e8e8, #e8e8e8);
  padding-left: 10px;
}

.tag-picker-selected {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 26px;
  margin-bottom: 14px;
}

/* ===== 知识框架：更改排序模式（Phase 4C-2） ===== */

/* 课程标题行：左边课程名，右边“更改排序 / 完成排序” */
.tree-title-row { justify-content: space-between; }

.sort-mode-btn {
  border:1px solid var(--kc-d6ddfb, #d6ddfb);
  background:var(--kc-f0f4ff, #f0f4ff);
  color:var(--kc-4a6cf7, #4a6cf7);
  font-size: 13px;
  padding: 5px 12px;
  border-radius: 8px;
  cursor: pointer;
  flex-shrink: 0;
}
.sort-mode-btn:hover { background:var(--kc-e5ebff, #e5ebff); }
.sort-mode-btn.active { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; }

#treeContainer.sort-mode { background:var(--kc-f8faff, #f8faff); border-radius: 8px; padding: 8px 4px; }

.sort-hint {
  font-size: 12px;
  color:var(--kc-7a86a8, #7a86a8);
  background:var(--kc-eef2ff, #eef2ff);
  border-radius: 6px;
  padding: 6px 10px;
  margin: 6px 0 8px;
}

/* 拖拽手柄 */
.tree-handle {
  width: 20px;
  flex-shrink: 0;
  text-align: center;
  color:var(--kc-9aa4c0, #9aa4c0);
  cursor: grab;
  user-select: none;
}
.tree-node-row.drag-source .tree-handle { cursor: grabbing; }

/* 排序模式下的节点名称（只读，不再是输入框） */
.tree-name {
  flex: 1;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 14px;
  background:var(--kc-ffffff, #fff);
  border:1px solid var(--kc-e6e6e6, #e6e6e6);
  cursor: grab;
}
.tree-name .tree-type-icon { font-size: 11px; line-height: 1; }
.tree-name-folder { color:var(--kc-a06a00, #a06a00); border-color:var(--kc-f0d9a8, #f0d9a8); }
.tree-name-knowledge { color:var(--kc-2f7d32, #2f7d32); border-color:var(--kc-cfe8cf, #cfe8cf); }

.tree-move-btn {
  width: 26px; height: 26px;
  flex-shrink: 0;
  border: none;
  border-radius: 50%;
  background:var(--kc-f0f4ff, #f0f4ff);
  color:var(--kc-4a6cf7, #4a6cf7);
  font-size: 14px;
  line-height: 1;
  padding: 0;
  cursor: pointer;
}

/* ===== 拖拽动效（Pointer Events 版） =====
   设计原则：
   - 位移只走 transform，颜色 / 阴影才走 paint，拖拽时不容易掉帧
   - 220ms + cubic-bezier(.22, 1, .36, 1)：起步快、收尾稳，接近 Apple 的手感
*/

:root {
  --drag-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --drag-dur: 220ms;
}

/* 排序模式下每一行都参与 transform 过渡，让“让位”是滑过去的，而不是跳过去的 */
#treeContainer.sort-mode .tree-node-row {
  position: relative;
  touch-action: none; /* 触屏拖动时不要顺带滚动页面 */
  transition: transform var(--drag-dur) var(--drag-ease),
              opacity 160ms ease,
              background var(--drag-dur) var(--drag-ease),
              box-shadow var(--drag-dur) var(--drag-ease);
}

/* 被拿起来的那一行：原地留个淡淡的凹槽 */
#treeContainer .tree-node-row.drag-source {
  opacity: 0.28;
  transform: scale(0.985);
}

/* ---- 跟手浮层：被“拎起来”的那张卡片 ---- */
.drag-ghost {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 999;
  pointer-events: none; /* 关键：不能让底下 elementFromPoint 取到它 */
  will-change: transform;
}
.drag-ghost-inner {
  transform-origin: 50% 50%;
  transition: transform 180ms var(--drag-ease), opacity 180ms ease;
  will-change: transform;
}
.drag-ghost .tree-name {
  min-width: 120px;
  background:var(--kc-ffffff, #fff);
  border-radius: 10px;
  cursor: grabbing;
  box-shadow: 0 12px 28px rgba(28, 44, 88, 0.2), 0 2px 6px rgba(28, 44, 88, 0.12);
}
/* 刚拎起来：轻轻放大 + 微倾，制造“离地”的感觉 */
.drag-ghost.lifted .drag-ghost-inner {
  transform: scale(1.04) rotate(-1.5deg);
}

/* ---- 效果一：同级换上下 → 上下两个同级向两侧让开，插入槽位呼吸发光 ---- */
.tree-node-row.drop-before::before,
.tree-node-row.drop-after::after {
  content: '';
  position: absolute;
  left: 26px;
  right: 8px;
  height: 2px;
  border-radius: 2px;
  background:linear-gradient(90deg, var(--kc-7b95ff, #7b95ff), var(--kc-4a6cf7, #4a6cf7));
  box-shadow:0 0 10px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 55%, transparent);
  animation: dragSlotPulse 1.1s ease-in-out infinite;
}
.tree-node-row.drop-before::before { top: -1px; }
.tree-node-row.drop-after::after   { bottom: -1px; }

@keyframes dragSlotPulse {
  0%, 100% { opacity: 0.7; }
  50%      { opacity: 1; }
}

/* ---- 效果二：往上挪到上级 → 只让下方标签下沉，绿色引导线标出新层级 ---- */
.tree-node-row.drop-level-up::before {
  content: '';
  position: absolute;
  left: 26px;
  right: 8px;
  top: -1px;
  height: 2px;
  border-radius: 2px;
  background:linear-gradient(90deg, var(--kc-4fd08a, #4fd08a), var(--kc-0e8f57, #0e8f57));
  box-shadow: 0 0 10px rgba(14, 143, 87, 0.5);
}

/* ---- 效果三：挪进下一级 → 目标胀大 + 清透玻璃质感，把卡片“含住” ---- */
.tree-node-row.drop-into {
  transform: scale(1.035);
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
  border-radius: 12px;
  box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 0 0 1px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 35%, transparent),
    0 12px 28px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 22%, transparent);
}
/* 玻璃上斜着扫过的高光 */
.tree-node-row.drop-into::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 12px;
  pointer-events: none;
  background: linear-gradient(118deg,
      rgba(255, 255, 255, 0.75) 0%,
      rgba(255, 255, 255, 0.18) 34%,
      rgba(255, 255, 255, 0.00) 58%,
      rgba(255, 255, 255, 0.35) 100%);
}

/* 非法落点：自己 / 自己的后代 */
.tree-node-row.drop-invalid {
  background:var(--kc-ffecec, #ffecec);
  border-radius: 8px;
  outline:2px dashed var(--kc-e74c3c, #e74c3c);
}

/* 课程顶层落区 */
.root-drop-zone {
  margin: 10px 0 4px;
  padding: 12px;
  text-align: center;
  font-size: 13px;
  color:var(--kc-7a86a8, #7a86a8);
  border:2px dashed var(--kc-ccd4ea, #ccd4ea);
  border-radius: 8px;
  background:var(--kc-ffffff, #fff);
}
.root-drop-zone.drop-into {
  border-color:var(--kc-4a6cf7, #4a6cf7);
  background:var(--kc-e8f0ff, #e8f0ff);
  color:var(--kc-4a6cf7, #4a6cf7);
}

/* “移动到…”目标列表 */
.move-target-list {
  max-height: 260px;
  overflow-y: auto;
  margin-bottom: 14px;
  border:1px solid var(--kc-eeeeee, #eee);
  border-radius: 8px;
  background:var(--kc-fafafa, #fafafa);
  padding: 6px;
}
.move-target {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 6px;
  font-size: 14px;
  color:var(--kc-a06a00, #a06a00);
  cursor: pointer;
}
.move-target:hover { background:var(--kc-eef2ff, #eef2ff); }
.move-target-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.move-target-cur { font-size: 12px; color:var(--kc-999999, #999); flex-shrink: 0; }
.move-target.current { background:var(--kc-f0f4ff, #f0f4ff); }

/* ===== 节点详情 / 错题详情（Phase 4D） ===== */

#nodeDetailPage,
#mistakeDetailPage { display: none; }

.detail-card {
  background:var(--kc-ffffff, #fff);
  border-radius: 10px;
  padding: 14px;
  margin-bottom: 12px;
}
.detail-name { font-size: 17px; font-weight: bold; margin-bottom: 8px; word-break: break-all; }
.detail-meta { font-size: 13px; color:var(--kc-888888, #888); margin-bottom: 8px; }

/* 类型徽标：和标签 chip 用同一套视觉语言 */
.detail-type {
  display: inline-block;
  font-size: 12px;
  padding: 2px 8px;
  margin-bottom: 10px;
  background:var(--kc-f2f2f2, #f2f2f2);
  border:1px solid var(--kc-dddddd, #ddd);
  border-radius: 8px;
  color:var(--kc-666666, #666);
}
.detail-type.tag-folder {
  border-radius: 4px;
  background:var(--kc-fff7e6, #fff7e6);
  border:1px solid var(--kc-f0d9a8, #f0d9a8);
  color:var(--kc-a06a00, #a06a00);
}
.detail-type.tag-knowledge {
  border-radius: 12px;
  background:var(--kc-eef7ee, #eef7ee);
  border:1px solid var(--kc-cfe8cf, #cfe8cf);
  color:var(--kc-2f7d32, #2f7d32);
}

.detail-course { font-size: 13px; color:var(--kc-666666, #666); margin-bottom: 6px; }
.detail-path { font-size: 13px; color:var(--kc-888888, #888); line-height: 1.7; }
.path-sep { margin: 0 6px; color:var(--kc-c4c4c4, #c4c4c4); }

.detail-section-title { font-size: 14px; color:var(--kc-666666, #666); margin: 6px 2px 8px; }

/* 关联错题 / 错题列表里可点的行 */
.detail-link-row { cursor: pointer; }
.detail-link-row:hover { background:var(--kc-f7f9ff, #f7f9ff); }
.row-arrow { color:var(--kc-c4c4c4, #c4c4c4); font-size: 18px; flex-shrink: 0; margin-left: 8px; }

/* 可点击的标签 chip */
.tag-chip-link { cursor: pointer; }
.tag-chip-link:hover {
  filter: brightness(0.96);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 22%, transparent);
}

/* 错题详情的图片 */
.mistake-detail-image {
  width: 100%;
  border-radius: 10px;
  display: block;
  background:var(--kc-ffffff, #fff);
}
.detail-actions { margin-top: 10px; }
.detail-link { font-size: 13px; }

/* ===== 资源详情（资料 / 笔记）与知识框架节点交互（Phase 4F） ===== */

#resourceDetailPage { display: none; }

/* 课程内搜索：使用独立页面，标题/返回按钮随页面滚动保持可访问。 */
#courseSearchPage { display: none; }
.course-header-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
#detailPage .header-left { min-width: 0; flex: 1; }
#detailTitle { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.course-search-entry, .course-search-submit { border: 0; border-radius: 8px; padding: 10px 14px; background:var(--kc-4a6cf7, #4a6cf7); color:#fff; font: inherit; font-size: 14px; cursor: pointer; }
.course-search-course { min-width: 0; max-width: 40%; font-size: 13px; color:var(--kc-777777, #777); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.course-search-content { max-width: 900px; margin: 0 auto; padding: 16px 12px 28px; }
.course-search-controls { background:var(--kc-ffffff, #fff); border:1px solid var(--kc-e3e3e3, #e3e3e3); border-radius: 10px; padding: 16px; }
.course-search-input-row { display: flex; gap: 10px; }
.course-search-input-row input { flex: 1; min-width: 0; padding: 10px 12px; border:1px solid var(--kc-cccccc, #ccc); border-radius: 8px; font: inherit; }
.course-search-types { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 14px; border: 0; padding: 0; }
.course-search-types legend { font-size: 13px; color:var(--kc-777777, #777); margin-bottom: 8px; }
.course-search-types label { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; cursor: pointer; }
.course-search-types input { width: 18px; height: 18px; margin: 0; }
.course-search-count { font-size: 13px; color:var(--kc-777777, #777); margin: 14px 0; }
.course-search-error { color:var(--kc-b42318, #b42318); font-size: 14px; overflow-wrap: anywhere; margin-bottom: 10px; }
.course-search-secondary, .course-search-more { border:1px solid var(--kc-ccd4e8, #ccd4e8); border-radius: 8px; padding: 11px 16px; background:var(--kc-ffffff, #fff); color:var(--kc-4a6cf7, #4a6cf7); font: inherit; cursor: pointer; }
.course-search-more { margin-top: 14px; width: 100%; }
.course-search-more:disabled { opacity: .6; cursor: wait; }
.course-search-results { display: grid; gap: 10px; }
.course-search-result { width: 100%; min-width: 0; border:1px solid var(--kc-e3e3e3, #e3e3e3); border-radius: 10px; padding: 14px; background:var(--kc-ffffff, #fff); text-align: left; font: inherit; display: grid; gap: 7px; cursor: pointer; }
.course-search-result:hover { border-color:var(--kc-b9c6f5, #b9c6f5); background:var(--kc-fafbff, #fafbff); }
.course-search-result-head { display: flex; align-items: flex-start; gap: 10px; }
.course-search-result-title { flex: 1; min-width: 0; font-size: 15px; color:var(--kc-232a3d, #232a3d); overflow-wrap: anywhere; }
.course-search-result-head .material-review-badge { flex-shrink: 0; margin: 0; }
.course-search-snippet { font-size: 13px; color:var(--kc-6b7280, #6b7280); line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }
@media (max-width: 600px) {
  .course-search-entry { padding: 9px 10px; font-size: 13px; }
  .course-search-controls { padding: 12px; }
  .course-search-result { padding: 12px; }
}

/* PDF 预览 */
.resource-pdf {
  width: 100%;
  height: 420px;
  border:1px solid var(--kc-eeeeee, #eee);
  border-radius: 10px;
  background:var(--kc-ffffff, #fff);
}

/* 知识框架里可点击的节点名称（点它看详情，改名走 ✎） */
.tree-name-link {
  flex: 1;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 6px;
  font-size: 14px;
  background:var(--kc-ffffff, #fff);
  border:1px solid var(--kc-e6e6e6, #e6e6e6);
  cursor: pointer;
}
.tree-name-link:hover { background:var(--kc-f7f9ff, #f7f9ff); border-color:var(--kc-d6ddfb, #d6ddfb); }
.tree-name-link .tree-type-icon { font-size: 11px; line-height: 1; }
.tree-name-link.tree-name-folder { color:var(--kc-a06a00, #a06a00); border-color:var(--kc-f0d9a8, #f0d9a8); }
.tree-name-link.tree-name-knowledge { color:var(--kc-2f7d32, #2f7d32); border-color:var(--kc-cfe8cf, #cfe8cf); }

/* 改名按钮 */
.tree-edit {
  width: 26px;
  height: 26px;
  flex-shrink: 0;
  border: none;
  border-radius: 50%;
  background:var(--kc-fff6e6, #fff6e6);
  color:var(--kc-a06a00, #a06a00);
  font-size: 13px;
  line-height: 1;
  padding: 0;
  cursor: pointer;
}
.tree-edit:hover { background:var(--kc-ffefd6, #ffefd6); }

/* ===== 手动输入 / 上传文件 两种录入方式 + 系统分类“未分类”（Phase 5） ===== */

/* 每个 Tab 顶部并排放两个录入按钮 */
.entry-btns { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.entry-btns .upload-btn { margin-bottom: 0; }
.upload-btn-plain {
  background:var(--kc-ffffff, #fff);
  color:var(--kc-4a6cf7, #4a6cf7);
  border:1px solid var(--kc-d6ddfb, #d6ddfb);
}

/* 列表里显示手动输入的内容摘要（最多两行） */
.row-content {
  font-size: 12px;
  color:var(--kc-5b6478, #5b6478);
  margin-top: 4px;
  white-space: pre-wrap;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

/* 详情页里的正文块 */
.detail-content {
  font-size: 14px;
  line-height: 1.7;
  color:var(--kc-333333, #333);
  background:var(--kc-fafbfd, #fafbfd);
  border:1px solid var(--kc-eef0f5, #eef0f5);
  border-radius: 8px;
  padding: 12px 14px;
  white-space: pre-wrap;
  word-break: break-word;
}

/* 考核弹窗里的“选择附件” */
.file-pick-btn {
  width: 100%;
  margin-top: 8px;
  padding: 8px 12px;
  border:1px dashed var(--kc-ccd4ea, #ccd4ea);
  border-radius: 8px;
  background:var(--kc-fbfcff, #fbfcff);
  color:var(--kc-4a6cf7, #4a6cf7);
  font-size: 13px;
  cursor: pointer;
}
.file-pick-btn:hover { background:var(--kc-f2f6ff, #f2f6ff); }
.file-name-tip {
  font-size: 12px;
  color:var(--kc-7a86a8, #7a86a8);
  margin-top: 6px;
  word-break: break-all;
}

/* 系统分类“未分类”：整体灰色，和普通分类区分开 */
.tree-name.tree-name-uncategorized,
.tree-name-link.tree-name-uncategorized {
  color:var(--kc-8a90a0, #8a90a0);
  border-color:var(--kc-dcdee5, #dcdee5);
  background:var(--kc-f6f7f9, #f6f7f9);
}
.tag-label.tag-uncategorized,
.tag-chip.tag-uncategorized {
  color:var(--kc-8a90a0, #8a90a0);
  border-color:var(--kc-dcdee5, #dcdee5);
  background:var(--kc-f6f7f9, #f6f7f9);
}

/* 排序模式下系统分类不参与拖动，用手柄占位保持对齐 */
.tree-handle-empty { width: 20px; flex-shrink: 0; }

/* 选择器顶部的“名称”输入框：只有上传文件时才出现，用来给上传的内容改名 */
.tag-picker-name { margin-bottom: 10px; }
.tag-picker-name label {
  display: block;
  font-size: 12px;
  color:var(--kc-7a86a8, #7a86a8);
  margin-bottom: 4px;
}
.tag-picker-name input {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  border:1px solid var(--kc-dddddd, #ddd);
  border-radius: 8px;
  font-size: 14px;
  outline: none;
}
.tag-picker-name input:focus { border-color:var(--kc-4a6cf7, #4a6cf7); }

/* 名字 + 固定后缀：后缀在输入框外面，用户改不到 */
.name-field { display: flex; align-items: center; gap: 8px; }
.name-field input { flex: 1; min-width: 0; }

/* 第一版错题功能界面，样式仅限定在错题区域。 */
.mistake-home-review { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin: 16px 0; padding: 18px; border:1px solid var(--kc-dce3ff, #dce3ff); border-radius: 10px; background:var(--kc-f4f6ff, #f4f6ff); }
.mistake-home-review-copy { flex: 1 1 200px; }
.mistake-home-review-copy strong { font-size: 16px; color:var(--kc-232a3d, #232a3d); }
.mistake-home-review-copy p { margin: 6px 0 0; color:var(--kc-5b6478, #5b6478); font-size: 13px; }
.mistake-home-review label { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; color:var(--kc-4a5268, #4a5268); font-size: 14px; }
.mistake-home-review select { padding: 10px; border:1px solid var(--kc-ccd4e8, #ccd4e8); border-radius: 8px; background:var(--kc-ffffff, #fff); font: inherit; }
.mistake-home-review button { padding: 12px 22px; border: 0; border-radius: 8px; background:var(--kc-4a6cf7, #4a6cf7); color:#fff; font-size: 15px; font-weight: 600; cursor: pointer; }
.mistake-home-review button:hover { background:var(--kc-3b59d9, #3b59d9); }
.mistake-home-review button:focus-visible { outline:3px solid var(--kc-a9b8ff, #a9b8ff); outline-offset: 3px; }
.mistake-home-review button:disabled { opacity: .6; cursor: wait; }
.mistake-review-picker { display: flex; flex-direction: column; width: 100%; max-width: 900px; height: 86vh; height: min(86dvh, 800px); padding: 0; overflow: hidden; }
body.mistake-review-open { overflow: hidden; }
.mistake-review-picker-head { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 16px 20px; border-bottom:1px solid var(--kc-eeeeee, #eee); flex-shrink: 0; }
.mistake-review-picker-head h3 { flex: 1; margin: 0; font-size: 17px; }
.mistake-review-picker-head button { padding: 8px; border:1px solid var(--kc-dddddd, #ddd); border-radius: 6px; background:var(--kc-f7f8fa, #f7f8fa); cursor: pointer; }
.mistake-review-picker-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 16px 20px; }
.mistake-review-picker-foot { flex-shrink: 0; padding: 12px 20px; border-top:1px solid var(--kc-eeeeee, #eee); background:var(--kc-ffffff, #fff); }
.mistake-review-picker-foot .modal-actions { margin: 0; flex-wrap: wrap; align-items: center; gap: 10px; }
.mistake-review-picker-foot .modal-actions > span { margin-right: auto; }
.mistake-review-picker-foot .modal-actions button { padding: 10px 14px; }
.mistake-review-picker-foot .mistake-inline-error { max-height: 70px; overflow-y: auto; }
#mistakeReviewPickerDetail #mistakeFilters > .mistake-toolbar { display: none; }
#mistakeReviewPickerDetail .mistake-actions { display: none; }
#mistakeReviewPickerDetail .mistake-select-check { flex-shrink: 0; }
#mistakeReviewPicker input[type="checkbox"] { width: 20px; height: 20px; padding: 0; margin: 0; flex: 0 0 20px; }
#mistakeReviewPicker .mistake-select-check { margin: 8px 12px 0 0; }
#mistakeReviewPickerDetail .mistake-state, #mistakeReviewPickerDetail .mistake-filter-tag { max-width: 100%; overflow-wrap: anywhere; }
#mistakeReviewPickerDetail .row-content, #mistakeReviewPickerDetail .meta { overflow-wrap: anywhere; }
#mistakeReviewPickerDetail .mistake-inline-error { white-space: normal; overflow-wrap: anywhere; }
#mistakeReviewPickerDetail .mistake-inline-error button { display: block; width: auto; margin: 6px 0 0; }
@media (max-width: 600px) {
  #mistakeReviewPicker { padding: 8px; }
  .mistake-review-picker { height: 92vh; height: 92dvh; }
  .mistake-review-picker-head, .mistake-review-picker-body { padding: 12px; }
  .mistake-review-picker-foot { padding: 12px 12px calc(12px + env(safe-area-inset-bottom, 0px)); }
  .mistake-review-picker-head button { font-size: 13px; }
  .mistake-review-picker-foot .modal-actions > span { flex-basis: 100%; }
  #mistakeReviewPickerDetail .item-row { gap: 8px; align-items: flex-start; }
}
.mistake-review-category { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0; border-bottom:1px solid var(--kc-eeeeee, #eee); }
.mistake-review-category > button { border: 0; background: transparent; color:var(--kc-4a6cf7, #4a6cf7); font: inherit; text-align: left; cursor: pointer; padding: 6px 0; }
.mistake-review-category small { display: block; color:var(--kc-777777, #777); margin-top: 5px; font-size: 12px; }
.mistake-review-category label { display: flex; align-items: center; gap: 8px; flex-shrink: 0; font-size: 13px; cursor: pointer; }
.mistake-review-category input { width: 18px; height: 18px; }
.mistake-categories { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; margin: 16px 0; }
.mistake-categories button { padding: 20px 12px; background:var(--kc-ffffff, #fff); border:1px solid var(--kc-dddddd, #ddd); border-radius: 8px; cursor: pointer; font-size: 15px; }
.mistake-categories small { display: block; color:var(--kc-777777, #777); margin-top: 8px; }
.mistake-workspace { padding: 16px; background:var(--kc-ffffff, #fff); border:1px solid var(--kc-e3e3e3, #e3e3e3); border-radius: 8px; margin: 12px 0; }
.mistake-toolbar, .mistake-filter-form, .mistake-review-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 10px 0; }
.mistake-mode-switch { display: inline-flex; align-items: center; gap: 8px; margin: 0 0 10px; font-size: 12px; color:var(--kc-667187, #667187); }
.mistake-mode-switch select { height: 30px; padding: 0 8px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 7px; background:var(--kc-ffffff, #fff); color:var(--kc-34415a, #34415a); font: inherit; }
.mistake-mode-switch select:disabled { opacity: .55; }
.mistake-format { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 6px 0; font-size: 12px; }
.mistake-format-confirm { display: flex; align-items: center; gap: 6px; font-size: 13px; color:var(--kc-667187, #667187); }
.review-workbench { position:fixed;inset:0;margin:auto;padding:0;border:0;border-radius:12px;width:min(720px,calc(100% - 24px));max-height:calc(100dvh - 24px);overflow:hidden; }
.review-workbench[open] { display:flex;flex-direction:column; }
.review-workbench::backdrop { background:rgba(17,25,40,.45); }
.review-workbench header,.review-workbench footer { flex:0 0 auto;padding:14px 18px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap; }
.review-workbench h2 { margin:0;font-size:18px; }
.review-workbench-body { padding:16px;overflow:auto;min-height:0; }
.review-workbench label { display:grid;gap:6px;margin:12px 0;font-size:14px; }
.review-workbench textarea,.review-workbench select,.review-workbench input,#mistakeFirstAnswer { width:100%;box-sizing:border-box;padding:9px;border:1px solid var(--kc-dbe0ea, #dbe0ea);border-radius:7px;font:inherit; }
.review-workbench textarea { resize:vertical; }
.cloze-editor [hidden] { display:none !important; }
.cloze-toolbar { display:flex;flex-wrap:wrap;gap:8px;margin:12px 0; }
#clozeMakeBlank.is-picking { background:var(--kc-e6eaf1, #e6eaf1); border-color:var(--kc-d5dae4, #d5dae4); color:var(--kc-929bad, #929bad); opacity:1; cursor:not-allowed; }
#clozeMakeBlank.is-picking.is-ready { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; cursor:pointer; opacity:1; }
.cloze-source { min-height:160px;padding:16px;border:1px solid var(--kc-dbe0ea, #dbe0ea);border-radius:10px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:2.2;background:var(--kc-ffffff, #fff);font-size:16px; }
.cloze-source:focus-visible { outline:2px solid var(--kc-b9c8ff, #b9c8ff);outline-offset:2px; }
.cloze-source:empty::before { content:'在这里输入或粘贴完整原文…';color:var(--kc-8a93a5, #8a93a5);pointer-events:none; }
.cloze-chip { display:inline-flex;max-width:100%;vertical-align:middle;border:1px solid var(--kc-b8caf7, #b8caf7);background:var(--kc-edf3ff, #edf3ff);border-radius:7px;margin:0 2px;line-height:1.5;user-select:all; }
.review-workbench .cloze-chip button { background:transparent;border:0;border-radius:6px;padding:3px 7px;min-height:32px;color:var(--kc-274d9b, #274d9b);font-size:inherit;overflow-wrap:anywhere; }
.review-workbench .cloze-chip button:first-child { text-align:left;min-width:0; }
.review-workbench .cloze-chip button:last-child { flex:0 0 auto;min-width:32px;border-left:1px solid var(--kc-c6d5f7, #c6d5f7); }
.cloze-editor #clozeStatus { font-size:13px;color:var(--kc-52627f, #52627f);margin:8px 0; }
.cloze-editor > details { border-top:1px solid var(--kc-e6eaf1, #e6eaf1);padding:12px 0; }
.cloze-editor .review-blank { padding:12px;border:1px solid var(--kc-e0e6ef, #e0e6ef);border-radius:8px;margin:8px 0; }
.cloze-editor summary { margin:0;line-height:1.7;overflow-wrap:anywhere; }
.cloze-matches { display:grid;gap:8px;margin-top:8px; }
.cloze-matches button { text-align:left;overflow-wrap:anywhere; }
@media(max-width:600px) { .cloze-source { padding:10px;min-height:130px; } .cloze-toolbar button { flex:1 1 auto; } }
.review-workbench .detail-content,.review-workbench p { white-space:pre-wrap;overflow-wrap:anywhere; }
.review-workbench button { min-height:40px;max-width:100%;white-space:normal; }
.review-workbench-content { display:flex;flex-direction:column;min-height:0;max-height:inherit;width:100%; }
.review-workbench-inline { position:static;inset:auto;display:block;margin:16px 0;width:100%;max-height:none;overflow:visible;border:1px solid var(--kc-e1e6ef, #e1e6ef);box-sizing:border-box;background:var(--kc-ffffff, #fff); }
.review-workbench-inline .review-workbench-content { max-height:none; }
.review-workbench-inline .review-workbench-body { overflow:visible; }
.review-workbench summary { cursor:pointer;font-size:14px;color:var(--kc-52627f, #52627f);margin-bottom:12px; }
#reviewWbInline[hidden],#reviewWbHeader[hidden],#mistakeReviewPanel[hidden],#materialReviewActions[hidden],#materialReviewContent[hidden],#materialReviewPreview[hidden] { display:none!important; }
.review-cloze-text { white-space:pre-wrap;font-size:18px;line-height:2.5;overflow-wrap:anywhere; }
.review-workbench .review-inline-blank { display:inline-block;margin:0 5px;max-width:100%;vertical-align:baseline; }
.review-workbench .review-inline-blank input { width:180px;max-width:100%;border-bottom:2px solid var(--kc-5673bc, #5673bc); }
.review-blank-result { display:inline;background:var(--kc-edf1f8, #edf1f8);padding:3px;border-radius:4px; }
.review-blank-result.is-correct { background:var(--kc-effaf3, #effaf3); }
.review-blank-result.is-wrong { background:var(--kc-fff3f3, #fff3f3); }
.review-result-status { font-weight:700; }
.review-blank-result.is-correct .review-result-status,
.review-answer-all-correct { color:var(--kc-23864f, #23864f); }
.review-blank-result.is-wrong .review-result-status,
.review-answer-miss { color:var(--kc-c43d3d, #c43d3d); }
.review-answer-hit { color:var(--kc-1b2230, #1b2230); }
.review-saved-result { font-weight:600; }
.review-saved-result.is-correct { color:var(--kc-23864f, #23864f); }
.review-saved-result.is-wrong { color:var(--kc-c43d3d, #c43d3d); }
.review-saved-result.is-neutral { color:var(--kc-667187, #667187); }
.review-auto-next { margin:0;color:var(--kc-667187, #667187);font-size:13px; }
.mistake-auto-next { color:var(--kc-667187, #667187);font-size:13px; }
.review-reading-body { max-width:760px;margin:18px auto;white-space:pre-wrap;font-size:18px;line-height:1.8;overflow-wrap:anywhere; }
.review-contrast-scroll { overflow-x:auto; }
.review-contrast-scroll table { border-collapse:collapse;width:100%; }
.review-contrast-scroll th,.review-contrast-scroll td { border:1px solid var(--kc-dbe0ea, #dbe0ea);padding:8px;vertical-align:top;min-width:115px; }
.review-contrast-scroll caption { text-align:left;margin-bottom:10px; }
.review-workbench .review-check { display:flex;align-items:flex-start;gap:10px; }
.review-workbench .review-check input { width:auto;flex:0 0 auto;margin-top:3px; }
.review-workbench fieldset { min-width:0;border:1px solid var(--kc-dbe0ea, #dbe0ea); }
.review-workbench .sr-only { position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap; }
.edit-choice-config > .mistake-format-confirm { flex-direction: row; }
.mistake-choice-options { display: flex; flex-direction: column; gap: 9px; margin: 14px 0 10px; }
.mistake-choice-option { display: flex; align-items: flex-start; gap: 10px; padding: 11px 14px; border:1px solid var(--kc-e1e6ef, #e1e6ef); border-radius: 10px; background:var(--kc-ffffff, #fff); color:var(--kc-34415a, #34415a); cursor: pointer; transition: border-color .18s ease, background-color .18s ease, box-shadow .18s ease; }
.mistake-choice-option:hover { border-color:var(--kc-b8c6ea, #b8c6ea); background:var(--kc-f8faff, #f8faff); }
.mistake-choice-option:has(input:checked) { border-color:var(--kc-8fa8ff, #8fa8ff); background:var(--kc-f1f5ff, #f1f5ff); box-shadow:0 0 0 3px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 10%, transparent); }
.mistake-choice-option.is-correct,
.mistake-choice-option.is-correct:has(input:checked) { border-color:var(--kc-6dbb8a, #6dbb8a); background:var(--kc-f1fbf4, #f1fbf4); box-shadow: 0 0 0 3px rgba(109, 187, 138, .12); }
.mistake-choice-option.is-wrong,
.mistake-choice-option.is-wrong:has(input:checked) { border-color:var(--kc-e3a0a0, #e3a0a0); background:var(--kc-fff6f6, #fff6f6); box-shadow: 0 0 0 3px rgba(227, 160, 160, .12); }
.mistake-choice-option input { flex-shrink: 0; width: 16px; height: 16px; margin: 2px 0 0; accent-color:var(--kc-4a6cf7, #4a6cf7); }
.mistake-choice-id { flex-shrink: 0; min-width: 18px; font-weight: 700; color:var(--kc-52627f, #52627f); }
.mistake-choice-text { min-width: 0; line-height: 1.6; overflow-wrap: anywhere; }
.mistake-choice-result { margin: 0 0 12px; font-size: 13px; font-weight: 600; }
.mistake-choice-result.is-correct { color:var(--kc-2f8a55, #2f8a55); }
.mistake-choice-result.is-wrong { color:var(--kc-b34b4b, #b34b4b); }
.mistake-toolbar h2, .mistake-workspace h2 { font-size: 16px; margin: 8px 0; }
.mistake-filter-form label, .mistake-edit-form label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.mistake-filter-form input, .mistake-filter-form select, .mistake-edit-form input, .mistake-edit-form select, .mistake-edit-form textarea { padding: 9px; border:1px solid var(--kc-cccccc, #ccc); border-radius: 5px; font: inherit; max-width: 100%; box-sizing: border-box; }
.mistake-filter-form input { width: min(260px, 65vw); }
.mistake-edit-form { display: grid; gap: 12px; margin-top: 14px; }
.mistake-edit-form textarea { width: 100%; resize: vertical; }
.mistake-workspace button, .mistake-toolbar button { padding: 9px 12px; border:1px solid var(--kc-cccccc, #ccc); border-radius: 5px; background:var(--kc-f7f8fa, #f7f8fa); cursor: pointer; }
.mistake-workspace button:disabled { cursor: wait; opacity: .55; }
.mistake-tag-filter summary, #mistakeEditor summary { cursor: pointer; padding: 8px 0; }
.mistake-filter-tag { display: inline-flex; align-items: center; gap: 5px; margin: 6px 12px 6px 0; font-size: 13px; }
.mistake-inline-error { color:var(--kc-b42318, #b42318); white-space: pre-wrap; }
.mistake-ai-panel { margin-top: 16px; padding-top: 12px; border-top:1px solid var(--kc-e3e3e3, #e3e3e3); }
.mistake-ai-panel[hidden], #mistakeAiResult[hidden] { display: none; }
.mistake-ai-note { color:var(--kc-667085, #667085); font-size: 13px; line-height: 1.7; }
.mistake-ai-panel fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.mistake-ai-key-settings[hidden] { display:none; }
.mistake-ai-analysis[hidden] { display:none; }
.mistake-answer-ai[hidden],.mistake-answer-ai section[hidden] { display:none; }
.mistake-answer-ai { border:1px solid var(--kc-dbe0ea, #dbe0ea);padding:12px;margin-top:12px;border-radius:8px;overflow-wrap:anywhere; }
.mistake-answer-ai fieldset { min-width:0;border:0;padding:0; }
.mistake-answer-ai label { display:block;margin:10px 0; }
.mistake-answer-ai select,.mistake-answer-ai textarea { width:100%;box-sizing:border-box; }
.mistake-answer-ai label:has(input[type=checkbox]) { display:flex;flex-direction:row;align-items:flex-start;gap:8px; }
.mistake-answer-ai input[type=checkbox] { width:auto;flex:0 0 auto;margin-top:5px; }
.mistake-answer-ai .modal-actions { flex-wrap:wrap; }
#tagPickerModal .mistake-answer-ai .modal-actions button,
#mistakeEditModal .mistake-answer-ai .modal-actions button { flex:1 1 130px;min-width:0;white-space:normal;word-break:keep-all; }
.mistake-answer-ai button { min-height:40px; }
.mistake-ai-analysis { overflow-wrap:anywhere;padding:12px;border:1px solid var(--kc-dbe0ea, #dbe0ea);border-radius:8px;margin:12px 0; }
.mistake-ai-analysis h4 { margin:12px 0 6px;font-size:14px; }
.mistake-ai-analysis ul { margin:0;padding-left:20px; }
.mistake-ai-key-settings input[type=password] { width:100%;box-sizing:border-box;padding:10px;border:1px solid var(--kc-cccccc, #ccc);border-radius:5px;font:inherit; }
.mistake-ai-key-settings label:has(input[type=checkbox]) { display:flex;align-items:flex-start;gap:8px; }
.mistake-ai-key-settings input[type=checkbox] { width:auto;flex:0 0 auto;margin-top:5px; }
.mistake-ai-panel label { display: block; margin: 12px 0 6px; font-size: 14px; }
.mistake-ai-panel textarea, .mistake-ai-panel select { display: block; box-sizing: border-box; width: 100%; max-width: 100%; padding: 10px; border:1px solid var(--kc-cccccc, #ccc); border-radius: 5px; background:var(--kc-ffffff, #fff); font: inherit; }
.mistake-ai-panel textarea { resize: vertical; }
.mistake-ai-panel p { overflow-wrap: anywhere; }
.mistake-ai-panel > .mistake-ai-note { margin: 0 0 16px; }
.mistake-ai-panel .edit-card label { margin: 14px 0 6px; font-size: 13px; color:var(--kc-5b6478, #5b6478); }
.mistake-ai-panel .edit-card textarea, .mistake-ai-panel .edit-card select { border-color:var(--kc-dbe0ea, #dbe0ea); border-radius: 9px; background:var(--kc-fcfdff, #fcfdff); font-size: 14px; padding: 10px 12px; }
.mistake-ai-panel .edit-card :is(textarea,select):focus { outline:2px solid var(--kc-b9c8ff, #b9c8ff); outline-offset: 1px; background:var(--kc-ffffff, #fff); }
#mistakeAiDialog #mistakeAiTitle, #mistakeAiPanel .mistake-ai-dialog-only { display: none; }
#mistakeAiResult > p { margin: 10px 0; }
#mistakeAiReason { max-height: none; overflow: visible; }
#mistakeAiActions { font-size: 13px; line-height: 1.5; }
#mistakeAiActions .modal-actions { margin-top: 10px; flex-wrap: wrap; }
#mistakeAiActions button { min-height: 40px; }
#mistakeAiConfirmation:empty { display: none; }
#mistakeAiConfirmation:not(:empty) { margin: 8px 0; overflow-wrap: anywhere; }
#mistakeAiStatus:empty, #mistakeAiError:empty { display: none; }
#mistakeAiStatus:not(:empty), #mistakeAiError:not(:empty) { margin: 10px 0; }

.mistake-ai-saved { display: block; margin-top: 6px; color:var(--kc-526477, #526477); font-size: 13px; overflow-wrap: anywhere; }
:is(#mistakeList, #materialList, #noteList) .mistake-actions { flex-wrap: wrap; gap: 6px; max-width: 220px; justify-content: flex-end; }
:is(#mistakeList, #materialList, #noteList) .info { min-width: 0; }
#mistakeAiDialog { position: fixed; inset: 0; margin: auto; box-sizing: border-box; width: min(680px, calc(100% - 32px)); max-height: calc(100vh - 32px); max-height: min(88dvh, 860px); overflow: hidden; padding: 0; border: 0; border-radius: 12px; }
#mistakeAiDialog[open] { display: flex; flex-direction: column; }
#mistakeAiDialogBody { background:var(--kc-f6f7fb, #f6f7fb); }
#mistakeAiDialog::backdrop { background: rgba(17,25,40,.45); }
.mistake-ai-dialog-head { display: flex; flex: 0 0 auto; align-items: center; gap: 16px; padding: 18px 24px; border-bottom:1px solid var(--kc-eef0f5, #eef0f5); justify-content: space-between; }
.mistake-ai-dialog-head > div { min-width: 0; }
#mistakeAiDialogQuestionTitle { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin-top: 3px; overflow-wrap: anywhere; }
.mistake-ai-dialog-head h2 { font-size: 17px; font-weight: 600; margin: 0; overflow-wrap: anywhere; }
.mistake-ai-dialog-head button { flex: 0 0 auto; min-width: 44px; min-height: 44px; }
#mistakeAiDialog .mistake-ai-panel { border-top: 0; margin-top: 0; }
@media (max-width: 640px) {
  :is(#mistakeList, #materialList, #noteList) .item-row { flex-wrap: wrap; }
  :is(#mistakeList, #materialList, #noteList) .item-row > .info { flex-basis: 100%; }
  :is(#mistakeList, #materialList, #noteList) .mistake-actions { max-width: 100%; width: 100%; justify-content: flex-start; }
  #mistakeAiDialog { width: calc(100% - 20px); max-height: calc(100dvh - 20px); }
  .mistake-ai-dialog-head { padding: 14px 16px; }
  #mistakeAiDialogFoot .modal-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #mistakeAiDialogFoot .btn-confirm { grid-column: 1 / -1; }
}
.mistake-state { display: inline-block; border-radius: 4px; background:var(--kc-f1f3f5, #f1f3f5); padding: 3px 7px; margin: 5px 6px 5px 0; font-size: 12px; }
.mistake-state-reviewed { color:var(--kc-28743c, #28743c); background:var(--kc-eaf6ed, #eaf6ed); }
@media (max-width: 600px) { #pane-mistakes .item-row.mistake-selectable { align-items: flex-start; flex-direction: column; gap: 10px; } }
.name-ext {
  flex-shrink: 0;
  font-size: 14px;
  color:var(--kc-5b6478, #5b6478);
  background:var(--kc-eef1f6, #eef1f6);
  border:1px solid var(--kc-e0e4ec, #e0e4ec);
  border-radius: 8px;
  padding: 8px 10px;
  white-space: nowrap;
}
.name-tip { font-size: 12px; color:var(--kc-9aa4c0, #9aa4c0); margin-top: 4px; }
/* 分类内勾选与连续复习，沿用错题页面样式。 */
.mistake-selectable { cursor: pointer; }
.mistake-select-check { flex: 0 0 auto; width: 20px; height: 20px; margin: 8px 12px 0 0; }

/* 智能排期预览（复习计划详情页） */
.plan-schedule-days, .plan-schedule-warnings { margin: 8px 0 0; padding-left: 20px; }
.plan-schedule-days li, .plan-schedule-warnings li { margin: 2px 0; font-size: 13px; }
.plan-schedule-warnings { color:var(--kc-b45309, #b45309); }

/* 智能排期日历 */
.plan-calendar-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 12px 0 8px; }
.plan-calendar-head strong { font-size: 14px; color:var(--kc-41516f, #41516f); }
.plan-calendar-head button { width: 30px; height: 30px; padding: 0; border:1px solid var(--kc-dfe5ef, #dfe5ef); border-radius: 6px; background:var(--kc-ffffff, #fff); color:var(--kc-71809a, #71809a); font-size: 16px; cursor: pointer; }
.plan-calendar-actions { display: flex; align-items: center; gap: 8px; }
.plan-calendar-apply { width: auto !important; height: 30px; padding: 0 14px !important; border: 0 !important; border-radius: 7px !important; background:var(--kc-4a6cf7, #4a6cf7) !important; color:#fff !important; font-size: 13px !important; cursor: pointer; box-shadow:0 2px 8px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 35%, transparent); }
.plan-calendar-apply:hover { filter: brightness(1.06); }
.plan-calendar-week, .plan-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.plan-calendar-week { margin-bottom: 5px; color:var(--kc-8a93a5, #8a93a5); font-size: 12px; text-align: center; }
.plan-calendar-cell { position: relative; min-height: 54px; width: 100%; margin: 0; padding: 6px; border:1px solid var(--kc-e6eaf1, #e6eaf1); border-radius: 8px; background:var(--kc-ffffff, #fff); font: inherit; font-size: 12px; color:var(--kc-55607a, #55607a); text-align: left; }
.plan-calendar-cell.is-blank { border-color: transparent; background: transparent; }
.plan-calendar-cell.is-empty { background:var(--kc-fafbfd, #fafbfd); color:var(--kc-b9c1cf, #b9c1cf); }
.plan-calendar-cell.has-items { border-color:var(--kc-b9c8ff, #b9c8ff); background:var(--kc-eef2ff, #eef2ff); cursor: pointer; }
.plan-calendar-cell.has-items:hover { border-color:var(--kc-4a6cf7, #4a6cf7); background:var(--kc-e3e9ff, #e3e9ff); }
.plan-calendar-cell.is-today { border-color:var(--kc-4a6cf7, #4a6cf7); background:var(--kc-dde6ff, #dde6ff); box-shadow:inset 0 0 0 1px var(--kc-4a6cf7, #4a6cf7); }
.plan-calendar-cell.is-done { border-color:var(--kc-7fd3a5, #7fd3a5); background:var(--kc-e8f8ef, #e8f8ef); }
.plan-calendar-cell.is-overdue { border-color:var(--kc-eb9a9a, #eb9a9a); background:var(--kc-fdeeee, #fdeeee); }
.plan-calendar-cell.is-exam { border-color:var(--kc-eeb04a, #eeb04a); background:var(--kc-fff5e2, #fff5e2); }
.plan-calendar-day { font-weight: 600; }
.plan-calendar-day, .plan-calendar-mark, .plan-calendar-count { pointer-events: none; }
.plan-calendar-mark { position: absolute; top: 4px; right: 6px; font-size: 11px; color:var(--kc-4a6cf7, #4a6cf7); }
.plan-calendar-mark.is-check { color:var(--kc-1f9d5b, #1f9d5b); font-weight: 700; font-size: 16px; }
.plan-calendar-mark.is-overdue-mark { color:var(--kc-d64545, #d64545); font-weight: 700; }
.plan-calendar-mark.is-today-mark { color:var(--kc-4a6cf7, #4a6cf7); font-size: 13px; animation: plan-pointer-bounce 1.1s ease-in-out infinite; }
.plan-calendar-mark.is-exam-mark { color:var(--kc-b7791f, #b7791f); font-weight: 700; }
.plan-calendar-count { position: absolute; left: 6px; bottom: 5px; color:var(--kc-5b6a8a, #5b6a8a); line-height: 1; }
.plan-calendar-cell.is-empty .plan-calendar-count { display: none; }
.plan-calendar-legend { margin: 10px 0 0; color:var(--kc-8a93a5, #8a93a5); font-size: 12px; line-height: 1.8; }
.plan-calendar-legend .is-today-mark { color:var(--kc-4a6cf7, #4a6cf7); }
.plan-calendar-legend .is-check { color:var(--kc-1f9d5b, #1f9d5b); font-weight: 700; }
.plan-calendar-legend .is-overdue-mark { color:var(--kc-d64545, #d64545); font-weight: 700; }
.plan-calendar-legend .is-exam-mark { color:var(--kc-b7791f, #b7791f); font-weight: 700; }
@keyframes plan-pointer-bounce {
  0%, 100% { transform: translateY(-2px); }
  50% { transform: translateY(2px); }
}

/* 排期日历：当天任务弹窗 */
.review-day-dialog { max-width: 430px; }
/* 关闭后遮罩正在淡出时也不要吃点击 */
#reviewPlanDayModal:not(.show) { pointer-events: none; }
.review-day-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.review-day-head h3 { margin: 0; font-size: 16px; }
.review-day-close { width: 30px; height: 30px; padding: 0; border: 0; border-radius: 6px; background: transparent; color:var(--kc-7a8394, #7a8394); font-size: 22px; cursor: pointer; }
.review-day-body { max-height: 50vh; overflow-y: auto; }
.review-day-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 8px 0; padding: 10px 12px; border:1px solid var(--kc-e6eaf1, #e6eaf1); border-radius: 8px; background:var(--kc-f8f9fc, #f8f9fc); }
.review-day-card p { margin: 2px 0 0; }
.review-day-card-actions { display:flex;align-items:center;gap:8px;flex-shrink:0; }
.review-day-card button { padding: 7px 14px; border: 0; border-radius: 7px; background:var(--kc-4a6cf7, #4a6cf7); color:#fff; cursor: pointer; }
.review-day-card button.plan-day-preview { border:1px solid var(--kc-cbd7f5, #cbd7f5);background:var(--kc-ffffff, #fff);color:var(--kc-4864aa, #4864aa); }
.plan-day-done { color:var(--kc-1f9d5b, #1f9d5b); font-size: 13px; margin: 4px 0 8px; }
.plan-day-partial { color:var(--kc-b45309, #b45309); font-size: 13px; margin: 4px 0 8px; }
.plan-day-overdue { color:var(--kc-c0392b, #c0392b); font-size: 13px; margin: 4px 0 8px; }
.plan-day-stats { color:var(--kc-55607a, #55607a); font-size: 13px; margin: 4px 0 8px; }
.plan-day-early { color:var(--kc-5b6a8a, #5b6a8a); font-size: 13px; margin: 4px 0 8px; background:var(--kc-f3f6ff, #f3f6ff); border-radius: 6px; padding: 8px 10px; }
@media(max-width:540px) {
  .plan-calendar-cell { min-height: 46px; padding: 4px; }
  .plan-calendar-count { left: 4px; bottom: 4px; font-size: 10px; }
}

/* 复习完成弹窗：正确率 100% 时整页飘一层彩带，彩带在弹窗卡片后面，不挡内容。 */
.mistake-complete { position: relative; z-index: 1; text-align: center; }
.mistake-complete h3 { font-size: 19px; line-height: 1.5; margin-bottom: 10px; padding:0 28px; }
.mistake-complete > .tag-sheet-close { position:absolute;top:12px;right:12px; }
.mistake-complete p { margin: 0 0 16px; color:var(--kc-5b6273, #5b6273); font-size: 14px; line-height: 1.6; }
.mistake-complete .modal-actions { justify-content: center; flex-wrap: wrap; }
.mistake-complete .modal-actions button {
  padding: 10px 16px; border:1px solid var(--kc-d7dae3, #d7dae3); border-radius: 8px;
  background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-333333, #333); font: inherit; cursor: pointer;
}
.mistake-complete .modal-actions button:hover { background:var(--kc-e8eaf1, #e8eaf1); }
.mistake-complete .modal-actions button.btn-primary { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
.mistake-complete .modal-actions button.btn-primary:hover { filter: brightness(1.06); }

.review-answers-preview {
  width:min(900px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;margin:auto;
  border:1px solid var(--kc-dfe5ef, #dfe5ef);border-radius:14px;background:var(--kc-ffffff, #fff);overflow:hidden;
}
.review-answers-preview::backdrop { background:rgba(17,25,40,.52); }
.review-answers-preview[open] { display:flex;flex-direction:column; }
.review-answers-preview header,
.review-answers-preview footer { display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px; }
.review-answers-preview header { border-bottom:1px solid var(--kc-e9edf4, #e9edf4); }
.review-answers-preview header h2 { margin:0;font-size:18px; }
.review-answers-preview header p { margin:4px 0 0;color:var(--kc-7a8497, #7a8497);font-size:12px; }
.review-answers-preview footer { justify-content:flex-end;border-top:1px solid var(--kc-e9edf4, #e9edf4);background:var(--kc-fafbfe, #fafbfe); }
.review-answers-preview-body { min-height:0;max-height:calc(100dvh - 150px);overflow:auto;padding:16px 18px;background:var(--kc-f7f9fc, #f7f9fc); }
.review-answers-preview-summary { display:flex;flex-wrap:wrap;gap:8px 18px;padding:12px 14px;margin-bottom:12px;border:1px solid var(--kc-dfe6f7, #dfe6f7);border-radius:10px;background:var(--kc-f3f6ff, #f3f6ff);color:var(--kc-52627f, #52627f);font-size:13px; }
.review-answers-preview-summary strong { color:var(--kc-263652, #263652); }
.review-answer-preview-item { margin:10px 0;border:1px solid var(--kc-e1e6ef, #e1e6ef);border-radius:11px;background:var(--kc-ffffff, #fff);overflow:hidden; }
.review-answer-preview-item summary { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;cursor:pointer;color:var(--kc-34415a, #34415a);font-weight:600; }
.review-answer-preview-item summary > span:first-child { min-width:0;overflow-wrap:anywhere; }
.review-preview-status { flex:0 0 auto;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600; }
.review-preview-status.is-correct { color:var(--kc-23864f, #23864f);background:var(--kc-edf9f1, #edf9f1); }
.review-preview-status.is-wrong { color:var(--kc-b93636, #b93636);background:var(--kc-fff0f0, #fff0f0); }
.review-preview-status.is-exposed,
.review-preview-status.is-skipped,
.review-preview-status.is-deleted { color:var(--kc-7a5a28, #7a5a28);background:var(--kc-fff6e8, #fff6e8); }
.review-preview-status.is-pending { color:var(--kc-667187, #667187);background:var(--kc-f0f2f6, #f0f2f6); }
.review-answer-preview-content { padding:4px 15px 15px;border-top:1px solid var(--kc-edf0f5, #edf0f5); }
.review-answer-preview-field { margin-top:12px; }
.review-answer-preview-field h4 { margin:0 0 6px;color:var(--kc-52627f, #52627f);font-size:13px; }
.review-answer-preview-field pre { margin:0;padding:10px 12px;border-radius:8px;background:var(--kc-f7f8fb, #f7f8fb);color:var(--kc-2f3b52, #2f3b52);font:13px/1.7 "Microsoft YaHei",system-ui,sans-serif;white-space:pre-wrap;overflow-wrap:anywhere; }
.review-answer-preview-blanks { display:grid;gap:8px; }
.review-answer-preview-blank { padding:10px 12px;border:1px solid var(--kc-e1e6ef, #e1e6ef);border-radius:8px;background:var(--kc-fafbfe, #fafbfe); }
.review-answer-preview-blank.is-correct { border-color:var(--kc-b9e2c8, #b9e2c8);background:var(--kc-f3fbf6, #f3fbf6); }
.review-answer-preview-blank.is-wrong { border-color:var(--kc-efc1c1, #efc1c1);background:var(--kc-fff5f5, #fff5f5); }
.review-answer-preview-blank > span { font-weight:700;color:var(--kc-52627f, #52627f); }
.review-answer-preview-blank p { margin:4px 0;white-space:pre-wrap;overflow-wrap:anywhere; }
.review-answer-preview-blank small { color:var(--kc-7a8497, #7a8497); }
.review-answer-preview-options { margin:0 0 8px;padding-left:22px; }
.review-answer-preview-meta { margin:14px 0 0;color:var(--kc-7a8497, #7a8497);font-size:12px; }
@media(max-width:600px){
  .review-answers-preview { width:calc(100vw - 12px);max-height:calc(100dvh - 12px); }
  .review-answers-preview-body { max-height:calc(100dvh - 138px);padding:12px; }
  .review-answer-preview-item summary { align-items:flex-start; }
}
/* 彩带层：铺满整个页面，压在弹窗卡片下面，从顶飘到底再淡出。 */
.mistake-confetti { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.mistake-confetti canvas { display: block; width: 100%; height: 100%; }
.mistake-confetti > span {
  position: absolute; top: 0; opacity: 0;
  animation-name: mistake-confetti-fall; animation-timing-function: linear; animation-fill-mode: forwards;
}
/* 彩带一边落一边摆 + 扭，避免整条直挺挺地平移下去。 */
.mistake-streamer svg {
  display: block;
  animation-name: mistake-flutter; animation-timing-function: ease-in-out;
  animation-iteration-count: infinite; animation-direction: alternate;
  animation-duration: var(--flutter, 1.4s); animation-delay: var(--flutter-delay, 0s);
}
@keyframes mistake-flutter {
  0% { transform: translateX(calc(var(--amp, 8px) * -1)) rotate(calc(var(--tilt, 0deg) - var(--sway, 14deg))); }
  100% { transform: translateX(var(--amp, 8px)) rotate(calc(var(--tilt, 0deg) + var(--sway, 14deg))); }
}
/* 碎片形状也随机：小方片 / 细长条 / 圆点，落的过程中翻面。 */
.mistake-bit { width: var(--w, 7px); height: var(--h, 14px); border-radius: var(--r, 1.5px); }
.mistake-bit > i {
  display: block; width: 100%; height: 100%;
  border-radius: inherit; background: inherit;
  animation-name: mistake-tumble; animation-timing-function: ease-in-out;
  animation-iteration-count: infinite; animation-direction: alternate;
  animation-duration: var(--tumble, 0.7s);
}
@keyframes mistake-tumble {
  0% { transform: rotate3d(1, 1, 0, -42deg) scaleX(0.55); }
  100% { transform: rotate3d(1, 1, 0, 42deg) scaleX(1); }
}
@keyframes mistake-confetti-fall {
  0% { transform: translate3d(0, -32vh, 0) rotate(var(--tilt, 0deg)); opacity: 0; }
  10% { opacity: 1; }
  78% { opacity: 1; }
  100% { transform: translate3d(var(--drift, 0px), 112vh, 0) rotate(calc(var(--tilt, 0deg) + var(--spin, 200deg))); opacity: 0; }
}

/* ============================================================
   标签选择器（错题 / 资料 / 笔记 的上传与编辑共用）
   ------------------------------------------------------------
   结构见 index.html 里的 #tagPickerModal：头部固定 / 中间滚动 / 底部固定。
     · 弹窗整体限高：桌面 86vh（最多 820px），手机 92dvh；
     · 只有中间 .tag-sheet-body 滚动，所以内容再多也滚得到、点得到；
     · 中间区必须 flex:1 配 min-height:0 —— 少了 min-height，flex 子项会被
       内容撑高，滚动条根本不出现（旧版"看不全"就是这个原因）；
     · 手机上整体变成从底部升起的抽屉，底部留出 iPhone 安全区的空白。
   ============================================================ */

/* 打开选择器时锁住背景页面，别让底下的列表跟着一起滚 */
body.tag-picker-open { overflow: hidden; }

#tagPickerModal, #mistakeEditModal { padding: 0; }          /* 抽屉要贴边，间距交给内部各区块自己管 */

/* ---------- 弹窗本体：桌面 = 居中弹窗 ---------- */
#tagPickerModal .tag-sheet, #mistakeEditModal .tag-sheet {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 560px;
  max-height: 86vh;                       /* 老浏览器忽略下一行时用这个 */
  max-height: min(86dvh, 820px);
  padding: 0;                             /* 覆盖 .modal 的 20px，三段式各自管内边距 */
  border-radius: 16px;
  overflow: hidden;                       /* 圆角要裁住内部的滚动区 */
  box-shadow: 0 18px 48px rgba(21, 30, 60, 0.18);
  transform: translateY(12px) scale(0.98);
  transition: transform 0.26s cubic-bezier(0.22, 0.61, 0.36, 1);
}
#tagPickerModal.show .tag-sheet, #mistakeEditModal.show .tag-sheet { transform: none; }

/* 抽屉抓手：只在手机形态出现 */
#tagPickerModal .tag-sheet-grip, #mistakeEditModal .tag-sheet-grip { display: none; position: relative; flex: 0 0 auto; height: 18px; }
#tagPickerModal .tag-sheet-grip::after, #mistakeEditModal .tag-sheet-grip::after {
  content: '';
  position: absolute;
  left: 50%; top: 8px;
  width: 40px; height: 4px;
  margin-left: -20px;
  border-radius: 2px;
  background:var(--kc-dfe3ec, #dfe3ec);
}

/* ---------- 头部：固定不动 ---------- */
#tagPickerModal .tag-sheet-head, #mistakeEditModal .tag-sheet-head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 14px 12px 20px;
  border-bottom:1px solid var(--kc-eef0f5, #eef0f5);
}
#tagPickerModal .tag-sheet-head h3, #mistakeEditModal .tag-sheet-head h3 {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  color:var(--kc-232a3d, #232a3d);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#tagPickerModal .tag-sheet-close, #mistakeEditModal .tag-sheet-close, #mistakeAiDialog .tag-sheet-close, #mistakeCompleteModal .tag-sheet-close {
  flex: 0 0 auto;
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  border: none; border-radius: 50%;
  background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-5b6478, #5b6478);
  font-size: 20px; line-height: 1;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
#tagPickerModal .tag-sheet-close:hover, #mistakeEditModal .tag-sheet-close:hover, #mistakeAiDialog .tag-sheet-close:hover, #mistakeCompleteModal .tag-sheet-close:hover { background:var(--kc-e8eaf1, #e8eaf1); color:var(--kc-232a3d, #232a3d); }

/* ---------- 中间：唯一的滚动区 ---------- */
#tagPickerModal .tag-sheet-body, #mistakeEditModal .tag-sheet-body, #mistakeAiDialog .tag-sheet-body {
  flex: 1 1 auto;
  min-height: 0;                          /* ★ 关键：不加这句，flex 子项按内容撑高，永远不出现滚动条 */
  overflow-y: auto;
  overscroll-behavior: contain;            /* 滚到头别带着背景一起滚 */
  -webkit-overflow-scrolling: touch;
  padding: 16px 20px 14px;
  scrollbar-gutter: stable;               /* 有没有滚动条都别让内容左右跳 */
}

/* ---------- 底部：固定不动（已选标签 + 按钮） ---------- */
#tagPickerModal .tag-sheet-foot, #mistakeEditModal .tag-sheet-foot, #mistakeAiDialog .tag-sheet-foot {
  flex: 0 0 auto;
  padding: 12px 20px 16px;
  border-top:1px solid var(--kc-eef0f5, #eef0f5);
  background:var(--kc-ffffff, #fff);
  box-shadow: 0 -8px 18px rgba(21, 30, 60, 0.05);
}

/* 已选标签最多占两行高，再多自己滚，绝不把下面的按钮挤没 */
#tagPickerModal .tag-picker-selected {
  max-height: 84px;
  overflow-y: auto;
  overscroll-behavior: contain;
  align-content: flex-start;
  margin-bottom: 12px;
}

/* ---------- 名称 / 搜索框 ---------- */
#tagPickerModal .tag-picker-name { margin-bottom: 14px; }
#tagPickerModal .tag-picker-name input { padding: 10px 12px; font-size: 15px; margin-bottom: 0; }
#tagPickerModal .tag-picker-name-fields { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 10px 12px; }
#tagPickerModal .tag-picker-name-field { flex: 1 1 220px; min-width: 0; }
#tagPickerModal .tag-picker-category {
  flex: 0 1 180px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 140px;
  font-size: 12px;
  color:var(--kc-7a86a8, #7a86a8);
}
#tagPickerModal .tag-picker-category select {
  width: 100%;
  box-sizing: border-box;
  height: 42px;
  padding: 0 10px;
  border:1px solid var(--kc-dce1e9, #dce1e9);
  border-radius: 9px;
  background:var(--kc-fcfdff, #fcfdff);
  color:var(--kc-34415a, #34415a);
  font: inherit;
  font-size: 14px;
}
#tagPickerModal .tag-picker-name.mistake-create-card #tagPickerNameHeading { margin-bottom: 10px; }

#tagPickerModal .tag-picker-search { margin-bottom: 12px; }
#tagPickerModal .tag-picker-search input {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 10px 12px;
  border:1px solid var(--kc-dfe3ec, #dfe3ec);
  border-radius: 10px;
  background:var(--kc-fbfcfe, #fbfcfe);
  font-size: 14px;
  outline: none;
  appearance: none;
  -webkit-appearance: none;
}
#tagPickerModal .tag-picker-search input:focus {
  border-color:var(--kc-4a6cf7, #4a6cf7);
  background:var(--kc-ffffff, #fff);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 12%, transparent);
}

/* ---------- 树里的每一行：整行好点，行高够手指用 ---------- */
#tagPickerModal .tag-picker-tree .empty { padding: 22px 12px; text-align: center; color:var(--kc-9aa4c0, #9aa4c0); }
#tagPickerModal .tag-node { padding: 0; }
#tagPickerModal .tag-row {
  gap: 8px;
  min-height: 36px;
  padding: 2px 6px;
  border-radius: 9px;
  transition: background 0.15s ease;
}
#tagPickerModal .tag-row:hover,
#tagPickerModal .tag-row.tag-row-selected { background:var(--kc-eef2ff, #eef2ff); }
#tagPickerModal button.tag-toggle {
  width: 24px; height: 24px;
  border-radius: 6px;
  font-size: 12px;
  transition: background 0.15s ease;
}
#tagPickerModal button.tag-toggle:hover { background:var(--kc-e3e8f7, #e3e8f7); }
#tagPickerModal .tag-label {
  flex: 1 1 auto;
  min-width: 0;
  padding: 6px 8px;
  font-size: 14.5px;
  overflow-wrap: anywhere;                /* 名字太长就换行，别横向撑破卡片 */
}

/* ---------- 错题信息：单独一张卡片，和标签树区分开 ---------- */
#tagPickerModal .mistake-edit-form {
  margin-top: 14px;
  padding: 14px;
  background:var(--kc-fafbfd, #fafbfd);
  border:1px solid var(--kc-eef0f5, #eef0f5);
  border-radius: 12px;
}
/* 错题新建/上传：沿用编辑错题的卡片 + 图标设计，但只作用于错题创建弹窗。 */
#tagPickerModal .tag-sheet-body.mistake-create-body { background:var(--kc-f6f7fb, #f6f7fb); }
#tagPickerModal .mistake-create-cards { display: grid; gap: 14px; margin-top: 14px; }
#tagPickerModal .mistake-create-cards .edit-card { margin-bottom: 0; }
#tagPickerModal .tag-picker-name.mistake-create-card,
#tagPickerModal .tag-picker-tag-block.mistake-create-card {
  background:var(--kc-ffffff, #fff);
  border:1px solid var(--kc-e6e9f2, #e6e9f2);
  border-radius: 14px;
  padding: 14px 16px;
  margin-bottom: 14px;
  box-shadow: 0 1px 2px rgba(21, 30, 60, .04);
}
#tagPickerModal .tag-picker-name.mistake-create-card label::before {
  content: '📝';
  margin-right: 6px;
}
#tagPickerModal .tag-picker-tag-block.mistake-create-card .tag-picker-search { margin-bottom: 12px; }
#tagPickerModal .tag-picker-tag-block.mistake-create-card .tag-picker-tree {
  padding: 2px 0 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}
#tagPickerModal .mistake-create-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 12px;
  color:var(--kc-667187, #667187);
}
#tagPickerModal .mistake-create-cards input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),
#tagPickerModal .mistake-create-cards select,
#tagPickerModal .mistake-create-cards textarea {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 11px 12px;
  border:1px solid var(--kc-dbe0ea, #dbe0ea);
  border-radius: 9px;
  background:var(--kc-fcfdff, #fcfdff);
  font: inherit;
  font-size: 14px;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
#tagPickerModal .mistake-create-cards textarea { resize: vertical; }
#tagPickerModal .mistake-create-cards input:focus,
#tagPickerModal .mistake-create-cards select:focus,
#tagPickerModal .mistake-create-cards textarea:focus {
  outline: none;
  background:var(--kc-ffffff, #fff);
  border-color:var(--kc-4a6cf7, #4a6cf7);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 12%, transparent);
}
.mistake-create-file {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 12px;
  border:1px solid var(--kc-e5e9f1, #e5e9f1);
  border-radius: 10px;
  background:var(--kc-f8faff, #f8faff);
  color:var(--kc-49566f, #49566f);
  font-size: 13px;
  overflow-wrap: anywhere;
}
.mistake-create-file-icon { flex-shrink: 0; font-size: 18px; line-height: 1.3; }
.mistake-create-file strong { display: block; font-size: 13px; }
.mistake-create-file small { display: block; margin-top: 3px; color:var(--kc-8a93a5, #8a93a5); font-size: 12px; }
.mistake-ocr-panel { display: grid; gap: 10px; padding: 12px; border:1px solid var(--kc-d7e0ff, #d7e0ff); border-radius: 12px; background:var(--kc-f7f9ff, #f7f9ff); }

/* 详情页：重点总结 / 大纲和思维导图是两个独立区域 */
.resource-detail-topic { margin: 18px 0 22px; }
.resource-detail-outline-text {
  margin: 0; padding: 14px 16px; border:1px solid var(--kc-e5e9f1, #e5e9f1); border-radius: 12px;
  background:var(--kc-ffffff, #fff); color:var(--kc-34415a, #34415a); font: 14px/1.8 "Microsoft YaHei", system-ui, sans-serif;
  white-space: pre-wrap; overflow-wrap: anywhere; max-height: 300px; overflow: auto;
}
.resource-detail-outline-text.is-empty { color:var(--kc-8a93a5, #8a93a5); background:var(--kc-fafbfe, #fafbfe); }

/* 思维导图：详情页内嵌 + 全屏 */
.outline-map { overflow: auto; padding: 10px; border:1px solid var(--kc-e5e9f1, #e5e9f1); border-radius: 12px; background:var(--kc-fbfcff, #fbfcff); }
.outline-map svg { display: block; max-width: 100%; }
.outline-map img { display: block; max-width: 100%; height: auto; margin: 0 auto; }
.outline-fullscreen { display: none; }
.outline-fullscreen.show { display: flex; align-items: center; justify-content: center; }
.outline-fullscreen-panel { width: min(1200px, 96vw); height: min(90vh, 900px); background:var(--kc-ffffff, #fff); border-radius: 14px; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 24px 60px rgba(17, 25, 40, .25); }
.outline-fullscreen-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom:1px solid var(--kc-e5e9f1, #e5e9f1); }
.outline-fullscreen-body { flex: 1 1 auto; overflow: auto; padding: 16px; background:var(--kc-fbfcff, #fbfcff); }
.outline-fullscreen-body > img { display: block; max-width: 100%; height: auto; margin: 0 auto; }
.mistake-ocr-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.mistake-ocr-head b { font-size: 13px; color:var(--kc-34415a, #34415a); }
.mistake-ocr-head span { font-size: 11px; color:var(--kc-8a93a5, #8a93a5); }
#mistakeCreateOcrText { width: 100%; min-height: 140px; resize: vertical; font: 13px/1.6 ui-monospace, Consolas, monospace; }
.mistake-ocr-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.mistake-ocr-actions button { padding: 7px 10px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 8px; background:var(--kc-ffffff, #fff); color:var(--kc-4a5a78, #4a5a78); font-size: 12px; cursor: pointer; }
.mistake-ocr-actions button:hover { border-color:var(--kc-8fa8ff, #8fa8ff); color:var(--kc-4a6cf7, #4a6cf7); background:var(--kc-f1f5ff, #f1f5ff); }
.mistake-ocr-actions .btn-cancel { background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-6b7488, #6b7488); }
#mistakeCreateOcrMeta { color:var(--kc-8a93a5, #8a93a5); font-size: 11px; line-height: 1.5; }
#tagPickerModal .tag-sheet-section-title, #mistakeEditModal .tag-sheet-section-title, #mistakeAiPanel .tag-sheet-section-title { margin: 0; font-size: 13px; font-weight: 600; color:var(--kc-5b6478, #5b6478); }

/* ---------- 底部按钮：看得清、点得准 ---------- */
#tagPickerModal .modal-actions button, #mistakeEditModal .modal-actions button, #mistakeAiActions .modal-actions button {
  padding: 10px 18px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 500;
  transition: background 0.15s ease, filter 0.15s ease;
}
#tagPickerModal .btn-cancel, #mistakeEditModal .btn-cancel, #mistakeAiActions .btn-cancel { background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-4a5268, #4a5268); }
#tagPickerModal .btn-cancel:hover, #mistakeEditModal .btn-cancel:hover, #mistakeAiActions .btn-cancel:hover { background:var(--kc-e8eaf1, #e8eaf1); }
#tagPickerModal .btn-confirm, #mistakeEditModal .btn-confirm, #mistakeAiActions .btn-confirm { background:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
#tagPickerModal .btn-confirm:hover, #mistakeEditModal .btn-confirm:hover, #mistakeAiActions .btn-confirm:hover { filter: brightness(1.06); }
#tagPickerModal .btn-confirm:disabled, #mistakeEditModal .btn-confirm:disabled, #mistakeAiActions .btn-confirm:disabled { opacity: 0.6; cursor: wait; }

/* ---------- 窄屏：从底部升起的抽屉 ---------- */
@media (max-width: 640px) {
  #tagPickerModal, #mistakeEditModal { align-items: flex-end; }

  #tagPickerModal .tag-sheet, #mistakeEditModal .tag-sheet {
    margin: 0;                            /* 必须清掉 margin:auto，否则会盖过 align-items:flex-end */
    max-width: none;
    max-height: 92vh;
    max-height: 92dvh;
    border-radius: 18px 18px 0 0;
    transform: translateY(100%);
    transition: transform 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  #tagPickerModal.show .tag-sheet, #mistakeEditModal.show .tag-sheet { transform: translateY(0); }
  #tagPickerModal .tag-sheet-grip, #mistakeEditModal .tag-sheet-grip { display: block; }

  #tagPickerModal .tag-sheet-head, #mistakeEditModal .tag-sheet-head { padding: 6px 12px 12px 16px; }
  #tagPickerModal .tag-sheet-body, #mistakeEditModal .tag-sheet-body, #mistakeAiDialog .tag-sheet-body { padding: 14px 16px 12px; }
  #tagPickerModal .tag-sheet-foot, #mistakeEditModal .tag-sheet-foot, #mistakeAiDialog .tag-sheet-foot { padding: 12px 16px calc(14px + env(safe-area-inset-bottom, 0px)); }

  /* 手指点得准：整行 44px 高，勾选框和箭头一起放大 */
  #tagPickerModal .tag-row { min-height: 44px; }
  #tagPickerModal .tag-picker-tree .tag-check { min-width: 18px; height: 18px; }
  #tagPickerModal button.tag-toggle { width: 28px; height: 28px; }
  #tagPickerModal .tag-label { font-size: 15px; }

  /* 按钮并排铺满一行，角落里的按钮不再难点 */
  #tagPickerModal .modal-actions, #mistakeEditModal .modal-actions { gap: 12px; }
  #tagPickerModal .modal-actions button, #mistakeEditModal .modal-actions button, #mistakeAiActions .modal-actions button { flex: 1 1 0; padding: 12px 16px; }
}

/* 尊重系统的"减少动态效果"设置 */
@media (prefers-reduced-motion: reduce) {
  #tagPickerModal .tag-sheet,
  #mistakeEditModal .tag-sheet,
  .modal-mask,
  .modal { transition: none; }
}
.material-review-entry { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0; }
.material-review-entry button, .material-review-picker-foot button, .material-review-actions button, #materialReviewComplete button { padding: 11px 18px; border: 0; border-radius: 8px; background:var(--kc-4a6cf7, #4a6cf7); color:#fff; cursor: pointer; font: inherit; }
.material-review-entry button:disabled, .material-review-actions button:disabled, .material-review-picker-foot button:disabled { opacity: .5; cursor: not-allowed; }
.material-review-badge { display: inline-block; background:var(--kc-eef2ff, #eef2ff); color:var(--kc-4a5268, #4a5268); border-radius: 4px; font-size: 12px; padding: 3px 7px; margin: 4px 0; }
.material-review-picker { display: flex; flex-direction: column; width: 100%; max-width: 850px; height: 85vh; height: min(85dvh, 800px); padding: 0; overflow: hidden; }
body.material-review-open { overflow: hidden; }
.material-review-picker-head, .material-review-picker-foot { flex-shrink: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 16px 20px; }
.material-review-picker-head { border-bottom:1px solid var(--kc-eeeeee, #eee); }
.material-review-picker-head h3 { margin: 0; flex: 1; }
.material-review-picker-head button { border: 0; background: transparent; font-size: 22px; padding: 6px; cursor: pointer; }
.material-review-picker-foot { border-top:1px solid var(--kc-eeeeee, #eee); }
.material-review-picker-foot > span { margin-right: auto; }
.material-review-picker-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 16px 20px; }
#materialReviewPicker input[type="checkbox"] { width: 20px; height: 20px; flex: 0 0 20px; padding: 0; margin: 0; }
.material-review-all { display: flex; gap: 8px; align-items: center; margin: 10px 0; }
.material-review-option { display: flex; align-items: flex-start; gap: 12px; padding: 14px 0; border-bottom:1px solid var(--kc-eeeeee, #eee); cursor: pointer; }
.material-review-option > span { min-width: 0; overflow-wrap: anywhere; }
.material-review-option small { display: block; color:var(--kc-777777, #777); margin-top: 5px; }
.material-review-error { color:var(--kc-b42318, #b42318); white-space: pre-wrap; overflow-wrap: anywhere; }
.material-review-progress { font-size: 15px; margin-bottom: 14px; }
.material-review-content { white-space: pre-wrap; overflow-wrap: anywhere; margin: 14px 0; line-height: 1.7; }
.material-review-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 18px 0; }
#materialReviewTitle { overflow-wrap: anywhere; }
#materialReviewPreview img { max-width: 100%; }
@media (max-width: 600px) {
  #materialReviewPicker { padding: 8px; }
  .material-review-picker { height: 92vh; height: 92dvh; }
  .material-review-picker-head, .material-review-picker-body, .material-review-picker-foot { padding: 12px; }
  .material-review-picker-foot { padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
  .material-review-picker-foot > span { flex-basis: 100%; }
}
.reading-review-status { display: flex; align-items: center; gap: 10px; margin: 10px 0; }
.reading-review-status select { padding: 9px; border:1px solid var(--kc-cccccc, #ccc); border-radius: 6px; font: inherit; }
.reading-review-tags { margin: 10px 0; }
.reading-review-tags summary { cursor: pointer; padding: 8px 0; }
.reading-review-tag { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; overflow-wrap: anywhere; margin: 6px 10px 6px 0; font-size: 13px; }
.reading-browse-filters { margin: 14px 0; }
.reading-browse-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.reading-browse-controls > input { flex: 1 1 180px; min-width: 0; }
.reading-browse-controls > input, .reading-browse-controls select { padding: 9px; border:1px solid var(--kc-cccccc, #ccc); border-radius: 6px; font: inherit; }
.reading-browse-controls label { display: inline-flex; align-items: center; gap: 6px; }
.reading-browse-filters input[type="checkbox"] { width: 18px; height: 18px; }
.reading-browse-filters summary { cursor: pointer; padding: 10px 0; }
.reading-favorite { background: transparent; border:1px solid var(--kc-dddddd, #ddd); border-radius: 6px; font-size: 22px; line-height: 1; min-width: 38px; min-height: 38px; cursor: pointer; color:var(--kc-666666, #666); }
.reading-favorite.is-favorite { color:var(--kc-b77900, #b77900); background:var(--kc-fff8df, #fff8df); }
.reading-favorite:disabled { opacity: .5; cursor: wait; }
.reading-review-select-row { display: flex; align-items: center; gap: 8px; border-bottom:1px solid var(--kc-eeeeee, #eee); }
.reading-review-select-row .material-review-option { flex: 1; min-width: 0; border-bottom: 0; }
.reading-review-select-row .reading-favorite { flex-shrink: 0; }

/* ============================================================
   错题卡片内容排布（分类详情页 / 选择错题复习弹窗 共用）
   ------------------------------------------------------------
   一行一块，从上到下：
     名称 + 勾选框（勾选框统一在最右端）
     状态标签一行：是否复习 / 已收藏（有才显示）/ 知识框架里的标签
     文件形式 · 创建时间
     警告（⚠️缺少参考答案，暂不能勾选，请补齐内容。）
   改这里要一起看 js/mistakes.js 里 loadMistakes() 的模板。
   ============================================================ */
.mistake-title-row { display: flex; align-items: center; gap: 10px; }
.mistake-title-row .title { flex: 1 1 auto; min-width: 0; margin-bottom: 0; }
.mistake-title-row .mistake-select-check,
#mistakeReviewPicker .mistake-select-check,
#mistakeReviewPickerDetail .mistake-select-check { margin: 0; flex: 0 0 auto; }

/* 标签行：固定一行不换行；标签多的时候横向滑动，不丢内容也不撑高卡片 */
.mistake-line {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 6px;
  margin-top: 6px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.mistake-line::-webkit-scrollbar { display: none; }
.mistake-line > * { flex: 0 0 auto; white-space: nowrap; }
.mistake-line .mistake-state { margin: 0; }

/* 警告行：整行都能点，点了就去补齐内容 */
.mistake-inline-error.mistake-repair {
  display: block;
  width: 100%;
  margin: 8px 0 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.mistake-inline-error.mistake-repair:hover {
  text-decoration: underline;
  text-underline-offset: 3px;
}
/* ===== 编辑错题弹窗 =====
   每块一张卡片：图标 + 标题 + 一句说明 + 内容；卡片之间留白，
   右上角「已改」小标提示改过哪儿，编辑时才有方向感。 */
body.mistake-edit-open { overflow: hidden; }
#tagPickerModal { z-index: 120; }              /* 别的弹窗叠上来时，标签选择器在最上面 */

#mistakeEditModal .tag-sheet-body { padding: 16px 16px 6px; background:var(--kc-f6f7fb, #f6f7fb); }

.edit-card, .mistake-create-ai {
  background:var(--kc-ffffff, #fff);
  border:1px solid var(--kc-e6e9f2, #e6e9f2);
  border-radius: 14px;
  padding: 14px 16px;
  margin-bottom: 14px;                          /* ★ 板块之间必须留白 */
  box-shadow: 0 1px 2px rgba(21, 30, 60, 0.04);
}
.edit-card:last-child { margin-bottom: 8px; }
.edit-card-head { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 12px; }
.edit-card-icon { font-size: 17px; line-height: 1.25; }
.edit-card-titles { flex: 1 1 auto; min-width: 0; }
.edit-card-titles b { display: block; font-size: 15px; color:var(--kc-232a3d, #232a3d); }
.edit-card-titles small { display: block; margin-top: 3px; font-size: 12px; color:var(--kc-8a93a8, #8a93a8); line-height: 1.5; }
.edit-flag {
  display: none; flex: 0 0 auto; margin-top: 2px;
  padding: 2px 8px; border-radius: 999px;
  background:var(--kc-eef2ff, #eef2ff); color:var(--kc-4a6cf7, #4a6cf7); font-size: 11px;
}
.edit-card-body { display: grid; gap: 10px; }
.mistake-create-ai { min-width: 0; margin-bottom: 0; }
.mistake-create-ai summary { cursor: pointer; padding: 6px 0; font-size: 15px; color:var(--kc-232a3d, #232a3d); }
.mistake-create-ai fieldset { min-width: 0; border: 0; padding: 0; margin: 0; }
.mistake-create-ai label { font-size: 13px; color:var(--kc-667187, #667187); }
.mistake-create-ai p { overflow-wrap: anywhere; white-space: pre-wrap; }
.mistake-create-ai .modal-actions { flex-wrap: wrap; margin: 0; }
.mistake-create-ai button { min-height: 40px; max-width: 100%; white-space: normal; }
.mistake-create-ai [hidden], .mistake-create-ai p:empty { display: none; }
.edit-open-answer-fields { display: grid; gap: 10px; }
.edit-choice-config { display: grid; gap: 10px; margin-top: 4px; padding-top: 10px; border-top:1px dashed var(--kc-e5e9f1, #e5e9f1); }
.edit-choice-config > label, .edit-choice-fields label { display: flex; flex-direction: column; gap: 6px; font-size: 12px; color:var(--kc-667187, #667187); }
/* 题型那一条要和上传弹窗对齐：标签在上、下拉占满，确认框单独一行靠左 */
#mistakeEditModal .edit-choice-config > .mistake-format-confirm {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  width: fit-content;
  margin: 0;
  font-size: 13px;
  color:var(--kc-667187, #667187);
  cursor: pointer;
}
#mistakeEditModal .mistake-format-confirm input[type="checkbox"] {
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  margin: 0;
  padding: 0;
  accent-color:var(--kc-4a6cf7, #4a6cf7);
}
#mistakeEditModal .edit-format-hint {
  display: block;
  margin: 0;
  font-size: 12px;
  line-height: 1.6;
  color:var(--kc-8a93a5, #8a93a5);
}
.edit-choice-fields { display: grid; gap: 10px; }
.choice-option-editor { display: grid; gap: 8px; }
.choice-option-list { display: grid; gap: 8px; }
.choice-option-row { display: flex; align-items: center; gap: 8px; }
.choice-option-letter { flex: 0 0 auto; min-width: 24px; font-size: 13px; font-weight: 700; color:var(--kc-52627f, #52627f); }
#mistakeEditModal .choice-option-input,
#tagPickerModal .choice-option-input { flex: 1 1 auto; width: auto; min-width: 0; }
.choice-option-remove { flex: 0 0 auto; width: 28px; height: 28px; padding: 0; border:1px solid var(--kc-e1e5ee, #e1e5ee); border-radius: 7px; background:var(--kc-ffffff, #fff); color:var(--kc-8a93a5, #8a93a5); font-size: 16px; line-height: 1; cursor: pointer; }
.choice-option-remove:hover { border-color:var(--kc-e3a0a0, #e3a0a0); color:var(--kc-b34b4b, #b34b4b); background:var(--kc-fff6f6, #fff6f6); }
.choice-option-remove:disabled { opacity: .35; cursor: default; }
.choice-add-option { justify-self: flex-start; padding: 7px 11px; border:1px dashed var(--kc-b9c8ff, #b9c8ff); border-radius: 8px; background:var(--kc-f7f9ff, #f7f9ff); color:var(--kc-4a6cf7, #4a6cf7); font-size: 12px; cursor: pointer; }
.choice-add-option:hover { background:var(--kc-eef2ff, #eef2ff); }
.choice-add-option:disabled { opacity: .45; cursor: default; }
.choice-answer-field { display: grid; gap: 6px; }
.choice-answer-label { font-size: 12px; color:var(--kc-667187, #667187); }
.choice-answer-options { display: flex; flex-wrap: wrap; gap: 8px; min-height: 30px; }
#tagPickerModal .choice-answer-option,
#mistakeEditModal .choice-answer-option { display: inline-flex; flex-direction: row; align-items: center; justify-content: center; flex: 0 0 auto; box-sizing: border-box; width: max-content; min-width: max-content; gap: 6px; padding: 6px 10px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 8px; background:var(--kc-ffffff, #fff); color:var(--kc-34415a, #34415a); font-size: 13px; cursor: pointer; }
.choice-answer-option:has(input:checked) { border-color:var(--kc-8fa8ff, #8fa8ff); background:var(--kc-f1f5ff, #f1f5ff); }
.choice-answer-option input { flex: 0 0 auto; width: 15px; height: 15px; margin: 0; accent-color:var(--kc-4a6cf7, #4a6cf7); }
.edit-choice-fields textarea, .edit-choice-fields input { width: 100%; box-sizing: border-box; padding: 9px 10px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 7px; font: inherit; font-size: 13px; }
.edit-choice-fields textarea { min-height: 86px; resize: vertical; }
.edit-choice-fields small { color:var(--kc-8a93a5, #8a93a5); font-size: 11px; line-height: 1.5; }
.edit-card-row { display: flex; flex-wrap: wrap; gap: 10px; }
.edit-card-row input { flex: 2 1 190px; }
.edit-card-row select { flex: 1 1 110px; }

/* 输入框统一成一张「能点、能改」的样子 */
#mistakeEditModal input:not([type="file"]):not([type="checkbox"]):not([type="radio"]),
#mistakeEditModal select,
#mistakeEditModal textarea {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 11px 12px;
  border:1px solid var(--kc-dbe0ea, #dbe0ea);
  border-radius: 9px;
  background:var(--kc-fcfdff, #fcfdff);
  font: inherit;
  font-size: 14px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
#mistakeEditModal textarea { resize: vertical; }
#mistakeEditModal input:hover,
#mistakeEditModal select:hover,
#mistakeEditModal textarea:hover { border-color:var(--kc-c7d0e2, #c7d0e2); }
#mistakeEditModal input:focus,
#mistakeEditModal select:focus,
#mistakeEditModal textarea:focus {
  outline: none; background:var(--kc-ffffff, #fff);
  border-color:var(--kc-4a6cf7, #4a6cf7); box-shadow:0 0 0 3px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 12%, transparent);
}

/* 删除 / 上传 两个并排键 */
.edit-file-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.mindmap-generation-actions { margin: 8px 2px 0; }
.mindmap-generation-note {
  margin: 7px 2px 9px; color:var(--kc-7a8497, #7a8497); font-size: 12px; line-height: 1.65;
}
.mindmap-generation-note.mindmap-ai-unavailable { color:var(--kc-8a5a22, #8a5a22); }
.mindmap-generation-actions .edit-btn:disabled {
  cursor: not-allowed; opacity: .52; background:var(--kc-f4f6fa, #f4f6fa); color:var(--kc-7f8898, #7f8898);
}
.edit-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 14px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius: 9px;
  background:var(--kc-ffffff, #fff); color:var(--kc-3d465c, #3d465c); font: inherit; font-size: 13px;
  cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease;
}
.edit-btn:hover { background:var(--kc-f3f5fb, #f3f5fb); border-color:var(--kc-c7d0e2, #c7d0e2); }
.edit-btn-danger { color:var(--kc-c0392b, #c0392b); border-color:var(--kc-f2d5d0, #f2d5d0); background:var(--kc-fff7f6, #fff7f6); }
.edit-btn-danger:hover { background:var(--kc-ffeae7, #ffeae7); border-color:var(--kc-e9b7b0, #e9b7b0); }
.edit-btn-icon { font-size: 13px; line-height: 1; }
.edit-file-preview { display: flex; }

/* 照片只占一小块，不用为了一张图一直往下翻；点一下看原图 */
#mistakeEditModal .mistake-edit-thumb {
  display: block;
  max-width: 100%;
  max-height: 150px;
  border:1px solid var(--kc-e6e9f0, #e6e9f0);
  border-radius: 10px;
}
.mistake-detail-image-capped { max-height: 320px; width: auto; max-width: 100%; border-radius: 8px; }

/* 标签：上面是已选 chips，下面是就地勾选的树 */
#mistakeEditModal .mistake-tags { margin: 0; min-height: 24px; }
.edit-tag-tree {
  min-height: 180px;
  max-height: 46vh;
  overflow-y: auto;
  overscroll-behavior: contain;
  border:1px solid var(--kc-e6e9f2, #e6e9f2);
  border-radius: 10px;
  padding: 6px;
  background:var(--kc-fbfcfe, #fbfcfe);
}
.edit-tag-root-toggle {
  display: flex; align-items: center; gap: 8px; width: 100%; min-height: 36px;
  padding: 7px 10px; border: 0; border-radius: 8px; background:var(--kc-eef1f5, #eef1f5);
  color:var(--kc-657085, #657085); font: inherit; font-size: 13px; text-align: left; cursor: pointer;
}
.edit-tag-root-toggle:hover { background:var(--kc-e7ebf1, #e7ebf1); }
.edit-tag-root-toggle small { margin-left: auto; color:var(--kc-8a93a3, #8a93a3); font-size: 11px; font-weight: 400; }
.edit-tag-root-arrow { width: 16px; flex: 0 0 16px; color:var(--kc-7e8797, #7e8797); font-size: 12px; text-align: center; }
.edit-tag-root-children { margin-top: 6px; }
.edit-tag-node { padding: 0; }
.edit-tag-row { display: flex; align-items: center; gap: 8px; min-height: 36px; padding: 2px 6px; border-radius: 8px; transition: background 0.15s ease; }
.edit-tag-row:hover { background:var(--kc-eef2ff, #eef2ff); }
.edit-tag-row.is-checked { background:var(--kc-eef2ff, #eef2ff); }
.edit-tag-toggle {
  width: 22px; height: 22px; flex: 0 0 auto;
  padding: 0; border: none; border-radius: 6px; background: none;
  color:var(--kc-888888, #888); font-size: 11px; line-height: 1; cursor: pointer;
}
.edit-tag-toggle:hover { background:var(--kc-e3e8f7, #e3e8f7); }
.edit-tag-toggle-empty { display: inline-block; cursor: default; }
/* 同时覆盖 .modal input 的满宽样式，复选框不能挤占名称空间。 */
#mistakeEditModal input.edit-tag-check { width: 17px; height: 17px; flex: 0 0 auto; padding: 0; margin: 0; box-sizing: border-box; }
.edit-tag-search { min-width: 0; }
.edit-tag-name { flex: 1 1 auto; min-width: 0; font-size: 14px; cursor: pointer; overflow-wrap: anywhere; }
.edit-tag-name.tag-folder { color:var(--kc-a06a00, #a06a00); }
.edit-tag-name.tag-knowledge { color:var(--kc-2f7d32, #2f7d32); }
.edit-tag-name.tag-unknown { color:var(--kc-777777, #777); }
.edit-tag-children { margin-left: 18px; border-left:2px dashed var(--kc-eceff6, #eceff6); padding-left: 8px; }
.edit-tag-empty { padding: 14px 10px; font-size: 13px; color:var(--kc-9aa4c0, #9aa4c0); text-align: center; }

/* 名称：可改的名字 + 固定的后缀（后缀跟着附件，改不到） */
.edit-name-field { display: flex; align-items: center; gap: 8px; flex: 2 1 190px; min-width: 0; }
.edit-name-field input { flex: 1 1 auto; min-width: 0; }
.edit-name-field .name-ext { flex: 0 0 auto; padding: 11px 10px; font-size: 13px; }

/* 标签工具条：已选计数 */
.edit-tag-tools { display: flex; align-items: center; gap: 8px; }
.edit-tag-count { flex: 1 1 auto; font-size: 12px; color:var(--kc-8a93a8, #8a93a8); }
.edit-mini-btn {
  padding: 5px 10px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius: 999px;
  background:var(--kc-ffffff, #fff); color:var(--kc-5b6478, #5b6478); font: inherit; font-size: 12px; cursor: pointer;
}
.edit-mini-btn:hover { background:var(--kc-f3f5fb, #f3f5fb); border-color:var(--kc-c7d0e2, #c7d0e2); }

.edit-foot-note { font-size: 12px; color:var(--kc-9aa4c0, #9aa4c0); margin-bottom: 8px; }
#mistakeEditError { max-height: 64px; overflow-y: auto; overflow-wrap: anywhere; }

/* 考前复习计划沿用内容卡片、筛选条与 tag-sheet 弹窗。 */
.review-section-heading { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 8px 0 14px; font-size: 18px; }
.review-section-heading h2 { font-size: 18px; }
.review-recent { margin-top: 26px; border-top:1px solid var(--kc-e4e7ef, #e4e7ef); padding-top: 16px; }
.review-plan-controls { display: flex; align-items: center; justify-content: center; gap: 20px; margin: 14px 0; }
.review-plan-controls button, .review-section-heading button, .review-record button, .review-session-bar button { border:1px solid var(--kc-dce1ec, #dce1ec); border-radius: 8px; background:var(--kc-ffffff, #fff); color:var(--kc-415479, #415479); padding: 8px 12px; cursor: pointer; }
.review-record { overflow-wrap: anywhere; }
.review-rename-dialog { width:min(400px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); margin:auto; padding:22px; border:1px solid var(--kc-e1e6ef, #e1e6ef); border-radius:14px; color:var(--kc-232a3d, #232a3d); background:var(--kc-ffffff, #fff); overflow:auto; }
.review-rename-dialog::backdrop { background:rgba(17,25,40,.45); }
.review-rename-dialog h2 { font-size:18px; margin-bottom:10px; }
.review-rename-dialog p { font-size:13px; line-height:1.6; color:var(--kc-7a8497, #7a8497); margin-bottom:14px; }
.review-rename-dialog label { display:block; font-size:13px; margin-bottom:6px; }
.review-rename-dialog input { width:100%; padding:10px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; font:inherit; }
.review-rename-dialog input:focus-visible { outline:2px solid var(--kc-b9c8ff, #b9c8ff); outline-offset:2px; }
.review-rename-dialog #reviewRenameError { color:var(--kc-b63c3c, #b63c3c); margin-top:8px; }
.review-rename-dialog #reviewRenameSave { background:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
.review-rename-dialog button:disabled { opacity:.5; cursor:wait; }

/* Upload/edit review method choice and automatic-read advice. */
.review-mode-select-row { display:flex; align-items:flex-end; gap:8px; }
.review-mode-select-row label { flex:1 1 auto; display:grid; gap:6px; min-width:0; font-size:13px; color:var(--kc-5b6478, #5b6478); }
.review-mode-select-row .review-mode-setup { flex:0 0 auto; min-height:42px; }
.review-method-card select { width:100%; padding:10px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; background:var(--kc-fcfdff, #fcfdff); font:inherit; color:var(--kc-232a3d, #232a3d); }
.review-method-status { margin:0; padding:9px 11px; border:1px solid var(--kc-dbe7ff, #dbe7ff); border-radius:9px; background:var(--kc-f5f8ff, #f5f8ff); color:var(--kc-36527f, #36527f); font-size:13px; line-height:1.6; }
.review-method-status.is-default { border-color:var(--kc-f0d9a5, #f0d9a5); background:var(--kc-fffaf0, #fffaf0); color:var(--kc-76571b, #76571b); }
.review-api-note { margin:0; padding:8px 10px; border:1px solid var(--kc-ead8c4, #ead8c4); border-radius:8px; background:var(--kc-fff8ef, #fff8ef); color:var(--kc-785c39, #785c39); font-size:12px; line-height:1.55; }
.review-mode-setup { border:1px solid var(--kc-4a6cf7, #4a6cf7); background:var(--kc-eef2ff, #eef2ff); color:var(--kc-2948c8, #2948c8); font-weight:600; }
.review-mode-setup[hidden] { display:none; }
.creation-mode-advice-dialog { width:min(620px,calc(100vw - 32px)); max-height:min(760px,calc(100dvh - 32px)); margin:auto; padding:0; border:1px solid var(--kc-e1e6ef, #e1e6ef); border-radius:16px; background:var(--kc-ffffff, #fff); color:var(--kc-232a3d, #232a3d); box-shadow:0 24px 70px rgba(17,25,40,.28); overflow:hidden; }
.creation-mode-advice-dialog::backdrop { background:rgba(17,25,40,.48); }
.creation-mode-advice-dialog .tag-sheet-body { max-height:min(540px,calc(100dvh - 190px)); overflow:auto; padding:18px 22px; }
.creation-mode-advice-body > p { margin:0 0 12px; line-height:1.7; }
.creation-mode-advice-body progress { display:block; width:100%; margin:8px 0 16px; accent-color:var(--kc-4a6cf7, #4a6cf7); }
.creation-mode-advice-body progress[hidden] { display:none; }
.creation-mode-advice-context { display:grid; gap:12px; margin:0 0 16px; }
.creation-mode-advice-context label { display:grid; gap:6px; color:var(--kc-4f5a70, #4f5a70); font-size:13px; }
.creation-mode-advice-context select, .creation-mode-advice-context textarea { width:100%; box-sizing:border-box; padding:10px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; background:var(--kc-fcfdff, #fcfdff); color:var(--kc-232a3d, #232a3d); font:inherit; }
.creation-mode-advice-context textarea { resize:vertical; }
.creation-mode-advice-result { padding:14px 16px; border:1px solid var(--kc-dbe7ff, #dbe7ff); border-radius:12px; background:var(--kc-f7f9ff, #f7f9ff); }
.creation-mode-advice-result h3 { margin:0 0 8px; font-size:16px; }
.creation-mode-advice-result p { margin:7px 0; line-height:1.7; overflow-wrap:anywhere; }
.review-recall-actions { display:flex; flex-wrap:wrap; gap:8px; }
.review-recall-actions button { min-width:92px; }
.review-recall-again { padding:13px 15px; border:1px solid var(--kc-f0d9a5, #f0d9a5); border-radius:11px; background:var(--kc-fffaf0, #fffaf0); color:var(--kc-604a1b, #604a1b); }
.review-recall-again strong { display:block; margin-bottom:5px; }
.review-recall-again p { margin:0 0 10px; line-height:1.6; }
.review-current-mode { margin:4px 0 10px; color:var(--kc-5d6880, #5d6880); font-size:13px; }
.review-mode-requirement { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:8px 0 10px; padding:11px 12px; border:1px solid var(--kc-ead8c4, #ead8c4); border-radius:10px; background:var(--kc-fff8ef, #fff8ef); color:var(--kc-71512e, #71512e); }
.review-mode-requirement p { flex:1 1 320px; margin:0; line-height:1.55; }

@media (max-width:640px) {
  .creation-mode-advice-dialog { width:100%; max-width:none; max-height:calc(100dvh - 12px); margin:auto 6px 6px; border-radius:16px; }
  .creation-mode-advice-dialog .tag-sheet-body { max-height:calc(100dvh - 190px); padding:14px 16px; }
  .review-recall-actions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .review-recall-actions button { min-width:0; }
  .review-mode-select-row { align-items:stretch; flex-direction:column; }
  .review-mode-select-row .review-mode-setup { width:100%; }
}
.review-record h3 { font-size: 16px; margin-bottom: 10px; }
.review-record p { margin: 8px 0; }
.review-record progress { width: 100%; accent-color:var(--kc-4a6cf7, #4a6cf7); }
/* 处理进度：蓝色=完成，灰色=跳过；全部跳过的记录不会显示成满格“已完成” */
.review-progress-split { display: flex; width: 100%; height: 10px; margin: 10px 0; overflow: hidden; border-radius: 999px; background:var(--kc-e9edf5, #e9edf5); }
.review-progress-split > span { display: block; height: 100%; }
.review-progress-split .is-done { background:var(--kc-4a6cf7, #4a6cf7); }
.review-progress-split .is-failed { background:var(--kc-e9a23b, #e9a23b); }
.review-progress-split .is-skipped { background:var(--kc-c3cbd9, #c3cbd9); }
#pane-reviewPlans .review-recent-progress .review-progress-split { flex: 0 0 auto; width: 110px; height: 6px; margin: 0; }
.review-session-bar { padding: 14px; background:var(--kc-f3f6ff, #f3f6ff); border:1px solid var(--kc-dce4fa, #dce4fa); border-radius: 10px; margin-bottom: 14px; overflow-wrap: anywhere; }
.review-session-bar p { margin: 8px 0; color:var(--kc-6b7893, #6b7893); }
.review-record button:disabled, .review-session-bar button:disabled { opacity: .5; cursor: default; }
.course-header-actions { flex-wrap: wrap; justify-content: flex-end; }
/* 课程「复习」首页：独立面板与紧凑记录，不影响计划详情、历史页或其它模块。 */
#pane-reviewPlans { margin: -12px; padding: 24px; background:var(--kc-f7f8fa, #f7f8fa); min-height: calc(100vh - 120px); }
#pane-reviewPlans .review-center-panels { display: grid; gap: 24px; max-width: 1120px; margin: 0 auto; }
#pane-reviewPlans .review-center-panel { min-width: 0; padding: 24px; border:1px solid var(--kc-e4e7ed, #e4e7ed); border-radius: 14px; background:var(--kc-ffffff, #fff); }
#pane-reviewPlans .review-panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
#pane-reviewPlans .review-panel-title { display: flex; align-items: flex-start; gap: 9px; min-width: 0; }
#pane-reviewPlans .review-panel-title > svg { width: 21px; height: 21px; flex-shrink: 0; margin-top: 2px; fill: none; stroke:var(--kc-7c89a0, #7c89a0); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
#pane-reviewPlans .review-panel-title h2 { margin: 0; font-size: 18px; line-height: 1.4; font-weight: 600; color:var(--kc-34415a, #34415a); }
#pane-reviewPlans .review-panel-title p { margin: 5px 0 0; color:var(--kc-8b94a5, #8b94a5); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
#pane-reviewPlans button { cursor: pointer; }
#pane-reviewPlans button:disabled { cursor: default; opacity: .45; }
#pane-reviewPlans .review-panel-action { flex-shrink: 0; border:1px solid var(--kc-dce2ed, #dce2ed); border-radius: 7px; padding: 7px 11px; background:var(--kc-ffffff, #fff); color:var(--kc-526785, #526785); font-size: 13px; line-height: 1.5; white-space: nowrap; }
#pane-reviewPlans .review-panel-action:hover { background:var(--kc-f7f9fc, #f7f9fc); }
#pane-reviewPlans .plan-card { padding: 18px 20px; margin: 0; border:1px solid var(--kc-e6ebf3, #e6ebf3); border-radius: 10px; background:var(--kc-f4f6fa, #f4f6fa); overflow-wrap: anywhere; }
#pane-reviewPlans .review-plan-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
#pane-reviewPlans .review-plan-card-top h2 { flex: 1; min-width: 0; margin: 2px 0 0; font-size: 17px; line-height: 1.5; }
#pane-reviewPlans .review-plan-controls { flex-shrink: 0; display: flex; align-items: center; justify-content: flex-end; gap: 7px; margin: 0; color:var(--kc-8993a5, #8993a5); font-size: 12px; line-height: 28px; white-space: nowrap; }
#pane-reviewPlans .review-plan-controls button { width: 28px; height: 28px; padding: 0; border:1px solid var(--kc-dfe5ef, #dfe5ef); border-radius: 6px; background:var(--kc-ffffff, #fff); color:var(--kc-71809a, #71809a); font-size: 14px; }
#pane-reviewPlans .plan-card > p { margin: 9px 0 0; font-size: 13px; color:var(--kc-69768d, #69768d); line-height: 1.7; }
#pane-reviewPlans .plan-card .material-review-badge { margin: 0; font-size: 12px; }
#pane-reviewPlans .plan-progress { margin-top: 12px; }
#pane-reviewPlans .plan-success-count strong,
.plan-success-count strong { color:var(--kc-34415a, #34415a); font-weight: 650; }
#pane-reviewPlans .plan-progress progress { height: 10px; accent-color:var(--kc-4a6cf7, #4a6cf7); }
#pane-reviewPlans .plan-progress .plan-progress-label { color:var(--kc-6b7690, #6b7690); font-size: 12px; }
#pane-reviewPlans .plan-progress .plan-progress-value { color:var(--kc-2f3b52, #2f3b52); font-size: 15px; font-weight: 700; }
#pane-reviewPlans .plan-card .mistake-toolbar { margin: 12px 0 0; gap: 8px; }
#pane-reviewPlans .plan-card .mistake-toolbar button, #pane-reviewPlans .review-recent-actions button { padding: 6px 10px; border:1px solid var(--kc-dce2ed, #dce2ed); border-radius: 6px; background:var(--kc-ffffff, #fff); color:var(--kc-526785, #526785); font-size: 12px; line-height: 1.5; white-space: nowrap; }
#pane-reviewPlans .review-recent-record { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 15px 0; border-bottom:1px solid var(--kc-edf0f5, #edf0f5); }
#pane-reviewPlans .review-recent-record:first-child { padding-top: 0; }
#pane-reviewPlans .review-recent-record:last-child { padding-bottom: 0; border-bottom: 0; }
#pane-reviewPlans .review-recent-main { flex: 1; min-width: 0; }
#pane-reviewPlans .review-recent-title { display: flex; align-items: center; flex-wrap: wrap; gap: 5px 10px; margin-bottom: 5px; }
#pane-reviewPlans .review-recent-title h3 { min-width: 0; margin: 0; color:var(--kc-42516c, #42516c); font-size: 14px; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
#pane-reviewPlans .review-recent-state { color:var(--kc-7e8ca4, #7e8ca4); background:var(--kc-f1f4f8, #f1f4f8); border-radius: 4px; padding: 2px 6px; font-size: 11px; line-height: 1.5; white-space: nowrap; }
#pane-reviewPlans .review-recent-meta { display: flex; flex-wrap: wrap; gap: 2px 14px; margin: 3px 0; color:var(--kc-8993a5, #8993a5); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
#pane-reviewPlans .review-recent-progress { display: flex; align-items: center; flex-wrap: wrap; gap: 5px 10px; margin-top: 7px; color:var(--kc-8590a3, #8590a3); font-size: 12px; line-height: 1.5; }
#pane-reviewPlans .review-recent-progress progress { width: 110px; max-width: 100%; height: 6px; accent-color:var(--kc-8a9dbc, #8a9dbc); }
#pane-reviewPlans .review-recent-actions { display: flex; flex-shrink: 0; flex-wrap: wrap; gap: 7px; }
#pane-reviewPlans .review-center-empty { padding: 24px 12px; border:1px solid var(--kc-edf0f5, #edf0f5); border-radius: 9px; background:var(--kc-fafbfd, #fafbfd); text-align: center; }
#pane-reviewPlans .review-center-empty p { margin: 0 0 7px; color:var(--kc-738097, #738097); font-size: 14px; line-height: 1.6; }
#pane-reviewPlans .review-center-empty span { color:var(--kc-99a2b1, #99a2b1); font-size: 12px; line-height: 1.6; }
#pane-reviewPlans #reviewRecentList > .detail-card { padding: 14px 0 0; margin: 14px 0 0; border-top:1px solid var(--kc-edf0f5, #edf0f5); border-radius: 0; }
#pane-reviewPlans :focus-visible { outline:2px solid var(--kc-7c91bd, #7c91bd); outline-offset: 2px; }
@media(max-width:640px) {
  #pane-reviewPlans { padding: 16px 12px; }
  #pane-reviewPlans .review-center-panel { padding: 20px; }
  #pane-reviewPlans .review-panel-heading { gap: 10px; margin-bottom: 16px; }
  #pane-reviewPlans .review-panel-title { gap: 7px; }
  #pane-reviewPlans .review-panel-title h2 { font-size: 17px; }
  #pane-reviewPlans .review-panel-action { padding: 6px 8px; font-size: 12px; }
  #pane-reviewPlans .plan-card { padding: 14px; }
  #pane-reviewPlans .review-plan-card-top { flex-wrap: wrap; gap: 7px; }
  #pane-reviewPlans .review-plan-card-top h2 { flex: 1 1 140px; }
  #pane-reviewPlans .review-plan-controls { margin-left: auto; }
  #pane-reviewPlans .review-recent-record { flex-wrap: wrap; gap: 10px; }
  #pane-reviewPlans .review-recent-main { flex-basis: 100%; }
  #pane-reviewPlans .review-recent-actions { justify-content: flex-end; width: 100%; }
}
/* 两个复习内容选择弹窗共享布局，仅 .review-picker 生效，不影响其它页面。 */
.review-picker { overflow: hidden; }
.review-picker.modal-mask { background: rgba(17, 25, 40, .42); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.review-picker .total-review-dialog {
  width: 960px; max-width: 100%; height: min(780px, 90vh); height: min(780px, 90dvh);
  max-height: 90vh; max-height: 90dvh; padding: 0; overflow: hidden;
  opacity: 0; transform: translateY(14px);
  box-shadow: 0 24px 70px rgba(15, 23, 42, .22);
  transition: opacity .2s ease, transform .32s cubic-bezier(.22, 1, .36, 1), box-shadow .32s ease;
}
.review-picker.show .total-review-dialog { opacity: 1; transform: translateY(0); }
.review-picker [hidden] { display: none !important; }
.review-picker .total-review-selector, .review-picker .total-review-preview { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.review-picker .total-review-head { display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; gap: 12px; padding: 18px 24px 14px; }
.review-picker .total-review-head h3 { margin: 0; font-size: 20px; line-height: 1.4; overflow-wrap: anywhere; }
.review-picker button { cursor: pointer; }
.review-picker button:disabled { opacity: .45; cursor: default; }
.review-picker .total-review-close { flex-shrink: 0; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 6px; background: transparent; color:var(--kc-7a8394, #7a8394); font-size: 25px; line-height: 1; }
.review-picker .total-review-close:hover { background:var(--kc-f0f2f6, #f0f2f6); }
.review-picker .total-review-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 4px; margin: 0 24px 16px; border-radius: 9px; background:var(--kc-f0f2f6, #f0f2f6); flex-shrink: 0; }
.review-picker .total-review-tabs button { border: 0; padding: 9px 8px; border-radius: 6px; background: transparent; color:var(--kc-70798b, #70798b); font-size: 15px; }
.review-picker .total-review-tabs [aria-selected=true] { background:var(--kc-ffffff, #fff); color:var(--kc-354b76, #354b76); font-weight: 600; box-shadow:0 1px 3px #2434540d; }
.review-picker .total-review-tabs button { transition: color .18s ease; }
#reviewPlanModules { position: relative; isolation: isolate; }
#reviewPlanModules::before {
  content: ''; position: absolute; top: 4px; bottom: 4px; left: 4px;
  width: calc((100% - 16px) / 3); border-radius: 6px; background:var(--kc-ffffff, #fff);
  box-shadow: 0 1px 3px rgba(36, 52, 84, .08), 0 1px 1px rgba(36, 52, 84, .04);
  transform: translateX(calc(var(--tab-index, 0) * (100% + 4px)));
  transition: transform .3s cubic-bezier(.22, 1, .36, 1);
}
#reviewPlanModules button { position: relative; z-index: 1; }
#reviewPlanModules [aria-selected=true] { background: transparent; box-shadow: none; }
.review-picker .total-review-panel { display: flex; flex-direction: column; flex: 1; min-height: 0; min-width: 0; padding: 0 24px; }
.review-picker .total-review-search { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; flex-shrink: 0; margin-bottom: 10px; }
.review-picker .total-review-search > input { flex: 1 1 180px; width: 0; min-width: 0; height: 36px; margin: 0; padding: 7px 10px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 6px; font-size: 13px; }
.review-picker label { display: inline-flex; align-items: center; gap: 7px; color:var(--kc-667187, #667187); font-size: 13px; }
.review-picker .total-review-search label { white-space: nowrap; }
.review-picker input[type=checkbox] { flex-shrink: 0; width: 14px; height: 14px; margin: 0; padding: 0; border-radius: 3px; accent-color:var(--kc-4a6cf7, #4a6cf7); cursor: pointer; }
.review-picker .total-review-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; flex-shrink: 0; padding-bottom: 12px; }
.review-picker .total-review-filters select, .review-picker .total-review-filters button { width: auto; max-width: 100%; height: 32px; margin: 0; padding: 0 9px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 6px; background:var(--kc-ffffff, #fff); color:var(--kc-667187, #667187); font-size: 12px; }
.review-picker .total-review-filters button { display: inline-flex; align-items: center; gap: 5px; }
.review-picker .total-review-filters svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.review-picker .total-review-filters [aria-expanded=true] { background:var(--kc-f3f6ff, #f3f6ff); border-color:var(--kc-b7c5ec, #b7c5ec); }
.review-picker .total-review-tags { flex: 0 1 auto; min-height: 0; max-height: 100px; overflow-y: auto; padding: 8px; margin: 0 0 10px; border:1px solid var(--kc-e5e9f1, #e5e9f1); border-radius: 6px; background:var(--kc-fafbfe, #fafbfe); font-size: 12px; }
.review-picker .total-review-tags label { font-size: 12px; }
.review-picker .total-review-list-region { display: flex; flex-direction: column; min-height: 0; flex: 1; border-top:1px solid var(--kc-e8ebf1, #e8ebf1); }
.review-picker .total-review-list-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 0 9px; flex-shrink: 0; }
.review-picker .total-review-list-head h4 { margin: 0; font-size: 14px; font-weight: 600; color:var(--kc-49566f, #49566f); }
.review-picker .total-review-text { border: 0; background: transparent; padding: 3px 0; color:var(--kc-7a8498, #7a8498); font-size: 12px; white-space: nowrap; }
.review-picker .total-review-text:hover { color:var(--kc-4a6cf7, #4a6cf7); }
.review-picker .total-review-select-all { align-self: flex-start; flex-shrink: 0; padding-bottom: 10px; }
.review-picker .total-review-list { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; padding-bottom: 12px; }
.review-picker .total-review-card { display: grid; grid-template-columns: 14px minmax(0, 1fr) auto; align-items: start; gap: 5px 10px; padding: 12px; margin-bottom: 8px; border-radius: 8px; background:var(--kc-f6f7fa, #f6f7fa); }
.review-picker .total-review-card > input { margin-top: 3px; }
.review-picker .total-review-item-title { text-align: left; min-width: 0; border: 0; background: transparent; padding: 0; color:var(--kc-34415a, #34415a); font-size: 15px; font-weight: 500; line-height: 1.5; overflow-wrap: anywhere; }
.review-picker .total-review-item-title:hover { color:var(--kc-4a6cf7, #4a6cf7); }
.review-picker .total-review-item-meta { grid-column: 2 / -1; font-size: 12px; line-height: 1.5; color:var(--kc-8a93a5, #8a93a5); overflow-wrap: anywhere; }
.review-picker .total-review-item-preview { display: inline-flex; align-items: center; gap: 4px; padding: 2px 0 2px 6px; border: 0; background: transparent; color:var(--kc-7c879c, #7c879c); font-size: 12px; line-height: 1.5; white-space: nowrap; }
.review-picker .total-review-item-preview svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.review-picker .total-review-footer { flex-shrink: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; border-top:1px solid var(--kc-e8ebf1, #e8ebf1); padding: 14px 24px; }
/* 弹窗结构：标题固定、底部操作固定，中间内容整体滚动（列表不再单独滚动）。 */
#reviewPlanModal .total-review-selector { display: flex; flex-direction: column; height: 100%; min-height: 0; overflow: hidden; }
#reviewPlanModal .total-review-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-bottom: 14px;
  scrollbar-width: thin;
  scrollbar-color: #cbd3e1 transparent;
}
#reviewPlanModal .total-review-body::-webkit-scrollbar { width: 8px; }
#reviewPlanModal .total-review-body::-webkit-scrollbar-track { background: transparent; }
#reviewPlanModal .total-review-body::-webkit-scrollbar-thumb { border:2px solid var(--kc-ffffff, #fff); border-radius: 999px; background:var(--kc-cbd3e1, #cbd3e1); }
#reviewPlanModal .total-review-body::-webkit-scrollbar-thumb:hover { background:var(--kc-aeb9cc, #aeb9cc); }
#reviewPlanModal .total-review-panel { flex: 0 0 auto; }
#reviewPlanModal .total-review-list-region { flex: 0 0 auto; min-height: 0; }
#reviewPlanModal .total-review-list { flex: 0 0 auto; overflow: visible; padding-bottom: 12px; }
#reviewPlanModal .total-review-footer {
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "summary actions" "hint actions" "error error";
  align-items: center;
  gap: 2px 18px;
  flex-shrink: 0;
  background:var(--kc-ffffff, #fff);
  border-top:1px solid var(--kc-e8ebf1, #e8ebf1);
  padding: 10px 24px 11px;
  box-shadow: 0 -10px 24px rgba(15, 23, 42, .055);
}
#reviewPlanModal .total-review-summary { grid-area: summary; flex-direction: row; align-items: baseline; flex-wrap: wrap; gap: 2px 10px; min-width: 0; margin: 0; }
#reviewPlanModal .total-review-summary strong { font-size: 15px; color:var(--kc-2f3b52, #2f3b52); }
#reviewPlanModal .total-review-summary small { font-size: 12px; color:var(--kc-8a93a5, #8a93a5); }
#reviewPlanModal .total-review-footer .modal-actions { grid-area: actions; align-self: center; }
#reviewPlanModal #reviewPlanPreview { grid-area: hint; margin: 0; font-size: 12px; line-height: 1.5; color:var(--kc-8a93a5, #8a93a5); }
#reviewPlanModal #reviewPlanCreateError { grid-area: error; }
#reviewPlanModal #reviewPlanCreateError:empty { display: none; }

/* 大厂式微交互：卡片、复选框与按钮的过渡都收在同一节奏里，避免弹窗里出现生硬跳变。 */
.review-picker .total-review-card {
  transition: background-color .18s ease, box-shadow .18s ease;
}
.review-picker .total-review-card:hover { background:var(--kc-f1f4fa, #f1f4fa); }
.review-picker .total-review-card:has(input:checked) {
  background:var(--kc-eef3ff, #eef3ff);
  box-shadow:inset 0 0 0 1px var(--kc-c7d4ff, #c7d4ff);
}
.review-picker .modal-actions button, .review-picker .total-review-preview-foot button {
  transition: background-color .18s ease, color .18s ease, box-shadow .18s ease, transform .12s ease;
}
.review-picker .btn-confirm:not(:disabled) { box-shadow:0 6px 16px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 22%, transparent); }
.review-picker .btn-confirm:not(:disabled):hover { transform: translateY(-1px); box-shadow:0 9px 22px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 28%, transparent); }
.review-picker .btn-confirm:not(:disabled):active { transform: translateY(0) scale(.97); box-shadow:0 3px 10px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 20%, transparent); }
.review-picker .btn-cancel:hover { background:var(--kc-e9ecf3, #e9ecf3); }
.review-picker .btn-cancel:active { transform: scale(.97); }
#reviewPlanPanel.tab-enter { animation: reviewPlanTabIn .24s cubic-bezier(.22, 1, .36, 1); }
@keyframes reviewPlanTabIn {
  from { opacity: 0; transform: translateY(7px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .review-picker .total-review-dialog,
  .review-picker.show .total-review-dialog { transition: none; opacity: 1; transform: none; }
  #reviewPlanModules::before,
  .review-picker .total-review-card,
  .review-picker .modal-actions button { transition: none; }
  #reviewPlanPanel.tab-enter { animation: none; }
}
.review-picker .total-review-summary { display: flex; flex-direction: column; gap: 4px; margin-right: auto; }
.review-picker .total-review-summary strong { font-size: 14px; font-weight: 600; color:var(--kc-41516f, #41516f); }
.review-picker .total-review-summary small { font-size: 12px; color:var(--kc-8a93a5, #8a93a5); }
.review-picker .modal-actions { gap: 8px; }
.review-picker .modal-actions button, .review-picker .total-review-preview-foot button { padding: 8px 14px; border: 0; border-radius: 6px; font-size: 13px; }
.review-picker .btn-cancel { background:var(--kc-f0f2f6, #f0f2f6); color:var(--kc-59657b, #59657b); }
.review-picker .btn-confirm { background:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
.review-picker .btn-confirm:not(:disabled):hover { background:var(--kc-3c5de4, #3c5de4); }
.review-picker :is(#totalReviewError, .review-picker-error) { flex-basis: 100%; max-height: 55px; overflow: auto; margin: 0; font-size: 12px; }
.review-picker :is(#totalReviewError, .review-picker-error):empty { display: none; }
.review-picker .total-review-preview-body { flex: 1; min-height: 0; padding: 4px 24px 20px; overflow-y: auto; overflow-wrap: anywhere; }
.review-picker .total-review-preview-body h4 { margin: 16px 0 8px; font-size: 14px; }
.review-picker .total-review-preview-body .detail-content { white-space: pre-wrap; }
.review-picker .total-review-preview-body .resource-pdf { display: block; width: 100%; height: 45vh; border:1px solid var(--kc-e5e9f1, #e5e9f1); }
.review-picker .total-review-preview-body img { max-width: 100%; height: auto; }
.review-picker .total-review-preview-foot { flex-shrink: 0; display: flex; justify-content: flex-end; padding: 12px 24px; border-top:1px solid var(--kc-e8ebf1, #e8ebf1); }
.review-picker :focus-visible { outline:2px solid var(--kc-4a6cf7, #4a6cf7); outline-offset: 2px; }
@media(max-width:540px) {
  .review-picker { padding: 10px; }
  .review-picker .total-review-head { padding: 14px 14px 12px; }
  .review-picker .total-review-head h3 { font-size: 18px; }
  .review-picker .total-review-tabs { margin: 0 14px 12px; }
  .review-picker .total-review-panel { padding: 0 14px; }
  .review-picker .total-review-search { gap: 8px; }
  .review-picker .total-review-search > input { flex-basis: 170px; }
  .review-picker .total-review-footer { gap: 10px 12px; padding: 12px 14px; }
  .review-picker .total-review-summary { flex: 1 1 180px; }
  .review-picker .total-review-clear { margin-left: auto; }
  .review-picker .modal-actions { margin-left: auto; }
  .review-picker .total-review-preview-body { padding: 0 14px 14px; }
}
/* 计划表单增量：使用真实网格排列，不继承旧 tag-sheet/plan-fields 的输入样式。 */
#reviewPlanModal .total-review-dialog { max-width: calc(100vw - 32px); height: min(900px, 90vh); height: min(900px, 90dvh); }
/* 信息区压成一行（名称 + 两个日期），把纵向空间让给下面的内容列表 */
#reviewPlanModal .review-plan-info { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(2, minmax(0, 1fr)); gap: 8px 12px; flex-shrink: 0; min-width: 0; border: 0; padding: 0 24px 10px; }
#reviewPlanModal .review-plan-info legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
#reviewPlanModal .review-plan-info label { display: flex; flex-direction: column; align-items: stretch; gap: 5px; min-width: 0; font-size: 12px; }
#reviewPlanModal .review-plan-info input { width: 100%; min-width: 0; max-width: 100%; height: 36px; margin: 0; padding: 7px 10px; border:1px solid var(--kc-dce1e9, #dce1e9); border-radius: 6px; background:var(--kc-ffffff, #fff); color:var(--kc-34415a, #34415a); font-size: 13px; }
#reviewPlanModal .review-plan-dates { display: contents; }
#reviewPlanModal .review-plan-info .review-picker-hint { grid-column: 1 / -1; margin: 0; }
#reviewPlanModal .review-plan-selection-title { flex-shrink: 0; margin: 0 24px; padding: 8px 0 7px; border-top:1px solid var(--kc-e8ebf1, #e8ebf1); font-size: 14px; color:var(--kc-49566f, #49566f); }
#reviewPlanModal .review-plan-select-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-shrink: 0; padding-bottom: 10px; }
#reviewPlanModal .review-plan-select-row .total-review-select-all { padding: 0; white-space: nowrap; }
#reviewPlanModal .review-plan-select-row .total-review-text { padding: 0; }
#reviewPlanModal .review-picker-hint { font-size: 12px; color:var(--kc-8993a5, #8993a5); line-height: 1.5; margin: 0; overflow-wrap: anywhere; }
#reviewPlanModal #reviewPlanValidation { margin-top: 5px; }
#reviewPlanModal #reviewPlanValidation:empty { display: none; }
#reviewPlanModal .total-review-footer { gap: 2px 18px; padding: 10px 24px 11px; }
#reviewPlanModal .total-review-list-head { padding: 9px 0 7px; }
#reviewPlanModal .total-review-tabs { margin-bottom: 8px; }
/* 中间内容区是唯一滚动容器；列表跟随内容区滚动，避免底部信息栏压住列表。 */
#reviewPlanModal .total-review-list-region { min-height: 0; }
@media(max-width:540px) {
  #reviewPlanModal .review-plan-info { padding: 0 14px 10px; }
  /* 窄屏放不下三列，回到一行一个字段 */
  #reviewPlanModal .review-plan-info { grid-template-columns: 1fr; }
  #reviewPlanModal .review-plan-selection-title { margin: 0 14px; padding: 9px 0; }
  #reviewPlanModal .review-plan-dates { gap: 8px; }
  #reviewPlanModal .total-review-summary { flex: 1 1 140px; min-width: 0; }
  #reviewPlanModal .total-review-tags { max-height: 64px; }
}

@media(max-width:640px) {
  .header-left { min-width: 0; }
  .header-left h1 { overflow-wrap: anywhere; }
  .course-header-actions { gap: 5px; }
  .course-header-actions .course-search-entry { font-size: 12px; padding: 7px; }
  .review-section-heading { flex-wrap: wrap; }
}
.detail-tabs { overflow-x: auto; }
.detail-tabs .dtab { flex-shrink: 0; white-space: nowrap; }
.plan-card h2 { margin: 0 0 10px; font-size: 19px; }
.plan-title { border: 0; background: none; color: inherit; font: inherit; padding: 0; text-align: left; cursor: pointer; overflow-wrap: anywhere; }
.plan-progress { display: flex; gap: 12px; align-items: center; margin-top: 16px; }
.plan-progress progress { flex: 1; min-width: 0; height: 12px; accent-color:var(--kc-4a6cf7, #4a6cf7); }
.plan-progress .plan-progress-label { flex: 0 0 auto; color:var(--kc-6b7690, #6b7690); font-size: 12px; white-space: nowrap; }
.plan-progress .plan-progress-value { min-width: 52px; text-align: right; font-size: 15px; font-weight: 700; color:var(--kc-2f3b52, #2f3b52); }
.plan-create { width: min(760px, 94vw); }
body.plan-modal-open { overflow: hidden; }
.plan-fields { border: 0; padding: 0; margin: 0 0 20px; min-width: 0; }
.plan-fields legend { font-weight: 600; margin-bottom: 12px; }
.plan-fields > label, .plan-dates label, .plan-settings label { display: block; font-size: 14px; }
.plan-fields input:not([type=checkbox]), .plan-settings input { width: 100%; box-sizing: border-box; margin: 6px 0 12px; padding: 10px; border:1px solid var(--kc-dce1ec, #dce1ec); border-radius: 8px; font: inherit; }
.plan-dates { display: flex; gap: 16px; }
.plan-dates label { flex: 1; min-width: 0; }
.plan-option { border-bottom:1px solid var(--kc-edf0f5, #edf0f5); padding: 12px 0; }
.plan-option > span { min-width: 0; overflow-wrap: anywhere; }
.plan-option small { display: block; color:var(--kc-7e879e, #7e879e); margin-top: 5px; }
.plan-day summary { cursor: pointer; font-weight: 600; line-height: 1.8; }
.plan-day summary span { display: block; font-size: 13px; color:var(--kc-7e879e, #7e879e); font-weight: 400; }
.plan-day-types > div, .plan-task { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom:1px solid var(--kc-edf0f5, #edf0f5); }
.plan-day-types { margin: 12px 0; }
.plan-task span { min-width: 0; overflow-wrap: anywhere; }
.plan-task small { flex-shrink: 0; color:var(--kc-7e879e, #7e879e); }
.plan-settings { margin-top: 18px; }
.plan-settings summary { cursor: pointer; margin-bottom: 12px; }
@media (max-width: 640px) {
  .plan-create { width: 100%; }
  .plan-dates { flex-direction: column; gap: 0; }
  .plan-task { flex-wrap: wrap; }
}

@media (max-width: 640px) {
  #mistakeEditModal .tag-sheet-body { padding: 12px 12px 4px; }
  .edit-card { padding: 12px; border-radius: 12px; margin-bottom: 10px; }
  .edit-card-row { flex-direction: column; }
  .edit-name-field { flex: 1 1 auto; width: 100%; }
  .edit-card-row input, .edit-card-row select { flex: 1 1 auto; }
  .edit-tag-row { min-height: 44px; }
  #mistakeEditModal input.edit-tag-check { width: 19px; height: 19px; }
}

/* 错题上传：名称/后缀/分类同一行，字段标签交给卡片标题说明，避免重复图标和黑框。 */
#tagPickerModal .tag-picker-name.mistake-create-card .tag-picker-name-fields {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(150px, .8fr);
  align-items: start;
  gap: 10px 12px;
}
#tagPickerModal .tag-picker-name.mistake-create-card .tag-picker-name-field,
#tagPickerModal .tag-picker-name.mistake-create-card .tag-picker-category {
  flex: none;
  min-width: 0;
}
#tagPickerModal .tag-picker-name.mistake-create-card .tag-picker-name-label,
#tagPickerModal .tag-picker-name.mistake-create-card .tag-picker-category-label {
  display: none;
}
#tagPickerModal .tag-picker-name.mistake-create-card label::before {
  content: none;
  margin: 0;
}
#tagPickerModal .tag-picker-category select:focus,
#tagPickerModal .tag-picker-name input:focus {
  outline: 0;
  border-color:var(--kc-4a6cf7, #4a6cf7);
  background:var(--kc-ffffff, #fff);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--kc-4a6cf7, #4a6cf7) 12%, transparent);
}
@media(max-width:540px) {
  #tagPickerModal .tag-picker-name.mistake-create-card .tag-picker-name-fields { grid-template-columns: 1fr; }
}
/* Shared AI controls stay outside the page-specific forms. */
.courses-ai-open { position:fixed; right:16px; bottom:16px; z-index:1001; padding:10px 16px; border:1px solid var(--kc-b8c5ee, #b8c5ee); border-radius:20px; background:var(--kc-ffffff, #fff); color:var(--kc-304b90, #304b90); box-shadow:0 2px 12px #0002; }
.courses-ai-settings { width:min(680px, calc(100vw - 32px)); max-height:90dvh; margin:auto; box-sizing:border-box; overflow:hidden; border:1px solid var(--kc-e1e6ef, #e1e6ef); border-radius:16px; padding:0; background:var(--kc-ffffff, #fff); color:var(--kc-232a3d, #232a3d); box-shadow:0 24px 64px #17213c26; font-size:14px; }
.courses-ai-settings[open] { display:flex; flex-direction:column; }
.courses-ai-settings::backdrop { background:#0006; }
.courses-ai-settings label { display:block; margin:12px 0; line-height:1.6; }
.courses-ai-settings select, .courses-ai-settings input[type=password] { display:block; width:100%; box-sizing:border-box; padding:10px; }
.courses-ai-settings p { overflow-wrap:anywhere; }
.courses-ai-settings button { min-height:40px; }

/* Shared AI additions follow the existing white-card / blue-primary editing style. */
.ai-settings-head { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:18px 22px; border-bottom:1px solid var(--kc-e8ecf3, #e8ecf3); flex-shrink:0; }
.ai-settings-head h2 { margin:0 0 5px; font-size:20px; font-weight:600; }
.ai-settings-head p { font-size:12px; color:var(--kc-7d8799, #7d8799); }
.ai-settings-head :is(#coursesAiDismiss,#coursesAiClose,#coursesAiDraftClose) { width:36px; height:36px; min-height:36px; padding:0; display:grid; place-items:center; line-height:1; border:0; border-radius:50%; background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-667187, #667187); font-size:24px; cursor:pointer; }
.ai-settings-body { padding:18px 22px; overflow:auto; min-height:0; line-height:1.65; }
.ai-settings-status { padding:10px 12px; margin-bottom:10px; border:1px solid var(--kc-dfe6fb, #dfe6fb); border-radius:9px; background:var(--kc-f4f6ff, #f4f6ff); color:var(--kc-425a94, #425a94); font-size:13px; }
.ai-settings-section { margin-top:18px; padding-top:16px; border-top:1px solid var(--kc-edf0f5, #edf0f5); }
.ai-settings-section h3,.ai-settings-extras h3 { margin:0 0 10px; font-size:14px; font-weight:600; }
.ai-settings-fields { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.courses-ai-settings .ai-settings-fields label { margin-top:0; }
.courses-ai-settings label { color:var(--kc-526078, #526078); font-size:13px; }
.courses-ai-settings :is(select,input[type=password]) { margin-top:6px; padding:10px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; background:var(--kc-fcfdff, #fcfdff); font:inherit; color:var(--kc-232a3d, #232a3d); }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) :is(textarea,select,input):focus-visible { outline:2px solid var(--kc-b9c8ff, #b9c8ff); outline-offset:2px; }
.ai-help,.ai-empty-note { color:var(--kc-7a8497, #7a8497); font-size:12px; line-height:1.65; }
:is(.courses-ai-settings,.review-workbench) .ai-check-row { display:flex; align-items:flex-start; gap:10px; margin:10px 0; padding:12px; border:1px solid var(--kc-e5e9f1, #e5e9f1); border-radius:10px; background:var(--kc-fafbfe, #fafbfe); font-size:13px; color:var(--kc-34415a, #34415a); cursor:pointer; }
:is(.courses-ai-settings,.review-workbench) .ai-check-row input[type=checkbox] { flex:0 0 auto; width:16px; height:16px; padding:0; margin:3px 0 0; accent-color:var(--kc-4a6cf7, #4a6cf7); }
.ai-check-row span { min-width:0; }
.ai-check-row small { display:block; margin-top:3px; color:var(--kc-7a8497, #7a8497); font-size:12px; font-weight:400; line-height:1.6; }
.courses-ai-settings .ai-consent-row { background:var(--kc-f4f6ff, #f4f6ff); border-color:var(--kc-dfe6fb, #dfe6fb); }
.ai-settings-extras { margin-top:18px; border-top:1px solid var(--kc-edf0f5, #edf0f5); padding-top:14px; }
.ai-settings-extras summary { cursor:pointer; color:var(--kc-52627f, #52627f); font-size:13px; }
.ai-settings-extras h3 { margin-top:14px; }
.ai-settings-extras a { color:var(--kc-4a6cf7, #4a6cf7); text-decoration:none; }
.ai-settings-extras a:hover { text-decoration:underline; }
#coursesAiDrafts > div { padding:12px; margin:10px 0; border:1px solid var(--kc-e5e9f1, #e5e9f1); border-radius:10px; }
#coursesAiDrafts button { margin:8px 6px 0 0; }
.ai-settings-footer { padding:14px 22px 18px; border-top:1px solid var(--kc-e8ecf3, #e8ecf3); background:var(--kc-ffffff, #fff); flex-shrink:0; }
#coursesAiMessage { font-size:12px; line-height:1.6; color:var(--kc-667187, #667187); margin-bottom:10px; }
.ai-settings-footer .modal-actions { flex-wrap:wrap; justify-content:flex-start; gap:8px; }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) button { padding:9px 14px; border:1px solid var(--kc-dce1eb, #dce1eb); border-radius:9px; background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-4a5268, #4a5268); font:inherit; font-size:13px; line-height:1.5; cursor:pointer; transition:background .15s,border-color .15s; }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) button:hover { background:var(--kc-e9edf5, #e9edf5); border-color:var(--kc-b9c8ed, #b9c8ed); }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) button:focus-visible { outline:2px solid var(--kc-8fa8ff, #8fa8ff); outline-offset:2px; }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) button:disabled { opacity:.55; cursor:not-allowed; }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) .ai-primary,.review-workbench [data-save-start] { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
:is(.courses-ai-settings,.review-workbench,.mistake-answer-ai,#resourceAiPanel) .ai-primary:hover,.review-workbench [data-save-start]:hover { background:var(--kc-3e5fe3, #3e5fe3); border-color:var(--kc-3e5fe3, #3e5fe3); }
:is(.courses-ai-settings,.review-workbench) .ai-text-button { background:transparent; border-color:transparent; color:var(--kc-788297, #788297); }
.ai-action-row { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:12px 0; }
.review-ai-generator { padding:14px; margin-top:18px; border:1px solid var(--kc-dfe6f5, #dfe6f5); border-radius:12px; background:var(--kc-f8faff, #f8faff); }
.review-feedback { margin-top:16px; }
.review-feedback button { padding:9px 14px; border:1px solid var(--kc-dce1eb, #dce1eb); border-radius:9px; background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-4a5268, #4a5268); font:inherit; font-size:13px; cursor:pointer; }
.review-feedback button.ai-primary { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
.review-feedback button:disabled { opacity:.55; cursor:wait; }
.review-feedback :is(p,li,blockquote) { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.7; }
.review-feedback h4 { margin:12px 0 6px; }
.review-feedback ol { padding-left:22px; }
.review-feedback-error { padding:10px 12px; border-left:3px solid var(--kc-d6e0fc, #d6e0fc); margin:10px 0; background:var(--kc-f8faff, #f8faff); border-radius:6px; }
.review-feedback-error blockquote { color:var(--kc-667187, #667187); margin-bottom:6px; }
.review-ai-generator summary { color:var(--kc-34415a, #34415a); font-weight:600; margin-bottom:0; }
.ai-optional-tag { display:inline-block; margin-left:8px; padding:1px 7px; border-radius:20px; background:var(--kc-eef2ff, #eef2ff); color:var(--kc-5a73b6, #5a73b6); font-size:11px; font-weight:400; }
.review-ai-draft:not(:empty) { padding:14px; margin-top:12px; border:1px solid var(--kc-e1e6ef, #e1e6ef); border-radius:10px; background:var(--kc-ffffff, #fff); }
.review-workbench #reviewWbDraftStatus { margin:10px 0; color:var(--kc-667187, #667187); font-size:12px; }
.review-workbench #reviewWbReadiness { padding:12px 14px; margin-bottom:14px; border:1px solid var(--kc-e0e7f5, #e0e7f5); border-radius:10px; background:var(--kc-f5f7ff, #f5f7ff); color:var(--kc-4b6088, #4b6088); font-size:13px; line-height:1.7; }
.review-workbench #reviewWbReadiness[data-material-state=missing],.review-workbench #reviewWbReadiness[data-material-state=error] { background:var(--kc-fff9ee, #fff9ee); border-color:var(--kc-f1dfb8, #f1dfb8); color:var(--kc-94672d, #94672d); }
.review-workbench #reviewWbReadiness[data-material-state=hint] { padding:0; margin:2px 0 10px; border:0; background:transparent; color:var(--kc-667085, #667085); }
#reviewWbReadiness ul { margin:6px 0 0; padding-left:20px; }
#resourceAiPanel label { display:grid; gap:6px; margin:12px 0; }
#resourceAiPanel :is(textarea,select) { width:100%; padding:10px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; background:var(--kc-fcfdff, #fcfdff); font:inherit; font-size:14px; color:var(--kc-232a3d, #232a3d); }
#resourceAiPanel p { font-size:13px; line-height:1.7; color:var(--kc-7a8497, #7a8497); margin:10px 0; }
#resourceAiPanel #resourceAiError { color:var(--kc-b63c3c, #b63c3c); }
#resourceAiPanel button { margin:0 6px 8px 0; }
@media(max-width:640px) {
  .courses-ai-settings { width:calc(100vw - 20px); max-height:calc(100dvh - 20px); border-radius:14px; }
  .ai-settings-head,.ai-settings-body,.ai-settings-footer { padding:14px 16px; }
  .ai-settings-fields { grid-template-columns:1fr; gap:0; }
  .ai-settings-footer .modal-actions { display:grid; grid-template-columns:1fr 1fr; }
  .ai-settings-footer .modal-actions button { padding:9px 10px; min-width:0; }
  .ai-action-row button { flex:1 1 130px; }
  .review-ai-generator,.review-ai-draft:not(:empty) { padding:12px; }
}
#resourceAiPanel label { display:block; margin:12px 0; }
#resourceAiPanel textarea, #resourceAiPanel select { display:block; width:100%; max-width:100%; box-sizing:border-box; padding:10px; border:1px solid var(--kc-d9dfeb, #d9dfeb); border-radius:6px; font:inherit; }
#resourceAiPanel button { min-height:44px; padding:8px 12px; margin:4px 4px 4px 0; }
#resourceAiPanel fieldset { border:0; min-width:0; padding:0; }
#resourceAiPanel p { overflow-wrap:anywhere; }

/* Shared AI request feedback: also rendered inside modal dialogs above their backdrop. */
.ai-request-progress { position:fixed; bottom:72px; right:16px; z-index:1100; display:flex; align-items:center; gap:10px; max-width:calc(100vw - 32px); box-sizing:border-box; padding:12px 16px; border:1px solid var(--kc-dce4ff, #dce4ff); border-radius:12px; background:var(--kc-f4f7ff, #f4f7ff); color:var(--kc-3653a4, #3653a4); box-shadow:0 4px 18px #17213c14; font-size:13px; line-height:1.6; pointer-events:none; }
.ai-request-progress-dialog { position:sticky; top:0; bottom:auto; right:auto; z-index:5; margin:10px 0; max-width:100%; flex-shrink:0; }
dialog > .ai-request-progress-dialog { margin:12px 18px; }
.ai-request-spinner { width:17px; height:17px; flex:0 0 17px; border:2px solid var(--kc-cbd7fa, #cbd7fa); border-top-color:var(--kc-4a6cf7, #4a6cf7); border-radius:50%; animation:ai-request-spin .8s linear infinite; }
@keyframes ai-request-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .ai-request-spinner { animation:none; } }
.courses-ai-settings [hidden] { display:none !important; }
.courses-ai-settings :is(input[type=url],input:not([type])) { display:block; width:100%; box-sizing:border-box; margin-top:6px; padding:10px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; background:var(--kc-fcfdff, #fcfdff); font:inherit; color:var(--kc-232a3d, #232a3d); }

.ai-settings-applied { margin:0 0 7px; color:var(--kc-425a94, #425a94); font-size:12px; line-height:1.6; }
#coursesAiMessage.ai-settings-error { color:var(--kc-b42318, #b42318); font-weight:500; }

/* Answer generation shares the same card and action layout as material drafts. */
.mistake-answer-ai .ai-action-row { margin:12px 0 0; }
.mistake-answer-ai > .ai-help { color:var(--kc-7d8799, #7d8799); font-size:13px; line-height:1.65; }
:is(#tagPickerModal,#mistakeEditModal) button[data-answer-ai-toggle] {
  width:100%; min-height:40px; padding:10px 14px; border:1px solid var(--kc-dce1eb, #dce1eb);
  border-radius:9px; text-align:left; font-size:14px; line-height:1.5;
}
@media(max-width:600px) {
  .mistake-answer-ai .ai-action-row button { flex:1 1 140px; white-space:normal; }
}

/* Assessment deadlines and explicit completion. */
.assessment-sort-hint { color:var(--kc-8a93a5, #8a93a5); font-size:12px; margin:14px 0 10px; }
.assessment-card { gap:18px; padding:20px; align-items:flex-start; }
.assessment-card-head { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:7px; }
.assessment-card-head h3 { font-size:16px; color:var(--kc-29354a, #29354a); overflow-wrap:anywhere; }
.assessment-deadline { display:inline-flex; padding:4px 10px; border-radius:20px; font-size:12px; line-height:1.5; }
.assessment-normal { background:var(--kc-eef2ff, #eef2ff); color:var(--kc-4a6cf7, #4a6cf7); }
.assessment-soon { background:var(--kc-fff5df, #fff5df); color:var(--kc-93651d, #93651d); }
.assessment-urgent,.assessment-overdue { background:var(--kc-fff0ef, #fff0ef); color:var(--kc-bf4444, #bf4444); }
.assessment-neutral { background:var(--kc-f3f4f8, #f3f4f8); color:var(--kc-7d8799, #7d8799); }
.assessment-completed .assessment-deadline { background:var(--kc-eaf6ef, #eaf6ef); color:var(--kc-377c55, #377c55); }
.assessment-completed h3 { color:var(--kc-788297, #788297); }
.assessment-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; justify-content:flex-end; align-self:flex-start; }
.assessment-actions .detail-link { margin:0; padding:8px; }
.assessment-actions button { margin:0; background:var(--kc-f3f4f8, #f3f4f8); border:1px solid var(--kc-dce1eb, #dce1eb); padding:9px 12px; line-height:1.5; border-radius:9px; }
.assessment-actions button.ai-primary { background:var(--kc-4a6cf7, #4a6cf7); border-color:var(--kc-4a6cf7, #4a6cf7); color:#fff; }
.assessment-actions button.assessment-delete { background:transparent; color:var(--kc-b75c5c, #b75c5c); border-color:transparent; }
#assessmentModal label { display:block; color:var(--kc-667187, #667187); font-size:13px; margin-bottom:6px; }
#assessmentModal .modal { max-height:90dvh; overflow:auto; }
#assessmentModal .modal-actions { margin-top:14px; }
.assessment-attachment-editor { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:8px; }
.assessment-attachment-editor .file-name-tip { flex:1 1 180px; margin:0; }
.assessment-existing-file { flex-basis:100%; }
.assessment-file-remove {
  padding:7px 10px; border:1px solid var(--kc-e2caca, #e2caca); border-radius:8px; background:var(--kc-fffafa, #fffafa);
  color:var(--kc-a25757, #a25757); font:inherit; font-size:12px; cursor:pointer;
}
.assessment-ocr-box {
  margin-top:14px; padding:12px; border:1px solid var(--kc-e1e4e8, #e1e4e8); border-radius:11px; background:var(--kc-f8fafb, #f8fafb);
}
.assessment-ocr-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:8px; }
.assessment-ocr-head strong,.assessment-ocr-head small { display:block; }
.assessment-ocr-head strong { color:var(--kc-52616e, #52616e); font-size:13px; }
.assessment-ocr-head small { margin-top:3px; color:var(--kc-87929d, #87929d); font-size:11px; line-height:1.45; }
.assessment-ocr-head button,.assessment-reference-button {
  padding:7px 10px; border:1px solid var(--kc-ced8e5, #ced8e5); border-radius:8px; background:var(--kc-ffffff, #fff);
  color:var(--kc-536b86, #536b86); font:inherit; font-size:12px; cursor:pointer;
}
.assessment-ocr-head button:disabled { opacity:.45; cursor:not-allowed; }
.assessment-ocr-box textarea { background:var(--kc-ffffff, #fff); }
.assessment-ocr-status,.assessment-reference-status { min-height:17px; margin:6px 0; color:var(--kc-7b8792, #7b8792); font-size:11px; line-height:1.5; }
.assessment-ocr-body-actions { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:7px; }
.assessment-ocr-body-actions button { padding:7px 10px; border:1px solid var(--kc-d8dde3, #d8dde3); border-radius:8px; background:var(--kc-ffffff, #fff); color:var(--kc-60707c, #60707c); font:inherit; font-size:12px; cursor:pointer; }
.assessment-ocr-box .assessment-reference-button { margin-top:1px; }
#assessBodyToChartReference { margin:-2px 0 12px; }
@media(max-width:600px){.assessment-card{flex-direction:column;align-items:stretch;padding:16px;gap:12px}.assessment-actions{justify-content:flex-start}.assessment-actions button{flex:1 1 auto}.assessment-actions .detail-link{width:100%;padding-left:0}}

/* Editable assessment-composition chart. The rendered chart is read-only;
   all changes happen in the dedicated editor dialog. */
.assessment-chart-card {
  width:min(100%,560px); margin-top:16px; padding:16px; border:1px solid var(--kc-e4e1dc, #e4e1dc);
  border-radius:14px; background:linear-gradient(145deg,var(--kc-fffdfa, #fffdfa),var(--kc-f7f5f1, #f7f5f1));
}
.assessment-chart-card>header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.assessment-chart-card h4 { margin:0; color:var(--kc-3d484b, #3d484b); font-size:15px; overflow-wrap:anywhere; }
.assessment-chart-card header p { margin:4px 0 0; color:var(--kc-858780, #858780); font-size:12px; }
.assessment-chart-card header button,.assessment-chart-empty button {
  flex:0 0 auto; padding:7px 11px; border:1px solid var(--kc-d8d4cc, #d8d4cc); border-radius:8px;
  background:var(--kc-ffffff, #fff); color:var(--kc-596765, #596765); font:inherit; font-size:12px; cursor:pointer;
}
.assessment-chart-visual { position:relative; height:260px; margin-top:10px; overflow:hidden; }
.assessment-chart-visual canvas { width:100%!important; height:100%!important; }
.assessment-chart-tooltip {
  position:absolute; z-index:4; width:196px; padding:11px 12px; border:1px solid var(--kc-ddd8cf, #ddd8cf);
  border-radius:10px; background:rgba(255,253,250,.97); box-shadow:0 8px 24px rgba(62,68,67,.16);
  color:var(--kc-4a5554, #4a5554); opacity:0; transform:translateY(4px); transition:opacity .12s ease,transform .12s ease;
  pointer-events:none; font-size:12px; line-height:1.45;
}
.assessment-chart-tooltip strong { display:block; color:var(--kc-354240, #354240); font-size:13px; }
.assessment-chart-tooltip span { display:block; margin-top:2px; color:var(--kc-74817d, #74817d); font-weight:700; }
.assessment-chart-tooltip p { margin:7px 0 0; color:var(--kc-626d69, #626d69); overflow-wrap:anywhere; }
.assessment-chart-details { display:grid; gap:7px; margin:5px 0 0; padding:0; list-style:none; }
.assessment-chart-details li { display:grid; grid-template-columns:10px minmax(0,1fr) auto; align-items:start; gap:9px; padding:5px 0; color:var(--kc-596461, #596461); font-size:12px; }
.assessment-chart-swatch { width:9px; height:9px; margin-top:4px; border-radius:50%; background:var(--chart-color,var(--kc-9aa89d, #9aa89d)); }
.assessment-chart-details small { display:block; margin-top:2px; color:var(--kc-858d89, #858d89); font-size:11px; line-height:1.45; overflow-wrap:anywhere; }
.assessment-chart-details b { color:var(--kc-4e5b58, #4e5b58); font-size:12px; }
.assessment-chart-details .assessment-chart-no-data { display:block; color:var(--kc-99978f, #99978f); }
.assessment-chart-empty {
  display:flex; align-items:center; justify-content:space-between; gap:12px; width:min(100%,560px);
  margin-top:14px; padding:11px 13px; border:1px dashed var(--kc-d9d5cd, #d9d5cd); border-radius:10px;
  background:var(--kc-faf9f6, #faf9f6); color:var(--kc-858b88, #858b88); font-size:12px;
}

dialog.assessment-chart-editor {
  width:min(1120px,calc(100vw - 28px)); max-width:1120px; max-height:94dvh; padding:0;
  border:1px solid var(--kc-ddd9d1, #ddd9d1); border-radius:18px; background:var(--kc-fbfaf7, #fbfaf7); color:var(--kc-465251, #465251);
  box-shadow:0 24px 80px rgba(45,51,49,.25); overflow:hidden;
}
.assessment-chart-editor::backdrop { background:rgba(38,45,43,.42); backdrop-filter:blur(2px); }
.assessment-chart-editor-head { display:flex; justify-content:space-between; gap:16px; padding:18px 22px; border-bottom:1px solid var(--kc-e5e1d9, #e5e1d9); background:var(--kc-fffdfa, #fffdfa); }
.assessment-chart-editor-head h2 { margin:0; font-size:18px; color:var(--kc-374442, #374442); }
.assessment-chart-editor-head p { margin:5px 0 0; color:var(--kc-818a87, #818a87); font-size:12px; }
.assessment-chart-editor-head>button { border:0; background:transparent; color:var(--kc-77817e, #77817e); font-size:24px; cursor:pointer; }
.assessment-chart-editor-body { display:grid; grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr); gap:22px; padding:20px 22px; max-height:calc(94dvh - 146px); overflow:auto; }
.assessment-chart-fields h3,.assessment-chart-preview h3 { margin:0; color:var(--kc-4c5956, #4c5956); font-size:14px; }
.assessment-chart-title-field,.assessment-chart-source>label { display:grid; gap:6px; color:var(--kc-6f7976, #6f7976); font-size:12px; }
.assessment-chart-title-field input,.assessment-chart-row input,.assessment-chart-row textarea,.assessment-chart-source input,.assessment-chart-source textarea {
  width:100%; padding:9px 10px; border:1px solid var(--kc-d9d6ce, #d9d6ce); border-radius:8px; background:var(--kc-ffffff, #fff);
  color:var(--kc-3f4b49, #3f4b49); font:inherit; font-size:13px; box-sizing:border-box;
}
.assessment-chart-row textarea,.assessment-chart-source textarea { resize:vertical; line-height:1.55; }
.assessment-chart-rows-head { display:flex; align-items:center; justify-content:space-between; margin:18px 0 8px; }
.assessment-chart-rows-head button,.assessment-chart-ai-actions button,.assessment-chart-body-apply button {
  padding:7px 10px; border:1px solid var(--kc-d9d5cd, #d9d5cd); border-radius:8px; background:var(--kc-ffffff, #fff); color:var(--kc-596663, #596663);
  font:inherit; font-size:12px; cursor:pointer;
}
.assessment-chart-rows-head button:hover,.assessment-chart-ai-actions button:hover:not(:disabled),.assessment-chart-body-apply button:hover { border-color:var(--kc-aab6af, #aab6af); background:var(--kc-f8faf8, #f8faf8); }
.assessment-chart-ai-actions button:disabled { opacity:.45; cursor:not-allowed; }
.assessment-chart-row {
  display:grid; grid-template-columns:minmax(140px,1fr) 110px 52px auto; gap:8px 10px;
  padding:12px; margin-bottom:9px; border:1px solid var(--kc-e3dfd7, #e3dfd7); border-radius:11px; background:var(--kc-fffdfa, #fffdfa);
}
.assessment-chart-row label { display:grid; gap:5px; color:var(--kc-7b817e, #7b817e); font-size:11px; }
.assessment-chart-detail-field { grid-column:1 / span 3; }
.assessment-chart-color-field input { height:34px; padding:3px; }
.assessment-chart-remove {
  align-self:end; height:34px; padding:0 8px; border:0; border-radius:7px;
  background:transparent; color:var(--kc-a86666, #a86666); font:inherit; font-size:11px; cursor:pointer;
}
.assessment-chart-remove:disabled { opacity:.3; cursor:not-allowed; }
.assessment-chart-sum { margin:8px 0 16px; padding:8px 10px; border-radius:8px; background:var(--kc-f2f4ef, #f2f4ef); color:var(--kc-64736b, #64736b); font-size:12px; }
.assessment-chart-sum.is-over { background:var(--kc-fff0ef, #fff0ef); color:var(--kc-ad5151, #ad5151); }
.assessment-chart-source { margin-top:14px; padding-top:12px; border-top:1px solid var(--kc-e7e3dc, #e7e3dc); }
.assessment-chart-source summary { color:var(--kc-53615e, #53615e); font-size:13px; font-weight:600; cursor:pointer; }
.assessment-chart-source>label { margin-top:11px; }
.assessment-chart-ai-actions { display:flex; flex-wrap:wrap; gap:7px; margin-top:9px; }
.assessment-chart-ai-actions button { background:var(--kc-f6f7f4, #f6f7f4); }
.assessment-chart-status { min-height:18px; color:var(--kc-707b77, #707b77); font-size:12px; line-height:1.5; }
.assessment-chart-body-apply { margin-top:10px; padding:9px 10px; border:1px solid var(--kc-e4ded2, #e4ded2); border-radius:9px; background:var(--kc-fbf7ee, #fbf7ee); }
.assessment-chart-body-apply p { margin:0 0 7px; color:var(--kc-786f5d, #786f5d); font-size:12px; }
.assessment-chart-preview { min-width:0; }
.assessment-chart-preview .assessment-chart-visual { height:min(42vh,370px); border:1px solid var(--kc-e5e1da, #e5e1da); border-radius:12px; background:var(--kc-fffdfa, #fffdfa); }
.assessment-chart-preview .assessment-chart-details { margin-top:12px; }
.assessment-chart-editor-foot { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:13px 22px; border-top:1px solid var(--kc-e2ded6, #e2ded6); background:var(--kc-fffdfa, #fffdfa); }
.assessment-chart-editor-foot .mistake-inline-error { margin:0; flex:1; }
.assessment-chart-editor-foot>div { display:flex; gap:8px; flex:0 0 auto; }
.assessment-chart-editor-foot button { padding:8px 16px; }
@media(max-width:780px){
  .assessment-chart-editor-body { grid-template-columns:1fr; padding:16px; }
  .assessment-chart-preview { order:-1; }
  .assessment-chart-preview .assessment-chart-visual { height:280px; }
  .assessment-chart-row { grid-template-columns:minmax(120px,1fr) 90px 46px; }
  .assessment-chart-row .assessment-chart-remove { grid-column:1 / -1; justify-self:end; height:auto; padding:5px; }
  .assessment-chart-detail-field { grid-column:1 / -1; }
  .assessment-chart-editor-head,.assessment-chart-editor-foot { padding:14px 16px; }
  .assessment-chart-editor-foot { align-items:stretch; flex-direction:column; }
  .assessment-chart-editor-foot>div,.assessment-chart-editor-foot button { flex:1; }
  .assessment-chart-visual { height:245px; }
}

/* Compact AI setup: controls first, low-frequency details collapsed. */
#coursesAiDialog { width:min(580px,calc(100vw - 24px)); }
#coursesAiDialog .ai-settings-head { padding:16px 20px; }
#coursesAiDialog .ai-settings-body { padding:16px 20px; }
#coursesAiDialog .ai-check-row { padding:0; border:0; background:transparent; margin:10px 0; }
#coursesAiDialog .ai-settings-extras { margin-top:14px; padding-top:12px; }
#coursesAiDialog :is(input[type=url],input[list],#coursesAiWorkspace) { width:100%; padding:9px 12px; border:1px solid var(--kc-dbe0ea, #dbe0ea); border-radius:9px; background:var(--kc-fcfdff, #fcfdff); font:inherit; }
.ai-settings-maintenance { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.ai-settings-state { margin-top:12px; padding:10px 12px; border-radius:9px; background:var(--kc-f5f7fc, #f5f7fc); }
.ai-settings-state .ai-settings-applied { font-size:12px; margin:0; }
#coursesAiVerification { margin-top:4px; }
#coursesAiMessage { margin:4px 0 0; }
#coursesAiMessage:empty { display:none; }
.courses-ai-draft-open { bottom:68px; }
@media(max-width:640px){#coursesAiDialog .ai-settings-fields{grid-template-columns:1fr 1fr;gap:10px}#coursesAiDialog .ai-settings-head,#coursesAiDialog .ai-settings-body{padding:14px 16px}#coursesAiDialog .ai-settings-footer{padding:12px 16px}#coursesAiDialog .ai-settings-footer .modal-actions button{flex:1 1 0}}

/* Shared read-only image and PDF viewer. */
.attachment-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}
.attachment-actions a{font-size:13px;margin:0;padding:8px 10px}
.attachment-image-button{display:block;max-width:100%;padding:0;border:0;background:transparent;cursor:zoom-in;text-align:left}
.attachment-image-button img{display:block;max-width:100%;margin:0;object-fit:contain}
.attachment-pdf-card{padding:24px;border:1px dashed var(--kc-ccd7ee, #ccd7ee);border-radius:12px;background:var(--kc-f7f9ff, #f7f9ff);color:var(--kc-526785, #526785);font-size:14px}
#mistakeDetailImage[role=button]{cursor:zoom-in}
.attachment-viewer{width:min(1100px,calc(100vw - 32px));height:min(820px,90dvh);max-width:100vw;max-height:100dvh;margin:auto;padding:0;border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:16px;background:var(--kc-ffffff, #fff);color:var(--kc-29354a, #29354a);box-shadow:0 20px 70px #17213c33;overflow:hidden}
.attachment-viewer[open]{display:flex;flex-direction:column}
.attachment-viewer::backdrop{background:#17213c99}
.attachment-viewer header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--kc-e8ecf3, #e8ecf3);flex-shrink:0}
.attachment-viewer h2{font-size:17px;line-height:1.5;min-width:0;overflow-wrap:anywhere}
.attachment-viewer header>div{display:flex;align-items:center;gap:8px;flex-shrink:0}
.attachment-viewer a{color:var(--kc-4a6cf7, #4a6cf7);text-decoration:none;font-size:13px;padding:8px}
.attachment-viewer button{font-size:13px;min-height:36px;white-space:nowrap}
.attachment-viewer [data-viewer-close]{border:0;border-radius:50%;width:36px;min-width:36px;padding:0;font-size:24px;line-height:1}
.attachment-viewer-toolbar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:10px 14px;border-bottom:1px solid var(--kc-e8ecf3, #e8ecf3);flex-shrink:0;font-size:13px}
#attachmentPdfPages{display:flex;align-items:center;gap:10px}
#attachmentPdfPages[hidden]{display:none}
#attachmentPreviewStatus{padding:8px 16px;margin:0;color:var(--kc-71809a, #71809a);font-size:12px;flex-shrink:0}
#attachmentPreviewStatus.attachment-error{color:var(--kc-ba3d3d, #ba3d3d)}
#attachmentPreviewStage{overflow:auto;flex:1;min-height:0;min-width:0;padding:16px;background:var(--kc-edf0f5, #edf0f5);overscroll-behavior:contain}
#attachmentPreviewStage canvas{display:block;margin:0 auto;background:white;box-shadow:0 2px 12px #17213c18;max-width:none}
.attachment-image-wrap{position:relative;margin:auto}
.attachment-image-wrap img{position:absolute;top:50%;left:50%;max-width:none;max-height:none;object-fit:contain}
.attachment-viewer.attachment-expanded{width:100vw;height:100dvh;border-radius:0;border:0}
@media(max-width:600px){.attachment-viewer{width:100vw;height:94dvh;border-radius:12px 12px 0 0;margin:auto 0 0}.attachment-viewer header{padding:10px 12px;gap:8px;flex-wrap:wrap}.attachment-viewer header>div{margin-left:auto}.attachment-viewer h2{font-size:15px}.attachment-viewer-toolbar{gap:6px;padding:8px}.attachment-viewer-toolbar button{padding:7px 10px}#attachmentPreviewStage{padding:10px}}

/* PDF extraction: shared range selector and sequential progress. */
.pdf-ocr-dialog{box-sizing:border-box;width:min(520px,calc(100vw - 24px));max-height:90dvh;overflow:auto;margin:auto;padding:24px;border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:18px;color:var(--kc-29354a, #29354a);background:var(--kc-ffffff, #fff);box-shadow:0 20px 70px #17213c33}
.pdf-ocr-dialog::backdrop{background:#17213c99}
.pdf-ocr-dialog h2{margin:0 0 12px;font-size:20px}
.pdf-ocr-dialog p{margin:12px 0;line-height:1.6;overflow-wrap:anywhere}
.pdf-ocr-dialog fieldset{border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:12px;padding:14px;display:grid;gap:12px;min-width:0}
.pdf-ocr-dialog label{display:flex;align-items:center;gap:8px}
.pdf-ocr-dialog input[type=radio]{width:18px;height:18px;margin:0}
.pdf-ocr-dialog [data-pdf-range]{width:100%;box-sizing:border-box;padding:10px;border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:8px;font:inherit;min-width:0}
.pdf-ocr-hint{color:var(--kc-78849b, #78849b);font-size:13px}
.pdf-ocr-dialog [data-pdf-error]{color:var(--kc-c83232, #c83232)}
.pdf-ocr-dialog progress{width:100%;height:12px;accent-color:var(--kc-4a6cf7, #4a6cf7)}
.pdf-ocr-actions{display:flex;gap:10px;margin-top:18px}
.pdf-ocr-actions button{border:0;border-radius:12px;padding:10px 18px;font:inherit;background:var(--kc-f1f3f8, #f1f3f8);color:var(--kc-536079, #536079);cursor:pointer}
.pdf-ocr-actions [data-pdf-start]{background:var(--kc-4a6cf7, #4a6cf7);color:#fff}
.pdf-ocr-actions button:disabled{opacity:.55;cursor:default}
.pdf-ocr-dialog fieldset[hidden]{display:none}

/* Visible, nonblocking notifications, including above native dialogs. */
#toastBox{inset:20px auto auto 50%;margin:0;padding:0;border:0;background:transparent;overflow:visible;width:max-content;max-width:calc(100vw - 24px);pointer-events:none}
.toast{box-sizing:border-box;max-width:100%;margin-bottom:8px;padding:12px 18px;border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:12px;background:var(--kc-ffffff, #fff);color:var(--kc-29354a, #29354a);box-shadow:0 6px 24px #17213c26;font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.toast-success,.recognition-success{color:var(--kc-21633d, #21633d);border:1px solid var(--kc-b6dfc4, #b6dfc4);background:var(--kc-effaf3, #effaf3)}
.recognition-success{padding:12px 14px;border-radius:10px;line-height:1.6;font-size:14px;scroll-margin:16px}
@media(prefers-reduced-motion:reduce){.toast{transition:none}}
.resource-text-entry{margin-left:12px}
.resource-text-dialog{box-sizing:border-box;width:min(760px,calc(100vw - 24px));max-height:90dvh;margin:auto;padding:0;border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:18px;background:var(--kc-ffffff, #fff);color:var(--kc-29354a, #29354a);box-shadow:0 20px 70px #17213c33;overflow:hidden}
.resource-text-dialog[open]{display:flex;flex-direction:column}
.resource-text-dialog::backdrop{background:#17213c99}
.resource-text-dialog header{padding:18px 22px;border-bottom:1px solid var(--kc-e8ecf3, #e8ecf3);display:flex;align-items:flex-start;gap:12px;justify-content:space-between;flex-shrink:0}
.resource-text-dialog h2{margin:0;font-size:20px}.resource-text-dialog h3{font-size:15px;margin:0}
.resource-text-dialog [data-text-name]{margin:6px 0 0;font-size:13px;color:var(--kc-78849b, #78849b);overflow-wrap:anywhere}
.resource-text-dialog [data-text-close]{border:0;border-radius:50%;background:var(--kc-f1f3f8, #f1f3f8);color:var(--kc-536079, #536079);min-width:36px;height:36px;font-size:24px;padding:0}
.resource-text-body{padding:0 22px 18px;overflow:auto;min-height:0}
.resource-text-note{color:var(--kc-78849b, #78849b);font-size:13px;line-height:1.7}
.resource-text-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:18px 0 10px}
.resource-text-dialog [data-text-original]{max-height:150px;overflow:auto}
.resource-text-dialog textarea{width:100%;box-sizing:border-box;border:1px solid var(--kc-dce1eb, #dce1eb);border-radius:12px;padding:12px;font:inherit;font-size:14px;line-height:1.7;resize:vertical;min-height:150px}
.resource-text-dialog [data-text-status]{line-height:1.6;font-size:13px;overflow-wrap:anywhere}
.resource-text-dialog footer{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;padding:14px 22px;border-top:1px solid var(--kc-e8ecf3, #e8ecf3);flex-shrink:0}
.resource-text-dialog button:disabled{opacity:.55;cursor:default}
.resource-text-dialog [data-text-replace][hidden]{display:none}
@media(max-width:600px){.resource-text-dialog{max-height:94dvh}.resource-text-dialog header{padding:14px}.resource-text-body{padding:0 14px 14px}.resource-text-dialog footer{padding:12px 14px;gap:8px}.resource-text-heading{flex-wrap:wrap}.resource-text-dialog footer button{padding:10px 14px;font-size:14px}.resource-text-entry{margin:8px 0 8px 12px}}

/* 大纲操作可在窄屏换行，避免挤压卡片标题。 */
.outline-ai-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
