/* ============================================================
 * 生产总览（驾驶舱）视觉层 v3 —— 20261004DV
 * ------------------------------------------------------------
 * 取代旧 style-dashboard-v2.css 的固定色方案。
 *
 * 为什么要重写（三个实测结论）：
 *  1. v2 用 #dcfce7 绿表头 / #fef9c3 黄底 / #1f5eff 蓝 等 20+ 个写死色，
 *     四套主题（默认蓝 / Claude 橙 / Google 蓝 / M3 青绿）下总览页
 *     实测 statBg / cardBorder / tableThBg 三者完全一致 —— 主题对它无效。
 *  2. 前端已改为输出语义 class（tone-ok / lv1..lv4 / dv-block 等），
 *     旧 v2 的 nth-child(5n+N) 彩带轮换不再匹配。
 *  3. 「Excel 看板风」（绿表头 + 黄底月条）与其余 20+ 页的卡片语言不一致，
 *     属于孤立风格。本版回到全站统一的「卡片 + 主题色」基调。
 *
 * 作用域：#tab-dashview（不污染其它页面）
 * 色彩：一律走 var(--primary) / var(--dv-*) 语义槽，主题可覆盖
 * ============================================================ */

/* ── 语义色槽 ──────────────────────────────────────────────────────
 * 关键：直接复用全站已有的 --green / --red / --amber 及各自 -soft 变体
 * （四套主题都定义了，实测 default / claude / google / m3 全覆盖），
 * 而不是自定义一套固定十六进制 —— 后者正是 v2 主题失效的根因。
 * 新增的 --dv-* 只是别名，主题若要单独调总览页色，改这里即可。 */
