/* ==========================================================================
   tokens.css — the design brief, compiled.
   Full Circle Land Design, Chattanooga TN.
   Source: runs/full-circle-land-design-chattanooga-tn/brief.md (C3 approved).
   Every value below is stated there. Nothing here was chosen here.
   THIS FILE IS THE ONLY PLACE RAW VALUES LIVE (house-tech-spec §3).
   ========================================================================== */

:root {

  /* --- Colour — brief §2a. Derivation order (design-rules §6): step 1 is
     EMPTY and argued as such (dossier §4.5 — no truck/signage/uniform colour
     found or sampled, logo never extracted, site's own neutral Squarespace
     CSS does not carry the echo default per dossier-schema §3.2); step 2 is
     the Tennessee Valley's own morning mist between the ridges the dossier
     names (valley-haze) and the forested slopes themselves (ridge); step 3
     is family norms (ref-006, clean-clinical). Contrast ratios: brief §2a
     table, reproduced in README. */

  --scheme: light;

  --color-bg: #F8FAF8;                 /* page ground, near-white, green-grey cast */
  --color-surface: #EDF1EC;            /* card/rail ground, pale sage-white */
  --color-ink: #23282A;                /* primary text — 14.21:1 on bg */
  --color-ink-muted: #57625F;          /* secondary text — 6.03:1 on bg */
  --color-accent: #7A8C87;             /* valley-haze — LARGE-TEXT/GRAPHIC ONLY, 3.38:1 on bg.
                                           Never body-size text: clears AA's 3:1 large-text/graphic
                                           floor but not the 4.5:1 body-text floor (brief §2a). Used
                                           only for the hero field atmosphere, the process-rail sticky
                                           wash, and the FAQ marker's resting-state stroke. */
  --color-accent-ink: #FFFFFF;         /* text on accent-deep fill — 8.85:1 */
  --color-accent-deep: #3B4E49;        /* CTA fill, small-text-safe accent, headrule — 8.44:1 on bg */
  --color-ridge: #3E6B4E;              /* anchor green — plan-node motif, rail numerals — 5.86:1 on bg,
                                           5.38:1 on surface. Sparing use only. */

  /* House-required structural colours (consumed by base.css) */
  --color-border: #D3D9D5;             /* = --color-line below; hairlines, field borders */
  --color-focus: #3B4E49;              /* = --color-accent-deep; 8.44:1 vs bg, safe vs surface too */

  /* No dark band, inverted section or dark full-bleed ground anywhere on this
     site (brief §3b — every section is light-ground, `.section` headrule is a
     2px line, never a fill) — --color-focus-on-band is correctly absent. */
  /* --color-focus-on-band: …; */
  --color-selection-bg: #3B4E49;
  --color-selection-ink: #FFFFFF;

  /* Brief-specific colours */
  --color-line: #D3D9D5;               /* hairline borders — rail, service-list, review dividers */
  --color-atmo-1: #EDF1EC;             /* hero field atmosphere gradient, lightest stop (= surface) */
  --color-atmo-2: #DCE4DF;             /* hero field atmosphere gradient, darkest stop */


  /* --- Typography — brief §2b. Instrument Sans (display, 600/700) re-pitches
     ref-006's serif-headline register to sans-led; Source Sans 3 (body,
     400/600). 4 woff2 total, latin subset, at design-rules §5's ceiling
     exactly. No emphasis font — italics are not used anywhere on this site. */

  --font-display: 'Instrument Sans', 'Instrument Sans Fallback', 'Helvetica Neue', Arial, sans-serif;
  --font-display-medium: 'Instrument Sans Medium', 'Instrument Sans Medium Fallback', 'Helvetica Neue', Arial, sans-serif;
  --font-body: 'Source Sans 3', 'Source Sans 3 Fallback', 'Segoe UI', Arial, sans-serif;
  --font-body-strong: 'Source Sans 3 Strong', 'Source Sans 3 Strong Fallback', 'Segoe UI', Arial, sans-serif;

  --font-weight-body: 400;
  --font-weight-body-strong: 600;
  --font-weight-display: 700;          /* h1 (hero), h2 (every section heading) */
  --font-weight-display-medium: 600;   /* header/footer wordmark only */

  /* --- Type scale — brief §2b, computed at 375 and 1440. --text-h2 is the
     ONE clamp step governing every in-page heading; --text-display is used
     exactly once per page (the hero H1). --text-body/eyebrow/micro are fixed,
     not fluid (brief §2b). */

  --text-display: clamp(2.25rem, 1.5458rem + 3.0047vw, 4.25rem);  /* 36px @375 -> 68px @1440 */
  --text-h2: clamp(1.4375rem, 1.1734rem + 1.1268vw, 2.1875rem);   /* 23px @375 -> 35px @1440 */
  --text-lead: clamp(1rem, 0.9119rem + 0.3756vw, 1.25rem);        /* 16px @375 -> 20px @1440 */
  --text-body: 1rem;                   /* 16px, fixed */
  --text-eyebrow: 0.75rem;             /* 12px, fixed */
  --text-micro: 0.6875rem;             /* 11px, fixed */

  --leading-tight: 1.05;
  --leading-snug: 1.25;
  --leading-body: 1.6;

  --tracking-tight: -0.02em;
  --tracking-normal: 0em;
  --tracking-wide: 0.08em;             /* eyebrows */

  /* --- Space — brief §2c: "house scale, unchanged". Skeleton's own scale,
     verbatim; the brief specifies no departure from it. */

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

  /* Inter-section rhythm — brief §2c: --space-xl, 64px at 375 AND at 1440
     (a fixed step, not a clamp — the same number at every width). The only
     value setting space BETWEEN sections (design-rules §7.1). */
  --section-gap: var(--space-xl);

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

  --layout-container: 72rem;
  --layout-measure: 62ch;
  --layout-gutter: clamp(1.25rem, 5vw, 3rem);
  --layout-tap-min: 44px;

  /* --- Radius / shadow / border — brief §2c. Only --radius-sm and
     --radius-none are used anywhere on this site; --shadow-* is UNUSED,
     deliberately — no box-shadow anywhere (brief §2c). */

  --radius-none: 0;
  --radius-sm: 2px;
  --radius-md: 6px;
  --radius-lg: 16px;
  --radius-pill: 999px;

  --shadow-none: none;
  --shadow-sm: 0 1px 2px rgb(35 40 42 / 0.06);
  --shadow-md: 0 6px 24px rgb(35 40 42 / 0.09);
  --shadow-lg: 0 24px 60px rgb(35 40 42 / 0.14);

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

  /* --- Motion — brief §2c/§6. --duration-reveal + --ease-standard are the
     house default reveal (400ms fade + 8px translate). The hero's "the plan
     resolves" signature uses bespoke one-time keyframe delays (brief §6),
     not tokenized — set directly in the animation rules in site.css, per the
     brief's own framing of the signature as a named, one-off sequence. */

  --duration-fast: 140ms;
  --duration-base: 320ms;
  --duration-slow: 640ms;
  --duration-reveal: 400ms;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);

  --reveal-shift: 0.5rem;              /* 8px, brief §6's reveal geometry */
  --reveal-stagger: 90ms;

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

