
  /* ---------- shared Research-Reports chrome ---------- */
  * { box-sizing:border-box; }
  body { background:var(--bg); color:var(--text); font:14px/1.6 -apple-system,"Segoe UI",Roboto,Helvetica,sans-serif; margin:0; padding:18px 18px 60px; }
  @media(min-width:1100px){ body{ padding-left:max(18px,calc((100vw - 1096px)/2)); padding-right:max(18px,calc((100vw - 1096px)/2)); } }
  a { color:var(--link); text-decoration:none; }
  .wrap { max-width:1060px; margin:0 auto; }
  /* unambiguous move colours (NOT tied to the zh red=up swap) */
  .r-neg { color:#d23f3f; font-weight:600; }
  .r-pos { color:#1f9a55; font-weight:600; }
  html[data-theme="dark"] .r-neg { color:#ef6a6a; }
  html[data-theme="dark"] .r-pos { color:#3fc07e; }
  .mut { color:var(--muted); }
  /* tags / chips */
  .chip { display:inline-flex; align-items:center; gap:5px; font-size:11.5px; line-height:1; padding:5px 10px; border-radius:999px;
          background:var(--panel2); border:1px solid var(--line); color:var(--muted); white-space:nowrap; }
  .chip.tag-macro   { color:#5b8def; border-color:#5b8def55; }
  .chip.tag-fed     { color:#c77dff; border-color:#c77dff55; }
  .chip.tag-rates   { color:#3fb6c0; border-color:#3fb6c055; }
  .chip.tag-equities{ color:#46b87a; border-color:#46b87a55; }
  .chip.tag-crypto  { color:#e0973a; border-color:#e0973a55; }
  .chip.tag-energy  { color:#cf7b3a; border-color:#cf7b3a55; }
  .chip.tag-event   { color:#e0607a; border-color:#e0607a55; }
  .chip.tag-ai      { color:#b48ead; border-color:#b48ead55; }
  .chip.tag-china   { color:#d0554f; border-color:#d0554f55; }
  .chip.tag-credit  { color:#d08770; border-color:#d0877055; }
  footer.rfoot { color:var(--muted); font-size:11.5px; margin:46px auto 0; max-width:1060px; border-top:1px solid var(--line); padding-top:14px; }
  
  /* ---------- article layout ---------- */
  .crumb { max-width:1060px; margin:16px auto 0; font-size:12.5px; }
  .crumb a { color:var(--muted); }
  .crumb a:hover { color:var(--text); }
  .art-hero { max-width:1060px; margin:14px auto 0; background:var(--panel); border:1px solid var(--line);
              border-radius:16px; padding:26px 30px; position:relative; overflow:hidden; box-shadow:var(--card-shadow); }
  .art-hero::before { content:""; position:absolute; inset:0 0 auto 0; height:4px;
              background:linear-gradient(90deg,#5b8def,#c77dff 55%,#e0607a); }
  .art-kicker { font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--link); margin:0 0 10px; font-weight:600; }
  .art-hero h1 { font-size:30px; line-height:1.18; margin:0 0 12px; letter-spacing:-.01em; }
  .art-dek { font-size:16px; line-height:1.55; color:var(--text); opacity:.86; margin:0 0 16px; max-width:80ch; }
  .art-meta { display:flex; flex-wrap:wrap; align-items:center; gap:9px 14px; font-size:12.5px; color:var(--muted); }
  .art-meta .dot { opacity:.4; }
  .art-meta .tags { display:inline-flex; flex-wrap:wrap; gap:6px; }
  html[data-lang="zh"] .art-hero h1 { letter-spacing:0; }

  .layout { max-width:1060px; margin:26px auto 0; display:grid; grid-template-columns:212px minmax(0,1fr); gap:40px; align-items:start; }
  .toc { position:sticky; top:16px; font-size:12.5px; border-left:1px solid var(--line); padding-left:14px; }
  .toc .toc-h { font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:0 0 8px; }
  .toc a { display:block; color:var(--muted); padding:4px 0; line-height:1.35; border-left:2px solid transparent; margin-left:-16px; padding-left:14px; transition:color .15s,border-color .15s; }
  .toc a:hover { color:var(--text); }
  .toc a.active { color:var(--text); border-left-color:var(--link); font-weight:600; }

  article.body { font-size:15px; line-height:1.72; min-width:0; }
  article.body h2 { font-size:20px; margin:34px 0 10px; scroll-margin-top:16px; padding-top:4px; display:flex; align-items:baseline; gap:10px; }
  article.body h2 .num { font-size:13px; color:var(--link); font-weight:700; font-variant-numeric:tabular-nums; }
  article.body h3 { font-size:15.5px; margin:20px 0 4px; color:var(--text); }
  article.body p { margin:9px 0; opacity:.93; }
  article.body ul { margin:9px 0; padding-left:20px; }
  article.body li { margin:6px 0; opacity:.93; }
  article.body strong { color:var(--text); font-weight:680; }
  article.body em { color:var(--text); opacity:.8; font-style:italic; }

  .callout { border-radius:12px; padding:15px 18px; margin:16px 0; border:1px solid var(--line); background:var(--panel2); }
  .callout .co-h { font-weight:700; display:block; margin-bottom:4px; }
  .callout.lead   { border-left:4px solid var(--link); }
  .callout.warn   { border-left:4px solid var(--warn); background:color-mix(in srgb, var(--warn) 8%, var(--panel2)); }
  .callout.key    { border-left:4px solid #46b87a; background:color-mix(in srgb, #46b87a 8%, var(--panel2)); }

  table.data { border-collapse:collapse; width:100%; font-size:13px; margin:14px 0; }
  table.data th { text-align:left; padding:8px 10px; background:var(--panel2); color:var(--muted); font-weight:600;
                  border-bottom:2px solid var(--line); position:sticky; }
  table.data td { padding:7px 10px; border-bottom:1px solid var(--line); vertical-align:top; }
  table.data tr:hover td { background:var(--panel2); }
  table.data .num { font-variant-numeric:tabular-nums; white-space:nowrap; }
  .scn td:first-child { font-weight:600; }

  .sources { font-size:12.5px; color:var(--muted); }
  .sources a { color:var(--link); word-break:break-word; }
  .disc { font-size:12px; color:var(--muted); border-top:1px solid var(--line); margin-top:22px; padding-top:12px; }

  .prevnext { max-width:1060px; margin:30px auto 0; display:flex; gap:12px; flex-wrap:wrap; }
  .prevnext a { flex:1 1 280px; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:13px 16px; transition:border-color .15s, transform .15s; }
  .prevnext a:hover { border-color:var(--link); transform:translateY(-2px); }
  .prevnext .lbl { font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
  .prevnext .ttl { display:block; margin-top:3px; color:var(--text); font-weight:600; font-size:13.5px; }
  .backbtn { display:inline-flex; align-items:center; gap:7px; margin:26px auto 0; max-width:1060px; }
  .backbtn a { font-size:13px; color:var(--link); }

  /* ---------- responsive: shared by EVERY report page (existing + future) ---------- */
  /* Tablet / narrow: drop the sidebar grid and turn the sticky TOC into an inline
     wrapping chip-bar above the article, so the contents stay reachable on phones. */
  @media (max-width:900px){
    .layout{ grid-template-columns:1fr; gap:10px; }
    .toc{ position:static; top:auto; border-left:none; padding:11px 13px; margin:14px 0 2px;
          display:flex; flex-wrap:wrap; gap:6px; border:1px solid var(--line); border-radius:12px; background:var(--panel2); }
    .toc .toc-h{ flex-basis:100%; margin:0 0 3px; }
    .toc a{ display:inline-block; margin:0; padding:6px 10px; line-height:1.15; font-size:12px;
            border:1px solid var(--line); border-radius:999px; color:var(--muted); }
    .toc a.active{ color:var(--text); border-color:var(--link); font-weight:600; }
  }
  /* Phone: tighten the hero, headings, tables, callouts and card gutters. Wide data
     tables are auto-wrapped in a horizontal-scroll container by theme.js. */
  @media (max-width:600px){
    body{ padding-left:13px; padding-right:13px; }
    .crumb{ margin-top:12px; font-size:12px; }
    .art-hero{ padding:18px 16px; border-radius:14px; margin-top:12px; }
    .art-hero h1{ font-size:22px; line-height:1.24; }
    .art-dek{ font-size:14px; line-height:1.5; }
    .art-meta{ font-size:11.5px; gap:6px 10px; }
    .layout{ margin-top:16px; }
    article.body{ font-size:14.5px; line-height:1.68; }
    article.body h2{ font-size:17.5px; margin:26px 0 8px; gap:8px; }
    article.body h2 .num{ font-size:12px; }
    article.body h3{ font-size:14.5px; margin:16px 0 3px; }
    .callout{ padding:13px 14px; margin:14px 0; }
    table.data{ font-size:12px; }
    table.data th, table.data td{ padding:6px 8px; }
    .prevnext{ margin-top:22px; gap:10px; }
    .prevnext a{ flex:1 1 100%; }
  }

