/* ============================================================================
   VALERON RESEARCH -- self-hosted font faces.
   Enqueued BEFORE tokens.css so the families tokens.css names
   (--v-font-mark / --v-font-ui / --v-font-mono) are already defined by
   the time anything references them.

   Self-hosted, not a CDN: a third-party font request costs a DNS
   lookup, a TLS handshake and a round trip before any text paints,
   which is the wrong trade on a page fighting a 5.1s LCP; a CDN font
   is also a render-blocking dependency outside our control, and
   Google-served Google Fonts has been ruled a GDPR problem in some EU
   jurisdictions.

   Six files, one per weight actually used. Do not add a weight here
   without a rule that uses it.

   SUBSET: latin + latin-ext. If the .woff2 files dropped in are full
   unicode-range builds, the unicode-range descriptors below still keep
   the browser from downloading faces a given page does not need, but
   the files themselves will be larger than they need to be -- subset
   at build time (see assets/fonts/README.md).
   ============================================================================ */

/* ---- Inter Tight: UI and prose. The H1 and body text both paint from
   these, so 600 and 400 are the two preloaded in functions.php. ---- */
@font-face{
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/inter-tight-400.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/inter-tight-500.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Inter Tight';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/inter-tight-600.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---- Geist Mono: every number, label and timestamp. ---- */
@font-face{
  font-family:'Geist Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('fonts/geist-mono-400.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Geist Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('fonts/geist-mono-500.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---- Cinzel: the wordmark, one string per page, weight 600 only.
   Deliberately NOT preloaded (functions.php) -- it is one line of text
   in the masthead, not the LCP element.

   font-display is `swap`, not `optional`, on purpose. `optional` would
   avoid any swap at all, but it also means that on a slow first load
   the brand wordmark renders in the Georgia fallback and never
   corrects itself for that pageview, which is a real brand cost. The
   usual reason to prefer `optional` is layout shift, and that reason
   does not apply here: .v-art-masthead's height comes from its own
   padding and a line-height of 1 on a fixed font-size, so a late swap
   changes glyph widths horizontally on a centred single line and moves
   nothing vertically. No CLS either way, so `swap` is the better half
   of the trade. Change this to `optional` if the fallback flash turns
   out to read worse in practice than a wrong wordmark. ---- */
@font-face{
  font-family:'Cinzel';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('fonts/cinzel-600.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
