/* GENERATED by tools/extract_tokens.py — do not hand-edit. */
/* Values read from the Illustrator artboards at 1920x1080. */
/* [data-stage] marks an element that is always its own aspect-fit
   stage (the preloader): every token is recomputed there from its --u,
   whatever the page's layout mode does to the root's. */
:root, [data-stage] {
  /* One design pixel. Desktop is aspect-fit (ruling R26): the 1920x1080
     stage scales by the smaller of width and height, so it always fits;
     responsive.css redefines it where the layout starts to flow. */
  --u: min(calc(100vw / 1920), calc(100vh / 1080));

  /* Palette — pure monochrome, no greys (spec Global Constraints). */
  --ink: #ffffff;
  --ground: #000000;

  /* Geometry, in design pixels. */
  --margin-x: calc(55.7 * var(--u));
  --content-w: calc(1811.0 * var(--u));
  --header-h: calc(120.8 * var(--u));
  --footer-h: calc(127.2 * var(--u));
  --rule: 1px;
  --rule-strong: max(1px, calc(2.0 * var(--u)));
  --dash: 2px 4px;

  /* Weights. */
  --fw-regular: 400;
  --fw-medium: 500;
  --fw-semibold: 600;

  /* Type scale. Each clamps to a legible floor, then scales with --u. */
  --fs-hero: clamp(33.6px, calc(61.0 * var(--u)), 61.0px);
  --fs-ico-title: clamp(21.3px, calc(38.7 * var(--u)), 38.7px);
  --fs-rownum: clamp(17.8px, calc(32.3 * var(--u)), 32.3px);
  --fs-rowbody: clamp(14.3px, calc(26.0 * var(--u)), 26.0px);
  --fs-pre: clamp(13.7px, calc(24.9 * var(--u)), 24.9px);
  --fs-standfirst: clamp(11.7px, calc(21.3 * var(--u)), 21.3px);
  --fs-kicker: clamp(11.5px, calc(20.9 * var(--u)), 20.9px);
  --fs-heading: clamp(11.1px, calc(20.2 * var(--u)), 20.2px);
  --fs-pretag: clamp(11px, calc(19.6 * var(--u)), 19.6px);
  --fs-ico-edition: clamp(11px, calc(19.3 * var(--u)), 19.3px);
  --fs-ico-eyebrow: clamp(11px, calc(19.1 * var(--u)), 19.1px);
  --fs-verify: clamp(11px, calc(18.9 * var(--u)), 18.9px);
  --fs-section: clamp(11px, calc(18.5 * var(--u)), 18.5px);
  --fs-panel: clamp(11px, calc(18.2 * var(--u)), 18.2px);
  --fs-featured: clamp(11px, calc(18.0 * var(--u)), 18.0px);
  --fs-button: clamp(11px, calc(17.8 * var(--u)), 17.8px);
  --fs-tagline: clamp(11px, calc(17.7 * var(--u)), 17.7px);
  --fs-pager: clamp(11px, calc(17.4 * var(--u)), 17.4px);
  --fs-rail-pub: clamp(11px, calc(17.2 * var(--u)), 17.2px);
  --fs-source: clamp(11px, calc(17.1 * var(--u)), 17.1px);
  --fs-ico-num: clamp(11px, calc(17.0 * var(--u)), 17.0px);
  --fs-note: clamp(11px, calc(16.9 * var(--u)), 16.9px);
  --fs-section-sm: clamp(11px, calc(16.8 * var(--u)), 16.8px);
  --fs-rail-edition: clamp(11px, calc(16.6 * var(--u)), 16.6px);
  --fs-rail-head: clamp(11px, calc(16.3 * var(--u)), 16.3px);
  --fs-nav: clamp(11px, calc(16.1 * var(--u)), 16.1px);
  --fs-project: clamp(11px, calc(15.9 * var(--u)), 15.9px);
  --fs-latest: clamp(11px, calc(15.8 * var(--u)), 15.8px);
  --fs-row-src: clamp(11px, calc(15.7 * var(--u)), 15.7px);
  --fs-edition: clamp(11px, calc(15.3 * var(--u)), 15.3px);
  --fs-meta: clamp(11px, calc(15.1 * var(--u)), 15.1px);
  --fs-footer: clamp(11px, calc(14.8 * var(--u)), 14.8px);
  --fs-step: clamp(11px, calc(14.1 * var(--u)), 14.1px);
  --fs-index: clamp(11px, calc(13.3 * var(--u)), 13.3px);
  --fs-body: clamp(11px, calc(13.2 * var(--u)), 13.2px);
  --fs-src: clamp(11px, calc(13.1 * var(--u)), 13.1px);
  --fs-src-label: clamp(11px, calc(12.7 * var(--u)), 12.7px);
  --fs-card: clamp(11px, calc(12.0 * var(--u)), 12.0px);
  --fs-legend: clamp(11px, calc(11.7 * var(--u)), 11.7px);
  --fs-label: clamp(11px, calc(11.5 * var(--u)), 11.5px);
  --fs-step-note: clamp(11px, calc(11.3 * var(--u)), 11.3px);
}

/* The dynamic viewport height tracks mobile browser chrome. */
@supports (height: 100dvh) {
  :root, [data-stage] { --u: min(calc(100vw / 1920), calc(100dvh / 1080)); }
}
