/**
 * Self-hosted webfonts.
 *
 * These used to come from fonts.googleapis.com. Two things requested them:
 * this theme's own css2 enqueue (Inter + Barlow Condensed, four weights each)
 * and Divi, which enqueues whatever is set in Theme Options using its OWN
 * weight list -- every weight 100-900 plus every italic. LiteSpeed's "Load
 * Google Fonts Asynchronously" then merged both into one legacy v1 URL, so
 * the homepage pulled 28 files and 612KB from Google.
 *
 * Only latin and latin-ext are kept. unicode-range means a browser fetches
 * latin-ext only if the page actually contains a character in that range, so
 * a normal English page downloads the latin files and nothing else.
 *
 * Inter ships as a variable font -- Google serves one identical file for
 * every weight -- so it is stored once per subset and declared with a
 * "400 700" weight range. Barlow Condensed ships as static instances and
 * needs one file per weight.
 *
 * To regenerate: request the css2 URL for the weights you want with a modern
 * browser User-Agent, keep the latin and latin-ext blocks, download each
 * woff2 into fonts/, and rewrite src to a ROOT-RELATIVE /wp-content/themes/lsfab/fonts/ path -- never ../fonts/, because LiteSpeed combines this sheet into /wp-content/litespeed/css/ and a relative path would then resolve against that directory instead of the theme.
 */

/* Barlow Condensed 400 latin */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-400-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;
}
/* Barlow Condensed 500 latin */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-500-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;
}
/* Barlow Condensed 600 latin */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-600-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;
}
/* Barlow Condensed 700 latin */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-700-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;
}
/* Barlow Condensed 400 latin-ext */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-400-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;
}
/* Barlow Condensed 500 latin-ext */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-500-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;
}
/* Barlow Condensed 600 latin-ext */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-600-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;
}
/* Barlow Condensed 700 latin-ext */
@font-face {
  font-family: 'Barlow Condensed';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/barlow-condensed-700-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;
}
/* Inter 400 700 latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/inter-var-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;
}
/* Inter 400 700 latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/wp-content/themes/lsfab/fonts/inter-var-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;
}

/* ---------------------------------------------------------------------------
   METRIC-MATCHED FALLBACKS  (2026-09-07, SP-04)

   font-display: swap paints every heading and all 78-120 card titles in the
   fallback face first, then reflows the lot when the real face lands. Chrome UX
   put 273 desktop URLs at CLS worse than 0.25 and every one of 380 mobile URLs
   over 2.5s LCP; a 120-title reflow is the shape of both.

   These two faces are Arial (and Liberation Sans, which is metric-compatible)
   re-scaled to Barlow Condensed and to Inter, so the first paint occupies the
   same space the real font will. They sit second in the stacks in style.css.

   The ratios are MEASURED, not guessed: canvas measureText of a 118-character
   sample string in each real face against Arial at the same weight, in Chrome
   on the live site --

       Barlow Condensed 400  0.714    600  0.713    700  0.730
       Inter            400  1.046    600  1.020    700  1.030

   size-adjust is that ratio. The ascent/descent overrides are the real font's
   hhea metrics divided by it (Barlow Condensed: upm 1000, asc 1000, desc -200,
   gap 0. Inter: upm 2048, asc 1984, desc -494, gap 0), read with fontTools off
   the woff2 files in this directory.

   To re-derive after a font change, that is the whole method: measure the
   width ratio in a browser, read the metrics with fontTools, divide.
   ------------------------------------------------------------------------ */
/* SP-33 -- the fallbacks are declared PER WEIGHT.
   ---------------------------------------------------------------------------
   The first version of this block declared one 'Barlow Condensed Fallback' at
   size-adjust: 72% with no font-weight, so one face stood in for both the 600
   and the 700 of a condensed display face whose advance widths differ by 2.4%
   between those weights. Measured on the live page at 100px:

     Barlow Condensed 600   real 4846.3   fallback 4665.8   -3.7%
     Barlow Condensed 700   real 4963.3   fallback 4665.8   -6.0%

   A 6% width error does not sound like a layout problem until it changes a
   WRAP POINT, and on a 240px product card it changes them constantly: with the
   fallback the title "Bead Rolled Firewall / Heater Delete Kit - 67-72 GMC
   Chevy Truck" set two lines at 45px, and with the real font three lines at
   67.5px. Every card in the first row grew 22.5px the moment the webfont
   landed, and the H1 went from one line to two -- 63px at the very top of the
   document, above everything else on the page. That is the desktop CLS.

   The vertical metrics were never the problem: line box height measured 120px
   for both the real face and the fallback, and Inter's fallback was within
   1.2%. Only the condensed display face's WIDTH was out.

   size-adjust here is (real advance width / raw Arial advance width) x 100,
   measured on the same string at the same weight in the live page. Re-measure
   with the snippet in the SP-33 notes if the display face is ever changed.
   ------------------------------------------------------------------------ */
@font-face {
  font-family: 'Barlow Condensed Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica');
  font-weight: 600;
  size-adjust: 71.5%;
  ascent-override: 138.9%;
  descent-override: 27.8%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Barlow Condensed Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica');
  font-weight: 700;
  size-adjust: 73.3%;
  ascent-override: 138.9%;
  descent-override: 27.8%;
  line-gap-override: 0%;
}
/* Everything else that reaches for the display stack -- 400 and 500 body text
   in a heading, Divi's own defaults -- lands here. Sized to the 600, which is
   the lighter of the two weights the theme actually ships. */
@font-face {
  font-family: 'Barlow Condensed Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica');
  font-weight: 100 599;
  size-adjust: 71.5%;
  ascent-override: 138.9%;
  descent-override: 27.8%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Inter Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica');
  font-weight: 400;
  size-adjust: 104.8%;
  ascent-override: 93.6%;
  descent-override: 23.3%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Inter Fallback';
  src: local('Arial'), local('Liberation Sans'), local('Helvetica');
  font-weight: 500 900;
  size-adjust: 103.3%;
  ascent-override: 93.6%;
  descent-override: 23.3%;
  line-gap-override: 0%;
}
