/* SELF-HOSTED FONTS — Anton (display) + Space Grotesk (text), latin subset.
   Replaces the Google Fonts <link> to kill the FOUT flash and keep CSP/latency local.
   Pair with the two <link rel="preload" as="font"> tags in each page's <head>
   (BEFORE this stylesheet) so the font-display:block window on Anton is ~never hit. */

@font-face{
  font-family:'Space Grotesk';
  font-style:normal;
  font-weight:300 700;
  font-display:swap;
  src:url('/demos/_system/fonts/space-grotesk-var.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:'Anton';
  font-style:normal;
  font-weight:400;
  font-display:block; /* hero wordmark — a short block beats a visible font swap */
  src:url('/demos/_system/fonts/anton-400.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;
}

/* Metric-adjusted local fallback for Anton. If the font-display:block window is ever
   exceeded (slow disk cache, first paint race), this renders in the SAME footprint as
   Anton so there's no reflow when the swap to real Anton lands. Values approximate
   Anton's unusually tall, condensed metrics against Arial's box. */
@font-face{
  font-family:'Anton-fallback';
  src:local('Arial Narrow'),local('Arial');
  size-adjust:112%;
  ascent-override:100%;
  descent-override:30%;
  line-gap-override:0%;
}

/* ===================================================================
   ADDITIVE (Phase 3) — Rondine's two self-hosted register faces.
   The med-spa/photographer faces above (Anton + Space Grotesk) are
   UNTOUCHED. These serve the Parla-register café-pizza-bar demo ONLY.
     - Rondine Display : Fredoka SemiBold (SIL OFL 1.1) — the chunky
       rounded retro display for logotype + section headers. Warm,
       friendly, unmistakably NOT navy-serif-luxe or condensed-mono.
       font-display:block (short hero window) + a metric-matched local
       fallback so the block window never reflows.
     - Rondine Sans : Figtree (SIL OFL 1.1) — a clean geometric sans
       for body + chrome + nav caps. font-display:swap.
   Latin subset. woff2 live at /demos/_system/fonts/rondine-*.woff2.
   =================================================================== */

@font-face{
  font-family:'Rondine Display';
  font-style:normal;
  font-weight:600;
  font-display:block; /* logotype/headers — a short block beats a visible swap */
  src:url('/demos/_system/fonts/rondine-display-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;
}

/* Metric-adjusted local fallback for Rondine Display. Fredoka is a rounded,
   slightly wide, tall-x-height display; Verdana's generous box is the closest
   system stand-in. Tuned so the font-display:block window never causes reflow. */
@font-face{
  font-family:'Rondine Display-fallback';
  src:local('Verdana'),local('Trebuchet MS'),local('Arial');
  size-adjust:98%;
  ascent-override:92%;
  descent-override:24%;
  line-gap-override:0%;
}

@font-face{
  font-family:'Rondine Sans';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/demos/_system/fonts/rondine-sans-400.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:'Rondine Sans';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/demos/_system/fonts/rondine-sans-500.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;
}

/* ADDITIVE (Phase 3, gate round 3 — register shift bubbly -> SQUARE/BRUTALIST).
   Rondine Display Brutal : Archivo Expanded (Black/800, width 125) — a wide,
   squared, heavy grotesque (SIL OFL 1.1), instanced + latin-subset + woff2 at
   build time from the Google Fonts source (NO googleapis link served).
   Chosen over Archivo Black (too plain/normal-width) and Big Shoulders (too
   CONDENSED — that silhouette collides with Odile's Anton). The WIDE axis is the
   structural fingerprint guarantee vs Odile's near-black CONDENSED monochrome.
   Replaces Fredoka ('Rondine Display') everywhere on the restaurant page only;
   med-spa/photographer faces above are UNTOUCHED. font-display:block + a
   metric-matched wide-grotesque fallback so the block window never reflows. */
@font-face{
  font-family:'Rondine Display Brutal';
  font-style:normal;
  font-weight:800;
  font-display:block;
  src:url('/demos/_system/fonts/rondine-display-brutal-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;
}
/* Metric-adjusted local fallback: a wide, heavy grotesque box. Arial Black /
   Impact approximate Archivo Expanded's tall-x-height, wide, heavy footprint so
   the font-display:block window never causes reflow if the swap is slow. */
@font-face{
  font-family:'Rondine Display Brutal-fallback';
  src:local('Arial Black'),local('Impact'),local('Arial');
  size-adjust:100%;
  ascent-override:94%;
  descent-override:24%;
  line-gap-override:0%;
}

/* ===================================================================
   ADDITIVE (Phase 3 — Solenne bold rebuild "NEW-WAVE CLINICAL") ·
   Solenne's self-hosted register face. The med-spa demo re-skin moves
   OFF the retired navy/serif/gold luxe onto a warm-paper + BOLD CLAY
   flat register (the Peachy / Ever/Body / Parsley / Tend generation).
     - Solenne Sans / Solenne Disp : HANKEN GROTESK (SIL OFL 1.1),
       instanced + latin-subset + woff2 at build time from the Google
       Fonts variable source (NO googleapis link served). A warm,
       tall-x-height, slightly-rounded MODERN GROTESK — friendly-modern
       and premium, chunky at the display weights.
   FINGERPRINT LAW (rule 0): unmistakable next to Rondine (WIDE Archivo
   Expanded brutalist), Odile (CONDENSED Anton monochrome), and the
   RETIRED old-Solenne (Playfair SERIF italic). Hanken is a NORMAL-width
   humanist grotesk — no serifs, not condensed, not wide-brutalist — so
   the silhouette diverges from all three by construction.
   Weights: 400 body · 500 chrome/nav-caps · 700 display · 800 hero.
   Scoped by family name; only the med-spa page references these, so the
   sibling demos and _system furniture are byte-for-byte unchanged.
   =================================================================== */
@font-face{
  font-family:'Solenne Sans';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/demos/_system/fonts/solenne-sans-400.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:'Solenne Sans';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/demos/_system/fonts/solenne-sans-500.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:'Solenne Disp';
  font-style:normal;
  font-weight:700;
  font-display:block; /* headers — a short block beats a visible swap */
  src:url('/demos/_system/fonts/solenne-disp-700.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:'Solenne Disp';
  font-style:normal;
  font-weight:800;
  font-display:block; /* hero wordmark/headline — short block over a visible swap */
  src:url('/demos/_system/fonts/solenne-disp-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;
}
/* Metric-adjusted local fallback for Solenne Disp. Hanken is a tall-x-height,
   normal-width humanist grotesk; Helvetica Neue / Arial's box is the closest
   system stand-in. Tuned so the font-display:block window never causes reflow. */
@font-face{
  font-family:'Solenne Disp-fallback';
  src:local('Helvetica Neue'),local('Arial');
  size-adjust:100%;
  ascent-override:96%;
  descent-override:24%;
  line-gap-override:0%;
}

/* ===================================================================
   ADDITIVE (Phase 3 — Solenne re-skin "MIAMI SKIN CLUB", font pass 2026-07-09) ·
   Solenne's self-hosted register faces. The display face is now LORIN
   (Omar's Envato pick), replacing the earlier Sofia Sans — Lorin reads
   even closer to the blessed "MIAMI skin CLUB" wordmark: a bold, warm,
   GEOMETRIC display sans with flat/straight sides and a tall x-height.
     - Solenne Display : LORIN ExtraBold (weight 800, self-hosted woff2,
       NO googleapis/gstatic link served). A bold geometric display sans —
       flat-sided, low-contrast uniform stroke, tall x-height (~.54em),
       narrow-ish caps ('H' advance ~.73em, i.e. slightly condensed, the
       opposite width axis to Rondine's WIDE Archivo Expanded). The
       wordmark + all headline/display face. LORIN Bold (700) is loaded as
       a secondary display weight. Weight 800 passes the squint test at
       display sizes (design-bar legibility rule). Full latin lower/upper/
       digits/&/em-dash/$/%/+ coverage; the few glyphs it lacks (·, →, ✓)
       never appear inside a display-family element on these pages — those
       sit in Solenne UI (Figtree), which has them.
     - Solenne Script : CAVEAT (SIL OFL 1.1), wght=600 — a casual
       handwritten script, ACCENT ONLY (one word in a headline, the
       wordmark flourish), never body. font-display:swap. KEPT — the
       script accent matched the reference and stays.
     - Solenne UI : FIGTREE (SIL OFL 1.1), 400/500 — a clean humanist
       sans for paragraphs, form labels, chrome, and the backend. KEPT.
   The retired Sofia Sans display woff2 (solenne-sans-800.woff2) is
   removed; the earlier Hanken faces above are inert. FINGERPRINT LAW
   (rule 0): the slightly-condensed geometric display sans + SCRIPT accent
   + cream ground + softer CORAL is the divergence from Rondine (WIDE
   Archivo Expanded brutalist, ZERO script) — Solenne's narrower silhouette
   + script accent are the structural separators — and from Odile
   (CONDENSED Anton MONOCHROME, dark stage, no script/colour).
   Scoped by family name; only the med-spa page + its backend reference these.
   =================================================================== */
@font-face{
  font-family:'Solenne Display';
  font-style:normal;
  font-weight:800;
  font-display:block; /* wordmark/headline caps — a short block beats a visible swap */
  src:url('/demos/_system/fonts/solenne-display-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:'Solenne Display';
  font-style:normal;
  font-weight:700;
  font-display:block; /* secondary display weight (Lorin Bold) */
  src:url('/demos/_system/fonts/solenne-display-700.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;
}
/* Metric-adjusted local fallback for Solenne Display. Lorin ExtraBold is a
   slightly-condensed geometric display sans (cap-height ~.70em, x-height
   ~.54em, 'H' advance ~.73em @2048upm); Helvetica Neue / Arial's box is the
   closest system stand-in. Tuned so the font-display:block window never
   causes reflow if the swap is slow. */
@font-face{
  font-family:'Solenne Display-fallback';
  src:local('Helvetica Neue'),local('Arial');
  size-adjust:97%;
  ascent-override:96%;
  descent-override:24%;
  line-gap-override:0%;
}
@font-face{
  font-family:'Solenne Script';
  font-style:normal;
  font-weight:600;
  font-display:swap; /* accent word only — swap is fine, never above-fold-critical */
  src:url('/demos/_system/fonts/solenne-script-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:'Solenne UI';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/demos/_system/fonts/solenne-ui-400.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:'Solenne UI';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/demos/_system/fonts/solenne-ui-500.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;
}

/* Bebas Neue — bold condensed display for the Dunmore Trades demo (latin subset). OFL. */
@font-face{
  font-family:'Bebas Neue';
  font-style:normal;
  font-weight:400;
  font-display:block;
  src:url('/demos/_system/fonts/bebas-neue.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
