/* views/home.css — FU-ADMIN-IA-SPINE 态势主页(#/home)。只引用 tokens.css 变量,零字面量、
 * 零外部资源、零内联样式(CSP)。新增 .v-home-* 类(类契约:只增,不改既有冻结类,§0.10)。
 * 鎏金「一区一道」(§0.4 / §9d):论点带一道 bronze 发丝线;各列 / 区一道 accent marker;
 * 功能性链接走 accent(§2 允许);数值轨用信号 / 中性色;路线图瓦片全 stone(诚实未交付)。
 * 信号色语义固定(危险=封缄朱 / 警示=临界赭 / 验真=验真青);母题:钢印封缄 · 度量衡刻度分隔。 */

/* 质感 = §9g 三层法(2026-07-12):.v-home = 白画布大容器(坐工作区冷灰底)→ 灰卡 → 白内瓦 */
.v-home { display: flex; flex-direction: column; gap: var(--space-6);
  background: var(--color-surface); border-radius: 24px; padding: var(--space-6); }

/* ============================================================================
 * 论点带(serif 大标题 + 封缄标 + 完整性 pill)+ 一道 bronze 发丝线
 * ==========================================================================*/
.v-home-thesis {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: var(--space-4) var(--space-6);
}
.v-home-thesis-main { min-width: 0; }
/* 思源宋体公文调大标题(中文零字距,§0.5);26px/600 在 admin 700-外科手术(§7)与 display
 * 36+ 禁令之内 —— 是 hero 论点,非 display 字号。 */
.v-home-thesis-title {
  margin: 0;
  font-size: 24px;  /* §9g 清爽体系:衬线公文调退役,回 sans 粗体 */
  font-weight: 700;
  line-height: 1.25;
  color: var(--color-text);
}
.v-home-thesis-sub {
  margin: var(--space-2) 0 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--color-text-secondary);
  max-width: 60ch;
}
.v-home-thesis-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--space-2);
  flex: none;
}
/* 封缄标:虚线边 = 骑缝 / 封条母题(§9d ③);中性色 —— 朱印 / 钢印(--color-seal)留给
 * #/audit-chain 的「验链通过=盖章」,本屏不重放故不盖朱印(诚实)。 */
.v-home-seal {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-3);
  border: 1px dashed var(--color-border-input);
  border-radius: var(--radius-control);
  color: var(--color-text-secondary);
}
.v-home-seal .icon { color: var(--color-text-muted); }
.v-home-seal-text { font-size: 12px; letter-spacing: 0.02em; }

/* 链卡 = 通栏玉绿横带(本页唯一彩色件 / 视觉锚);通往 #/audit-chain(岛上 LIVE 重放)。 */
.v-home-chaincard {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  width: 100%;
  min-width: 0;
  padding: var(--space-4) var(--space-6);
  border-radius: 18px;
  background: var(--grad-verify);
  color: var(--color-text-inverse);
  text-decoration: none;
  transition: filter 120ms ease;
  overflow: hidden; /* 链条插图右侧半出血,溢出圆角部分裁掉(2026-07-14 用户布局规格) */
}
.v-home-chaincard:hover { filter: brightness(1.05); }
.v-home-chaincard:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.v-home-chaincard-label { display: flex; align-items: center; gap: var(--space-1); font-size: 13px; font-weight: 600; color: var(--color-text-inverse); opacity: 0.92; flex: none; }
.v-home-chaincard-num {
  font-family: var(--font-mono-tabular);
  font-variant-numeric: tabular-nums;
  font-size: 32px;
  font-weight: 700;
  line-height: 1.1;
  color: var(--color-text-inverse);
  flex: none;
}
.v-home-chaincard-sub { font-size: 12px; color: var(--color-text-inverse); opacity: 0.75; flex: 1 1 auto; min-width: 0; }
.v-home-chaincard-cta {
  flex: none;
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--color-text-inverse);
  background: rgba(255,255,255,0.16);
  border-radius: 999px;
  padding: 6px var(--space-4);
}

/* ---- 链带等距链条微场景 v4(2026-07-14 用户规格:对拍热更新读卡器画法,iso.js 底座;
 * aria-hidden 纯质感)。负纵边距让场景吃满带高而不撑高卡片。 ---- */
