/* ============================================================
   German Power Solutions - Lato, self-hosted
   GENERATED FILE. Do not hand-edit; regenerate (recipe below).

   Why Lato
   --------
   The reference site this build is measured against sets its whole
   page in Lato, declared under the alias custom-lato and self-hosted
   from its child theme. Matching it was a client decision, taken
   knowing that slide 4 of the GPS brand deck names Roboto. If the deck
   wins later, the swap is this file plus --font-head / --font-body in
   tokens.css plus the preload lists in build.sh and inc/enqueue.php.

   Why this file exists
   --------------------
   The site used to pull its family from fonts.googleapis.com. That
   hands every visitor IP address and User-Agent to Google on every
   page load, before any consent is possible. For a German business
   that is a legal exposure, not a performance opinion: LG Munchen I,
   20.01.2022, 3 O 17493/20 held exactly that arrangement to breach
   GDPR Art. 6(1). Serving the binaries ourselves also takes the last
   third-party host off the critical path.

   Licence
   -------
   Lato is (c) Lukasz Dziedzic, SIL Open Font License 1.1.
   Redistribution is allowed as long as the licence travels with the
   files: ../fonts/LICENSE-Lato.txt. Do not drop that file from a
   deployment. The OFL also forbids selling the fonts on their own and
   reserves the right to rename a modified copy - neither of which this
   build does.

   What the binaries actually are
   ------------------------------
   Six files, not two. This is the one real cost of the swap: Roboto
   ships as a VARIABLE font, so a single woff2 per subset covered the
   whole weight axis. Lato is static, so every weight is its own file.
   Three weights across two subsets is six, and each one is a separate
   request the moment a rule asks for it.

   Weights 400, 700 and 900 only. Lato HAS NO 500 AND NO 600 FACE -
   the family goes 100, 300, 400, 700, 900. A declaration asking for
   500 does not synthesise a medium; CSS font matching walks down to
   400 and renders regular. That is why --fw-med in tokens.css is 400
   and not 500. Do not add a 500 rule here pointing at the 400 file:
   it would make every --fw-med site claim an emphasis the typeface
   cannot deliver, and hide the problem instead of stating it.

   unicode-range values are copied verbatim from the upstream subset
   CSS - and are byte-identical to the ones Roboto shipped with, since
   both follow the same latin / latin-ext split. They are what makes
   subsetting work: with latin-ext listed, the browser only fetches
   that second file if the page actually uses a character in its
   range. Retyping them by hand is how a subset quietly stops loading,
   so regenerate rather than edit.

   Subsets: latin and latin-ext only. latin covers German (umlauts and
   ss live in U+00C0-00FF); latin-ext is kept for European names in
   editor-entered copy.

   url() is relative to THIS STYLESHEET, not the page. The sheet sits
   at assets/css/ and the binaries at assets/fonts/, a layout the
   WordPress theme mirrors, so ../fonts/ resolves in both builds.

   Regenerating
   ------------
   1. Pick a version and read its subset CSS for the ranges:
        https://cdn.jsdelivr.net/npm/@fontsource/lato@5.2.5/400.css
   2. Download each weight and subset into ../fonts/ under the names
      used below, and check the first four bytes of each really are
      the ASCII string wOF2.
        .../@fontsource/lato@5.2.5/files/lato-<subset>-<weight>-normal.woff2
   3. Fetch the licence alongside them, to ../fonts/LICENSE-Lato.txt.
   4. Rewrite every src to the local path, keeping font-weight,
      font-style, font-display and unicode-range as served.

   Generated 2026-09-24 from Lato via Fontsource 5.2.5.
   ============================================================ */

/* Regular 400 - latin */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/lato-latin-400-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;
}

/* Regular 400 - latin-ext */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-400-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;
}

/* Bold 700 - latin */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/lato-latin-700-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;
}

/* Bold 700 - latin-ext */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-700-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;
}

/* Black 900 - latin */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("../fonts/lato-latin-900-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;
}

/* Black 900 - latin-ext */
@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("../fonts/lato-latin-ext-900-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;
}
