:root {
  --font-sans: "Public Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* Compact scale. 13px is the interface default — Signal screens are dense. */
  --text-3xs: 10px;
  --text-2xs: 11px;
  --text-xs:  12px;
  --text-sm:  13px;
  --text-md:  14px;
  --text-lg:  16px;
  --text-xl:  18px;
  --text-2xl: 22px;
  --text-3xl: 28px;
  --text-4xl: 36px;
  --text-5xl: 48px;

  --leading-tight:  1.15;
  --leading-snug:   1.3;
  --leading-normal: 1.45;
  --leading-loose:  1.6;

  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  --tracking-display: -0.022em;
  --tracking-heading: -0.012em;
  --tracking-body:     0em;
  --tracking-label:    0.01em;
  --tracking-caps:     0.06em;

  /* Semantic roles */
  --type-display:      var(--weight-bold) var(--text-4xl)/var(--leading-tight) var(--font-sans);
  --type-heading-lg:   var(--weight-semibold) var(--text-2xl)/var(--leading-snug) var(--font-sans);
  --type-heading-md:   var(--weight-semibold) var(--text-lg)/var(--leading-snug) var(--font-sans);
  --type-heading-sm:   var(--weight-semibold) var(--text-md)/var(--leading-snug) var(--font-sans);
  --type-body:         var(--weight-regular) var(--text-sm)/var(--leading-normal) var(--font-sans);
  --type-body-strong:  var(--weight-medium) var(--text-sm)/var(--leading-normal) var(--font-sans);
  --type-label:        var(--weight-medium) var(--text-xs)/var(--leading-snug) var(--font-sans);
  --type-caption:      var(--weight-regular) var(--text-xs)/var(--leading-snug) var(--font-sans);
  --type-mono:         var(--weight-regular) var(--text-xs)/var(--leading-snug) var(--font-mono);
  --type-mono-lg:      var(--weight-medium) var(--text-lg)/var(--leading-tight) var(--font-mono);
}
