/*
 * HostNest fonts, served from hostnest.app itself (25.9.2026.).
 *
 * Until now the app and every static page loaded DM Sans and Lora from Google
 * Fonts, so each visitor's browser contacted Google. The files below are the
 * same typefaces, copied unchanged from the npm packages
 * @fontsource-variable/dm-sans and @fontsource-variable/lora (both 5.3.0, SIL
 * Open Font License) — src/test/selfHostedFonts.test.ts checks byte for byte
 * that they still match the installed packages.
 *
 * Used by index.html (the app) and by start.html, both calculators and
 * small-hosts/index.html. Family names stay "DM Sans" and "Lora", so no other
 * CSS has to change.
 *
 * Subsets: latin + latin-ext for both (every Latin-script UI language), plus
 * Cyrillic for Lora (Russian headings), as Google served before. The browser
 * only downloads a file when the page uses a character in its unicode-range.
 * Updating a font: reinstall the package, recopy the files, keep the names.
 */

/* ── DM Sans (body) — variable weight and optical size ───────────────────── */
@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-display: swap;
  font-weight: 100 1000;
  src: url(/fonts/dm-sans-latin-ext-opsz-normal.woff2) format("woff2-variations"), url(/fonts/dm-sans-latin-ext-opsz-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: "DM Sans";
  font-style: normal;
  font-display: swap;
  font-weight: 100 1000;
  src: url(/fonts/dm-sans-latin-opsz-normal.woff2) format("woff2-variations"), url(/fonts/dm-sans-latin-opsz-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;
}
@font-face {
  font-family: "DM Sans";
  font-style: italic;
  font-display: swap;
  font-weight: 100 1000;
  src: url(/fonts/dm-sans-latin-ext-opsz-italic.woff2) format("woff2-variations"), url(/fonts/dm-sans-latin-ext-opsz-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: "DM Sans";
  font-style: italic;
  font-display: swap;
  font-weight: 100 1000;
  src: url(/fonts/dm-sans-latin-opsz-italic.woff2) format("woff2-variations"), url(/fonts/dm-sans-latin-opsz-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;
}

/* ── Lora (headings) — variable weight 400–700 ───────────────────────────── */
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-cyrillic-ext-wght-normal.woff2) format("woff2-variations"), url(/fonts/lora-cyrillic-ext-wght-normal.woff2) format("woff2");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-cyrillic-wght-normal.woff2) format("woff2-variations"), url(/fonts/lora-cyrillic-wght-normal.woff2) format("woff2");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face {
  font-family: "Lora";
  font-style: normal;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-latin-ext-wght-normal.woff2) format("woff2-variations"), url(/fonts/lora-latin-ext-wght-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: "Lora";
  font-style: normal;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-latin-wght-normal.woff2) format("woff2-variations"), url(/fonts/lora-latin-wght-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;
}
@font-face {
  font-family: "Lora";
  font-style: italic;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-cyrillic-ext-wght-italic.woff2) format("woff2-variations"), url(/fonts/lora-cyrillic-ext-wght-italic.woff2) format("woff2");
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}
@font-face {
  font-family: "Lora";
  font-style: italic;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-cyrillic-wght-italic.woff2) format("woff2-variations"), url(/fonts/lora-cyrillic-wght-italic.woff2) format("woff2");
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}
@font-face {
  font-family: "Lora";
  font-style: italic;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-latin-ext-wght-italic.woff2) format("woff2-variations"), url(/fonts/lora-latin-ext-wght-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: "Lora";
  font-style: italic;
  font-display: swap;
  font-weight: 400 700;
  src: url(/fonts/lora-latin-wght-italic.woff2) format("woff2-variations"), url(/fonts/lora-latin-wght-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;
}
