/* ============================================================
   Self-hosted fonts — served from the same origin, no DNS/TLS
   round-trip to fonts.googleapis.com or fonts.gstatic.com.
   Only latin + latin-ext subsets are included; this covers all
   English, Western-European, and most accented characters used
   on a Houston-market real estate site.

   CALIBRATED FALLBACKS (defined before the real fonts so the
   cascade resolves them first while the woff2 files are in-flight)
   ============================================================

   How these eliminate CLS:
   ─────────────────────────────────────────────────────────────
   font-display: optional means the browser uses the font only if
   it loads within the very short block period (~100 ms).  If it
   doesn't arrive in time, the fallback is used for the whole
   session — with no late swap and therefore zero CLS.  Because
   both fonts are <link rel="preload">'d in index.html they nearly
   always arrive within that window on normal connections.

   ascent-override / descent-override / line-gap-override set the
   line-box metrics of the FALLBACK font to exactly match the web
   font, so if the fallback IS used, text layout is identical.

   size-adjust scales glyph widths so that line wrapping is also
   preserved (prevents reflowing text to a different number of
   lines on swap).

   Playfair Display v40 metrics (UPM 1000)
     ascender  890  → ascent-override:  89%
     descender 218  → descent-override: 22%
     lineGap     0  → line-gap-override: 0%
     x-height / cap-height vs Georgia → size-adjust: 97%

   Plus Jakarta Sans v12 metrics (UPM 1000, approx.)
     ascender  792  → ascent-override:  79%
     descender 192  → descent-override: 19%
     lineGap     0  → line-gap-override: 0%
     glyph widths vs Arial → size-adjust: 107%
   ============================================================ */

/* Calibrated fallback for Playfair Display — uses Georgia. */
@font-face {
  font-family: 'Playfair Display Fallback';
  src: local('Georgia'), local('Georgia-Regular'), local('Times New Roman');
  size-adjust: 97%;
  ascent-override: 89%;
  descent-override: 22%;
  line-gap-override: 0%;
}

/* Calibrated fallback for Plus Jakarta Sans — uses Arial. */
@font-face {
  font-family: 'Plus Jakarta Sans Fallback';
  src: local('Arial'), local('Helvetica Neue'), local('sans-serif');
  size-adjust: 107%;
  ascent-override: 79%;
  descent-override: 19%;
  line-gap-override: 0%;
}

/* Playfair Display — variable font (covers wght 400–700) */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400 700;
  font-display: optional;
  src: url('./playfair-display-latin-ext.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: 'Playfair Display';
  font-style: normal;
  font-weight: 400 700;
  font-display: optional;
  src: url('./playfair-display-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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}

/* Plus Jakarta Sans — variable font (covers wght 300–700) */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: optional;
  src: url('./plus-jakarta-sans-latin-ext.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 300 700;
  font-display: optional;
  src: url('./plus-jakarta-sans-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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
                 U+FEFF, U+FFFD;
}
