/* self-hosted, subset fonts (src/fonts.py) — no external CDN */
@font-face{font-family:"Noto Serif SC";src:url(/fonts/serif-sc.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:"Noto Sans SC";src:url(/fonts/sans-sc.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url(/fonts/serif-lat.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans Condensed";src:url(/fonts/plex-400.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans Condensed";src:url(/fonts/plex-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans Condensed";src:url(/fonts/plex-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}
:root{
  --paper:#f4f3ee; --paper-2:#fbfaf7; --ink:#15181a; --ink-2:#363b3e; --muted:#676d70; --faint:#979c9d;
  --rule:#d8d9d2; --rule-2:#aeb1ab; --band:#e9e8e1;
  --cn:#b23f27; --us:#1f4f78; --vn:#a87516; --mx:#2f7558; --eu:#5d6a73; --hk:#a2988a;
  --serif:"Source Serif 4","Noto Serif SC","Songti SC",serif;
  --sans:"IBM Plex Sans Condensed","Noto Sans SC","PingFang SC",sans-serif;
  --body:"Noto Sans SC","PingFang SC",sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.75;font-feature-settings:"tnum" 1}
a{color:inherit;text-decoration-color:var(--rule-2);text-underline-offset:3px}
a:hover{text-decoration-color:var(--ink)}
.wrap{max-width:1200px;margin:0 auto;padding:0 40px}
.rule-dbl{border-top:2px solid var(--ink);height:3px;border-bottom:1px solid var(--ink)}

/* masthead */
.mast{padding-top:22px}
.mast-row{display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:14px}
.brand{text-decoration:none;display:flex;align-items:baseline;gap:14px}
.brand-cn{font-family:var(--serif);font-weight:900;font-size:30px;letter-spacing:.06em;line-height:1}
.brand-cn.sm{font-size:20px;margin-bottom:10px}
.brand-en{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--muted)}
.nav{display:flex;gap:28px;font-size:14px}
.nav a{text-decoration:none;color:var(--muted);padding-bottom:3px;border-bottom:1px solid transparent}
.nav a[aria-current]{color:var(--ink);border-bottom-color:var(--ink)}
.issue{display:flex;justify-content:space-between;font-family:var(--sans);font-size:13px;color:var(--muted);padding:9px 0 0;letter-spacing:.02em}

/* hero */
.hero{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:72px;padding-top:64px;padding-bottom:72px;align-items:start}
.kicker{font-family:var(--sans);font-size:13px;font-weight:600;color:var(--cn);letter-spacing:.08em;margin:0 0 18px}
h1{font-family:var(--serif);font-weight:700;font-size:58px;line-height:1.18;letter-spacing:.01em;margin:0 0 26px}
.deck{font-family:var(--serif);font-size:19px;line-height:1.8;color:var(--ink-2);margin:0;max-width:34em}
.statement{background:var(--paper-2);border:1px solid var(--rule);padding:22px 26px 18px;margin-top:6px;font-family:var(--sans)}
.st-h{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);border-bottom:1px solid var(--ink);padding-bottom:10px;margin-bottom:8px}
.st-h span:first-child{font-family:var(--serif);font-weight:700;color:var(--ink);font-size:16px}
.st-row{display:flex;align-items:baseline;gap:8px;padding:9px 0;font-size:15px}
.st-l{color:var(--ink-2)}
.st-dots{flex:1;border-bottom:1px dotted var(--rule-2);transform:translateY(-4px)}
.st-v{font-family:var(--serif);font-size:22px;font-weight:600}
.st-sum{border-top:1px solid var(--ink);margin-top:4px}
.st-total .st-l{font-weight:600;color:var(--ink)}
.st-total .st-v{color:var(--cn);font-size:30px;font-weight:700;border-bottom:3px double var(--cn);line-height:1.15}
.st-muted .st-l,.st-muted .st-v{color:var(--muted)}
.st-muted .st-v{font-size:18px}
.st-note{font-size:13px;color:var(--muted);line-height:1.6;margin:12px 0 0;border-top:1px solid var(--rule);padding-top:12px}

/* contents */
.toc{padding-bottom:40px}
.sec-h{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--ink);padding-top:10px}
.sec-h h2{font-family:var(--serif);font-size:20px;margin:0}
.sec-h span{font-family:var(--sans);font-size:13px;color:var(--faint)}
.tc{margin-top:8px}
.tc-row{display:grid;grid-template-columns:48px 88px minmax(0,1fr) 300px;gap:16px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--rule);text-decoration:none}
a.tc-row:hover .tc-q{text-decoration:underline;text-decoration-color:var(--rule-2)}
.tc-n{font-family:var(--serif);font-size:17px;color:var(--faint)}
.tc-k{font-family:var(--sans);font-size:13px;color:var(--muted)}
.tc-q{font-family:var(--serif);font-size:18px;font-weight:600}
.tc-v{text-align:right;font-family:var(--sans);font-size:13px;color:var(--muted)}
.tc-v b{font-family:var(--serif);font-size:20px;color:var(--ink);font-weight:600;margin-right:2px}
.tc-v small{display:block;font-size:12px;color:var(--faint);line-height:1.4}
.tc-row.pending .tc-q{color:var(--faint);font-weight:400}
.tc-row.pending .tc-k{color:var(--faint);font-style:normal;border:1px dashed var(--rule-2);justify-self:start;padding:0 6px;line-height:1.6}

/* figure section */
.fig{display:grid;grid-template-columns:200px minmax(0,1fr);gap:40px;padding-top:56px;padding-bottom:40px;position:relative}
.fig::before{content:"";position:absolute;left:40px;right:40px;top:0;border-top:1px solid var(--ink)}
.fig-margin{font-family:var(--sans);position:sticky;top:24px;align-self:start}
.fig-no{font-family:var(--serif);font-size:64px;line-height:.9;font-weight:400;color:var(--ink)}
.fig-lbl{font-family:var(--sans);font-size:13px;color:var(--muted);display:block;margin-bottom:8px;letter-spacing:.1em}
.fig-kind{font-size:14px;font-weight:600;color:var(--cn);margin-top:14px}
.fig-asof{font-size:13px;color:var(--faint);margin-top:4px;line-height:1.5}
.fig-body{max-width:880px}
.fig-q{font-family:var(--serif);font-weight:700;font-size:34px;line-height:1.35;margin:0 0 16px;letter-spacing:.01em}
.lede{font-family:var(--serif);font-size:18px;line-height:1.85;color:var(--ink-2);margin:0 0 26px;max-width:40em}
.readouts{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:30px}
.ro{padding:14px 18px 12px 0}
.ro+.ro{padding-left:18px;border-left:1px solid var(--rule)}
.ro-v{font-family:var(--serif);font-size:34px;font-weight:600;line-height:1.1}
.ro-v span{font-family:var(--sans);font-size:14px;font-weight:400;color:var(--muted);margin-left:3px}
.ro-l{font-family:var(--sans);font-size:13px;color:var(--muted);margin-top:4px;line-height:1.4}
.plot{margin:0}
.unit{display:flex;justify-content:space-between;gap:12px;font-family:var(--sans);font-size:13px;color:var(--muted);margin-bottom:6px}
.hov{color:var(--ink);font-weight:500;text-align:right;min-height:1.2em}
.hov i{font-style:normal;margin-left:10px}
.art svg{display:block;overflow:visible;max-width:100%;height:auto}
.art-m{display:none}
.subfig{margin-top:30px}
.foot-n{color:var(--faint);margin-top:4px}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.panel-h{font-family:var(--serif);font-size:18px;margin:0 0 4px;font-weight:600}
.notes{margin-top:26px;border-top:1px solid var(--rule);padding-top:12px;font-size:15px;color:var(--ink-2)}
.notes summary{font-family:var(--sans);font-size:14px;font-weight:600;color:var(--ink);cursor:pointer;list-style:none}
.notes summary::-webkit-details-marker{display:none}
.notes summary::after{content:" ＋";color:var(--faint)}
.notes[open] summary::after{content:" －"}
.notes ol{margin:10px 0 0;padding-left:1.4em;line-height:1.8}
.notes li{margin-bottom:6px;max-width:46em}
.notes li::marker{font-family:var(--serif);color:var(--muted)}
.src{font-family:var(--sans);font-size:12.5px;line-height:1.6;color:var(--muted);margin:16px 0 0;max-width:62em}

/* svg text */
svg text{font-family:var(--sans)}
.t-y,.t-x{font-size:12.5px;fill:var(--muted)}
.t-lab{font-size:13px}
.t-val{font-size:13px;font-weight:600}
.t-ann{font-size:12.5px;fill:var(--ink-2)}
.t-band{font-size:12px;fill:var(--muted)}
.t-bar{font-size:12.5px;font-weight:600}
.g{stroke:var(--rule);stroke-width:1}
.g0,.axis{stroke:var(--ink);stroke-width:1}
.lead{stroke:var(--ink-2);stroke-width:.8}
.xh{stroke:var(--ink);stroke-width:.8;stroke-dasharray:2 3;opacity:0;pointer-events:none}
.hit{cursor:crosshair}

/* methodology */
.doc{display:grid;grid-template-columns:200px minmax(0,1fr);gap:40px;padding-top:56px;padding-bottom:64px}
.doc-toc{position:sticky;top:24px;display:flex;flex-direction:column;font-family:var(--sans);font-size:14px;border-top:1px solid var(--ink)}
.doc-toc a{text-decoration:none;color:var(--muted);padding:8px 0;border-bottom:1px solid var(--rule)}
.doc-toc a:hover{color:var(--ink)}
.doc-body{max-width:760px;font-family:var(--serif);font-size:17px;line-height:1.9}
.doc-h1{font-size:46px}
.doc-body h2{font-size:26px;margin:52px 0 12px;padding-top:14px;border-top:1px solid var(--ink)}
.doc-body p,.doc-body ul{color:var(--ink-2)}
.defs{display:grid;grid-template-columns:120px 1fr;gap:12px 24px;margin:24px 0;border-top:1px solid var(--rule);padding-top:16px}
.defs dt{font-family:var(--sans);font-weight:600;font-size:15px}
.defs dd{margin:0;color:var(--ink-2);padding-bottom:12px;border-bottom:1px solid var(--rule)}
.callout{border-left:3px solid var(--cn);padding:4px 0 4px 20px;margin:28px 0}
.src-t{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:14px;line-height:1.6;margin-top:16px}
.src-t th{text-align:left;font-weight:600;border-bottom:1px solid var(--ink);padding:8px 10px 8px 0}
.src-t td{vertical-align:top;border-bottom:1px solid var(--rule);padding:10px 12px 10px 0;color:var(--ink-2)}
.sched{list-style:none;padding:0}
.sched li{padding:8px 0;border-bottom:1px solid var(--rule)}
.sched b{font-family:var(--sans);display:inline-block;min-width:9em}

/* footer */
.foot{margin-top:40px;padding-bottom:48px}
.foot-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px;padding-top:28px;font-size:14px;color:var(--muted)}
.foot-grid p{margin:0;line-height:1.7}
.foot h5{font-family:var(--sans);font-size:13px;color:var(--ink);margin:0 0 10px;font-weight:600}
.foot-grid a{display:block;text-decoration:none;padding:2px 0}

