/* Design tokens carried over from japan.stats-viz.org so the two sites read as one
   family. Warm-paper light theme only -- deliberately no dark mode, matching japan. */
:root{
  --paper:#f4efe5; --ink:#181817; --muted:#69645c; --rule:#cfc7b9;
  --accent:#d44a32; --blue:#274c77; --white:#fffdf8; --focus:#1676c0;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);
  font:1.03rem/1.8 Inter,"Noto Sans TC","PingFang TC","Hiragino Sans TC",system-ui,sans-serif;
  -webkit-text-size-adjust:100%}
a{color:inherit}
a:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.shell{width:min(1180px,100% - 2.5rem);margin:0 auto}

/* ---- header ---- */
.site{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;
  padding:1.6rem 0 1.2rem;border-bottom:1px solid var(--rule);flex-wrap:wrap}
.brand{font:700 1.05rem/1 Inter,system-ui,sans-serif;letter-spacing:-.02em;margin:0}
.brand small{display:block;font-weight:400;color:var(--muted);font-size:.72rem;margin-top:.3rem}
.langs{display:flex;gap:.4rem;font-size:.78rem}
.langs a,.langs span{padding:.3rem .6rem;border:1px solid var(--rule);border-radius:99px;
  text-decoration:none;color:var(--muted)}
.langs [aria-current]{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* ---- hero ---- */
.hero{width:min(1040px,100%);padding:3rem 0 2.2rem}
.kicker{display:inline-block;font:600 .74rem/1 Inter,system-ui,sans-serif;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);border-top:3px solid var(--accent);padding-top:.5rem}
h1{font:700 clamp(1.9rem,4vw,3.4rem)/1.12 Georgia,"Noto Serif TC",serif;
  letter-spacing:-.045em;margin:.9rem 0 0}
.deck{font-size:clamp(1.15rem,2.2vw,1.55rem);line-height:1.55;color:var(--muted);
  max-width:46ch;margin:1rem 0 0}
.meta{font-size:.78rem;color:var(--muted);margin-top:1.4rem}

