:root{
  /* Size ramp */
  --size-display-lg:52px;
  --size-display-md:42px;
  --size-display-sm:34px;
  --size-title-lg:25px;
  --size-title-md:20px;
  --size-title-sm:17px;
  --size-body-lg:17px;
  --size-body-md:15px;
  --size-body-sm:13px;
  --size-label:13px;
  --size-caption:12px;
  --size-overline:11px;

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

  /* Line heights */
  --leading-tight:1.1;
  --leading-snug:1.25;
  --leading-normal:1.45;
  --leading-relaxed:1.6;

  /* Tracking — negative on display only */
  --tracking-display:-0.028em;
  --tracking-title:-0.016em;
  --tracking-normal:0;
  --tracking-overline:0.06em;
}

/* Utility text roles — used by cards and kits, safe for consumers. */
.rs-display-lg{font:var(--weight-bold) var(--size-display-lg)/var(--leading-tight) var(--font-display);letter-spacing:var(--tracking-display);color:var(--text-strong)}
.rs-display-md{font:var(--weight-bold) var(--size-display-md)/var(--leading-tight) var(--font-display);letter-spacing:var(--tracking-display);color:var(--text-strong)}
.rs-display-sm{font:var(--weight-bold) var(--size-display-sm)/1.15 var(--font-display);letter-spacing:var(--tracking-display);color:var(--text-strong)}
.rs-title-lg{font:var(--weight-semibold) var(--size-title-lg)/var(--leading-snug) var(--font-sans);letter-spacing:var(--tracking-title);color:var(--text-strong)}
.rs-title-md{font:var(--weight-semibold) var(--size-title-md)/1.3 var(--font-sans);letter-spacing:var(--tracking-title);color:var(--text-strong)}
.rs-title-sm{font:var(--weight-semibold) var(--size-title-sm)/1.35 var(--font-sans);color:var(--text-strong)}
.rs-body-lg{font:var(--weight-regular) var(--size-body-lg)/var(--leading-relaxed) var(--font-sans);color:var(--text-body)}
.rs-body-md{font:var(--weight-regular) var(--size-body-md)/var(--leading-normal) var(--font-sans);color:var(--text-body)}
.rs-body-sm{font:var(--weight-regular) var(--size-body-sm)/var(--leading-normal) var(--font-sans);color:var(--text-body)}
.rs-label{font:var(--weight-medium) var(--size-label)/1.35 var(--font-sans);color:var(--text-strong)}
.rs-caption{font:var(--weight-regular) var(--size-caption)/1.4 var(--font-sans);color:var(--text-muted)}
.rs-overline{font:var(--weight-semibold) var(--size-overline)/1.4 var(--font-sans);letter-spacing:var(--tracking-overline);text-transform:uppercase;color:var(--text-muted)}
.rs-numeric{font:var(--weight-medium) var(--size-body-md)/1.4 var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-strong)}
