/* Rock the Guac — self-hosted fonts (OFL; no CDN).
   Files are Google-Fonts subsets: latin + latin-ext per weight.
   Display = Bricolage Grotesque (chunky contemporary grotesque, weights 600 + 800).
   Body/UI = Plus Jakarta Sans. Hand notes = Caveat. */

/* Bricolage Grotesque — display / poster headings */
@font-face{font-family:'Bricolage Grotesque';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/bricolage-600.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:'Bricolage Grotesque';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/bricolage-600-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:'Bricolage Grotesque';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/bricolage-800.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:'Bricolage Grotesque';font-style:normal;font-weight:800;font-display:swap;src:url(fonts/bricolage-800-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;}

/* Plus Jakarta Sans — body/UI */
@font-face{font-family:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/jakarta.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:'Plus Jakarta Sans';font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/jakarta-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;}

/* ── Metric-matched fallbacks ────────────────────────────────────────────────────────────────
   `font-display:swap` paints the fallback face first and swaps when the real one arrives — and a
   swap between two faces of DIFFERENT metrics reflows every line of text it touches. Measured on
   the gate's Slow 4G link at 1440: the hero headline re-measured 2.1 s in, the copy column grew
   24px, and everything below the hero moved down 49px. CLS 0.1227 — over Google's own 0.1 line,
   and a page that visibly jumps under the reader's eye.

   These two faces are Arial, scaled so it occupies exactly the space the real face will. At 100px
   a 59-character sample measures 2782.5px in Bricolage Grotesque **800** and 2988.3px in Arial
   Bold, so 93.11% would equalise them on paper — measured against the live family it came out
   2.7% narrow, and 98.73% is what actually matches. The ascent/descent overrides put the line box
   where Bricolage's own 93/27 puts it; note they are multiplied BY the size-adjust, so they are
   stated pre-scaled (94.2 × 0.9873 = 93). Plus Jakarta is the same treatment the other way.

   ⚠️ MEASURE AT THE WEIGHT THE SITE ACTUALLY USES. The first cut probed both faces at the canvas
      default of 400 — Bricolage does not ship a 400 here and Arial's regular is much narrower than
      its bold, so the ratio was wrong in both directions at once and the fallback set the headline
      in three lines where the real face takes four. Probe with `800 100px <family>`.

   ★ COST: ZERO BYTES. The obvious alternative — preloading the two above-the-fold woff2 files —
     was measured too, and 66 KB at high priority ahead of the hero photograph moved home's LCP at
     390 from 1.10 s to 1.53 s. A third of the LCP is not a fair price for a shift these overrides
     remove for nothing. The numbers are re-derivable: canvas `measureText` on the same string in
     each face. */
@font-face{font-family:'Bricolage Fallback';src:local('Arial');size-adjust:105.12%;ascent-override:88.47%;descent-override:25.68%;line-gap-override:0%;}
@font-face{font-family:'Jakarta Fallback';src:local('Arial');size-adjust:106%;ascent-override:98.11%;descent-override:20.75%;line-gap-override:0%;}
/* ★ CAVEAT NEEDS ONE TOO, AND IT WAS THE ONE THAT ACTUALLY MATTERED. With the display and body
   faces matched, the home page still moved 70px — and it was not either of them: the hand-written
   scrawls in the four showcase panels fell back to the generic `cursive`, whose line box is
   nothing like Caveat's, and the whole panel row grew. A decorative face still occupies space.
   74% is a hard shrink because Caveat is a narrow hand; the overrides carry its own 96/30. */
@font-face{font-family:'Caveat Fallback';src:local('Arial');size-adjust:74%;ascent-override:129.73%;descent-override:40.54%;line-gap-override:0%;}

/* Caveat — hand-written margin notes ("famously fresh, hand-smashed guac") */
@font-face{font-family:'Caveat';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/caveat.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:'Caveat';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/caveat-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;}