/* 2026-07-14 用户:建模放大、横幅随之增高;布局:收尾氛围图贴右边缘 —— 出血两次被打回
 * (12px 裁近半盾、6px 仍裁盾沿),终版 0 出血:右负边距 22 = padding 24 − 2px 呼吸位,
 * 盾牌完整贴边不裁。左边距 8 + 卡 gap 24 = 与 CTA 距 32。宽度必须显式给
 * (92 × 174/102 ≈ 157):Safari 对无 width 属性的 svg 按 100% 铺开,曾把横幅挤爆。 */
.v-home-chainiso { height: 92px; width: 157px; flex: none; margin: -8px -22px -8px var(--space-2); }
.v-hci-shadow { fill: rgba(12, 54, 38, 0.18); }
/* 玻璃块(2026-07-14 用户:留框架、面透明,突出数据传输):面走低透明度但仍守
 * 顶亮/左中/右暗的分层,棱线白描边勾框架(顶面棱最亮);流光点穿块时透框可见 */
.v-hci-block .f-t { fill: rgba(255, 255, 255, 0.30); stroke: rgba(255, 255, 255, 0.9); stroke-width: 1; stroke-linejoin: round; }
.v-hci-block .f-l { fill: rgba(255, 255, 255, 0.16); stroke: rgba(255, 255, 255, 0.6); stroke-width: 1; stroke-linejoin: round; }
.v-hci-block .f-r { fill: rgba(255, 255, 255, 0.08); stroke: rgba(255, 255, 255, 0.6); stroke-width: 1; stroke-linejoin: round; }
.v-hci-chip { fill: #F97316; }
.v-hci-cord-glow { stroke: rgba(255, 255, 255, 0.24); stroke-width: 7; stroke-linecap: round; }
.v-hci-cord { stroke: rgba(255, 255, 255, 0.9); stroke-width: 2.5; stroke-linecap: round; }
.v-hci-dot-halo { fill: rgba(255, 255, 255, 0.3); }
.v-hci-dot-core { fill: #FFFFFF; }
.v-hci-shield-edge { fill: rgba(255, 255, 255, 0.5); }
.v-hci-shield-face { fill: #FFFFFF; }
.v-hci-check { fill: none; stroke: #F97316; stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
/* 数据依次上链:块序次轻浮(≤4px 克制,无弹跳),3s 循环、错开 0.3s */
.v-hci-float { animation: v-hci-float 3s ease-in-out infinite; }
.v-hci-f2 { animation-delay: 0.3s; }
.v-hci-f3 { animation-delay: 0.6s; }
.v-hci-f4 { animation-delay: 0.9s; }
@keyframes v-hci-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
/* 流光点沿链左→右(链轴是屏幕直线,线性平移即沿链;入块隐没、块间现身) */
.v-hci-dot { animation: v-hci-flow 3.5s linear infinite; }
@keyframes v-hci-flow {
  0% { transform: translate(0, 0); opacity: 0; }
  10% { opacity: 1; }
  90% { opacity: 1; }
  100% { transform: translate(120px, 60px); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .v-hci-float, .v-hci-dot { animation: none; }
}
/* 窄屏让位给数字与 CTA */
@media (max-width: 1180px) {
  .v-home-chainiso { display: none; }
}

/* ---- 读者卡走势入场生长(2026-07-14 用户点名,对拍 roi/bigscreen 入场):
 * 曲线 dashoffset 1→0(pathLength 已在 home.js grow() 归一),面积/端点随后渐显;
 * 柱图 rect 自基线升起(transform-box:fill-box 各柱以自己的底为原点);
 * 仅首绘/手动刷新重播(本屏无轮询);reduced-motion 直达终态。 ---- */
.v-home-bspark .v-home-spark-line {
  stroke-dasharray: 1;
  animation: v-home-spark-grow 1.6s cubic-bezier(0.4, 0, 0.2, 1) both;
}
.v-home-bspark .v-home-spark-area { animation: v-home-viz-fade 800ms ease-out 600ms both; }
.v-home-bspark .v-home-spark-dot { animation: v-home-viz-fade 300ms ease-out 1400ms both; }
.v-home-bspark .v-home-mbar,
.v-home-kviz .v-home-mbar {
  transform-box: fill-box;
  transform-origin: center bottom;
  animation: v-home-bar-rise 900ms cubic-bezier(0.22, 0.61, 0.36, 1) both;
}
@keyframes v-home-spark-grow {
  from { stroke-dashoffset: 1; }
  to { stroke-dashoffset: 0; }
}
@keyframes v-home-viz-fade {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes v-home-bar-rise {
  from { transform: scaleY(0); }
  to { transform: scaleY(1); }
}
@media (prefers-reduced-motion: reduce) {
  .v-home-bspark .v-home-spark-line,
  .v-home-bspark .v-home-spark-area,
  .v-home-bspark .v-home-spark-dot,
  .v-home-bspark .v-home-mbar,
  .v-home-kviz .v-home-mbar { animation: none; }
}

/* 完整性 pill(暂无/未知態沿用):stone;通往 #/audit-chain。 */
.v-home-integrity {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-3);
  border: 1px solid var(--color-border-input);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  text-decoration: none;
  color: var(--color-text-secondary);
  transition: border-color 120ms ease, color 120ms ease;
}
.v-home-integrity-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex: none;
  background: var(--color-text-muted);
}
.v-home-integrity-num {
  margin-left: 2px;
  font-family: var(--font-mono-tabular);
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
.v-home-integrity .icon { vertical-align: 0; }
.v-home-integrity-sealed {
  color: var(--color-success);
  border-color: var(--color-verify);
  background: var(--color-success-tint);
}
.v-home-integrity-sealed .v-home-integrity-dot { background: var(--color-verify); }
.v-home-integrity-dormant { color: var(--color-text-muted); }
a.v-home-integrity:hover { border-color: var(--color-accent-edge); color: var(--color-text); }
a.v-home-integrity:focus-visible { outline: none; box-shadow: var(--focus-ring); }

/* 发丝线随 §9g 退役(三层法分层靠色调不靠线;DOM 保留,视觉隐藏)。 */
.v-home-rule { display: none; }

/* ============================================================================
 * 双栏:财务读者(永远 LIVE)| 度量衡刻度分隔 | 合规读者(状态感知)
 * ==========================================================================*/
/* 双读者:通栏堆叠(SugarCRM 式);卡内再分栏(主区 1.7 : 小瓦柱 1) */
.v-home-readers {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}
.v-home-reader-cols {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr);
  gap: var(--space-6);
  align-items: stretch;
}
.v-home-reader-main { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }
.v-home-kpis-col { display: flex; flex-direction: column; gap: var(--space-3); }
.v-home-kpis-col .v-home-kpi { flex: 1 1 auto; display: flex; flex-direction: column; justify-content: center; }
.v-home-reader {
  background: var(--color-card);  /* §9g 灰卡:无边框无投影,纯色调差 */
  border-radius: 18px;
  padding: var(--space-6);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  min-width: 0;
}
/* 度量衡刻度分隔已随通栏堆叠布局退役(2026-07-12)。 */

.v-home-reader-head { display: flex; align-items: center; gap: var(--space-2); }
.v-home-reader-mark { display: inline-flex; color: var(--color-accent); } /* 本列唯一一道 accent */
.v-home-reader-title { margin: 0; font-size: 15px; font-weight: 600; color: var(--color-text); }
/* LIVE 标:验真青静态点(无动画,§0.9);ASCII 字距安全。 */
.v-home-live {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: var(--color-success);
}
.v-home-live-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--color-verify); }

.v-home-reader-body { min-height: 132px; }
.v-home-reader-inner { display: flex; flex-direction: column; gap: var(--space-4); }
.v-home-reader-note { margin: 0; font-size: 11px; line-height: 1.5; color: var(--color-text-muted); }

/* 身份视角切换(页头 actions 槽;显隐走 root class,一份代码状态驱动,绝不 fork UI) */
.v-home-seg { display: inline-flex; gap: 2px; background: var(--color-card); border-radius: 999px; padding: 3px; }
.v-home-seg-btn { border: 0; background: transparent; border-radius: 999px; padding: 4px 12px;
  font-size: 12.5px; font-weight: 600; color: var(--color-text-secondary); cursor: pointer;
  transition: background 120ms ease, color 120ms ease; }
.v-home-seg-btn:hover { background: var(--color-accent-tint); color: var(--color-text); }
.v-home-seg-btn.on { background: var(--grad-brand); color: var(--color-text-inverse); }
.v-home-seg-btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.v-home-p-finance .v-home-reader-compliance { display: none; }
.v-home-p-compliance .v-home-reader-finance { display: none; }

/* 财务小卡马赛克:整片灰卡容器内的白色小卡(三层法;各卡自带微型图) */
.v-home-board {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) repeat(3, minmax(0, 1fr));
  gap: var(--space-3);
  align-items: stretch;
}
.v-home-bcard {
  background: var(--color-surface);  /* 灰容器上的白小卡(三层法第三层) */
  border-radius: 14px;
  padding: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  min-width: 0;
}
.v-home-bcard-label { display: flex; align-items: center; gap: var(--space-1); font-size: 12px; color: var(--color-text-secondary); }
/* 卡即门:整卡 <a>,hover 卡色加深一档 + 链标点亮(可点示能) */
a.v-home-bcard-link { text-decoration: none; cursor: pointer; transition: background 120ms ease; }
a.v-home-bcard-link:hover { background: #FAFBFD; }
a.v-home-bcard-link:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.v-home-go { margin-left: auto; display: inline-flex; color: var(--color-text-muted); transition: color 120ms ease; }
a:hover > .v-home-bcard-label .v-home-go, a.v-home-bcard-link:hover .v-home-go,
a.v-home-kpi-link:hover .v-home-go, a.v-home-heroStat-link:hover .v-home-go { color: var(--color-accent); }
.v-home-bcard-value {
  font-family: var(--font-mono-tabular);
  font-variant-numeric: tabular-nums;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.15;
  color: var(--color-text);
}
.v-home-bcard-hero .v-home-bcard-value { font-size: 30px; }
.v-home-bcard-sub { font-size: 11px; color: var(--color-text-muted); margin-top: auto; }
.v-home-bspark { margin-top: auto; }
.v-home-bspark .v-home-spark { height: 44px; }
.v-home-bcard-hero .v-home-bspark .v-home-spark { height: 58px; }
/* 微型图家族(四形态,§9g:hero 满饱和,其余橙阶浅档) */
/* ① 迷你圆角柱(离散日计数):末根满饱和 */
.v-home-mbars { width: 100%; height: 44px; display: block; }
.v-home-mbar { fill: #FBAB6B; opacity: 0.5; }
.v-home-mbar.hot { fill: var(--color-spark-brand); opacity: 1; }
/* ② 面积主导微图(体量):线退细、面积加重 */
.v-home-areaish .v-home-spark-line { stroke: #FBAB6B; stroke-width: 1.5; }
.v-home-areaish .v-home-spark-area { fill: #FBAB6B; opacity: 0.30; }
/* ③ 双进度行(两个可比计数,同尺):Youcare Checkup 式 */
.v-home-meter { display: flex; flex-direction: column; gap: var(--space-2); margin-top: auto; }
.v-home-meter-row { display: flex; flex-direction: column; gap: 3px; }
.v-home-meter-head { display: flex; justify-content: space-between; align-items: baseline; }
.v-home-meter-label { font-size: 11px; color: var(--color-text-muted); }
.v-home-meter-val { font-size: 12px; font-weight: 600; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
progress.v-home-bar { -webkit-appearance: none; appearance: none; width: 100%; height: 8px; border: 0; border-radius: 4px; background: var(--color-card); overflow: hidden; }  /* 白小卡上灰轨 */
progress.v-home-bar::-webkit-progress-bar { background: var(--color-card); }
progress.v-home-bar::-webkit-progress-value { background: #FBAB6B; }
progress.v-home-bar::-moz-progress-bar { background: #FBAB6B; }
progress.v-home-bar.hot::-webkit-progress-value { background: var(--color-spark-brand); }
progress.v-home-bar.hot::-moz-progress-bar { background: var(--color-spark-brand); }

/* 头条数字(合规卡仍用:hero stat 压阵,坡道贴身) */
.v-home-heroStat { display: flex; flex-direction: column; gap: 2px; }
.v-home-heroStat-label { display: flex; align-items: center; gap: var(--space-1); font-size: 12px; color: var(--color-text-secondary); }
a.v-home-heroStat-link { text-decoration: none; cursor: pointer; border-radius: 10px; }
a.v-home-heroStat-link:hover .v-home-heroStat-value { color: var(--color-accent); }
a.v-home-heroStat-link:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.v-home-heroStat-link .v-home-heroStat-label .v-home-go { margin-left: var(--space-1); }
.v-home-heroStat-value {
  font-family: var(--font-mono-tabular);
  font-variant-numeric: tabular-nums;
  font-size: 34px;
  font-weight: 700;
  line-height: 1.1;
  color: var(--color-text);
}

/* KPI 网格:次要指标小白瓦 */
.v-home-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--space-3);
}
.v-home-kpi {
  background: var(--color-surface);  /* 灰卡上白瓦(三层法第三层) */
  border-radius: 12px;
  padding: var(--space-3) var(--space-4);
}
.v-home-kpi-label { display: flex; align-items: center; gap: var(--space-1); font-size: 11px; color: var(--color-text-secondary); margin-bottom: var(--space-1); }
.v-home-kviz { margin-top: var(--space-2); }
.v-home-kviz .v-home-mbars { height: 32px; }  /* 小瓦里的微柱矮一档 */
a.v-home-kpi-link { text-decoration: none; cursor: pointer; transition: background 120ms ease; }
a.v-home-kpi-link:hover { background: #FAFBFC; }
a.v-home-kpi-link:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.v-home-kpi-value {
  font-family: var(--font-mono-tabular);
  font-variant-numeric: tabular-nums;
  font-size: 20px;
  font-weight: 600;
  line-height: 1.15;
  color: var(--color-text);
}

/* 威胁计数着色(§9g 配给:红只给真危险/越线;计数类威胁走 accent 橙) */
.v-home-hot { color: var(--color-accent); }
.v-home-warn { color: var(--color-warning); }

/* 成本趋势 sparkline */
.v-home-trend { display: flex; flex-direction: column; gap: var(--space-2); }
.v-home-trend-cap { font-size: 11px; color: var(--color-text-muted); }
.v-home-trend-empty {
  font-size: 12px;
  color: var(--color-text-muted);
  padding: var(--space-4) 0;
  text-align: center;
}

/* DLP 严重度 = 升温坡道堆叠条(§9g;采集 ON) */
.v-home-sev {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}
.v-home-sev-cap { font-size: 11px; font-weight: 600; color: var(--color-text-secondary); }
.v-home-sevbar { border-radius: 7px; overflow: hidden; background: var(--color-surface); }
.v-home-sevbar .v-home-stack { display: block; width: 100%; height: 14px; }
.v-home-stack .sv-low { fill: var(--color-sev-low); }
.v-home-stack .sv-medium { fill: var(--color-sev-medium); }
.v-home-stack .sv-high { fill: var(--color-sev-high); }
.v-home-stack .sv-critical { fill: var(--color-sev-critical); }
.v-home-sevleg { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); }
.v-home-sev-item { display: inline-flex; align-items: center; gap: var(--space-1); }
.v-home-sev-dot { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
.v-home-sev-dot.sv-low { background: var(--color-sev-low); }
.v-home-sev-dot.sv-medium { background: var(--color-sev-medium); }
.v-home-sev-dot.sv-high { background: var(--color-sev-high); }
.v-home-sev-dot.sv-critical { background: var(--color-sev-critical); }
.v-home-sev-label { font-size: 11px; color: var(--color-text-muted); }
.v-home-sev-empty { font-size: 12px; color: var(--color-text-muted); }
.v-home-sev-val {
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text);
  font-variant-numeric: tabular-nums;
}

/* 采集 OFF(默认):轻量 stone 占位 + 两个 muted 统计(SEAM:FU-ENABLE-RITUAL) */
.v-home-dormant { align-items: flex-start; }
.v-home-dormant-mark { color: var(--color-dormant); }
.v-home-dormant-title { font-size: 14px; font-weight: 600; color: var(--color-text-secondary); }
.v-home-dormant-sub {
  margin: 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--color-text-muted);
  max-width: 48ch;
}
.v-home-dormant-cta { margin-top: var(--space-1); }
.v-home-dormant-stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-6);
  width: 100%;
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}
.v-home-mstat { display: flex; flex-direction: column; gap: 2px; }
.v-home-mstat-label { font-size: 11px; color: var(--color-text-muted); }
.v-home-mstat-val {
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text-secondary);
  font-variant-numeric: tabular-nums;
}

/* 功能性下钻链接(accent 文字 / 链接,§2;每区配给) */
.v-home-links { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-4); }
.v-home-link {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: 12px;
  font-weight: 500;
  color: var(--color-accent);
  text-decoration: none;
  transition: color 120ms ease;
}
.v-home-link:hover { color: var(--color-accent-strong); }
.v-home-link:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
  border-radius: var(--radius-control);
}
.v-home-link .icon { vertical-align: 0; }