/* ---- big numbers ---- */
.figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);margin:2.4rem 0 0}
.fig{background:var(--white);padding:1.1rem 1.2rem}
.fig b{display:block;font:700 clamp(1.5rem,3vw,2.1rem)/1.1 Inter,system-ui,sans-serif;
  font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.fig span{display:block;font-size:.76rem;color:var(--muted);margin-top:.35rem;line-height:1.45}
.fig .up{color:var(--accent)} .fig .down{color:var(--blue)}

/* ---- sections ---- */
section{padding:2.6rem 0;border-top:1px solid var(--rule)}
/* <section> is already full-bleed, so the alternating band needs a plain background.
   An earlier version used box-shadow:0 0 0 100vmax + clip-path to fake it; that
   created a compositing layer that some rasterisers failed to paint at all. */
section:nth-of-type(even){background:var(--white)}
.copy{display:grid;grid-template-columns:60px minmax(0,720px);gap:0 1.2rem}
.num{font:700 .8rem/1 Inter,system-ui,sans-serif;color:var(--accent);padding-top:.55rem}
h2{font:700 clamp(1.45rem,2.6vw,2.15rem)/1.2 Georgia,"Noto Serif TC",serif;
  letter-spacing:-.03em;margin:0;grid-column:2}
.claim{grid-column:2;font-weight:700;font-size:1.12rem;margin:.9rem 0 0}
.copy p:not(.claim){grid-column:2;margin:.9rem 0 0}

/* ---- charts ---- */
figure.chart{width:min(920px,100%);margin:2.2rem 0 0 auto;background:var(--white);
  border:1px solid var(--ink);box-shadow:7px 7px 0 var(--ink);padding:1.3rem 1.4rem 1.1rem}
figure.chart figcaption h3{font:700 clamp(1.2rem,2.2vw,1.7rem)/1.25 Georgia,"Noto Serif TC",serif;
  margin:0;letter-spacing:-.02em}
figure.chart figcaption p{font-size:.86rem;color:var(--muted);margin:.45rem 0 1.1rem}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart text{font:400 11px/1 Inter,system-ui,sans-serif;fill:var(--muted);
  font-variant-numeric:tabular-nums}
.chart text.val{fill:var(--ink);font-weight:600}
.chart .grid{stroke:var(--rule);stroke-width:1;vector-effect:non-scaling-stroke}
.chart .axis{stroke:var(--ink);stroke-width:1;vector-effect:non-scaling-stroke}
.chart-source{font-size:.72rem;color:var(--muted);margin:1rem 0 0;line-height:1.6}
.legend{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;font-size:.76rem;color:var(--muted);
  margin:.2rem 0 1rem;padding:0;list-style:none}
.legend li{display:flex;align-items:center;gap:.4rem}
.sw{width:11px;height:11px;flex:0 0 11px;border:1px solid var(--ink)}
.gap-note{font-size:.72rem;color:var(--accent);margin:.6rem 0 0}

/* ---- data tables ---- */
details.data{margin:1rem 0 0;border-top:1px solid var(--rule);padding-top:.6rem}
details.data summary{font-size:.76rem;color:var(--muted);cursor:pointer}
.scroll{overflow-x:auto;margin-top:.7rem}
table{border-collapse:collapse;font-size:.76rem;width:100%;
  font-variant-numeric:tabular-nums}
th,td{padding:.32rem .6rem;text-align:right;white-space:nowrap;border-bottom:1px solid var(--rule)}
th:first-child,td:first-child{text-align:left}
thead th{position:sticky;top:0;background:var(--white);border-bottom:1px solid var(--ink)}
td.absent{color:var(--accent);font-style:italic}

/* ---- method note ---- */
.method{width:min(920px,100%);margin:2.4rem 0 0 auto;border:1px dashed var(--rule);
  padding:1.2rem 1.3rem;font-size:.84rem;color:var(--muted)}
.method h3{font:700 .8rem/1 Inter,system-ui,sans-serif;letter-spacing:.1em;
  text-transform:uppercase;margin:0 0 .7rem;color:var(--ink)}
.method ul{margin:.6rem 0 0;padding-left:1.1rem}
.method li{margin:.35rem 0}
footer.site{border-top:1px solid var(--rule);margin-top:3rem;padding:1.6rem 0 3rem;
  font-size:.76rem;color:var(--muted)}
footer.site p{margin:.4rem 0}

@media (max-width:700px){
  .copy{grid-template-columns:1fr}
  h2,.claim,.copy p:not(.claim){grid-column:1}
  .num{padding:0 0 .3rem}
  figure.chart{padding:1rem;box-shadow:4px 4px 0 var(--ink)}
}

/* ---- home: story index ---- */
.intro{width:min(1040px,100%);padding:2.6rem 0 1.4rem}
.intro p{color:var(--muted);max-width:52ch;margin:.9rem 0 0;font-size:1.05rem}
.stories{display:grid;gap:1px;background:var(--rule);border:1px solid var(--ink);
  box-shadow:7px 7px 0 var(--ink);margin:1.6rem 0 3rem;width:min(1040px,100%)}
.story-card{background:var(--white);padding:1.5rem 1.6rem;text-decoration:none;display:block}
.story-card:hover{background:var(--paper)}
.story-card h2{font:700 clamp(1.3rem,2.4vw,1.9rem)/1.2 Georgia,"Noto Serif TC",serif;
  letter-spacing:-.03em;margin:0}
.story-card .sub{color:var(--muted);font-size:.92rem;margin:.5rem 0 0;max-width:60ch}
.story-card .tag{display:inline-block;font:600 .7rem/1 Inter,system-ui,sans-serif;
  letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 .5rem}
.story-card .nums{display:flex;flex-wrap:wrap;gap:.3rem 1.4rem;margin:.9rem 0 0;
  font-variant-numeric:tabular-nums}
.story-card .nums b{font:700 1.25rem/1 Inter,system-ui,sans-serif;letter-spacing:-.02em}
.story-card .nums span{color:var(--muted);font-size:.72rem;display:block;margin-top:.25rem}
@media (max-width:700px){.stories{box-shadow:4px 4px 0 var(--ink)}}
