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

   moores-landscaping-knoxville-tn — brief.md v1, family `quiet-premium`,
   archetype `editorial-stack`. Every value cites brief.md §2/§3/§4/§5/§7.
   Builder fills (brief-silent, flagged rather than silently chosen):
   --color-border (no brief token; derived to clear 3:1 vs bg/surface,
   distinct from decorative-only --color-line); --ease-out/--ease-in-out/
   --duration-slow (house reveal-system names the brief doesn't name;
   alias --ease-standard/--duration-base per "reused site-wide"); --text-h3/
   --text-small (house-required names the brief's clamp table omits;
   --text-h3 interpolated on the brief's own 2-point method, landing at
   --text-h2's floor; --text-small is a plain fixed value for labels/
   footer); --tracking-tight (brief sets tracking only for the eyebrow;
   0em, neutral, rather than the skeleton's unrelated -0.02em default); and
   --layout-gutter (brief §5 states 20px@375/96px@1440 with no named
   breakpoint; stepped at the house 48em).
   ========================================================================== */

:root {

  /* --- Colour (brief §2). Derivation: dossier §4.5 has no real-world brand
     colour (Gap, genuine absence) → local character (East TN
     foothills/Smokies-adjacent working relationship, thin grounding) →
     family norms (quiet-premium: restraint, whitespace, refined serif,
     muted). Rule-4 departure argued and disclosed against Earthadelic's
     warm-earth register, not softened (brief §2). Contrast computed in
     brief §2's table. */

  --scheme: light;

  --color-bg:            #F5F1E6;  /* parchment — ground */
  --color-surface:       #FBFAF4;  /* paper — raised plate, form fields */
  --color-ink:           #1D2119;
  --color-ink-muted:     #4E5648;  /* 6.77:1 vs bg, 7.30:1 vs surface */
  --color-accent:        #1F5C42;  /* DOMINANT — pine, hsl(154.4°,49.6%,24.1%), unwarmed per C2 condition 1 */
  --color-accent-ink:    #FFFFFF;
  --color-line:          #9C7A3C;  /* thin gold rule — DECORATIVE ONLY, never text (3.54:1, decorative-use pass) */

  /* Builder fill — see file header. Clears the 3:1 non-text/UI-component
     floor against both bg (3.13:1) and surface (3.38:1); distinct from
     --color-line, which stays reserved for decoration per brief §2. */
  --color-border:        #98875A;

  --color-focus:          #1F5C42;  /* = accent; 6.97:1 vs bg, 7.53:1 vs surface */
  --color-selection-bg:   #1F5C42;
  --color-selection-ink:  #FFFFFF;

  /* Hero atmosphere stops (brief §2's Builder-added midpoint, naming what
     was previously an implicit two-stop interpolation). Confined to
     .hero__field's own background — no gradient sits behind the eyebrow,
     H1 or CTA at any width (brief §2). */
  --color-atmo-1: #F9F6EE;  /* lightest stop, L 0.9224 */
  --color-atmo-2: #EFE8D6;  /* interpolated midpoint */
  --color-atmo-3: #E8E2CE;  /* darkest stop, L 0.7601 */

  /* One light mode, no dark band on this site beyond the skeleton's own
     preview expiry bar (out of brief scope) — --color-focus-on-band is
     intentionally absent. */


  /* --- Typography (brief §3). Two families, 4 static woff2 instances —
     design-rules §5's ≤4-file ceiling exactly, no headroom. Both OFL 1.1,
     self-hosted, subset to the house declared range (house-tech-spec §8).
     No font-variation-settings on either face (brief §3: "font-weight
     only"). */

  --font-display: 'Cormorant', 'Cormorant Fallback', Georgia, 'Times New Roman', serif;
  --font-body:    'Lora', 'Lora Fallback', Georgia, serif;

  --font-weight-display:     500;  /* Cormorant ships one weight, upright and italic */
  --font-weight-emphasis:    500;  /* italic Cormorant — same numeric weight, italic posture */
  --font-weight-body:        400;
  --font-weight-body-strong: 600;

  /* --- Type scale — fluid via clamp(), computed across its full range
     (brief §3's own table, copied verbatim for the four fluid/fixed rows
     the brief states; --text-h3/--text-small are Builder fills, see file
     header). */

  --text-display: clamp(2.125rem, 1.42rem + 3.0vw, 4.125rem);
  --text-h2:      clamp(1.375rem, 1.10rem + 1.17vw, 2.25rem);
  --text-h3:      clamp(1.125rem, 1.037rem + 0.3756vw, 1.375rem);
  --text-lead:    clamp(1.0625rem, 1.0rem + 0.27vw, 1.375rem);
  --text-body:    1rem;      /* fixed, 16px */
  --text-eyebrow: 0.75rem;   /* fixed, 12px */
  --text-micro:   0.6875rem; /* fixed, 11px */
  --text-small:   0.9375rem; /* fixed, 15px — Builder fill: form labels/hints, footer */

  --leading-tight: 1.08;  /* display — H1, h2 */
  --leading-snug:  1.30;  /* eyebrow, labels */
  --leading-body:  1.65;  /* running body copy */

  --tracking-wide:  0.20em; /* eyebrow, section head-rule labels */
  --tracking-tight: 0em;    /* Builder fill, see file header — neutral, not carried from the skeleton default */

  /* H1 copy container — brief §3: max-width: min(100%, 34rem), deliberately
     rem-based not ch-based. */
  --hero-copy-max: 34rem;


  /* --- Space — house scale, unchanged; brief §4/§5's arithmetic resolves
     entirely to these existing steps. */

  --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 rhythm (brief §4): fixed at every breakpoint, never stepped —
     "the space scale is rem-constant, not fluid." Its only two call sites
     are .section's padding-block and the hero's padding-block-end. */
  --section-gap: var(--space-xl);  /* 64px, fixed */

  /* --- Layout. Container = house default (72rem = 1152px, the hero's own
     max-width, brief §3/§5). Gutter is STEPPED — Builder fill, see file
     header: 20px below 48em, 96px at ≥48em (brief §5's two measured
     point-values). */

  --layout-container: 72rem;
  --layout-measure:   62ch;
  --layout-gutter:    1.25rem;  /* 20px below 48em — 6rem (96px) override at 48em, below */
  --layout-tap-min:   44px;

  /* Header's fixed height (brief §4 section 1: 56px + 1px border-bottom,
     no responsive change), and the term brief §5's sticky-chrome
     arithmetic (44 + 56 + 1 = 101px) measures. */
  --header-height: 3.5rem; /* 56px */

  /* Primary-CTA fluid height (brief §5): two stated outcomes, 44px @375 /
     52px @1440. Interpolated on the same clamp mechanics the brief already
     uses for the type scale. */
  --control-height-primary: clamp(2.75rem, 2.574rem + 0.7512vw, 3.25rem);

  /* --- Radius / shadow / border. Brief §2: "quiet-premium's restraint
     extends to geometry: no rounded corners on the CTA, cards or the badge
     chips; hard edges throughout" and "this direction carries no
     card/box shadow anywhere." */

  --radius-none: 0;
  --radius-sm:   0;
  --radius-md:   0;
  --radius-lg:   0;
  --radius-pill: 0;

  --shadow-none: none;
  --shadow-sm:   none;
  --shadow-md:   none;
  --shadow-lg:   none;

  --border-hairline: 1px;
  --border-thick:    3px;
  --border-style:    solid;

  /* The joined-rule signature's own stroke weight and the field's border
     (brief §7: "Two thin rules (--color-accent, 2px)"). */
  --border-trim: 2px;

  /* --- Motion (brief §7). --ease-standard is the joined-rule signature's
     own easing, reused site-wide for consistency. --ease-out/
     --ease-in-out/--duration-slow are Builder-added aliases the skeleton's
     house reveal system needs by name — see file header. */

  --ease-standard: cubic-bezier(0.22, 0.7, 0.2, 1);
  --ease-out:       cubic-bezier(0.22, 0.7, 0.2, 1);
  --ease-in-out:    cubic-bezier(0.22, 0.7, 0.2, 1);

  --duration-fast:      150ms;
  --duration-base:      300ms;
  --duration-slow:      300ms; /* Builder fill: aliases --duration-base, see file header */
  --duration-signature: 1400ms; /* the partner line's join, once, on load */

  --reveal-shift:   1.25rem;
  --reveal-stagger: 90ms;

  /* Living-hero ambient loops (brief §7): three independent, non-
     synchronised seed-mote drift loops plus one stem-sway loop, all
     confined to the hero. */
  --duration-mote-1:  18s;
  --duration-mote-2:  24s;
  --duration-mote-3:  32s;
  --duration-stem-sway: 12s;

  /* Living-hero ambient element dimensions — Builder fill, sized small and
     decorative, not measured by any brief arithmetic. */
  --mote-size:   0.3125rem; /* 5px */
  --stem-height: 1.875rem;  /* 30px */

  /* Living-hero field — fixed 340px at every breakpoint (brief §5). */
  --hero-field-height: 21.25rem; /* 340px */

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

/* Gutter step at ≥48em (brief §5's two measured point-values; see file
   header for why this is stepped rather than fluid). */
@media (min-width: 48em) {
  :root {
    --layout-gutter: 6rem; /* 96px */
  }
}

/* --------------------------------------------------------------------------
   @font-face — self-hosted woff2, latin subset, static instances only.
   Cormorant: SIL OFL 1.1, Christian Thalmann (Catharsis Fonts). Lora: SIL
   OFL 1.1, Cyreal. Licence text: assets/fonts/OFL.txt. Subset to the house
   declared range, identical on all four faces (house-tech-spec §8; brief
   §3). Coverage gap, measured against the shipped woff2 files: U+2011,
   U+2012, U+2015 and U+2032/U+2033 (Lora only) are in the declared range
   and absent from these source faces — none render in this site's copy
   (only U+00B7 middot and U+2019 curly apostrophe are used, and every face
   carries both).
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Cormorant';
  src: url('../assets/fonts/cormorant-500-latin.woff2') format('woff2');
  font-weight: 500;
  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: 'Cormorant';
  src: url('../assets/fonts/cormorant-500italic-latin.woff2') format('woff2');
  font-weight: 500;
  font-style: italic;
  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: 'Lora';
  src: url('../assets/fonts/lora-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: 'Lora';
  src: url('../assets/fonts/lora-600-latin.woff2') format('woff2');
  font-weight: 600;
  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 §3: "a Builder
   execution step, measured ... against the real shipped woff2 files").
   Donors: Georgia (Cormorant 500 upright, Lora 400), Georgia Italic
   (Cormorant 500 italic), Georgia Bold (Lora 600). size-adjust /
   ascent-override / descent-override / line-gap-override computed from
   the real shipped instances' own OS/2 + hhea metrics (read via
   fontTools) against the capsizecss/metrics project's published Georgia
   reference data (the fontaine algorithm: sizeAdjust = (target.xAvgWidth /
   target.unitsPerEm) / (donor.xAvgWidth / donor.unitsPerEm); each override
   = target metric / (target.unitsPerEm × sizeAdjust)). See README.md for
   the measured inputs. */

@font-face {
  font-family: 'Cormorant Fallback';
  src: local('Georgia');
  font-weight: 500;
  font-style: normal;
  size-adjust: 109.02%;
  ascent-override: 84.76%;
  descent-override: 26.33%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Cormorant Fallback';
  src: local('Georgia Italic'), local('Georgia');
  font-weight: 500;
  font-style: italic;
  size-adjust: 96.57%;
  ascent-override: 95.68%;
  descent-override: 29.72%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Lora Fallback';
  src: local('Georgia');
  font-weight: 400;
  font-style: normal;
  size-adjust: 122.03%;
  ascent-override: 82.44%;
  descent-override: 22.45%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Lora Fallback';
  src: local('Georgia Bold'), local('Georgia');
  font-weight: 600;
  font-style: normal;
  size-adjust: 106.64%;
  ascent-override: 94.33%;
  descent-override: 25.69%;
  line-gap-override: 0%;
}
