/* ============================================================
   版式 v3 · 常规网页骨架（2026-11-05）
   目标：把「一堆带边框的控件」改成「一个正常的网站页面」
     ① 字号分级：正文 15px，标题 26/19/15px，最小 12px（不再满屏 10-12px）
     ② 只有一个页头：标题 + 操作 + 页签（chrome.js 合并原 toolbar/tabs）
     ③ 内容区通栏：表格/图表不再层层描边，靠留白分组
     ④ 侧栏：白底、线性图标、降低信息噪音
     ⑤ 页脚：退化为一行小字说明
   加载顺序：style.css → theme-d.css → 本文件 → 页面内联样式
   （页面内联样式仍可覆盖本文件，页面级配色不受影响）
   ============================================================ */

/* ---------- 1) 设计令牌 ---------- */
:root {
  --v3-text: #14181f;
  --v3-sub: #59616e;
  --v3-muted: #8b95a3;
  --v3-line: #e7eaee;
  --v3-line-soft: #f1f3f6;
  --v3-bg: #f7f8fa;
  --v3-surface: #ffffff;
  --v3-brand: #111111;
  --v3-hover: #f4f5f7;

  --v3-fs-1: 26px;   /* 页面标题 */
  --v3-fs-2: 19px;   /* 段落标题 */
  --v3-fs-3: 15.5px; /* 小标题 / 图表标题 */
  --v3-fs-4: 15px;   /* 正文 */
  --v3-fs-5: 13px;   /* 次级文字 / 表格 */
  --v3-fs-6: 12px;   /* 最小：标签、脚注 */

  --v3-r: 12px;
  --v3-pad: clamp(16px, 1.6vw, 28px);
}

html { -webkit-text-size-adjust: 100%; }
body {
  background: var(--v3-bg);
  color: var(--v3-text);
  font-size: var(--v3-fs-4);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* ---------- 2) 单一页头（chrome.js 生成 .site-head） ---------- */
