/* ── blueskydl tokens ────────────────────────────────────────────────────────
   World: a bird ringer's record card. You catch something passing through,
   stamp it with a number, write down what you measured, and let it go.

   Two rules govern every colour in this file:
   1. Neutrals come ONLY from the eleven-step field ramp below. No arbitrary
      greys, ever. If a tone is needed that the ramp does not have, the ramp is
      wrong, not the component.
   2. Chroma comes ONLY from the ringing scheme's real colour-ring codes
      (EURING/BTO anodised aluminium and Darvic). They are saturated on
      purpose: this world is read in daylight, and the card stock is the quiet
      part, not the loud one.
   ─────────────────────────────────────────────────────────────────────────── */

:root {
  /* Field ramp — eleven steps, cool grey-green, zone 0 deepest to zone 10 lightest.
     This is the entire neutral vocabulary of the site. */
  --z0: #10150f;
  --z1: #1c2320;
  --z2: #2b3431;
  --z3: #3f4a46;
  --z4: #57635e;
  --z5: #737e79;
  --z6: #929c96;
  --z7: #b1b9b3;
  --z8: #ccd2cc;
  --z9: #e0e4df;
  --z10: #eef1ec;

  /* Colour-ring codes. The scheme's real palette, unmuted. */
  --ring-blue: #1848c8;
  --ring-blue-pale: #dbe3f8;
  --ring-red: #cc2222;
  --ring-red-pale: #f8dede;
  --ring-green: #1d7a3c;
  --ring-green-pale: #d9ecdf;
  --ring-yellow: #e8b010;
  --ring-orange: #dd6611;
  --ring-metal: #8b9296;

  /* Roles — every one resolves to a ramp step or a ring code above. */
  --ground: var(--z10);
  --card: #fbfcfa;
  --rule: var(--z8);
  --rule-strong: var(--z5);
  --ink: var(--z1);
  --ink-soft: var(--z4);
  --ink-faint: var(--z6);

  --accent: var(--ring-blue);
  --accent-pale: var(--ring-blue-pale);
  --recorded: var(--ring-green);
  --recorded-pale: var(--ring-green-pale);
  --fault: var(--ring-red);
  --fault-pale: var(--ring-red-pale);
  --hold: var(--ring-yellow);

  /* Type. Archivo for language, Archivo Narrow for the card's printed labels,
     Martian Mono for anything that is a measurement or a code — never as
     decoration. */
  --face: "Archivo", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --face-label: "Archivo Narrow", "Archivo", ui-sans-serif, system-ui, sans-serif;
  --face-code: "Martian Mono", ui-monospace, "SF Mono", Menlo, monospace;

  --step--1: 0.8125rem;
  --step-0: 1rem;
  --step-1: 1.1875rem;
  --step-2: 1.4375rem;
  --step-3: 1.8125rem;
  --step-4: clamp(2rem, 1.4rem + 2.8vw, 3.25rem);

  /* Card geometry — a ruled form, so spacing is a strict rhythm. */
  --line: 1px;
  --gap-hair: 0.25rem;
  --gap-tight: 0.5rem;
  --gap: 0.875rem;
  --gap-wide: 1.5rem;
  --gap-band: 2.5rem;
  --gap-section: clamp(3rem, 6vw, 5rem);

  --radius: 2px;
  --measure: 68ch;

  /* Depth: a card resting on a field desk. Offset and blur, never a halo. */
  --lift: 0 1px 2px rgba(16, 21, 15, 0.07), 0 3px 10px rgba(16, 21, 15, 0.06);
  --lift-raised: 0 2px 4px rgba(16, 21, 15, 0.09), 0 10px 24px rgba(16, 21, 15, 0.1);

  --ease: cubic-bezier(0.16, 1, 0.3, 1);
}

@font-face {
  font-family: "Archivo";
  src: url("/fonts/archivo-latin.woff2") format("woff2");
  font-weight: 400 700;
  font-display: swap;
  font-style: normal;
}

@font-face {
  font-family: "Archivo Narrow";
  src: url("/fonts/archivo-narrow-latin.woff2") format("woff2");
  font-weight: 500 600;
  font-display: swap;
  font-style: normal;
}

@font-face {
  font-family: "Martian Mono";
  src: url("/fonts/martianmono-latin.woff2") format("woff2");
  font-weight: 400 600;
  font-display: swap;
  font-style: normal;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F, U+2192, U+2212;
}

@font-face {
  font-family: "Martian Mono";
  src: url("/fonts/martianmono-latin-ext.woff2") format("woff2");
  font-weight: 400 600;
  font-display: swap;
  font-style: normal;
  unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB;
}
