/* Hallmark · tokens · theme: studied-DNA (source: user design brief + Regenetix reference board)
 * Premium editorial: warm paper, blush surfaces, one signal red, geometric Geist display.
 * Hex values are the brief's exact specification and are used verbatim.
 * axes — paper band: light (L ~95%) · display: geometric grotesque · accent: signal red
 */

/* ── faces ────────────────────────────────────────────────────
   Geist and Geist Mono are self-hosted rather than pulled from
   Google Fonts: a page that sells "we watch your work and tell
   you exactly what we can see" should not hand every visitor's
   IP to a third party to render its own headline.
   Both are variable (wght 100–900), so one file covers the 400 /
   500 / 600 the page uses. Latin subset only — identical coverage
   to the Google-served subset this replaced, so glyph fallback
   behaviour is unchanged. */
@font-face {
  font-family: "Geist";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("assets/fonts/geist.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("assets/fonts/geist-mono.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* ── surfaces (exact, per brief) ──────────────────────────── */
  --paper:  #F2F1EE;   /* page */
  --white:  #FFFFFF;   /* section surface */
  --blush:  #F9EDEA;   /* alternating section surface */
  --ink:    #141414;   /* text */
  --rule:   #E5E3DF;   /* hairline divider */
  --red:    #E0281C;   /* the only colour on the page */

  --ink-70: #141414b3;
  --ink-55: #14141480;
  --ink-40: #1414145c;
  --ink-08: #14141414;
  --ink-16: #14141429;
  --ink-22: #14141438;
  --red-08: #E0281C14;
  --red-30: #E0281C4d;
  --white-70: #ffffffb3;
  --white-15: #ffffff26;
  --red-hover: #C92218;

  /* ── type ─────────────────────────────────────────────────────
     Geist carries display, body, and UI; Geist Mono carries technical
     labels and evidence data. The custom wordmark is artwork. */
  --font-brand:     "Geist", ui-sans-serif, system-ui, sans-serif;
  --font-technical: "Geist Mono", ui-monospace, SFMono-Regular, monospace;

  --t-hero:    clamp(3rem, 6.8vw, 6.25rem);    /* 48 → 100 */
  --t-display: clamp(2.5rem, 6.2vw, 5.5rem);   /* 40 → 88  */
  --t-h2:      clamp(2.125rem, 4.6vw, 4rem);   /* 34 → 64  */
  --t-h3:      clamp(1.75rem, 3.2vw, 3.5rem);  /* 28 → 56  */
  --t-stat:    clamp(3rem, 6.6vw, 7.5rem);     /* 48 → 120 */
  --t-stat-sm: clamp(2.5rem, 4.6vw, 5rem);     /* 40 → 80  */
  --t-card:    1.75rem;
  --t-body:    0.9375rem;
  --t-lead:    1rem;
  --t-label:   0.6875rem;
  --t-micro:   0.625rem;

  /* Geist stays tight and precise at display scale while keeping body copy
     relaxed enough for long-form reading. */
  --lh-display: 0.98;
  --lh-body:    1.55;
  --tr-display: -0.035em;
  --tr-body:    -0.01em;
  --tr-label:    0.08em;

  /* ── space · 4pt ─────────────────────────────────────────── */
  --s-1:  4px;   --s-2:  8px;   --s-3: 12px;  --s-4: 16px;
  --s-5: 20px;   --s-6: 24px;   --s-8: 32px;  --s-10: 40px;
  --s-12: 48px;  --s-16: 64px;  --s-20: 80px; --s-24: 96px;
  --s-32: 128px; --s-40: 160px;

  --container: 1440px;
  --gutter:    clamp(20px, 4vw, 64px);
  --section-y: clamp(64px, 9vw, 150px);
  --nav-h:     80px;
  --measure:   340px;

  --r-sm:   8px;
  --r-md:   16px;
  --r-lg:   24px;
  --r-pill: 999px;

  --ease:  cubic-bezier(0.16, 1, 0.3, 1);
  --d-1: 180ms;
  --d-2: 360ms;
  --d-3: 720ms;

  --z-nav: 60;

  --shadow-float:  0 10px 30px -12px var(--ink-40);
  --shadow-card:   0 18px 40px -30px var(--ink-22);
  --shadow-device: 0 30px 60px -34px var(--ink-40);
}
