/* Design tokens — design spec §8.2-8.4, verbatim.
 *
 * Hand-written custom properties, no build step: there is no Tailwind, no bundler and
 * no npm anywhere in this project, because the stated goal is a site that still builds
 * in five years (technical D10).
 *
 * Near-white is the ground. Dark surfaces appear ONLY in the footer, the CTA band and
 * photo scrims — that is what makes it airy. */

:root {
  /* ---- Palette (§8.2). Hex values are specified; do not invent new ones. ---- */
  --c-ink-900: #0F1E2B;   /* headings, footer bg — 16.9:1 on white */
  --c-ink-700: #24384A;   /* body text */
  --c-ink-500: #4A6070;   /* secondary/meta — 6.6:1 on white */
  --c-ink-300: #8FA3B0;   /* icons and borders ONLY — 2.6:1, never text */

  --c-fjord-600: #17607D; /* links, primary button — 7.0:1, the only interactive colour */
  --c-fjord-700: #114C63; /* hover/pressed */
  --c-fjord-400: #4E93AC; /* focus ring, illustrative */
  --c-fjord-100: #DBEAF0; /* tinted fill, selected */

  --c-mist-50:  #F7FAFB;  /* alternate section bg: white -> mist-50 -> white */
  --c-mist-100: #EDF3F5;  /* cards, inputs */
  --c-line:     #DCE4E9;  /* hairlines, preferred over shadows */

  --c-sand-100: #F6F1E7;  /* warm counterweight so the cool palette is not clinical */
  --c-sand-300: #E8DCC8;
  --c-sand-600: #A9895A;

  --c-rowan-600: #B4472F; /* booking CTA ONLY — 5.4:1, at most once per screen */
  --c-rowan-700: #8E3624;

  --c-warn-bg:   #FFF7E6; /* export-rules callout */
  --c-warn-fg:   #8A5A00;
  --c-warn-line: #E8C97A;

  /* Two-ended scrim over every photo. Named a/b/c deliberately: top/mid/bot collided
     with the overlay STRENGTH values .55/.72/.84. */
  --scrim-a: rgba(15, 30, 43, .55);
  --scrim-b: rgba(15, 30, 43, .10);
  --scrim-c: rgba(15, 30, 43, .72);
  /* DARK, not white-on-white. The original .16 white glass was invisible against any
     light page — and with no hero photography supplied yet, every page is light. A dark
     translucent bar reads as the grey bar it looks like over white content, and still
     lets white nav text sit legibly over a photograph when heroes arrive. */
  --header-glass: rgba(15, 30, 43, .55);

  /* ---- Type (§8.3). Fluid, mobile-first, clamp()-based. ---- */
  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

  --step--1: clamp(0.8625rem, 0.832rem + 0.153vw, 0.9375rem); /* 13.8 -> 15  meta */
  --step-0:  clamp(1rem, 0.949rem + 0.255vw, 1.125rem);       /* 16   -> 18  body */
  --step-1:  clamp(1.125rem, 1.023rem + 0.51vw, 1.375rem);    /* 18   -> 22  subline */
  --step-2:  clamp(1.375rem, 1.222rem + 0.765vw, 1.75rem);    /* 22   -> 28 */
  --step-3:  clamp(1.625rem, 1.319rem + 1.53vw, 2.375rem);    /* 26   -> 38 */
  --step-4:  clamp(2.0625rem, 1.578rem + 2.42vw, 3.25rem);    /* 33   -> 52  prose h1 */
  --step-5:  clamp(2.5rem, 1.684rem + 4.08vw, 4.5rem);        /* 40   -> 72  band title */
  --step-6:  clamp(3rem, 1.776rem + 6.12vw, 6rem);            /* 48   -> 96  hero */

  --lh-tight: 1.08;   /* display */
  --lh-snug: 1.25;    /* subheads */
  --lh-body: 1.65;    /* prose */
  --measure: 66ch;

  /* ---- Space, radii (§8.4). 4px base. ---- */
  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px; --s-5: 24px; --s-6: 32px;
  --s-7: 48px; --s-8: 64px; --s-9: 96px; --s-10: 128px; --s-11: 160px;

  --section-y: clamp(48px, 8vw, 128px);
  --gutter: clamp(16px, 4vw, 48px);
  --container: 1200px;
  --container-wide: 1440px;

  --r-1: 4px; --r-2: 8px; --r-3: 14px; --r-pill: 999px;

  --header-h: 72px;
  --motion: .3s;
}

/* Self-hosted, pre-subset woff2 (technical §14). The files are committed rather than
   built; every stack above has real fallbacks, so a missing file degrades to Georgia
   or the system sans rather than to nothing.
 *
 * FILENAMES ARE A CONTRACT with docs/fonts.md, which carries the subsetting commands
 * that produce them. A mismatch here is invisible: the browser 404s the file, silently
 * falls back, and the site renders in Georgia forever with nothing failing. A test in
 * tests/test_public.py compares these two names against that document.
 *
 * No ?v= hash on these URLs, unlike every other static reference on the site: this is
 * a plain .css file, not a template, so the `static_url` global never runs over it.
 * Cache-busting for a replaced font comes from renaming the file, which section 6 of
 * docs/fonts.md already requires. */
@font-face {
  font-family: "Inter";
  src: url("/static/fonts/inter-latin.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0100-017F, U+0180-024F, U+2000-206F, U+20A0-20BF;
}
@font-face {
  font-family: "Fraunces";
  src: url("/static/fonts/fraunces-latin.woff2") format("woff2");
  font-weight: 300 700;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0100-017F, U+2000-206F, U+20A0-20BF;
}
