/* ==========================================================================
   tokens.css — the design brief, compiled.

   Every value below is `runs/lbs-junk-removal-lawton-ok/brief.md`, compiled
   into CSS custom properties. Nothing here is improvised (house-tech-spec
   §3, §12); every group cites the brief section it comes from.
   ========================================================================== */

:root {

  /* --- Colour --------------------------------------------------------------
     Brief §3.2. Derivation order (§3.1): no real-world colour to echo
     (dossier §4.5, brand_color omitted), no local scenic motif to draw on
     (dossier §4.5's own disclaimer) — barn-red/parchment is `retro-local`'s
     family norm (design-rules §3), grounded in the trade's own "& Hauling"
     word. Military/Fort Sill deliberately NOT reached for (R11, §3.1). */

  --scheme: light;

  --color-bg:              #F7F0E4;  /* warm parchment — the one ground */
  --color-surface:         #FDF9F0;  /* form fields, reserved-slot plates */
  --color-ink:              #2B1810; /* bark-brown ink */
  --color-ink-muted:        #6B4A3A;

  --color-accent:           #A32F1F; /* DOMINANT — barn-red, sign-painter */
  --color-accent-ink:       #FBF3E7; /* text ON accent fills */

  --color-band:             #2B1810; /* the ONE dark band — reviews section */
  --color-band-ink:         #FBF3E7;
  --color-accent-onband:    #E6D9C6; /* on-dark sibling ONLY — never on light ground */

  --color-border:           #E2D3B8; /* DECORATIVE hairlines only — R2 */
  --color-border-strong:    #6B4A3A; /* WCAG 1.4.11-bound — form-field borders, expiry control edge */

  --color-focus:            #A32F1F; /* == accent; AA vs bg AND surface, brief §4 */
  --color-focus-on-band:    #FBF3E7; /* == accent-ink; measured vs the band, brief §4 */
  --color-selection-bg:     #A32F1F;
  --color-selection-ink:    #FBF3E7;

  /* --radius-sm/md/lg/pill and --shadow-sm/md/lg are deliberately absent —
     see the Radius/Shadow block below. Brief §3.2's own note. */


  /* --- Typography ------------------------------------------------------
     Brief §2. Ultra (display, 400 only) + Karla (body, 400/700). Both named
     in design-rules §5's retro-local pool; neither hard-banned nor
     watch-listed. emphasis_font: null. */

  --font-display:     'Ultra', 'Ultra Fallback', Georgia, 'Times New Roman', serif;
  --font-body:        'Karla', 'Karla Fallback', 'Segoe UI', Arial, sans-serif;
  --font-body-strong: 'Karla', 'Karla Bold Fallback', 'Segoe UI', Arial, sans-serif;

  --font-weight-display: 400;
  --font-weight-body: 400;
  --font-weight-body-strong: 700;

  /* --- Type scale — brief §2.7, computed across its range ---------------- */

  --text-hero:    clamp(2rem, 8.5vw, 3.75rem);
  --text-h2:      clamp(1.5rem, 4vw, 2.25rem);
  --text-lead:    clamp(1rem, 1.6vw, 1.125rem);
  --text-body:    clamp(0.9375rem, 1.2vw, 1.0625rem);
  --text-small:   0.8125rem;
  --text-eyebrow: 0.75rem;

  --leading-tight: 1.08; --leading-snug: 1.25; --leading-body: 1.6; --leading-caps: 1.45;
  --tracking-display: 0em; --tracking-normal: 0em; --tracking-caps: 0.14em;

  /* --- Space -------------------------------------------------------------- */

  --space-3xs: 0.25rem; --space-2xs: 0.5rem; --space-xs: 0.75rem;
  --space-sm:  1rem;    --space-md:  1.5rem; --space-lg: 2.5rem;
  --space-xl:  4rem;    --space-2xl: 6rem;   --space-3xl: 9rem;

  --section-gap: var(--space-xl);   /* = 64px FIXED at every width — brief §5.5 */

  /* --- Layout — brief §3.2/§5.1-§5.2 -------------------------------------- */

  --layout-container: 72rem;             /* the OUTER box, 1152px */
  --layout-gutter:    1rem;              /* → 2.5rem at ≥48rem, applied INSIDE the container */
  --layout-measure:   38rem;             /* prose cap, 608px */
  --h1-max:           40rem;             /* the display column, 640px */
  --layout-tap-min:   44px;
  --hero-field-ratio: 3 / 2;             /* SAME at every width — brief §5.2 */
  --hero-field-max:   40rem;             /* 640px — the field's contained max-width at ≥48rem */
  --hero-pad-top:     var(--space-sm);   /* 16px <48rem → 64px (--space-xl) ≥48rem — brief §5.2 */
  --hero-cta-min-width: 16.25rem;        /* 260px — brief §6.2, the primary control's inline-block min at ≥48rem */
  --figure-max-width: 20rem;             /* 320px — the contained width of the three section-foot images (slots 2-4, brief §7.2), a single-column supporting accent, never full-bleed like the hero field */

  /* --- Ornament, radius, shadow ------------------------------------------- */

  --rule-seam:       3px;                /* the painted seam — never thins, never grows, brief §5.4 */
  --border-hairline: 1px; --border-style: solid;
  --border-thick: 3px;                   /* base.css's :focus-visible ring width — house-required, matches the painted seam's own weight (brief §5.4) */
  --radius-none:     0;                  /* the only radius on this site — brief §3.2 */
  --shadow-none:     none;               /* the only shadow token — brief §3.2 */

  /* --- Motion — brief §8 --------------------------------------------------- */

  --duration-fast: 140ms; --duration-base: 320ms; --duration-slow: 520ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --reveal-shift: 0.75rem; --reveal-stagger: 70ms;

  /* --- Z layers ------------------------------------------------------------ */
  --z-base: 0; --z-header: 100; --z-nav-panel: 200; --z-skip-link: 300;
}