#tab-dashview {
  --dv-ok: var(--green, #16a34a);
  --dv-ok-soft: var(--green-soft, #ecfdf5);
  --dv-warn: var(--amber, #b45309);
  --dv-warn-soft: var(--amber-soft, #fffbeb);
  --dv-hl: var(--red, #dc2626);
  --dv-hl-soft: var(--red-soft, #fef2f2);
  --dv-info: var(--primary, #2563eb);
  --dv-info-soft: var(--primary-soft, #eff6ff);
  /* 热力图 5 档：0=无产出，1..4 由低到高。
     用主色与卡片色的插值做单色相明度阶，避免彩虹色在四套主题下打架。
     color-mix 在不支持的老浏览器上整条失效 → 回落到 --gray-*，
     此时热力图变单色灰阶（信息仍可读，只是少了区分度），不会破版。 */
  --dv-heat-0: var(--gray-100, #f1f5f9);
  --dv-heat-1: color-mix(in srgb, var(--primary, #2563eb) 14%, var(--card, #fff));
  --dv-heat-2: color-mix(in srgb, var(--primary, #2563eb) 32%, var(--card, #fff));
  --dv-heat-3: color-mix(in srgb, var(--primary, #2563eb) 55%, var(--card, #fff));
  --dv-heat-4: var(--primary, #2563eb);
}

/* ── 1. 区块容器与标题（统一层级：整页只有这一种标题形态）── */
#tab-dashview .dv-block {
  background: var(--card-2-bg, var(--card));
  border: 1px solid var(--card-2-border, var(--border));
  border-radius: var(--radius-md, 12px);
  box-shadow: var(--shadow, 0 1px 2px rgba(16, 24, 40, .04));
  padding: 14px 16px 16px;
  margin-top: 14px;
}
#tab-dashview .dv-block-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  min-height: 22px;
}
#tab-dashview .dv-block-title > b {
  font-size: 14.5px;
  font-weight: 700;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex: none;
}
/* 主题色竖条：与全站 .dv-wsblock-title::before 同一手法 */
#tab-dashview .dv-block-title > b::before {
  content: '';
  width: 4px;
  height: 15px;
  border-radius: 2px;
  background: var(--primary, #2563eb);
  flex: none;
}
#tab-dashview .dv-block-title > span {
  font-size: 11.5px;
  color: var(--text-muted);
  font-weight: 400;
}
#tab-dashview .dv-block-x { margin-left: auto; flex: none; }
#tab-dashview .dv-ok-tip { color: var(--dv-ok); font-weight: 600; }

/* ── 2. 页头：日期 + 导出（去掉大渐变横幅，改为主色描边条）── */
#tab-dashview .dv-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 14px !important;
  margin-bottom: 12px;
  background: var(--card);
  border: 1px solid var(--border);
  border-left: 3px solid var(--primary, #2563eb);
  border-radius: var(--radius-md, 12px);
}
#tab-dashview .dv-head .dv-date {
  color: var(--text) !important;
  font-weight: 600;
  font-size: 13px !important;
}
#tab-dashview .dv-date { color: var(--text-muted); }
#tab-dashview .dv-export-btn {
  margin-left: auto;
  background: var(--btn-outline-bg, var(--card));
  color: var(--btn-outline-fg, var(--primary));
  border: 1px solid var(--btn-outline-border, var(--primary));
  border-radius: var(--btn-outline-radius, var(--radius-sm));
  padding: 5px 16px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  transition: background .15s ease;
}
#tab-dashview .dv-export-btn:hover { background: var(--btn-outline-bg-hover, var(--primary-soft)); }

/* ── 3. 语义色工具类（替代全部内联硬编码色）── */
#tab-dashview .tone-ok { color: var(--dv-ok) !important; }
#tab-dashview .tone-warn { color: var(--dv-warn) !important; }
#tab-dashview .tone-hl { color: var(--dv-hl) !important; }
#tab-dashview .tone-plain { color: var(--text) !important; }
#tab-dashview .tone-bad { color: var(--dv-hl) !important; }
#tab-dashview .dv-warn { color: var(--dv-hl); font-weight: 600; }
#tab-dashview .dv-up { color: var(--dv-ok); font-weight: 700; }
#tab-dashview .dv-dn { color: var(--dv-hl); font-weight: 700; }
#tab-dashview .dv-click {
  cursor: pointer;
  border-bottom: 1px dashed currentColor;
  transition: opacity .15s;
}
#tab-dashview .dv-click:hover { opacity: .72; }

/* ── 4. KPI 指标卡：左侧色条（取代 nth-child 五色轮换）── */
#tab-dashview .dv-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(178px, 1fr));
  gap: 12px;
  margin-bottom: 0;
}
#tab-dashview .dv-stat {
  position: relative;
  overflow: hidden;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 12px);
  padding: 13px 14px 12px 16px;
  text-align: left;
  transition: box-shadow .15s ease, transform .15s ease;
}
#tab-dashview .dv-stat::before {
  content: '';
  position: absolute;
  top: 0; left: 0; bottom: 0;
  width: 3px;
  background: var(--gray-300, #cbd5e1);
}
/* 色条跟随该卡的语义 class（.tone-* 由 dashStat 输出在 .dv-vl 上，
   这里用 :has() 反向给卡片上色；不支持 :has 的浏览器退化为中性灰，功能不受影响）*/
#tab-dashview .dv-stat:has(.tone-ok)::before { background: var(--dv-ok); }
#tab-dashview .dv-stat:has(.tone-hl)::before,
#tab-dashview .dv-stat:has(.tone-bad)::before { background: var(--dv-hl); }
#tab-dashview .dv-stat:has(.tone-warn)::before { background: var(--dv-warn); }
#tab-dashview .dv-stat:has(.tone-plain)::before { background: var(--primary, #2563eb); }
#tab-dashview .dv-stat:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(16, 24, 40, .08);
}
#tab-dashview .dv-stat .dv-lb {
  font-size: 12px;
  color: var(--text-muted);
  font-weight: 500;
}
#tab-dashview .dv-stat .dv-vl {
  font-size: 23px;
  font-weight: 700;
  letter-spacing: -.3px;
  color: var(--text);
  margin: 3px 0 2px;
  line-height: 1.2;
}
#tab-dashview .dv-stat .dv-sub { font-size: 11px; color: var(--text-muted); }
/* 今日未录数：整区降饱和 + 去染色，避免「5 张卡全 0%」被读成全线停产。
   ★ 作用域要收窄：只有「随今日产量归零」的卡（实际总产量 / 达成率 / 产能负载）
     才该降饱和。交期风险、未排订单是订单侧数据，与今日是否录数无关，
     且恰恰是需要被看见的告警 —— 一并灰掉会把真实风险弱化（实测线上「4 单」
     变成浅灰，几乎不可读）。故用 tone-keep 标记排除。 */
#tab-dashview .dv-stats.dv-nodata .dv-stat:not(:has(.tone-keep)) {
  background: var(--gray-50, #f8fafc);
}
#tab-dashview .dv-stats.dv-nodata .dv-stat:not(:has(.tone-keep))::before {
  background: var(--gray-300, #cbd5e1);
}
#tab-dashview .dv-stats.dv-nodata .dv-stat:not(:has(.tone-keep)) .dv-vl {
  color: var(--gray-400, #94a3b8) !important;
}
#tab-dashview .dv-inc {
  font-style: normal;
  font-size: 10.5px;
  color: var(--dv-warn);
  background: var(--dv-warn-soft);
  border: 1px solid color-mix(in srgb, var(--dv-warn) 26%, transparent);
  border-radius: var(--radius-xs, 4px);
  padding: 1px 5px;
  margin-left: 5px;
  white-space: nowrap;
  display: inline-block;
}

/* ── 5. 月度汇总条（取代黄底高亮，用主色淡底）── */
#tab-dashview .dv-month {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 16px;
  background: var(--dv-info-soft);
  border: 1px solid color-mix(in srgb, var(--primary, #2563eb) 20%, transparent);
  border-radius: var(--radius-md, 12px);
  padding: 9px 14px;
  font-size: 12.5px;
  color: var(--text);
  margin: 12px 0 0;
}
#tab-dashview .dv-month-lb { font-weight: 700; }
#tab-dashview .dv-month-rg { color: var(--text-muted); font-size: 11.5px; }
#tab-dashview .dv-month-it b { font-weight: 700; }
#tab-dashview .dv-month .dv-inc { margin-left: 0; }

/* ── 6. 缝工结构 ── */
#tab-dashview .dv-staff-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 14px;
}
#tab-dashview .dv-staff-kpi {
  background: var(--gray-50, #f8fafc);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 12px);
  padding: 11px 14px;
}
#tab-dashview .dv-staff-kpi-v {
  font-size: 22px;
  font-weight: 700;
  color: var(--text);
  line-height: 1.2;
}
#tab-dashview .dv-staff-kpi-t { font-size: 11.5px; color: var(--text-muted); margin-top: 2px; }
#tab-dashview .dv-staff-kpi-n { color: var(--text-muted); }
#tab-dashview .dv-staff-charts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
#tab-dashview .dv-chart-box {
  background: var(--gray-50, #f8fafc);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 12px);
  padding: 10px 12px;
  min-width: 0;
}
#tab-dashview .dv-chart-t {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 2px;
}
#tab-dashview .dv-chart { height: 218px; width: 100%; }
#tab-dashview .dv-staff-note { border-color: color-mix(in srgb, var(--dv-warn) 30%, transparent); }
#tab-dashview .dv-note-txt { margin: 0; font-size: 12.5px; color: var(--text-muted); line-height: 1.7; }

