/* ============================================================
   article.css  ·  long-form article typography + charts
   Loaded only on article.html. Reads tokens.css for every value.
   ============================================================ */

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---- article shell ---- */
.article{max-width:760px;margin:0 auto;padding:6rem var(--gutter) 0}
.article-head{margin-bottom:clamp(2rem,5vh,3rem)}
.article-head .eyebrow{display:block;color:var(--cobalt);margin-bottom:1rem}
.article-title{font-family:var(--font-display);font-weight:var(--weight-display);
  font-size:var(--fs-display);line-height:1.04;letter-spacing:var(--tracking-display);margin:0;max-width:20ch}
.article-meta{display:flex;flex-wrap:wrap;gap:.4rem 1rem;margin-top:1.2rem;
  font-family:var(--font-mono);font-size:var(--fs-mono);letter-spacing:.04em;color:var(--text-muted)}
.article-hook{font-size:var(--fs-lead);color:var(--text-muted);margin:1.4rem 0 0;max-width:60ch}
.article-note{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;color:var(--text-muted);
  border:1px dashed var(--line);border-radius:var(--radius);padding:.6rem .9rem;margin-top:1.6rem;display:inline-block}

/* ---- prose ---- */
.article-body{font-size:1.075rem;line-height:1.75;color:var(--text-on-paper)}
.article-body > p:first-of-type{font-size:var(--fs-lead);line-height:1.6;color:var(--text-on-paper)}
.article-body p{margin:1.3rem 0}
.article-body h2{font-family:var(--font-display);font-weight:var(--weight-subhead);font-size:1.75rem;
  letter-spacing:-.01em;line-height:1.15;margin:2.6rem 0 .8rem}
.article-body h3{font-family:var(--font-display);font-weight:var(--weight-subhead);font-size:1.3rem;margin:2rem 0 .6rem}
.article-body h4{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--cobalt);margin:1.8rem 0 .5rem}
.article-body a{color:var(--cobalt);text-underline-offset:3px}
.article-body strong{font-weight:var(--weight-strong);color:var(--text-on-paper)}
.article-body code{font-family:var(--font-mono);font-size:.85em;background:rgba(20,24,31,.06);
  padding:.1em .35em;border-radius:4px}
.article-body ul,.article-body ol{margin:1.2rem 0;padding-left:1.3rem}
.article-body li{margin:.45rem 0}
.article-body ul li::marker{color:var(--cobalt)}
.article-body blockquote{margin:1.8rem 0;padding:.4rem 0 .4rem 1.4rem;border-left:3px solid var(--amber);
  font-family:var(--font-display);font-weight:var(--weight-subhead);font-size:1.35rem;line-height:1.4;color:var(--text-on-paper)}
.article-body hr{border:0;border-top:1px solid var(--line);margin:2.6rem 0}
.article-body figure{margin:2.4rem 0;padding:1.4rem 1.4rem 1.1rem;border:1px solid var(--line);
  border-radius:var(--radius-card);background:#fff}
.article-body figure img{width:100%;height:auto;display:block}

/* "key takeaway" callout: a blockquote whose first word is Takeaway: */
.article-body .callout{border-left:3px solid var(--cobalt);background:rgba(39,66,217,.05);
  border-radius:0 var(--radius-card) var(--radius-card) 0;padding:1.1rem 1.3rem;margin:1.8rem 0;font-style:normal}

/* ---- data tables in prose ---- */
.article-body table:not(.visually-hidden){width:100%;border-collapse:collapse;margin:1.6rem 0;font-size:.95rem}
.article-body th,.article-body td{text-align:left;padding:.6rem .8rem;border-bottom:1px solid var(--line)}
.article-body th{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--cobalt)}

/* ============================================================
   Charts
   ============================================================ */