/* Declared breakpoint — brief §5.2's table: the gutter is 16px below 48rem
   and 40px at 48rem and above; the hero's own top padding is 16px
   (--space-sm) below 48rem and 64px (--space-xl) at 48rem and above. No
   other breakpoint appears in this file or in site.css. */
@media (min-width: 48rem) {
  :root {
    --layout-gutter: 2.5rem;
    --hero-pad-top:  var(--space-xl);
  }
}

/* --------------------------------------------------------------------------
   @font-face — self-hosted woff2, latin subset, static instances only.
   Ultra: Apache License 2.0, Astigmatic/Brian J. Bonislawsky (Google's own
   font source repo, github.com/google/fonts/apache/ultra, files Ultra under
   Apache 2.0 rather than the brief's stated SIL OFL 1.1 — a mechanical
   licence-text correction, not a font-choice change; the correct text ships
   at assets/fonts/LICENSE-ultra-apache-2.0.txt, which is a strict superset
   of OFL's embedding/self-hosting permissions). Karla: SIL OFL 1.1, The
   Karla Project Authors — assets/fonts/OFL.txt.

   Subset to the house declared range (house-tech-spec §8; brief §2.5),
   identical on all three faces. Measured post-subset: Ultra 11,000 B,
   Karla 400 11,692 B, Karla 700 11,856 B — 34,548 B total, largest face
   11,856 B, both well inside brief §2.3's ≤60 KB/face and ≤100 KB total.

   COVERAGE GAP, all three faces alike (fontTools cmap read against the
   shipped woff2 files): U+2010, U+2011, U+2012, U+2015, U+2032, U+2033 are
   in the house declared range and absent from Ultra and both Karla
   instances alike. None render in this site's copy — the only non-ASCII
   character in use is `·` (U+00B7), which every face carries. */

@font-face {
  font-family: 'Ultra';
  src: url('../assets/fonts/ultra-400-latin.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0020-007E, U+00A0, U+00A9, U+00AE, U+2122, U+00B0, U+00B7, U+00BF,
    U+00C0-00FF, U+2010-2015, U+2018-201A, U+201C-201E, U+2026, U+2032-2033;
}

@font-face {
  font-family: 'Karla';
  src: url('../assets/fonts/karla-400-latin.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0020-007E, U+00A0, U+00A9, U+00AE, U+2122, U+00B0, U+00B7, U+00BF,
    U+00C0-00FF, U+2010-2015, U+2018-201A, U+201C-201E, U+2026, U+2032-2033;
}

@font-face {
  font-family: 'Karla';
  src: url('../assets/fonts/karla-700-latin.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  unicode-range:
    U+0020-007E, U+00A0, U+00A9, U+00AE, U+2122, U+00B0, U+00B7, U+00BF,
    U+00C0-00FF, U+2010-2015, U+2018-201A, U+201C-201E, U+2026, U+2032-2033;
}

/* --- Metrics-matched fallbacks (house-tech-spec §8, brief §2.4). Donors are
   Georgia (Ultra) and Arial (both Karla instances), exactly as the brief's
   own font-face sketch names. size-adjust / ascent-override / descent-override
   / line-gap-override computed with the house's own scripts/font-metrics.mjs
   (the fontaine algorithm: an English-letter-frequency-weighted average
   glyph-advance ratio, never OS/2.xAvgCharWidth, which disagrees with itself
   across font versions and vendors) against Georgia's and Arial's own OS/2 +
   hhea metrics as published by @capsizecss/metrics — the same donor-metric
   source this house used for Ultra/Georgia on
   all-pro-lawn-service-boise-id and poop-busters-clarksville-tn.

   Each fallback also lists Liberation Serif / Liberation Sans as a further
   local() candidate — real metric-compatible clones of Times New
   Roman/Arial — so the override still engages on a host lacking Georgia or
   Arial themselves (the same reasoning eastview-landscaping-huntsville-al
   recorded for its own Karla fallback chain). The override VALUES stay
   tuned to the named Georgia/Arial donors; Liberation is an engagement
   fallback, not a second tuning target. */

@font-face {
  font-family: 'Ultra Fallback';
  src: local('Georgia'), local('Liberation Serif');
  font-weight: 400;
  font-style: normal;
  size-adjust: 140.34%;
  ascent-override: 71.88%;
  descent-override: 19.52%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Karla Fallback';
  src: local('Arial'), local('Liberation Sans');
  font-weight: 400;
  font-style: normal;
  size-adjust: 101.69%;
  ascent-override: 90.18%;
  descent-override: 24.78%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Karla Bold Fallback';
  src: local('Arial Bold'), local('Arial'), local('Liberation Sans Bold'), local('Liberation Sans');
  font-weight: 700;
  font-style: normal;
  size-adjust: 106.26%;
  ascent-override: 86.30%;
  descent-override: 23.72%;
  line-gap-override: 0%;
}
