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

   Site: nations-best-appliance-repair-indianapolis-in
   Brief: runs/nations-best-appliance-repair-indianapolis-in/brief--….md
   Family: retro-local · Archetype: sidebar-anchor · Palette: shop-brass/enamel-white/light

   THIS FILE IS THE ONLY PLACE RAW VALUES LIVE (house-tech-spec §3).
   ========================================================================== */

:root {

  /* --- Colour (brief §2.1–§2.4) -------------------------------------------
     Derivation: no real-world brand colour recorded (dossier §4.5 — the
     renderer-reported blue/orange on the business's own self-built site is
     explicitly NOT a brand-echo default, per schema §3.2). Local character
     yields nothing (dossier §4.5). Family norms: retro-local's own
     enamel/chrome white-goods vocabulary, argued from the playbook's §6.1
     finding that this material is "used as a palette by nobody in twelve."
     Blue avoided as a dominant hue (both readable local competitors lean
     blue, dossier §4.6). Full contrast table: brief §2.3. */

  --scheme: light;

  --color-bg:             #F1EEE6;  /* enamel-white — page ground */
  --color-surface:        #E8E2D3;  /* aged ticket-paper — panels, cards */
  --color-ink:             #262421; /* graphite ink — primary text */
  --color-ink-muted:       #5C574C; /* secondary text, captions, meta */
  --color-accent:          #9C6A1E; /* shop-brass — NON-TEXT ONLY (brief §2.4): badge-ring
                                        stroke, dial needle accent, ticket border accents,
                                        focus ring, decorative hairlines. NEVER text, any size. */
  --color-accent-ink:      #1A1611; /* deep near-black — the text role for any "brass-adjacent"
                                        moment (ticket stamp labels). 15.52:1 on bg. */

  --color-border:          #DCD3BC; /* decorative hairlines only — no contrast floor */
  --color-border-strong:   #5C574C; /* = ink-muted; >=3:1 vs bg AND surface (WCAG 1.4.11) —
                                        nav-toggle outline, secondary-CTA outline */
  --color-focus:           #9C6A1E; /* = accent; >=3:1 vs bg AND surface */
  --color-selection-bg:    #9C6A1E;
  --color-selection-ink:   #F1EEE6;

  /* Brief-specific — imagery art-direction ONLY, never a text/bg pair. */
  --color-appliance-steel: #9A968A; /* muted brushed-steel tone for the appliance illustration */
  --color-hero-atmosphere: #F8F4EA; /* brief §2.5's hero atmosphere gradient's lighter stop —
    relative luminance 0.9060, lighter than --color-bg's 0.8556, so every point in the gradient
    is at least as light as flat --color-bg (brief §2.5's own measurement) */

  /* --- Typography (brief §2.6/§2.7) ---------------------------------------
     Ultra (display, 400 only) + Barlow (body, 400/500/700). Barlow shipped
     as 3 static files, not the brief's named "1 variable woff2" — Barlow
     has no variable axis on Google Fonts (confirmed against css2/download
     endpoints). 4 files total, at the house §7 cap; no weight/colour/role
     changed. Full note: README "Fonts". */

  --font-display:            'Ultra', 'Ultra Fallback', Georgia, 'Times New Roman', serif;
  --font-body:                'Barlow', 'Barlow Fallback', 'Helvetica Neue', Arial, sans-serif;

  --font-weight-body:        400;  /* Barlow Regular — body copy */
  --font-weight-body-medium: 500;  /* Barlow Medium — hero lead paragraph */
  --font-weight-body-strong: 700;  /* Barlow Bold — eyebrow, CTA labels, ticket stamps, nav */
  --font-weight-display:     400;  /* Ultra ships ONLY Regular — never synthesize a bold instance */

  /* --- Type scale (brief §2.7 — computed at floor/ceiling/375/1440, used verbatim) --- */

  --text-hero:    clamp(2.25rem, 1.7rem + 3.2vw, 3.75rem);
  --text-h2:      clamp(1.5rem, 1.2rem + 1.6vw, 2.25rem);
  --text-h3:      clamp(1.1rem, 1rem + 0.5vw, 1.35rem);
  --text-lead:    clamp(1.05rem, 0.95rem + 0.5vw, 1.25rem);
  --text-body:    clamp(1rem, 0.94rem + 0.3vw, 1.0625rem);
  --text-small:   0.875rem;
  --text-eyebrow: 0.75rem;

  /* Brief-specific — the living-hero device's field geometry (brief §2.7).
     Floor 220px (flat on every real phone, reached <=633px), ceiling 260px
     (reached >=967px). Governs height only; width is max-width: 100%. */
  --hero-field-height: clamp(13.75rem, 9rem + 12vw, 16.25rem);

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

  --tracking-tight: -0.02em;
  --tracking-normal: 0em;
  --tracking-wide: 0.08em;

  /* --- Space — house scale, unchanged (brief does not override 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;

  /* Section rhythm (brief §3.5): --space-xl (64px), fixed at every width. */
  --section-gap: var(--space-xl);

  /* --- Layout --------------------------------------------------------------
     Brief-specific: --rail-width is the sidebar-anchor archetype's fixed
     desktop rail column (brief §3.1: "fixed width: 15rem (240px)"). */

  --layout-container: 72rem;
  --layout-measure: 62ch;
  --layout-gutter: clamp(1.25rem, 5vw, 3rem);
  --layout-tap-min: 44px;
  --rail-width: 15rem; /* 240px, brief §3.1 */
  --rail-collapsed-height: 4rem; /* measured collapsed-rail height (~61-108px combined
    with the expiry bar, WCAG 44px tap-floor included) — the brief's own sketch assumed
    a 26px button; used for anchor scroll-margin only. Full note: README. */

  /* --- Radius / shadow / border (brief §2.8 — deliberately non-uniform) --- */

  --radius-none: 0;
  --radius-sm: 2px;    /* CTA buttons — a printed/stamped edge, not a pill */
  --radius-md: 6px;
  --radius-lg: 16px;
  --radius-pill: 999px;

  --shadow-none: none;
  --shadow-sm: 0 1px 2px rgb(38 36 33 / 0.14);  /* the badge/dial device only — a settle-in lift */
  --shadow-md: 0 6px 24px rgb(38 36 33 / 0.16);
  --shadow-lg: 0 24px 60px rgb(38 36 33 / 0.20);

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

  /* --- Motion — house defaults, unchanged (brief §6: reveal driven by these). --- */

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

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

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

  /* Brief-specific — the living-hero dial's three motions (brief §6). Exact
     durations/easings named by the brief; declared here so no raw timing
     literal appears in site.css. */
  --dial-needle-duration: 1.6s;
  --dial-needle-ease: cubic-bezier(.2, 1.4, .4, 1);
  --dial-ring-duration: 7s;
  --dial-tag-duration: 5.6s;

  /* --- Z layers — house default, unchanged. --- */
  --z-base: 0;
  --z-header: 100;
  --z-nav-panel: 200;
  --z-skip-link: 300;
}

/* --------------------------------------------------------------------------
   @font-face — self-hosted woff2, latin subset (house declared safe range,
   house-tech-spec §8), static instances only. Ultra: Apache 2.0
   (assets/fonts/LICENSE-ultra-apache-2.0.txt). Barlow: SIL OFL 1.1
   (assets/fonts/OFL-Barlow.txt).

   Two coverage gaps, recorded per §8's own instruction rather than shipped
   silently — full detail in README "Fonts": (1) U+2010-2012/2015 absent
   from all four faces alike, U+2032/U+2033 absent from Ultra only; this
   site's copy never sets any of them (grepped, zero hits), so the census
   passes clean. (2) copy.md's own "★" (U+2605) in the hero facts line and
   trust ticket 1 is outside the declared range on every face; it falls
   through to 'Barlow Fallback', which carries no unicode-range and resolves
   to a real local system font — no CLS, no mid-sentence swap. No scripted
   census check exists yet in scripts/qa/ (§8 calls one "nominated... not
   required").
   -------------------------------------------------------------------------- */

@font-face {
  font-family: 'Ultra';
  src: url('../assets/fonts/ultra-latin-400.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: 'Barlow';
  src: url('../assets/fonts/barlow-latin-400.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: 'Barlow';
  src: url('../assets/fonts/barlow-latin-500.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: 'Barlow';
  src: url('../assets/fonts/barlow-latin-700.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), measured with
   scripts/font-metrics.mjs against this site's own shipped files. Ultra's
   values are byte-identical (SHA-256 checked) to poop-busters-clarksville-tn
   and all-pro-lawn-service-boise-id's own Ultra file — a property of the
   font, not the site. Barlow's measured against Liberation Sans (Arial's
   open metric-compatible proxy); matches advanced-irrigation-wilmington-nc's
   independently-measured values to the hundredth of a percent. Full note:
   README "Fonts". */

@font-face {
  font-family: 'Ultra Fallback';
  src: local('Georgia');
  font-weight: 400;
  font-style: normal;
  size-adjust: 159.91%;
  ascent-override: 63.08%;
  descent-override: 17.13%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Barlow Fallback';
  src: local('Helvetica Neue'), local('Arial');
  font-weight: 400;
  font-style: normal;
  size-adjust: 96.96%;
  ascent-override: 103.14%;
  descent-override: 20.63%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Barlow Fallback';
  src: local('Helvetica Neue Medium'), local('Helvetica Neue'), local('Arial');
  font-weight: 500;
  font-style: normal;
  size-adjust: 98%;
  ascent-override: 102.04%;
  descent-override: 20.41%;
  line-gap-override: 0%;
}

@font-face {
  font-family: 'Barlow Fallback';
  src: local('Helvetica Neue Bold'), local('Arial Bold'), local('Arial');
  font-weight: 700;
  font-style: normal;
  size-adjust: 92.39%;
  ascent-override: 108.23%;
  descent-override: 21.65%;
  line-gap-override: 0%;
}
