@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.
