:root {
  --font-family-sans: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; /** Primary typeface — Public Sans (the NSW Government brand typeface) with system, Helvetica/Arial, and emoji fallbacks. Use for all UI and body text. */
  --font-family-display: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; /** Display typeface — currently the same stack as sans; a separate token so display/heading type can diverge from body text later without a breaking change. */
  --font-family-system: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; /** System typeface — currently the same stack as sans; a separate token for system-chrome contexts (toasts, native-feeling UI) that may diverge later. */
  --font-family-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace; /** Monospace stack — JetBrains Mono with ui-monospace and system fallbacks for code, tabular data, and technical content. */
  --font-size-12: 0.75rem; /** Font size 12px (0.75rem) — the step name is the px value at the default root font size. */
  --font-size-14: 0.875rem; /** Font size 14px (0.875rem) — the step name is the px value at the default root font size. */
  --font-size-16: 1rem; /** Font size 16px (1rem) — the step name is the px value at the default root font size. */
  --font-size-18: 1.125rem; /** Font size 18px (1.125rem) — the step name is the px value at the default root font size. */
  --font-size-20: 1.25rem; /** Font size 20px (1.25rem) — the step name is the px value at the default root font size. */
  --font-size-22: 1.375rem; /** Font size 22px (1.375rem) — the step name is the px value at the default root font size. */
  --font-size-24: 1.5rem; /** Font size 24px (1.5rem) — the step name is the px value at the default root font size. */
  --font-size-30: 1.875rem; /** Font size 30px (1.875rem) — the step name is the px value at the default root font size. */
  --font-size-36: 2.25rem; /** Font size 36px (2.25rem) — the step name is the px value at the default root font size. */
  --font-size-48: 3rem; /** Font size 48px (3rem) — the step name is the px value at the default root font size. */
  --font-size-56: 3.5rem; /** Font size 56px (3.5rem) — the step name is the px value at the default root font size. */
  --font-size-64: 4rem; /** Font size 64px (4rem) — the step name is the px value at the default root font size. */
  --font-weight-light: 300; /** Light (300) — large display text only; avoid at body sizes for legibility. */
  --font-weight-regular: 400; /** Regular (400) — default body text weight. */
  --font-weight-medium: 500; /** Medium (500) — subtle emphasis, labels, and navigation. */
  --font-weight-semibold: 600; /** Semibold (600) — headings and strong emphasis. */
  --font-weight-bold: 700; /** Bold (700) — highest emphasis; key figures and primary headings. */
  --font-weight-extrabold: 800; /** Extrabold (800) — hero/display headings (the prose scale uses 800 for h1). */
  --line-height-none: 1; /** Solid (1) — display headings set at their own size (48/48, 56/56, 64/64 in the prose scale). */
  --line-height-tight: 1.2; /** Tight (1.2) — large headings (36/30 in the prose scale). */
  --line-height-snug: 1.3333333; /** Snug (1.3333333) — mid-size headings (32/24, 40/30 in the prose scale). */
  --line-height-base: 1.5; /** Base (1.5) — default for UI text and dense content (24/16, 36/24 in the prose scale); meets WCAG 1.4.12 text-spacing. */
  --line-height-relaxed: 1.6; /** Relaxed (1.6) — subheadings and lead text (32/20 in the prose scale). */
  --line-height-loose: 1.75; /** Loose (1.75) — long-form body text (28/16 in the prose scale). */
  --letter-spacing-tight: -0.0125em; /** Tight tracking (-0.0125em) — large display headings. Value is an em multiplier; string outputs render it with the em unit. */
  --letter-spacing-normal: 0em; /** Normal tracking (0em) — default for body text. Value is an em multiplier; string outputs render it with the em unit. */
  --letter-spacing-wide: 0.025em; /** Wide tracking (0.025em) — small caps, overlines, and small labels. Value is an em multiplier; string outputs render it with the em unit. */
}
