/* ==========================================================================
   tokens.css — the design brief, compiled. Gold Landscaping, Eau Claire WI:
   editorial-modern / new-growth / full-bleed-immersive. Every value below is
   transcribed from the approved brief (§2.9, §3.2, §3.3, §5.2, §8); nothing
   was chosen at build time. THIS FILE IS THE ONLY PLACE RAW VALUES LIVE
   (house-tech-spec §3).
   ========================================================================== */

:root {

  /* --- Colour (brief §3.2) ------------------------------------------------ */

  --scheme: light;                    /* one deliberate mode, design-rules §6 */

  --color-bg:          #F7F3EA;       /* birch-cream */
  --color-surface:     #ECE5D2;       /* = the hero atmosphere's mid stop; reused, not invented */
  --color-ink:         #1C231D;       /* deep ink */
  --color-ink-muted:   #566056;
  --color-accent:      #646F20;       /* new-growth — DOMINANT, hsl(68.3°, 55.2%, 28%) */
  --color-accent-ink:  #FFFFFF;       /* text ON accent */

  /* House-required structural colours */
  --color-border:      #566056;       /* = ink-muted. every hairline and row divider. 5.92:1 vs bg, 5.72:1 vs surface */
  --color-focus:       #646F20;       /* :focus-visible — = accent, 4.94:1 vs bg */
  --color-focus-on-band: #C7D98A;     /* light tint of accent — the one dark band (§VI), 10.54:1 vs band */
  --color-selection-bg:  #646F20;
  --color-selection-ink: #FFFFFF;

  /* Brief-specific — imagery/decorative + one dark band. No further UI role
     exists beyond what is listed here (brief §3.2). */
  --color-band:         #16241A;      /* the one dark trust band. bg-on-band = 14.56:1 */
  --color-atmo-1:       #F9F6EE;      /* hero radial, lightest stop */
  --color-atmo-2:       #ECE5D2;      /* hero radial, mid stop = surface */
  --color-atmo-3:       #DCD3B8;      /* hero radial, darkest stop — reached only BELOW the text block */

  /* --- Typography (brief §2.2, §2.3, §2.9) -------------------------------- */

  --font-display:        'Piazzolla', 'Piazzolla Fallback', Georgia, 'Times New Roman', serif;
  --font-display-italic: 'Piazzolla Italic', 'Piazzolla Italic Fallback', 'Georgia Italic', Georgia, serif;
  --font-body:           'Work Sans', 'Work Sans Fallback', 'Helvetica Neue', Arial, sans-serif;

  --font-weight-body:        400;
  --font-weight-body-strong: 600;
  --font-weight-display:     400;      /* h1 */
  --font-weight-display-head: 500;     /* h3 section heads */

  /* --- Fluid scale (brief §2.9, §2.10) ------------------------------------ */

  --text-display: clamp(2.75rem, 2.310rem + 1.878vw, 4rem);      /* 44px @375 -> 64px @1440 */
  --text-h2:      clamp(1.5rem, 1.280rem + 0.939vw, 2.125rem);   /* 24px @375 -> 34px @1440 */
  --text-lead:    clamp(1.0625rem, 0.952rem + 0.469vw, 1.375rem); /* 17px @375 -> 22px @1440 */
  --text-body:    1rem;        /* 16px, fixed at every width */
  --text-small:   0.875rem;    /* house default — no brief direction; unchanged (see README) */
  --text-eyebrow: 0.6875rem;   /* 11px, fixed at every width */

  --leading-tight:   1.12;  /* h1 — brief's own clarity-slot arithmetic */
  --leading-snug:    1.20;  /* h2/h3 */
  --leading-lead:    1.55;
  --leading-body:    1.62;
  --leading-eyebrow: 1.35;

  --tracking-tight:  -0.02em;  /* house default — no brief direction; unchanged (see README) */
  --tracking-normal: 0em;
  --tracking-wide:   0.11em;   /* eyebrows, kickers — matches the brief exactly */

  /* --- Space — the house scale (brief §3.3) ------------------------------- */

  --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;

  /* design-rules §7.1's ONE inter-section token. TWO call sites, no others:
     .section's padding-block, and the hero's padding-block-end. */
  --section-gap: var(--space-xl);     /* = 64px, at EVERY width (brief §3.3) */

  /* --- Layout -------------------------------------------------------------- */

  --layout-container: 72rem;
  --layout-measure:   62ch;    /* house default — no brief direction; unchanged (see README) */
  --layout-gutter:    clamp(1.25rem, 5vw, 3rem);
  --layout-tap-min:   44px;
  --layout-header-height: calc(var(--layout-tap-min) + var(--space-xs));  /* 56px, a MIN */
  --layout-hero-content: 40rem;  /* 640px content column cap at >=1024px (brief §5.3) */

  /* The hero field's own explicit geometry (brief §5.2), independent of how
     much of it the content block occupies. */
  --hero-field-height: clamp(32.438rem, 29.775rem + 11.362vw, 40rem);  /* 519px -> 640px */

  /* Brief §5.3's exact first-screen arithmetic — bespoke values off the space
     scale, so they live here rather than as inline literals (B2). */
  --hero-gap-h1-cta-sm: 1.125rem;   /* 18px, h1->CTA gap at <1024 */
  --control-height-sm:  3.25rem;    /* 52px — primary control at <1024 */
  --control-height-lg:  3.5rem;     /* 56px — primary control at >=1024 */

  /* The leaf-tipped rule ornament (brief §6.6): 2px rule + 6px leaf glyph. */
  --ornament-rule-length: 3.25rem;  /* 52px, the ornament's stated minimum drawn length */
  --ornament-leaf-size:   0.375rem; /* 6px */

  /* The two ambient satellite leaves (brief §8.2) — sizes and drift are
     execution detail, not measured by brief arithmetic (see README). */
  --satellite-size-a: 1.5rem;    /* 24px */
  --satellite-size-b: 1.125rem;  /* 18px */
  --satellite-drift:  0.25rem;   /* 4px, sway keyframe vertical drift */

  /* The reserved gallery plate (brief §6.1) and the trust band's decorative
     accent image — both execution sizing, not brief-measured. */
  --gallery-plate-height: 12rem;  /* 192px */
  --band-accent-width:    12rem;  /* 192px */

  /* --- Radius / shadow / border (brief §3.2) ------------------------------ */

  --radius-none: 0;
  --radius-sm:   3px;                 /* the primary CTA only */
  --radius-md:   6px;   --radius-lg: 16px;   --radius-pill: 999px;  /* house defaults, zero call sites */

  --shadow-none: none;                /* NO SHADOW IS USED ANYWHERE ON THIS SITE */
  --shadow-sm: 0 1px 2px rgb(28 35 29 / 0.06);      /* house defaults, zero call sites */
  --shadow-md: 0 6px 24px rgb(28 35 29 / 0.09);
  --shadow-lg: 0 24px 60px rgb(28 35 29 / 0.14);

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

  /* --- Motion (brief §8) --------------------------------------------------- */

  --duration-fast:      140ms;   /* focus/hover transitions */
  --duration-base:      320ms;   /* the scroll reveal */
  --duration-signature: 900ms;   /* the stem's one-time grow-and-unfurl */
  --duration-slow:      var(--duration-base);  /* house alias consumed by base.css's reveal system */

  --ease-standard: cubic-bezier(.2, .6, .2, 1);
  --ease-out:      var(--ease-standard);   /* house alias — one easing curve on this site */
  --ease-in-out:   var(--ease-standard);

  --loop-leaf-a: 8s;   /* first ambient satellite leaf */
  --loop-leaf-b: 11s;  /* second ambient satellite leaf, independent — 8 and 11 share no common factor */

  --reveal-shift:   0.75rem;  /* 12px, brief §8.1 */
  --reveal-stagger: 60ms;     /* brief §8.1, staggered within a group, max 4 elements */

  /* --- Z layers ------------------------------------------------------------ */
  --z-field:      0;
  --z-atmosphere: 1;
  --z-content:    2;
  --z-header:     100;
  --z-skip-link:  300;
}

