:root {
  /* 品牌色梯度 */
  --brand-900: #072b66;
  --brand-700: #0b3d91;
  --brand-500: #1f5fc4;
  --brand-50: #eaf1fb;

  /* 语义色 */
  --accent: #12b5a5;
  --gold: #c9a227;
  --danger: #d94b4b;
  --success: #2f9e6e;
  --bg: #f5f7fa;
  --surface: #ffffff;
  --line: #e3e8ef;
  --text: #1b2432;
  --text-2: #55627a;
  --text-3: #8a96a8;

  /* 浅色底与状态色（徽章、状态点共用） */
  --success-soft: #e8f5ef;
  --gold-soft: #faf3dc;
  --danger-soft: #fbecec;
  --neutral-soft: #eef1f5;
  --status-aligned: var(--success);
  --status-review: var(--gold);
  --status-draft: var(--text-2);
  --status-expired: var(--danger);

  /* 字号阶梯 */
  --font-size-h1: 28px;
  --font-size-h2: 22px;
  --font-size-h3: 18px;
  --font-size-body: 14px;
  --font-size-aux: 12px;
  --font-size-display: 48px;
  --font-size-icon: 10px;

  /* 间距（8pt 栅格） */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-6: 24px;
  --space-8: 32px;
  --space-12: 48px;

  /* 圆角 */
  --radius: 12px;
  --radius-sm: 8px;

  /* 阴影 */
  --shadow-color-weak: color-mix(in srgb, var(--brand-900) 8%, transparent);
  --shadow-color-strong: color-mix(in srgb, var(--brand-900) 18%, transparent);
  --shadow-card: 0 1px 2px var(--shadow-color-weak);
  --shadow-card-hover: 0 6px 18px var(--shadow-color-strong);

  /* 字体栈 */
  --font-cn: "Source Han Sans SC", "Source Han Sans CN", "Noto Sans SC", "PingFang SC", "Microsoft YaHei";
  --font-en: "Inter", "Segoe UI", "Helvetica Neue", Arial;
  --font: var(--font-cn), var(--font-en), sans-serif;

  /* 焦点框 */
  --focus-ring: 2px solid var(--brand-500);

  /* 布局 */
  --sidebar-width: 240px;
  --topbar-height: 56px;
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  height: 100%;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
  font-size: var(--font-size-body);
  line-height: 1.6;
}

a {
  color: inherit;
  text-decoration: none;
}

:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

/* ---------- 字号阶梯 ---------- */

.text-h1,
.text-h2,
.text-h3,
.text-body,
.text-aux {
  margin: 0;
}

.text-h1 {
  font-size: var(--font-size-h1);
  line-height: 1.3;
}

.text-h2 {
  font-size: var(--font-size-h2);
  line-height: 1.35;
}

.text-h3 {
  font-size: var(--font-size-h3);
  line-height: 1.45;
}

.text-body {
  font-size: var(--font-size-body);
}

.text-aux {
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

/* ---------- 卡片 ---------- */

.card {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: var(--space-4);
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.18s ease;
}

.card:hover {
  box-shadow: var(--shadow-card-hover);
}

.card--interactive {
  cursor: pointer;
}

.card--interactive:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

/* ---------- 按钮 ---------- */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-body);
  font-weight: 600;
  line-height: 1.4;
  text-align: center;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.btn:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: 0.45;
  cursor: not-allowed;
}

.btn--primary {
  background: var(--brand-700);
  border-color: var(--brand-700);
  color: var(--surface);
}

.btn--primary:hover:not(:disabled) {
  background: var(--brand-900);
  border-color: var(--brand-900);
}

.btn--secondary {
  background: var(--surface);
  border-color: var(--brand-500);
  color: var(--brand-700);
}

.btn--secondary:hover:not(:disabled) {
  background: var(--brand-50);
  border-color: var(--brand-700);
}

.btn--text {
  padding-right: var(--space-2);
  padding-left: var(--space-2);
  color: var(--brand-700);
}

.btn--text:hover:not(:disabled) {
  background: var(--brand-50);
}

/* ---------- 状态徽章 ---------- */

.badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: 1px var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  color: var(--text);
  font-size: var(--font-size-aux);
  font-weight: 600;
  line-height: 1.6;
  white-space: nowrap;
}

.badge__icon {
  position: relative;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 12px;
}

.badge__text {
  color: inherit;
}

.badge--aligned {
  background: var(--success-soft);
  border-color: var(--success);
}

.badge--aligned .badge__icon {
  border-radius: 50%;
  background: var(--status-aligned);
}

.badge--review {
  background: var(--gold-soft);
  border-color: var(--gold);
}

.badge--review .badge__icon {
  border: 2px solid var(--status-review);
  border-right-color: transparent;
  border-bottom-color: transparent;
  border-radius: 50%;
}

.badge--draft {
  background: var(--neutral-soft);
  border-color: var(--line);
}

.badge--draft .badge__icon {
  border: 2px solid var(--status-draft);
  border-radius: 50%;
}

.badge--expired {
  background: var(--danger-soft);
  border-color: var(--danger);
}

.badge--expired .badge__icon {
  border: 1.5px solid var(--status-expired);
  border-radius: 50%;
  color: var(--status-expired);
  font-size: var(--font-size-icon);
  font-weight: 700;
  line-height: 1;
}

.badge--expired .badge__icon::before {
  content: "!";
}

.badge--neutral .badge__icon {
  border: 2px solid var(--text-3);
  border-radius: 50%;
}

/* 已停用：灰色实心底 + 斜杠，与四态徽章的图形仍可区分 */
.badge--disabled {
  background: var(--neutral-soft);
  border-color: var(--line);
  color: var(--text-2);
}

.badge--disabled .badge__icon {
  border: 2px solid var(--status-draft);
  border-radius: 50%;
}

.badge--disabled .badge__icon::before {
  content: "";
  position: absolute;
  width: 14px;
  height: 1.5px;
  background: var(--status-draft);
  transform: rotate(-45deg);
}

.app {
  display: grid;
  grid-template-columns: var(--sidebar-width) 1fr;
  grid-template-rows: var(--topbar-height) 1fr;
  grid-template-areas:
    "sidebar topbar"
    "sidebar content";
  min-height: 100vh;
}

.sidebar {
  grid-area: sidebar;
  width: var(--sidebar-width);
  background: var(--surface);
  border-right: 1px solid var(--line);
  padding: var(--space-4) var(--space-3);
  overflow-y: auto;
}

.sidebar__brand {
  display: block;
  padding: var(--space-2) var(--space-3) var(--space-4);
  font-size: var(--font-size-h3);
  font-weight: 700;
  color: var(--brand-700);
  letter-spacing: 0.5px;
}

.sidebar__group + .sidebar__group {
  margin-top: var(--space-4);
}

.sidebar__group-title {
  margin: 0;
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  letter-spacing: 1px;
}

.sidebar__list {
  margin: var(--space-1) 0 0;
  padding: 0;
  list-style: none;
}

.sidebar__link {
  display: block;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  color: var(--text-2);
}

.sidebar__link:hover {
  background: var(--bg);
  color: var(--text);
}

.sidebar__link.is-active {
  background: var(--brand-50);
  color: var(--brand-700);
  font-weight: 600;
}

.topbar {
  grid-area: topbar;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  height: var(--topbar-height);
  padding: 0 var(--space-6);
  background: var(--surface);
  border-bottom: 1px solid var(--line);
}

/* ---------- 全局搜索（US-057） ---------- */

.topbar__search {
  flex: 1 1 auto;
  display: flex;
  justify-content: center;
  min-width: 0;
}

.topbar__search.is-hidden {
  display: none;
}

.global-search {
  position: relative;
  width: 100%;
  max-width: 420px;
}

.global-search__input {
  width: 100%;
  height: 32px;
  background: var(--bg);
}

.global-search__panel {
  position: absolute;
  top: calc(100% + var(--space-2));
  left: 0;
  right: 0;
  z-index: 40;
  max-height: 460px;
  overflow-y: auto;
  padding: var(--space-2);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow-card-hover);
}

.global-search__group + .global-search__group {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
}

.global-search__group-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 0 0 var(--space-1);
  padding: 0 var(--space-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.global-search__group-count {
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}

.global-search__item {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-2);
  border-radius: var(--radius-sm);
}

.global-search__item:hover,
.global-search__item.is-active {
  background: var(--brand-50);
}

.global-search__item-body {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-width: 0;
}

.global-search__item-title {
  overflow: hidden;
  font-weight: 600;
  color: var(--text);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.global-search__item-sub {
  overflow: hidden;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.breadcrumb {
  display: flex;
  flex: none;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-body);
  color: var(--text-2);
}

.breadcrumb__sep {
  color: var(--text-3);
}

.breadcrumb__current {
  color: var(--text);
  font-weight: 600;
}

.topbar__meta {
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.topbar__right {
  display: flex;
  flex: none;
  align-items: center;
  gap: var(--space-4);
}

/* ---------- 角色切换 ---------- */

.role-switch {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-1);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg);
}

.role-switch__label {
  padding: 0 var(--space-2);
  font-size: var(--font-size-aux);
  color: var(--text-2);
  white-space: nowrap;
}

.role-switch__btn {
  padding: var(--space-1) var(--space-3);
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--text-2);
  font-family: inherit;
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.role-switch__btn:hover {
  color: var(--text);
}

.role-switch__btn.is-active {
  background: var(--surface);
  color: var(--brand-700);
  box-shadow: var(--shadow-card);
}

/* 学员端布局：侧栏只留「我的学习」，内容区居中收窄、隐藏教研侧指标 */
.app--learner .lamp {
  display: none;
}

.app--learner .sidebar {
  background: var(--brand-50);
}

.app--learner .content {
  width: 100%;
  max-width: 1120px;
  margin: 0 auto;
}

/* ---------- 一致性灯 ---------- */

.lamp {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  white-space: nowrap;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.lamp:hover {
  background: var(--bg);
}

.lamp__dot {
  position: relative;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--status-draft);
}

.lamp__count {
  font-variant-numeric: tabular-nums;
}

.lamp--ok {
  border-color: var(--status-aligned);
  color: var(--text);
}

.lamp--ok .lamp__dot {
  background: var(--status-aligned);
}

.lamp--warning {
  border-color: var(--status-review);
  color: var(--text);
}

.lamp--warning .lamp__dot {
  background: none;
  border: 2px solid var(--status-review);
  border-right-color: transparent;
  border-bottom-color: transparent;
}

.lamp--danger {
  border-color: var(--status-expired);
  color: var(--text);
}

.lamp--danger .lamp__dot {
  background: none;
  border: 1.5px solid var(--status-expired);
  color: var(--status-expired);
  font-size: var(--font-size-icon);
  font-weight: 700;
  line-height: 1;
}

.lamp--danger .lamp__dot::before {
  content: "!";
}

.content {
  grid-area: content;
  padding: var(--space-6);
  overflow-y: auto;
}

.content:focus {
  outline: none;
}

.page-title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h1);
  line-height: 1.3;
}

.page-subtitle {
  margin: 0 0 var(--space-6);
  color: var(--text-2);
}

.placeholder {
  padding: var(--space-8);
  color: var(--text-2);
}

.notfound {
  padding: var(--space-12) var(--space-8);
  text-align: center;
}

.notfound__code {
  margin: 0;
  font-family: var(--font-en);
  font-size: var(--font-size-display);
  font-weight: 700;
  color: var(--text-2);
}

.notfound__title {
  margin: var(--space-2) 0;
  font-size: var(--font-size-h2);
}

.notfound__hint {
  margin: 0 0 var(--space-6);
  color: var(--text-2);
}

/* ---------- 内联 SVG 图示 ---------- */

.diagram {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  overflow: hidden;
  font-family: var(--font);
}

/* ---------- 工作台 ---------- */

.dash-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  margin-bottom: var(--space-4);
}

