/* ============================================================
   cycle · typography tokens
   ------------------------------------------------------------
   Display  · Bricolage Grotesque  — headings, hero, big numbers
   Body     · Hanken Grotesk       — prose, UI, labels
   Mono     · JetBrains Mono       — code, FHIR paths, kbd, eyebrows
   ============================================================ */

:root {
  /* ---- Families ---- */
  --font-display: 'Bricolage Grotesque', 'Hanken Grotesk', system-ui, sans-serif;
  --font-body:    'Hanken Grotesk', system-ui, -apple-system, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* ---- Type scale (1.250 major-third-ish, tuned) ---- */
  --text-2xs:   0.6875rem;  /* 11px · code line nums, tiny meta   */
  --text-xs:    0.75rem;    /* 12px · eyebrows, badges            */
  --text-sm:    0.875rem;   /* 14px · captions, table cells       */
  --text-base:  1rem;       /* 16px · body                        */
  --text-md:    1.125rem;   /* 18px · lead paragraph              */
  --text-lg:    1.375rem;   /* 22px · h4 / card title             */
  --text-xl:    1.75rem;    /* 28px · h3                          */
  --text-2xl:   2.25rem;    /* 36px · h2                          */
  --text-3xl:   3rem;       /* 48px · h1 / page title             */
  --text-4xl:   4rem;       /* 64px · hero                        */
  --text-5xl:   5.5rem;     /* 88px · display numerals            */

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

  /* ---- Line heights ---- */
  --leading-tight:  1.04;   /* display headings                  */
  --leading-snug:   1.22;   /* sub-heads                         */
  --leading-normal: 1.55;   /* body prose                        */
  --leading-relaxed:1.7;    /* long-form reading                 */
  --leading-code:   1.6;    /* code blocks                       */

  /* ---- Letter spacing ---- */
  --tracking-tight:  -0.02em;  /* display headings               */
  --tracking-snug:   -0.01em;
  --tracking-normal:  0;
  --tracking-wide:    0.04em;
  --tracking-eyebrow: 0.14em;  /* mono eyebrow labels, UPPERCASE  */

  /* ---- Semantic roles ---- */
  --type-hero:     var(--weight-extra) var(--text-4xl)/var(--leading-tight) var(--font-display);
  --type-h1:       var(--weight-bold)  var(--text-3xl)/var(--leading-tight) var(--font-display);
  --type-h2:       var(--weight-bold)  var(--text-2xl)/var(--leading-snug)  var(--font-display);
  --type-h3:       var(--weight-semibold) var(--text-xl)/var(--leading-snug) var(--font-display);
  --type-h4:       var(--weight-semibold) var(--text-lg)/var(--leading-snug) var(--font-display);
  --type-lead:     var(--weight-regular) var(--text-md)/var(--leading-relaxed) var(--font-body);
  --type-body:     var(--weight-regular) var(--text-base)/var(--leading-normal) var(--font-body);
  --type-caption:  var(--weight-medium) var(--text-sm)/var(--leading-snug) var(--font-body);
  --type-eyebrow:  var(--weight-semibold) var(--text-xs)/1 var(--font-mono);
  --type-code:     var(--weight-regular) var(--text-sm)/var(--leading-code) var(--font-mono);
}
