/* Harbourline Cleaning Co. -- typography system.
   TYPOGRAPHY_DECISION_SYSTEM.md chain -> Archetype 3 (MODERN-CUT SERIF FOR DIGITAL
   IDENTITY, TYPOGRAPHY_ARCHETYPES.md): Newsreader carries the headline/brand-carrying
   role (chosen specifically for its modern-cut characteristics -- tall x-height, open
   counters -- so it reads credible/contemporary, not heritage/legal-firm, matching this
   business's "process transparency, no invented history" positioning); Public Sans
   carries every functional/UI role (body, nav, labels, buttons, footer) precisely
   because it was selected for neutrality (Source 09: "designed for government
   services"), which matches BUSINESS.md's plain-spoken/no-hype voice rule directly.
   Full reasoning: TASKS/BP-WEB-TORONTO-01/BUILD/DECISIONS.md.

   BOTH families are self-hosted here as VARIABLE fonts (one physical file each) with
   a font-weight RANGE on the @font-face rule, not one static file per named weight.
   This corrects a defect found in this session's own font pipeline: the lab's fetch
   script (SOURCES/09_typography_application_lab/FONTS/fetch_fonts.py) requested
   several weights of each family from Google's css2 API, but Google served ONE
   variable-font binary for the whole requested weight range -- the script still wrote
   a separate @font-face block per weight, each pointing at a byte-identical copy of
   that same file but declaring a single static font-weight. Verified with fontTools:
   both files carry a real `fvar` wght axis (Newsreader 200-800, Public Sans 100-900),
   so a single-weight @font-face descriptor over a variable source under-uses the file
   correctly used a font-weight range, whereas the buggy version was displaying a stale
   default weight cache regardless of the arbitrary rendering the CSS declares, which
   means font-weight differences (e.g. 500 vs 700) would silently fail to render as
   different weights at all -- the same latent bug is present, unfixed, in v1's own
   Work Sans files (BP-WEB-TESTSITE-01/BUILD/assets/fonts/). Fixed here by declaring
   each @font-face's font-weight as the matching RANGE and shipping one file per
   family: fewer HTTP requests (2 files instead of 5+) AND correct weight rendering. */

@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url('../fonts/newsreader-variable.woff2') format('woff2-variations'), url('../fonts/newsreader-variable.woff2') format('woff2');
}
@font-face {
  font-family: 'Public Sans';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/public-sans-variable.woff2') format('woff2-variations'), url('../fonts/public-sans-variable.woff2') format('woff2');
}

:root {
  --font-display: 'Newsreader', Georgia, 'Times New Roman', serif;
  --font-body: 'Public Sans', 'Segoe UI', system-ui, sans-serif;

  /* Colour tokens -- harbour-teal accent, chosen for a stated reason (the business
     name/positioning reads as Toronto harbour) rather than reused from v1's warm-rust
     palette. Measured against WCAG 2.x contrast math (relative luminance formula),
     not eyeballed -- see DECISIONS.md for every pair's measured ratio. */
  --ink: #1c2430;
  --ink-muted: #566072;
  --hairline: #e3e1da;
  --hairline-strong: #b7bcc4;
  --nav-bg: #ffffff;
  --bg: #faf9f6;
  --hero-bg: #f3f1ec;
  --form-bg: #f3f1ec;

  /* v1's Fixture-A accent (#b5651d) measured 4.34:1 against white text -- under the
     4.5:1 AA threshold for normal text -- and v1's own corrected accent (#a35b1a) is
     a warm rust that has no brand reason to reuse here. This build's accent, #2f5f6b
     (harbour teal), measures 7.07:1 (white text on accent fill) and 6.72:1 (accent
     text on --bg) -- both comfortably clear AA, see DECISIONS.md. */
  --accent: #2f5f6b;
  --accent-ink: #ffffff;

  --h1-weight: 700;
  --h1-size: clamp(2.125rem, 4.6vw + 0.6rem, 3.75rem);
  --h1-size-page: clamp(1.875rem, 3.4vw + 0.6rem, 2.75rem);
  --h1-line-height: 1.14;
  --h1-tracking: -0.005em;

  --h2-weight: 600;
  --h2-size: clamp(1.625rem, 2.6vw + 0.6rem, 2.375rem);
  --h3-weight: 600;

  --brand-weight: 700;
  --nav-weight: 600;
  --btn-weight: 700;
  --label-weight: 600;
  --body-line-height: 1.65;
  --body-size: 1.0625rem;
}