.dash-summary__eyebrow {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.dash-summary__name {
  margin: var(--space-1) 0;
  font-size: var(--font-size-h2);
  line-height: 1.35;
}

.dash-summary__meta {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.dash-summary__counts {
  display: flex;
  gap: var(--space-8);
  margin: 0;
  padding: 0 var(--space-2);
}

.dash-summary__count {
  text-align: center;
}

.dash-summary__count dt {
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.dash-summary__count dd {
  margin: var(--space-1) 0 0;
  font-family: var(--font-en);
  font-size: var(--font-size-h2);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.dash-issues {
  margin-bottom: var(--space-4);
  border-left: 3px solid var(--danger);
}

.dash-issues--clear {
  border-left-color: var(--status-aligned);
}

.dash-issues__head {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  margin-bottom: var(--space-2);
}

.dash-issues__title {
  display: inline-flex;
  align-items: baseline;
  gap: var(--space-3);
  margin: 0;
  font-size: var(--font-size-h3);
}

.dash-issues__counts {
  display: inline-flex;
  gap: var(--space-3);
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.dash-issues__count b {
  font-family: var(--font-en);
  font-weight: 700;
}

.dash-issues__count--error b {
  color: var(--danger);
}

.dash-issues__count--warning b {
  color: var(--gold);
}

.dash-issues__more {
  margin-left: auto;
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--brand-700);
  text-decoration: none;
}

.dash-issues__more:hover {
  text-decoration: underline;
}

.dash-issues__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.dash-issues__row {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  text-decoration: none;
  color: inherit;
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.dash-issues__row:hover {
  border-color: var(--line);
  background: var(--bg);
}

.dash-issues__level,
.dash-issues__type {
  padding: 0 var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
}

.dash-issues__level {
  border: 1px solid var(--danger);
  background: var(--danger-soft);
  color: var(--danger);
}

.dash-issues__row--warning .dash-issues__level {
  border-color: var(--gold);
  background: var(--gold-soft);
  color: var(--gold);
}

.dash-issues__type {
  border: 1px solid var(--line);
  background: var(--neutral-soft);
  color: var(--text-2);
}

.dash-issues__message {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dash-issues__location {
  font-size: var(--font-size-aux);
  color: var(--text-2);
  white-space: nowrap;
}

.dash-issues__op {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--brand-700);
}

.dash-issues__rest,
.dash-issues__clear {
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.dash-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}

.dash-card {
  display: flex;
  flex-direction: column;
  height: 208px;
}

.dash-card__label {
  margin: 0;
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.dash-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 0;
}

.dash-card__hint {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  text-align: center;
}

.dash-metric {
  display: flex;
  align-items: baseline;
  gap: var(--space-1);
  margin: 0;
}

.dash-metric__value {
  font-family: var(--font-en);
  font-size: 36px;
  font-weight: 700;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.dash-metric__unit {
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.dash-metric__sub {
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.dash-ring {
  width: 100%;
  max-width: 168px;
  margin-bottom: var(--space-1);
}

.dash-ring__svg {
  display: block;
  width: 100%;
  height: auto;
}

.dash-clear {
  display: flex;
  align-items: center;
  gap: var(--space-8);
  padding: var(--space-6);
  border-color: var(--success);
  background: var(--success-soft);
}

.dash-clear__art {
  flex: none;
  width: 200px;
}

.dash-clear__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h3);
  color: var(--success);
}

.dash-clear__text {
  margin: 0 0 var(--space-4);
  color: var(--text-2);
}

.dash-head {
  display: inline-flex;
  align-items: center;
  gap: var(--space-4);
}

.dash-head__actions {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.dash-export-status {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  white-space: nowrap;
}

.dash-todo {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}

.dash-pending__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}

.dash-pending__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.dash-pending__count {
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.dash-pending__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.dash-pending__row {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  transition: background-color 0.15s ease, border-color 0.15s ease;
}

.dash-pending__row:hover {
  border-color: var(--line);
  background: var(--bg);
}

.dash-pending__type {
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
}

.dash-pending__id {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.dash-pending__label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dash-pending__op {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--brand-700);
}

.dash-pending__more {
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.dash-progress__row {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) 96px;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) 0;
}

.dash-progress__label {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.dash-progress__bar {
  display: block;
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--neutral-soft);
}

.dash-progress__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--status-aligned);
}

.dash-progress__value {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.dash-progress__ratio {
  margin-left: var(--space-1);
  font-weight: 400;
  color: var(--text-2);
}

/* ---------- 课程结构 ---------- */

.status-dot {
  position: relative;
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--status-aligned);
}

.status-dot--review {
  background: none;
  border: 2px solid var(--status-review);
  border-right-color: transparent;
  border-bottom-color: transparent;
}

.status-dot--draft {
  background: none;
  border: 2px solid var(--status-draft);
}

.status-dot--expired {
  background: none;
  border: 1.5px solid var(--status-expired);
  color: var(--status-expired);
  font-size: var(--font-size-icon);
  font-weight: 700;
  line-height: 1;
}

.status-dot--expired::before {
  content: "!";
}

.status-dot--none {
  background: none;
  border: 1px dashed var(--text-3);
}

.structure-layout {
  display: grid;
  grid-template-columns: 320px minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
}

.structure-tree {
  position: sticky;
  top: 0;
  max-height: calc(100vh - var(--topbar-height) - var(--space-12));
  overflow-y: auto;
  padding: var(--space-3);
}

.tree,
.tree__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.tree__list {
  margin-left: var(--space-3);
  padding-left: var(--space-2);
  border-left: 1px solid var(--line);
}

.tree__row {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  border-radius: var(--radius-sm);
}

.tree__row:hover {
  background: var(--bg);
}

.tree__row.is-active {
  background: var(--brand-50);
}

.tree__toggle {
  flex: none;
  width: 24px;
  color: var(--text-2);
  text-align: center;
  font-size: var(--font-size-aux);
  line-height: 32px;
}

.tree__label {
  display: flex;
  flex: 1;
  min-width: 0;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-2) var(--space-2) 0;
}

.tree__label--module {
  font-weight: 600;
}

.tree__row--module {
  align-items: center;
  padding: var(--space-1) 0;
}

.tree__row--kp {
  gap: var(--space-2);
  padding: var(--space-2) var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.tree__row--kp .tree__name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tree__name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tree__row.is-active .tree__name {
  color: var(--brand-700);
  font-weight: 600;
}

.tree__meta {
  flex: none;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 400;
}

.tree__empty {
  padding: var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.chapter-detail {
  padding: var(--space-6);
}

.chapter-detail__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-6);
  margin-bottom: var(--space-6);
}

.chapter-detail__crumb {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.chapter-detail__title {
  margin: var(--space-1) 0 var(--space-3);
  font-size: var(--font-size-h2);
}

.chapter-detail__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-6);
  margin: 0;
}

.chapter-detail__meta div {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.chapter-detail__meta dt {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.chapter-detail__meta dd {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin: 0;
}

.chapter-detail__publish {
  flex: none;
  text-align: right;
}

.chapter-detail__hint {
  margin: var(--space-2) 0 0;
  max-width: 240px;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.quad-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.quad-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--bg);
}

.quad-card__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  margin: 0;
  font-size: var(--font-size-h3);
}

.quad-card__status {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.quad-card__count {
  margin: 0;
  color: var(--text-2);
}

.quad-card__edit {
  align-self: flex-start;
}

.chapter-detail__summary {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin: var(--space-6) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* ---------- 一致性中心 ---------- */

.page-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-2);
}

.page-head .page-title {
  margin: 0;
}

.pill-group {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
  transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.pill:hover {
  background: var(--bg);
  color: var(--text);
}

.pill.is-active {
  border-color: var(--brand-500);
  background: var(--brand-50);
  color: var(--brand-700);
}

.pill--error {
  color: var(--danger);
}

.pill--error.is-active {
  border-color: var(--danger);
  background: var(--danger-soft);
  color: var(--danger);
}

.pill--warning {
  color: var(--gold);
}

.pill--warning.is-active {
  border-color: var(--gold);
  background: var(--gold-soft);
  color: var(--text);
}

.pill__count {
  font-variant-numeric: tabular-nums;
  opacity: 0.8;
}

.filter-bar {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-6);
}

.filter-bar__label {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.filter-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
}

.filter-tags--locator {
  margin-bottom: var(--space-3);
}

.pill--filter {
  border-color: var(--brand-500);
  background: var(--brand-50);
  color: var(--brand-700);
}

.filter-tags__clear {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.filter-tags__clear:hover {
  color: var(--text);
  text-decoration: underline;
}

.issue-section + .issue-section {
  margin-top: var(--space-6);
}

.issue-section__title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  font-size: var(--font-size-h3);
}

.issue-section__count {
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--neutral-soft);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.issue-section__empty {
  margin: 0;
  color: var(--text-2);
}

.issue-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.issue-row {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-4) var(--space-4) var(--space-6);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-card);
  cursor: pointer;
  transition: box-shadow 0.18s ease;
}

.issue-row:hover {
  box-shadow: var(--shadow-card-hover);
}

.issue-row.is-highlight {
  border-color: var(--brand-500);
  background: var(--brand-50);
  box-shadow: 0 0 0 3px var(--brand-50), var(--shadow-card-hover);
  scroll-margin-block: 96px;
}

.issue-row__bar {
  position: absolute;
  top: var(--space-3);
  bottom: var(--space-3);
  left: var(--space-3);
  width: 4px;
  border-radius: 999px;
}

.issue-row--error .issue-row__bar {
  background: var(--danger);
}

.issue-row--warning .issue-row__bar {
  background: var(--gold);
}

.issue-row__body {
  flex: 1;
  min-width: 0;
}

.issue-row__head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-1);
}

.issue-row__level {
  padding: 0 var(--space-2);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-aux);
  font-weight: 700;
}

.issue-row--error .issue-row__level {
  background: var(--danger-soft);
  color: var(--danger);
}

.issue-row--warning .issue-row__level {
  background: var(--gold-soft);
  color: var(--text);
}

.issue-row__type {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.issue-row__message {
  margin: 0 0 var(--space-2);
  font-weight: 600;
}

.issue-row__jump {
  display: inline-block;
  margin-top: var(--space-2);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.issue-row__jump:hover {
  text-decoration: underline;
}

.issue-row__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-6);
  margin: 0;
}

.issue-row__meta div {
  display: flex;
  gap: var(--space-2);
}

.issue-row__meta dt {
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.issue-row__meta dd {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text);
}

.issue-row__actions {
  display: flex;
  flex: none;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}

.empty-state {
  padding: var(--space-12) var(--space-8);
  text-align: center;
}

.empty-state__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border: 2px solid var(--status-aligned);
  border-radius: 50%;
  color: var(--status-aligned);
  font-size: var(--font-size-h3);
  font-weight: 700;
}

.empty-state__icon::before {
  content: "✓";
}

/* 「还没有内容」与「检查通过」共用组件但语义相反：前者虚线空环 + 加号 */
.empty-state__icon[data-tone="empty"] {
  border-style: dashed;
  border-color: var(--text-2);
  color: var(--text-2);
}

.empty-state__icon[data-tone="empty"]::before {
  content: "+";
}

.empty-state--compact {
  padding: var(--space-6) var(--space-4);
  border: 1px dashed var(--line);
  background: transparent;
}

.empty-state--compact .empty-state__title {
  margin-top: var(--space-2);
  font-size: var(--font-size-h3);
}

.empty-state--compact .empty-state__text {
  margin-bottom: var(--space-4);
  font-size: var(--font-size-aux);
}

.empty-state__title {
  margin: var(--space-3) 0 var(--space-2);
  font-size: var(--font-size-h2);
}

.empty-state__text {
  margin: 0 auto var(--space-6);
  max-width: 480px;
  color: var(--text-2);
}

.empty-state__text:last-child {
  margin-bottom: 0;
}

/* ---------- 知识点库 ---------- */

.page-subtitle--tight {
  margin-bottom: 0;
}

.kp-toolbar {
  position: sticky;
  top: 0;
  z-index: 5;
  margin: 0 calc(var(--space-6) * -1) var(--space-4);
  padding: var(--space-3) var(--space-6);
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}

.kp-toolbar__row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
}

.kp-filter .select {
  max-width: 128px;
}

.kp-toolbar__row + .kp-toolbar__row {
  margin-top: var(--space-3);
}

.kp-toolbar__count {
  margin-left: auto;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.kp-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.input {
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-body);
}

.input::placeholder {
  color: var(--text-2);
}

.input:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
  border-color: var(--brand-500);
}

.kp-search {
  flex: 1 1 200px;
  max-width: 260px;
}

.view-toggle {
  display: inline-flex;
  padding: var(--space-1);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.view-toggle__btn {
  padding: var(--space-1) var(--space-3);
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text-2);
  font-family: inherit;
  font-size: var(--font-size-aux);
  font-weight: 600;
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.view-toggle__btn:hover {
  color: var(--text);
}

.view-toggle__btn.is-active {
  background: var(--brand-50);
  color: var(--brand-700);
}

.empty-state__actions {
  display: flex;
  justify-content: center;
  gap: var(--space-2);
}

.kp-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.kp-list__row {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-sm);
}

.kp-list__row:hover,
.kp-list__row:focus-within {
  border-color: var(--brand-500);
}

.kp-list__id {
  flex: none;
  width: 64px;
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.kp-list__main {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  min-width: 0;
}

.kp-list__name {
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kp-list__name:hover {
  color: var(--brand-700);
}

.kp-list__one-liner {
  font-size: var(--font-size-aux);
  color: var(--text-2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kp-list__chapter {
  flex: none;
  width: 96px;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kp-list__cell {
  flex: none;
  width: 56px;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  text-align: center;
}

.kp-list__refs {
  flex: none;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  white-space: nowrap;
}

.kp-list__refs:hover {
  color: var(--brand-700);
  text-decoration: underline;
}

.kp-list__coverage {
  flex: none;
  width: 56px;
  font-size: var(--font-size-aux);
  font-weight: 600;
  text-align: center;
}

.kp-list__coverage.is-covered {
  color: var(--status-aligned);
}

.kp-list__coverage.is-uncovered {
  color: var(--status-review);
}

.kp-list__actions {
  display: flex;
  flex: none;
  gap: var(--space-2);
}

.kp-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-4);
}

.kp-sort {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.select {
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-aux);
}

.select:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.kp-card {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 280px;
  padding: var(--space-4);
}

.kp-card:hover,
.kp-card:focus-within {
  border-color: var(--brand-500);
}

.kp-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-height: 0;
  border-radius: var(--radius-sm);
}

.kp-card__body:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 4px;
}

.kp-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.kp-card__tags {
  display: flex;
  flex: none;
  align-items: center;
  gap: var(--space-1);
}

/* 覆盖徽章与覆盖分析同源（Core.kpReferences 的 questions 项），0 题用错误色 */
.kp-card__coverage {
  padding: 1px var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--success-soft);
  border-color: var(--success);
  color: var(--status-aligned);
  font-size: var(--font-size-aux);
  font-weight: 600;
  line-height: 1.6;
  white-space: nowrap;
}

.kp-card__coverage.is-uncovered {
  background: var(--danger-soft);
  border-color: var(--danger);
  color: var(--status-expired);
}