.site-head {
  position: sticky;
  top: 0;
  z-index: 95;
  background: rgba(255, 255, 255, .94);
  backdrop-filter: saturate(160%) blur(10px);
  border-bottom: 1px solid var(--v3-line);
}
.sh-row {
  display: flex;
  align-items: center;
  gap: 16px;
  width: min(96%, var(--page-max, 2560px));
  margin: 0 auto;
  padding: 14px var(--v3-pad) 0;
}
.sh-title {
  margin: 0;
  font-size: var(--v3-fs-1);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.25;
  color: var(--v3-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sh-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.sh-tabs {
  display: flex;
  align-items: center;
  gap: 4px;
  width: min(96%, var(--page-max, 2560px));
  margin: 0 auto;
  padding: 8px var(--v3-pad) 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.sh-tabs::-webkit-scrollbar { display: none; }
.sh-tabs .tab,
.sh-tabs .view-tab {
  flex: 0 0 auto;
  border: 0;
  background: none;
  border-radius: 0;
  border-bottom: 2px solid transparent;
  padding: 8px 2px 10px;
  margin-right: 18px;
  font-size: var(--v3-fs-4);
  font-weight: 500;
  color: var(--v3-sub);
  cursor: pointer;
  font-family: inherit;
  transition: color .15s, border-color .15s;
}
.sh-tabs .tab:hover,
.sh-tabs .view-tab:hover { color: var(--v3-text); border-bottom-color: #d5d9de; }
.sh-tabs .tab.active,
.sh-tabs .view-tab.active {
  color: var(--v3-text);
  font-weight: 650;
  border-bottom-color: var(--v3-brand);
  background: none;
}
.sh-tabs .tab.active::after { display: none; }   /* 旧的下划线伪元素交给 border-bottom */
.sh-tabs .view-tab.active { background: none; box-shadow: none; }

/* 旧的双横条（工具栏 + 页签）在合并后不再参与布局；未合并时保持可用 */
body.has-site-head .toolbar,
body.has-site-head .tabs { display: none; }

/* ---------- 3) 内容区 ---------- */
main.container {
  width: min(96%, var(--page-max, 2560px));
  margin: 0 auto;
  padding: 20px var(--v3-pad) 56px;
  min-height: 60vh;
}
.toolbar, .tabs { border-bottom: 1px solid var(--v3-line); }

/* 段落标题统一：图表卡标题、供热/趋势标题 */
.chart-title,
.heat-chart-head h3,
.trend-desc + * h3 {
  font-size: var(--v3-fs-3);
  font-weight: 650;
  color: var(--v3-text);
}
.chart-title { text-align: left; padding: 16px 18px 6px; }
.heat-chart-head { padding: 16px 18px 4px; }
.heat-chart-head .center-title { position: static; transform: none; left: auto; }

/* 正文里零散的说明文字 */
.trend-desc {
  font-family: inherit;
  font-size: var(--v3-fs-4);
  line-height: 1.75;
  color: var(--v3-text);
  background: var(--v3-surface);
  border: 1px solid var(--v3-line);
  border-radius: var(--v3-r);
  padding: 16px 20px;
}

/* 面包屑式次级导航卡片（首页工作台）：基准宽调小，6 张卡在 1920 下整行排布 */
.wb-boards > * { flex-basis: 180px; }

/* 首页区块标题与页签重复：并入页头后只保留日期，不再重复「今日速览」 */
body.has-site-head .wb-title { font-size: 0; }
body.has-site-head .wb-title .wb-date { font-size: var(--v3-fs-5); }

/* ---------- 4) 卡片：指标区保留卡片，图表区只留白 ---------- */
.kpi-card,
.heat-stat,
.wb-kpi,
.wb-steps .st,
.wb-boards .bd,
.nav-card {
  background: var(--v3-surface);
  border: 1px solid var(--v3-line);
  border-radius: var(--v3-r);
  box-shadow: none;
}
.kpi-grid, .heat-grid, .wb-kpis, .wb-boards, .nav-cards, .wb-steps { gap: 14px; }
.kpi-label, .wb-lab, .hs-label { font-size: var(--v3-fs-5); color: var(--v3-sub); }
.kpi-value, .wb-val { font-size: 28px; font-weight: 650; letter-spacing: -0.01em; color: var(--v3-text); }
.kpi-sub, .hs-sub { font-size: var(--v3-fs-6); color: var(--v3-muted); }
.heat-stat .hs-value { font-size: 28px; font-family: inherit; font-weight: 650; color: var(--v3-text); }
.heat-stat .hs-time { font-size: 22px; font-family: inherit; font-weight: 650; }

/* 图表卡：去掉「Excel 网格」外框，改为独立卡片 + 16px 间距 */
.chart-grid {
  gap: 16px;
  background: transparent;
  border: 0;
  border-radius: 0;
  overflow: visible;
}
.chart-card {
  background: var(--v3-surface);
  border: 1px solid var(--v3-line);
  border-radius: var(--v3-r);
  overflow: hidden;
}
.chart-card.picker-open { overflow: visible; }

/* 筛选/切换条：不再是一张带边框的卡，改为内容区顶部的一行控件 */
.table-toolbar {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  padding: 0 0 10px;
  margin-bottom: 10px;
  border-bottom: 1px solid var(--v3-line-soft);
}
.ud-ico, .ud-ico i { font-size: 0; }
.ud-ico svg { width: 16px; height: 16px; display: inline-block; vertical-align: -3px; }

/* ---------- 5) 表格：通栏 + 细横线，不再整格描黑边 ---------- */
.table-wrap,
.daily-wrap,
.xl-panels {
  border: 1px solid var(--v3-line);
  border-radius: var(--v3-r);
  background: var(--v3-surface);
}
.xl-table { font-family: inherit; font-size: var(--v3-fs-5); font-weight: 400; }
.xl-table th, .xl-table td {
  border: 0;
  border-bottom: 1px solid var(--v3-line-soft);
  padding: 7px 8px;
  font-weight: 400;
  line-height: 1.45;
}
.xl-table thead th {
  background: #fafbfc;
  color: var(--v3-sub);
  font-size: var(--v3-fs-6);
  font-weight: 600;
  white-space: nowrap;
}
.xl-table td.cat { font-weight: 600; color: var(--v3-text); border-right: 1px solid var(--v3-line-soft); }
.daily-table { font-size: var(--v3-fs-5); }
.daily-table thead tr:first-child th {
  background: #fafbfc;
  color: var(--v3-sub);
  font-size: var(--v3-fs-6);
  font-weight: 650;
  border-color: var(--v3-line);
}
.daily-table thead tr:nth-child(2) th { background: #fff; font-size: var(--v3-fs-6); }
.daily-table thead th { border-color: var(--v3-line); }
.daily-table td { border-bottom: 1px solid var(--v3-line-soft); }
.daily-table tbody tr:nth-child(even) td { background: #fcfcfd; }

/* ---------- 6) 侧栏：白底 + 线性图标 + 降噪 ---------- */
.side-nav {
  width: var(--side-w, 224px);
  background: var(--v3-surface);
  color: var(--v3-text);
  border-right: 1px solid var(--v3-line);
  box-shadow: none;
}
.side-name { font-size: 14px; font-weight: 700; letter-spacing: 0; color: var(--v3-text); }
.side-group { font-size: 11.5px; font-weight: 650; letter-spacing: .06em; color: var(--v3-muted); }
.side-group:hover { background: var(--v3-hover); color: var(--v3-text); }
.side-group.on { color: var(--v3-text); background: var(--v3-hover); }
.side-link { font-size: var(--v3-fs-5); color: var(--v3-sub); border-radius: 8px; }
.side-link:hover { background: var(--v3-hover); color: var(--v3-text); }
.side-link.sf-cur { background: var(--v3-hover); color: var(--v3-text); font-weight: 600; }
.si-ico {
  width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 0;                  /* 原 emoji 由 chrome.js 换成 SVG 后隐藏文字 */
  opacity: .85;
  color: inherit;
}
.si-ico svg { width: 17px; height: 17px; display: block; }
.side-star { opacity: 0; transition: opacity .15s; }
.side-link:hover .side-star, .side-link.sf-cur .side-star, .side-star.faved { opacity: 1; }
.side-search input {
  border: 1px solid var(--v3-line);
  border-radius: 9px;
  background: var(--v3-surface);
  color: var(--v3-text);
  font-size: var(--v3-fs-5);
  padding: 8px 11px;
}
.side-fav-title { font-size: var(--v3-fs-6); color: var(--v3-muted); font-weight: 600; }

/* ---------- 7) 按钮 / 输入 ---------- */
.btn {
  border: 1px solid var(--v3-line);
  background: var(--v3-surface);
  color: var(--v3-text);
  border-radius: 9px;
  font-size: var(--v3-fs-5);
  padding: 7px 13px;
  box-shadow: none;
}
.btn:hover { background: var(--v3-hover); border-color: #d9dde3; color: var(--v3-text); }
.btn-sm { padding: 5px 10px; font-size: var(--v3-fs-5); }
.btn.primary { background: var(--v3-brand); border-color: var(--v3-brand); color: #fff; }
.btn.primary:hover { background: #000; color: #fff; }
.btn-nav { border-radius: 9px; }
.zoom-val.auto { color: var(--v3-text); border-color: var(--v3-line); }
.date-input, .cmp-date {
  border: 1px solid var(--v3-line);
  border-radius: 9px;
  font-size: var(--v3-fs-5);
  padding: 6px 10px;
  background: var(--v3-surface);
}

/* ---------- 8) 页脚：一行小字，不再堆运维长句 ---------- */
.site-footer {
  width: min(96%, var(--page-max, 2560px));
  margin: 0 auto;
  padding: 18px var(--v3-pad) 28px;
  border-top: 1px solid var(--v3-line);
  font-size: var(--v3-fs-6);
  color: var(--v3-muted);
  line-height: 1.9;
}
.site-footer a { color: var(--v3-sub); text-decoration: none; }
.site-footer a:hover { text-decoration: underline; }

/* ---------- 10) 页面级收口：残留 token / Excel 版式表格统一 ---------- */
/* 有页面在自己的内联 <style> 里重写了 :root，用 html:root 提权压回统一色板 */
html:root {
  --radius: 12px;
  --shadow: none;
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
  --bg: #f7f8fa;
  --card: #ffffff;
  --border: #e7eaee;
  --line: #e7eaee;
  --text: #14181f;
  --text-sub: #59616e;
  --primary: #111111;
  --primary-light: #f4f5f7;
  --primary-dark: #000000;
  --brand: #111111;
  --ink: #14181f;
  --brand-grad: #111111;
}
html body .heat-chart-card,
html body .heat-table-card,
html body .chart-card,
html body .nav-card,
html body .kpi-card {
  border-radius: var(--v3-r);
  border-color: var(--v3-line);
}

/* 负荷信息统计表：只去掉全格黑线，色块保持旧站原色（周末蓝 / 西电绿 / 检修蓝） */
html body .xl-table th,
html body .xl-table td {
  border: 0;
  border-bottom: 1px solid var(--v3-line-soft);
  background: #fff;
  color: var(--v3-text);
  font-weight: 400;
}
html body .xl-table thead th {
  background: #fafbfc;
  color: var(--v3-sub);
  font-weight: 600;
  font-size: 12px;
}
html body .xl-table td.cat {
  background: #fff;
  font-weight: 600;
  border-right: 1px solid var(--v3-line-soft);
}
html body .xl-table td.date {
  background: #fff;
  font-weight: 600;
  font-size: 14px;
  color: var(--v3-text);
}
/* 2026-11-05 恢复旧站原始色块：周末 #cbd5f2 / 西电 #00b050 / 检修 #00b0f0 */
html body .xl-table td.date.wk { background: #cbd5f2; color: #000; }
html body .xl-table td.v.west-v { background: #00b050; color: #000; }
html body .xl-table td.fix-val { background: #00b0f0; color: #000; }
html body .xl-table tbody tr:hover td.v:not(.west-v) { background: #fff8d6; }
html body .xl-table tbody tr:hover td.fix-val { background: #33c2f4; }

/* 供热 / 每日统计：斑马线与悬停同步柔和化 */
html body .heat-table tbody tr:nth-child(even) td:not(.ht-unit) { background: #fbfcfd; }
html body .heat-table tbody tr:hover td { background: #f4f6f9; }
html body .daily-table tbody tr:hover td { background: #f7f9fc; }

/* ---------- 11) 首页工作台：卡片墙 → 指标条 / 步骤流 / 入口清单 ---------- */
/* 指标：整条横贯、竖线分隔，不再是六个圆角卡片 */
html body .wb-kpis {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0;
  background: var(--v3-surface);
  border: 1px solid var(--v3-line);
  border-radius: 0;
  overflow: hidden;
  padding: 0;
}
html body .wb-kpi {
  border: 0;
  border-left: 1px solid var(--v3-line);
  border-radius: 0;
  background: transparent;
  padding: 20px 18px 18px;
  box-shadow: none;
  transform: none;
  gap: 0;
}
html body .wb-kpi:first-child { border-left: 0; }
html body .wb-kpi:hover { background: #fafbfc; transform: none; box-shadow: none; border-color: var(--v3-line); }
html body .wb-ic { display: none; }              /* 去掉彩色图标块 */
html body .wb-kpi .wb-body { display: flex; flex-direction: column; min-height: 108px; }
html body .wb-val { font-size: 30px; line-height: 1.2; margin-top: 6px; }
html body .wb-lab { font-size: 12.5px; white-space: normal; min-height: 36px; line-height: 1.4; }
html body .wb-lab .wb-src { display: block; margin-left: 0; font-size: 11.5px; color: var(--v3-muted); }
html body .wb-val small { font-size: 12px; color: var(--v3-muted); }
html body .wb-delta { background: none; padding: 0; font-size: 12px; }

/* 决策链：四个步骤并排，靠竖线分隔，不做卡片 */
html body .wb-steps {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  border: 1px solid var(--v3-line);
  border-top: 0;
  background: var(--v3-surface);
  padding: 0;
}
html body .wb-steps .st {
  border: 0;
  border-left: 1px solid var(--v3-line);
  border-radius: 0;
  padding: 14px 18px;
  background: transparent;
}
html body .wb-steps .st:first-child { border-left: 0; }
html body .wb-steps .st:hover { background: #fafbfc; transform: none; box-shadow: none; }
html body .wb-steps .st b { font-size: 14px; font-weight: 600; }
html body .wb-steps .st span { font-size: 12.5px; color: var(--v3-muted); }

/* 板块入口：卡片 → 两栏文字清单（细线分隔，像文档目录） */
html body .wb-boards {
  display: block;
  column-count: 2;
  column-gap: 48px;
  padding: 8px 0 0;
}
html body .wb-boards .bd {
  display: flex;
  align-items: baseline;
  gap: 12px;
  border: 0;
  border-bottom: 1px solid var(--v3-line-soft);
  border-radius: 0;
  background: transparent;
  padding: 12px 2px;
  break-inside: avoid;
}
html body .wb-boards .bd:hover { background: transparent; transform: none; }
html body .wb-boards .bd b {
  font-size: 15px;
  font-weight: 600;
  color: var(--v3-text);
  min-width: 88px;
}
html body .wb-boards .bd span { font-size: 12.5px; color: var(--v3-muted); }
html body .wb-boards .bd:hover b { text-decoration: underline; text-underline-offset: 3px; }

@media (max-width: 1200px) {
  html body .wb-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  html body .wb-boards { column-count: 1; }
}
@media (max-width: 760px) {
  html body .wb-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  html body .wb-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ============================================================
   12) 高级质感层（Premium）
   思路：深石墨导航 + 浅色内容 + 柔和阴影层次 + 强调色 + 等宽大数字
   ============================================================ */
html:root {
  --pg-bg: #f4f6fa;
  --pg-surface: #ffffff;
  --pg-line: rgba(16, 24, 40, .08);
  --pg-line-strong: rgba(16, 24, 40, .14);
  --pg-text: #0f1420;
  --pg-sub: #5a6577;
  --pg-muted: #8a94a6;
  --pg-accent: #2f5cff;
  --pg-accent-soft: rgba(47, 92, 255, .08);
  --pg-nav: #10141c;
  --pg-nav-2: #161c27;
  --pg-shadow-1: 0 1px 2px rgba(16, 24, 40, .05);
  --pg-shadow-2: 0 10px 30px -12px rgba(16, 24, 40, .18);
}

html body {
  background:
    radial-gradient(1200px 600px at 100% -10%, rgba(47, 92, 255, .06), transparent 60%),
    radial-gradient(900px 500px at -10% 0%, rgba(16, 185, 129, .05), transparent 55%),
    var(--pg-bg);
  color: var(--pg-text);
  font-family: "Inter", "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  letter-spacing: -0.005em;
}

/* —— 顶部页头：毛玻璃 + 细线 —— */
.site-head {
  background: rgba(255, 255, 255, .82);
  backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--pg-line);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .6) inset;
}
.sh-title {
  font-size: 25px;
  font-weight: 700;
  letter-spacing: -0.03em;
}
.sh-tabs .tab,
.sh-tabs .view-tab {
  font-size: 14px;
  color: var(--pg-sub);
  border-bottom-width: 2px;
}
.sh-tabs .tab.active,
.sh-tabs .view-tab.active {
  color: var(--pg-text);
  border-bottom-color: var(--pg-accent);
}
.sh-tabs .tab:hover,
.sh-tabs .view-tab:hover { border-bottom-color: var(--pg-line-strong); }

/* —— 深石墨侧栏 —— */
.side-nav {
  background: linear-gradient(180deg, var(--pg-nav) 0%, var(--pg-nav-2) 100%);
  border-right: 1px solid rgba(255, 255, 255, .06);
  color: #cfd6e4;
  box-shadow: 1px 0 0 rgba(255, 255, 255, .02) inset;
}
.side-name { color: #ffffff; font-weight: 650; letter-spacing: -0.01em; }
.side-group { color: #7d879b; font-size: 11px; letter-spacing: .08em; }
.side-group:hover { background: rgba(255, 255, 255, .05); color: #e8edf7; }
.side-group.on { background: rgba(255, 255, 255, .06); color: #ffffff; }
.side-link {
  color: #aab4c6;
  font-size: 13px;
  border-radius: 8px;
  padding-left: 10px;
  position: relative;
}
.side-link:hover { background: rgba(255, 255, 255, .07); color: #ffffff; }
.side-link.sf-cur {
  background: rgba(47, 92, 255, .16);
  color: #ffffff;
  font-weight: 600;
}
.side-link.sf-cur::before {
  content: "";
  position: absolute;
  left: 0; top: 7px; bottom: 7px;
  width: 2px;
  border-radius: 2px;
  background: var(--pg-accent);
}
.side-search input {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .08);
  color: #e8edf7;
}
.side-search input::placeholder { color: #6f7a8d; }
.side-fav-title { color: #6f7a8d; }
.side-foot, .side-data { color: #7d879b; }
/* 侧栏内的浅底部件统一改深色 */
.side-nav .data-status {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .08);
  color: #cfd6e4;
  border-radius: 10px;
}
.side-nav .btn,
.side-nav .btn-ghost {
  background: rgba(255, 255, 255, .06);
  border-color: rgba(255, 255, 255, .12);
  color: #cfd6e4;
  box-shadow: none;
}
.side-nav .btn:hover,
.side-nav .btn-ghost:hover { background: rgba(255, 255, 255, .13); color: #fff; }
.side-logo { background: linear-gradient(150deg, #3b66ff, #2749d6); color: #fff; border-radius: 9px; }
.side-nav [class*="fav"] { border-color: rgba(255, 255, 255, .14); color: #6f7a8d; }
.side-nav [class*="fav"]:hover { color: #cfd6e4; }
.side-nav .si-ico { color: #8d97a9; }
.side-link:hover .si-ico, .side-link.sf-cur .si-ico, .side-group:hover .si-ico { color: #ffffff; }

/* —— 卡片：16px 圆角 + 极轻阴影，悬停微抬 —— */
.chart-card,
html body .wb-kpis,
html body .wb-steps,
.kpi-card,
.heat-stat,
.nav-card,
.table-wrap,
.daily-wrap,
.xl-panels,
.trend-desc {
  background: var(--pg-surface);
  border: 1px solid var(--pg-line);
  border-radius: 16px;
  box-shadow: var(--pg-shadow-1);
}
.chart-card { transition: box-shadow .18s ease, transform .18s ease; }
.chart-card:hover { box-shadow: var(--pg-shadow-2); transform: translateY(-1px); }

/* —— 指标条：六格细线 + 大号等宽数字 —— */
html body .wb-kpis { overflow: hidden; }
html body .wb-kpi { border-left: 1px solid var(--pg-line); }
html body .wb-kpi:hover { background: #fafbff; }
html body .wb-val {
  font-size: 34px;
  font-weight: 700;
  letter-spacing: -0.035em;
  font-variant-numeric: tabular-nums;
  color: var(--pg-text);
}
html body .wb-val small { font-size: 12px; font-weight: 500; color: var(--pg-muted); letter-spacing: 0; }
html body .wb-lab { color: var(--pg-sub); font-weight: 500; }
html body .wb-delta,
html body .wb-delta.up,
html body .wb-delta.down {
  background: none;
  padding: 0;
  font-size: 12px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
html body .wb-delta.up { color: #e5484d; }
html body .wb-delta.down { color: #12946a; }

/* —— 步骤条：细线格 + 序号强调 —— */
html body .wb-steps { margin-top: 14px; border-radius: 16px; }
html body .wb-steps .st { padding: 16px 20px; }
html body .wb-steps .st b { font-size: 14.5px; }
html body .wb-steps .st:hover { background: #fafbff; }

/* —— 入口目录：放进卡片，行悬停高亮 —— */
html body .wb-boards {
  background: var(--pg-surface);
  border: 1px solid var(--pg-line);
  border-radius: 16px;
  box-shadow: var(--pg-shadow-1);
  padding: 8px 24px;
  margin-top: 14px;
}
html body .wb-boards .bd { border-bottom: 1px solid var(--pg-line); padding: 14px 4px; }
html body .wb-boards .bd:last-child { border-bottom: 0; }
html body .wb-boards .bd:hover { background: #f7f9ff; border-radius: 8px; }
html body .wb-boards .bd b { letter-spacing: -0.01em; }

/* —— 区块标题：小号大写 + 细分隔 —— */
html body .chart-title,
html body .heat-chart-head h3 {
  font-size: 15px;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--pg-text);
}

/* —— 按钮 —— */
.btn {
  background: #fff;
  border: 1px solid var(--pg-line-strong);
  box-shadow: var(--pg-shadow-1);
  font-weight: 500;
  color: var(--pg-text);
}
.btn:hover { background: #f7f9ff; border-color: rgba(47, 92, 255, .35); color: var(--pg-accent); }
.btn.primary {
  background: linear-gradient(180deg, #3b66ff, var(--pg-accent));
  border-color: #2749d6;
  color: #fff;
  box-shadow: 0 1px 2px rgba(47, 92, 255, .35), 0 8px 20px -10px rgba(47, 92, 255, .6);
}
.zoom-val { font-variant-numeric: tabular-nums; }

/* —— 表格：干净细线 + 表头小号大写 —— */
.table-wrap, .daily-wrap, .xl-panels { overflow: hidden; }
.xl-table thead th, .daily-table thead th {
  font-size: 11.5px;
  font-weight: 650;
  letter-spacing: .04em;
  color: var(--pg-muted);
  text-transform: none;
}
.xl-table td, .daily-table td { font-variant-numeric: tabular-nums; }

/* —— 页脚：弱化 —— */
.site-footer { border-top: 0; color: #9aa4b6; }

@media (max-width: 900px) {
  .sh-title { font-size: 21px; }
  html body .wb-val { font-size: 26px; }
}

/* ============================================================
   13) 深色主题（data-theme="dark"）+ 细节精修
   ============================================================ */
html[data-theme="dark"] body {
  background:
    radial-gradient(1100px 520px at 100% -8%, rgba(47, 92, 255, .16), transparent 60%),
    radial-gradient(900px 460px at -8% 0%, rgba(16, 185, 129, .10), transparent 55%),
    #0b0f16;
  color: #e6edf3;
}
html[data-theme="dark"] .site-head {
  background: rgba(13, 17, 23, .82);
  border-bottom-color: rgba(255, 255, 255, .07);
  box-shadow: none;
}
html[data-theme="dark"] .sh-title { color: #f0f4f9; }
html[data-theme="dark"] .sh-tabs .tab,
html[data-theme="dark"] .sh-tabs .view-tab { color: #9aa6b8; }
html[data-theme="dark"] .sh-tabs .tab.active,
html[data-theme="dark"] .sh-tabs .view-tab.active { color: #ffffff; border-bottom-color: #5b82ff; }

/* 卡片 / 容器 */
html[data-theme="dark"] .chart-card,
html[data-theme="dark"] .wb-kpis,
html[data-theme="dark"] .wb-steps,
html[data-theme="dark"] .wb-boards,
html[data-theme="dark"] .kpi-card,
html[data-theme="dark"] .heat-stat,
html[data-theme="dark"] .nav-card,
html[data-theme="dark"] .table-wrap,
html[data-theme="dark"] .daily-wrap,
html[data-theme="dark"] .xl-panels,
html[data-theme="dark"] .trend-desc {
  background: #131922;
  border-color: rgba(255, 255, 255, .07);
  box-shadow: 0 1px 2px rgba(0, 0, 0, .6);
}
html[data-theme="dark"] .chart-card:hover { box-shadow: 0 16px 40px -18px rgba(0, 0, 0, .9); }
html[data-theme="dark"] .wb-kpi { border-left-color: rgba(255, 255, 255, .07); }
html[data-theme="dark"] .wb-kpi:hover { background: #161d27; }
html[data-theme="dark"] .wb-steps .st { border-left-color: rgba(255, 255, 255, .07); }
html[data-theme="dark"] .wb-steps .st:hover { background: #161d27; }
html[data-theme="dark"] .wb-boards .bd { border-bottom-color: rgba(255, 255, 255, .06); }
html[data-theme="dark"] .wb-boards .bd:hover { background: #161d27; }
html[data-theme="dark"] .wb-boards .bd b { color: #e6edf3; }
html[data-theme="dark"] .wb-boards .bd span,
html[data-theme="dark"] .wb-steps .st span { color: #7d899b; }
html[data-theme="dark"] .wb-steps .st b { color: #e6edf3; }
html[data-theme="dark"] .wb-val { color: #ffffff; }
html[data-theme="dark"] .wb-lab { color: #9aa6b8; }
html[data-theme="dark"] .wb-lab .wb-src,
html[data-theme="dark"] .wb-val small { color: #6f7b8d; }
html[data-theme="dark"] .chart-title,
html[data-theme="dark"] .heat-chart-head h3 { color: #e6edf3; }

/* 表格 */
html[data-theme="dark"] .xl-table th,
html[data-theme="dark"] .xl-table td,
html[data-theme="dark"] .daily-table td {
  background: transparent;
  color: #dbe4ef;
  border-bottom-color: rgba(255, 255, 255, .06);
}
html[data-theme="dark"] .xl-table thead th,
html[data-theme="dark"] .daily-table thead th {
  background: #171e28;
  color: #8d99ab;
}
html[data-theme="dark"] .xl-table td.cat { background: transparent; color: #ffffff; }
html[data-theme="dark"] .xl-table td.date { background: transparent; color: #e6edf3; }
html[data-theme="dark"] .xl-table td.date.wk { background: rgba(255, 255, 255, .03); color: #8d99ab; }
html[data-theme="dark"] .xl-table td.v.west-v { background: rgba(34, 197, 94, .12); color: #6ee7a8; }
html[data-theme="dark"] .xl-table td.fix-val { background: rgba(59, 130, 246, .12); color: #93c5fd; }
html[data-theme="dark"] .xl-table tbody tr:hover td.v:not(.west-v) { background: rgba(255, 255, 255, .04); }
html[data-theme="dark"] .daily-table tbody tr:nth-child(even) td { background: rgba(255, 255, 255, .02); }
html[data-theme="dark"] .daily-table tbody tr:hover td { background: rgba(255, 255, 255, .05); }

/* 控件 */
html[data-theme="dark"] .btn {
  background: #1a212b;
  border-color: rgba(255, 255, 255, .10);
  color: #dbe4ef;
  box-shadow: none;
}
html[data-theme="dark"] .btn:hover { background: #222b37; color: #fff; border-color: rgba(91, 130, 255, .5); }
html[data-theme="dark"] .date-input,
html[data-theme="dark"] .cmp-date,
html[data-theme="dark"] .table-toolbar select,
html[data-theme="dark"] .table-toolbar input {
  background: #1a212b;
  border-color: rgba(255, 255, 255, .10);
  color: #dbe4ef;
  color-scheme: dark;
}
html[data-theme="dark"] .table-toolbar { border-bottom-color: rgba(255, 255, 255, .07); }
html[data-theme="dark"] .site-footer { color: #5f6b7d; }

/* 数据状态胶囊 */
.wb-fresh {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
  font-size: 11.5px;
}
.wb-fresh .src,
.wb-fresh > span {
  border: 1px solid var(--pg-line);
  background: #fff;
  color: var(--pg-sub);
  border-radius: 999px;
  padding: 3px 9px;
  line-height: 1.3;
}
html[data-theme="dark"] .wb-fresh .src,
html[data-theme="dark"] .wb-fresh > span {
  background: rgba(255, 255, 255, .04);
  border-color: rgba(255, 255, 255, .08);
  color: #93a1b5;
}

/* 页内的视图页签 / 状态胶囊（各页自行渲染的浅色块，用 !important 压过页面内联 id 选择器） */
html[data-theme="dark"] .view-tab {
  background: #161d27 !important;
  border-color: rgba(255, 255, 255, .08) !important;
  color: #9aa6b8 !important;
}
html[data-theme="dark"] .view-tab:hover { background: #1c242f !important; color: #e6edf3 !important; }
html[data-theme="dark"] .view-tab.active,
html[data-theme="dark"] .view-tab.on {
  background: rgba(47, 92, 255, .22) !important;
  border-color: rgba(91, 130, 255, .45) !important;
  color: #ffffff !important;
}
html[data-theme="dark"] .ud-tabs { background: transparent !important; border: 0 !important; }
html[data-theme="dark"] .ud-tab {
  background: #161d27 !important;
  border-color: rgba(255, 255, 255, .08) !important;
  color: #9aa6b8 !important;
}
html[data-theme="dark"] .ud-tab:hover { background: #1c242f !important; color: #e6edf3 !important; }
html[data-theme="dark"] .ud-tab.active {
  background: rgba(47, 92, 255, .22) !important;
  border-color: rgba(91, 130, 255, .45) !important;
  color: #ffffff !important;
}
html[data-theme="dark"] .ud-tab .ud-desc { color: #6f7b8d !important; }
html[data-theme="dark"] .stat-chip {
  background: #161d27 !important;
  border-color: rgba(255, 255, 255, .08) !important;
  color: #9aa6b8 !important;
}
html[data-theme="dark"] input[type="date"],
html[data-theme="dark"] .date-input,
html[data-theme="dark"] .cmp-date {
  background: #1a212b !important;
  border-color: rgba(255, 255, 255, .10) !important;
  color: #dbe4ef !important;
  color-scheme: dark;
}
html[data-theme="dark"] .ud-nav,
html[data-theme="dark"] .view-tabs { background: transparent; }

/* 主题切换按钮 */
.theme-toggle {
  width: 34px;
  height: 30px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.theme-toggle svg { width: 16px; height: 16px; }

/* 页脚：收成一行，超长省略 */
.site-footer {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-height: 21px;
  padding-top: 10px;
  padding-bottom: 18px;
}

/* ============================================================
   14) 去卡片化：同类内容合并成一个面板，内部用细线分隔
   规则：一个信息组 = 一个面板；面板内部才用线，不再一张数据一张卡
   ============================================================ */
/* 指标组：6 个数字合并成一条 */
html body .kpi-grid,
html body .heat-grid {
  gap: 0;
  padding: 0;
  background: var(--pg-surface, #fff);
  border: 1px solid var(--pg-line);
  border-radius: 16px;
  box-shadow: var(--pg-shadow-1);
  overflow: hidden;
}
html body .kpi-grid > *,
html body .heat-grid > * {
  border: 0;
  border-left: 1px solid var(--pg-line);
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  padding: 18px 20px;
}
html body .kpi-grid > *:first-child,
html body .heat-grid > *:first-child { border-left: 0; }
html body .kpi-grid > *:hover,
html body .heat-grid > *:hover { background: rgba(47, 92, 255, .03); transform: none; }

/* 图表组：整块面板，内部 1px 网格线分隔，不再每图一卡 */
html body .chart-grid {
  gap: 0;
  background: var(--pg-surface, #fff);
  border: 1px solid var(--pg-line);
  border-radius: 16px;
  box-shadow: var(--pg-shadow-1);
  overflow: hidden;
}
html body .chart-grid > .chart-card {
  border: 0;
  border-right: 1px solid var(--pg-line);
  border-bottom: 1px solid var(--pg-line);
  border-radius: 0;
  box-shadow: none;
  background: transparent;
  transform: none;
}
html body .chart-grid > .chart-card:hover { box-shadow: none; transform: none; }
html body .chart-grid > .chart-card .chart-title { padding: 14px 16px 4px; }

/* 入口清单 / 步骤条：本来就已合并，这里去掉多余描边层次 */
html body .wb-boards { box-shadow: none; }
html body .wb-kpis { box-shadow: var(--pg-shadow-1); }
html body .wb-steps { box-shadow: none; margin-top: 0; border-top: 0; }

/* 深色下同步 */
html[data-theme="dark"] body .kpi-grid,
html[data-theme="dark"] body .heat-grid,
html[data-theme="dark"] body .chart-grid { background: #131922; border-color: rgba(255, 255, 255, .07); }
html[data-theme="dark"] body .kpi-grid > *,
html[data-theme="dark"] body .heat-grid > * { border-left-color: rgba(255, 255, 255, .07); }
html[data-theme="dark"] body .heat-stat .hs-value,
html[data-theme="dark"] body .heat-stat .hs-time,
html[data-theme="dark"] body .heat-stat .hs-label,
html[data-theme="dark"] body .kpi-card .kpi-value { color: #ffffff; }
html[data-theme="dark"] body .heat-stat .hs-sub { color: #8d99ab; }
html[data-theme="dark"] body .chart-grid > .chart-card {
  border-right-color: rgba(255, 255, 255, .06);
  border-bottom-color: rgba(255, 255, 255, .06);
}

/* ============================================================
   15) 常规网站形态：左侧常驻竖导航 → 顶部横向导航（≥1101px）
   内容居中、页头吸顶，看起来就是一个普通网站
   ============================================================ */
@media (min-width: 1101px) {
  body.has-topnav { padding-left: 0 !important; }
  body.has-topnav .side-nav {
    position: sticky;
    top: 0;
    z-index: 120;
    display: flex;
    flex-direction: row;
    align-items: center;
    width: 100%;
    height: 62px;
    padding: 0 clamp(16px, 2vw, 32px);
    gap: 22px;
    background: var(--pg-surface, #fff);
    border-right: 0;
    border-bottom: 1px solid var(--pg-line);
    box-shadow: none;
    overflow: visible;
  }
  body.has-topnav .side-brandrow { flex: 0 0 auto; }
  body.has-topnav .side-collapse-top { display: none; }
  body.has-topnav .side-name {
    font-size: 15px;
    font-weight: 700;
    white-space: nowrap;
    letter-spacing: -0.01em;
  }
  body.has-topnav .side-name br { display: none; }
  body.has-topnav .side-search { order: 3; width: 210px; margin-left: auto; }
  body.has-topnav .side-search input { height: 34px; }
  body.has-topnav .side-fav { display: none; }
  body.has-topnav .side-groups {
    order: 2;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 2px;
    overflow: visible;
  }
  body.has-topnav .nav-item { position: relative; flex: 0 0 auto; }
  body.has-topnav .side-group {
    height: 34px;
    padding: 0 12px;
    border-radius: 8px;
    font-size: 13.5px;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    gap: 6px;
    white-space: nowrap;
    flex: 0 0 auto;
  }
  body.has-topnav .side-group .si-txt { white-space: nowrap; }
  body.has-topnav .side-group.on { background: rgba(47, 92, 255, .09); color: var(--pg-accent); }
  body.has-topnav .side-group .si-arrow { display: none; }
  body.has-topnav .side-items {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    min-width: 196px;
    display: none;
    flex-direction: column;
    gap: 2px;
    padding: 8px;
    background: var(--pg-surface, #fff);
    border: 1px solid var(--pg-line);
    border-radius: 12px;
    box-shadow: 0 18px 44px -20px rgba(16, 24, 40, .45);
    z-index: 130;
    overflow: visible;
  }
  /* 按钮与下拉之间 6px 的空隙补一块透明热区，鼠标移过去不会中断 hover */
  body.has-topnav .side-items::before {
    content: '';
    position: absolute;
    left: 0; right: 0;
    top: -8px;
    height: 8px;
  }
  body.has-topnav .nav-item:hover .side-items,
  body.has-topnav .nav-item:focus-within .side-items { display: flex !important; }
  body.has-topnav .side-items .side-link { padding: 7px 10px; border-radius: 8px; font-size: 13px; }
  body.has-topnav .site-head { top: 62px; }
  body.has-topnav .sh-row { padding-top: 16px; }
  /* 竖导航时代的残留部件（收藏、底栏、帮助按钮）在顶栏形态下不显示 */
  body.has-topnav .side-foot,
  body.has-topnav .side-data,
  body.has-topnav .data-status { display: none; }
  body.has-topnav .side-groups { min-width: 0; }
}

/* 深色：顶栏与下拉面板 */
html[data-theme="dark"] body.has-topnav .side-nav {
  background: rgba(13, 17, 23, .92);
  border-bottom-color: rgba(255, 255, 255, .07);
  backdrop-filter: blur(12px);
}
html[data-theme="dark"] body.has-topnav .side-items {
  background: #131922;
  border-color: rgba(255, 255, 255, .08);
  box-shadow: 0 20px 44px -20px rgba(0, 0, 0, .9);
}
html[data-theme="dark"] body.has-topnav .side-group.on { background: rgba(47, 92, 255, .20); color: #fff; }
html[data-theme="dark"] body.has-topnav {
  background:
    radial-gradient(1100px 520px at 100% -8%, rgba(47, 92, 255, .14), transparent 60%),
    #0b0f16 !important;
}
body.has-topnav .side-nav .btn-ghost { display: none; }

/* ============================================================
   16) 雪球式版式（浅色为主）：白底顶栏 + 浅灰页面 + 白卡细线
   特征：内容居中 1240px、字号 14px、蓝色链接与选中态、红涨绿跌、
        区块标题带左侧蓝条、表格密排、不用大阴影
   ============================================================ */
html[data-theme="light"] {
  --xq-bg: #f4f5f7;
  --xq-card: #ffffff;
  --xq-line: #ececec;
  --xq-text: #333333;
  --xq-sub: #999999;
  --xq-blue: #1a67c9;
  --xq-red: #e64545;
  --xq-green: #0f9d58;
}
html[data-theme="light"] body {
  background: var(--xq-bg);
  color: var(--xq-text);
  font-size: 14px;
}
/* 顶栏 */
html[data-theme="light"] body.has-topnav .side-nav {
  height: 50px;
  background: #fff;
  border-bottom: 1px solid var(--xq-line);
  box-shadow: none;
  backdrop-filter: none;
}
html[data-theme="light"] .side-name { font-size: 15px; color: #333; }
html[data-theme="light"] .side-name strong { color: var(--xq-blue); }
html[data-theme="light"] body.has-topnav .side-group {
  height: 50px;
  border-radius: 0;
  color: #444;
  font-size: 14px;
  padding: 0 14px;
}
html[data-theme="light"] body.has-topnav .side-group.on,
html[data-theme="light"] body.has-topnav .side-group:hover {
  background: none;
  color: var(--xq-blue);
  box-shadow: inset 0 -2px 0 var(--xq-blue);
}
html[data-theme="light"] body.has-topnav .side-items {
  border: 1px solid var(--xq-line);
  border-radius: 4px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, .08);
}
html[data-theme="light"] .side-link.sf-cur { background: #f5f8fd; color: var(--xq-blue); font-weight: 500; }
html[data-theme="light"] .side-link:hover { background: #f7f8fa; color: var(--xq-blue); }

/* 页头：白底、无毛玻璃 */
html[data-theme="light"] .site-head {
  background: #fff;
  backdrop-filter: none;
  border-bottom: 1px solid var(--xq-line);
}
html[data-theme="light"] .sh-title { font-size: 22px; font-weight: 600; color: #333; }
html[data-theme="light"] .sh-tabs .tab,
html[data-theme="light"] .sh-tabs .view-tab {
  font-size: 14px; color: #666; margin-right: 22px;
}
html[data-theme="light"] .sh-tabs .tab.active,
html[data-theme="light"] .sh-tabs .view-tab.active {
  color: var(--xq-blue); border-bottom-color: var(--xq-blue); font-weight: 600;
}

/* 内容：居中 1240，卡片 8px 圆角、细线、无阴影 */
html[data-theme="light"] main.container {
  width: 100%;
  max-width: 1240px;
  padding: 16px 16px 40px;
}
html[data-theme="light"] .chart-card,
html[data-theme="light"] .chart-grid,
html[data-theme="light"] .kpi-grid,
html[data-theme="light"] .heat-grid,
html[data-theme="light"] .wb-kpis,
html[data-theme="light"] .wb-steps,
html[data-theme="light"] .wb-boards,
html[data-theme="light"] .table-wrap,
html[data-theme="light"] .daily-wrap,
html[data-theme="light"] .xl-panels,
html[data-theme="light"] .trend-desc {
  background: var(--xq-card);
  border: 1px solid var(--xq-line);
  border-radius: 8px;
  box-shadow: none;
}
html[data-theme="light"] .chart-card:hover { box-shadow: none; transform: none; }
html[data-theme="light"] .chart-grid,
html[data-theme="light"] .kpi-grid,
html[data-theme="light"] .heat-grid,
html[data-theme="light"] .wb-kpis,
html[data-theme="light"] .wb-steps,
html[data-theme="light"] .wb-boards { margin-bottom: 16px; }

/* 区块标题：左侧蓝条 */
html[data-theme="light"] .chart-title,
html[data-theme="light"] .heat-chart-head h3 {
  font-size: 15px;
  font-weight: 600;
  color: #333;
  padding-left: 10px;
  border-left: 3px solid var(--xq-blue);
  margin: 14px 16px 6px;
  padding-top: 0;
  padding-bottom: 0;
}

/* 指标：更紧凑的表格感 */
html[data-theme="light"] .wb-kpi,
html[data-theme="light"] .heat-stat { padding: 14px 16px; }
html[data-theme="light"] .wb-val,
html[data-theme="light"] .heat-stat .hs-value { font-size: 24px; font-weight: 600; color: #333; }
html[data-theme="light"] .wb-lab,
html[data-theme="light"] .heat-stat .hs-label { font-size: 12px; color: var(--xq-sub); }
html[data-theme="light"] .wb-delta.up { color: var(--xq-red); }
html[data-theme="light"] .wb-delta.down { color: var(--xq-green); }

/* 表格：雪球风密排 */
html[data-theme="light"] .xl-table th,
html[data-theme="light"] .daily-table th { background: #fafafa; color: #666; font-size: 12.5px; font-weight: 500; }
html[data-theme="light"] .xl-table td,
html[data-theme="light"] .daily-table td { font-size: 13px; color: #333; border-bottom: 1px solid #f2f2f2; }
/* 偶数行不覆盖周末/西电/检修色块，否则色块被 #fcfcfc 冲掉 */
html[data-theme="light"] .xl-table tbody tr:nth-child(even) td:not(.date):not(.west-v):not(.fix-val) { background: #fcfcfc; }

/* 按钮：雪球蓝 */
html[data-theme="light"] .btn { border-radius: 4px; border-color: #dcdfe6; color: #444; }
html[data-theme="light"] .btn:hover { border-color: var(--xq-blue); color: var(--xq-blue); background: #f5f8fd; }
html[data-theme="light"] .site-footer { border-top: 1px solid var(--xq-line); color: #999; background: transparent; }

/* ============================================================
   17) 配色方案：金融墨绿（brand #0E7C66 + 琥珀 #D99A2B）
   覆盖前面所有蓝色系残留，明暗两套同步
   ============================================================ */
html:root,
html[data-theme="light"] {
  --pg-accent: #0E7C66;
  --pg-accent-soft: rgba(14, 124, 102, .10);
  --xq-blue: #0E7C66;          /* 雪球层里沿用的强调色变量 */
  --xq-red: #D64545;           /* 涨（国内习惯红涨） */
  --xq-green: #0E8F6E;         /* 跌 */
}
/* 页面底色光晕：去掉蓝，换成墨绿/琥珀极淡渐变 */
html[data-theme="light"] body {
  background:
    radial-gradient(900px 420px at 100% -8%, rgba(14, 124, 102, .06), transparent 60%),
    radial-gradient(760px 380px at -8% 0%, rgba(217, 154, 43, .05), transparent 55%),
    #f4f5f7;
}
html[data-theme="dark"] body {
  background:
    radial-gradient(1000px 480px at 100% -8%, rgba(14, 124, 102, .18), transparent 60%),
    radial-gradient(820px 420px at -8% 0%, rgba(217, 154, 43, .08), transparent 55%),
    #0b0f16;
}
html[data-theme="dark"] body.has-topnav {
  background:
    radial-gradient(1000px 480px at 100% -8%, rgba(14, 124, 102, .18), transparent 60%),
    #0b0f16 !important;
}

/* 品牌标 / 主按钮 / 选中态 */
.side-logo { background: linear-gradient(150deg, #12957C, #0B5F4F) !important; }
html[data-theme="light"] .side-logo { background: linear-gradient(150deg, #12957C, #0B5F4F) !important; }
.btn.primary {
  background: linear-gradient(180deg, #12957C, #0E7C66);
  border-color: #0B6B58;
  box-shadow: 0 1px 2px rgba(14, 124, 102, .35), 0 8px 20px -10px rgba(14, 124, 102, .55);
}
.btn:hover { border-color: rgba(14, 124, 102, .5); color: #0E7C66; background: rgba(14, 124, 102, .06); }
html[data-theme="light"] .btn:hover { border-color: #0E7C66; color: #0E7C66; background: rgba(14, 124, 102, .05); }
html[data-theme="light"] .sh-tabs .tab.active,
html[data-theme="light"] .sh-tabs .view-tab.active { color: #0E7C66; border-bottom-color: #0E7C66; }
html[data-theme="dark"] .sh-tabs .tab.active,
html[data-theme="dark"] .sh-tabs .view-tab.active { color: #4FD1B0; border-bottom-color: #4FD1B0; }

/* 顶部导航选中 / 悬停 */
html[data-theme="light"] body.has-topnav .side-group.on,
html[data-theme="light"] body.has-topnav .side-group:hover {
  color: #0E7C66;
  box-shadow: inset 0 -2px 0 #0E7C66;
}
body.has-topnav .side-group.on { background: rgba(14, 124, 102, .10); color: #0E7C66; }
html[data-theme="dark"] body.has-topnav .side-group.on { background: rgba(79, 209, 176, .14); color: #4FD1B0; }
.side-link.sf-cur { background: rgba(14, 124, 102, .14); }
.side-link.sf-cur::before { background: #0E7C66; }
html[data-theme="light"] .side-link.sf-cur { background: rgba(14, 124, 102, .08); color: #0E7C66; }
html[data-theme="light"] .side-link:hover { background: rgba(14, 124, 102, .06); color: #0E7C66; }

/* 区块标题蓝条 → 墨绿条 */
html[data-theme="light"] .chart-title,
html[data-theme="light"] .heat-chart-head h3 { border-left-color: #0E7C66; }

/* 指标悬停 */
html body .kpi-grid > *:hover,
html body .heat-grid > *:hover { background: rgba(14, 124, 102, .035); }

/* 涨跌色统一（红涨绿跌） */
html body .wb-delta.up { color: #D64545; }
html body .wb-delta.down { color: #0E8F6E; }
html[data-theme="dark"] body .wb-delta.up { color: #F2726F; }
html[data-theme="dark"] body .wb-delta.down { color: #4FD1B0; }

/* 深色下强调色提亮，保证对比度 */
html[data-theme="dark"] .side-link.sf-cur { background: rgba(79, 209, 176, .14); }
html[data-theme="dark"] .side-link.sf-cur::before { background: #4FD1B0; }
html[data-theme="dark"] .theme-toggle:hover { color: #4FD1B0; }

/* ============================================================
   18) 全宽排布：取消两侧留白，内容铺满可视宽度
   ============================================================ */
html body .sh-row,
html body .sh-tabs,
html body .site-footer,
html body main.container {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0;
  margin-right: 0;
  padding-left: clamp(10px, 1vw, 20px);
  padding-right: clamp(10px, 1vw, 20px);
}
html[data-theme="light"] body main.container {
  width: 100% !important;
  max-width: none !important;
  padding: 16px clamp(10px, 1vw, 20px) 32px;
}
html body.has-topnav .side-nav {
  padding-left: clamp(10px, 1vw, 20px);
  padding-right: clamp(10px, 1vw, 20px);
}

/* ============================================================
   19) 宽屏去掉「标题 + 操作」那一行：操作按钮并入顶部导航，
       页头只剩页签条，纵向空间更紧凑
   ============================================================ */
@media (min-width: 1101px) {
  body.has-topnav .site-head .sh-row { display: none; }
  body.has-topnav .site-head { top: 50px; }
  body.has-topnav .sh-tabs { padding-top: 0; padding-bottom: 2px; }
  /* 只裁横向：分组过多时不外溢压住搜索框；
     纵向必须保持可见，否则「首页区」等分组的下拉卡片会被裁掉、浮不到页面上面 */
  body.has-topnav .side-groups {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    overflow-x: clip;
    overflow-y: visible;
  }
  body.has-topnav .side-search { order: 5; width: 170px; margin-left: 12px; }
  body.has-topnav .nav-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: auto;
    order: 4;
    flex: 0 0 auto;
  }
  /* 指标条 6 格：宽屏一行 6 格，中等宽度 3+3，避免出现最后一格独占整行 */
  html body .heat-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 0;
  }
  html body .heat-grid > * { border-left: 1px solid var(--pg-line); }
  html body .heat-grid > *:nth-child(6n+1) { border-left: 0; }
  body.has-topnav .nav-actions .wb-fresh { display: none; }   /* 数据日期胶囊不占顶栏 */
  body.has-topnav .nav-actions .btn,
  body.has-topnav .nav-actions .btn-sm {
    height: 30px;
    padding: 0 9px;
    font-size: 12.5px;
    border-radius: 6px;
  }
  body.has-topnav .nav-actions .zoom-val { min-width: 64px; }
  body.has-topnav .nav-actions .theme-toggle { width: 30px; }
}

/* 1600 及以下：顶栏 8 个分组 + 搜索 + 操作按钮放不下，
   会横向裁掉「燃料供热 / 环境碳市场」。压缩间距与内边距，保证 8 组全部可见 */
@media (min-width: 1101px) and (max-width: 1799px) {
  body.has-topnav .side-nav { gap: 12px; }
  body.has-topnav .side-groups { gap: 0; }
  /* 带 data-theme 前缀才能压过「雪球浅色」版式里的 padding: 0 14px */
  html[data-theme="light"] body.has-topnav .side-group,
  html[data-theme="dark"] body.has-topnav .side-group,
  html body.has-topnav .side-group { padding: 0 7px; gap: 4px; font-size: 13px; }
  body.has-topnav .side-search { width: 150px; margin-left: 10px; }
}

/* ============================================================
   20) 页签收成下拉：不再独占一行，页面整体上移
   ============================================================ */
html body .tab-select {
  height: 30px;
  min-width: 132px;
  padding: 0 26px 0 10px;
  border: 1px solid var(--pg-line);
  border-radius: 6px;
  background: #fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'><path d='M1 1l4 4 4-4' fill='none' stroke='%23888' stroke-width='1.6' stroke-linecap='round'/></svg>") no-repeat right 9px center;
  -webkit-appearance: none;
  appearance: none;
  color: #333;
  font-size: 13px;
  cursor: pointer;
  outline: none;
}
html body .tab-select:hover { border-color: #0E7C66; color: #0E7C66; }
html[data-theme="dark"] body .tab-select {
  background-color: #1a212b;
  border-color: rgba(255, 255, 255, .10);
  color: #dbe4ef;
}
html body.tabs-collapsed .table-toolbar { padding-bottom: 8px; }
html body.tabs-collapsed .site-head { display: none; }
/* 顶栏里的页签下拉：跟操作按钮同高 */
html body.has-topnav .nav-tab-select { order: 3; height: 30px; min-width: 120px; margin-left: 8px; }

/* ---------- 9) 窄屏 ---------- */
@media (max-width: 900px) {
  .sh-row { padding-top: 10px; }
  .sh-title { font-size: 21px; }
  .sh-tabs { padding-top: 4px; }
  .sh-tabs .tab, .sh-tabs .view-tab { margin-right: 14px; font-size: 14px; }
  main.container { padding-top: 14px; padding-bottom: 40px; }
}


﻿




/* ============================================================
   22) 负荷信息 28 天表：还原旧站 Excel 版式
       黑发丝线 + 白底 + 高饱和色块（#cbd5f2 / #00b050 / #00b0f0）
       #loadPanels 提高特异性，压过 layout-v3 / 雪球浅色对表格的覆盖
   ============================================================ */
html body #loadPanels .xl-table {
  font-family: "SimSun", "宋体", "NSimSun", serif;
  font-size: 14px;
  font-weight: 700;
}
html body #loadPanels .xl-table th,
html body #loadPanels .xl-table td {
  border: 0.5px solid #000;
  padding: 3px 5px;
  line-height: 1.05;
  background: #fff;
  color: #000;
  font-weight: 700;
}
html body #loadPanels .xl-table thead th {
  background: #fff;
  color: #000;
  font-size: 13.5px;
  font-weight: 700;
}
html body #loadPanels .xl-table td.cat {
  background: #fff;
  color: #000;
  border-right: 0.5px solid #000;
}
html body #loadPanels .xl-table td.date {
  background: #fff;
  color: #000;
  font-size: 15px;
  font-weight: 700;
}
html body #loadPanels .xl-table td.date.wk { background: #cbd5f2; }
html body #loadPanels .xl-table td.v { font-weight: 400; }
html body #loadPanels .xl-table td.v.west-v { background: #00b050; }
html body #loadPanels .xl-table td.fix-val { background: #00b0f0; }
html body #loadPanels .xl-table .panel-sep { border-left: 0.5px solid #000; }

/* 去掉新版斑马线与悬停的灰底，悬停沿用旧站淡黄 */
html body #loadPanels .xl-table tbody tr:nth-child(even) td { background: #fff; }
html body #loadPanels .xl-table tbody tr:nth-child(even) td.date.wk { background: #cbd5f2; }
html body #loadPanels .xl-table tbody tr:nth-child(even) td.v.west-v { background: #00b050; }
html body #loadPanels .xl-table tbody tr:nth-child(even) td.fix-val { background: #00b0f0; }
html body #loadPanels .xl-table tbody tr:hover td { background: #fff; }
html body #loadPanels .xl-table tbody tr:hover td.v:not(.west-v) { background: #fff8d6; }
html body #loadPanels .xl-table tbody tr:hover td.fix-val { background: #33c2f4; }
html body #loadPanels .xl-table tbody tr:hover td.date.wk { background: #cbd5f2; }

/* 检修行数字不加粗（旧站 td.fix-val 为 400，被黑线还原规则带成 700） */
html body #loadPanels .xl-table td.fix-val { font-weight: 400; }

/* 表格整体减重：通道名与日期改常规字重，表头降一档 */
html body #loadPanels .xl-table thead th { font-weight: 600; }
html body #loadPanels .xl-table td.cat { font-weight: 400; }
html body #loadPanels .xl-table td.date { font-weight: 400; }

/* 表头 / 通道名列 / 日期列全部取消加粗 */
html body #loadPanels .xl-table thead th,
html body #loadPanels .xl-table td.cat,
html body #loadPanels .xl-table td.date,
html body #loadPanels .xl-table td.date.wk { font-weight: 400; }

/* 恢复页面标题区：顶栏只放导航，标题与操作留在页头 */
@media (min-width: 1101px) {
  body.has-topnav .site-head .sh-row { display: flex; }
  html body.tabs-collapsed .site-head { display: block; }
  body.has-topnav .site-head .sh-row {
    align-items: center;
    gap: 16px;
    padding: 18px 0 14px;
  }
  body.has-topnav .site-head .sh-title {
    font-size: 21px;
    line-height: 1.25;
    letter-spacing: .01em;
    color: #0f2547;
  }
  body.has-topnav .site-head .sh-actions { margin-left: auto; }
  body.has-topnav .site-head .sh-tabs { margin-top: 2px; }
}
