/* ============================================================
   TYPOGRAPHY — fromSpec
   Plus Jakarta Sans (sans: display/UI/body, the wordmark) +
   JetBrains Mono (mono: kickers, labels, buttons, code, the fs_ mark).
   Mono-forward: labels and structural UI lean on the monospace to
   read "engineered". Headlines are tight, set in short declaratives.
   ============================================================ */
:root {
  --font-sans: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-display: "Plus Jakarta Sans", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* type scale (rem, 16px base) */
  --text-2xs:  0.6875rem; /* 11px — kickers, mono micro-labels */
  --text-xs:   0.75rem;   /* 12px — meta, chips */
  --text-sm:   0.8125rem; /* 13px — secondary UI, code */
  --text-base: 0.9375rem; /* 15px — body / default UI */
  --text-md:   1.0625rem; /* 17px — lead / emphasized body */
  --text-lg:   1.25rem;   /* 20px — card titles */
  --text-xl:   1.5rem;    /* 24px — section titles */
  --text-2xl:  2rem;      /* 32px — page headings */
  --text-3xl:  2.75rem;   /* 44px — display */
  --text-4xl:  3.75rem;   /* 60px — hero */
  --text-5xl:  5rem;      /* 80px — big hero */

  /* weights — Plus Jakarta Sans: 200–800 (200 & 300 available but unused) */
  --weight-light:    400;
  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;
  --weight-black:    700;

  /* line heights */
  --leading-tight:   1.04;
  --leading-snug:    1.2;
  --leading-normal:  1.55;
  --leading-relaxed: 1.7;

  /* letter spacing — display tightens hard; mono labels open wide */
  --tracking-tighter: -0.035em;
  --tracking-tight:   -0.02em;
  --tracking-normal:  0;
  --tracking-mono:    0.02em;
  --tracking-kicker:  0.18em;  /* uppercase mono kickers */
  --tracking-caps:    0.08em;  /* inline caps labels / pill badges */

  /* ---- semantic text styles ---- */
  --type-hero:    var(--weight-black) var(--text-5xl)/var(--leading-tight) var(--font-display);
  --type-display: var(--weight-bold) var(--text-3xl)/var(--leading-tight) var(--font-display);
  --type-h1:      var(--weight-bold) var(--text-2xl)/var(--leading-snug) var(--font-display);
  --type-h2:      var(--weight-bold) var(--text-xl)/var(--leading-snug) var(--font-display);
  --type-h3:      var(--weight-semibold) var(--text-lg)/var(--leading-snug) var(--font-sans);
  --type-lead:    var(--weight-regular) var(--text-md)/var(--leading-normal) var(--font-sans);
  --type-deck:    var(--weight-regular) var(--text-lg)/1.4 var(--font-display);  /* sub-headline / standfirst — reads like the header */
  --type-body:    var(--weight-regular) var(--text-base)/var(--leading-normal) var(--font-sans);
  --type-body-sm: var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-sans);

  /* mono-forward UI furniture */
  --type-kicker:  var(--weight-medium) var(--text-2xs)/1.4 var(--font-mono);
  --type-label:   var(--weight-medium) var(--text-xs)/1.3 var(--font-mono);
  --type-mono:    var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-mono);
  --type-code:    var(--weight-regular) var(--text-sm)/var(--leading-relaxed) var(--font-mono);
}