.kp-card__id {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.kp-card__name {
  margin: 0 0 var(--space-1);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.kp-card__one-liner {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  margin: 0 0 var(--space-3);
  overflow: hidden;
  font-size: 13px;
  line-height: 1.6;
  color: var(--text-2);
}

.kp-card__diagram {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 96px;
  margin-bottom: var(--space-3);
  padding: var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
  overflow: hidden;
}

.kp-card__diagram svg {
  width: 100%;
  height: 100%;
}

.kp-card__diagram--empty {
  border-style: dashed;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.kp-card__actions {
  position: absolute;
  right: var(--space-3);
  bottom: 40px;
  display: flex;
  gap: var(--space-2);
  padding: var(--space-1);
  border-radius: var(--radius-sm);
  background: var(--surface);
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.15s ease;
}

.kp-card:hover .kp-card__actions,
.kp-card:focus-within .kp-card__actions {
  visibility: visible;
  opacity: 1;
}

.btn--sm {
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-aux);
}

.kp-card__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  margin-top: auto;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-card__chapter {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.kp-card__weight {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.kp-card__refs {
  flex: none;
  color: var(--brand-700);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.kp-card__refs:hover {
  text-decoration: underline;
}

/* ---------- 知识点详情 ---------- */

.kp-detail {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
  align-items: start;
  gap: var(--space-6);
}

.kp-detail__main,
.kp-detail__aside {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
}

.kp-detail__aside {
  position: sticky;
  top: var(--space-6);
  /* 五张卡总高度可能超过一屏，右栏独立滚动，否则底部版本历史被裁掉 */
  max-height: calc(100vh - var(--space-6) * 2);
  overflow-y: auto;
  padding-right: var(--space-1);
}

.kp-detail__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-6);
}

.kp-detail__head-main {
  min-width: 0;
}

.kp-detail__head-top {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.kp-detail__id {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

.kp-detail__version {
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.kp-detail__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h1);
  line-height: 1.3;
}

.kp-detail__en {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-detail__meta {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-detail__head-actions {
  display: flex;
  flex: none;
  align-items: center;
  gap: var(--space-2);
}

.kp-detail__status {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-3);
}

.btn--danger-text {
  color: var(--danger);
}

.btn--danger {
  background: var(--danger);
  border-color: var(--danger);
  color: var(--surface);
}

.btn--danger:hover:not(:disabled) {
  border-color: color-mix(in srgb, var(--danger) 82%, var(--text));
  background: color-mix(in srgb, var(--danger) 82%, var(--text));
}

/* 删除确认弹窗（US-070）：标题下先亮出 id 与名称，被引用时只列影响面不给删除 */
.modal__panel.kp-delete__panel {
  width: min(560px, 100%);
  gap: var(--space-3);
}

.kp-delete__target {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0;
}

.kp-delete__id {
  padding: 0 var(--space-2);
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  color: var(--text-2);
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: var(--font-size-aux);
}

.kp-delete__name {
  color: var(--text);
  font-size: var(--font-size-h3);
  font-weight: 600;
}

.kp-delete .kp-impact__group {
  padding: var(--space-2) var(--space-3);
}

.kp-delete .kp-impact__id {
  text-decoration: none;
}

.kp-delete .kp-impact__id:hover {
  border-color: var(--brand-500);
  color: var(--brand-700);
}

.kp-delete .kp-impact__id:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.kp-detail__card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.kp-detail__card-title {
  margin: 0 0 var(--space-3);
  font-size: var(--font-size-h3);
  line-height: 1.4;
}

.kp-detail__card-head .kp-detail__card-title {
  margin: 0;
}

.kp-detail__tag {
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.kp-detail__one-liner {
  margin: 0;
  padding: var(--space-3) var(--space-4);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius-sm);
  background: var(--bg);
  font-size: var(--font-size-h3);
  line-height: 1.6;
}

.kp-detail__copy-status {
  min-height: 18px;
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  opacity: 0;
  transition: opacity 0.15s ease;
}

.kp-detail__copy-status.is-visible {
  opacity: 1;
}

.kp-detail__definition {
  margin: 0;
  line-height: 1.8;
}

.kp-detail__empty-line {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.kp-params {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-body);
}

.kp-params th,
.kp-params td {
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.kp-params thead th {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  background: var(--bg);
}

.kp-params tbody tr:last-child th,
.kp-params tbody tr:last-child td {
  border-bottom: none;
}

.kp-params tbody th {
  font-weight: 600;
}

.kp-params__value {
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  white-space: nowrap;
}

/* ---------- 知识点编辑态 ---------- */

/* 新建知识点表单（US-069）：单栏限宽，双列只用于短字段 */

.kp-new {
  max-width: 880px;
  margin-top: var(--space-4);
}

.kp-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-6);
}

.kp-form__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.kp-form__grid--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.kp-form__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.kp-form__label {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.kp-form__required {
  margin-left: var(--space-1);
  color: var(--danger);
}

.kp-form__textarea {
  width: 100%;
  padding: var(--space-3);
  line-height: 1.7;
  resize: vertical;
}

.kp-form__textarea--tall {
  min-height: 160px;
}

.kp-form__checks {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
}

.kp-form__check-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  flex-basis: 100%;
}

.kp-form__check-title {
  min-width: 180px;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-form__check {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--font-size-body);
  cursor: pointer;
}

.kp-form__hint {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-form__error {
  margin: 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.kp-form__error[hidden] {
  display: none;
}

.kp-form__field .input[aria-invalid="true"] {
  border-color: var(--danger);
}

.kp-form__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  padding-top: var(--space-2);
  border-top: 1px solid var(--line);
}

.kp-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.kp-field__label {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.kp-field__textarea {
  width: 100%;
  padding: var(--space-3);
  line-height: 1.7;
  resize: vertical;
}

.kp-field__textarea--tall {
  min-height: 160px;
}

.kp-params--edit td {
  padding: var(--space-1) var(--space-2);
}

.kp-field__cell {
  width: 100%;
  padding: var(--space-1) var(--space-2);
}

.kp-field__cell--num {
  min-width: 88px;
  font-variant-numeric: tabular-nums;
}

.kp-detail__diagram {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 200px;
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.kp-detail__diagram svg {
  width: 100%;
  max-width: 560px;
  height: auto;
}

.kp-detail__diagram--empty {
  border-style: dashed;
  background: var(--neutral-soft);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.misconception {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3);
}

.misconception + .misconception {
  margin-top: var(--space-3);
}

.misconception__col {
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.misconception__col--wrong {
  border-color: color-mix(in srgb, var(--danger) 32%, var(--line));
  background: var(--danger-soft);
}

.misconception__col--right {
  border-color: color-mix(in srgb, var(--success) 32%, var(--line));
  background: var(--success-soft);
}

.misconception__label {
  display: block;
  margin-bottom: var(--space-1);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.misconception__text {
  margin: 0;
  line-height: 1.7;
}

.kp-case {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.kp-case + .kp-case {
  margin-top: var(--space-3);
}

.kp-case__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-body);
  font-weight: 600;
}

.kp-case__text {
  margin: 0;
  line-height: 1.7;
}

.kp-case__source {
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-sources {
  margin: 0;
  padding-left: var(--space-4);
}

.kp-sources li {
  margin-bottom: var(--space-1);
}

.kp-sources__doc {
  font-weight: 600;
}

.kp-sources__page,
.kp-sources__note {
  margin-left: var(--space-2);
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

/* ---------- 知识点详情：右栏 ---------- */

.kp-relations__chart {
  display: block;
  width: 320px;
  max-width: 100%;
  height: auto;
  margin: 0 auto var(--space-3);
  overflow: visible;
}

.kp-relations__node {
  cursor: pointer;
  transition: fill 0.15s ease, stroke-width 0.15s ease;
}

.kp-relations__nodes a,
.kp-relations__nodes a text {
  cursor: pointer;
}

.kp-relations__nodes a:hover .kp-relations__node,
.kp-relations__nodes a:focus-visible .kp-relations__node {
  fill: var(--brand-50);
  stroke-width: 2.5;
}

.kp-relations__nodes a {
  outline: none;
}

.kp-relations__nodes a:focus-visible .kp-relations__node {
  stroke: var(--brand-900);
  stroke-width: 2.5;
}

.kp-relations__legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  margin: 0 0 var(--space-2);
  padding: 0;
  list-style: none;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-relations__legend-item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}

.kp-relations__swatch {
  width: 24px;
  height: 8px;
  flex: none;
}

.kp-relations__hint {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

/* 关系编辑弹窗（US-072）：列表不受图谱 8 个节点的展示上限限制 */

.kp-relations__head-actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.modal__panel.kp-rel-modal {
  width: min(640px, 100%);
  gap: var(--space-3);
}

.kp-rel-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  max-height: 40vh;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  list-style: none;
}

.kp-rel-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.kp-rel-row--empty {
  display: block;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.kp-rel-row__type {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  white-space: nowrap;
}

.kp-rel-row__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.kp-rel-row__target {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  min-width: 0;
}

.kp-rel-row__id {
  flex: none;
  color: var(--text-2);
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: var(--font-size-aux);
}

.kp-rel-row__name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.kp-rel-row .btn--danger-text:hover:not(:disabled) {
  background: color-mix(in srgb, var(--danger) 8%, var(--surface));
}

.kp-rel-form {
  display: flex;
  align-items: flex-end;
  gap: var(--space-2);
  padding-top: var(--space-2);
  border-top: 1px solid var(--line);
}

.kp-rel-form__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  flex: none;
}

.kp-rel-form__field--grow {
  flex: 1 1 auto;
  min-width: 0;
}

.kp-rel-form__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.kp-rel-error {
  margin: 0;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--danger) 10%, var(--surface));
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.kp-rel-error[hidden] {
  display: none;
}

/* 元信息编辑弹窗（US-085）：面板收窄，表单去掉卡片内边距直接铺在弹窗里 */
.modal__panel.kp-meta-modal {
  width: min(720px, 100%);
  gap: var(--space-3);
}

.kp-meta-form {
  gap: var(--space-3);
  padding: 0;
}

.kp-facts {
  margin: 0;
}

.kp-facts__row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--line);
}

.kp-facts__row:last-child {
  border-bottom: none;
}

.kp-facts dt {
  flex: none;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-facts dd {
  margin: 0;
  font-size: var(--font-size-body);
  font-weight: 600;
  text-align: right;
  word-break: break-word;
}

.kp-term-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.kp-term-list li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--line);
}

.kp-term-list li:last-child {
  border-bottom: none;
}

.kp-term-list__name {
  font-weight: 600;
}

.kp-term-list__en {
  font-size: var(--font-size-aux);
  color: var(--text-2);
  text-align: right;
  word-break: break-word;
}

.kp-refs {
  margin: 0 0 var(--space-3);
  padding: 0;
  list-style: none;
}

.kp-refs__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  color: var(--text);
}

.kp-refs li + li .kp-refs__row {
  margin-top: var(--space-2);
}

.kp-refs__row:hover {
  border-color: var(--brand-700);
  background: var(--brand-50);
}

.kp-refs__label {
  font-size: var(--font-size-body);
}

.kp-refs__count {
  min-width: 24px;
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--bg);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  text-align: center;
}

.kp-refs__impact {
  width: 100%;
}

.kp-history__current {
  margin-bottom: var(--space-2);
}

.kp-history {
  margin: 0;
  padding: 0;
  list-style: none;
}

.kp-history__item {
  padding: var(--space-3) 0;
  border-top: 1px solid var(--line);
}

.kp-history__head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.kp-history__version {
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: var(--font-size-aux);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.kp-history__time {
  flex: 1;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.kp-history__toggle {
  flex: none;
  padding: 0;
}

.kp-history__editor {
  margin: var(--space-1) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.kp-history__summary {
  margin: var(--space-1) 0 0;
  font-size: var(--font-size-body);
  line-height: 1.6;
}

.kp-history__diff {
  margin-top: var(--space-3);
  padding: var(--space-3);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.kp-diff__row + .kp-diff__row {
  margin-top: var(--space-3);
}

.kp-diff__label {
  display: block;
  margin-bottom: var(--space-1);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.kp-diff__old,
.kp-diff__new {
  margin: 0;
  font-size: var(--font-size-aux);
  line-height: 1.6;
  word-break: break-word;
}

.kp-diff__new {
  margin-top: var(--space-1);
}

.kp-diff__tag {
  margin-right: var(--space-2);
  font-variant-numeric: tabular-nums;
  color: var(--text-2);
}

.kp-impact__group {
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.kp-impact__title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h3);
}

.kp-impact__count {
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.kp-impact__ids {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.kp-impact__id {
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

/* ---------- 弹窗 ---------- */

.modal[hidden] {
  display: none;
}

.modal__panel--narrow {
  width: min(480px, 100%);
}

.modal {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-8);
}

.modal__backdrop {
  position: absolute;
  inset: 0;
  background: color-mix(in srgb, var(--brand-900) 48%, transparent);
}

.modal__panel {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  width: min(960px, 100%);
  max-height: 100%;
  overflow-y: auto;
  padding: var(--space-6);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-card-hover);
}

.modal__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.modal__title {
  margin: 0;
  font-size: var(--font-size-h2);
}

.modal__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--radius-sm);
  color: var(--text-2);
  font-size: var(--font-size-h2);
  line-height: 1;
}

.modal__close:hover {
  background: var(--bg);
  color: var(--text);
}

.modal__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
}

.diff-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
}

/* ---------- 一致性阻断弹窗（Components.gateDialog） ---------- */

.gate-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  max-height: 46vh;
  overflow-y: auto;
  margin: 0;
  padding: 0 var(--space-1) 0 0;
  list-style: none;
}

.gate-issue {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-left: 3px solid var(--danger);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.gate-issue__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  min-width: 0;
}

.gate-issue__type {
  align-self: flex-start;
  padding: 0 var(--space-2);
  border: 1px solid var(--danger);
  border-radius: var(--radius-sm);
  background: var(--danger-soft);
  color: var(--danger);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.gate-issue__message {
  margin: 0;
}

.gate-issue__location {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.gate-issue__label {
  margin-right: var(--space-1);
  font-weight: 600;
}

.gate-issue__action {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.gate-issue__link {
  flex: none;
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--brand-700);
  white-space: nowrap;
}

.gate-issue__link:hover {
  text-decoration: underline;
}

.gate-empty {
  margin: 0;
  color: var(--text-2);
}

.diff-col {
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.diff-col--new {
  border-color: var(--accent);
  background: color-mix(in srgb, var(--accent) 8%, var(--surface));
}

.diff-col__title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.diff-col__text {
  margin: 0;
  font-family: var(--font);
  font-size: var(--font-size-body);
  line-height: 1.7;
  white-space: pre-wrap;
  word-break: break-word;
}

.diff-note {
  margin: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

/* ---------- 术语表 ---------- */

.term-toolbar {
  justify-content: space-between;
}

.term-table {
  width: 100%;
  border-collapse: collapse;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-card);
  overflow: hidden;
  font-size: var(--font-size-body);
}

.term-table th,
.term-table td {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.term-table thead th {
  background: var(--bg);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  white-space: nowrap;
}

.term-table tbody tr:last-child td {
  border-bottom: none;
}

.term-table tbody tr:hover {
  background: var(--brand-50);
}

/* 全局搜索跳转定位：与一致性中心的命中行同一套高亮语义 */
.term-table tbody tr.is-highlight {
  background: var(--brand-50);
  box-shadow: inset 3px 0 0 var(--brand-500);
  scroll-margin-block: 96px;
}

.term-standard {
  display: block;
  font-weight: 600;
}

.term-id {
  display: block;
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.term-en {
  color: var(--text-2);
}

.term-usage {
  min-width: 220px;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.term-aliases,
.term-kps {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
}

.term-alias {
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.term-kp {
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: var(--font-size-aux);
  color: var(--brand-700);
}

.term-kp:hover {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.term-hit-cell {
  text-align: right;
}

.term-hit {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  min-width: 32px;
  justify-content: flex-end;
  font-variant-numeric: tabular-nums;
  color: var(--text-2);
}

.term-hit--warn {
  padding: 0 var(--space-2);
  border: 1px solid var(--status-review);
  border-radius: 999px;
  background: var(--gold-soft);
  color: var(--text);
  font-weight: 600;
}

.term-hit--warn:hover {
  border-color: var(--text);
}

.term-hit__dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--status-review);
}

.term-actions {
  white-space: nowrap;
}

.term-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.term-form__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.term-form__label {
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.term-form__required {
  color: var(--danger);
}

.term-form__standard {
  margin: 0;
  font-size: var(--font-size-body);
}

.term-form__textarea {
  min-height: 72px;
  resize: vertical;
  line-height: 1.7;
}

.term-form__error {
  margin: 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.term-form__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}


/* ---------- 讲义工作区 ---------- */

.handbook-layout {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr) 300px;
  gap: var(--space-4);
  align-items: start;
}

.handbook-tree,
.handbook-refs {
  position: sticky;
  top: 0;
  max-height: calc(100vh - var(--topbar-height) - var(--space-12));
  overflow-y: auto;
  padding: var(--space-3);
}

.handbook-tree .tree__row--module {
  padding: var(--space-2) var(--space-2) 0;
}

.handbook-tree__chapter {
  gap: var(--space-2);
  padding: var(--space-2);
}

.handbook-tree__chapter .tree__name {
  flex: 1;
  font-size: var(--font-size-aux);
}

.handbook-main {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: var(--space-4);
}

.handbook-head {
  padding: var(--space-4) var(--space-6);
}

.handbook-head__crumb {
  margin: 0 0 var(--space-1);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.handbook-head__title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h2);
  line-height: 1.35;
}

.handbook-head__meta {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.handbook-paras {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.hb-para {
  padding: var(--space-4) var(--space-6);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.hb-para:hover {
  box-shadow: var(--shadow-card-hover);
}

.hb-para.is-selected {
  border-color: var(--brand-500);
  box-shadow: 0 0 0 1px var(--brand-500) inset;
}

.hb-para--expired {
  background: var(--danger-soft);
  border-color: color-mix(in srgb, var(--status-expired) 35%, var(--line));
}

.hb-para__alert {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  column-gap: var(--space-2);
  row-gap: var(--space-2);
  margin: calc(var(--space-4) * -1) calc(var(--space-6) * -1) var(--space-4);
  padding: var(--space-2) var(--space-6);
  border-bottom: 1px solid color-mix(in srgb, var(--status-expired) 25%, transparent);
  color: var(--danger);
  font-size: var(--font-size-aux);
  line-height: 1.5;
}

.hb-para__alert-icon {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-top: 1px;
  border: 1.5px solid var(--status-expired);
  border-radius: 50%;
  font-size: var(--font-size-icon);
  font-weight: 700;
  line-height: 1;
}

.hb-para__alert-body {
  flex: 1 1 200px;
  min-width: 0;
}

.hb-para__alert-actions {
  display: inline-flex;
  grid-column: 1 / -1;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-2);
}

.hb-diff {
  margin-bottom: var(--space-3);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

/* 中栏只有约 550px 宽，新旧两栏改为上下排列，避免每行只剩七八个字 */
.hb-diff__cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-3);
}

.hb-diff__col {
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.hb-diff__col--new {
  border-color: color-mix(in srgb, var(--brand-500) 35%, var(--line));
  background: var(--brand-50);
}

.hb-diff__title {
  margin: 0 0 var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.hb-diff__text {
  margin: 0;
  font-size: var(--font-size-body);
  line-height: 1.8;
}

.hb-diff__mark {
  padding: 0 2px;
  border-radius: 2px;
  font-weight: 600;
}

.hb-diff__mark--added {
  background: var(--success-soft);
  color: var(--success);
}

.hb-diff__mark--removed {
  background: var(--danger-soft);
  color: var(--danger);
  text-decoration: line-through;
}

.hb-diff__keywords {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-3) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.hb-diff__group {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
}

.hb-diff__kw {
  padding: 0 var(--space-2);
  border-radius: 999px;
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.hb-diff__kw--added {
  background: var(--success-soft);
  color: var(--success);
}

.hb-diff__kw--removed {
  background: var(--danger-soft);
  color: var(--danger);
}

.hb-diff__none {
  color: var(--text-2);
}

.hb-regen {
  margin-bottom: var(--space-3);
  padding: var(--space-3);
  border: 1px solid color-mix(in srgb, var(--status-review) 35%, var(--line));
  border-radius: var(--radius-sm);
  background: var(--gold-soft);
}

.hb-regen__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.hb-regen__title {
  font-weight: 600;
}

.hb-regen__hint {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.hb-regen__preview {
  margin: 0 0 var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  background: var(--surface);
  line-height: 1.8;
  white-space: pre-wrap;
}

.hb-regen__label {
  display: block;
  margin-bottom: var(--space-1);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.hb-regen__textarea {
  display: block;
  width: 100%;
  margin-bottom: var(--space-3);
  padding: var(--space-2) var(--space-3);
  line-height: 1.8;
  resize: vertical;
}

.hb-regen__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.hb-para__head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.hb-para__no {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--space-1);
  border-radius: var(--radius-sm);
  background: var(--brand-50);
  color: var(--brand-700);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
}

.hb-para__id {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
}

.hb-para__head .badge {
  margin-left: auto;
}

.hb-para__text {
  margin: 0 0 var(--space-3);
  line-height: 1.8;
  cursor: text;
}

.hb-para__text:hover {
  color: var(--brand-700);
}

.hb-para__editor {
  margin: 0 0 var(--space-3);
}

/* 编辑框与正文同宽同字体：宽度由块级元素撑满，不用 textarea 默认 cols */
.hb-para__textarea {
  display: block;
  width: 100%;
  min-height: 96px;
  margin: 0;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--brand-500);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-body);
  line-height: 1.8;
  resize: vertical;
}

.hb-para__textarea:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.hb-para__textarea[aria-invalid="true"] {
  border-color: var(--danger);
}

.hb-para__editor-error {
  margin: var(--space-2) 0 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.hb-para__editor-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  margin-top: var(--space-2);
}

.hb-para__refs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2);
}

.hb-para__refs-label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.hb-para__chip {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-1) var(--space-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  font-size: var(--font-size-aux);
  transition: border-color 0.15s ease, color 0.15s ease;
}

.hb-para__chip:hover {
  border-color: var(--brand-500);
  color: var(--brand-700);
}

.hb-para__chip-id {
  color: var(--text-2);
  font-family: var(--font-en);
}

.hb-para__chip--stale {
  border-color: color-mix(in srgb, var(--status-expired) 45%, var(--line));
}

.hb-para__chip-flag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 12px;
  border: 1px solid var(--status-expired);
  border-radius: 50%;
  color: var(--danger);
  font-size: var(--font-size-icon);
  font-weight: 700;
  line-height: 1;
}

.hb-para__noref,
.handbook-refs__empty {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.hb-para__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-2);
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
}

.status-actions {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.status-actions__none {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.handbook-refs__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.handbook-refs__entry {
  margin: var(--space-1) 0 var(--space-3);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-family: var(--font-en);
}

.handbook-refs__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.handbook-refs__item {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.handbook-refs__item--stale {
  border-color: var(--status-expired);
  background: var(--danger-soft);
}

.handbook-refs__heading {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.handbook-refs__summary {
  display: -webkit-box;
  overflow: hidden;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.handbook-refs__params {
  display: -webkit-box;
  overflow: hidden;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.handbook-refs__versions {
  display: flex;
  gap: var(--space-3);
}

.handbook-refs__version {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
}

.handbook-refs__item--stale .handbook-refs__version:last-child {
  color: var(--danger);
  font-weight: 600;
}

.handbook-refs__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
}

.handbook-refs__picker {
  margin-top: var(--space-4);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
}

.handbook-refs__picker-label {
  display: block;
  margin-bottom: var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.handbook-refs__picker-input {
  width: 100%;
}

.handbook-refs__results {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: var(--space-2) 0 0;
  padding: 0;
  list-style: none;
}

.handbook-refs__result {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.handbook-refs__result-name {
  overflow: hidden;
  font-size: var(--font-size-aux);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.handbook-refs__link {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
}

.handbook-refs__link:hover .handbook-refs__name {
  color: var(--brand-700);
}

.handbook-refs__id {
  flex: none;
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  white-space: nowrap;
}

.handbook-refs__name {
  overflow: hidden;
  min-width: 0;
  flex: 1;
  font-size: var(--font-size-body);
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.handbook-refs__badge {
  flex: none;
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--danger-soft);
  color: var(--danger);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.handbook-refs__hint {
  margin: var(--space-3) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* ---------- 讲义工具条（US-022b） ---------- */

.handbook-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-2) var(--space-4);
  margin-bottom: var(--space-4);
  padding: var(--space-3) var(--space-4);
}

.handbook-toolbar__actions {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.handbook-toolbar__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.handbook-toolbar__notice {
  flex-basis: 100%;
  margin: 0;
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.handbook-gen-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  max-height: 240px;
  margin: 0;
  padding: 0;
  overflow-y: auto;
  list-style: none;
}

.handbook-gen-item {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.handbook-gen-item--empty {
  color: var(--text-2);
  border-style: dashed;
}

.handbook-gen-item__id {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
}

.handbook-gen-item__name {
  font-weight: 600;
}

/* ---------- 学员端：我的学习（US-053） ---------- */

.learn-home {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.learn-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 168px;
  align-items: center;
  gap: var(--space-6);
  padding: var(--space-6);
}

.learn-hero__eyebrow {
  margin: 0 0 var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  letter-spacing: 0.02em;
}

.learn-hero__title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h1);
  line-height: 1.3;
}

.learn-hero__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-body);
}

.learn-hero__ring {
  width: 168px;
}

.learn-hero__svg {
  display: block;
  width: 100%;
  height: auto;
}

.learn-section {
  padding: var(--space-6);
}

.learn-section__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}

.learn-section__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.learn-section__hint {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
}

.learn-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  box-shadow: none;
}

.learn-card:hover {
  box-shadow: var(--shadow-card-hover);
}

.learn-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
}

.learn-card__time {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  white-space: nowrap;
}

.learn-card__title {
  margin: 0;
  font-size: var(--font-size-h3);
  line-height: 1.4;
}

.learn-card__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-card__actions {
  margin-top: auto;
  padding-top: var(--space-2);
}

.learn-weeks {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* 学员端「我的成绩」列表（US-088） */
.learn-results {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.learn-results__item {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.learn-results__link {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-4);
  border-radius: var(--radius-sm);
  color: inherit;
  text-decoration: none;
}

.learn-results__link:hover {
  background: var(--brand-50);
}

.learn-results__link:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.learn-results__main {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.learn-results__name {
  font-weight: 600;
}

.learn-results__meta {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-results__score {
  font-family: var(--font-en);
  font-size: var(--font-size-h3);
  font-weight: 600;
  white-space: nowrap;
}

.learn-results__total {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 400;
}

.learn-week {
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.learn-week.is-current {
  border-color: color-mix(in srgb, var(--brand-500) 55%, transparent);
  background: var(--brand-50);
}

.learn-week__head {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  margin-bottom: var(--space-2);
}

.learn-week__title {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-body);
  font-weight: 600;
}

.learn-week__now {
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--brand-700);
  color: var(--surface);
  font-size: var(--font-size-icon);
  font-weight: 600;
}

.learn-week__range,
.learn-week__stats {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-week__stats {
  margin-left: auto;
}

.learn-week__track {
  display: block;
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--neutral-soft);
}

.learn-week__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--status-aligned);
}

.learn-week.is-current .learn-week__fill {
  background: var(--brand-500);
}

.learn-week__chapters {
  margin: var(--space-2) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-week__exams {
  margin-top: var(--space-3);
}

.learn-week__exam {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--brand-500);
  border-radius: var(--radius-sm);
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  text-decoration: none;
}

.learn-week__exam:hover {
  background: color-mix(in srgb, var(--brand-500) 14%, var(--surface));
}

.learn-week__exam:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.learn-week__exam-label {
  font-weight: 600;
}

.learn-week__exam-meta {
  color: var(--text-2);
}

/* ---------- 学员阅读视角（US-022b） ---------- */

.read-plan {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.read-plan__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.read-plan__tag {
  padding: var(--space-1) var(--space-3);
  border-radius: 999px;
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.read-doc {
  max-width: 760px;
  margin: 0 auto;
  padding: var(--space-8) var(--space-12);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
}

.read-doc__crumb {
  margin: 0 0 var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.read-doc__title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h1);
  line-height: 1.35;
}

.read-doc__meta {
  margin: 0 0 var(--space-6);
  padding-bottom: var(--space-4);
  border-bottom: 1px solid var(--line);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.read-doc__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.read-para__text {
  margin: 0;
  font-size: 16px;
  line-height: 1.9;
}

.read-para {
  scroll-margin-top: var(--space-4);
}

/* 从成绩页「查看讲义原文」跳进来时定位到的段落 */
.read-para.is-highlight {
  padding: var(--space-3);
  border-left: 4px solid var(--brand-500);
  border-radius: var(--radius-sm);
  background: var(--brand-50);
}

.read-para.is-highlight .read-para__text {
  font-weight: 600;
}

/* ---------- 学员端章节阅读（US-054） ---------- */

.learn-read {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: var(--space-4);
  align-items: start;
}

.learn-read__toc {
  position: sticky;
  top: 0;
  max-height: calc(100vh - var(--topbar-height) - var(--space-12));
  overflow-y: auto;
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
}

.learn-read__toc-title {
  margin: 0 0 var(--space-3);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  letter-spacing: 0.02em;
}

.learn-toc {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.learn-toc__item {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: var(--space-2);
  align-items: baseline;
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  color: var(--text);
  font-size: var(--font-size-body);
  line-height: 1.5;
  text-decoration: none;
}

.learn-toc__item:hover {
  background: var(--bg);
}

.learn-toc__item.is-active {
  background: var(--brand-50);
  color: var(--brand-700);
  font-weight: 600;
}

.learn-toc__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.learn-toc__item.is-active .learn-toc__no {
  color: var(--brand-700);
}

.learn-read__main {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
}

.learn-read__doc {
  max-width: 776px;
  margin: 0 auto;
}

.learn-read__doc .read-doc__body {
  max-width: 680px;
}

.read-para__title {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  font-size: var(--font-size-h3);
  line-height: 1.45;
}

.read-para__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.read-para--learn {
  scroll-margin-top: var(--space-6);
}

/* 术语：点线下划线 + 悬停 / 聚焦气泡 */
.term-tip {
  position: relative;
  border-bottom: 1px dashed var(--brand-500);
  cursor: help;
}

.term-tip:focus {
  outline: 2px solid var(--brand-500);
  outline-offset: 2px;
  border-radius: 2px;
}

.term-tip__bubble {
  position: absolute;
  bottom: calc(100% + var(--space-2));
  left: 50%;
  transform: translateX(-50%);
  z-index: 20;
  display: none;
  flex-direction: column;
  gap: var(--space-1);
  width: 280px;
  max-width: calc(100vw - var(--space-12));
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  box-shadow: var(--shadow-card-hover);
  color: var(--text);
  font-size: var(--font-size-aux);
  font-weight: 400;
  line-height: 1.6;
  white-space: normal;
}

.term-tip:hover .term-tip__bubble,
.term-tip:focus .term-tip__bubble {
  display: flex;
}

.term-tip__name {
  font-size: var(--font-size-body);
  font-weight: 600;
}

.term-tip__en {
  color: var(--text-2);
  font-family: var(--font-en);
}

.term-tip__usage {
  color: var(--text-2);
}

.read-figure {
  margin: var(--space-2) 0 0;
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.read-figure__svg {
  display: flex;
  align-items: center;
  justify-content: center;
}

.read-figure__svg svg {
  width: 100%;
  max-width: 520px;
  height: auto;
}

.read-figure__cap {
  margin-top: var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  text-align: center;
}

.learn-read__nav {
  display: flex;
  justify-content: space-between;
  gap: var(--space-3);
}

/* ---------- 学员端章节学习：视频与章末自测（US-055） ---------- */

.learn-video,
.learn-quiz,
.learn-progress,
.learn-complete {
  max-width: 776px;
  margin: 0 auto;
  width: 100%;
  padding: var(--space-6);
}

.learn-video {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.learn-video__head,
.learn-quiz__title-row,
.learn-progress__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-3);
}

.learn-video__title,
.learn-quiz__title,
.learn-progress__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.learn-video__meta,
.learn-quiz__count,
.learn-progress__value {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-video__screen {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  aspect-ratio: 16 / 9;
  max-height: 320px;
  padding: var(--space-6);
  border-radius: var(--radius-sm);
  background: var(--brand-900);
  color: var(--surface);
  text-align: center;
}

.learn-video__badge {
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  padding: var(--space-1) var(--space-3);
  border-radius: 999px;
  background: color-mix(in srgb, var(--surface) 18%, transparent);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.learn-video__slide {
  margin: 0;
  font-family: var(--font-en);
  font-size: var(--font-size-h2);
  font-weight: 600;
  letter-spacing: 0.02em;
}

.learn-video__kps {
  margin: 0;
  color: color-mix(in srgb, var(--surface) 78%, transparent);
  font-size: var(--font-size-aux);
}

.learn-video__subtitle {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: var(--space-3);
  align-items: start;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.learn-video__time {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.learn-video__sub {
  margin: 0;
  font-size: var(--font-size-body);
  line-height: 1.7;
}

.learn-video__cues {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.learn-cue {
  display: grid;
  grid-template-columns: 36px 88px minmax(0, 1fr) 16px;
  gap: var(--space-2);
  align-items: baseline;
  width: 100%;
  padding: var(--space-2) var(--space-3);
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-aux);
  line-height: 1.6;
  text-align: left;
  cursor: pointer;
}

.learn-cue:hover {
  background: var(--bg);
}

.learn-cue:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.learn-cue.is-active {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.learn-cue__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-variant-numeric: tabular-nums;
}

.learn-cue__time {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.learn-cue__text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.learn-cue.is-active .learn-cue__text {
  white-space: normal;
}

.learn-cue__state {
  color: var(--status-aligned);
  font-weight: 700;
  text-align: center;
}

.learn-quiz {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.learn-quiz__items {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.learn-quiz__item {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.learn-quiz__head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.learn-quiz__no {
  font-size: var(--font-size-body);
  font-weight: 600;
}

.learn-quiz__id {
  margin-left: auto;
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
}

.learn-quiz__stem {
  margin: 0;
  font-size: var(--font-size-body);
  font-weight: 600;
  line-height: 1.7;
}

.learn-quiz__options {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.learn-quiz__option:disabled {
  cursor: default;
}

.learn-quiz__actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.learn-quiz__note {
  margin: 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.learn-quiz__note[hidden] {
  display: none;
}

.learn-quiz__result {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.learn-quiz__result[hidden] {
  display: none;
}

.learn-quiz__verdict {
  font-size: var(--font-size-body);
  font-weight: 600;
}

.learn-quiz__verdict--ok {
  color: var(--status-aligned);
}

.learn-quiz__verdict--bad {
  color: var(--status-expired);
}

.learn-quiz__label {
  margin: 0 0 var(--space-1);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.learn-quiz__text {
  margin: 0;
  font-size: var(--font-size-body);
  line-height: 1.7;
}

.learn-quiz__source {
  align-self: flex-start;
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.learn-quiz__source:hover {
  text-decoration: underline;
}

.learn-quiz__source--none {
  color: var(--text-2);
  font-weight: 400;
}

.learn-quiz__foot {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-progress {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.learn-progress__bar {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--neutral-soft);
}

.learn-progress__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--brand-500);
  transition: width 0.2s ease;
}

.learn-progress__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* 标记本章已学完（US-082） */

.learn-complete {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}

.learn-complete__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h3);
}

.learn-complete__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.learn-complete__state {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  color: var(--status-aligned);
  font-weight: 600;
}

.learn-complete[data-learn-complete-done="1"] {
  border-color: var(--status-aligned);
}

/* ---------- 课件工作区（US-025） ---------- */

.deck-layout {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr) 312px;
  gap: var(--space-4);
  align-items: start;
}

.deck-thumbs,
.deck-props {
  position: sticky;
  top: 0;
  max-height: calc(100vh - var(--topbar-height) - var(--space-12));
  overflow-y: auto;
  padding: var(--space-3);
}

.deck-thumbs {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.deck-thumb {
  position: relative;
  display: block;
  padding: var(--space-2) var(--space-2) var(--space-8);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: inherit;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.deck-thumb:hover {
  border-color: var(--brand-500);
}

.deck-thumb.is-active {
  border-color: var(--brand-500);
  box-shadow: 0 0 0 1px var(--brand-500) inset;
  background: var(--brand-50);
}

.deck-thumb--expired {
  background: var(--danger-soft);
  border-color: color-mix(in srgb, var(--status-expired) 35%, var(--line));
}

.deck-thumb__page {
  display: block;
  margin-bottom: var(--space-1);
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

/* 16:9 版式示意：标题条 + 按 layout 排布的内容块 */
.deck-thumb__frame {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  aspect-ratio: 16 / 9;
  padding: var(--space-2);
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--bg);
  overflow: hidden;
}

.deck-thumb__title {
  display: block;
  flex: none;
  height: 4px;
  width: 60%;
  border-radius: 2px;
  background: var(--brand-500);
}

.deck-thumb__cols,
.deck-thumb__split {
  display: flex;
  flex: 1;
  min-height: 0;
  gap: var(--space-1);
}

.deck-thumb__col {
  display: flex;
  flex: 1;
  min-width: 0;
  flex-direction: column;
  gap: 3px;
}

.deck-thumb__line {
  display: block;
  height: 3px;
  border-radius: 2px;
  background: color-mix(in srgb, var(--text-2) 30%, var(--bg));
}

.deck-thumb__figure {
  flex: 1;
  border: 1px dashed color-mix(in srgb, var(--brand-500) 45%, var(--bg));
  border-radius: 2px;
  background: var(--surface);
}

.deck-thumb__id {
  position: absolute;
  left: var(--space-2);
  bottom: var(--space-1);
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-icon);
}

.deck-thumb__status {
  position: absolute;
  right: var(--space-2);
  bottom: var(--space-1);
}

.deck-thumb__alert {
  position: absolute;
  top: var(--space-1);
  right: var(--space-1);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1.5px solid var(--surface);
  background: var(--status-expired);
  color: var(--surface);
  font-size: var(--font-size-icon);
  font-weight: 700;
  line-height: 1;
  z-index: 1;
}

.deck-stage {
  min-width: 0;
}

.deck-canvas {
  padding: var(--space-4);
}

/* 画布固定 16:9，内容随视口缩放，避免切换页面时画布高度跳动 */
.deck-slide {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  aspect-ratio: 16 / 9;
  padding: var(--space-8);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  overflow: hidden;
}

.deck-slide__head {
  display: flex;
  flex: none;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--line);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.deck-slide__page {
  font-family: var(--font-en);
}

.deck-slide__title {
  flex: none;
  margin: 0;
  font-size: var(--font-size-h1);
  line-height: 1.35;
}

.deck-slide__body {
  display: grid;
  flex: 1;
  min-height: 0;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--space-6);
  align-items: center;
}

/* 有图示时才分两栏：无图示的页面让要点独占整行，避免中文逐词换行 */
.deck-slide--has-diagram .deck-slide__body {
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
}

/* 版式（US-027）：对比 → 要点双栏；图文 → 右侧预留图示位 */
.deck-slide__pair {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-6);
  align-items: start;
}

.deck-slide--figure:not(.deck-slide--has-diagram) .deck-slide__body {
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
}

.deck-slide__figure {
  align-self: stretch;
  min-height: 120px;
  border: 1px dashed color-mix(in srgb, var(--brand-500) 45%, var(--line));
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.deck-slide__empty {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.deck-slide__bullets {
  margin: 0;
  padding-left: var(--space-6);
  font-size: 16px;
  line-height: 1.9;
}

.deck-slide__diagram {
  min-width: 0;
}

/* 播放预览（US-029）：固定全屏层，只渲染当前一页 */
.deck-player {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  padding: var(--space-6);
  background: #0f1726;
  color: #ffffff;
}

.deck-player[hidden] {
  display: none;
}

.deck-player__bar {
  display: flex;
  flex: none;
  align-items: center;
  gap: var(--space-4);
}

.deck-player__chapter {
  flex: 1;
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  color: rgba(255, 255, 255, 0.72);
}

.deck-player__counter {
  font-family: var(--font-en);
  font-size: var(--font-size-body);
  font-variant-numeric: tabular-nums;
}

.deck-player__stage {
  flex: 1;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 16:9 画布按可用高度缩放，宽度随之收缩，避免超宽屏把画布拉出上下黑边 */
.deck-player__stage .deck-slide {
  width: min(100%, calc((100vh - 160px) * 16 / 9));
  aspect-ratio: 16 / 9;
  background: var(--surface);
  color: var(--text);
}

.deck-player__stage .deck-slide__title {
  font-size: var(--font-size-h2);
}

.deck-player__stage .deck-slide__bullets {
  font-size: 18px;
}

.deck-player__nav {
  position: absolute;
  top: 50%;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(255, 255, 255, 0.24);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  transform: translateY(-50%);
}

.deck-player__nav--prev {
  left: var(--space-6);
}

.deck-player__nav--next {
  right: var(--space-6);
}

.deck-player__nav:disabled {
  opacity: 0.3;
  cursor: default;
}

.deck-props__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: var(--space-3) 0 0;
}

.deck-props__list > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
}

.deck-props__list dt {
  flex: none;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  white-space: nowrap;
}

.deck-props__list dd {
  min-width: 0;
  margin: 0;
  font-size: var(--font-size-aux);
  font-weight: 600;
  text-align: right;
  overflow-wrap: anywhere;
}

.deck-props__list a {
  color: var(--brand-700);
}

/* 引用知识点/标题来源可能有多行内容，右对齐用 flex 排布 */
.deck-props__refs {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1);
  align-items: flex-end;
}

.deck-props__row--block .deck-props__refs {
  align-items: flex-start;
}

/* 标题来源与图示来源带理由/说明，整行竖排，避免左右挤压 */
.deck-props__list > .deck-props__row--block {
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-1);
}

.deck-props__row--block dd {
  text-align: left;
}

.deck-props__muted {
  color: var(--text-2);
  font-weight: 400;
}

.deck-props__diagram {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1);
  align-items: flex-end;
}

.deck-props__row--block .deck-props__diagram {
  align-items: flex-start;
}

.deck-props__flag {
  display: inline-block;
  margin-right: var(--space-1);
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--gold-soft);
  color: var(--status-review);
  font-weight: 600;
}

.deck-props__reason {
  display: block;
  margin-top: var(--space-1);
  color: var(--text-2);
  font-weight: 400;
  line-height: 1.6;
}

/* 恢复标准要点（US-076）：跟在偏离标记/理由之后，靠左单起一行 */
.deck-props__restore {
  display: flex;
  align-self: flex-start;
  margin-top: var(--space-1);
}

.deck-props__field,
.deck-props__actions {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin-top: var(--space-4);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
}

.deck-props__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.deck-props__title-input {
  width: 100%;
}

.deck-props__title-input--locked {
  cursor: pointer;
  background: var(--neutral-soft);
  color: var(--text-2);
}

.deck-props__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.6;
}

.deck-props__hint a {
  color: var(--brand-700);
}

.deck-props__field .btn,
.deck-props__actions .status-actions {
  align-self: flex-start;
}

.deck-props__actions .status-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

/* 要点编辑（US-074） */
.deck-props__bullets {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  padding-left: var(--space-4);
  color: var(--text-1);
  font-size: var(--font-size-aux);
  line-height: 1.6;
}

.deck-props__bullet-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.deck-props__bullet-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.deck-props__bullet-input {
  flex: 1 1 auto;
  min-width: 0;
}

.deck-props__bullets-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

/* 套用模板（US-027） */
.deck-template-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.deck-template {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.deck-template:hover {
  border-color: var(--brand-500);
}

.deck-template.is-active {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.deck-template__frame {
  display: flex;
  flex: none;
  width: 96px;
  aspect-ratio: 16 / 9;
  padding: var(--space-1);
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--bg);
}

.deck-template__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.deck-template__name {
  font-weight: 600;
}

.deck-template__hint {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.deck-template__tag {
  align-self: flex-start;
  margin-top: var(--space-1);
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-icon);
  font-weight: 600;
}

/* ---------- 视频工作区（US-030） ---------- */

.video-layout {
  display: grid;
  grid-template-columns: 180px minmax(0, 1fr) 250px;
  gap: var(--space-4);
  align-items: start;
}

.video-main {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: var(--space-4);
}

.video-head {
  padding: var(--space-4) var(--space-6);
}

.video-table-wrap {
  overflow-x: auto;
}

.video-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--font-size-aux);
}

.video-table th,
.video-table td {
  padding: var(--space-3);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.video-table thead th {
  background: var(--bg);
  color: var(--text-2);
  font-weight: 600;
  white-space: nowrap;
}

/* 七列定宽；中栏在 1440 视口只有约 690px，旁白列吃掉剩余宽度 */
.video-table thead th:nth-child(1) { width: 36px; }
.video-table thead th:nth-child(2) { width: 88px; }
.video-table thead th:nth-child(4) { width: 44px; }
.video-table thead th:nth-child(5) { width: 92px; }
.video-table thead th:nth-child(6) { width: 116px; }
.video-table thead th:nth-child(7) { width: 92px; }

.video-table tbody tr:last-child th,
.video-table tbody tr:last-child td {
  border-bottom: none;
}

.video-row:hover {
  background: var(--brand-50);
}

.video-row.is-active {
  box-shadow: 0 0 0 1px var(--brand-500) inset;
  background: var(--brand-50);
}

.video-row--expired {
  background: var(--danger-soft);
}

.video-row--expired:hover,
.video-row--expired.is-active {
  background: color-mix(in srgb, var(--danger-soft) 82%, var(--brand-50));
}

.video-row__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-weight: 600;
  white-space: nowrap;
}

.video-row__narration {
  display: -webkit-box;
  overflow: hidden;
  color: var(--text);
  line-height: 1.6;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
}

.video-narration {
  display: flex;
  width: 100%;
  min-width: 0;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-1);
}

.video-narration__flag {
  display: inline-block;
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--gold-soft);
  color: var(--status-review);
  font-size: var(--font-size-icon);
  font-weight: 600;
}

.video-narration__reason {
  color: var(--text-2);
  font-size: var(--font-size-icon);
  line-height: 1.6;
}

.video-narration__edit {
  padding: 0;
  text-decoration: underline;
}

/* 编辑框与单元格同宽：块级 + width:100%，不用 textarea 默认 cols */
.video-narration__textarea {
  display: block;
  width: 100%;
  min-height: 88px;
  margin: 0;
  padding: var(--space-2) var(--space-3);
  border-color: var(--brand-500);
  line-height: 1.6;
  resize: vertical;
}

.video-narration__textarea:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.video-narration__textarea[aria-invalid="true"] {
  border-color: var(--danger);
}

.video-narration__error {
  margin: 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.video-narration__actions {
  display: flex;
  gap: var(--space-2);
}

.video-row__duration {
  color: var(--text-2);
  font-family: var(--font-en);
  white-space: nowrap;
}

.video-row__refs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
}

.video-row__refs .hb-para__chip {
  white-space: nowrap;
}

.video-slide {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  color: var(--brand-700);
  text-decoration: none;
}

.video-slide:hover .video-slide__id {
  text-decoration: underline;
}

.video-slide__id {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.video-slide__page {
  color: var(--text-2);
  font-size: var(--font-size-icon);
}

.video-slide--empty {
  color: var(--text-2);
}

.video-status {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
}

.video-status .status-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
}

.video-status .status-actions__none {
  color: var(--text-2);
  font-size: var(--font-size-icon);
}

.video-audio {
  display: inline-block;
  padding: 0 var(--space-2);
  border: 1px solid var(--line);
  border-radius: 999px;
  font-size: var(--font-size-icon);
  line-height: 20px;
  white-space: nowrap;
}

.video-audio--aligned {
  border-color: color-mix(in srgb, var(--status-aligned) 40%, var(--line));
  background: var(--success-soft);
  color: var(--success);
}

.video-audio--expired {
  border-color: color-mix(in srgb, var(--status-expired) 40%, var(--line));
  background: var(--danger-soft);
  color: var(--danger);
}

.video-audio--draft {
  background: var(--neutral-soft);
  color: var(--text-2);
}

.video-timeline {
  padding: var(--space-4) var(--space-6);
}

.video-timeline__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-3);
}

.video-timeline__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.video-timeline__total {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.video-timeline__bar {
  display: flex;
  gap: 2px;
  height: 36px;
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  overflow: hidden;
}

.video-timeline__seg {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border-radius: 3px;
  color: var(--surface);
  font-family: var(--font-en);
  font-size: var(--font-size-icon);
  font-weight: 600;
  text-decoration: none;
  opacity: 0.86;
}

.video-timeline__seg:hover,
.video-timeline__seg.is-active {
  opacity: 1;
  box-shadow: 0 0 0 2px var(--brand-900) inset;
}

.video-timeline__seg--aligned {
  background: var(--status-aligned);
}

.video-timeline__seg--review {
  background: var(--status-review);
}

.video-timeline__seg--draft {
  background: var(--status-draft);
}

.video-timeline__seg--expired {
  background: var(--status-expired);
}

.video-timeline__label {
  padding: 0 var(--space-1);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.video-legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
  margin-top: var(--space-3);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.video-legend__item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}

.video-legend__swatch {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 3px;
}

/* ---------- 视频配音合成面板（US-031） ---------- */

.video-voice {
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-4);
}

.video-voice__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.video-voice__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.video-voice__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.video-voice__field .select {
  width: 100%;
}

.video-voice__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.video-voice__progress {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--neutral-soft);
}

.video-voice__progress-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--brand-700);
  transition: width 0.2s linear;
}

.video-voice__progress-text {
  margin: 0;
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.video-voice__notice {
  margin: 0;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.video-voice__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.video-voice__assets {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
}

.video-voice__assets-title {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.video-voice__asset {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  color: var(--brand-700);
  text-decoration: none;
}

.video-voice__asset:hover {
  background: var(--brand-50);
  border-color: var(--brand-500);
}

.video-voice__asset-name {
  font-weight: 600;
}

.video-voice__asset-meta {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-icon);
}

/* ---------- 题库工作区（US-032a） ---------- */

.question-tabs {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  margin-bottom: var(--space-4);
  border-bottom: 1px solid var(--line);
}

.question-tab {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: -1px;
  padding: var(--space-2) var(--space-4);
  border-bottom: 2px solid transparent;
  color: var(--text-2);
  font-weight: 600;
  transition: color 0.15s ease, border-color 0.15s ease;
}

.question-tab:hover {
  color: var(--text);
}

.question-tab.is-active {
  border-bottom-color: var(--brand-700);
  color: var(--brand-700);
}

.question-tab__count {
  padding: 0 var(--space-2);
  border-radius: 999px;
  background: var(--neutral-soft);
  color: var(--text-2);
  font-size: var(--font-size-icon);
  font-variant-numeric: tabular-nums;
}

.question-tab.is-active .question-tab__count {
  background: var(--brand-50);
  color: var(--brand-700);
}

.question-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}

.question-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.question-filter .select {
  max-width: 168px;
}

.question-toolbar__count {
  margin-left: auto;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.question-notice {
  margin: 0 0 var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--status-aligned);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--status-aligned) 8%, var(--surface));
  color: var(--text);
  font-size: var(--font-size-aux);
}

/* 新建题目表单（US-033） */

.qform.modal__panel {
  width: min(720px, 100%);
}

/* 题目预览（US-032b） */

.qpreview {
  gap: var(--space-3);
}

.qpreview__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.qpreview .question-type {
  font-size: var(--font-size-aux);
}

.qpreview__difficulty {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qpreview__stem {
  margin: 0;
  color: var(--text);
  font-size: var(--font-size-body);
  font-weight: 600;
  line-height: 1.7;
}

.qpreview__options {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.qpreview__option {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  line-height: 1.6;
}

.qpreview__option.is-correct {
  border-color: var(--status-aligned);
  background: var(--success-soft);
}

.qpreview__option-key {
  flex: none;
  color: var(--text-2);
  font-family: var(--font-en);
  font-weight: 700;
}

.qpreview__correct {
  margin-left: auto;
  color: var(--status-aligned);
  font-size: var(--font-size-icon);
  font-weight: 600;
  white-space: nowrap;
}

.qpreview__answer {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qpreview__answer strong {
  color: var(--text);
  font-family: var(--font-en);
}

.qpreview__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.qpreview__label {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.qpreview__text {
  margin: 0;
  color: var(--text);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.qform__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.qform__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3);
}

.qform__field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.qform__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.qform__required {
  margin-left: 2px;
  color: var(--danger);
}

.qform__textarea {
  min-height: 56px;
  resize: vertical;
  line-height: 1.7;
}

.qform__option {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-1);
}

.qform__option .input {
  flex: 1 1 auto;
}

.qform__option-key,
.qform__answer-key {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-icon);
  font-weight: 600;
}

.qform__answers {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-4);
}

.qform__answer {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--text);
  font-size: var(--font-size-aux);
  white-space: nowrap;
}

.qform__hint,
.qform__kp-hint,
.qform__fixed {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qform__kp-hint {
  color: var(--danger);
}

.qform__kp-hint[hidden] {
  display: none;
}

.qform__fixed-options {
  display: flex;
  gap: var(--space-4);
  margin-top: var(--space-1);
}

.qform__fixed-option {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-aux);
}

.qform__kp-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-1) var(--space-3);
  max-height: 104px;
  overflow-y: auto;
  padding: var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.qform__kp {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
  padding: 2px var(--space-1);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-aux);
}

.qform__kp:hover {
  background: var(--brand-50);
}

.qform__kp[hidden] {
  display: none;
}

.qform__kp-id {
  flex: 0 0 auto;
  color: var(--text-2);
  font-family: var(--font-en);
  font-weight: 600;
}

.qform__kp-name {
  flex: 1 1 auto;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.qform__kp-chapter {
  flex: 0 0 auto;
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-icon);
}

.qform__error {
  margin: 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
}

.qform__error[hidden] {
  display: none;
}

/* AI 生成题目（US-036） */

.page-head__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.qai.modal__panel {
  gap: var(--space-3);
}

.qai__kp-list {
  grid-template-columns: minmax(0, 1fr);
  max-height: 176px;
}

.qform__kp.is-missing .qform__kp-chapter {
  color: var(--status-expired);
  font-family: inherit;
}

.qai__summary {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qai-result {
  margin: 0 0 var(--space-3);
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--status-expired);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--status-expired) 8%, var(--surface));
  font-size: var(--font-size-aux);
}

.qai-result__title {
  margin: 0 0 var(--space-1);
  color: var(--status-expired);
  font-weight: 600;
}

.qai-result__list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.qai-result__item {
  display: flex;
  gap: var(--space-2);
}

.qai-result__id {
  flex: 0 0 auto;
  color: var(--text-2);
  font-family: var(--font-en);
  font-weight: 600;
}

/* 导出题库（US-038） */

.qexp.modal__panel {
  gap: var(--space-3);
  width: min(480px, 100%);
}

.qexp__summary {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* 批量导入题目（US-037） */

.qimp.modal__panel {
  gap: var(--space-3);
}

.qimp__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--space-4);
  align-items: stretch;
}

/* 左右两栏等高：文本框与预览区共用同一高度并由各自内部滚动 */
.qimp__textarea {
  height: 320px;
  resize: none;
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: var(--font-size-aux);
  line-height: 1.6;
}

.qimp__preview {
  height: 320px;
  overflow-y: auto;
  padding: var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.qimp__empty {
  margin: 0;
  padding: var(--space-3);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qimp__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.qimp__item {
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-left: 3px solid var(--status-aligned);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.qimp__item.is-invalid {
  border-left-color: var(--status-expired);
  background: color-mix(in srgb, var(--status-expired) 6%, var(--surface));
}

.qimp__item-head {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
}

.qimp__index {
  flex: 0 0 auto;
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.qimp__stem {
  min-width: 0;
  color: var(--text);
  font-size: var(--font-size-aux);
  line-height: 1.5;
}

.qimp__item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1);
  margin-top: var(--space-1);
}

.qimp__kp {
  padding: 0 var(--space-1);
  border-radius: 4px;
  background: color-mix(in srgb, var(--brand-700) 8%, var(--surface));
  color: var(--brand-700);
  font-family: var(--font-en);
  font-size: 11px;
  font-weight: 600;
}

.qimp__kp.is-missing {
  background: color-mix(in srgb, var(--status-expired) 12%, var(--surface));
  color: var(--status-expired);
}

.qimp__reason {
  margin: var(--space-1) 0 0;
  color: var(--status-expired);
  font-size: var(--font-size-aux);
}

.qimp__summary {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* 格式说明折叠区：展开后自带滚动，不把下方的文本框 / 预览区顶出视口 */
.qimp__guide {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.qimp__guide-summary {
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--brand-700);
  cursor: pointer;
}

.qimp__guide-body {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  max-height: 260px;
  overflow-y: auto;
  padding: 0 var(--space-3) var(--space-3);
}

.qimp__guide-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0;
  font-size: var(--font-size-aux);
}

.qimp__guide-list > div {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: var(--space-2);
}

.qimp__guide-list dt {
  font-weight: 600;
  color: var(--text);
}

.qimp__guide-list dd {
  margin: 0;
  color: var(--text-2);
}

.qimp__guide-note {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qimp__samples {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-2);
}

.qimp__sample {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.qimp__sample-head {
  padding: var(--space-1) var(--space-2);
  border-bottom: 1px solid var(--line);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.qimp__sample pre {
  margin: 0;
  padding: var(--space-2);
  font-family: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
  font-size: 11px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}

.qimp__template {
  align-self: flex-start;
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--brand-700);
}

.question-table-wrap {
  overflow-x: auto;
}

.question-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--font-size-aux);
}

.question-table th,
.question-table td {
  padding: var(--space-3);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.question-table thead th {
  background: var(--bg);
  color: var(--text-2);
  font-weight: 600;
  white-space: nowrap;
}

/* 七列定宽：题型 / 编号 / 知识点 / 难度 / 状态 / 操作 给固定宽，题干吃掉剩余 */
.question-table thead th:nth-child(1) { width: 72px; }
.question-table thead th:nth-child(2) { width: 84px; }
.question-table thead th:nth-child(4) { width: 148px; }
.question-table thead th:nth-child(5) { width: 64px; }
.question-table thead th:nth-child(6) { width: 108px; }
.question-table thead th:nth-child(7) { width: 352px; }

.question-table tbody tr:last-child td {
  border-bottom: none;
}

.question-row:hover {
  background: var(--brand-50);
}

.question-row.is-active {
  box-shadow: 0 0 0 1px var(--brand-500) inset;
  background: var(--brand-50);
}

.question-id {
  color: var(--text-2);
  font-family: var(--font-en);
  font-weight: 600;
  white-space: nowrap;
}

.question-stem {
  color: var(--text);
  line-height: 1.6;
}

.question-type {
  display: inline-flex;
  align-items: center;
  padding: 1px var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  color: var(--text);
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
}

.question-type--single {
  border-color: color-mix(in srgb, var(--brand-500) 40%, var(--line));
  background: var(--brand-50);
  color: var(--brand-700);
}

.question-type--judge {
  border-color: color-mix(in srgb, var(--accent) 40%, var(--line));
  background: color-mix(in srgb, var(--accent) 10%, var(--surface));
  color: color-mix(in srgb, var(--accent) 70%, var(--text));
}

.question-refs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: var(--space-1);
}

.question-source-cell {
  white-space: nowrap;
}

.question-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1) var(--space-2);
}

.question-source {
  color: var(--brand-700);
  font-weight: 600;
  text-decoration: none;
}

.question-source:hover {
  text-decoration: underline;
}

.question-source--none {
  color: var(--text-2);
  font-weight: 400;
}

/* ---------- AI 试题审核队列（US-034） ---------- */

.qreview__head {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin-bottom: var(--space-4);
}

.qreview__title {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin: 0;
  font-size: var(--font-size-h3);
}

.qreview__count {
  padding: 1px var(--space-2);
  border-radius: 999px;
  background: var(--gold-soft);
  color: color-mix(in srgb, var(--status-review) 80%, var(--text));
  font-size: var(--font-size-aux);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.qreview__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qreview {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

/* 左栏核对题目，右栏对照知识点依据；底部操作横跨两栏 */
.qreview__card {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(320px, 1fr);
  gap: var(--space-4) var(--space-6);
  padding: var(--space-4) var(--space-6);
}

.qreview__main,
.qreview__aside {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
}

.qreview__aside {
  padding-left: var(--space-4);
  border-left: 1px solid var(--line);
}

.qreview__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.qreview__difficulty {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qreview__stem {
  margin: 0;
  color: var(--text);
  font-weight: 600;
  line-height: 1.7;
}

.qreview__answer {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qreview__answer strong {
  color: var(--text);
  font-family: var(--font-en);
}

.qreview__section {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.qreview__label {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.qreview__text {
  margin: 0;
  color: var(--text);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.qreview__empty {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.qreview__aside-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
}

.qreview__source {
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.qreview__source:hover {
  text-decoration: underline;
}

.qreview__kp {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.qreview__kp-head {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
}

.qreview__kp-name {
  color: var(--brand-700);
  font-weight: 600;
}

.qreview__kp-name:hover {
  text-decoration: underline;
}

.qreview__kp-version {
  margin-left: auto;
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-icon);
}

.qreview__definition {
  margin: 0;
  color: var(--text);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.qreview__params {
  background: var(--surface);
  font-size: var(--font-size-aux);
}

.qreview__params th,
.qreview__params td {
  padding: var(--space-1) var(--space-2);
}

.qreview__params tbody th {
  border-right: 1px solid var(--line);
}

.qreview__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px solid var(--line);
  grid-column: 1 / -1;
}

/* ---------- 题库覆盖分析（US-035） ---------- */

.qcov__summary {
  display: grid;
  grid-template-columns: 168px minmax(0, 1fr);
  align-items: center;
  gap: var(--space-4) var(--space-6);
  margin-bottom: var(--space-4);
}

.qcov__ring {
  width: 168px;
}

.qcov__ring svg {
  display: block;
  width: 100%;
  height: auto;
}

.qcov__metrics {
  display: flex;
  gap: var(--space-8);
}

.qcov__metric {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.qcov__metric-value {
  font-family: var(--font-en);
  font-size: 28px;
  font-weight: 700;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.qcov__metric-label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* 未覆盖数与行内标记统一用错误色，去掉颜色仍靠文字「未覆盖」区分 */
.qcov__metric.is-uncovered .qcov__metric-value {
  color: var(--status-expired);
}

.qcov__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  grid-column: 1 / -1;
}

.qcov {
  padding: var(--space-2) var(--space-4);
}

.qcov__head,
.qcov__row {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) 88px 72px;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-3);
}

.qcov__head {
  border-bottom: 1px solid var(--line);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

/* 表头的「覆盖情况」只是列名，不沿用行内状态色 */
.qcov__head .qcov__state {
  color: var(--text-2);
}

.qcov__row {
  border-radius: var(--radius-sm);
  border-bottom: 1px solid var(--line);
}

.qcov__row:last-child {
  border-bottom: none;
}

.qcov__row:hover,
.qcov__row:focus-visible {
  background: var(--brand-50);
}

.qcov__id {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.qcov__name {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  min-width: 0;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.qcov__chapter {
  flex: none;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 400;
}

.qcov__count {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.qcov__state {
  color: var(--status-aligned);
  font-size: var(--font-size-aux);
  font-weight: 600;
  text-align: right;
}

.qcov__row.is-uncovered .qcov__id,
.qcov__row.is-uncovered .qcov__name,
.qcov__row.is-uncovered .qcov__count,
.qcov__row.is-uncovered .qcov__state {
  color: var(--status-expired);
}

.qcov__row.is-uncovered .qcov__chapter {
  color: var(--text-2);
}


/* ---------- 培养计划（US-039） ---------- */

.path-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  align-items: center;
  gap: var(--space-8);
  margin-bottom: var(--space-4);
  padding: var(--space-6);
}

.path-summary__name {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h2);
  font-weight: 700;
  line-height: 1.35;
}

.path-summary__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.path-readiness__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
}

.path-readiness__head [data-path-readiness] {
  font-family: var(--font-en);
  font-size: var(--font-size-h3);
  font-weight: 700;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.path-readiness__ratio {
  margin-left: var(--space-1);
  font-family: var(--font);
  font-size: var(--font-size-aux);
  font-weight: 400;
  color: var(--text-2);
}

.path-readiness__bar {
  display: block;
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--neutral-soft);
}

.path-readiness__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--status-aligned);
}

.path-readiness__hint {
  margin: var(--space-2) 0 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 264px;
  align-items: start;
  gap: var(--space-4);
}

.path-main {
  min-width: 0;
  /* .content 自己不产生滚动（行高随内容增长），计划区必须自己滚：
     抽屉与任意一天的时段才能同时留在视口内，拖拽才有落点。
     170px = 顶栏 56 + 内容区上下内边距 48 + 页头高度与间距约 51 + 余量 15 */
  max-height: calc(100vh - 170px);
  overflow-y: auto;
  padding-right: var(--space-1);
}

.path-notice {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-4);
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--status-aligned);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--status-aligned) 8%, var(--surface));
  color: var(--text);
  font-size: var(--font-size-aux);
  /* 计划区自己滚动，提示条吸附在顶部，拖到第二周也能看到结果 */
  position: sticky;
  top: 0;
  z-index: 3;
}

.path-notice__link {
  margin-left: auto;
  font-weight: 600;
  color: var(--brand-700);
  white-space: nowrap;
}

.path-drawer {
  position: sticky;
  top: 0;
  max-height: calc(100vh - 170px);
  overflow-y: auto;
  padding: var(--space-4);
}

.path-drawer__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
}

.path-drawer__head h2 {
  margin: 0;
  font-size: var(--font-size-h3);
}

.path-drawer__count {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.path-drawer__hint {
  margin: var(--space-2) 0 var(--space-3);
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-drawer__module {
  margin: var(--space-3) 0 var(--space-1);
  font-size: var(--font-size-aux);
  font-weight: 700;
  color: var(--text-2);
}

.path-drawer__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.path-drawer__list li + li {
  margin-top: var(--space-1);
}

.path-chip {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  width: 100%;
  padding: var(--space-2);
  border: 1px dashed color-mix(in srgb, var(--brand-500) 45%, transparent);
  border-radius: var(--radius-sm);
  background: var(--surface);
  font-family: inherit;
  font-size: var(--font-size-aux);
  color: var(--text);
  text-align: left;
  cursor: grab;
}

.path-chip:hover {
  background: var(--brand-50);
  border-color: var(--brand-500);
}

.path-chip.is-selected {
  border-style: solid;
  border-color: var(--brand-700);
  background: var(--brand-50);
  box-shadow: inset 3px 0 0 var(--brand-700);
}

.path-chip.is-dragging {
  opacity: 0.55;
}

.path-chip:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.path-chip__name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.path-chip__meta {
  flex: none;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.path-slot {
  border-radius: var(--radius-sm);
  border: 1px dashed transparent;
  padding: 0 var(--space-1) var(--space-1);
}

.path-slot.is-drop-target {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.path-slot__label {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-2) 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-slot__count {
  font-variant-numeric: tabular-nums;
}

.path-slot__empty {
  margin: 0;
  padding: var(--space-2) var(--space-2) var(--space-2);
  border-radius: var(--radius-sm);
  background: var(--bg);
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-weeks {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: var(--space-4);
}

.path-week {
  padding: 0;
  overflow: hidden;
}

.path-week__head {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-4) var(--space-3);
  border-bottom: 1px solid var(--line);
}

.path-week__title {
  margin: 0;
  font-size: var(--font-size-h3);
  line-height: 1.3;
}

.path-week__range {
  flex: 1;
  min-width: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-week__stats {
  flex: none;
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.path-week__body {
  padding: var(--space-2) var(--space-4) var(--space-3);
}

.path-day + .path-day {
  border-top: 1px solid var(--line);
}

.path-day__head {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  padding: var(--space-3) 0 var(--space-2);
}

.path-day__no {
  font-size: var(--font-size-aux);
  font-weight: 700;
  color: var(--brand-700);
}

.path-day__date {
  flex: 1;
  min-width: 0;
  font-size: var(--font-size-aux);
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.path-day__count {
  flex: none;
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-day__list {
  margin: 0 0 var(--space-2);
  padding: 0;
  list-style: none;
}

.path-entry {
  display: grid;
  grid-template-columns: 56px 52px minmax(0, 1fr) 64px auto;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
}

.path-entry + .path-entry {
  margin-top: var(--space-1);
}

.path-entry:hover {
  background: var(--bg);
}

.path-entry__when {
  display: flex;
  flex-direction: column;
  gap: 1px;
  font-variant-numeric: tabular-nums;
}

.path-entry__date {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
  color: var(--text);
}

.path-entry__slot {
  font-size: var(--font-size-aux);
  color: var(--text-2);
}

.path-form {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 1px var(--space-2);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
}

.path-form--handbook {
  background: var(--brand-50);
  border-color: color-mix(in srgb, var(--brand-500) 40%, transparent);
  color: var(--brand-700);
}

.path-form--video {
  background: color-mix(in srgb, var(--accent) 12%, var(--surface));
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  color: color-mix(in srgb, var(--accent) 65%, var(--brand-900));
}

.path-form--practice {
  background: var(--neutral-soft);
  border-color: var(--line);
  color: var(--text);
}

.path-form--exam {
  background: var(--gold-soft);
  border-color: color-mix(in srgb, var(--gold) 55%, transparent);
  color: color-mix(in srgb, var(--gold) 70%, var(--text));
}

.path-entry__chapter {
  min-width: 0;
  overflow: hidden;
  font-size: var(--font-size-aux);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.path-entry__minutes {
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  color: var(--text-2);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.path-entry__status {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--font-size-aux);
  font-weight: 600;
  color: color-mix(in srgb, var(--gold) 78%, var(--text));
  white-space: nowrap;
}

.path-entry__flag {
  position: relative;
  display: inline-flex;
  flex: none;
  width: 12px;
  height: 12px;
  border: 2px solid var(--gold);
  border-right-color: transparent;
  border-bottom-color: transparent;
  border-radius: 50%;
}

.path-entry.is-unaligned {
  background: var(--gold-soft);
  border-color: color-mix(in srgb, var(--gold) 40%, transparent);
}

.path-entry__actions {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  justify-self: end;
}

.path-entry__remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-body);
  line-height: 1;
  cursor: pointer;
}

.path-entry__remove:hover {
  border-color: var(--danger);
  background: var(--danger-soft);
  color: var(--danger);
}

.path-entry__remove:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.path-entry.is-aligned .badge {
  justify-self: end;
}

/* ---------- 组卷与试卷（US-041） ---------- */

.papers-layout {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  align-items: start;
  gap: var(--space-4);
  margin-top: var(--space-3);
}

.paper-list {
  position: sticky;
  top: 0;
  max-height: calc(100vh - var(--topbar-height) - var(--space-12));
  overflow-y: auto;
  padding: var(--space-4);
}

.paper-list__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.paper-list__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.paper-list__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.paper-item {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin-bottom: var(--space-2);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  color: var(--text);
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.paper-item:last-child {
  margin-bottom: 0;
}

.paper-item:hover {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.paper-item.is-active {
  border-color: var(--brand-500);
  background: var(--brand-50);
  box-shadow: 0 0 0 1px var(--brand-500) inset;
}

.paper-item:focus-within {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.paper-item__link {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  color: inherit;
  text-decoration: none;
}

.paper-item__link:focus-visible {
  outline: none;
}

.paper-item__stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-1) var(--space-3);
  margin-top: var(--space-1);
  padding-top: var(--space-2);
  border-top: 1px dashed var(--line);
  color: var(--text);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.paper-item__stat {
  white-space: nowrap;
}

.paper-item__stat-label {
  margin-right: var(--space-1);
  color: var(--text-2);
}

.paper-item__report {
  align-self: flex-start;
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
}

.paper-item__report:hover {
  text-decoration: underline;
}

.paper-item__report:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.paper-item__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
}

.paper-item__name {
  min-width: 0;
  overflow: hidden;
  font-weight: 600;
  font-size: var(--font-size-body);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.paper-item__meta {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  line-height: 1.6;
}

.paper-config {
  min-width: 0;
  padding: var(--space-4) var(--space-6);
}

.paper-config__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h3);
}

.paper-config__hint {
  margin: 0 0 var(--space-4);
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.paper-config__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 140px 140px;
  gap: var(--space-3);
}

.paper-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  min-width: 0;
}

.paper-field__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.paper-config__size {
  margin: var(--space-2) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.paper-config__ratios {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-4);
  margin-top: var(--space-4);
}

.paper-ratio {
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.paper-ratio__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.paper-ratio__sum {
  color: var(--status-aligned);
  font-variant-numeric: tabular-nums;
}

.paper-ratio__sum.is-invalid {
  color: var(--status-expired);
}

.paper-ratio__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 64px var(--space-4);
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-1);
}

.paper-ratio__row:last-child {
  margin-bottom: 0;
}

.paper-ratio__name {
  min-width: 0;
  overflow: hidden;
  color: var(--text);
  font-size: var(--font-size-aux);
  text-overflow: ellipsis;
  white-space: nowrap;
}

.paper-ratio__input {
  width: 64px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.paper-ratio__unit {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.paper-config__problems {
  margin: var(--space-3) 0 0;
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--status-expired);
  border-radius: var(--radius-sm);
  background: var(--danger-soft);
  color: var(--status-expired);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.paper-config__problems[hidden] {
  display: none;
}

.paper-config__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-4);
}

.paper-config__note {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.paper-notice {
  margin: var(--space-3) 0 0;
  padding: var(--space-2) var(--space-3);
  border-left: 3px solid var(--status-aligned);
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--status-aligned) 8%, var(--surface));
  color: var(--text);
  font-size: var(--font-size-aux);
}

.paper-preview {
  margin-top: var(--space-4);
  padding: var(--space-4);
  border: 1px solid var(--brand-500);
  border-radius: var(--radius-sm);
}

.paper-preview__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
}

.paper-preview__name {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h3);
}

.paper-preview__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.paper-preview__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-3) 0;
}

.paper-cov {
  margin-top: var(--space-4);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.paper-cov__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}

.paper-cov__head h3 {
  margin: 0;
  font-size: var(--font-size-body);
}

.paper-cov__overall {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.paper-cov__rows {
  margin: 0;
  padding: 0;
  list-style: none;
}

.paper-cov__row {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) 72px minmax(0, 1fr) 56px minmax(0, 1fr);
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2);
  border-bottom: 1px solid var(--line);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.paper-cov__row:last-child {
  border-bottom: none;
}

/* 覆盖率偏低按提醒样式：金色底 + 金色描边，与四态徽章 review 同色 */
.paper-cov__row.is-low {
  border-radius: var(--radius-sm);
  border-bottom-color: transparent;
  background: var(--gold-soft);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--gold) 45%, transparent) inset;
}

.paper-cov__module {
  min-width: 0;
  overflow: hidden;
  color: var(--text);
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.paper-cov__ratio,
.paper-cov__covered {
  color: var(--text-2);
  white-space: nowrap;
}

.paper-cov__percent {
  color: var(--status-aligned);
  font-weight: 600;
  text-align: right;
}

.paper-cov__warn {
  grid-column: 1 / -1;
  color: color-mix(in srgb, var(--gold) 72%, var(--text));
  font-weight: 600;
  white-space: nowrap;
}

.paper-cov__row.is-low .paper-cov__percent {
  color: color-mix(in srgb, var(--gold) 72%, var(--text));
}

.paper-questions {
  margin-top: var(--space-4);
  max-height: 420px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.paper-q-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--font-size-aux);
}

.paper-q-table th,
.paper-q-table td {
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}

.paper-q-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--bg);
  color: var(--text-2);
  font-weight: 600;
  white-space: nowrap;
}

