/* =========================================================================
   gaia-base.css — TYPEFACE AND TOKENS ONLY. Nothing else. No layout, no colour
   applied to any element, no component rules.
   -------------------------------------------------------------------------
   WHY THIS FILE EXISTS
   Three pages on this estate are not built on main.css and never were:
       /savings-estimate/   /info-pack/        -> /css/artefact.css
       /offers/free-datamate/                  -> its own styles.css
   They are print-and-document artefacts and a standalone funnel page, and their
   own stylesheets own their layout. Laying the full gaia-2026.css over them
   would rebind :root variables their CSS also defines, and load order — not
   intent — would decide the result. That is exactly the failure shape that has
   bitten this build four times: a colour set for one ground, applied unscoped.
   So they get this instead: the same Archivo faces and the same design tokens,
   and NOT ONE declaration that targets an element. The estate reads as one
   brand; their layout is untouched.
   -------------------------------------------------------------------------
   ⛔ THE @font-face BLOCK BELOW IS COPIED VERBATIM FROM gaia-2026.css PART 1/1b.
   If you edit one, edit both. /tmp/cmp/fontsync.mjs fails if they drift.
   Load this AFTER the page's own stylesheet — see the font-family assertion at
   the foot of the file, which is the only thing here that touches an element,
   and it sets family alone.
   ========================================================================= */

/* ===== PART 1 — design-system tokens ===================================== */
@import url("ds/fonts.css");        /* Archivo, variable 100–900, Google Fonts */
@import url("ds/colors.css");
@import url("ds/typography.css");
@import url("ds/spacing.css");
@import url("ds/radius.css");
@import url("ds/elevation.css");
@import url("ds/motion.css");
@import url("ds/products.css");

/* ===== PART 1b — Archivo, SELF-HOSTED ===================================
   ⚠️ ds/fonts.css @imports Archivo from fonts.googleapis.com. That import is
   left exactly as published and still runs first — but it CANNOT be the only
   source, and this was caught by measurement, not assumed:

     document.fonts.check('600 48px Archivo')  -> true      ← LIES
     width of a string in "Archivo"            -> 560.38px
     width of the same string in a NONSENSE family name -> 560.38px

   Identical. The text was falling back and every screenshot taken before this
   block was added showed the fallback, not Archivo. fonts.check() returns true
   for a family it has never loaded, so it is worthless as evidence. The only
   honest test is to measure a string against a family name that certainly does
   not exist. Do that, not fonts.check().

   This matters far beyond a sandbox. main.css already argues the case, about
   icon fonts: "An icon font renders empty boxes when a corporate network blocks
   the CDN, which is precisely where a bid manager will open this." A Tier 1
   contractor's network blocking fonts.googleapis.com is the same event, and it
   would silently drop the whole estate back to Helvetica with nothing in the
   page to show it had happened.

   So the same variable faces are served from this repo. Same v25 files Google
   serves, same weight range, same unicode subsets, font-display:swap. Declared
   after the @import, so these win when both are available and cover it when the
   CDN does not answer. Paths are relative to /css/, hence ds/fonts/.
   ======================================================================== */
@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('ds/fonts/archivo-normal-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}
@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('ds/fonts/archivo-normal-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}
@font-face{font-family:'Archivo';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('ds/fonts/archivo-normal-vietnamese.woff2') format('woff2');
  unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}
@font-face{font-family:'Archivo';font-style:italic;font-weight:100 900;font-display:swap;
  src:url('ds/fonts/archivo-italic-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}
@font-face{font-family:'Archivo';font-style:italic;font-weight:100 900;font-display:swap;
  src:url('ds/fonts/archivo-italic-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}
@font-face{font-family:'Archivo';font-style:italic;font-weight:100 900;font-display:swap;
  src:url('ds/fonts/archivo-italic-vietnamese.woff2') format('woff2');
  unicode-range:U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB}

/* ===== THE ONE ASSERTION ==================================================
   Family only. Not size, not weight, not colour, not line-height — those belong
   to the page's own stylesheet and it keeps them. `inherit` on the elements that
   commonly hardcode a family (form controls always do, and older CSS often sets
   one on body and headings) so the cascade carries Archivo down without this
   file having an opinion about any of them.
   ⚠️ Deliberately NOT `* { font-family: inherit }` — that would also hit
   <code>, <pre> and <kbd>, where a monospaced family is the correct choice and
   /savings-estimate/ uses one for its line items.
   ====================================================================== */
html { font-family: 'Archivo', ui-sans-serif, -apple-system, 'Segoe UI', Roboto,
                    Helvetica, Arial, sans-serif; }
body, h1, h2, h3, h4, h5, h6, p, li, dt, dd, th, td, blockquote, figcaption,
label, legend, caption, small, strong, em, a, span, div,
button, input, select, textarea {
  font-family: inherit;
}
