/* Hearth vendor faces — the eleven curated families, self-hosted.
 * ─────────────────────────────────────────────────────────────────────────────
 * ⚠️ THE CSS FAMILY NAME IS THE theme_faces.key, DELIBERATELY. `bebas_neue`,
 * not "Bebas Neue". DO NOT "tidy" these into display names.
 *
 * The resolved theme returns a KEY (`display_face: "bebas_neue"`), and the page
 * sets it straight into a custom property. If the CSS family were the human name
 * there would have to be a key→family map somewhere, and that map would be a
 * second statement of `theme_faces` living in a file that can drift from the
 * table. Naming the face after the key removes the mapping problem rather than
 * solving it: `theme_faces.key` is the single identifier end to end, and a face
 * added to the table needs one entry here and no code change anywhere.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * ⚠️ ALL ELEVEN ARE DECLARED HERE AND THAT DOES NOT COST ELEVEN DOWNLOADS.
 * A browser fetches a font file only when rendered text actually references the
 * family. A vendor's page references two — their display face and their label
 * face — so two families download and the other nine are never requested. That
 * is why this is one static stylesheet rather than a runtime injection: there is
 * no conditional loading to get wrong, no decision to make at render time, and
 * no extra request to discover which faces are needed.
 *
 * ⚠️ SELF-HOSTED SO A CUSTOMER'S IP NEVER REACHES GOOGLE. This is not a
 * performance change — the bytes are the same bytes. A customer ordering from a
 * café should not have their IP address sent to a third party because their
 * vendor picked a slab serif. Hearth_Vendor_Theme_Settings.md's open question 1
 * preferred this and Phase 2d settled it. ⚠️ DO NOT reintroduce a
 * fonts.googleapis.com link for "just the two defaults" — that keeps both the
 * dependency and the leak for no benefit, which is the option that was rejected.
 *
 * ─────────────────────────────────────────────────────────────────────────────
 * WEIGHTS MATCH WHAT THE PAGES ACTUALLY RENDER: 400, 500 and 600 as the base.
 * A "regular and bold" set would have carried a weight the CSS never asks for
 * while leaving 500 and 600 to be synthesised. Exceptions, each for a stated
 * reason:
 *   arvo        400 + 700 — it HAS no 500/600, so 700 gives the browser a real
 *                           bold to snap to instead of faking one
 *   figtree     + 700     — ⚠️ for order.html, NOT vendor.html. See its rule
 *                           below: the ordering page sets 700–950 on thirty-one
 *                           rules, and they are its loudest text.
 *   caveat      400       — accent role: one decorative line, so extra weights
 *   hurricane   400         are pure waste. Caveat at three weights was 218KB.
 *   bebas_neue  400       — single-weight families upstream
 *   young_serif 400
 *
 * ⚠️ THE TWO PAGES DIFFER AND THE SET IS THE UNION, NOT vendor.html's LIST.
 * vendor.html renders nothing above 600; order.html does. Adding a weight here
 * is a file some customer may download, so add one only when a rule asks for it
 * — and check BOTH pages before concluding a weight is unused.
 *
 * ⚠️ CORMORANT ITALIC 400 IS REQUIRED AND MUST NOT BE TRIMMED. vendor.html:610
 * sets `font-family:var(--display); font-style:italic; font-weight:400` on the
 * rhythm list's <em>. Without the real italic the browser synthesises a slanted
 * upright, which looks plausible and is wrong — the kind of thing no review
 * catches.
 *
 * SOURCE AND LICENCE. Each file is the `latin` subset Google Fonts serves, taken
 * from fonts.gstatic.com. All eleven families are SIL Open Font License 1.1; the
 * licence and every copyright line are in assets/fonts/LICENSES.md, which must
 * travel with these files.
 *
 * Latin covers U+0000–00FF plus general punctuation, so £, É, curly quotes, the
 * dashes and € are all present.
 */

/* cormorant_garamond — 4 faces */
@font-face {
  font-family: "cormorant_garamond";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/cormorant_garamond-400.woff2") format("woff2");
}
@font-face {
  font-family: "cormorant_garamond";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fonts/cormorant_garamond-500.woff2") format("woff2");
}
@font-face {
  font-family: "cormorant_garamond";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fonts/cormorant_garamond-600.woff2") format("woff2");
}
@font-face {
  font-family: "cormorant_garamond";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/cormorant_garamond-italic.woff2") format("woff2");
}

/* figtree — 3 faces */
@font-face {
  font-family: "figtree";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/figtree-400.woff2") format("woff2");
}
@font-face {
  font-family: "figtree";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fonts/figtree-500.woff2") format("woff2");
}
@font-face {
  font-family: "figtree";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fonts/figtree-600.woff2") format("woff2");
}
/* ⚠️ 700 EXISTS FOR FIGTREE ALONE, AND IT IS order.html THAT NEEDS IT.
   Everywhere else on the platform the heaviest weight rendered is 600 — that is
   what vendor.html uses and why the other ten families stop there. The ordering
   page is different: it sets 700 to 950 on THIRTY-ONE rules, and they are the
   loudest text it has — prices, the basket total, the drop title, the vendor
   name. Shipping without a real 700 would hand every one of them to synthetic
   emboldening on the page that takes money.
   Figtree only. Do not "complete the set" by adding 700 to the other ten: each
   extra weight is a file a customer may download, and nothing renders them. */
@font-face {
  font-family: "figtree";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("./fonts/figtree-700.woff2") format("woff2");
}

/* arvo — 2 faces */
@font-face {
  font-family: "arvo";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/arvo-400.woff2") format("woff2");
}
@font-face {
  font-family: "arvo";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("./fonts/arvo-700.woff2") format("woff2");
}

/* bebas_neue — 1 face */
@font-face {
  font-family: "bebas_neue";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/bebas_neue-400.woff2") format("woff2");
}

/* caveat — 1 face */
@font-face {
  font-family: "caveat";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/caveat-400.woff2") format("woff2");
}

/* hurricane — 1 face */
@font-face {
  font-family: "hurricane";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/hurricane-400.woff2") format("woff2");
}

/* oswald — 3 faces */
@font-face {
  font-family: "oswald";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/oswald-400.woff2") format("woff2");
}
@font-face {
  font-family: "oswald";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fonts/oswald-500.woff2") format("woff2");
}
@font-face {
  font-family: "oswald";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fonts/oswald-600.woff2") format("woff2");
}

/* playfair_display — 3 faces */
@font-face {
  font-family: "playfair_display";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/playfair_display-400.woff2") format("woff2");
}
@font-face {
  font-family: "playfair_display";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fonts/playfair_display-500.woff2") format("woff2");
}
@font-face {
  font-family: "playfair_display";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fonts/playfair_display-600.woff2") format("woff2");
}

/* quicksand — 3 faces */
@font-face {
  font-family: "quicksand";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/quicksand-400.woff2") format("woff2");
}
@font-face {
  font-family: "quicksand";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fonts/quicksand-500.woff2") format("woff2");
}
@font-face {
  font-family: "quicksand";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fonts/quicksand-600.woff2") format("woff2");
}

/* young_serif — 1 face */
@font-face {
  font-family: "young_serif";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/young_serif-400.woff2") format("woff2");
}

/* zilla_slab — 3 faces */
@font-face {
  font-family: "zilla_slab";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("./fonts/zilla_slab-400.woff2") format("woff2");
}
@font-face {
  font-family: "zilla_slab";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("./fonts/zilla_slab-500.woff2") format("woff2");
}
@font-face {
  font-family: "zilla_slab";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("./fonts/zilla_slab-600.woff2") format("woff2");
}