.paper-q-table thead th:nth-child(1) { width: 40px; }
.paper-q-table thead th:nth-child(2) { width: 68px; }
.paper-q-table thead th:nth-child(3) { width: 84px; }
.paper-q-table thead th:nth-child(5) { width: 120px; }
.paper-q-table thead th:nth-child(6) { width: 72px; }
.paper-q-table thead th:nth-child(7) { width: 104px; }

.paper-q-table tbody tr:last-child td {
  border-bottom: none;
}

.paper-q__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-variant-numeric: tabular-nums;
}

.paper-q__stem {
  line-height: 1.6;
}

.paper-q__kp,
.paper-q__weight {
  color: var(--text-2);
  font-family: var(--font-en);
  white-space: nowrap;
}

.paper-q__weight {
  color: var(--status-review);
  font-weight: 600;
}

/* 成绩报告（US-042） */

.report-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
  margin: var(--space-3) 0 var(--space-4);
}

.report-stat {
  padding: var(--space-4) var(--space-6);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}

.report-stat__label {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.report-stat__value {
  display: flex;
  align-items: baseline;
  gap: var(--space-1);
  margin: var(--space-2) 0 0;
  font-family: var(--font-en);
  font-size: 32px;
  font-weight: 700;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.report-stat__unit {
  color: var(--text-2);
  font-family: var(--font-cn);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.report-stat__sub {
  margin: var(--space-2) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.report-table {
  padding: var(--space-4) var(--space-6);
}

.report-table__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.report-table__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.report-table__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.report-table__table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--font-size-aux);
}

.report-table__table th,
.report-table__table td {
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: middle;
}

.report-table__table thead th {
  background: var(--bg);
  color: var(--text-2);
  font-weight: 600;
  white-space: nowrap;
}

.report-table__table thead th:nth-child(1) { width: 6%; }
.report-table__table thead th:nth-child(2) { width: 18%; }
.report-table__table thead th:nth-child(3) { width: 24%; }
.report-table__table thead th:nth-child(4) { width: 14%; }
.report-table__table thead th:nth-child(5) { width: 16%; }
.report-table__table thead th:nth-child(6) { width: 16%; }

.report-table__table tbody tr:last-child td {
  border-bottom: none;
}

.report-cell__no,
.report-cell__num {
  font-family: var(--font-en);
  font-variant-numeric: tabular-nums;
  color: var(--text-2);
}

.report-cell__score {
  color: var(--text);
  font-weight: 600;
}

.report-cell__name {
  font-weight: 600;
}

/* ---------- 学员端考试页（US-043） ---------- */

.exam-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-6);
  margin-bottom: var(--space-4);
}

