:root {
  /* 品牌色阶 */
  --primary: #2563eb;
  --primary-hover: #1d4ed8;
  --primary-blue: #2563eb;

  /* ========== SLA / 状态语义 — 真理单源（每种：Soft / Border / Text / Solid）========== */
  /* Danger — 逾期 / 阻塞 / 错误 */
  --erp-semantic-danger-soft: #fef2f2;
  --erp-semantic-danger-border: #fecaca;
  --erp-semantic-danger-text: #991b1b;
  --erp-semantic-danger-solid: #ef4444;

  /* Warning — 预警 / 让步 */
  --erp-semantic-warning-soft: #fffbeb;
  --erp-semantic-warning-border: #fde68a;
  --erp-semantic-warning-text: #92400e;
  --erp-semantic-warning-solid: #f59e0b;

  /* Success — 完成 / 合格 */
  --erp-semantic-success-soft: #ecfdf5;
  --erp-semantic-success-border: #a7f3d0;
  --erp-semantic-success-text: #065f46;
  --erp-semantic-success-solid: #10b981;

  /* Info — 进行中 / 提示 */
  --erp-semantic-info-soft: #eff6ff;
  --erp-semantic-info-border: #bfdbfe;
  --erp-semantic-info-text: #1e40af;
  --erp-semantic-info-solid: #2563eb;

  /* Neutral — 待定 / 废弃 */
  --erp-semantic-neutral-soft: #f9fafb;
  --erp-semantic-neutral-border: #e5e7eb;
  --erp-semantic-neutral-text: #6b7280;
  --erp-semantic-neutral-solid: #9ca3af;

  /* 简短别名（兼容历史变量名） */
  --success: var(--erp-semantic-success-solid);
  --warning: var(--erp-semantic-warning-solid);
  --danger: var(--erp-semantic-danger-solid);
  --warn-red: var(--erp-semantic-danger-solid);

  /* 加工厂分析等页面 — 映射到上表（勿在业务 CSS 中重复定义同名变量） */
  --erp-bg-main: #f0f2f5;
  --erp-card-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
  --erp-primary-color: var(--primary);
  --erp-success-color: var(--erp-semantic-success-solid);
  --erp-warning-color: var(--erp-semantic-warning-solid);
  --erp-error-color: var(--erp-semantic-danger-solid);

  /* 视觉宪法 · 画布与卡片（采购控制台等 Bento 页复用） */
  --bg-canvas: #f4f7fa;
  --bg-card: #ffffff;
  --shadow-soft: 0 4px 12px rgba(0, 0, 0, 0.05);

  /* 灰阶控制 */
  --bg-main: #f9fafb;
  --text-main: #1f2937;
  --text-muted: #6b7280;
  --border-light: #f3f4f6;

  /* 间距与圆角 */
  --radius-md: 12px;
  --radius-sm: 8px;
  --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);

  /* 表格密度 — 舒适档（默认） */
  --erp-table-row-height: 54px;
  --erp-table-cell-padding-y: 12px;
  --erp-table-cell-padding-x: 16px;
  --erp-table-header-padding-y: 14px;
}

/**
 * 紧凑档：由 body[data-erp-density="compact"] 驱动（见 erp_density_toggle.js）
 */
body[data-erp-density="compact"] {
  --erp-table-row-height: 36px;
  --erp-table-cell-padding-y: 6px;
  --erp-table-header-padding-y: 8px;
}

/* 强制重置 Bootstrap：去线化卡片 + 仅水平分割表格 */
.card {
  border: none;
  box-shadow: var(--shadow-soft);
  border-radius: var(--radius-md);
}
.table thead th {
  background-color: var(--border-light);
  border-bottom: 1px solid #f3f4f6;
  border-left: none;
  border-right: none;
  color: var(--text-muted);
  font-size: 12px;
  text-transform: uppercase;
}
.table td {
  vertical-align: middle;
  border-top: 1px solid #f3f4f6;
  border-left: none;
  border-right: none;
}
.table.table-bordered {
  border: none;
}
.table.table-bordered td,
.table.table-bordered th {
  border-left: none;
  border-right: none;
}
