/*
 * Self-hosted Lora + Dancing Script.
 *
 * WHY THIS FILE EXISTS
 * Self-hosted rather than loaded from fonts.googleapis.com: Google Fonts is
 * three third-party round trips before text can paint, and Google's CDN sees
 * every visitor's IP.
 *
 * Both are SIL Open Font License, so redistribution is fine.
 *
 * WHY NOT main.scss
 * main.min.css is generated, and rebuilding it means clearing the css-equal
 * gate — which exists because built CSS has shipped stale twice. A standalone
 * always-enqueued stylesheet needs no build step and follows the pattern
 * rs-design-tokens.css already established.
 *
 * COST OF DECLARING BOTH GLOBALLY: none. An @font-face is only a declaration;
 * a browser fetches the file only when a rule actually uses the family. Dancing
 * Script is used solely by the Asana usage-story template, so only those ~10
 * pages ever download it, even though it is declared site-wide.
 *
 * WHAT THIS FIXED BEYOND THE THREE CPT TEMPLATES
 * template-blog-single.php has asked for `Lora` since 2026-07-24 and there was
 * no Lora anywhere in the theme — no file, no @font-face, zero mentions in
 * main.min.css. Every migrated blog post has been rendering its body copy in
 * whatever generic serif the visitor's OS supplies. This file fixes that too.
 *
 * unicode-range values are Google's own latin / latin-ext splits, kept so the
 * ~12KB latin-ext file is fetched only when a page actually needs Polish
 * diacritics.
 */

/* ---------- Lora — body copy (live: 18px / 29.7px / #5D636A) ---------- */
@font-face {
	font-family: 'Lora';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/Lora-400-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: 'Lora';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/Lora-400-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: 'Lora';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/Lora-400-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: 'Lora';
	font-style: italic;
	font-weight: 400;
	font-display: swap;
	src: url('../fonts/Lora-400-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;
}

/* ---------- Dancing Script — usage-story CTA headline only ----------
   Google serves no italic face for this family; live's "700italic" request
   resolves to the same upright file with a synthesised slant, so declaring 700
   normal and letting font-style: italic synthesise reproduces live exactly.

   SUBSET, not Google's latin / latin-ext pair. Since the 01/02/03 markers moved
   to blog-M this family has exactly ONE consumer site-wide — the usage-story CTA
   headline "...and the story continues" — so shipping the full character set was
   39.5KB (25.4 latin + 14.1 latin-ext, and Polish paid for both) to render one
   line of decorative type on five pages.

   Rebuilt from the upstream OFL variable font pinned to wght=700, subset to
   letters + Polish diacritics + basic punctuation: 88 glyphs, 12.9KB, one file,
   no latin-ext round trip on /pl/. Digits, symbols and currency are gone, which
   is safe for a headline but is the reason this is a real constraint rather than
   a free win: a CTA headline containing a DIGIT would fall back to the generic
   `cursive`. Regenerate rather than hand-edit — see tools/build-dancing-script-subset.sh. */
@font-face {
	font-family: 'Dancing Script';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('../fonts/DancingScript-700-normal-subset.woff2?v=3f7bc6f3') format('woff2');
}

/*
 * Article body copy -> Lora, matching live.
 *
 * One rule for all three migrated CPT bodies rather than the same declaration
 * pasted into three template <style> blocks. Deliberately scoped to the body
 * wrappers only: headings stay Montserrat and the page chrome stays
 * HindMadurai, exactly as live has it.
 *
 * These selectors sit in the head, so a template's own inline <style> still
 * wins on source order if it needs to override a specific element — but only at
 * EQUAL specificity. That caveat is why .rs-vs-body is no longer listed here: the
 * element-qualified rule below is (0,1,1) and out-specified the (0,1,0) base rule
 * in the rs-article-body mixin (config/_article.scss), so the shared article-body set
 * could not own the vs body's type the way it owns the blog's. The asana-vs template
 * gets font-family, size, line-height and colour from that mixin now (identical values), and
 * dropping it from this file removes the competing declaration that would
 * otherwise silently win again for any property added here later.
 */
.rs-cs-body,
.rs-aus-body {
	font-family: 'Lora', Georgia, serif;
}

.rs-cs-body p,
.rs-cs-body li,
.rs-aus-body p,
.rs-aus-body li {
	font-family: 'Lora', Georgia, serif;
	font-size: 18px;
	line-height: 1.65;
	color: #5D636A;
}
/*
 * font-size is pinned to 18px on purpose. Without it the usage-story and
 * case-study bodies inherit 20px — the wrappers carry Bootstrap's .fs-5 — which
 * computes to 20px/33px instead of 18px/29.7px. The Asana-vs template pins 18px
 * locally too; this makes all three agree.
 */