.exam-head__eyebrow {
  display: block;
  margin-bottom: var(--space-1);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 700;
  letter-spacing: 0.04em;
}

.exam-head__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h1);
  line-height: 1.3;
}

.exam-head__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.exam-head__status {
  display: flex;
  align-items: stretch;
  gap: var(--space-3);
  flex: none;
}

.exam-timer,
.exam-progress {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}

.exam-timer__label,
.exam-progress__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.exam-timer__value {
  color: var(--text);
  font-family: var(--font-en);
  font-size: var(--font-size-h2);
  font-weight: 700;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.exam-timer.is-warning {
  border-color: var(--status-expired);
  background: var(--danger-soft);
}

.exam-timer__value.is-warning {
  color: var(--status-expired);
}

.exam-progress__value {
  color: var(--text);
  font-family: var(--font-en);
  font-size: var(--font-size-h3);
  font-weight: 700;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.exam-progress__bar {
  display: block;
  width: 96px;
  height: 4px;
  margin-top: var(--space-1);
  border-radius: 2px;
  background: var(--neutral-soft);
  overflow: hidden;
}

.exam-progress__fill {
  display: block;
  height: 100%;
  border-radius: 2px;
  background: var(--status-aligned);
  transition: width 0.2s ease;
}

.exam-layout {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  align-items: start;
  gap: var(--space-4);
}

.exam-card {
  position: sticky;
  top: 0;
  max-height: calc(100vh - var(--topbar-height) - var(--space-12));
  overflow-y: auto;
  padding: var(--space-4);
}

.exam-card__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.exam-card__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.exam-card__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.exam-card__grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.exam-no {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 36px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-body);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}

.exam-no:hover {
  border-color: var(--brand-500);
  color: var(--brand-700);
}

.exam-no:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

/* 已答：品牌色实底 + 勾；未答：灰色空心；已标记：金色描边 + 星（可与已答叠加） */
.exam-no[data-exam-answered="1"] {
  border-color: var(--brand-500);
  background: var(--brand-700);
  color: var(--surface);
}

.exam-no[data-exam-marked="1"] {
  border-color: var(--status-review);
  box-shadow: 0 0 0 1px var(--status-review) inset;
}

.exam-no[data-exam-marked="1"]:not([data-exam-answered="1"]) {
  background: var(--gold-soft);
  color: var(--text);
}

.exam-no__flag,
.exam-no__check {
  display: none;
  position: absolute;
  top: -5px;
  right: -4px;
  font-size: var(--font-size-icon);
  line-height: 1;
  padding: 1px 3px;
  border-radius: 4px;
}

.exam-no__flag {
  background: var(--status-review);
  color: var(--surface);
}

.exam-no[data-exam-marked="1"] .exam-no__flag {
  display: block;
}

.exam-no__check {
  background: var(--status-aligned);
  color: var(--surface);
}

.exam-no[data-exam-answered="1"] .exam-no__check {
  display: block;
}

.exam-no[data-exam-marked="1"] .exam-no__check {
  top: auto;
  bottom: -5px;
  right: 1px;
}

.exam-card__legend {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-3);
  margin: var(--space-3) 0 0;
  padding: var(--space-3) 0 0;
  border-top: 1px dashed var(--line);
  list-style: none;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.exam-card__legend li {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}

.exam-legend {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border: 1px solid var(--line);
  border-radius: 4px;
  font-size: var(--font-size-icon);
  line-height: 1;
}

.exam-legend--answered {
  border-color: var(--brand-500);
  background: var(--brand-700);
  color: var(--surface);
}

.exam-legend--marked {
  border-color: var(--status-review);
  background: var(--gold-soft);
  color: var(--text);
}

.exam-card__stat {
  margin: var(--space-2) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.exam-questions {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  min-width: 0;
}

.exam-q {
  scroll-margin-top: var(--space-4);
}

.exam-q:focus {
  outline: none;
}

.exam-q.is-highlight {
  border-color: var(--brand-500);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--brand-500) 30%, transparent);
}

