/*
  Warm Editorial Authority — brand tokens (set 2026-07-06, supersedes the earlier
  "Olive Grove" sage/gold system referenced in some older project docs).

  Three typographic roles from two self-hosted families:
    - Display serif (headings)      -> Playfair Display, variable weight 400-700
    - Clean sans serif (utility)    -> Lato, weights 400/700
    - Italic editorial serif (one   -> Playfair Display Italic, reserved for a single
      pull-quote-style callout per view)   standout insight per view, not for body text

  Sans-serif choice: the brief offered Inter/Avenir/Montserrat/Lato. Inter specifically
  is flagged by this project's design-review tooling as one of a handful of faces so
  common in AI-generated UIs it reads as generic by default — picked Lato instead
  (still on the approved list) for a less template-y, warmer humanist feel alongside
  the serif headings.

  Self-hosted from site/assets/fonts/ — no external font CDN request at runtime.
*/

@font-face {
  font-family: "Playfair Display";
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url("../assets/fonts/PlayfairDisplay-Variable.woff2") format("woff2");
}

@font-face {
  font-family: "Playfair Display";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/PlayfairDisplay-Italic.woff2") format("woff2");
}

@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../assets/fonts/Lato-Regular.woff2") format("woff2");
}

@font-face {
  font-family: "Lato";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../assets/fonts/Lato-Bold.woff2") format("woff2");
}

:root {
  /* Palette */
  --navy: #002b55;         /* primary — authority, major anchors */
  --sienna: #b94717;       /* secondary — CTAs, emphasis, hit-rate highlights */
  --parchment: #f7e9d3;    /* page background */
  --taupe: #8a7b68;        /* supporting neutral */
  --gold: #c8953f;         /* accent — used sparingly, never as a large fill */
  --charcoal: #27313d;     /* body text */
  --cream: #fff8ec;        /* card backgrounds */

  /* Semantic aliases so components never reference raw palette names directly */
  --color-bg: var(--parchment);
  --color-surface: var(--cream);
  --color-text: var(--charcoal);
  --color-heading: var(--navy);
  --color-primary: var(--navy);
  --color-accent: var(--sienna);
  --color-accent-subtle: var(--gold);
  --color-neutral: var(--taupe);
  --color-border: color-mix(in srgb, var(--navy) 15%, transparent);
  --color-positive: #4b6b3f;   /* muted olive-green, used ONLY for hit-rate "beat median" ticks — not a brand primary */
  --color-stale: #a13d2c;      /* alert banners — session-expired / stale-data */

  /* Typography */
  --font-display: "Playfair Display", Georgia, serif;
  --font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;

  --size-display: clamp(1.75rem, 1.4rem + 1.6vw, 2.75rem);
  --size-heading: clamp(1.25rem, 1.1rem + 0.6vw, 1.6rem);
  --size-body: 1rem;
  --size-label: 0.8125rem;
  --size-pullquote: clamp(1.1rem, 1rem + 0.5vw, 1.4rem);

  /* Layout */
  --radius-card: 14px;
  --radius-pill: 999px;
  --space-section: clamp(2.5rem, 2rem + 2vw, 4rem);
  --space-card-padding: 1.5rem;
  --max-content-width: 1180px;

  --shadow-card: 0 1px 2px rgba(39, 49, 61, 0.06), 0 4px 16px rgba(39, 49, 61, 0.05);
}
