﻿  :root {
    --paper-bg: #FBF7F0;
    --paper-bg-canvas: #F5F0E5;
    --paper-ink: #1A1815;
    --paper-warm: #3A3530;
    --paper-muted: #666666;
    --paper-line: rgba(26, 24, 21, 0.16);
    --paper-line-strong: #1A1815;
    --risk-red: #7C1D1D;
    --risk-yellow: #A8761A;
    --risk-orange: #C25E2A;
    --risk-green: #1F4D2C;
    --risk-severe: #5A0F0F;
    --font-display: "Playfair Display", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
    --font-serif:   "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
    --font-mono:    "IBM Plex Mono", "SF Mono", Menlo, Consolas, monospace;
  }
  * { box-sizing: border-box; }
  html, body { margin: 0; padding: 0; }
  body { background: var(--paper-bg); color: var(--paper-ink); font-family: var(--font-serif); line-height: 1.55; }
  .container { max-width: 1280px; margin: 0 auto; padding: clamp(20px, 4vw, 48px); }

  .path-tag { position: sticky; top: 0; z-index: 100; background: var(--paper-ink); color: var(--paper-bg); padding: 10px 16px; text-align: center; font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.15em; border-bottom: 2px solid var(--paper-bg); }
  .path-tag strong { font-size: 13px; letter-spacing: 0.2em; color: var(--risk-yellow); }

  /* masthead 规格对齐 Bubble Watch 原版(64px 题、32px 下距、0.3em kicker 字距、
     meta 正文墨色仅末行弱化)——消除两页报头的细微视觉漂移 */
  header.masthead { border-bottom: 3px double var(--paper-ink); padding-bottom: 20px; margin-bottom: 32px; }
  .masthead-row { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 12px; }
  .kicker { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.3em; color: var(--risk-red); margin-bottom: 8px; text-transform: uppercase; }
  h1.title { font-family: var(--font-display); font-size: clamp(36px, 6vw, 64px); font-weight: 900; line-height: 1.05; margin: 0; letter-spacing: -0.02em; }
  h1.title em { font-style: italic; font-weight: 400; }
  .issue-meta { text-align: right; font-family: var(--font-mono); font-size: 12px; line-height: 1.8; color: var(--paper-ink); }
  .issue-meta strong { color: var(--paper-ink); }
  .issue-meta > div:last-child { margin-top: 8px; color: var(--paper-muted); }

  .dashboard-jump-nav { margin-bottom: 32px; padding: 12px 0; border-top: 1px solid var(--paper-line); border-bottom: 1px solid var(--paper-line); font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; display: flex; gap: 22px; flex-wrap: wrap; }
  .dashboard-jump-nav a { color: var(--paper-muted); text-decoration: none; padding: 2px 0; border-bottom: 1px solid transparent; }
  .dashboard-jump-nav a:hover { color: var(--paper-ink); border-bottom-color: var(--risk-red); }
  .dashboard-jump-nav a.new { color: var(--risk-green); font-weight: 600; }

  .editorial-section { margin: 40px 0; border-top: 4px solid var(--section-accent, var(--risk-red)); border-bottom: 1px solid var(--paper-line); padding: 24px 28px 20px 28px; background: var(--paper-bg); }
  /* 一级 section 页眉统一 Bubble Watch 分类页眉语法:2px 实墨下边框(含 ODP 等全部 editorial-section) */
  .editorial-section-header { margin-bottom: 18px; border-bottom: 2px solid var(--paper-ink); padding-bottom: 10px; }
  .section-kicker { display: block; font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.28em; color: var(--paper-muted); text-transform: uppercase; margin-bottom: 6px; }
  .section-title { display: block; font-family: var(--font-display); font-size: clamp(22px, 3vw, 30px); font-weight: 900; line-height: 1.2; letter-spacing: -0.01em; color: var(--paper-ink); }
  .section-note { display: block; font-family: var(--font-serif); font-size: 13px; line-height: 1.7; color: var(--paper-muted); margin-top: 6px; }
  .editorial-section-body { padding: 0 8px; }
  body.gfrr-data-loading .editorial-section-body,
  body.gfrr-data-loading footer.method,
  body.gfrr-data-failed .editorial-section-body,
  body.gfrr-data-failed footer.method {
    visibility: hidden;
  }
  body.gfrr-data-loading .editorial-section::after,
  body.gfrr-data-failed .editorial-section::after {
    content: "数据加载中";
    display: block;
    padding: 10px 8px 0 8px;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.14em;
    color: var(--paper-muted);
  }
  body.gfrr-data-failed .editorial-section::after {
    content: "数据暂不可用";
  }

  .macro-overview-shell { display: grid; gap: 22px; }

  .editorial-big-number { padding: 0; display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 32px; align-items: stretch; min-height: 240px; }
  @media (max-width: 720px) { .editorial-big-number { grid-template-columns: 1fr; } }
  .big-left { background: var(--paper-ink); color: var(--paper-bg); padding: 32px; display: flex; flex-direction: column; justify-content: flex-start; min-height: 100%; }
  /* Hero 排版对齐 Bubble Watch 原版:大数字 14vw/144(同 DESIGN.md §5.3 契约,
     此前 CSS 漂移为 12vw/128)、判读标题用 display 字体、正文 17px/1.7 暖墨 */
  .big-left .label { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; opacity: 0.6; }
  .big-left-score { margin: auto 0; }
  .big-left .value { font-family: var(--font-display); font-size: clamp(80px, 14vw, 144px); font-weight: 900; line-height: 0.9; letter-spacing: 0; }
  .big-left .value sup { font-size: 0.4em; vertical-align: super; opacity: 0.7; }
  .big-left .breakdown { font-family: var(--font-mono); font-size: 12px; margin-top: 12px; opacity: 0.7; line-height: 1.6; }
  .big-right { display: flex; flex-direction: column; justify-content: center; }
  .big-right .verdict-kicker { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; color: var(--risk-red); margin-bottom: 12px; }
  .big-right h2 { font-family: var(--font-display); font-size: clamp(24px, 3.4vw, 36px); font-weight: 700; line-height: 1.2; margin: 0 0 16px 0; letter-spacing: -0.01em; color: var(--paper-ink); }
  .big-right p { font-family: var(--font-serif); font-size: 17px; line-height: 1.7; margin: 0; color: var(--paper-warm); }
  .big-footer { grid-column: 1 / -1; border-top: 1px solid rgba(31,24,21,0.18); padding-top: 14px; margin-top: 4px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.1em; color: var(--paper-ink); opacity: 0.7; }
  .big-footer .k { opacity: 0.5; text-transform: uppercase; }
  .big-footer .v { color: var(--paper-ink); opacity: 1; margin-top: 3px; }

  /* runtime block 采用 Bubble Watch 卡片/分类页眉语法:实墨边框(替代发丝线)、
     2px 实线页眉下边框、900 字重粗标题 + mono 英文小标——布局/信息形态不变,
     只统一视觉语法,与 bubble-watch.html 的 article.indicator / category-header 同族 */
  .runtime-block { background: var(--paper-bg); border: 1px solid var(--paper-ink); padding: 18px; }
  .runtime-block-header { border-bottom: 2px solid var(--paper-ink); padding-bottom: 8px; margin-bottom: 14px; }
  .runtime-block-header h3 { font-family: var(--font-display); font-size: 21px; font-weight: 900; letter-spacing: -0.01em; margin: 0; color: var(--paper-ink); }
  .runtime-block-header .en { font-family: var(--font-mono); font-size: 11px; font-weight: 400; letter-spacing: 0.2em; color: var(--paper-muted); text-transform: uppercase; margin-left: 12px; }
  .runtime-block-header .meta { font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); margin-top: 6px; }
  .runtime-block-body { font-family: var(--font-serif); font-size: 13.5px; line-height: 1.7; color: var(--paper-warm); }

  /* mini-card 采用 Bubble Watch indicator 卡语法:实墨 1px 边框 + 卡顶 4px
     红/黄/绿状态条 + 10px mono 标签 + display 大数字(信息结构不变) */
  .mini-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: 12px; }
  .mini-card { padding: 12px 14px; border: 1px solid var(--paper-ink); border-top: 4px solid var(--paper-line); background: var(--paper-bg); display: grid; gap: 4px; }
  .mini-card .label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.15em; color: var(--paper-muted); text-transform: uppercase; }
  .mini-card .num { font-family: var(--font-display); font-size: 26px; font-weight: 700; line-height: 1.1; letter-spacing: -0.02em; color: var(--paper-ink); }
  .mini-card .status { font-family: var(--font-mono); font-size: 10px; color: var(--paper-muted); }
  .mini-card.red { border-top-color: var(--risk-red); }
  .mini-card.yellow { border-top-color: var(--risk-yellow); }
  .mini-card.green { border-top-color: var(--risk-green); }
  .mini-card.red .num { color: var(--risk-red); }
  .mini-card.yellow .num { color: var(--risk-yellow); }
  .mini-card.green .num { color: var(--risk-green); }

  .narrative-list { display: grid; gap: 10px; }
  .narrative-item { border-left: 3px solid var(--paper-line); padding: 8px 14px; background: var(--paper-bg-canvas); }
  .narrative-item.active { border-left-color: var(--risk-red); }
  .narrative-item .head { display: flex; gap: 10px; align-items: baseline; margin-bottom: 4px; }
  .narrative-item .name { font-family: var(--font-serif); font-size: 14px; font-weight: 600; color: var(--paper-ink); }
  .narrative-item .score { font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); margin-left: auto; }
  .narrative-item p { font-family: var(--font-serif); font-size: 12.5px; line-height: 1.6; color: var(--paper-warm); margin: 0; }

  .reader-cat-grid { display: grid; gap: 18px; }
  .reader-cat-block { background: var(--paper-bg); border: 1px solid var(--paper-line-strong); padding: 18px 20px; }
  .reader-cat-header { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; border-bottom: 2px solid var(--paper-ink); padding-bottom: 8px; margin-bottom: 14px; }
  .reader-cat-header h3 { font-family: var(--font-display); font-size: 22px; font-weight: 900; margin: 0; letter-spacing: -0.01em; color: var(--paper-ink); }
  .reader-cat-header .en { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.22em; color: var(--paper-muted); text-transform: uppercase; }
  .reader-cat-header .counts { font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); }
  .counts .red { color: var(--risk-red); font-weight: 600; }
  .counts .yellow { color: var(--risk-yellow); font-weight: 600; }
  .counts .green { color: var(--risk-green); font-weight: 600; }
  .counts .pending { color: var(--paper-muted); font-weight: 600; font-style: italic; }

  .cat-intro { font-family: var(--font-serif); font-size: 13px; background: var(--paper-bg-canvas); border-left: 3px solid var(--paper-ink); padding: 10px 14px; color: var(--paper-warm); line-height: 1.7; margin: 0 0 14px 0; }
  .cat-intro.orange-edge { border-left-color: var(--risk-orange); }

  .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 14px; }
  .indicator-card { border: 1px solid var(--paper-line-strong); background: var(--paper-bg); padding: 14px 14px 12px 14px; position: relative; display: flex; flex-direction: column; gap: 8px; }
  .indicator-card .status-bar { position: absolute; top: 0; left: 0; width: 100%; height: 4px; }
  .status-bar.red { background: var(--risk-red); }
  .status-bar.yellow { background: var(--risk-yellow); }
  .status-bar.green { background: var(--risk-green); }
  .status-bar.orange { background: var(--risk-orange); }
  .status-bar.neutral { background: var(--paper-muted); }
  .status-bar.pending { background: var(--paper-line); }
  .indicator-card.pending { background: repeating-linear-gradient(135deg, var(--paper-bg) 0px, var(--paper-bg) 10px, var(--paper-bg-canvas) 10px, var(--paper-bg-canvas) 20px); border-style: dashed; }
  .indicator-card .head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-top: 4px; }
  .indicator-card .name-en { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.18em; color: var(--paper-muted); text-transform: uppercase; }
  .indicator-card .name-zh { font-family: var(--font-serif); font-size: 14px; font-weight: 600; margin-top: 2px; color: var(--paper-ink); }
  .badge { font-family: var(--font-mono); font-size: 9px; padding: 3px 7px; letter-spacing: 0.1em; font-weight: 600; white-space: nowrap; color: var(--paper-bg); text-transform: uppercase; }
  .badge.red { background: var(--risk-red); }
  .badge.yellow { background: var(--risk-yellow); }
  .badge.green { background: var(--risk-green); }
  .badge.orange { background: var(--risk-orange); }
  .badge.neutral { background: var(--paper-muted); }
  .badge.pending { background: var(--paper-muted); }
  .indicator-card .number { font-family: var(--font-display); font-size: 28px; font-weight: 700; line-height: 1; letter-spacing: -0.02em; color: var(--paper-ink); }
  .indicator-card .number .unit { font-size: 0.45em; font-weight: 400; margin-left: 3px; font-family: var(--font-mono); color: var(--paper-muted); }
  .indicator-card .aux { font-family: var(--font-mono); font-size: 10px; color: var(--paper-warm); line-height: 1.55; }
  .indicator-card .note { font-family: var(--font-serif); font-size: 12px; color: var(--paper-warm); line-height: 1.65; font-style: italic; }
  .indicator-card .meta { border-top: 1px dashed #999; padding-top: 6px; font-family: var(--font-mono); font-size: 9px; color: var(--paper-muted); line-height: 1.5; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px; }
  .indicator-card .agg-rows { font-family: var(--font-mono); font-size: 10px; color: var(--paper-muted); line-height: 1.7; border-top: 1px dotted #aaa; padding-top: 6px; }
  .indicator-card .agg-rows div { display: flex; gap: 6px; flex-wrap: wrap; }
  .indicator-card .agg-rows .k { color: var(--paper-muted); }
  .indicator-card .agg-rows .v { color: var(--paper-ink); font-weight: 600; }
  .indicator-card .card-local-details { margin-top: 8px; }
  .indicator-card .card-local-details > summary { cursor: pointer; font-family: var(--font-serif); font-size: 12px; color: var(--paper-warm); line-height: 1.65; font-style: italic; }
  .indicator-card .city-tier-breakdown { margin-top: 6px; }
  .indicator-card .city-tier-block { margin-top: 6px; }
  .indicator-card .city-tier-title { margin: 0; font-family: var(--font-serif); font-size: 12px; color: var(--paper-warm); line-height: 1.65; font-style: italic; font-weight: 600; }
  .indicator-card .city-tier-line, .indicator-card .city-tier-empty { margin: 2px 0 0; font-family: var(--font-serif); font-size: 12px; color: var(--paper-warm); line-height: 1.65; font-style: italic; }
  .indicator-card .corner { position: absolute; top: 6px; right: 6px; font-family: var(--font-mono); font-size: 8px; padding: 2px 4px; letter-spacing: 0.1em; background: var(--paper-muted); color: var(--paper-bg); }
  .indicator-card .corner.p1 { background: var(--risk-orange); }
  .indicator-card .corner.p2 { background: #c79b54; }
  .indicator-card .corner.manual { background: #d9d3c5; color: var(--paper-warm); }
  .indicator-card .corner.overlay { background: var(--risk-orange); }

  .threshold-block { padding: 6px 0; }
  .threshold-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 18px; flex-wrap: wrap; gap: 8px; }
  .threshold-header h4 { font-family: var(--font-display); font-size: 22px; font-weight: 700; margin: 0; }
  .threshold-header h4 em { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 0.7em; }
  .threshold-header .now { font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); letter-spacing: 0.1em; }
  .threshold-bar-wrap { position: relative; padding-top: 28px; padding-bottom: 30px; }
  .threshold-bar { position: relative; height: 64px; border: 1px solid var(--paper-ink); display: flex; overflow: visible; }
  .threshold-bar .zone { height: 100%; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 6px 4px; text-align: center; color: var(--paper-bg); gap: 3px; min-width: 0; }
  .threshold-bar .zone.t-green  { background: var(--risk-green); }
  .threshold-bar .zone.t-yellow { background: var(--risk-yellow); }
  .threshold-bar .zone.t-orange { background: var(--risk-orange); }
  .threshold-bar .zone.t-red    { background: var(--risk-red); }
  .zone-label { font-family: var(--font-serif); font-size: 13px; font-weight: 700; line-height: 1.1; }
  .zone-pct { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em; opacity: 0.9; }
  .threshold-bar .marker { position: absolute; top: -8px; bottom: -8px; width: 2px; background: var(--paper-ink); transform: translateX(-50%); z-index: 2; }
  .threshold-bar .marker::after { content: ""; position: absolute; bottom: -6px; left: 50%; transform: translateX(-50%); border-left: 7px solid transparent; border-right: 7px solid transparent; border-top: 8px solid var(--paper-ink); }
  .threshold-bar .marker .marker-label { position: absolute; top: -24px; left: 50%; transform: translateX(-50%); font-family: var(--font-mono); font-size: 10px; background: var(--paper-ink); color: var(--paper-bg); padding: 3px 7px; white-space: nowrap; font-weight: 600; }
  .threshold-bar .marker.override { background: var(--risk-orange); }
  .threshold-bar .marker.override::after { bottom: auto; top: -6px; border-top: none; border-bottom: 8px solid var(--risk-orange); }
  .threshold-bar .marker.override .marker-label { top: auto; bottom: -24px; background: var(--risk-orange); }
  @media (max-width: 600px) {
    .threshold-bar .zone-label { font-size: 11px; }
    .threshold-bar .zone-pct { font-size: 9px; }
  }

  .trend-block { border-top: 1px solid var(--paper-ink); border-bottom: 1px solid var(--paper-ink); padding: 24px 0; }
  .trend-block-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 20px; flex-wrap: wrap; gap: 8px 18px; }
  .trend-block-header h4 { font-family: var(--font-display); font-size: 22px; font-weight: 700; margin: 0; }
  .trend-block-header h4 em { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 0.7em; }
  .trend-legend { font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); display: flex; gap: 16px; flex-wrap: wrap; align-items: center; }
  .trend-legend .score-key { color: var(--risk-red); }
  .trend-legend .overlay-key { color: var(--risk-yellow); }
  .trend-svg-wrap { height: 220px; overflow: hidden; background: transparent; }
  .trend-svg-wrap svg { width: 100%; min-width: 0; height: 100%; display: block; }
  .trend-canvas { fill: transparent; }
  .trend-axis,
  .trend-grid-line,
  .trend-threshold,
  .trend-line,
  .trend-dot { vector-effect: non-scaling-stroke; }
  .trend-axis { stroke: transparent; stroke-width: 1; }
  .trend-grid-line { stroke: var(--paper-line); stroke-width: 1; opacity: 0.31; }
  .trend-threshold { stroke-width: 1; stroke-dasharray: 4 4; opacity: 0.46; }
  .trend-threshold.threshold-25 { stroke: var(--risk-green); }
  .trend-threshold.threshold-40 { stroke: var(--risk-yellow); }
  .trend-threshold.threshold-60,
  .trend-threshold.threshold-80 { stroke: var(--risk-red); }
  .trend-axis-label,
  .trend-x-label { font-family: var(--font-mono); font-size: 11px; fill: var(--paper-ink); }
  .trend-threshold-label { display: none; font-family: var(--font-mono); font-size: 11px; fill: var(--paper-muted); }
  .trend-threshold-label.threshold-25 { fill: var(--risk-green); }
  .trend-threshold-label.threshold-40 { fill: var(--risk-yellow); }
  .trend-threshold-label.threshold-60,
  .trend-threshold-label.threshold-80 { fill: var(--risk-red); }
  .trend-x-label.is-now { fill: var(--paper-ink); font-weight: 700; }
  .trend-line { fill: none; stroke-linecap: round; stroke-linejoin: round; }
  .trend-line-score { stroke: var(--risk-red); stroke-width: 2.5; }
  .trend-line-overlay { stroke: var(--risk-yellow); stroke-width: 1.5; stroke-dasharray: 3 3; }
  .trend-line-overlay.is-partial { opacity: 0.86; }
  .trend-line-overlay.is-fallback { opacity: 0.58; }
  .trend-dot { stroke: none; }
  .trend-dot-score { fill: var(--risk-red); }
  .trend-dot-overlay { fill: var(--risk-yellow); }

  .consistency-block { border-top: 1px solid var(--paper-line); padding-top: 16px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
  .consistency-label { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.2em; color: var(--paper-muted); text-transform: uppercase; }
  .consistency-bar-wrap { flex: 1; min-width: 280px; }
  .consistency-bar { height: 8px; background: var(--paper-line); position: relative; }
  .consistency-bar .fill { height: 100%; background: linear-gradient(90deg, var(--risk-red) 0%, var(--risk-yellow) 50%, var(--risk-green) 100%); width: 72%; }
  .consistency-value { font-family: var(--font-display); font-size: 24px; font-weight: 700; }
  .consistency-detail { font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); line-height: 1.7; }

  #homepage-macro-coherence .mc-row { padding: 8px 0; border-top: 1px solid var(--paper-line); }
  #homepage-macro-coherence .mc-row:first-child { border-top: none; }
  #homepage-macro-coherence .mc-row-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
  #homepage-macro-coherence .mc-perspective { font-weight: 600; }
  #homepage-macro-coherence .mc-verdict { font-size: 0.8em; padding: 0 4px; }
  #homepage-macro-coherence .mc-verdict.mc-confirm { color: var(--risk-green); }
  #homepage-macro-coherence .mc-verdict.mc-diverge { color: var(--risk-red); }
  #homepage-macro-coherence .mc-verdict.mc-background { color: var(--paper-muted); }
  #homepage-macro-coherence .mc-role { font-size: 0.75em; color: var(--paper-muted); }
  #homepage-macro-coherence .mc-reason { font-size: 0.9em; margin-top: 2px; }
  #homepage-macro-coherence .mc-caveat { font-size: 0.75em; color: var(--paper-muted); font-style: italic; margin-top: 2px; }
  #homepage-macro-coherence .mc-summary { margin-top: 10px; font-size: 0.9em; }

  .wow-section { background: var(--paper-ink); color: var(--paper-bg); padding: 28px 32px; margin-top: 22px; }
  .wow-section .wow-label { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.22em; opacity: 0.6; margin-bottom: 14px; text-transform: uppercase; }
  .wow-section h3 { font-family: var(--font-display); font-size: 22px; font-weight: 700; margin: 0 0 18px 0; }
  .wow-section h3 em { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 0.7em; }
  .wow-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 18px; }
  .wow-item .wow-tag { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; margin-bottom: 6px; font-weight: 600; padding: 3px 8px; display: inline-block; }
  .wow-tag.is-up   { background: var(--risk-yellow); color: var(--paper-bg); }
  .wow-tag.is-down { background: var(--risk-green);  color: var(--paper-bg); }
  .wow-tag.is-flat { background: var(--paper-muted); color: var(--paper-bg); }
  .wow-item .wow-text { font-family: var(--font-serif); font-size: 13.5px; line-height: 1.7; }
  .wow-item .wow-source { font-family: var(--font-mono); font-size: 10px; opacity: 0.65; display: block; margin-top: 6px; }

  .heatmap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; }
  .heatmap-cell { padding: 14px 12px; color: var(--paper-bg); display: flex; flex-direction: column; gap: 4px; }
  .heatmap-cell.high   { background: var(--risk-red); }
  .heatmap-cell.med    { background: var(--risk-yellow); }
  .heatmap-cell.low    { background: var(--risk-green); }
  .heatmap-cell.severe { background: var(--risk-severe); }
  .heatmap-cell .region { font-family: var(--font-display); font-size: 16px; font-weight: 700; }
  .heatmap-cell .risk-score { font-family: var(--font-mono); font-size: 11px; opacity: 0.85; }
  .heatmap-cell .note { font-family: var(--font-serif); font-size: 11px; line-height: 1.5; opacity: 0.9; }

  /* 折叠附录采用 Bubble Watch 卡片语法:实墨外框(原仅上下线)+ 900 字重标题,
     展开时 summary 获得 2px 实墨下边框(同分类页眉);布局/折叠行为不变 */
  details.editorial-folded-content { margin: 32px 0; padding: 24px 28px; border: 1px solid var(--paper-ink); border-top: 4px solid var(--paper-ink); background: var(--paper-bg); }
  /* 嵌套在一级 section 内的折叠块(如 ODP「证据与详情」)不加侧边框:墨框语法
     只用于画布上的独立单元(顶级附录/卡片);section 内部用横线分隔,
     避免与所在 section 的无侧框形态形成「框中框」失调 */
  .editorial-section details.editorial-folded-content { border-left: none; border-right: none; border-bottom: 1px solid var(--paper-line); }
  details.editorial-folded-content > summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; font-family: var(--font-display); font-size: 21px; font-weight: 900; letter-spacing: -0.01em; }
  details.editorial-folded-content[open] > summary { border-bottom: 2px solid var(--paper-ink); padding-bottom: 10px; margin-bottom: 16px; }
  details.editorial-folded-content > summary::-webkit-details-marker { display: none; }
  details.editorial-folded-content > summary em { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 0.7em; margin-left: 8px; color: var(--paper-muted); }
  details.editorial-folded-content .fold-marker { font-family: var(--font-mono); font-weight: 600; color: var(--paper-muted); }
  details.editorial-folded-content[open] .fold-marker::before { content: "−"; }
  details.editorial-folded-content:not([open]) .fold-marker::before { content: "+"; }
  details.editorial-folded-content .fold-label { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.15em; color: var(--paper-muted); text-transform: uppercase; }

  .appendix-narrative { margin-top: 22px; }
  .appendix-narrative-intro { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.18em; color: var(--paper-muted); text-transform: uppercase; padding-bottom: 10px; border-bottom: 1px solid var(--paper-line); margin-bottom: 20px; }
  .appendix-narrative h4 { font-family: var(--font-display); font-size: 21px; font-weight: 900; margin: 26px 0 10px 0; letter-spacing: -0.01em; color: var(--paper-ink); }
  .appendix-narrative h4:first-of-type { margin-top: 0; }
  .appendix-narrative h4 em { font-family: var(--font-display); font-style: italic; font-weight: 400; font-size: 0.6em; margin-left: 8px; color: var(--paper-muted); }
  .appendix-narrative h5 { font-family: var(--font-serif); font-size: 14px; font-weight: 700; color: var(--paper-ink); margin: 18px 0 6px 0; }
  .appendix-narrative p { font-family: var(--font-serif); font-size: 14.5px; line-height: 1.85; color: var(--paper-warm); margin: 0 0 12px 0; }
  .appendix-narrative p:has(+ p) { margin-bottom: 10px; }
  .appendix-narrative p strong { color: var(--paper-ink); font-weight: 700; }
  .appendix-narrative code { font-family: var(--font-mono); font-size: 12px; background: rgba(26,24,21,0.06); padding: 1px 5px; color: var(--paper-ink); font-weight: 500; white-space: nowrap; }
  .appendix-narrative code.danger { background: rgba(124,29,29,0.12); color: var(--risk-red); }
  .appendix-narrative code.warn   { background: rgba(168,118,26,0.14); color: var(--risk-yellow); }
  .appendix-narrative code.ok     { background: rgba(31,77,44,0.12);  color: var(--risk-green); }

  .appendix-sidebar { margin: 16px 0; padding: 14px 16px; background: var(--paper-bg-canvas); border-left: 3px solid var(--paper-ink); font-family: var(--font-mono); font-size: 11px; line-height: 1.85; color: var(--paper-warm); }
  .appendix-sidebar .sidebar-kicker { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.22em; color: var(--paper-muted); text-transform: uppercase; margin-bottom: 6px; }
  .appendix-sidebar .sidebar-title { font-family: var(--font-display); font-size: 15px; font-weight: 700; color: var(--paper-ink); margin-bottom: 8px; }
  .appendix-sidebar dl { margin: 0; }
  .appendix-sidebar dt { font-family: var(--font-mono); font-size: 10px; color: var(--paper-muted); margin-top: 6px; }
  .appendix-sidebar dd { margin: 2px 0 0 0; font-family: var(--font-mono); font-size: 11px; color: var(--paper-ink); font-weight: 600; }

  .appendix-callout { margin: 16px 0; padding: 14px 18px; border-left: 4px solid var(--callout-accent, var(--risk-red)); background: rgba(124,29,29,0.04); font-family: var(--font-serif); font-size: 13.5px; line-height: 1.75; color: var(--paper-warm); }
  .appendix-callout.warn    { --callout-accent: var(--risk-yellow); background: rgba(168,118,26,0.05); }
  .appendix-callout.ok      { --callout-accent: var(--risk-green);  background: rgba(31,77,44,0.04); }
  .appendix-callout.neutral { --callout-accent: var(--paper-ink);    background: var(--paper-bg-canvas); }
  .appendix-callout .callout-kicker { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.22em; color: var(--callout-accent, var(--risk-red)); text-transform: uppercase; margin-bottom: 6px; font-weight: 700; }
  .appendix-callout p { margin: 4px 0 0 0; }
  .appendix-callout p:first-of-type { font-weight: 600; color: var(--paper-ink); font-size: 14px; }
  .appendix-callout .ext-ai-field-label { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em; color: var(--paper-muted); font-weight: 600; margin-right: 6px; white-space: nowrap; }
  .appendix-callout .ext-ai-ref-list { color: var(--paper-warm); overflow-wrap: anywhere; }

  .appendix-twocol { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 20px; margin: 16px 0; }
  @media (max-width: 820px) { .appendix-twocol { grid-template-columns: 1fr; } }

  .micro-chart { background: var(--paper-bg-canvas); border: 1px solid var(--paper-line); padding: 14px 16px; margin: 14px 0; }
  .micro-chart .mc-kicker { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.22em; color: var(--paper-muted); text-transform: uppercase; margin-bottom: 6px; }
  .micro-chart .mc-title { font-family: var(--font-display); font-size: 15px; font-weight: 700; color: var(--paper-ink); margin-bottom: 8px; }
  .micro-chart .mc-svg-wrap { height: 80px; margin: 4px 0 6px 0; }
  .micro-chart .mc-svg-wrap svg { width: 100%; height: 100%; display: block; }
  .micro-chart .mc-note { font-family: var(--font-mono); font-size: 10px; color: var(--paper-muted); line-height: 1.6; }

  .flow-strip { display: flex; align-items: stretch; gap: 8px; margin: 14px 0; flex-wrap: wrap; }
  .flow-node { flex: 1; min-width: 140px; background: var(--paper-bg-canvas); border: 1px solid var(--paper-line-strong); padding: 10px 12px; position: relative; }
  .flow-node .fn-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.18em; color: var(--paper-muted); text-transform: uppercase; }
  .flow-node .fn-name { font-family: var(--font-display); font-size: 14px; font-weight: 700; color: var(--paper-ink); margin-top: 2px; }
  .flow-node .fn-value { font-family: var(--font-mono); font-size: 11px; color: var(--paper-warm); margin-top: 4px; }
  .flow-node.high { border-top: 3px solid var(--risk-red); }
  .flow-node.med  { border-top: 3px solid var(--risk-yellow); }
  .flow-node.low  { border-top: 3px solid var(--risk-green); }
  .flow-arrow { align-self: center; font-family: var(--font-mono); font-size: 16px; color: var(--paper-muted); font-weight: 700; }

  .trigger-list { margin: 12px 0; padding: 0; list-style: none; }
  .trigger-list li { padding: 8px 12px; margin-bottom: 4px; border-left: 3px solid var(--trig-accent, var(--paper-muted)); background: var(--paper-bg-canvas); font-family: var(--font-serif); font-size: 13px; line-height: 1.6; color: var(--paper-warm); }
  .trigger-list.up   { --trig-accent: var(--risk-red); }
  .trigger-list.down { --trig-accent: var(--risk-green); }
  .trigger-list.watch { --trig-accent: var(--risk-yellow); }
  .trigger-list code { font-family: var(--font-mono); font-size: 11px; background: rgba(26,24,21,0.06); padding: 1px 4px; color: var(--paper-ink); }

  .execution-stoplight { background: var(--paper-ink); color: var(--paper-bg); padding: 22px 26px; margin: 18px 0; }
  .execution-stoplight .es-kicker { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.22em; opacity: 0.65; text-transform: uppercase; }
  .execution-stoplight .es-state { font-family: var(--font-display); font-size: clamp(32px, 5vw, 48px); font-weight: 900; line-height: 1.1; letter-spacing: -0.02em; margin: 6px 0 4px 0; color: var(--es-color, var(--risk-red)); }
  .execution-stoplight.red    { --es-color: #FF6B5C; }
  .execution-stoplight.yellow { --es-color: #FFC55C; }
  .execution-stoplight.green  { --es-color: #6EE598; }
  .execution-stoplight .es-title { font-family: var(--font-serif); font-size: 16px; font-weight: 700; margin-bottom: 10px; }
  .execution-stoplight .es-desc { font-family: var(--font-serif); font-size: 14px; line-height: 1.75; opacity: 0.85; margin: 0; }
  .execution-stoplight .es-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 18px; padding-top: 14px; border-top: 1px solid rgba(251,247,240,0.18); }
  @media (max-width: 820px) { .execution-stoplight .es-cols { grid-template-columns: 1fr; } }
  .execution-stoplight .es-col-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.18em; opacity: 0.55; text-transform: uppercase; margin-bottom: 4px; }
  .execution-stoplight .es-col ul { margin: 0; padding-left: 16px; }
  .execution-stoplight .es-col li { font-family: var(--font-serif); font-size: 12.5px; line-height: 1.7; opacity: 0.88; }

  .wo-regime-banner { margin: 14px 0; padding: 16px 20px; background: var(--risk-orange); color: var(--paper-bg); }
  .wo-regime-banner .wo-kicker { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.22em; opacity: 0.78; text-transform: uppercase; }
  .wo-regime-banner .wo-state { font-family: var(--font-display); font-size: 24px; font-weight: 900; line-height: 1.2; margin: 4px 0 6px 0; }
  .wo-regime-banner .wo-desc { font-family: var(--font-serif); font-size: 13.5px; line-height: 1.7; margin: 0; opacity: 0.95; }

  .wo-dim-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin: 14px 0; }
  .wo-dim { border-left: 4px solid var(--dim-accent, var(--paper-line-strong)); background: var(--paper-bg-canvas); padding: 10px 12px; }
  .wo-dim.high { --dim-accent: var(--risk-red); }
  .wo-dim.med  { --dim-accent: var(--risk-yellow); }
  .wo-dim.low  { --dim-accent: var(--risk-green); }
  .wo-dim.severe { --dim-accent: var(--risk-severe); }
  .wo-dim .wd-label { font-family: var(--font-mono); font-size: 9px; letter-spacing: 0.18em; color: var(--paper-muted); text-transform: uppercase; }
  .wo-dim .wd-name { font-family: var(--font-serif); font-size: 13px; font-weight: 600; color: var(--paper-ink); margin: 2px 0; }
  .wo-dim .wd-score { font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--paper-ink); line-height: 1; }
  .wo-dim .wd-trend { font-family: var(--font-mono); font-size: 10px; color: var(--paper-muted); margin-top: 4px; }

  .ai-warning-block { background: var(--paper-bg-canvas); color: var(--paper-warm); padding: 18px 22px; margin: 16px 0; border: 1px solid var(--paper-line); border-left: 4px solid var(--risk-orange); }
  .ai-warning-block .aw-kicker { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.22em; color: var(--risk-orange); text-transform: uppercase; margin-bottom: 6px; font-weight: 600; }
  .ai-warning-block p { font-family: var(--font-serif); font-size: 13.5px; line-height: 1.8; margin: 4px 0 0 0; color: var(--paper-warm); opacity: 1; }
  .ai-warning-block strong { color: var(--paper-ink); }
  .ai-warning-block code { font-family: var(--font-mono); font-size: 11px; background: var(--paper-bg); border: 1px solid var(--paper-line); padding: 1px 4px; color: var(--paper-ink); }

  .asset-table { width: 100%; border-collapse: collapse; margin: 16px 0; font-family: var(--font-serif); }
  .asset-table thead th { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.18em; color: var(--paper-muted); text-transform: uppercase; font-weight: 500; text-align: left; padding: 8px 10px; border-bottom: 2px solid var(--paper-ink); }
  .asset-table tbody td { font-family: var(--font-serif); font-size: 13px; padding: 10px; vertical-align: top; border-bottom: 1px solid var(--paper-line); color: var(--paper-warm); }
  .asset-table tbody td.asset-name { font-weight: 700; color: var(--paper-ink); }
  .asset-table tbody td.asset-bias { font-family: var(--font-mono); font-size: 11px; }
  .asset-table tbody td.asset-bias.up    { color: var(--risk-green); }
  .asset-table tbody td.asset-bias.down  { color: var(--risk-red); }
  .asset-table tbody td.asset-bias.mixed { color: var(--risk-yellow); }
  .asset-table tbody td.asset-range { font-family: var(--font-mono); font-size: 12px; color: var(--paper-ink); font-weight: 600; }
  .asset-table tbody td.asset-conviction { font-family: var(--font-mono); font-size: 11px; }

  footer.method { border-top: 3px double var(--paper-ink); padding-top: 22px; margin-top: 32px; font-family: var(--font-mono); font-size: 11px; color: var(--paper-muted); line-height: 1.75; }
  .method-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 22px; }
  .method-grid h4 { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; color: var(--paper-ink); margin: 0 0 6px 0; }

  /* ===== PR4 · Oil Directional Pressure (ODP) 独立能源专题(display-only) ===== */
  /* PR5 — read-only ODP cross-reference in the Hero / dailyBrief (display-only, muted). */
  .hero-odp-ref { font-family: var(--font-mono); font-size: 11px; line-height: 1.6; color: var(--paper-muted); margin: 14px 0 0 0; padding-top: 10px; border-top: 1px dotted var(--paper-line); }
  .hero-odp-ref em { font-style: italic; opacity: 0.8; }
  #hero-odp-ref-verdict { color: var(--paper-ink); font-weight: 600; }
  .hero-odp-ref a { color: var(--risk-red); text-decoration: none; border-bottom: 1px solid transparent; }
  .hero-odp-ref a:hover { border-bottom-color: var(--risk-red); }
  #oil-directional-pressure .section-title.red { color: var(--risk-red); }
  #oil-directional-pressure .section-title.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .section-title.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-brent-basis-status.red,
  #oil-directional-pressure .odp-brent-basis-alert.red { color: var(--risk-red); border-color: var(--risk-red); }
  #oil-directional-pressure .odp-brent-basis-status.yellow,
  #oil-directional-pressure .odp-brent-basis-alert.yellow { color: var(--risk-yellow); border-color: var(--risk-yellow); }
  #oil-directional-pressure .odp-brent-basis-status.green,
  #oil-directional-pressure .odp-brent-basis-alert.green { color: var(--risk-green); border-color: var(--risk-green); }
  #oil-directional-pressure .odp-pulse-factor-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-pulse-factor-status.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-global-forecast-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-global-forecast-status.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-global-overlay-status.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-global-overlay-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-global-overlay-status.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-news-event-status.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-news-event-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-news-event-status.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-news-headline-gate.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-news-headline-gate.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-news-headline-gate.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-news-source-health.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-news-source-health.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-news-source-health.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-news-claim-polarity.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-news-claim-polarity.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-news-claim-polarity.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-news-claim-quality.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-news-claim-quality.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-news-claim-quality.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-thermal-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-thermal-status.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-thermal-baseline-quality.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-thermal-baseline-quality.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-cross-confirmation-status.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-cross-confirmation-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-cross-confirmation-status.green { color: var(--risk-green); }
  #oil-directional-pressure .odp-qc-ledger-status.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-qc-ledger-status.green { color: var(--risk-green); }
  /* 能源补充层缓冲状态叶子:极低缓冲=red / 偏低=yellow / 宽松=green(renderOilDirectional 动态上色) */
  #oil-directional-pressure .odp-energy-regime.red { color: var(--risk-red); }
  #oil-directional-pressure .odp-energy-regime.yellow { color: var(--risk-yellow); }
  #oil-directional-pressure .odp-energy-regime.green { color: var(--risk-green); }
  .odp-reader-flow { display: grid; gap: 18px; margin: 0 0 18px 0; }
  .odp-flow-block { border-top: 2px solid var(--paper-line-strong); padding-top: 14px; min-width: 0; }
  .odp-flow-heading { display: grid; grid-template-columns: minmax(112px, 0.28fr) minmax(150px, 0.44fr) minmax(0, 1fr); gap: 10px 18px; align-items: baseline; margin: 0 0 10px 0; }
  .odp-flow-heading span { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.16em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-flow-heading strong { font-family: var(--font-display); font-size: 18px; line-height: 1.25; font-weight: 900; color: var(--paper-ink); }
  .odp-flow-heading em { font-family: var(--font-serif); font-size: 12.5px; line-height: 1.6; font-style: italic; color: var(--paper-muted); overflow-wrap: anywhere; }
  .odp-headline { font-family: var(--font-serif); font-size: 16px; line-height: 1.8; color: var(--paper-warm); margin: 8px 0 14px 0; }
  .odp-brent-basis-alert { font-family: var(--font-serif); font-size: 13px; line-height: 1.7; color: var(--paper-muted); margin: 0 0 14px 0; padding: 9px 0 0 0; border-top: 1px dotted var(--paper-line); }
  .odp-meta { display: flex; flex-wrap: wrap; gap: 8px 28px; margin: 0; padding: 12px 0; border-top: 1px solid var(--paper-line); border-bottom: 1px solid var(--paper-line); font-family: var(--font-mono); font-size: 12px; }
  .odp-meta > div { display: flex; gap: 8px; align-items: baseline; }
  .odp-meta dt { color: var(--paper-muted); letter-spacing: 0.1em; text-transform: uppercase; font-size: 10px; }
  .odp-meta dd { margin: 0; color: var(--paper-ink); font-weight: 600; }
  .odp-ladder { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0 0 16px 0; padding: 12px 0 14px 0; border-top: 1px solid var(--paper-line); border-bottom: 1px solid var(--paper-line); }
  .odp-ladder-card { min-width: 0; border-top: 3px solid var(--paper-line-strong); padding: 10px 0 0 0; }
  .odp-ladder-card strong { display: block; margin: 4px 0 6px 0; font-family: var(--font-display); font-size: 16px; color: var(--paper-ink); }
  .odp-ladder-card p { margin: 0; font-family: var(--font-serif); font-size: 13px; line-height: 1.65; color: var(--paper-warm); overflow-wrap: anywhere; }
  .odp-ladder-kicker { display: block; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-attribution-thesis { margin: 0 0 14px 0; padding-bottom: 12px; border-bottom: 1px solid var(--paper-line); font-family: var(--font-display); font-size: 18px; line-height: 1.45; font-weight: 700; color: var(--paper-ink); }
  .odp-support-grid { display: grid; grid-template-columns: minmax(220px, 0.9fr) minmax(0, 1.75fr); gap: 18px 24px; align-items: start; }
  .odp-challenge-panels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  .odp-attribution-panel { min-width: 0; border-top: 1px solid var(--paper-line-strong); padding-top: 9px; }
  .odp-attribution-kicker { display: block; margin: 0 0 4px 0; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-attribution-panel strong { display: block; margin: 0 0 6px 0; font-family: var(--font-display); font-size: 15px; color: var(--paper-ink); }
  .odp-attribution-panel ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; }
  .odp-attribution-panel li { margin: 0; padding: 0 0 7px 0; border-bottom: 1px dotted var(--paper-line); font-family: var(--font-serif); font-size: 12.5px; line-height: 1.55; color: var(--paper-warm); overflow-wrap: anywhere; }
  .odp-attribution-panel li strong { display: inline; margin: 0; font-family: var(--font-serif); font-size: 12.5px; font-weight: 700; color: var(--paper-ink); }
  .odp-attribution-panel li span { color: var(--paper-warm); }
  .odp-reason-panels { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 18px 24px; margin: 0; }
  .odp-reason-panel { min-width: 0; border-top: 1px solid var(--paper-line-strong); padding-top: 10px; }
  .odp-reason-panel-heading { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: baseline; margin: 0 0 8px 0; }
  .odp-reason-panel-heading span { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-reason-panel-heading strong { font-family: var(--font-display); font-size: 15px; color: var(--paper-ink); }
  .odp-reasons { list-style: none; padding: 0; margin: 0; display: grid; gap: 8px; }
  .odp-reasons li { display: grid; grid-template-columns: 116px 1fr; gap: 12px; font-family: var(--font-serif); font-size: 14px; line-height: 1.6; color: var(--paper-warm); padding-bottom: 8px; border-bottom: 1px dotted var(--paper-line); }
  .odp-reason-label { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.06em; color: var(--paper-muted); text-transform: uppercase; align-self: center; }
  .odp-detail { margin-top: 12px; }
  .odp-detail-subhead { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: baseline; margin: 16px 0 8px 0; padding-top: 10px; border-top: 1px solid var(--paper-line-strong); }
  .odp-detail-subhead:first-child { margin-top: 4px; border-top: none; padding-top: 0; }
  .odp-detail-subhead span { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.16em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-detail-subhead strong { font-family: var(--font-display); font-size: 17px; color: var(--paper-ink); }
  .odp-evidence-timing-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 10px 0 14px 0; padding: 10px 0; border-top: 1px solid var(--paper-line); border-bottom: 1px solid var(--paper-line); }
  .odp-evidence-timing-card { min-width: 0; border-top: 3px solid var(--paper-line-strong); padding-top: 8px; }
  .odp-evidence-timing-card span { display: block; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-evidence-timing-card strong { display: block; margin: 4px 0 5px 0; font-family: var(--font-display); font-size: 15px; color: var(--paper-ink); }
  .odp-evidence-timing-card p { margin: 0; font-family: var(--font-serif); font-size: 12.5px; line-height: 1.6; color: var(--paper-warm); overflow-wrap: anywhere; }
  .odp-evidence-readiness-matrix { margin: 10px 0 14px 0; padding: 10px 0 12px 0; border-top: 1px solid var(--paper-line); border-bottom: 1px solid var(--paper-line); }
  .odp-readiness-note { margin: 0 0 10px 0; font-family: var(--font-serif); font-size: 12.5px; line-height: 1.7; color: var(--paper-muted); }
  .odp-readiness-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 16px; }
  .odp-readiness-item { min-width: 0; border-top: 3px solid var(--paper-line-strong); padding-top: 8px; }
  .odp-readiness-item.red { border-top-color: var(--risk-red); }
  .odp-readiness-item.yellow { border-top-color: var(--risk-yellow); }
  .odp-readiness-item.green { border-top-color: var(--risk-green); }
  .odp-readiness-kicker { display: block; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.12em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-readiness-item strong { display: block; margin: 4px 0 5px 0; font-family: var(--font-display); font-size: 15px; color: var(--paper-ink); }
  .odp-readiness-item p { margin: 0 0 5px 0; font-family: var(--font-serif); font-size: 12.5px; line-height: 1.55; color: var(--paper-warm); overflow-wrap: anywhere; }
  .odp-readiness-item .odp-readiness-status { font-family: var(--font-mono); font-size: 11.5px; color: var(--paper-ink); }
  .odp-readiness-item .odp-readiness-gate { color: var(--paper-muted); }
  .odp-evidence-list { display: grid; gap: 12px; margin: 10px 0; }
  .odp-evidence-tier { padding: 10px 0 2px 0; border-top: 1px solid var(--paper-line-strong); }
  .odp-evidence-tier:first-child { border-top: none; }
  .odp-evidence-tier-heading { display: grid; grid-template-columns: minmax(150px, 0.45fr) minmax(0, 1fr); gap: 12px; align-items: baseline; margin: 0 0 6px 0; }
  .odp-evidence-tier-heading strong { font-family: var(--font-display); font-size: 15px; color: var(--paper-ink); }
  .odp-evidence-tier-heading span { font-family: var(--font-serif); font-size: 12px; line-height: 1.6; color: var(--paper-muted); }
  .odp-evidence-tier-rows { display: grid; gap: 2px; }
  .odp-evidence-row { display: grid; grid-template-columns: minmax(128px, 0.9fr) minmax(104px, 0.7fr) minmax(150px, 1.1fr) minmax(220px, 1.8fr); gap: 12px; font-family: var(--font-mono); font-size: 12px; color: var(--paper-warm); padding: 5px 0; border-bottom: 1px solid var(--paper-line); }
  .odp-evidence-row span { min-width: 0; overflow-wrap: anywhere; }
  .odp-ev-label, .odp-ev-value { color: var(--paper-ink); }
  .odp-ev-value { font-weight: 600; }
  .odp-ev-change, .odp-ev-range { color: var(--paper-muted); }
  .odp-energy-addendum { margin: 18px 0 0 0; border-top: 1px solid var(--paper-line-strong); }
  .odp-energy-group { padding: 14px 0; border-bottom: 1px solid var(--paper-line); }
  .odp-energy-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 12px; margin: 0 0 10px 0; }
  .odp-energy-heading strong { font-family: var(--font-display); font-size: 16px; color: var(--paper-ink); }
  .odp-energy-kicker { font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.14em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-energy-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 14px; margin: 0 0 10px 0; }
  .odp-energy-metrics div { border-top: 1px dotted var(--paper-line); padding-top: 7px; min-width: 0; }
  .odp-energy-metrics div.wide { grid-column: span 2; }
  .odp-energy-metrics span { display: block; font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.08em; color: var(--paper-muted); text-transform: uppercase; }
  .odp-energy-metrics b { display: block; margin-top: 3px; font-family: var(--font-mono); font-size: 12px; line-height: 1.5; color: var(--paper-ink); overflow-wrap: anywhere; }
  .odp-energy-note, .odp-energy-source-boundary { font-family: var(--font-serif); font-size: 12px; line-height: 1.7; color: var(--paper-muted); margin: 8px 0 0 0; }
  .odp-energy-source-boundary { padding-top: 10px; border-top: 1px dashed var(--paper-line); font-style: italic; }
  .odp-energy-core-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px 12px; margin: 8px 0 0 0; font-family: var(--font-mono); font-size: 11px; line-height: 1.5; color: var(--paper-warm); }
  .odp-energy-core-item { display: grid; grid-template-columns: 112px 1fr; gap: 8px; border-bottom: 1px dotted var(--paper-line); padding: 3px 0; }
  .odp-energy-core-item span:first-child { color: var(--paper-ink); font-weight: 600; }
  .odp-energy-core-item span:last-child { color: var(--paper-muted); }
  .odp-boundary-note { font-family: var(--font-serif); font-size: 12px; font-style: italic; line-height: 1.7; color: var(--paper-muted); margin-top: 14px; padding-top: 10px; border-top: 1px solid var(--paper-line); }

  @media (max-width: 760px) {
    .odp-reader-flow { gap: 16px; }
    .odp-flow-block { padding-top: 12px; }
    .odp-flow-heading,
    .odp-support-grid,
    .odp-challenge-panels,
    .odp-ladder,
    .odp-evidence-timing-summary,
    .odp-readiness-grid,
    .odp-reason-panels { grid-template-columns: minmax(0, 1fr); }
    .odp-flow-heading,
    .odp-support-grid,
    .odp-challenge-panels,
    .odp-ladder,
    .odp-evidence-timing-summary,
    .odp-readiness-grid,
    .odp-reason-panels { gap: 12px; }
    .odp-flow-heading { gap: 4px; }
    .odp-flow-heading strong { font-size: 17px; }
    .odp-flow-heading em { font-size: 12px; }
    .odp-evidence-tier-heading,
    .odp-evidence-row { grid-template-columns: minmax(0, 1fr); }
    .odp-evidence-tier-heading { gap: 4px; }
    .odp-evidence-row { gap: 3px; }
  }

  /* ================================================================
     窄屏 / 手机覆盖层 · MOBILE / NARROW-SCREEN OVERRIDES
     仅在 @media 内生效;放在文件末尾(所有基础规则之后),
     以保证同 specificity 下层叠顺序覆盖成功。
     PC / 宽屏完全走上方基础样式,这一段不影响桌面展示。
     ================================================================ */
  @media (max-width: 600px) {
    /* 窄屏:收掉 section / body / 折叠区的左右内边距,让所有模块内容对齐到
       与分隔横线、标题、导航同宽(= container 内容宽),消除两侧大留白、字更大更清晰。
       仅去横向 padding,纵向节奏与上下边框不动;container 的 20px 仍作屏幕边距。*/
    .editorial-section { padding-left: 0; padding-right: 0; }
    .editorial-section-body { padding-left: 0; padding-right: 0; }
    /* 横向 padding 归零后侧边墨框会贴字,窄屏只保留上下框线 */
    details.editorial-folded-content { padding-left: 0; padding-right: 0; border-left: none; border-right: none; }
    /* 根因:.macro-overview-shell 是隐式 auto 列的 grid,会被最宽子块
       (signal-layers 等的 min-content)撑出容器 → 整页横向溢出。
       约束列到容器宽 + 子块允许收缩,首屏与所有 shell 子块都回到视口内。*/
    .macro-overview-shell { grid-template-columns: minmax(0, 1fr); }
    .macro-overview-shell > * { min-width: 0; }
    /* 主页 8 周趋势图:对齐 AI 泡沫页趋势图的屏幕宽度,并抽稀日期标签避免尾部重叠。*/
    .trend-svg-wrap { overflow-x: hidden; }
    .trend-svg-wrap svg { min-width: 0; width: 100%; }
    .trend-x-label { display: none; }
    .trend-x-label:nth-child(2n + 1),
    .trend-x-label.is-now { display: inline; }
    .trend-x-label:nth-child(7) { display: none; }
    /* 首屏大数字:80px 下限会把黑框撑宽;收小使「分数/100」适配窄屏
       (PC 仍 clamp(80px,12vw,128px))*/
    .big-left .value { font-size: clamp(44px, 13vw, 72px); }
    /* 信号分层:score 移到独立一行,长 snake_case narrative 名得整行宽度、
       几乎不再断词;overflow-wrap 仅作超长 token 兜底(不用激进的 word-break)*/
    .narrative-item .head { flex-wrap: wrap; }
    .narrative-item .score { flex: 0 0 100%; margin-left: 0; margin-top: 2px; }
    .narrative-item .name { overflow-wrap: anywhere; }
    /* 交叉验证一致性条:基础 min-width:280px 比窄屏块还宽 → 归零,随块收缩 */
    .consistency-bar-wrap { min-width: 0; }
    /* 附录双栏 grid 与 .macro-overview-shell 同类:1fr 列未约束会被子项 min-content
       撑出容器(~17px 内溢)→ 约束列宽 + 子项可收缩 */
    .appendix-twocol { grid-template-columns: minmax(0, 1fr); }
    .appendix-twocol > * { min-width: 0; }
    /* 长 inline code / 段落内无空格斜杠串(如 NDX/QQQ/IXIC)在窄屏换行(PC 不变)*/
    .appendix-narrative code { white-space: normal; overflow-wrap: anywhere; }
    .appendix-narrative p { overflow-wrap: anywhere; }
    #oil-directional-pressure .editorial-section-body { padding-left: 0; padding-right: 0; }
    .odp-meta { display: grid; grid-template-columns: minmax(0, 1fr); gap: 7px; }
    .odp-meta > div { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; align-items: baseline; min-width: 0; }
    .odp-meta dd { min-width: 0; overflow-wrap: anywhere; }
    .odp-reasons li { grid-template-columns: minmax(0, 1fr); gap: 3px; }
    .odp-reason-label { align-self: start; }
    .odp-attribution-panel li { font-size: 12px; }
    .odp-evidence-timing-summary { gap: 10px; }
    .odp-energy-metrics { grid-template-columns: minmax(0, 1fr); }
    .odp-energy-metrics div.wide { grid-column: auto; }
    .odp-energy-core-list { grid-template-columns: 1fr; }
    .odp-energy-core-item { grid-template-columns: minmax(0, 1fr); gap: 2px; }
    /* 资产收益矩阵 6 列表:窄屏给表保底宽度,外层容器横向滚动——表在容器内横滑,
       不挤压列、不触发整页横向滚动(PC 上表 width:100% 放得下,wrapper 不出滚动条)*/
    .asset-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .asset-table-wrap .asset-table { min-width: 540px; }
  }
  @media (max-width: 440px) {
    /* 窄手机:首屏「今日判读」footer 三列改单列,每项独占一行更易读 */
    .big-footer { grid-template-columns: 1fr; gap: 10px; }
    /* 窄手机:市场温度块内联 auto/1fr 网格改单列堆叠,避免右栏 minmax(150px)
       指标在 ~360px 越界(覆盖 HTML 内联 style 需 !important)*/
    #homepage-market-temperature .runtime-block-body > div { grid-template-columns: 1fr !important; gap: 14px !important; }
  }

  /* ================================================================
     页面切换书签 · PAGE BOOKMARKS
     右上角两条彩色书签丝带:默认缩在角落只露带尾,hover / 键盘聚焦
     滑出显示页名(风险雷达 / AI 泡沫监测)。与 bubble-watch.html 内联的
     同名组件保持同一契约(改任一侧需同步另一侧)。display-only 导航,
     不参与任何数据渲染。统一固定右上角:左上角会遮挡手机端刊头标题,
     右上角桌面/手机布局一致且 issue-meta 在手机端折行到标题下方不冲突。
     ================================================================ */
  .page-bookmarks { position: fixed; top: 0; right: clamp(10px, 2.5vw, 30px); display: flex; gap: 10px; z-index: 1000; }
  .page-bookmarks .pbm {
    display: block; width: 34px; height: 128px; position: relative;
    text-decoration: none; color: #FBF7F0;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), 50% 100%, 0 calc(100% - 10px));
    transform: translateY(calc(-100% + 24px));
    transition: transform .38s cubic-bezier(.34, 1.45, .64, 1), filter .2s ease;
    box-shadow: 0 2px 6px rgba(26, 24, 21, .35);
    filter: saturate(.82);
  }
  .page-bookmarks .pbm:nth-child(2) { transition-delay: .04s; }
  .page-bookmarks .pbm-radar { background: linear-gradient(180deg, #5d1515 0%, #7C1D1D 100%); }
  .page-bookmarks .pbm-bubble { background: linear-gradient(180deg, #7d5813 0%, #A8761A 100%); }
  .page-bookmarks .pbm-label {
    position: absolute; top: 12px; left: 50%; transform: translateX(-50%);
    writing-mode: vertical-rl; font-family: "Noto Serif SC", serif;
    font-size: 13px; font-weight: 600; letter-spacing: .3em; white-space: nowrap;
  }
  .page-bookmarks .pbm-dot {
    position: absolute; bottom: 16px; left: 50%; transform: translateX(-50%);
    width: 7px; height: 7px; border-radius: 50%;
    background: rgba(251, 247, 240, .85);
  }
  .page-bookmarks .pbm-active { filter: saturate(1.1); }
  .page-bookmarks .pbm-active .pbm-dot { box-shadow: 0 0 0 2.5px rgba(251, 247, 240, .3); }
  .page-bookmarks:hover .pbm, .page-bookmarks:focus-within .pbm { transform: translateY(0); filter: saturate(1.1); }
  .page-bookmarks .pbm:hover { filter: saturate(1.25) brightness(1.06); }
  .page-bookmarks .pbm:focus-visible { outline: 2px solid var(--paper-ink, #1A1815); outline-offset: 2px; }
  /* 触屏带尾 36px:止于手机端刊头标题首行(top≈39px)之上,避免角部遮字 */
  @media (hover: none) { .page-bookmarks .pbm { transform: translateY(calc(-100% + 36px)); } }
  @media (prefers-reduced-motion: reduce) { .page-bookmarks .pbm { transition: none; } }
  @media print { .page-bookmarks { display: none; } }
