/* backend/src/main/resources/static/modules_styles/starter_standard/fonts.css */

/* ==============================================
   FONT CONFIGURATION — starter-standard

   Every typeface the two sites can be set in, self-hosted as woff2 in
   fonts/ beside this file. No request leaves the page for a font, so
   nothing in the render path depends on a third party and no external
   service learns who reads the site.

   Why a webfont at all: without one the stack fell through to whatever
   the machine had (-apple-system -> Segoe UI -> Roboto), so the sites had
   no typeface of their own and rendered differently on every visitor's
   machine. Measured before this file existed: headings painted Roboto on
   Linux, code painted Liberation Mono, a Courier clone.

   WHICH one is used is not decided here — that is one line in
   pikiner_sites/components/typography-tuning.css, which the dev
   typography panel rewrites. This file only makes the faces available.

   Six sans families and five monos are declared. A face nobody asks for
   is never downloaded: @font-face is a declaration, not a fetch. They
   are all here so the panel can switch between them with no second step,
   and the set should be pruned to the chosen pair once the choice is
   settled.

   Weights are 400/500/600/700, the four the type roles ask for. A weight
   with no file of its own is synthesised by the browser into a smeared
   approximation, so each set is deliberately complete.

   font-display: swap — text stays readable while the face loads. The
   study pages under pikiner_sites/typography-study/ use `block` instead,
   on purpose: a comparison must not be judged through a fallback.

   Licence and provenance of every file: fonts/LICENSES.md.
   ============================================== */

/* IBM Plex Sans */
@font-face {
  font-family: "IBM Plex Sans";
  src: url("/modules_styles/starter_standard/fonts/plexsans-400-77bc026706571f32f04889dae5e7e5b2.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/modules_styles/starter_standard/fonts/plexsans-500-f7016cd446d2006a17eba99535d1b04e.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/modules_styles/starter_standard/fonts/plexsans-600-196e3cbc5fee6ac2587c6bb72eac7f6b.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "IBM Plex Sans";
  src: url("/modules_styles/starter_standard/fonts/plexsans-700-c277d7b83f8aa43d40ac910e826b6f19.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Inter */
@font-face {
  font-family: Inter;
  src: url("/modules_styles/starter_standard/fonts/inter-400-da03732a27e16543f09d6a6a62b0cdd4.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Inter;
  src: url("/modules_styles/starter_standard/fonts/inter-500-51205681a1ba304816fc629e8989256b.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Inter;
  src: url("/modules_styles/starter_standard/fonts/inter-600-2ede57db1a3a5f41f40467e7a43a1dd4.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Inter;
  src: url("/modules_styles/starter_standard/fonts/inter-700-8ca0a51552960933d0fd52c19175cbe9.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Geist */
@font-face {
  font-family: Geist;
  src: url("/modules_styles/starter_standard/fonts/geistsans-400-c7c6c54039436c3e8be6fd1443d7e609.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Geist;
  src: url("/modules_styles/starter_standard/fonts/geistsans-500-217fdb926a60e6e332cadd548fbf2b67.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Geist;
  src: url("/modules_styles/starter_standard/fonts/geistsans-600-dc87336aed767cc762c34cde7b807390.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Geist;
  src: url("/modules_styles/starter_standard/fonts/geistsans-700-c7d1f89830cfc7b6c69c56ac7d417c1d.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Space Grotesk */
@font-face {
  font-family: "Space Grotesk";
  src: url("/modules_styles/starter_standard/fonts/spacegrotesk-400-1a806675790eb1c83d376bb02292e37c.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Space Grotesk";
  src: url("/modules_styles/starter_standard/fonts/spacegrotesk-500-ab4861869c91f3c339f3a9f0a0d5a0b5.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Space Grotesk";
  src: url("/modules_styles/starter_standard/fonts/spacegrotesk-600-49f2dd2d21322ac241e5c9b34da2121e.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Space Grotesk";
  src: url("/modules_styles/starter_standard/fonts/spacegrotesk-700-f9e147a59a9381b7db65941ceac88e52.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Source Sans 3 */
@font-face {
  font-family: "Source Sans 3";
  src: url("/modules_styles/starter_standard/fonts/sourcesans3-400-27ab01c4cb5013775d870ae8accb1040.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Source Sans 3";
  src: url("/modules_styles/starter_standard/fonts/sourcesans3-500-b3b7577030b9ac608d61004fdd6fd76c.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Source Sans 3";
  src: url("/modules_styles/starter_standard/fonts/sourcesans3-600-9a35cba76edada19c5c0f79f29c41bb3.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "Source Sans 3";
  src: url("/modules_styles/starter_standard/fonts/sourcesans3-700-9b13bd3653e35b13c51d3cc4976e017c.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* Roboto */
@font-face {
  font-family: Roboto;
  src: url("/modules_styles/starter_standard/fonts/roboto-400-4279528ce0e7dc28919e6f8ce5f0eaa5.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Roboto;
  src: url("/modules_styles/starter_standard/fonts/roboto-500-55cfeb5304f00ff33469dc76a3b30758.woff2") format("woff2");
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Roboto;
  src: url("/modules_styles/starter_standard/fonts/roboto-600-6714c03eb3c0e5c644ae3f1ad72f762f.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: Roboto;
  src: url("/modules_styles/starter_standard/fonts/roboto-700-10a07810f28f8ff9a071a88dc2255bbb.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* IBM Plex Mono */
@font-face {
  font-family: "IBM Plex Mono";
  src: url("/modules_styles/starter_standard/fonts/plexmono-400-79936b18df9f734fb6b0a256b20d36b4.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* JetBrains Mono */
@font-face {
  font-family: "JetBrains Mono";
  src: url("/modules_styles/starter_standard/fonts/jetbrainsmono-400-caf0dfde4e448468f09b7bed230206a4.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Geist Mono */
@font-face {
  font-family: "Geist Mono";
  src: url("/modules_styles/starter_standard/fonts/geistmono-400-c9c1cc18a7724e9e6eefeb37ad3dd200.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Source Code Pro */
@font-face {
  font-family: "Source Code Pro";
  src: url("/modules_styles/starter_standard/fonts/sourcecodepro-400-45a9e965b61ba3b6b4697c14ddae442c.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Roboto Mono */
@font-face {
  font-family: "Roboto Mono";
  src: url("/modules_styles/starter_standard/fonts/robotomono-400-a06583dfa488e45b0f0f661257cbee86.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* ==============================================
   WHAT THIS STARTER CAN SET TEXT IN

   The two lists below are the catalogue: the dev typography panel reads
   them to populate its menus, and the store behind the panel reads them
   to reject a family it cannot serve. Declaring a face above and
   forgetting it here makes it invisible rather than broken, which is the
   failure worth having of the two.

   They are ordinary custom properties rather than a JSON file so the
   catalogue cannot drift from the faces it describes: both live in this
   file, and a family is added in one place.
   ============================================== */

:root {
  --typefaces-sans: "IBM Plex Sans", "Inter", "Geist", "Space Grotesk", "Source Sans 3", "Roboto";
  --typefaces-mono: "IBM Plex Mono", "JetBrains Mono", "Geist Mono", "Source Code Pro", "Roboto Mono";
}