.exam-q__head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.exam-q__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.exam-q__mark {
  margin-left: auto;
}

.exam-q__mark.is-marked {
  border-color: var(--status-review);
  background: var(--gold-soft);
  color: var(--text);
}

.exam-q__stem {
  margin: 0 0 var(--space-3);
  font-size: var(--font-size-body);
  font-weight: 600;
  line-height: 1.7;
}

.exam-q__options {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.exam-option {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-body);
  line-height: 1.6;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.15s ease, background-color 0.15s ease;
}

.exam-option:hover {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.exam-option:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.exam-option.is-selected {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.exam-option.is-selected .exam-option__key {
  border-color: var(--brand-700);
  background: var(--brand-700);
  color: var(--surface);
}

.exam-option__key {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 22px;
  height: 22px;
  border: 1px solid var(--line);
  border-radius: 50%;
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
}

.exam-q__hint {
  margin: var(--space-3) 0 0;
  color: var(--status-review);
  font-size: var(--font-size-aux);
}

.exam-card__submit {
  width: 100%;
  margin-top: var(--space-4);
}

.exam-card__hint {
  margin: var(--space-2) 0 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  text-align: center;
}

.exam-submit__text {
  margin: 0;
  color: var(--text-2);
  line-height: 1.7;
}

.exam-submit__text strong {
  color: var(--status-expired);
  font-family: var(--font-en);
  font-size: var(--font-size-h3);
}

.exam-toast {
  position: fixed;
  left: 50%;
  bottom: var(--space-12);
  z-index: 40;
  transform: translateX(-50%);
  max-width: 480px;
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius);
  background: color-mix(in srgb, var(--brand-900) 92%, transparent);
  color: var(--surface);
  font-size: var(--font-size-body);
  box-shadow: var(--shadow-card-hover);
}

/* ---------- 学员端成绩页（US-044 交卷落点） ---------- */

.result-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-6);
  margin-bottom: var(--space-4);
}

