/* fonts.css — the ONE self-hosted brand-font source (public/fonts/, latin subset woff2).
 *
 * Single mechanism: no Google Fonts @import anywhere. This file is pulled in by
 * `@import` at the top of tokens.css AND stay.css, so every surface that links
 * either of those gets the faces (app bundle, login, auth-callback,
 * signup-complete, team-invite-invalid, stay/guest pages). The pre-launch gate
 * links it directly. The prebuilt marketing site keeps its OWN identical
 * @font-face copy inline in marketing.css (standalone static bundle) — keep the
 * two in sync if the faces ever change.
 *
 * The brand serif is Playfair Display (variable woff2). DM Sans is variable;
 * Plex Mono / DM Mono / Caslon are static per weight/style. Token roles live in
 * tokens.css — --font-serif is the swap point (--font-heading + --font-narrative
 * track it); --font-mono 'IBM Plex Mono'; --font-body 'DM Sans'.
 *   (stay pages: 'DM Mono')  ·  --font-wordmark 'Libre Caslon Text' for .brand-wordmark
 */

@font-face {
  font-family: 'Playfair Display';
  src: url('/fonts/playfair-display-var.woff2') format('woff2');
  font-weight: 400 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Playfair Display';
  src: url('/fonts/playfair-display-var-italic.woff2') format('woff2');
  font-weight: 400 700; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'DM Sans';
  src: url('/fonts/dm-sans-var.woff2') format('woff2');
  font-weight: 400 600; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'DM Sans';
  src: url('/fonts/dm-sans-var-italic.woff2') format('woff2');
  font-weight: 400 600; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/fonts/ibm-plex-mono-400.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/fonts/ibm-plex-mono-500.woff2') format('woff2');
  font-weight: 500; font-style: normal; font-display: swap;
}
/* Plex Mono 600 — added for the Owner Report's editorial type system, where the
 * payout figure, expense tfoot and section rail all sit at 600. */
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/fonts/ibm-plex-mono-600.woff2') format('woff2');
  font-weight: 600; font-style: normal; font-display: swap;
}

/* ── Newsreader — the Owner Report's editorial serif ────────────────────────
 * DELIBERATELY NOT a brand-wide face. The Owner Report is a DOCUMENT with its
 * own type system, distinct from the app chrome (Playfair/DM Sans), and this
 * is the swap point for it. Variable (200–800) so every weight the specimens
 * use — 400 body, 500 headings, 600 emphasis — comes from one file per style.
 *
 * ⚠️ Self-hosted, latin subset, like every other face here. The specimens link
 * Google Fonts; we must NOT — the puppeteer PDF path
 * (api/owner-reports/pdf.js) prints the live URL, and a CDN face would make
 * the PDF and the page render differently (or not at all, offline). The app
 * uses no Google Fonts anywhere and this does not change that. */
@font-face {
  font-family: 'Newsreader';
  src: url('/fonts/newsreader-var.woff2') format('woff2');
  font-weight: 200 800; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Newsreader';
  src: url('/fonts/newsreader-var-italic.woff2') format('woff2');
  font-weight: 200 800; font-style: italic; font-display: swap;
}
@font-face {
  font-family: 'DM Mono';
  src: url('/fonts/dm-mono-400.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Libre Caslon Text';
  src: url('/fonts/libre-caslon-text-400.woff2') format('woff2');
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: 'Libre Caslon Text';
  src: url('/fonts/libre-caslon-text-400-italic.woff2') format('woff2');
  font-weight: 400; font-style: italic; font-display: swap;
}
