/* Orbiq type — shared by every static marketing page EXCEPT index.html.
   ---------------------------------------------------------------------------
   index.html deliberately keeps its own inline copy of these rules: it is a
   single self-contained document with all CSS inline so nothing blocks first
   paint, and it is the page the edge renderer optimises hardest. If you change
   anything here, change it there too. There are exactly two copies, on purpose.

   Loaded as one small same-origin file rather than inlined into 18 pages so
   there is one definition to maintain and the browser reuses it across pages.
   The font itself does not wait on this file — each page also carries
     <link rel="preload" href="/fonts/space-grotesk-var.woff2" as="font"
           type="font/woff2" crossorigin>
   which starts the download at parse time. `crossorigin` is REQUIRED even
   same-origin: fonts fetch in CORS mode, and omitting it downloads them twice.

   Was: two serial third-party origins (fonts.googleapis.com for the CSS, then
   fonts.gstatic.com for the woff2), three static Space Grotesk weights, and a
   second family. Now: one 27KB variable file on the connection the HTML already
   opened. */

@font-face{
  font-family:'Space Grotesk';
  src:url('/fonts/space-grotesk-var.woff2') format('woff2-variations');
  font-weight:300 700;
  font-style:normal;
  font-display:swap;
}

/* Arial wearing Space Grotesk's metrics, so the swap does not reflow. The four
   values are MEASURED — wrong ones make CLS worse than no overrides. Method and
   the reasoning behind each number are documented in index.html's copy; the
   short version is that they come from rendering real heading strings in both
   faces, NOT from OS/2.xAvgCharWidth, which is incomparable between these two
   fonts and is ~17% wrong here. Re-measure if the woff2 is ever re-subset —
   and rename the file when you do, because public/_headers serves /*.woff2
   as immutable for a year. */
@font-face{
  font-family:'SG Fallback';
  src:local('Arial Bold'),local('Arial-BoldMT'),local('Arial');
  font-weight:300 700;
  ascent-override:97.52%;
  descent-override:28.94%;
  line-gap-override:0%;
  size-adjust:100.91%;
}

/* ── editorial serif ─────────────────────────────────────────────────────────
   Playfair Display is the newsletter archive's voice and about.html's display
   face. Kept deliberately rather than folded into Space Grotesk, but no longer
   fetched from Google.

   Two files, because the two consumers need disjoint cuts and neither should
   pay for the other's:
     playfair-var.woff2         roman, wght axis clamped to 600–800  (newsletters)
     playfair-italic-700.woff2  italic, PINNED to 700, static        (about.html)
   Pinning the italic dropped it 52.8KB -> 31.8KB, because about.html uses
   exactly one weight of it and nothing else. Declaring a font-weight RANGE on
   the roman and a single weight on the italic is what keeps a page from
   downloading the cut it never renders.

   Both are only fetched when a page actually renders a matching glyph, so the
   pages that use neither pay nothing for these rules being here. */
@font-face{
  font-family:'Playfair Display';
  src:url('/fonts/playfair-var.woff2') format('woff2-variations');
  font-weight:600 800;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Playfair Display';
  src:url('/fonts/playfair-italic-700.woff2') format('woff2');
  font-weight:700;
  font-style:italic;
  font-display:swap;
}

/* Georgia wearing Playfair's metrics — Georgia because that is already the
   first fallback in the newsletters' own font stack, and it ships on Windows
   and macOS alike. Measured the same way as SG Fallback: real newsletter
   heading strings rendered in both faces on a canvas, mean width ratio.
     roman  vs Georgia Bold        0.8945  (spread 0.8832–0.9024)
     italic vs Georgia Bold Italic 0.8582  (spread 0.8426–0.8744)
   Playfair's hhea: upem 1000, ascent 1082, descent -251, lineGap 0.
   ascent-override above 100% is expected here, not a typo — Playfair's own
   ascent is 108.2% of em before the size-adjust division. */
@font-face{
  font-family:'PF Fallback';
  src:local('Georgia Bold'),local('Georgia-Bold'),local('Georgia');
  font-weight:600 800;
  font-style:normal;
  ascent-override:120.97%;
  descent-override:28.06%;
  line-gap-override:0%;
  size-adjust:89.45%;
}
@font-face{
  font-family:'PF Fallback';
  src:local('Georgia Bold Italic'),local('Georgia-BoldItalic'),local('Georgia Italic'),local('Georgia');
  font-weight:700;
  font-style:italic;
  ascent-override:126.07%;
  descent-override:29.25%;
  line-gap-override:0%;
  size-adjust:85.82%;
}

:root{
  /* Body text has never been a webfont on the main pages, and now isn't on any
     of them — this is what DM Sans, Plus Jakarta Sans and Roboto Flex were
     replaced with. Pages that already declare their own identical --sans keep
     winning on source order; this is here for the ones that don't. */
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,"Helvetica Neue",Arial,sans-serif;
  /* Replaces 'Space Mono'. It was a second webfont used almost entirely at
     0.6–0.76rem, uppercase, with heavy tracking — a display mono at its worst
     size — including for numbers. The platform monospaces below are drawn for
     exactly those sizes, and cost nothing to fetch. */
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