/* ── 7. 工厂卡：三段式（今日 / 本月 / 风险人力）── */
#tab-dashview .dv-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(268px, 1fr));
  gap: 12px;
}
#tab-dashview .dv-fcard {
  display: flex;
  flex-direction: column;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 12px);
  overflow: hidden;
  cursor: pointer;
  transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
#tab-dashview .dv-fcard.tone-bad { border-color: color-mix(in srgb, var(--dv-hl) 45%, var(--border)); }
#tab-dashview .dv-fcard:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(16, 24, 40, .10);
  border-color: color-mix(in srgb, var(--primary, #2563eb) 40%, var(--border));
}
#tab-dashview .dv-fcard h4 {
  margin: 0;
  padding: 9px 12px;
  background: var(--gray-50, #f8fafc);
  border-bottom: 1px solid var(--border);
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}
#tab-dashview .dv-fcard h4 .dv-fname {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
#tab-dashview .dv-fcard h4 .dv-fcode {
  font-size: 10.5px;
  color: var(--text-muted);
  font-weight: 400;
  flex: none;
  font-variant-numeric: tabular-nums;
}
#tab-dashview .dv-fcard h4 .dv-pill { margin-left: auto; flex: none; }
#tab-dashview .dv-fsec { padding: 9px 12px; border-bottom: 1px dashed var(--gray-200, #e4e9f2); }
#tab-dashview .dv-fsec-last { border-bottom: 0; margin-top: auto; }
#tab-dashview .dv-fsec-t {
  font-size: 10.5px;
  color: var(--text-muted);
  font-weight: 600;
  letter-spacing: .3px;
  margin-bottom: 5px;
}
/* 计划/实际/达成率 三元组：等宽三列，数字右对齐便于纵向比较 */
#tab-dashview .dv-pair {
  display: grid;
  grid-template-columns: auto 1fr auto 1fr auto 1fr;
  align-items: baseline;
  gap: 3px 5px;
  margin-bottom: 6px;
}
#tab-dashview .dv-pair-k { font-size: 10.5px; color: var(--text-muted); white-space: nowrap; }
#tab-dashview .dv-pair-v {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#tab-dashview .dv-fload {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 7px;
}
#tab-dashview .dv-fload-k { font-size: 10.5px; color: var(--text-muted); white-space: nowrap; }
#tab-dashview .dv-fload-v { font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; }
#tab-dashview .dv-fmeta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 6px;
}
#tab-dashview .dv-fmeta > span:first-child { flex: none; }
#tab-dashview .dv-fmeta > b { color: var(--text); font-weight: 700; font-variant-numeric: tabular-nums; }
#tab-dashview .dv-fmeta-x { margin-left: auto; flex: none; }
#tab-dashview .dv-fchips { display: flex; gap: 6px; flex-wrap: wrap; }
#tab-dashview .dv-chip {
  font-size: 10.5px;
  padding: 2px 7px;
  border-radius: var(--radius-full, 999px);
  border: 1px solid transparent;
  white-space: nowrap;
}
#tab-dashview .dv-chip b { font-weight: 700; margin-left: 2px; }
#tab-dashview .dv-chip.ok { background: var(--dv-ok-soft); color: var(--dv-ok); border-color: color-mix(in srgb, var(--dv-ok) 22%, transparent); }
#tab-dashview .dv-chip.warn { background: var(--dv-warn-soft); color: var(--dv-warn); border-color: color-mix(in srgb, var(--dv-warn) 26%, transparent); }
#tab-dashview .dv-chip.bad { background: var(--dv-hl-soft); color: var(--dv-hl); border-color: color-mix(in srgb, var(--dv-hl) 26%, transparent); }

