Scrums.comSorted UI@scrums/sorted-ui v0.1.0scrums.com
Typography03
/03Typography

Rules of typesetting throughout the system.


Typeface

Two families, one typeface: IBM Plex. Mono-first, engineered for operators — Sans exists solely for long-form prose. Copy either stack straight into CSS.

Aa
IBM Plex Mono--font-mono

The base for everything — headings, data, interface chrome, and labels. Mono-first, engineered for operators.

'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace
Aa
IBM Plex Sans--font-sans

The one exception, reserved for body-* long-form prose only — never headings, data, or UI chrome.

'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif

Modifiers

Two emphasis modifiers layer on top of any size in the scale — they change weight/colour only, never the size or family. Use <strong> for real semantic emphasis, not for making text look bigger.

Aa  Example◇ ModifierUsage
Subtle — de-emphasised textSecondary/muted text within any size — sets colour to --ds-ink-5, weight and size untouched.
Regular text with a strong span inlineSemantic emphasis via <strong> — steps weight up one notch on the five-step ladder (e.g. regular→medium, medium→semibold, semibold→bold), never changes colour or size.

Headings

Used to introduce pages or sections. Plex Mono --font-weight-semibold; tracking tightens as size increases. The two largest tiers are responsive — resize the window below 760px.

Aa  Example◇ Class nameUsage
Heading 72Marketing heroes. Responsive: 40px below 760px.
Heading 64Secondary marketing heroes.
Heading 56Large section intros.
Heading 48Page titles. Responsive: 32px below 760px.
Heading 40Dense page titles.
Heading 32Section headers, dashboard headings.
Heading 24Compact section headers.
Heading 20Sub-section headers.
Heading 16Card and compartment titles.
Heading 14Smallest heading — dense list/table group headers.

Data

Telemetry and metrics. Plex Mono; always font-variant-numeric: tabular-nums.

Aa  Example◇ Class nameUsage
99.999%Hero telemetry readouts.
12,480Stat strip figures.
8,462Card metrics.
21d rampInline data points.
A17 · af-cptNode and region tags.

Buttons

Only used inside components that render buttons — never for links or plain text. Plex Mono --font-weight-semibold.

Aa  Example◇ Class nameUsage
Deploy Scrums.comLargest button — marketing CTAs.
DeployDefault button.
DocumentationCompact buttons, and buttons placed inside an input field.

Interface

Navigation and tag chrome. Plex Mono.

Aa  Example◇ Class nameUsage
PlatformNav links.
01 / 05Nav indices.
af-cptTags and chips.

Body

Long-form prose. The only place Plex Sans is used. Never below the 15px accessibility floor.

Aa  Example◇ Class nameUsage
Software Engineering Orchestration Platform.Lead paragraphs.
Never below 15px for long-form prose.Default body copy. Workhorse.
Secondary descriptive text, captions.Captions, secondary copy.
Fine print, legal, metadata.Legal, fine print.

Labels

Uppercase, tracked. Coordinates, addresses, and eyebrows. Plex Mono.

Aa  Example◇ Class nameUsage
Region // af-cptSection labels, eyebrows. Workhorse.
Section headerDense labels.
Micro labelMicro coordinates, ticks.

Weights

Five weights, system-wide — up from three. Weight, not size, now carries most of the legibility/hierarchy load: light for de-emphasised metadata, regular for prose, medium for secondary UI text and data labels, semibold for headings and buttons, bold for the highest-impact brand moments. Every step here is a real static weight IBM Plex Mono ships on Google Fonts — no interpolated in-between values, since this family has no variable-font axis to interpolate from.

Aa  Example◇ TokenUsage
Light 300De-emphasised metadata, timestamps, muted captions.
Regular 400Body copy, default UI text.
Medium 500Nav links, data figures, tags.
Semibold 600Headings, buttons, emphasis.
Bold 700Highest-impact brand moments — hero display numerals, top-of-funnel headlines.

Line height

Tightens as size increases — a 72px headline needs a much tighter line-box than 15px prose to avoid looking loose. Named by value so the token doubles as the number.

Aa  Example◇ TokenUsage
0.92 — tightestheading-hero.
0.95heading-64.
1.0 — numericThe entire Data family; heading-56.
1.05heading-h1.
1.08heading-40.
1.1heading-h2.
1.15heading-24.
1.2heading-h3.
1.3heading-h4.
1.35heading-14.
1.55body-small, body-tiny.
1.6 — prosebody-large, body-default.

Tracking

Negative tracking tightens large display type; positive tracking opens up small uppercase labels so they stay legible. Never use a value outside this scale.

Aa  Example◇ TokenUsage
Tightest-0.05em — heading-hero, heading-64, heading-h1.
Tighter LG-0.04em — heading-56, heading-40.
Tighter-0.03em — heading-h2, data-hero, data-large.
Tight-0.02em — heading-24, data-medium, ui-nav.
Snug-0.01em — heading-h3, heading-h4.
Normal0 — buttons, body copy, the default.
Wide.04em — ui-tag.
Wider.05em — data-tiny.
Widest.06em — label-small.
Widest LG.08em — label-default, ui-nav-index.
Widest XL.12em — label-tiny.