.result-head__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h1);
  line-height: 1.3;
}

.result-head__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.result-summary {
  display: flex;
  align-items: center;
  gap: var(--space-12);
  padding: var(--space-6);
}

.result-summary__item {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.result-summary__label {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.result-summary__value {
  color: var(--text);
  font-family: var(--font-en);
  font-size: var(--font-size-display);
  font-weight: 700;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.result-summary__actions {
  display: flex;
  gap: var(--space-3);
  margin-left: auto;
}

/* 各模块得分条形图（US-045） */

.result-modules {
  margin-top: var(--space-6);
  padding: var(--space-6);
}

.result-modules__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}

.result-modules__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.result-modules__note {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.result-bar {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr) 96px;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-2) 0;
}

.result-bar__label {
  overflow: hidden;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.result-bar__track {
  display: block;
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--neutral-soft);
}

.result-bar__fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--status-aligned);
}

.result-bar__value {
  color: var(--text);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.result-bar__unit {
  color: var(--text-2);
  font-weight: 600;
}

/* 知识点掌握网格（US-046） */

.result-mastery,
.result-wrong {
  margin-top: var(--space-6);
  padding: var(--space-6);
}

.result-mastery__head,
.result-wrong__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}

.result-mastery__title,
.result-wrong__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.result-mastery__legend {
  display: flex;
  gap: var(--space-4);
  margin: 0;
  padding: 0;
  list-style: none;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.result-mastery__legend li {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  white-space: nowrap;
}

.mastery-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.mastery-dot--strong {
  background: var(--status-aligned);
}

.mastery-dot--mid {
  background: var(--status-review);
}

.mastery-dot--weak {
  background: var(--status-expired);
}

.result-mastery__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
}

