/* 626 Labs self-hosted web fonts — replaces the third-party Google Fonts
   @import on every site page. Variable fonts (woff2) built from the TTFs in
   this directory via fontTools; see scripts/build-fonts.py. Absolute /fonts/
   URLs resolve from any page depth on 626labs.dev.

   NOT for the embedded widget (widget-bacon-trail/) — it renders on
   third-party domains where /fonts/ would resolve to the host, so the widget
   keeps its own font loading. */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/Inter-Variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Inter';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/Inter-Italic-Variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/SpaceGrotesk-Variable.woff2') format('woff2');
}
@font-face {
  font-family: 'JetBrains Mono';
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url('/fonts/JetBrainsMono-Variable.woff2') format('woff2');
}
/* Source Serif 4 is font-display: optional (2026-10-07, Este's call): the
   body and deck serif is ~750 KB of variable data, and on a slow phone a late
   swap repainted the whole page. Now it is used only if it arrives within the
   first moment (the homepage preloads the roman), else the fallback serif stays
   for that visit and the cached font is used on the next. Display faces stay
   swap, so headlines always get their real face. */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 200 900;
  font-display: optional;
  src: url('/fonts/SourceSerif4-Variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 200 900;
  font-display: optional;
  src: url('/fonts/SourceSerif4-Italic-Variable.woff2') format('woff2');
}
/* Archivo (Omnibus-Type, SIL OFL): the Cyan Fade's one face (2026-11).
   Two axes, wght 100-900 and wdth 62-125; the theme's display cut is the
   expanded black (font-stretch: 125%, font-weight: 900), so the width range
   is declared here or the browser clamps the stretch to 100. */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url('/fonts/Archivo-Variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Archivo';
  font-style: italic;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url('/fonts/Archivo-Italic-Variable.woff2') format('woff2');
}

/* EsteFont Pro: Este's own handwriting (626Labs LLC, not OFL; used here by
   its owner). Static Regular + Bold, shipped as built woff2 from the 3.000
   release (2026-10-06), so scripts/build-fonts.py does not touch it.
   The site's rule: Este's own words, in his hand. Pull quotes, the founding
   line, sign-offs. The hand has a 0.45em x-height, so set it about 1.2x the
   size the surrounding type would use, never below 24px, and never italic
   or letter-spaced: the slant and spacing are already drawn in. */
@font-face {
  font-family: 'EsteFont Pro';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/EsteFontPro-Regular.woff2') format('woff2');
}
@font-face {
  font-family: 'EsteFont Pro';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/EsteFontPro-Bold.woff2') format('woff2');
}