/* ============================================================================
 * 区块(主权带 / 路线图轨)
 * ==========================================================================*/
.v-home-section { margin: 0; }
.v-home-sec-title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: 0 0 var(--space-3);
  font-size: 16px;
  font-weight: 600;
  color: var(--color-text);
}
.v-home-sec-mark { display: inline-flex; color: var(--color-accent); } /* 本区唯一一道 accent */

/* 主权带 */
.v-home-sovereign-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-4);
}
.v-home-sov-item {
  background: var(--color-card);  /* §9g 灰卡 */
  border-radius: 18px;
  padding: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.v-home-sov-head { display: flex; align-items: center; gap: var(--space-2); }
/* 图标徽章(告警瓦同款语言):白底圆角 chip,给「一片字」立视觉锚 */
.v-home-sov-mark { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px;
  background: var(--color-surface); color: var(--color-text-secondary); flex: none; }
.v-home-sov-label { font-size: 12px; font-weight: 500; color: var(--color-text-secondary); }
.v-home-sov-value { font-size: 14px; font-weight: 500; color: var(--color-text); }
.v-home-sov-cap { font-size: 11px; line-height: 1.45; color: var(--color-text-muted); }
/* key 圆点阵(单位图:一把 key 一点;冷却=琥珀) */
.v-home-keys { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.v-home-key { width: 10px; height: 10px; border-radius: 3px; background: #B9C4D2; }
.v-home-key.cooling { background: var(--color-warning); }
.v-home-key-more { font-size: 10px; color: var(--color-text-muted); }

/* 路线图轨:stone 非交互瓦片(虚线边 = 草样 / 未建;诚实「尚未交付」) */
.v-home-roadmap {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--space-3);
}
.v-home-rm-tile {
  background: transparent;  /* 未交付 = 不占实体:白画布上石色虚线草样 */
  border: 1px dashed var(--color-border-input);
  border-radius: 18px;
  padding: var(--space-4);
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.v-home-rm-badge {
  align-self: flex-start;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--color-dormant);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 1px var(--space-2);
  margin-bottom: var(--space-1);
}
.v-home-rm-name { font-size: 13px; font-weight: 600; color: var(--color-text-secondary); }
.v-home-rm-en { font-size: 10px; letter-spacing: 0.12em; color: var(--color-dormant); }
/* 三格阶段点(石色,把 note 文字进度显性化;绝无「已交付」档) */
.v-home-rm-stage { display: flex; align-items: center; gap: 4px; padding: 2px 0; }
.v-home-rm-dot { width: 14px; height: 5px; border-radius: 3px; background: transparent; border: 1px solid var(--color-border-input); }
.v-home-rm-dot.filled { background: var(--color-dormant); border-color: var(--color-dormant); }
.v-home-rm-stage-txt { margin-left: var(--space-1); font-size: 10px; color: var(--color-dormant); }
.v-home-rm-note { margin: 0; font-size: 11px; line-height: 1.5; color: var(--color-text-muted); }

/* ============================================================================
 * 底部 freshness(手动刷新 + 上次刷新时间;本屏无自动定时器)
 * ==========================================================================*/
.v-home-freshness {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-border);
}
.v-home-fresh-note { font-size: 11px; color: var(--color-text-muted); }
.v-home-fresh-right { display: flex; align-items: center; gap: var(--space-3); }
.v-home-fresh-time { font-size: 12px; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }

/* ============================================================================
 * sparkline 着色(charts.js prefix='v-home';SVG presentation 属性不支持 var(),
 * 颜色必须由 CSS 用 --color-* 着色)。趋势线 = 财务列这一道数据可视化 accent。
 * ==========================================================================*/
.v-home-spark { width: 100%; height: 62px; display: block; }
.v-home-spark-line { fill: none; stroke: var(--color-spark-brand); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.v-home-spark-area { fill: var(--color-spark-brand); opacity: 0.14; stroke: none; }
.v-home-spark-dot { fill: var(--color-spark-brand); stroke: var(--color-surface); stroke-width: 2; }

/* ============================================================================
 * 响应式:窄屏双栏堆叠,刻度分隔转横向
 * ==========================================================================*/
@media (max-width: 1100px) {
  .v-home-board { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .v-home-reader-cols { grid-template-columns: 1fr; }
  .v-home-board { grid-template-columns: 1fr; }
  .v-home-thesis-aside { align-items: flex-start; }
}
