/* Self-hosted type, replacing the render-blocking fonts.googleapis.com request
   every page was making for Montserrat and Karla.

   Two families, each variable and latin-only:
     Bricolage Grotesque  41KB  display
     Inter                48KB  everything else

   ⚠️ TAKE THE LATIN SUBSET. Google's css2 response lists one @font-face per
   unicode-range and latin is LAST, so grabbing the first woff2 fetches Cyrillic
   Extended. Done once here: most glyphs then fell back silently and only a few
   letterforms looked wrong, which is far harder to spot than text that is
   plainly missing. Match on `U+0000-00FF` in the unicode-range, never on order.

   ⚠️ ASK FOR ONE AXIS. Bricolage ships opsz, wdth and wght; requesting all
   three gets a 131KB file. Asking css2 for `wght@400..800` alone gets 41KB, and
   nothing here varies optical size or width. Three axes cost 90KB for nothing.

   WHY NOT THE LOGO'S OWN LETTERFORM. The mark is a Didone, and the first cut of
   this file set every heading in Bodoni Moda on the reasoning that it IS the
   logo. Casey's read: "that font is difficult to read". He was right, and it is
   measurable rather than a matter of taste: a Didone's hairlines are built for
   a sign seen at thirty feet, so at a 35px h2 the thin strokes drop below one
   device pixel and the word greys out. The retro character belongs in the logo,
   where it is drawn once at a size that carries it. The headings need a face a
   person reads a price table through.

   WHY BRICOLAGE. It has an actual voice, which Figtree and Plus Jakarta Sans
   do not, while staying legible at 14px. Archivo was the closest match in
   spirit and is ruled out for a different reason: it is exzactwindowtinting's
   face, and two shops Keith owns in one market should not read as one site.

   METRIC-MATCHED FALLBACKS. Measured in this browser against the exact cuts it
   will use, not copied from anywhere: each variable font instanced at the
   weight, its advances compared with the fallback over a real sample string,
   and ascent/descent read off a zero-height inline-block sitting on the
   baseline. Inter gets two faces because Arial Bold is meaningfully wider than
   Arial and one fallback tuned to the regular leaves headings reflowing when
   the real font lands. Bricolage gets one, because its 400 and 700 cuts
   measured 92.02% and 92.09% against theirs: a second face would be a copy. */

@font-face {
  font-family: "Bricolage Grotesque";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(/assets/fonts/bricolage-var.woff2) format("woff2");
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url(/assets/fonts/inter-var.woff2) format("woff2");
}

/* Bricolage against Arial, which measured closest of Arial / Helvetica Neue /
   Verdana (92% vs 76-91%, and the nearer to 100 the less the fallback is
   distorted to fit). */
@font-face {
  font-family: "Bricolage Fallback";
  font-weight: 400 800;
  src: local("Arial"), local("Helvetica Neue");
  size-adjust: 92.05%;
  ascent-override: 97.77%;
  descent-override: 27.16%;
  line-gap-override: 0%;
}

/* Inter at text weights, against Arial. */
@font-face {
  font-family: "Inter Fallback";
  font-weight: 100 500;
  src: local("Arial"), local("Helvetica Neue");
  size-adjust: 108.07%;
  ascent-override: 89.76%;
  descent-override: 22.21%;
  line-gap-override: 0%;
}
/* Inter at bold, against Arial Bold, which is meaningfully wider. */
@font-face {
  font-family: "Inter Fallback";
  font-weight: 600 900;
  src: local("Arial Bold"), local("Arial"), local("Helvetica Neue");
  size-adjust: 102.54%;
  ascent-override: 94.60%;
  descent-override: 23.41%;
  line-gap-override: 0%;
}
