/* ============================================================
   The Longevity Report — Webfonts
   Direction A · "Quiet Authority"
   ------------------------------------------------------------
   All three families are Google Fonts (no custom binaries).
   Consumers get the @font-face rules via this Google-hosted
   import. If you need fully self-hosted files, download the
   families below and replace this import with local @font-face.

     · Newsreader     — display / headline serif (optical size)
     · Libre Franklin — body / UI sans
     · Spline Sans Mono — eyebrows, labels, data, code
   ============================================================ */

@import url("https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,450;0,6..72,500;0,6..72,600;0,6..72,700;1,6..72,400;1,6..72,500&family=Libre+Franklin:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&family=Spline+Sans+Mono:wght@400;500;600&display=swap");

/* ============================================================
   The Longevity Report — Typography tokens
   Newsreader (display serif) · Libre Franklin (body sans)
   Spline Sans Mono (labels / data)

   Audience is 50–70: type runs LARGE and high-contrast.
   Base body size is 19px; never set article body below 18px.
   ============================================================ */

:root {
  /* ---- Families ---- */
  --font-display: "Newsreader", Georgia, "Times New Roman", serif;
  --font-sans: "Libre Franklin", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "Spline Sans Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* ---- Weights ---- */
  --w-regular: 400;
  --w-medium: 500;
  --w-semibold: 600;
  --w-bold: 700;
  --w-black: 800;

  /* ---- Display / headline scale (serif) ---- */
  --fs-display:   clamp(40px, 6vw, 64px);   /* hero advertorial headline */
  --fs-h1:        clamp(33px, 4.4vw, 46px);
  --fs-h2:        clamp(27px, 3vw, 34px);
  --fs-h3:        24px;
  --fs-h4:        21px;

  /* ---- Body / UI scale ---- */
  --fs-lede:      22px;   /* dek under headline */
  --fs-body-lg:   20px;   /* primary article body */
  --fs-body:      19px;
  --fs-body-sm:   17px;
  --fs-caption:   15px;
  --fs-fine:      13px;   /* disclaimers, legal */

  /* ---- Eyebrow / label (mono) ---- */
  --fs-eyebrow:   13px;
  --fs-label:     11px;

  /* ---- Line heights ---- */
  --lh-tight:   1.04;   /* large serif headlines */
  --lh-snug:    1.18;   /* sub-heads */
  --lh-body:    1.62;   /* article body — generous for 50+ */
  --lh-ui:      1.4;

  /* ---- Letter-spacing ---- */
  --ls-display: -0.02em;
  --ls-head:    -0.012em;
  --ls-body:    0;
  --ls-eyebrow: 0.14em;   /* uppercase mono eyebrows */
  --ls-label:   0.16em;

  /* ---- Measure (line length) ---- */
  --measure: 64ch;        /* article column */
  --measure-narrow: 38ch; /* pull-quotes, captions */
}
