/* public-typography.css — shared type-scale + container widths + body font
   for PUBLIC marketing/legal pages ONLY (home, /pricing, /network,
   /network/join, /about, /terms, /privacy, /nda, /refund-policy). Linked
   ONLY from those pages — never from cabinet.html, network-cabinet.html,
   or the admin panel, which must stay completely unaffected (2026-07-23
   founder directive, reaffirmed 2026-07-24 for the container-width and
   body-font passes).

   Headings are NOT scaled/swapped here (2026-07-23 correction: the founder
   reverted the earlier heading-scale experiment — h1/h2/h3 and heading-
   styled classes keep their original per-page px values and Playfair
   Display). Only body/UI copy and the small-text floor are controlled from
   this one file. */
@import url('https://fonts.googleapis.com/css2?family=Lora:wght@400;500;600&display=swap');

:root {
  /* Body/UI font (2026-07-24): the ONE line to edit to change or revert
     the public-site body font -- everything else in this file/section
     reads from this variable, nothing else needs to change. */
  --pub-body-font: 'Lora', Georgia, serif;

  /* Lora sits visually larger/heavier than Source Sans 3 did at the same
     px size (serif, wider glyphs) -- body dropped 20px -> 19px and line-
     height tightened 1.65 -> 1.6 to compensate, re-checked live after the
     swap (2026-07-24). --pub-small-size is untouched: 17px was already a
     hard floor, not a size tuned around Source Sans 3's metrics. */
  --pub-body-size: 19px;
  --pub-body-lh: 1.6;
  --pub-small-size: 17px; /* floor: captions, footnotes, footer, form labels, eyebrows */

  /* Container widths (2026-07-24): the ONE place every public page's
     content containers read their max-width from — no page defines its
     own number anymore. Two tiers, not one, because a single number can't
     serve both jobs at once:
     --pub-wide-width   — grids/cards/multi-column sections (pricing cards,
                           /network's 3 columns, "How we work" columns, the
                           home page's hero/grant-grid). These benefit from
                           the extra space at 1920px, so they use it fully.
     --pub-prose-width   — long-form/single-column text (legal pages, the
                           about-page story, hero intro bands, forms, CTAs).
                           Expressed in `ch` (character width), which is
                           what makes "text never exceeds ~85-90 characters
                           per line at the CURRENT body size" true by
                           construction rather than a hand-tuned px guess —
                           it scales automatically with --pub-body-size. */
  --pub-wide-width: 1680px;
  --pub-prose-width: 88ch;
}

/* body,* !important is deliberate and safe here, not a shortcut: this file
   is linked ONLY from the 9 public pages (see header comment), so this
   rule structurally cannot reach cabinet.html/network-cabinet.html/admin
   even though those pages share the SAME per-element 'Source Sans 3'
   declarations this is overriding -- there's no per-file font-family
   hunt-and-replace needed, and the heading re-assertion right below
   (same specificity, later source order) keeps Playfair Display safe. */
body, body * {
  font-family: var(--pub-body-font) !important;
}
h1, h2, h3, h4, h5, h6,
h1 *, h2 *, h3 *, h4 *, h5 *, h6 * {
  font-family: 'Playfair Display', Georgia, serif !important;
}

body {
  font-size: var(--pub-body-size);
  line-height: var(--pub-body-lh);
}

@media (max-width: 640px) {
  /* Mobile body is smaller than desktop but never below the 16px floor. */
  body { font-size: 18px; }
}
