/* Noto Sans — the brand typeface (brand.json typography.family). Self-hosted
   variable woff2, latin + latin-ext only. Generated by scripts/fetch-fonts.sh. */
@font-face {
  font-family: 'Noto Sans';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/noto-sans-latin-ext-italic.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Noto Sans';
  font-style: italic;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/noto-sans-latin-italic.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/noto-sans-latin-ext-normal.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/fonts/noto-sans-latin-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------------------------------------------------------------------------
   Metric-matched fallbacks, so the webfont swap does not move the page.

   `font-display: swap` paints a fallback first and swaps when Noto Sans
   arrives. If the two fonts have different metrics the whole layout reflows at
   that moment — measured on this page, one shift of 0.139 at 167ms, which moved
   the header's search field 428px sideways and the hero's whole reading column
   9px up. Chrome's threshold for "good" layout shift is 0.1.

   The fix is to make the fallback occupy exactly the space Noto Sans will.
   Measured in the browser, same string at 100px:

       Noto Sans        3375.3   ascent 107  descent 29
       Helvetica Neue   3245.2   ascent  95  descent 21   -> Noto is 1.0401x wider
       Arial            3224.4   ascent  91  descent 21   -> Noto is 1.0468x wider

   size-adjust stretches the fallback to that width; the ascent and descent
   overrides are Noto's own metrics divided by that same factor, because the
   overrides are relative to the adjusted em.

   These are not new typefaces. They are the fallbacks brand.json already names,
   measured so they stand in without shifting. See INVENTED.md.
   ------------------------------------------------------------------------- */
@font-face {
  font-family: 'Noto Sans metric Helvetica';
  src: local('Helvetica Neue'), local('HelveticaNeue');
  size-adjust: 104.01%;
  ascent-override: 102.87%;
  descent-override: 27.88%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Noto Sans metric Arial';
  src: local('Arial');
  size-adjust: 104.68%;
  ascent-override: 102.22%;
  descent-override: 27.70%;
  line-gap-override: 0%;
}

/* ---------------------------------------------------------------------------
   Fredoka — the DISPLAY face (brand.json typography.display).

   Page 2 of the Complete Brand Identity Kit asks for a bold, rounded, playful
   sans for display and headers and names Fredoka and Baloo as references; it
   does not lock one, so the pick is disclosed in INVENTED.md. Noto Sans is body
   only. Self-hosted variable woff2, latin + latin-ext.

   Cyrillic is on disk (public/fonts/fredoka-cyrillic.woff2) and deliberately not
   declared: nothing on this site is set in Cyrillic in either language, and an
   undeclared subset is a file the browser never fetches.
   ------------------------------------------------------------------------- */
@font-face {
  font-family: 'Fredoka';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/fredoka-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fredoka';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/fonts/fredoka-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
