/* ============================================================================
   GlobalEconomy V2 — Institutional Research Terminal 基线
   （PR #22 Institutional UI Rewrite · 第一批：Overview / Rates / Market Risk）

   ## 本轮目标：Research Worksheet，不是 Card Dashboard

   第一眼  页面主结论（一句 thesis，22px）
   第二眼  关键数值横向 strip（20px 数字）
   第三眼  主趋势图（240px 级，ECharts / SVG 统一规范）
   然后    历史位置 / momentum / 拐点 = 紧凑横向数据行
   最后    细节 / 表格 / 口径（默认折叠）

   层级用 alignment / divider / spacing / font weight / background grouping
   表达；card 只给真正独立的信息块。

   红/绿仅用于 health / alert severity / 显式阈值状态，不表达经济好坏。

   ## 字号只允许 6 档（owner 本轮降档：1440 desktop 基线）
   ## 间距只允许 --space-* 档；任何组件不得自写字号/字重/间距字面值
   ============================================================================ */

:root{
  /* ---------- typography（third-party review P0-9 收一档：
     5 主层级 + meta；重要信息靠 position/weight/alignment，不靠大字）---------- */
  --type-meta:10.5px;      --lh-meta:15px;      /* metadata / unit / footnote */
  --type-body:12px;        --lh-body:18px;      /* body / tables / nav */
  --type-section:13.5px;   --lh-section:19px;   /* section heading */
  --type-page:15.5px;      --lh-page:22px;      /* page title */
  --type-number:17.5px;    --lh-number:23px;    /* primary numeric */
  --type-display:18.5px;   --lh-display:26px;   /* page thesis */

  /* ---------- weight（4 档）---------- */
  --w-body:400;
  --w-emph:500;
  --w-head:600;
  --w-strong:700;

  /* ---------- spacing（8 档）---------- */
  --space-1:2px;
  --space-2:4px;
  --space-3:6px;
  --space-4:8px;
  --space-5:10px;
  --space-6:12px;
  --space-8:16px;
  --space-10:20px;

  /* ---------- radius（收小：terminal 不是 app）---------- */
  --radius-sm:4px;
  --radius-md:6px;

  /* ---------- colour ---------- */
  --bg:#f4f6f8; --surface:#fff; --surface2:#f8fafc;
  --ink:#0e1726; --text:#1f2937; --muted:#667085; --faint:#98a2b3;
  --line:#e4e7ec; --line2:#eef1f5;
  --blue:#3157d5; --navy:#101828;
  --amber:#b54708; --amberBg:#fff7ed; --amberLine:#fedf89;
  --red:#b42318; --green:#067647; --greenBg:#ecfdf3;
  --shadow:none;

  /* ---------- 密度基线 ---------- */
  --pad-content:14px;          /* content padding 12–16 */
  --gap-section:10px;          /* section 竖向间距 8–12 */
  --gap-panel:10px;            /* panel 间距 8–12 */
  --topbar-h:50px;             /* 48–52 */
  --rail-w:196px;              /* 190–200 */
  --tap-h:30px;                /* 表格行高下限 / nav item */
  --chart-primary-h:220px;     /* 主图 210–230（P0-13） */
  --chart-secondary-h:158px;   /* 次图 150–170（P0-13） */
  --chart-panel2-h:300px;      /* 双面板 small multiples 280–320（P0-13） */
  --pad-panel:var(--space-5);
}

/* ---------- 移动端单独调（不直接继承 desktop dense mode）---------- */
@media (max-width:760px){
  :root{
    --type-meta:11px;    --lh-meta:16px;
    --type-body:13px;    --lh-body:19px;
    --type-display:17px; --lh-display:24px;
    --pad-content:var(--space-5);
    --gap-section:var(--space-5);
    --chart-primary-h:220px;
    --chart-secondary-h:180px;
    --chart-panel2-h:280px;
    --tap-h:34px;
  }
}

*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB",sans-serif;
  -webkit-font-smoothing:antialiased}
body{font-size:var(--type-body);line-height:var(--lh-body);overflow-x:hidden}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p,ul,ol{margin:0}
ul,ol{padding-left:var(--space-6)}
b,strong{font-weight:var(--w-emph)}
.tabular{font-variant-numeric:tabular-nums}

/* ================================================================ 布局骨架 */
.app{display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr);min-height:100vh}

/* ---------- 左侧 rail ---------- */
.sidebar{background:var(--navy);color:#d0d5dd;
  padding:var(--space-5) var(--space-4);position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;gap:var(--space-5)}
.brand{padding:0 var(--space-2) var(--space-4);
  border-bottom:1px solid rgba(255,255,255,.09)}
.brand b{display:block;color:#fff;font-size:var(--type-section);
  line-height:var(--lh-section);font-weight:var(--w-head)}
.brand span{font-size:var(--type-meta);line-height:var(--lh-meta);color:#98a2b3}
.nav{padding:var(--space-4) 0;display:grid;gap:var(--space-1)}
.nav a{padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);
  font-size:var(--type-body);line-height:var(--lh-body);color:#aeb6c5;
  min-height:var(--tap-h);display:flex;align-items:center}