/* --------------------------------------------------------------------------
   @font-face — self-hosted woff2 only, subset to house-tech-spec §8's
   declared safe range (brief §2.5). Three files, two families (brief §2.2):

     1. piazzolla-roman-variable.woff2 — Piazzolla Roman, variable
        wght 400-500, opsz 8-30. Carries the h1 (400) and every h3 (500).
     2. piazzolla-italic-400.woff2 — Piazzolla Italic, static, wght 400 only,
        opsz pinned at 30 (its one display value). Renders exactly one word,
        once, in the hero h1.
     3. work-sans-variable.woff2 — Work Sans, variable wght 400-600. Carries
        body copy, eyebrow, facts line, service/season row labels, CTA label.

   Licences: SIL Open Font License 1.1 for both families (assets/fonts/OFL-*.txt).
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Piazzolla';
  src: url('../assets/fonts/piazzolla-roman-variable.woff2') format('woff2');
  font-weight: 400 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: 'Piazzolla Italic';
  src: url('../assets/fonts/piazzolla-italic-400.woff2') format('woff2');
  font-weight: 400;
  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: 'Work Sans';
  src: url('../assets/fonts/work-sans-variable.woff2') format('woff2');
  font-weight: 400 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 (brief §2.4) — MEASURED, not guessed, per
   scripts/font-metrics.mjs (the fontaine algorithm). Georgia and Helvetica
   Neue are not installed in this build environment and are not
   redistributable, so the MEASUREMENT DONOR (never the shipped `src`, which
   still names the brief's own local() faces first) is the nearest open
   metric twin: Gelasio (Google's own open metric-compatible Georgia clone)
   for both Piazzolla faces; Liberation Sans (Arial's own metric-compatible
   clone) for Work Sans. Four measured numbers per face, recorded here and in
   README.md. Acceptance test: Lighthouse CLS reads 0.000.
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Piazzolla Fallback';
  src: local('Georgia'), local('Gelasio');
  font-weight: 400 500;
  font-style: normal;
  size-adjust: 93.36%;
  ascent-override: 118.89%;
  descent-override: 33.2%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Piazzolla Italic Fallback';
  src: local('Georgia Italic'), local('Gelasio Italic');
  font-weight: 400;
  font-style: italic;
  size-adjust: 86.72%;
  ascent-override: 128%;
  descent-override: 35.75%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Work Sans Fallback';
  src: local('Helvetica Neue'), local('Liberation Sans'), local('Arial');
  font-weight: 400 600;
  font-style: normal;
  size-adjust: 113.41%;
  ascent-override: 82%;
  descent-override: 21.43%;
  line-gap-override: 0%;
}
