/* =============================================================================
   SWB BRAND DEFAULTS — make the *default* rendering on-brand.
   Loaded BEFORE blocks.css (tokens → defaults → block components).

   Purpose: an SWB page should be hard to get wrong, not just possible to get
   right. Any heading/paragraph/link inside an SWB page is brand-correct even
   with NO class applied — so a forgotten `.swb-heading` can't ship a bold,
   black, theme-default H1. Block component classes (blocks.css) always win.

   KEY TECHNIQUE: the scope is wrapped in :where(), which contributes ZERO
   specificity. So these rules are a true default floor (specificity 0,0,1) —
   any component class (.swb-heading, .swb-hero__headline, …) overrides them,
   while unclassed elements still fall through to brand-correct values.

   Everything references brand tokens from swb-brand/brand-tokens.css.
   No raw hex. No gradients. (brand-guide §02/§03/§06/§07)
   ============================================================================= */

/* Wrapper-level inherited defaults (weak; descendant rules override freely). */
.swb-full-width {
  /* Heading weight: GSF 500, NOT 700. Matches the live homepage H1 and the
     standing directive "H1 should not be bold." Size carries hierarchy, not
     weight. Scoped here, so the global --fw-heading token is untouched. */
  --swb-h-weight: 500;
  color: var(--color-ink);                 /* body copy = Ink, never pure black */
  font-family: var(--font-sans);
  font-size: var(--fs-body, 15px);
  line-height: var(--lh-body, 1.6);
  background: var(--color-warm-white);     /* page surface, never pure #fff */
}

/* ---- Headings: on-brand by default (classed or not) ---------------------- */
:where(.swb-full-width) :is(h1, h2, h3, h4, h5, h6) {
  font-family: var(--font-sans);
  font-weight: var(--swb-h-weight);        /* never bold by default */
  color: var(--color-forest);              /* Forest = headlines & structure */
  letter-spacing: -.01em;
  line-height: 1.12;
  margin: 0 0 .5em;
}
/* Size scale — hierarchy comes from size, per §03 */
:where(.swb-full-width) h1 { font-size: clamp(40px, 6vw, 72px); line-height: 1.06; }
:where(.swb-full-width) h2 { font-size: clamp(30px, 3.6vw, 44px); }
:where(.swb-full-width) h3 { font-size: clamp(22px, 2.2vw, 28px); }
:where(.swb-full-width) h4 { font-size: 22px; }
:where(.swb-full-width) h5 { font-size: 20px; }
:where(.swb-full-width) h6 { font-size: 18px; }

/* ---- Body + links -------------------------------------------------------- */
:where(.swb-full-width) :is(p, li) { line-height: var(--lh-body, 1.6); }
:where(.swb-full-width) p { max-width: var(--measure-body, 68ch); }   /* §03 measure cap 65–72ch */
:where(.swb-full-width) a { color: var(--color-forest); text-decoration: none; }
:where(.swb-full-width) a:hover { color: var(--color-vibrant); }      /* Vibrant = hovers only (§02) */

/* ---- Caption / figcaption ------------------------------------------------ */
:where(.swb-full-width) figcaption { font-size: var(--fs-caption, 11px); color: var(--color-gray-500); }

/* ---- Images never overflow ----------------------------------------------- */
:where(.swb-full-width) img { max-width: 100%; height: auto; }