.chart-figure{margin:2.4rem 0;padding:1.4rem 1.4rem 1.1rem;border:1px solid var(--line);
  border-radius:var(--radius-card);background:#fff}
.chart-title{font-family:var(--font-display);font-weight:var(--weight-subhead);font-size:1.1rem;margin:0 0 1rem}
.chart-plot{width:100%}
.chart-svg{width:100%;height:auto;display:block;overflow:visible}
.chart-caption{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.04em;color:var(--text-muted);margin:.8rem 0 0}

/* axis + labels (token-driven) */
.chart-grid{stroke:var(--line);stroke-width:1}
.chart-ylabel,.chart-xlabel,.chart-val{font-family:var(--font-mono);fill:var(--text-muted)}
.chart-ylabel,.chart-xlabel{font-size:12px}
.chart-val{font-size:12px;fill:var(--text-on-paper);font-weight:500}

/* bars */
.chart-bar{fill:var(--cobalt);transform:scaleY(0);transition:transform .8s var(--ease-signal)}
.is-in .chart-bar{transform:scaleY(1)}
.is-in .chart-bar:nth-of-type(2){transition-delay:.06s}
.is-in .chart-bar:nth-of-type(3){transition-delay:.12s}
.is-in .chart-bar:nth-of-type(4){transition-delay:.18s}
.is-in .chart-bar:nth-of-type(5){transition-delay:.24s}
.is-in .chart-bar:nth-of-type(6){transition-delay:.30s}

/* line + area */
.chart-line{fill:none;stroke:var(--cobalt);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:var(--len);stroke-dashoffset:var(--len);transition:stroke-dashoffset 1.1s var(--ease-signal)}
.is-in .chart-line{stroke-dashoffset:0}
.chart-area{fill:var(--cobalt);opacity:0;transition:opacity .9s var(--ease-signal) .3s}
.is-in .chart-area{opacity:.10}
.chart-dot{fill:var(--cobalt);opacity:0;transition:opacity .4s var(--ease-signal) .6s}
.is-in .chart-dot{opacity:1}
.chart-dot--last{fill:var(--amber)}

/* donut */
.chart-seg{opacity:0;transition:opacity .5s var(--ease-signal)}
.is-in .chart-seg{opacity:1}
.is-in .chart-seg--1{transition-delay:.08s}.is-in .chart-seg--2{transition-delay:.16s}
.is-in .chart-seg--3{transition-delay:.24s}.is-in .chart-seg--4{transition-delay:.32s}.is-in .chart-seg--5{transition-delay:.40s}
.chart-donut-total{font-family:var(--font-display);font-weight:var(--weight-display);font-size:26px;fill:var(--text-on-paper)}
.chart-donut-sub{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;fill:var(--text-muted);text-transform:uppercase}
.chart-figure--donut .chart-plot{display:grid;gap:1rem;align-items:center}
@media (min-width:620px){.chart-figure--donut .chart-plot{grid-template-columns:1.3fr 1fr}}
.chart-legend{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
.chart-legend li{display:flex;align-items:center;gap:.6rem;font-size:.9rem}
.chart-swatch{width:12px;height:12px;border-radius:3px;flex:none}
.chart-legend-label{flex:1}
.chart-legend-val{font-family:var(--font-mono);font-size:.78rem;color:var(--text-muted)}

/* segment palette (on-brand, cycles every 6) */
.chart-seg--0{stroke:var(--cobalt)} .chart-swatch.chart-seg--0{background:var(--cobalt)}
.chart-seg--1{stroke:var(--cobalt-light)} .chart-swatch.chart-seg--1{background:var(--cobalt-light)}
.chart-seg--2{stroke:var(--amber)} .chart-swatch.chart-seg--2{background:var(--amber)}
.chart-seg--3{stroke:var(--mist)} .chart-swatch.chart-seg--3{background:var(--mist)}
.chart-seg--4{stroke:#1B2A6B} .chart-swatch.chart-seg--4{background:#1B2A6B}
.chart-seg--5{stroke:#B9C0C9} .chart-swatch.chart-seg--5{background:#B9C0C9}

/* article footer nav */
.article-foot{max-width:760px;margin:3rem auto 0;padding:1.6rem var(--gutter) 0;border-top:1px solid var(--line)}

@media (prefers-reduced-motion:reduce){
  .chart-bar,.chart-line,.chart-area,.chart-dot,.chart-seg{transition:none}
  .chart-bar{transform:none}
  .chart-line{stroke-dashoffset:0}
  .chart-area{opacity:.10}.chart-dot,.chart-seg{opacity:1}
}
