/* Orbit & Anchor — design tokens.
   Values verified against WCAG AA by tools/check_contrast.py. Do not edit a
   colour here without re-running that script. */

:root {
  /* Grounds */
  --ink:        #1B222B;
  --navy:       #2E3641;
  --bone:       #F3EEE5;

  /* Text on dark grounds */
  --bone-soft:  #CCC9C4;   /* 7.39:1 on Navy  · 9.71:1 on Ink */
  --bone-mute:  #A4A4A3;   /* 4.89:1 on Navy  · 6.42:1 on Ink */

  /* Text on light ground */
  --ink-soft:   #464B50;   /* 7.63:1 on Bone */
  --ink-mute:   #67696C;   /* 4.76:1 on Bone */

  /* Accents */
  --rust:       #C05528;   /* brand Signal Rust — fills and large accents only */
  --rust-deep:  #AC4F28;   /* button fills w/ Bone text (4.66:1) and small Rust text */
  --brass:      #D8A354;   /* trim; text permitted on Navy/Ink only */
  --harbour:    #2F6E6A;   /* success states */
  --slate:      #6E7A88;   /* borders and decoration ONLY — never text on Navy */

  /* Decorative ghost numerals — never carry text meaning, so exempt from
     the contrast rules. Deliberately close to their ground. */
  --ghost-dark:  #353E4A;   /* on Navy */
  --ghost-light: #E7E1D6;   /* on Bone */

  /* Ground only, never text-bearing on its own — the darkest point of the
     page's tonal journey (contact/footer). Darker than Ink, so every approved
     text pair only gains contrast on it. */
  --ink-deep:   #141A21;

  /* Hairlines */
  --rule-dark:  rgba(216, 163, 84, .28);
  --rule-light: rgba(27, 34, 43, .14);

  /* Type */
  --font-display: 'Instrument Serif', Georgia, serif;
  --font-text:    'Jost', system-ui, -apple-system, sans-serif;
  --font-mono:    'IBM Plex Mono', ui-monospace, monospace;

  /* Rhythm */
  --gutter: clamp(1.25rem, 4vw, 4rem);
  --section-y: clamp(4.5rem, 9vw, 8.5rem);
  --measure: 68ch;
}

*, *::before, *::after { box-sizing: border-box; }
body, h1, h2, h3, h4, p, figure, blockquote, ul, ol, dl, dd { margin: 0; padding: 0; }
ul, ol { list-style: none; }
img { max-width: 100%; display: block; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  background: var(--ink);
  color: var(--bone);
  font-family: var(--font-text);
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.5625;          /* 16/25 per the brand scale */
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* ── Type scale ─────────────────────────────────────────────
   Instrument Serif: weight 400 only, never below 22px, never all-caps.
   Jost: weights 400 and 500 only.
   Plex Mono: uppercase, 0.16em tracking, 12–14px, never body copy. */

.display {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(2.75rem, 6.4vw, 5.125rem);
  line-height: 1.02;
  letter-spacing: -.015em;
}

.heading {
  font-family: var(--font-display);
  font-weight: 400;
  font-size: clamp(1.875rem, 3.6vw, 2.875rem);
  line-height: 1.1;
  letter-spacing: -.01em;
}

.subhead {
  font-family: var(--font-text);
  font-weight: 500;
  font-size: clamp(1.125rem, 1.6vw, 1.3125rem);
  line-height: 1.333;
}

.body { font-size: 1rem; line-height: 1.5625; max-width: var(--measure); }

.eyebrow {
  font-family: var(--font-mono);
  font-weight: 400;
  font-size: .8125rem;
  line-height: 1.4;
  letter-spacing: .16em;
  text-transform: uppercase;
}

/* ── Focus ── */
:focus-visible {
  outline: 2px solid var(--brass);
  outline-offset: 2px;
  border-radius: 2px;
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}