/* ── 8. 进度条（统一 .dv-bar / .dv-mbar 一套，tone 决定颜色）── */
#tab-dashview .dv-bar {
  height: 6px;
  border-radius: var(--radius-xs, 3px);
  background: var(--gray-200, #e4e9f2);
  overflow: hidden;
  width: 100%;
}
#tab-dashview .dv-bar > i {
  display: block;
  height: 100%;
  border-radius: var(--radius-xs, 3px);
  background: var(--gray-400, #94a3b8);
  transition: width .3s ease;
}
#tab-dashview .dv-bar.tone-ok > i { background: var(--dv-ok); }
#tab-dashview .dv-bar.tone-warn > i { background: var(--dv-warn); }
#tab-dashview .dv-bar.tone-hl > i { background: var(--dv-hl); }

/* ── 9. 迷你趋势条 ── */
#tab-dashview .dv-spark {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 18px;
  margin-left: auto;
}
#tab-dashview .dv-spark > i {
  width: 5px;
  min-height: 2px;
  border-radius: 1.5px;
  background: color-mix(in srgb, var(--primary, #2563eb) 55%, var(--card, #fff));
}
#tab-dashview .dv-spark > i.zero { background: var(--gray-200, #e4e9f2); }
#tab-dashview .dv-spark > i.last { background: var(--primary, #2563eb); }

/* ── 10. 胶囊 / 标签 ── */
#tab-dashview .dv-pill {
  display: inline-block;
  padding: 2px 8px;
  border-radius: var(--radius-full, 999px);
  font-size: 10.5px;
  font-weight: 700;
  white-space: nowrap;
}
#tab-dashview .dv-pill.ok { background: var(--dv-ok-soft); color: var(--dv-ok); }
#tab-dashview .dv-pill.warn { background: var(--dv-warn-soft); color: var(--dv-warn); }
#tab-dashview .dv-pill.bad { background: var(--dv-hl-soft); color: var(--dv-hl); }
#tab-dashview .dv-capmiss {
  display: inline-block;
  background: var(--dv-warn-soft);
  color: var(--dv-warn);
  border: 1px solid color-mix(in srgb, var(--dv-warn) 26%, transparent);
  font-size: 10.5px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: var(--radius-sm, 6px);
  cursor: pointer;
}
#tab-dashview .dv-capmiss:hover { background: var(--dv-warn); color: #fff; }

