/* ============================================================
   Rudolph Gruppe — Typography tokens
   ------------------------------------------------------------
   Display + body: Archivo (industrial grotesque)
   Technical / labels / data: IBM Plex Mono
   ============================================================ */

:root {
  /* ---- Families ---- */
  --font-display: 'Archivo', 'Helvetica Neue', Arial, sans-serif;
  --font-body:    'Archivo', 'Helvetica Neue', Arial, sans-serif;
  --font-mono:    'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* ---- Weights ---- */
  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;
  --weight-black:    800;

  /* ---- Type scale (rem, 16px base) ---- */
  --text-2xs:  0.6875rem;  /* 11px */
  --text-xs:   0.75rem;    /* 12px */
  --text-sm:   0.875rem;   /* 14px */
  --text-base: 1rem;       /* 16px */
  --text-md:   1.125rem;   /* 18px */
  --text-lg:   1.375rem;   /* 22px */
  --text-xl:   1.75rem;    /* 28px */
  --text-2xl:  2.25rem;    /* 36px */
  --text-3xl:  3rem;       /* 48px */
  --text-4xl:  4rem;       /* 64px */
  --text-5xl:  5.5rem;     /* 88px */

  /* ---- Line heights ---- */
  --leading-tight:   1.05;
  --leading-snug:    1.18;
  --leading-normal:  1.4;
  --leading-relaxed: 1.6;

  /* ---- Letter spacing ---- */
  --tracking-tighter: -0.03em;
  --tracking-tight:   -0.015em;
  --tracking-normal:  0;
  --tracking-wide:    0.04em;
  --tracking-wider:   0.12em;   /* eyebrows / labels */
  --tracking-widest:  0.22em;

  /* ============================================================
     Semantic type roles
     ============================================================ */

  /* Display — hero headlines */
  --type-display-family:  var(--font-display);
  --type-display-weight:  var(--weight-black);
  --type-display-leading: var(--leading-tight);
  --type-display-track:   var(--tracking-tight);

  /* Headings */
  --type-heading-family:  var(--font-display);
  --type-heading-weight:  var(--weight-bold);
  --type-heading-leading: var(--leading-snug);
  --type-heading-track:   var(--tracking-tight);

  /* Body */
  --type-body-family:  var(--font-body);
  --type-body-weight:  var(--weight-regular);
  --type-body-leading: var(--leading-relaxed);
  --type-body-track:   var(--tracking-normal);

  /* Eyebrow / label — uppercase mono */
  --type-eyebrow-family:  var(--font-mono);
  --type-eyebrow-weight:  var(--weight-medium);
  --type-eyebrow-size:    var(--text-xs);
  --type-eyebrow-track:   var(--tracking-wider);
  --type-eyebrow-case:    uppercase;

  /* Stat numerals */
  --type-stat-family:  var(--font-display);
  --type-stat-weight:  var(--weight-black);
  --type-stat-leading: 0.95;
  --type-stat-track:   var(--tracking-tighter);
}
