/* Hallmark · shape: Letter · genre: editorial · theme: Almanac (deal 2/3, seed all-seasons-hvac-residential-3bc9·34dc8df3·2026-10-27·r0) · job: book · draw: c29eed
 * hero: Settled · nav: quiet edge-aligned bar (drawn as a floating pill; swapped, a blur pill contradicts the printed register) · footer: mast · imagery: none supplied, the printed sheet and the service register carry the page · signature: the service register as six ruled rows, closed by the printed contact slip on pale slate
 * axes: dark/grotesk-sans/warm-amber · posture: restrained · contrast: pass · fold: pass · copy: verbatim (Gherkin contract holds every string) · fonts: Hanken Grotesk, Newsreader and IBM Plex Mono, self-hosted latin subsets · v2.0.0 */
/* Hallmark · pre-emit critique: P5 H4 E5 S4 R4 V4 · weakest: R, a register can sprawl; kept the page to two rule weights, no cards, no shadows, one pale band */
/* Hallmark · dismissed 58 · the Gherkin contract freezes every sentence and all six service descriptions; the page reads at 559 words by contract, not by taste */

@font-face {
  font-family: "Hanken Grotesk";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/hanken-grotesk-600.woff2") format("woff2");
}

@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 400 500;
  font-display: swap;
  src: url("../fonts/newsreader-400.woff2") format("woff2");
}

@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/newsreader-400-italic.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/ibm-plex-mono-400.woff2") format("woff2");
}

@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/ibm-plex-mono-500.woff2") format("woff2");
}

:root {
  color-scheme: dark;

  /* Neutral stock: deep navy/slate, tinted toward 255 */
  --color-paper: oklch(16.5% 0.022 255);
  --color-paper-2: oklch(20% 0.022 255);
  --color-paper-3: oklch(24% 0.024 255);
  --color-ink: oklch(94% 0.008 250);
  --color-ink-2: oklch(86% 0.012 250);
  --color-muted: oklch(72% 0.02 250);
  --color-subtle: oklch(62% 0.022 250);
  --color-rule: oklch(31% 0.022 255);
  --color-rule-2: oklch(44% 0.026 255);
  --color-field: oklch(13% 0.02 255);
  --color-field-border: oklch(40% 0.024 255);

  /* One warm signal: amber, held under 5% of a screen */
  --color-accent: oklch(76% 0.16 68);
  --color-accent-2: oklch(68% 0.15 64);
  --color-accent-ink: oklch(19% 0.03 68);
  --color-focus: oklch(80% 0.17 70);
  --color-error: oklch(74% 0.16 27);
  --color-success: oklch(78% 0.12 150);

  /* The printed sheet laid on the slate */
  --color-sheet: oklch(94% 0.008 250);
  --color-sheet-2: oklch(98% 0.005 250);
  --color-sheet-ink: oklch(22% 0.03 255);
  --color-sheet-ink-2: oklch(32% 0.028 255);
  --color-sheet-muted: oklch(46% 0.024 255);
  --color-sheet-rule: oklch(80% 0.014 250);
  --color-sheet-rule-2: oklch(58% 0.024 255);
  --color-sheet-field: oklch(99% 0.003 250);
  --color-sheet-accent: oklch(48% 0.14 62);
  --color-sheet-focus: oklch(48% 0.145 62);
  --color-sheet-error: oklch(48% 0.19 27);
  --color-sheet-success: oklch(42% 0.11 150);

  --color-overlay: oklch(100% 0 0 / 0.04);
  --color-scrim: oklch(16.5% 0.022 255 / 0.96);

  /* Faces: role names from Almanac, local stacks, no network request */
  --font-display: "Hanken Grotesk", "Helvetica Neue", "Segoe UI", system-ui,
    sans-serif;
  --font-body: "Newsreader", "Iowan Old Style", Georgia, serif;
  --font-outlier: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas,
    monospace;

  /* Type scale (1.25 on a 16px body) */
  --text-xs: 0.8125rem;
  --text-sm: 0.875rem;
  --text-md: 1rem;
  --text-lg: 1.1875rem;
  --text-xl: 1.5625rem;
  --text-2xl: 1.953rem;
  --text-3xl: 2.441rem;
  --text-display-s: clamp(2.25rem, 1.5rem + 3vw, 3.5rem);
  --text-display: clamp(2.6rem, 1.5rem + 3.6vw, 4.25rem);
  --text-section: clamp(1.95rem, 1.35rem + 2.2vw, 3rem);
  --text-title: clamp(1.25rem, 1.1rem + 0.5vw, 1.5rem);
  --text-lead: clamp(1.125rem, 1.05rem + 0.3vw, 1.3125rem);
  --tracking-display: -0.025em;
  /* Printed-slip labels: the mono outlier, a step smaller */
  --label-size: 0.78125rem;
  --display-weight: 600;

  /* Space scale */
  --space-3xs: 2px;
  --space-2xs: 4px;
  --space-xs: 8px;
  --space-sm: 12px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 40px;
  --space-2xl: 64px;
  --space-3xl: 96px;
  --space-4xl: 128px;

  /* Layout */
  --container: 1440px;
  --gutter: clamp(1.25rem, 3.2vw, 4rem);
  --gap-columns: clamp(1.25rem, 2.4vw, 2rem);
  --section-pad: clamp(4rem, 3rem + 4vw, 7rem);
  --section-pad-s: clamp(3rem, 2.5rem + 2.5vw, 4.5rem);
  --hero-pad-top: clamp(2.5rem, 2rem + 3vw, 4.5rem);
  --hero-pad-bottom: clamp(3rem, 2.5rem + 3vw, 5rem);
  --measure: 62ch;
  --control-h: 2.875rem;
  --header-height: 4.5rem;

  /* Shape: square corners, two rule weights, no shadow */
  --radius-card: 0;
  --radius-control: 0;
  --rule-hair: 1px;
  --rule-bar: 2px;
  --shadow-card: none;

  /* Motion: state only */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro: 120ms;
  --dur-short: 220ms;
  --dur-long: 420ms;

  /* Depth */
  --z-base: 1;
  --z-raised: 10;
  --z-sticky-nav: 300;
}