/* ── 11. 热力图（色阶走语义变量 + 当日高亮 + 图例）── */
#tab-dashview .dv-heat-wrap { overflow-x: auto; padding-bottom: 2px; }
#tab-dashview .dv-heat-cols,
#tab-dashview .dv-heat-row {
  display: grid;
  grid-template-columns: 96px repeat(var(--dv-days, 31), minmax(0, 1fr));
  gap: 3px;
  min-width: 640px;
}
#tab-dashview .dv-heat-cols { margin-bottom: 4px; }
#tab-dashview .dv-heat-col {
  font-size: 9.5px;
  color: var(--text-muted);
  text-align: center;
  font-variant-numeric: tabular-nums;
}
#tab-dashview .dv-heat-col.now { color: var(--primary, #2563eb); font-weight: 700; }
#tab-dashview .dv-heat-row { margin-bottom: 3px; align-items: center; }
#tab-dashview .dv-heat-fac {
  font-size: 10.5px;
  color: var(--text-muted);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 6px;
}
#tab-dashview .dv-heat-cell {
  height: 17px;
  border-radius: 2px;
  min-width: 0;
  background: var(--dv-heat-0);
}
#tab-dashview .dv-heat-cell.lv1 { background: var(--dv-heat-1); }
#tab-dashview .dv-heat-cell.lv2 { background: var(--dv-heat-2); }
#tab-dashview .dv-heat-cell.lv3 { background: var(--dv-heat-3); }
#tab-dashview .dv-heat-cell.lv4 { background: var(--dv-heat-4); }
#tab-dashview .dv-heat-cell.lv0 { background: var(--dv-heat-0); }
#tab-dashview .dv-heat-cell.future {
  background: transparent;
  border: 1px dashed var(--gray-200, #e4e9f2);
}
#tab-dashview .dv-heat-cell.now { box-shadow: inset 0 0 0 1.5px var(--text); }
#tab-dashview .dv-heat-legend {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-left: auto;
  font-size: 10.5px;
  color: var(--text-muted);
  flex-wrap: wrap;
}
#tab-dashview .dv-lg { display: inline-flex; align-items: center; gap: 4px; }
#tab-dashview .dv-lg > i {
  width: 11px; height: 11px;
  border-radius: 2px;
  display: inline-block;
  background: var(--gray-200, #e4e9f2);
}
#tab-dashview .dv-lg > i.lv1 { background: var(--dv-heat-1); }
#tab-dashview .dv-lg > i.lv2 { background: var(--dv-heat-2); }
#tab-dashview .dv-lg > i.lv3 { background: var(--dv-heat-3); }
#tab-dashview .dv-lg > i.lv4 { background: var(--dv-heat-4); }
#tab-dashview .dv-lg > i.lv0 { background: var(--dv-heat-0); border: 1px solid var(--gray-200, #e4e9f2); }
#tab-dashview .dv-lg > i.future { background: transparent; border: 1px dashed var(--gray-300, #cbd5e1); }
#tab-dashview .dv-lg-lb { font-weight: 600; }