.mastery-cell {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-left-width: 4px;
  border-radius: var(--radius-sm);
  color: var(--text);
}

.mastery-cell--strong {
  border-left-color: var(--status-aligned);
  background: var(--success-soft);
}

.mastery-cell--mid {
  border-left-color: var(--status-review);
  background: var(--gold-soft);
}

.mastery-cell--weak {
  border-left-color: var(--status-expired);
  background: var(--danger-soft);
}

.mastery-cell__name {
  font-size: var(--font-size-body);
  font-weight: 600;
}

.mastery-cell__rate {
  font-family: var(--font-en);
  font-size: var(--font-size-h3);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.mastery-cell__meta {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

/* 错题回顾（US-046） */

.result-wrong__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.result-wrong__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.wrong-item {
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
}

.wrong-item.is-open {
  border-color: var(--brand-500);
}

.wrong-item__toggle {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-3);
  border: 0;
  border-radius: inherit;
  background: transparent;
  color: inherit;
  font-family: inherit;
  font-size: var(--font-size-body);
  text-align: left;
  cursor: pointer;
}

.wrong-item__toggle:hover {
  background: var(--brand-50);
}

.wrong-item__no {
  color: var(--text-2);
  font-family: var(--font-en);
  font-size: var(--font-size-aux);
  font-weight: 700;
  white-space: nowrap;
}

.wrong-item__stem {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wrong-item__chevron {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  transition: transform 0.18s ease;
}

.wrong-item.is-open .wrong-item__chevron {
  transform: rotate(180deg);
}

.wrong-item__body {
  padding: 0 var(--space-3) var(--space-3);
}

.wrong-item__answer {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-body);
}

.wrong-item__section {
  margin-bottom: var(--space-2);
}

.wrong-item__label {
  margin: 0 0 var(--space-1);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.wrong-item__text {
  margin: 0;
  font-size: var(--font-size-body);
  line-height: 1.7;
}

.wrong-item__source {
  color: var(--brand-700);
  font-size: var(--font-size-body);
  font-weight: 600;
  text-decoration: underline;
}

.wrong-item__source--none {
  color: var(--text-2);
  font-weight: 400;
  text-decoration: none;
}
/* ---------- 导出中心（US-047） ---------- */

.export-notice {
  margin: 0 0 var(--space-4);
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--brand-500);
  border-radius: var(--radius-sm);
  background: var(--brand-50);
  color: var(--brand-900);
  font-size: var(--font-size-body);
}

.export-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.export-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-6);
}

.export-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
}

.export-card__title {
  margin: 0 0 var(--space-1);
  font-size: var(--font-size-h3);
}

/* 不满足前置条件的导出卡：左侧红色边条 + 标题旁不可导出标记，按钮保持可点以弹出问题清单 */
.export-card--blocked {
  border-left: 3px solid var(--danger);
}

.export-card__blocked {
  display: inline-block;
  margin-left: var(--space-2);
  padding: 0 var(--space-2);
  border: 1px solid var(--danger);
  border-radius: var(--radius-sm);
  background: var(--danger-soft);
  color: var(--danger);
  font-size: var(--font-size-aux);
  font-weight: 600;
  vertical-align: middle;
}

.export-card__cond-fail {
  display: block;
  margin-top: var(--space-1);
  color: var(--danger);
  font-weight: 600;
}

.export-card__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.export-card__fields {
  display: flex;
  gap: var(--space-3);
}

.export-card__field {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-width: 0;
}

.export-card__fields .export-card__field {
  flex: 1;
}

.export-card__field--format {
  flex: none;
}

.export-card__field .select {
  min-width: 0;
  max-width: 100%;
}

.export-card__fields .select {
  width: 100%;
}

.export-card__label {
  flex: none;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  white-space: nowrap;
}

.export-card__scope {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.export-card__cond {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.export-card__cond .export-card__label {
  margin-right: var(--space-2);
}

.export-card__actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-top: auto;
  padding-top: var(--space-2);
}

.export-card__status {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.export-card__status[data-export-card-status="ready"] {
  color: var(--status-aligned);
  font-weight: 600;
}

.export-history {
  padding: var(--space-4) var(--space-6);
}

.export-history__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.export-history__title {
  margin: 0;
  font-size: var(--font-size-h3);
}

.export-history__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.export-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--font-size-aux);
}

.export-table th,
.export-table td {
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: middle;
}

.export-table thead th {
  background: var(--bg);
  color: var(--text-2);
  font-weight: 600;
  white-space: nowrap;
}

.export-table thead th:nth-child(1) { width: 15%; }
.export-table thead th:nth-child(2) { width: 8%; }
.export-table thead th:nth-child(3) { width: 30%; }
.export-table thead th:nth-child(4) { width: 9%; }
.export-table thead th:nth-child(5) { width: 22%; }
.export-table thead th:nth-child(6) { width: 16%; }

.export-table tbody tr:last-child td {
  border-bottom: none;
}

.export-cell__time,
.export-cell__item {
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.export-cell__scope {
  color: var(--text);
  line-height: 1.6;
  word-break: break-word;
}

.export-cell__status {
  white-space: nowrap;
}

.export-cell__reason {
  margin: var(--space-1) 0 0;
  color: var(--danger);
  font-size: var(--font-size-aux);
  line-height: 1.6;
  white-space: normal;
}

.export-cell__muted {
  color: var(--text-2);
}

.export-cell__action {
  white-space: nowrap;
}

.export-action {
  color: var(--brand-700);
  font-weight: 600;
  text-decoration: underline;
}

.export-cell__action .btn--text {
  padding: 0;
  text-decoration: underline;
}

/* ---------- 导入中心（US-050） ---------- */

.import-steps {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  margin: var(--space-4) 0 var(--space-4);
}

.import-step {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text-2);
  font-size: var(--font-size-body);
}

.import-step__index {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--neutral-soft);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.import-step.is-done {
  color: var(--text);
}

.import-step.is-done .import-step__index {
  border-color: var(--status-aligned);
  background: var(--success-soft);
  color: var(--status-aligned);
}

.import-step.is-active {
  border-color: var(--brand-500);
  background: var(--brand-50);
  color: var(--brand-900);
  font-weight: 600;
}

.import-step.is-active .import-step__index {
  border-color: var(--brand-700);
  background: var(--brand-700);
  color: var(--surface);
}

.import-panel {
  display: block;
  padding: var(--space-6);
}

.import-panel__title {
  margin: 0 0 var(--space-2);
  font-size: var(--font-size-h3);
}

.import-panel__subtitle {
  margin: var(--space-6) 0 var(--space-3);
  font-size: var(--font-size-body);
}

.import-panel__hint {
  margin: 0 0 var(--space-4);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.import-drop {
  position: relative;
  padding: var(--space-8) var(--space-6);
  border: 1px dashed var(--brand-500);
  border-radius: var(--radius);
  background: var(--brand-50);
  text-align: center;
  cursor: pointer;
}

.import-drop:focus-within,
.import-drop.is-drop-target {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.import-drop__file {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  border: 0;
  clip: rect(0 0 0 0);
  overflow: hidden;
}

.import-drop__title {
  margin: 0 0 var(--space-1);
  color: var(--brand-900);
  font-size: var(--font-size-body);
  font-weight: 600;
}

.import-drop__hint {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.import-parsed {
  margin: var(--space-3) 0 0;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  background: var(--success-soft);
  color: var(--status-aligned);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.import-samples {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
}

.import-sample {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: inherit;
  text-align: left;
  cursor: pointer;
}

.import-sample:hover {
  border-color: var(--brand-500);
  background: var(--brand-50);
}

.import-sample.is-active {
  border-color: var(--brand-700);
  background: var(--brand-50);
  box-shadow: inset 0 0 0 1px var(--brand-700);
}

.import-sample:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.import-sample__name {
  font-size: var(--font-size-body);
  font-weight: 600;
  line-height: 1.5;
}

.import-sample__meta {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.import-extract__head {
  margin-bottom: var(--space-4);
}

.import-extract {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: var(--space-4);
}

.import-extract__pages {
  min-width: 0;
}

.import-extract__blocks {
  min-width: 0;
}

.import-pages {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.import-page {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
  color: var(--text);
  font-family: inherit;
  font-size: var(--font-size-body);
  text-align: left;
  cursor: pointer;
}

.import-page:hover {
  background: var(--bg);
}

.import-page.is-active {
  border-color: var(--brand-500);
  background: var(--brand-50);
  color: var(--brand-900);
  font-weight: 600;
}

.import-page:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 2px;
}

.import-page__no {
  font-variant-numeric: tabular-nums;
}

.import-page__meta {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-weight: 400;
}

.import-blocks {
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--bg);
}

.import-blocks__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.import-blocks__title {
  margin: 0;
  font-size: var(--font-size-body);
}

.import-blocks__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.import-block-list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.import-block {
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.import-block__kind {
  display: inline-block;
  margin-bottom: var(--space-1);
  padding: 0 var(--space-2);
  border-radius: var(--radius-sm);
  background: var(--brand-50);
  color: var(--brand-700);
  font-size: var(--font-size-aux);
  font-weight: 600;
}

.import-block__text {
  margin: 0;
  color: var(--text);
  font-size: var(--font-size-body);
  line-height: 1.8;
}

.import-nav {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-3);
  margin-top: var(--space-4);
}

/* ---------- 导入中心：候选知识点与入库（US-051） ---------- */

.import-cands {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-4);
}

.import-cand {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.import-cand[data-decided="ignore"] {
  background: var(--bg);
  color: var(--text-2);
}

.import-cand[data-decided="merge"] {
  border-color: var(--brand-500);
}

.import-cand__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2);
}

.import-cand__key {
  padding: 0 var(--space-2);
  border-radius: var(--radius-sm);
  background: var(--neutral-soft);
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.import-cand__name {
  flex: 1 1 auto;
  margin: 0;
  font-size: var(--font-size-body);
}

.import-cand__conf {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.import-cand__summary {
  margin: 0;
  color: var(--text);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.import-cand__meta {
  margin: 0;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.7;
}

.import-cand__meta-label {
  display: inline-block;
  margin-right: var(--space-2);
  color: var(--text-3);
}

.import-cand__similar-link {
  color: var(--brand-700);
  font-weight: 600;
}

.import-cand__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: auto;
  padding-top: var(--space-2);
}

.import-confirm {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--space-4);
}

.import-confirm__group {
  padding: var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.import-confirm__title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  font-size: var(--font-size-body);
}

.import-confirm__count {
  color: var(--text-2);
  font-size: var(--font-size-aux);
  font-variant-numeric: tabular-nums;
}

.import-confirm__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.import-confirm__name {
  display: block;
  color: var(--text);
  font-size: var(--font-size-aux);
  font-weight: 600;
  line-height: 1.6;
}

.import-confirm__meta {
  display: block;
  color: var(--text-2);
  font-size: var(--font-size-aux);
  line-height: 1.6;
}

.import-confirm__actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--space-3);
  margin-top: var(--space-4);
}

.import-done__stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  margin: var(--space-3) 0 var(--space-4);
}

.import-done__stats div {
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--bg);
}

.import-done__stats dt {
  color: var(--text-2);
  font-size: var(--font-size-aux);
}

.import-done__stats dd {
  margin: var(--space-1) 0 0;
  color: var(--brand-900);
  font-size: var(--font-size-h3);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.import-history {
  margin-top: var(--space-6);
  padding: var(--space-4) var(--space-6);
}

.import-table thead th:nth-child(1) { width: 34%; }
.import-table thead th:nth-child(2) { width: 20%; }
.import-table thead th:nth-child(3) { width: 10%; }
.import-table thead th:nth-child(4) { width: 10%; }
.import-table thead th:nth-child(5) { width: 10%; }
.import-table thead th:nth-child(6) { width: 16%; }