.nav a:hover{background:#1d2939;color:#fff}
.nav a.on{background:#1d2939;color:#fff;font-weight:var(--w-head)}
.sideMeta{margin-top:auto;border-top:1px solid rgba(255,255,255,.09);
  padding:var(--space-4) var(--space-2) 0;
  font-size:var(--type-meta);line-height:var(--lh-meta);color:#98a2b3}
.sideMeta strong{color:#d0d5dd;font-weight:var(--w-emph)}
.healthDot{display:inline-block;width:6px;height:6px;border-radius:50%;
  background:#12b76a;margin-right:var(--space-3)}
.healthDot.warn{background:#f79009}
.healthDot.bad{background:#f04438}

/* ---------- 顶栏（terminal 式：细、只做定位与状态）---------- */
.main{min-width:0;background:var(--surface)}
.topbar{height:var(--topbar-h);background:var(--surface);
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:var(--space-5);
  padding:0 var(--pad-content);position:sticky;top:0;z-index:5}
.topTitle{font-size:var(--type-section);line-height:var(--lh-section);
  font-weight:var(--w-head);color:var(--ink)}
.topSub{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topRight{display:flex;gap:var(--space-3);align-items:center}
.pill{font-size:var(--type-meta);line-height:var(--lh-meta);
  padding:var(--space-1) var(--space-4);
  border-radius:999px;background:var(--surface2);color:var(--muted);white-space:nowrap}
.pill.warn{background:var(--amberBg);color:var(--amber)}
.pill.good{background:var(--greenBg);color:var(--green)}

/* ---------- 正文：worksheet（dividers + 紧凑分组）---------- */
.content{padding:var(--pad-content);display:flex;flex-direction:column;
  gap:var(--gap-section)}

/* ================================================================ 通用 worksheet 元素 */
/* 横向 key-value strip（关键数值行）：低装饰、强对齐 */
.strip{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
  gap:var(--gap-panel);background:var(--surface2);
  border:1px solid var(--line2);border-radius:var(--radius-md);
  padding:var(--space-4) var(--space-6)}
.stripCell{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}
.stripCell .sk{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--muted);font-weight:var(--w-emph);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.stripCell .sv{font-size:var(--type-number);line-height:1.25;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.stripCell .sv .unit{font-size:var(--type-meta);color:var(--faint);
  font-weight:var(--w-body);margin-left:var(--space-1)}
.stripCell .sc{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}
.stripCell.spread .sv{color:var(--blue)}
@media (max-width:760px){
  .strip{grid-auto-flow:row;grid-auto-columns:auto}
  .stripCell{flex-direction:row;align-items:baseline;gap:var(--space-4)}
  .stripCell .sv{font-size:var(--type-body)}
}

/* 紧凑横向数据行（历史位置 / momentum / 拐点） */
.wsRows{display:flex;flex-direction:column}
.wsRow{display:grid;
  grid-template-columns:minmax(150px,1.1fr) repeat(5,minmax(86px,1fr));
  gap:var(--space-4);align-items:baseline;
  padding:var(--space-3) var(--space-5);
  border-bottom:1px solid var(--line2)}
.wsRow:last-child{border-bottom:none}
.wsRow.head{padding-top:var(--space-2);padding-bottom:var(--space-2);
  border-bottom:1px solid var(--line)}
.wsRow.head span{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--faint);font-weight:var(--w-emph);white-space:nowrap}
.wsRow .rName{font-size:var(--type-body);font-weight:var(--w-emph);
  color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wsRow .rVal{font-size:var(--type-section);line-height:1.3;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.wsRow .rVal .unit{font-size:var(--type-meta);color:var(--faint);
  font-weight:var(--w-body)}
.wsRow .rCell{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--muted);font-variant-numeric:tabular-nums}
.wsRow .rCell b{color:var(--ink);font-weight:var(--w-emph)}
.wsRow .rTrend{color:var(--blue);font-weight:var(--w-strong)}
@media (max-width:980px){
  .wsRow{grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-5)}
  .wsRow .rName{grid-column:1 / -1}
  .wsRow.head{display:none}
}

/* section head：eyebrow + 标题 + 右侧 meta，底部 hairline 分隔 */
.section{display:flex;flex-direction:column;gap:var(--space-3)}
.sectionHead{display:flex;align-items:baseline;justify-content:space-between;
  gap:var(--space-5);flex-wrap:wrap;
  padding-bottom:var(--space-2);border-bottom:1px solid var(--line)}
.sectionTitle{font-size:var(--type-section);line-height:var(--lh-section);
  font-weight:var(--w-head);color:var(--ink)}
.sectionSub{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.eyebrow{font-size:var(--type-meta);line-height:var(--lh-meta);letter-spacing:.05em;
  color:var(--faint);font-weight:var(--w-emph);text-transform:uppercase}
.right{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  text-align:right}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-panel);align-items:start}
.grid2b{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--gap-panel);align-items:start}
/* grid item 默认 min-width:auto 会被内部 nowrap 长句撑爆（390 实测溢出
   830px）—— 布局网格的子项一律允许收缩到 0，截断交给内部 ellipsis。 */
.grid2>*,.grid2b>*,.secondary2>*{min-width:0}
.trendCard,.trendGrid,.evList{min-width:0}
@media (max-width:1100px){.grid2,.grid2b{grid-template-columns:1fr}}
.spacer{flex:1}
.hr{border:0;border-top:1px solid var(--line);margin:0}

/* 研究问题行（No research question → No chart） */
.qline{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.qline b{color:var(--text);font-weight:var(--w-emph)}

/* ================================================================ Layer 1：页面抬头 */
.pageHead{display:flex;flex-direction:column;gap:var(--space-3);
  padding-bottom:var(--space-4);border-bottom:2px solid var(--ink)}
.pageHead .phTop{display:flex;align-items:baseline;gap:var(--space-5);flex-wrap:wrap}
.pageHead h1{font-size:var(--type-page);line-height:var(--lh-page);
  font-weight:var(--w-head);color:var(--ink)}
.pageHead .phAs{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}
.pageThesis{font-size:var(--type-display);line-height:1.32;
  font-weight:var(--w-strong);color:var(--ink);letter-spacing:-.005em}
.pageHead .phState{display:flex;gap:var(--space-3);flex-wrap:wrap;
  font-size:var(--type-meta);line-height:var(--lh-meta)}

/* ================================================================ Layer 2：主分析 */
.primaryPanel{width:100%}
.primaryPanel .ppHead{display:flex;align-items:baseline;justify-content:space-between;
  gap:var(--space-5);flex-wrap:wrap;margin-bottom:var(--space-3);
  padding-bottom:var(--space-2);border-bottom:1px solid var(--line)}
.primaryPanel h2{font-size:var(--type-section);line-height:var(--lh-section);
  font-weight:var(--w-head);color:var(--ink)}
.primaryPanel .ppQ{margin-top:var(--space-1)}
.primaryPanel .ppValue{font-size:var(--type-number);line-height:1.25;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.primaryPanel .ppValue .unit{font-size:var(--type-meta);color:var(--faint);
  font-weight:var(--w-body)}
.primaryPanel .ppNote{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.primaryPanel .ppHint{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--faint);margin-top:var(--space-3)}

/* ================================================================ 图表 host（ECharts + SVG 通用） */
.chartHost{width:100%;height:var(--chart-primary-h)}
.chartHost.secondary{height:var(--chart-secondary-h)}
.chartCap{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  margin-top:var(--space-2)}
.chartHost.chartFail{display:flex;align-items:center;justify-content:center;
  border:1px dashed var(--line);border-radius:var(--radius-sm);
  font-size:var(--type-meta);color:var(--muted)}
.chartHost + noscript{display:block;font-size:var(--type-meta);color:var(--faint)}

/* ================================================================ Layer 3：历史位置 strip → 紧凑数据行 */
.posStrip{background:var(--surface2);border:1px solid var(--line2);
  border-radius:var(--radius-md);padding:var(--space-3) 0;overflow:hidden}
.posItem{display:grid;
  grid-template-columns:minmax(140px,1.05fr) repeat(4,minmax(88px,1fr));
  gap:var(--space-4);align-items:baseline;
  padding:var(--space-3) var(--space-6);border-bottom:1px solid var(--line2)}
.posItem:last-child{border-bottom:none}
.posItem .piName{font-size:var(--type-body);color:var(--text);
  font-weight:var(--w-emph);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.posItem .piValue{font-size:var(--type-section);line-height:1.3;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.posItem .piValue .unit{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-body)}
.posItem .piRow{display:flex;gap:var(--space-5);flex-wrap:wrap;
  font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.posItem .piRow span{white-space:nowrap}
.posItem .piRow b{color:var(--ink);font-weight:var(--w-emph)}
.posItem .piTrend{font-weight:var(--w-strong);color:var(--blue)}
@media (max-width:980px){
  .posItem{grid-template-columns:1fr 1fr;gap:var(--space-2) var(--space-5)}
  .posItem .piName{grid-column:1 / -1}
}

/* ================================================================ Layer 4：两栏 */
.section.secondary2{display:grid;grid-template-columns:1fr 1fr;
  gap:var(--gap-panel);align-items:start;flex-direction:row}
@media (max-width:1100px){.section.secondary2{grid-template-columns:1fr}}

/* ================================================================ Layer 5：细节（折叠） */
.layer5{display:flex;flex-direction:column;gap:var(--space-3)}
.layer5 > details{border:1px solid var(--line);border-radius:var(--radius-md);
  background:var(--surface);overflow:hidden}
.layer5 > details > summary{cursor:pointer;list-style:none;
  padding:var(--space-3) var(--space-5);
  font-size:var(--type-body);line-height:var(--lh-body);font-weight:var(--w-emph);
  color:var(--ink);display:flex;align-items:center;gap:var(--space-3)}
.layer5 > details > summary::-webkit-details-marker{display:none}
.layer5 > details > summary::before{content:"\203A";color:var(--faint);
  transition:transform .12s ease;display:inline-block}
.layer5 > details[open] > summary::before{transform:rotate(90deg)}
.layer5 > details > .body{padding:0 var(--space-5) var(--space-4)}
.layer5 .l5Hint{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--faint);font-weight:var(--w-body)}

/* ================================================================ Card（只给真正独立的信息块） */
.card{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-md);box-shadow:var(--shadow)}
.card--flush{background:transparent;border:0;box-shadow:none;border-radius:0}
.panel{padding:var(--pad-panel)}
.panel--flush{padding:0}
.panelHead{display:flex;align-items:flex-start;justify-content:space-between;
  gap:var(--space-4);margin-bottom:var(--space-3);flex-wrap:wrap}
.panelHead h2,.panelHead h3{font-size:var(--type-section);line-height:var(--lh-section);
  font-weight:var(--w-head);color:var(--ink)}
.panelHead span{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}

/* ================================================================ Overview：宏观判断 worksheet 头 */
.wsHead{display:flex;flex-direction:column;gap:var(--space-4);
  padding-bottom:var(--space-5);border-bottom:2px solid var(--ink)}
.wsHead .wsTitleRow{display:flex;align-items:baseline;gap:var(--space-5);flex-wrap:wrap}
.wsHead h1{font-size:var(--type-page);line-height:var(--lh-page);
  font-weight:var(--w-head);color:var(--ink)}
.wsHead .wsAs{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}
.wsThesis{font-size:var(--type-display);line-height:1.32;
  font-weight:var(--w-strong);color:var(--ink);letter-spacing:-.005em}
.wsThesisMeta{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.pillarStrip{display:grid;grid-template-columns:repeat(5,1fr);
  gap:var(--gap-panel)}
@media (max-width:1100px){.pillarStrip{grid-template-columns:repeat(2,1fr)}}
@media (max-width:760px){.pillarStrip{grid-template-columns:1fr}}
.pillarCell{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;
  background:var(--surface2);border:1px solid var(--line2);
  border-radius:var(--radius-md);padding:var(--space-4) var(--space-5)}
.pillarCell .pk{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--faint);font-weight:var(--w-emph);letter-spacing:.03em}
.pillarCell b{font-size:var(--type-section);line-height:1.3;
  font-weight:var(--w-head);color:var(--ink)}
.pillarCell p{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wsHead .wsWhat{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- 趋势与拐点：紧凑行（一格列表，不砌卡墙）---------- */
.trendGrid{display:flex;flex-direction:column;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}
.trendCard{padding:var(--space-3) var(--space-5);display:flex;
  flex-direction:column;gap:var(--space-1);border-top:1px solid var(--line2)}
.trendCard:first-child{border-top:0}
.tcTop{display:flex;justify-content:space-between;align-items:baseline;
  gap:var(--space-3)}
.tcDomain{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  letter-spacing:.03em;white-space:nowrap}
.tcMore{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--blue);
  white-space:nowrap}
.trendCard h4{font-size:var(--type-body);line-height:var(--lh-body);
  font-weight:var(--w-head);color:var(--ink)}
.trendCard p{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcEv{margin:0;padding:0;list-style:none;display:flex;gap:var(--space-5);
  white-space:nowrap;overflow:hidden}
.tcEv li{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;
  min-width:0}
.tcEv li::before{content:"·";color:var(--faint);margin-right:var(--space-2)}
@media (max-width:760px){
  .trendCard:nth-child(n+5){display:none}
}
.evList{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-md);padding:var(--space-2) var(--space-5)}

/* ---------- 关键事件（紧凑行）---------- */
.timeline{display:flex;flex-direction:column}
.event{display:grid;grid-template-columns:92px 1fr 52px;gap:var(--space-4);
  align-items:baseline;padding:var(--space-3) 0;
  border-bottom:1px solid var(--line2)}
.event>*{min-width:0}
.event b{overflow-wrap:anywhere}
.event:last-child{border-bottom:none}
.event .date{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.event b{font-size:var(--type-body);line-height:var(--lh-body);font-weight:var(--w-head);
  color:var(--ink);display:block}
.event p{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.event .when{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  text-align:right;white-space:nowrap}
.tag{font-size:var(--type-meta);line-height:var(--lh-meta);padding:0 var(--space-2);
  border-radius:var(--radius-sm);background:var(--greenBg);color:var(--green);
  font-weight:var(--w-emph);margin-left:var(--space-2);display:inline-block}
.tag.expected{background:var(--amberBg);color:var(--amber)}

/* ---------- 关键信号：一格里若干条，分隔线分层 ---------- */
.insights{display:grid;grid-template-columns:1fr;gap:0;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}
.insight{padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;
  gap:var(--space-2);border-top:1px solid var(--line2)}
.insight:first-child{border-top:0}
.insight h3{font-size:var(--type-body);line-height:var(--lh-body);
  font-weight:var(--w-head);color:var(--ink)}
.insight p{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.signalNo{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  font-weight:var(--w-emph)}
.evidence{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-6)}
.evidence div{display:flex;gap:var(--space-2);align-items:baseline;
  font-size:var(--type-meta);line-height:var(--lh-meta)}
.evidence span{color:var(--faint)}
.evidence b{color:var(--ink);font-weight:var(--w-emph);font-variant-numeric:tabular-nums}
.trigger{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.insight.warn{border-left:2px solid var(--amberLine)}
.insight.alert{border-left:2px solid #f2d6d2}

/* ---------- 市场定价 strip ---------- */
.pulseStrip{background:var(--surface2);border:1px solid var(--line2);
  border-radius:var(--radius-md)}
.pulse{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));
  gap:var(--space-4) var(--space-6);padding:var(--space-4) var(--space-6)}
.metric{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}
.mk{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv{font-size:var(--type-section);line-height:1.3;font-weight:var(--w-strong);
  color:var(--ink);font-variant-numeric:tabular-nums}
.mv .unit{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-body)}
.mc{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dir{display:inline-block;width:0;height:0;margin-right:var(--space-2)}
.dir.up{border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-bottom:4.5px solid var(--green)}
.dir.down{border-left:3.5px solid transparent;border-right:3.5px solid transparent;
  border-top:4.5px solid var(--red)}

/* ================================================================ 表格（全站同一套密度） */
.tbl{overflow-x:auto;border:1px solid var(--line2);border-radius:var(--radius-sm)}
.tbl table{width:100%;border-collapse:collapse}
.tbl th{font-size:var(--type-meta);line-height:var(--lh-meta);font-weight:var(--w-head);
  color:var(--muted);text-align:left;white-space:nowrap;
  padding:var(--space-3) var(--space-4);background:var(--surface2);
  border-bottom:1px solid var(--line)}
.tbl td{font-size:var(--type-body);line-height:var(--lh-body);color:var(--text);
  padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line2);
  height:var(--tap-h);vertical-align:middle}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl td.n,.tbl th.n{text-align:right;font-variant-numeric:tabular-nums}
.tbl td.n b{font-weight:var(--w-emph);color:var(--ink)}
.tbl td:first-child,.tbl th:first-child{text-align:left}
.tbl .unit{color:var(--faint);font-weight:var(--w-body);margin-left:var(--space-1)}
.mut2{color:var(--faint)}
.muted{color:var(--muted)}

/* ================================================================ SVG 图表容器 + 图内排版 */
.histWrap{margin-top:var(--space-3)}
.histRange[data-range]{width:100%}
.histSvg{width:100%;height:auto;display:block}
.chartWide{display:block}
.chartNarrow{display:none}
@media (max-width:760px){
  .chartWide{display:none}
  .chartNarrow{display:block}
}
.mini{display:block}
.miniEmpty{font-size:var(--type-meta);color:var(--faint)}
.gridline{stroke:var(--line2);stroke-width:1}
.axis{stroke:var(--faint);stroke-width:1}
.axl{fill:var(--muted);font-size:var(--type-meta);font-family:inherit}
.gapMark{stroke:var(--red);stroke-width:1;stroke-dasharray:3 4;opacity:.55}
.gapNote{fill:var(--red);font-size:var(--type-meta)}
.legend{display:flex;flex-wrap:wrap;gap:var(--space-6);margin-top:var(--space-3)}
.legend span{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  display:flex;align-items:center;gap:var(--space-2)}
.legend i{width:10px;height:3px;border-radius:1px;display:inline-block}
.legend em{font-style:normal;font-size:var(--type-meta);color:var(--faint)}
.curveSvg,.curve{width:100%;height:auto}
.pt{fill:var(--surface);stroke:var(--blue);stroke-width:1.5}
.val{fill:var(--ink);font-size:var(--type-body);font-weight:var(--w-emph);font-family:inherit}
.dropline{stroke:var(--line);stroke-width:1;stroke-dasharray:2 3}
.ladder{display:flex;flex-direction:column;gap:var(--space-3)}
.ladderRow{display:grid;grid-template-columns:46px 1fr 82px;align-items:center;
  gap:var(--space-4)}
.ladderName{font-size:var(--type-body);color:var(--text)}
.ladderVal{font-size:var(--type-body);text-align:right;
  font-variant-numeric:tabular-nums;color:var(--ink);font-weight:var(--w-emph)}
.barTrack{height:var(--space-3);background:var(--line2);border-radius:999px;overflow:hidden}
.barFill{height:100%;background:var(--blue);border-radius:999px}
.barFill.tail{background:var(--red)}

/* ---------- 区间切换 ---------- */
.rangeBar{display:flex;gap:var(--space-2);flex-wrap:wrap}
.rangeBar .rng{font-size:var(--type-meta);line-height:var(--lh-meta);
  padding:var(--space-1) var(--space-4);border:1px solid var(--line);
  border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;user-select:none}
.rangeBar .rng.on{background:var(--navy);border-color:var(--navy);color:#fff;
  font-weight:var(--w-emph)}

/* ---------- 拐点（紧凑化）---------- */
.tpWrap{display:flex;flex-direction:column;gap:var(--space-4)}
.tpCard{border:1px solid var(--line2);border-radius:var(--radius-sm);
  padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;
  gap:var(--space-2)}
.tpCard h4{font-size:var(--type-body);line-height:var(--lh-body);
  font-weight:var(--w-head);color:var(--ink)}
.tpVerdict{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--text);font-weight:var(--w-emph)}
.tpGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}
.tpGrid div{display:flex;flex-direction:column;gap:var(--space-1)}
.tpGrid b{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  font-weight:var(--w-emph)}
.tpGrid span{font-size:var(--type-body);line-height:var(--lh-body);color:var(--text)}
.tpEv{margin:0;padding-left:var(--space-5);list-style:none}
.tpEv li{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.tpEv li::before{content:"·";color:var(--faint);margin-right:var(--space-2)}

/* ---------- 对比 ---------- */
.cmpBlock{display:flex;flex-direction:column;gap:var(--space-3);
  margin-bottom:var(--space-5)}
.cmpBlock h4{font-size:var(--type-body);line-height:var(--lh-body);
  font-weight:var(--w-head);color:var(--ink)}
.cmpBar{margin-bottom:var(--space-3)}
.cmpBar .rng{font-size:var(--type-meta)}
.cmpModes{display:grid;grid-template-columns:1fr;gap:var(--space-3)}
.cmpMode{display:flex;flex-direction:column;gap:var(--space-2);min-width:0}
.cmpLab{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}
@media (max-width:900px){.cmpBar{margin-bottom:var(--space-3)}
.cmpBar .rng{font-size:var(--type-meta)}}

/* ================================================================ 三腿证据矩阵 */
.legTable{display:flex;flex-direction:column;gap:var(--space-2)}
.legRowX{display:grid;grid-template-columns:64px repeat(3,1fr) 190px;
  gap:var(--space-2);align-items:stretch}
.legRowX.head .legCell{border:none;background:none;padding:0;min-height:0}
.legRowX.head .legCell b{font-size:var(--type-meta);color:var(--muted);
  font-weight:var(--w-head)}
.legNameX{font-size:var(--type-body);font-weight:var(--w-head);color:var(--ink);
  align-self:center}
.legCell{border:1px solid var(--line2);border-radius:var(--radius-sm);
  padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;
  gap:var(--space-1);min-height:52px}
.legCell .legState{font-size:var(--type-meta);line-height:var(--lh-meta);
  font-weight:var(--w-emph);color:var(--muted)}
.legCell b{font-size:var(--type-body);line-height:var(--lh-body);color:var(--ink);
  font-variant-numeric:tabular-nums}
.legCell em{font-style:normal;font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--faint)}
.legTallyX{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  align-self:center}
.legSup{background:#f2f8f4;border-color:#cfe6d8}
.legSup .legState{color:var(--green)}
.legCon{background:#fdf3f2;border-color:#f2d6d2}
.legCon .legState{color:var(--red)}
.legUndef{background:var(--surface2);border-style:dashed}
.legNa{background:var(--surface);border-style:dashed}
.legNa .legState{color:var(--faint)}
@media (max-width:980px){.legRowX{grid-template-columns:1fr 1fr}}

/* ---------- 物理层旧表格（兼容保留）---------- */
.physRow{display:grid;grid-template-columns:64px repeat(3,1fr) 82px;
  gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--line2)}
.leg{font-size:var(--type-body);color:var(--text)}
.leg.na{color:var(--faint)}
.statusNo{font-size:var(--type-body);text-align:right;
  font-variant-numeric:tabular-nums;color:var(--ink);font-weight:var(--w-emph)}

/* ================================================================ 季节 Z 证据块 */
.seasonWrap{display:flex;flex-direction:column;gap:var(--space-2);
  margin-top:var(--space-4)}
.seasonRow{display:grid;grid-template-columns:110px 120px 140px 110px 140px 1fr;
  gap:var(--space-4);align-items:center;padding:var(--space-3);
  background:var(--surface2);border-radius:var(--radius-sm)}
.seasonName{font-size:var(--type-body);font-weight:var(--w-head);color:var(--ink)}
.seasonCur,.seasonMean,.seasonZ,.seasonPct{display:flex;flex-direction:column;
  gap:var(--space-1)}
.seasonRow span{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}
.seasonRow b{font-size:var(--type-body);line-height:var(--lh-body);color:var(--ink);
  font-variant-numeric:tabular-nums}
.seasonRead{font-size:var(--type-body);font-weight:var(--w-emph);color:var(--text)}
@media (max-width:980px){.seasonRow{grid-template-columns:1fr 1fr}}

/* ================================================================ 历史位置行（折叠区 / 表格用） */
.posWrap{display:flex;flex-direction:column;gap:var(--space-2)}
.posRow{display:flex;align-items:baseline;gap:var(--space-5);flex-wrap:wrap;
  padding:var(--space-2) var(--space-4);background:var(--surface2);
  border-radius:var(--radius-sm);font-size:var(--type-body)}
.posName{min-width:170px;color:var(--text);font-weight:var(--w-emph)}
.posNow{font-size:var(--type-section);line-height:1.3;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.posPct,.posChg{color:var(--muted);font-size:var(--type-body)}
.posTrend{font-weight:var(--w-strong);color:var(--blue)}
.posEmpty{color:var(--muted)}

/* ================================================================ callout / 状态 chip */
.callout{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted);
  background:var(--surface2);border-left:2px solid var(--line);
  padding:var(--space-3) var(--space-5);
  margin-top:var(--space-4)}
.callout.info{background:#f5f8ff;border-left-color:#c3d0f5}
.callout b{font-weight:var(--w-emph);color:var(--text)}
.fb{font-size:var(--type-meta);line-height:var(--lh-meta);padding:0 var(--space-2);
  border-radius:var(--radius-sm);display:inline-block;font-weight:var(--w-emph)}
.fb.ok{background:var(--greenBg);color:var(--green)}
.fb.mut{background:var(--surface2);color:var(--muted)}
.fb.bad{background:#fdf3f2;color:var(--red)}
.badText{color:var(--red)}
.warnText{color:var(--amber);font-weight:var(--w-emph)}

/* ---------- 矩阵 / diagnostic strip ---------- */
.matrix{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));
  gap:var(--space-4)}
.matrixCell{border:1px solid var(--line2);border-radius:var(--radius-sm);
  padding:var(--space-3) var(--space-4);display:flex;flex-direction:column;
  gap:var(--space-1)}
.matrixCell span{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.matrixCell b{font-size:var(--type-section);line-height:1.3;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.matrixCell em{font-style:normal;font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--faint)}
.healthStrip{display:flex;border-top:1px solid var(--line);align-items:center;
  gap:var(--space-5);flex-wrap:wrap;
  padding:var(--space-3) var(--space-5);font-size:var(--type-meta);
  line-height:var(--lh-meta);color:var(--muted)}
.healthStrip strong{font-size:var(--type-body);font-weight:var(--w-head);color:var(--ink)}
.buildFoot{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  text-align:right}
.buildFoot code{font-size:var(--type-meta);background:var(--surface2);
  padding:0 var(--space-1);border-radius:var(--space-1)}
.empty{font-size:var(--type-body);color:var(--muted);padding:var(--space-5) 0}

/* ---------- 库存对比条 ---------- */
.invBars{display:flex;flex-direction:column;gap:var(--space-3)}
.invRow{display:grid;grid-template-columns:100px 1fr 88px;gap:var(--space-4);
  align-items:center}
.invLab{font-size:var(--type-body);color:var(--text)}
.invTrack{height:var(--space-4);background:var(--line2);border-radius:999px;overflow:hidden}
.invFill{height:100%;background:var(--blue);border-radius:999px}
.invVal{font-size:var(--type-body);text-align:right;
  font-variant-numeric:tabular-nums;font-weight:var(--w-emph);color:var(--ink)}
.invNote{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  grid-column:2 / -1}

/* ================================================================ 响应式：rail 收起 */
@media (max-width:980px){
  .app{grid-template-columns:1fr}
  .sidebar{position:static;height:auto;flex-direction:column}
  .nav{grid-template-columns:repeat(2,1fr);display:grid}
  .content{padding:var(--space-5)}
  .topbar{padding:0 var(--space-5)}
  .event{grid-template-columns:1fr;gap:var(--space-1)}
  .event .when{text-align:left}
}

/* ---------- 移动端阅读顺序固定（DOM 序 + order 调整）---------- */
@media (max-width:760px){
  .content{gap:var(--space-5)}
  .section,.secondary2,.grid2,.grid2b{gap:var(--space-5)}
  .tpGrid{grid-template-columns:1fr}
}

/* ---------- matrix 列数变体 ---------- */
.matrix.c2{grid-template-columns:repeat(2,1fr)}
.matrix.c3{grid-template-columns:repeat(3,1fr)}
.matrix.c4{grid-template-columns:repeat(4,1fr)}
@media (max-width:760px){
  .matrix.c2,.matrix.c3,.matrix.c4{grid-template-columns:1fr 1fr}
}
.histRange[hidden]{display:none}
.sideMetaLine{margin-top:var(--space-1)}
.detailNote{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint)}
.tblGap{margin-top:var(--space-4)}

@media (max-width:760px){
  .layer--head{order:1}
  .layer--pos{order:2}
  .layer--primary{order:3}
  .layer--secondary{order:4}
  .layer--detail{order:5}
}

/* ================================================================ 对比：研究问题 + 口径说明 */
.cmpQ{font-size:var(--type-meta);line-height:var(--lh-meta);
  color:var(--muted);margin-bottom:var(--space-1)}
.cmpQ b{color:var(--text);font-weight:var(--w-emph)}
.cmpCap{display:flex;flex-direction:column;gap:var(--space-1);
  border-left:2px solid var(--line);
  padding:var(--space-1) 0 var(--space-1) var(--space-4);
  margin-top:var(--space-3);font-size:var(--type-meta);
  line-height:var(--lh-meta);color:var(--muted)}
.cmpCap b{display:inline-block;min-width:3.5em;color:var(--faint);
  font-weight:var(--w-emph)}
.cmpCap .mut2{color:var(--muted)}

/* ================================================================ tooltip */
.tip{position:relative;border-bottom:1px dotted var(--faint);cursor:help}
.tip>[data-tip]{position:absolute;left:0;bottom:100%;z-index:20;
  display:none;width:max-content;max-width:320px;margin-bottom:var(--space-1);
  padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);
  background:var(--navy);color:#fff;font-size:var(--type-meta);
  line-height:var(--lh-meta);font-weight:var(--w-body);
  box-shadow:0 4px 12px rgba(16,24,40,.18)}
.tip:hover>[data-tip],.tip:focus-within>[data-tip]{display:block}

/* ---------- 当前期限结构（紧凑 strip）---------- */
.termStructure{margin-top:calc(-1 * var(--gap-section))}
.tsRow{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
  gap:var(--gap-panel);align-items:baseline}
.tsCell{display:flex;flex-direction:column;gap:var(--space-1);min-width:56px}
.tsCell span{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.tsCell b{font-size:var(--type-number);line-height:1.25;
  font-weight:var(--w-strong);color:var(--ink);font-variant-numeric:tabular-nums}
.tsCell b .unit{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-body)}
.tsCell.spread b{color:var(--blue)}
.tsNote{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  margin-top:var(--space-3)}
@media (max-width:760px){
  .tsRow{grid-auto-flow:row;grid-auto-columns:auto}
  .tsCell{flex-direction:row;align-items:baseline;gap:var(--space-4)}
  .tsCell b{font-size:var(--type-body)}
}

/* ---------- Market Risk small multiples ---------- */
.smGrid{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap-panel);
  margin-bottom:var(--space-3)}
.smHead{display:flex;flex-direction:column;gap:var(--space-1)}
.smHead span{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--muted)}
.smHead b{font-size:var(--type-number);line-height:1.25;font-weight:var(--w-strong);
  color:var(--ink);font-variant-numeric:tabular-nums}
.smHead b .unit{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-body)}
.smHead em{font-size:var(--type-meta);line-height:var(--lh-meta);color:var(--faint);
  font-style:normal}
.smFrame{stroke:var(--line);stroke-width:1}
.smName{font-size:var(--type-meta);line-height:var(--lh-meta);fill:var(--muted)}
.vixTerm{margin-top:calc(-1 * var(--gap-section))}
.dxyContext .callout{margin-top:var(--space-3)}
@media (max-width:760px){.smGrid{grid-template-columns:1fr 1fr;gap:var(--space-4)}}

/* ---------- 全站构建 footer（第三方审查：每页可见 Build SHA）----------
   复用 /health 既有 .buildFoot 字号/颜色，全站版加顶边线 + 左对齐通栏 */
.buildFoot.allPages{margin-top:var(--gap-section);
  padding:var(--space-3) var(--pad-content) var(--space-4);
  border-top:1px solid var(--line);text-align:left}

/* ================================================================
   Third-party visual review round 2 组件（P0-1..P1）
   ================================================================ */

/* P0-13：双面板 small multiples 高度（280–320） */
.chartHost.panel2{height:var(--chart-panel2-h)}

/* P0-3：Layer4 两栏 40 / 60（左拐点表 / 右对比） */
.section.secondary2{grid-template-columns:2fr 3fr}

/* P0-2/14：口径 segmented control + 研究问题 selector（同一胶囊样式） */
.modeBar,.rqBar{display:flex;gap:var(--space-2);flex-wrap:wrap;
  margin:var(--space-4) 0}
.modeBar .rng,.rqBar .rng{font-size:var(--type-meta);line-height:var(--lh-meta);
  padding:var(--space-2) var(--space-4);border:1px solid var(--line);
  border-radius:999px;color:var(--muted);cursor:pointer;background:var(--surface)}
.modeBar .rng.on,.rqBar .rng.on{background:var(--navy);border-color:var(--navy);
  color:#fff;font-weight:var(--w-emph)}
.rqPane[hidden]{display:none}

/* P0-4：拐点 compact 表 */
.tpTable table{width:100%;border-collapse:collapse}
.tpTable th{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-emph);
  text-align:left;padding:var(--space-2) var(--space-3);
  border-bottom:1px solid var(--line)}
.tpTable th.n,.tpTable td.n{text-align:right;
  font-variant-numeric:tabular-nums}
.tpTable td{padding:var(--space-3);border-bottom:1px solid var(--line2);
  vertical-align:top}
.tpTable .tpName{font-weight:var(--w-emph);white-space:nowrap}
.tpTable .tpVerdictCell{color:var(--muted);font-size:var(--type-meta)}
.tpDetailRow td{padding:0 var(--space-3) var(--space-4)}
.tpRowDetail summary{cursor:pointer;font-size:var(--type-meta);
  color:var(--muted);padding:var(--space-2) 0}
.tpEv{margin:var(--space-2) 0;color:var(--muted);font-size:var(--type-meta);
  line-height:var(--lh-meta)}

/* P0-5：信号 compact 表 */
.sigTable table{width:100%;border-collapse:collapse}
.sigTable th{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-emph);
  text-align:left;padding:var(--space-2) var(--space-3);
  border-bottom:1px solid var(--line)}
.sigTable td{padding:var(--space-3);border-bottom:1px solid var(--line2);
  vertical-align:top}
.sigTable .sigDomain{white-space:nowrap;font-weight:var(--w-emph);
  color:var(--muted)}
.sigTable .sigStatement{font-weight:var(--w-head);max-width:34ch}
.sigTable .sigEv{color:var(--muted);font-size:var(--type-meta);max-width:44ch}
.sigTable .sigDir{font-size:var(--type-number);line-height:1;
  color:var(--muted);font-weight:var(--w-strong)}
.sigTable tr.alert .sigDir{color:var(--amber)}
.sigTable tr.critical .sigDir{color:var(--red)}

/* P0-12：一行 context strip */
.ctxStrip{display:flex;align-items:baseline;gap:var(--space-6);flex-wrap:wrap;
  padding:var(--space-4) 0;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
  font-size:var(--type-body);font-variant-numeric:tabular-nums}
.ctxStrip b{font-weight:var(--w-head);color:var(--ink)}
.ctxStrip .mut2{font-size:var(--type-meta);color:var(--faint)}

/* P0-8：工程口径收纳 */
.methodFold summary{cursor:pointer;font-size:var(--type-meta);color:var(--muted);
  padding:var(--space-3) 0}
.methodFold .body{padding-bottom:var(--space-4)}

/* P0-7：单位全局（值旁 10.5px muted，间距 3px） */
.unit{font-size:var(--type-meta);color:var(--faint);font-weight:var(--w-body);
  margin-left:var(--space-2)}

/* ---------- P1 Mobile：drawer 导航 + progressive disclosure ---------- */
.navToggle{display:none}
@media (max-width:760px){
  .app{grid-template-columns:minmax(0,1fr)}          /* 单列 */
  .sidebar{position:fixed;inset:0 auto 0 0;width:min(78vw,300px);
    transform:translateX(-100%);transition:transform .18s ease;z-index:40;
    height:100vh}
  body.drawerOpen .sidebar{transform:none;
    box-shadow:0 0 0 100vmax rgba(16,24,40,.38)}
  body.drawerOpen .sidebar .nav a{min-height:var(--tap-h)}
  .navToggle{display:inline-flex;align-items:center;justify-content:center;
    width:34px;height:34px;border:1px solid var(--line);border-radius:var(--radius-sm);
    background:var(--surface);cursor:pointer;font-size:var(--type-section);color:var(--ink)}
  /* progressive disclosure：mFold 区块在移动端折叠（首块=头行，点击展开） */
  .mFold{border-top:1px solid var(--line)}
  .mFold>.sectionHead,.mFold>.card>.panelHead,.mFold>.panelHead{cursor:pointer}
  .mFold.mCollapsed>*:not(:first-child){display:none}
  .mFold.mCollapsed{border-bottom:1px solid var(--line)}
  .mFold>.sectionHead::after,.mFold.mCollapsed>.sectionHead::after,
  .mFold>.panelHead::after,.mFold.mCollapsed>.panelHead::after{
    content:"▸";float:right;color:var(--faint);font-size:var(--type-meta)}
  .mFold:not(.mCollapsed)>.sectionHead::after{content:"▾"}
}

/* ---------- 次级 SVG 不上采样（owner 实测：/chain 的 SCFI/GSCPI 被拉满全栏）----------
   viewBox 566 的次图在半栏卡片里刚好 1:1；放进全栏容器（供应链页）时
   width:100% 会把它放大 2 倍+ —— 模糊且比例失衡。封顶到自身逻辑宽度。 */
svg.histSvg.secondary{max-width:600px;margin:0 auto;display:block}