/* ── 12. 平衡建议 / 款号风险 ── */
#tab-dashview .dv-bal-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 2px;
  border-bottom: 1px dashed var(--gray-200, #e4e9f2);
  font-size: 12px;
  flex-wrap: wrap;
}
#tab-dashview .dv-bal-row:last-child { border-bottom: 0; }
#tab-dashview .dv-bal-from, #tab-dashview .dv-bal-to { font-weight: 600; }
#tab-dashview .dv-bal-arrow { color: var(--text-muted); flex: none; }
#tab-dashview .dv-bal-spare { color: var(--text-muted); }
#tab-dashview .dv-bal-spare b { color: var(--text); font-weight: 700; }
#tab-dashview .dv-bal-btn { margin-left: auto; flex: none; }

#tab-dashview .dv-rs-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 2px;
  border-bottom: 1px dashed var(--gray-200, #e4e9f2);
  font-size: 12px;
  flex-wrap: wrap;
}
#tab-dashview .dv-rs-row:last-child { border-bottom: 0; }
#tab-dashview .dv-rs-style { min-width: 168px; display: flex; flex-direction: column; gap: 1px; }
#tab-dashview .dv-rs-style > b { font-size: 12.5px; color: var(--text); }
#tab-dashview .dv-rs-fac { font-size: 10.5px; color: var(--text-muted); }
#tab-dashview .dv-rs-dead { color: var(--text-muted); font-variant-numeric: tabular-nums; }
#tab-dashview .dv-rs-gap { color: var(--dv-hl); font-weight: 600; white-space: nowrap; }

/* ── 13. 表格（下钻视图）── */
#tab-dashview .dv-table-wrap { overflow-x: auto; }
#tab-dashview .dv-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius-md, 12px);
  overflow: hidden;
  font-size: 12.5px;
}
#tab-dashview .dv-table th {
  background: var(--gray-50, #f8fafc);
  color: var(--text-muted);
  font-size: 11.5px;
  font-weight: 600;
  padding: 8px 12px;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
  text-align: center;
}
#tab-dashview .dv-table td {
  padding: 8px 12px;
  border-bottom: 1px solid var(--gray-100, #f1f5f9);
  text-align: center;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
#tab-dashview .dv-table tbody tr:last-child td { border-bottom: 0; }
#tab-dashview .dv-wsrow { cursor: pointer; transition: background .12s; }
#tab-dashview .dv-wsrow:hover { background: var(--primary-soft, #eff6ff); }
#tab-dashview .dv-wsblock { margin-top: 14px; }
#tab-dashview .dv-wsblock-title {
  font-size: 12.5px;
  font-weight: 700;
  color: var(--text);
  padding: 6px 0;
  display: flex;
  align-items: center;
  gap: 7px;
}
#tab-dashview .dv-wsblock-title::before {
  content: '';
  width: 3px; height: 14px;
  background: var(--primary, #2563eb);
  border-radius: 2px;
  display: inline-block;
}
#tab-dashview .dv-wsblock-n {
  font-size: 10.5px;
  color: var(--text-muted);
  background: var(--gray-100, #f1f5f9);
  border-radius: var(--radius-full, 999px);
  padding: 1px 7px;
  font-weight: 600;
}

/* ── 14. 下钻头部 / 提示 / 空态 ── */
#tab-dashview .dv-drill-head {
  display: flex;
  align-items: center;
  gap: 11px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
#tab-dashview .dv-drill-title { font-size: 14.5px; font-weight: 700; color: var(--text); }
#tab-dashview .dv-drill-date { color: var(--text-muted); font-size: 12px; }
#tab-dashview .dv-tip {
  font-size: 11.5px;
  color: var(--text-muted);
  margin-top: 11px;
}
#tab-dashview .dv-empty {
  background: var(--card);
  border: 1px dashed var(--gray-300, #cbd5e1);
  border-radius: var(--radius-md, 12px);
  padding: 40px;
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  margin-top: 14px;
}
#tab-dashview .dv-loading {
  text-align: center;
  padding: 60px;
  color: var(--primary, #2563eb);
  font-weight: 600;
}

/* ── 15. 窄屏：两栏图表降为单栏，KPI 降为两列 ── */
@media (max-width: 900px) {
  #tab-dashview .dv-staff-charts { grid-template-columns: 1fr; }
  #tab-dashview .dv-stats { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
}