@media (max-width:1100px){.hero{grid-template-columns:1fr;gap:40px}.statement{max-width:560px}}
@media (max-width:760px){
  .wrap{padding:0 16px}
  .fig::before{left:16px;right:16px}
  .mast{padding-top:14px}
  .mast-row{flex-direction:column;align-items:flex-start;gap:10px;padding-bottom:10px}
  .brand{flex-direction:column;gap:4px}
  .brand-cn{font-size:26px}
  .brand-en{font-size:14px}
  .nav{gap:20px}
  .issue{flex-direction:column;font-size:12px;line-height:1.6}
  .hero{padding-top:36px;padding-bottom:44px;gap:28px}
  h1{font-size:34px;line-height:1.28;margin-bottom:18px}
  .deck{font-size:17px}
  .statement{padding:16px 16px 12px}
  .st-row{font-size:14px}
  .st-l{max-width:62%}
  .st-v{font-size:19px}
  .st-total .st-v{font-size:26px}
  .tc-row{grid-template-columns:32px minmax(0,1fr);gap:4px 10px;padding:12px 0}
  .tc-k{grid-column:2;grid-row:1;font-size:12px}
  .tc-q{grid-column:2;font-size:16px;line-height:1.5}
  .tc-v{grid-column:2;text-align:left}
  .tc-v small{display:inline;margin-left:6px}
  .tc-n{grid-row:1 / span 3}
  .fig{grid-template-columns:1fr;gap:12px;padding-top:30px}
  .fig-margin{position:static;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
  .fig-no{font-size:30px}
  .fig-lbl{display:inline;margin:0 4px 0 0}
  .fig-kind{margin:0}
  .fig-asof{margin:0;width:100%;font-size:12px}
  .fig-q{font-size:24px;line-height:1.45}
  .lede{font-size:16px;line-height:1.8}
  .readouts{grid-template-columns:1fr}
  .ro{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 0}
  .ro+.ro{padding-left:0;border-left:0;border-top:1px solid var(--rule)}
  .ro-v{font-size:24px;order:2;white-space:nowrap}
  .ro-l{order:1;margin:0}
  .art-d{display:none}.art-m{display:block}
  .unit{flex-direction:column;gap:2px;font-size:12px}
  .hov{text-align:left}
  .pair{grid-template-columns:1fr;gap:28px}
  .notes{font-size:14.5px}
  .doc{grid-template-columns:1fr;padding-top:32px}
  .doc-margin{display:none}
  .doc-h1{font-size:30px}
  .doc-body{font-size:16px}
  .defs{grid-template-columns:1fr;gap:4px}
  .defs dd{margin-bottom:10px}
  .src-t{font-size:12.5px;display:block;overflow-x:auto}
  .foot-grid{grid-template-columns:1fr;gap:20px}
}
.tc-row{grid-template-columns:48px 88px minmax(0,1fr) 110px 240px}
.tc-s{align-self:center;line-height:0}
.spark{display:block;overflow:visible}
@media (max-width:760px){.tc-row{grid-template-columns:32px minmax(0,1fr)}.tc-s{display:none}}
/* research ledger */
.refs{border-top:1px solid var(--ink);margin-top:6px}
.ref{display:grid;grid-template-columns:200px 1fr;gap:20px;padding:12px 0;border-bottom:1px solid var(--rule)}
.ref-who{font-family:var(--sans);font-weight:600;font-size:14px;line-height:1.35}
.ref-who span{display:block;font-weight:400;color:var(--muted);font-size:13px}
.ref p{margin:0;font-size:15px;line-height:1.6}
.ref a{font-family:var(--sans);font-size:13px;white-space:nowrap}
@media (max-width:760px){.ref{grid-template-columns:1fr;gap:4px}}
.hero-chart{margin:34px 0 0;padding-top:12px;border-top:1px solid var(--ink)}
.hero-chart .unit{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.hero-chart .foot-n{font-family:var(--sans);font-size:12px;color:var(--faint);margin:2px 0 0}