/* @font-face — self-hosted woff2, subset to house-tech-spec §8's declared
   safe range, declared identically on every face. 4 STATIC instances, no
   variation axis, so font-variation-settings never appears on this site.
   Measured cmap gap (§8 disclosure): all four faces lack U+2010-2012/2015
   (same gap as the house's first two faces); Instrument Sans additionally
   lacks U+2032/2033, which Source Sans 3 carries — copy.md never sets a
   prime in either context, so the census check reads clean. Fallback
   percentages are measurements (scripts/font-metrics.mjs vs Liberation
   Sans), never invented. */

@font-face {
  font-family: 'Instrument Sans';
  src: url('../assets/fonts/instrument-sans-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;
}

@font-face {
  font-family: 'Instrument Sans Medium';
  src: url('../assets/fonts/instrument-sans-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;
}

@font-face {
  font-family: 'Source Sans 3';
  src: url('../assets/fonts/source-sans-3-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: 'Source Sans 3 Strong';
  src: url('../assets/fonts/source-sans-3-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 — one per instance, zero bytes. Measured against
   /usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf with
   scripts/font-metrics.mjs; Liberation Sans is metrically Arial-compatible. */

@font-face {
  font-family: 'Instrument Sans Fallback';
  src: local('Arial'), local('Liberation Sans');
  font-weight: 700;
  font-style: normal;
  size-adjust: 106.88%;
  ascent-override: 90.76%;
  descent-override: 23.39%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Instrument Sans Medium Fallback';
  src: local('Arial'), local('Liberation Sans');
  font-weight: 600;
  font-style: normal;
  size-adjust: 105.38%;
  ascent-override: 92.05%;
  descent-override: 23.72%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Source Sans 3 Fallback';
  src: local('Arial'), local('Liberation Sans');
  font-weight: 400;
  font-style: normal;
  size-adjust: 94.14%;
  ascent-override: 108.77%;
  descent-override: 42.49%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Source Sans 3 Strong Fallback';
  src: local('Arial'), local('Liberation Sans');
  font-weight: 600;
  font-style: normal;
  size-adjust: 96.92%;
  ascent-override: 105.65%;
  descent-override: 41.27%;
  line-gap-override: 0%;
}
