Skip to main content
Three font families, each with a job. The choices prioritise African language coverage and readability on the devices people actually use.

The font stack

The language-coverage reason is the load-bearing one and is covered in internationalisation.

Loading them

Apply the variables to <html> and set the default with font-sans on <body>.

The type scale

The published scale also defines a 72px display step for hero type on marketing surfaces.

The floor under the scale

Body text is 17px on every device, desktop included, and nothing readable is smaller than 14px: captions, metadata, badges and chart labels are all 14px or more, so text-xs and text-sm both paint 14px. Only display and heading sizes step down as screens grow; body and secondary text never do. See the Bundu floor for where the numbers come from and how to migrate from the 16px body and 12px footnote. Write body copy as text-body. The token layer registers a text-base step at 17px too, but a theme that also defines a colour named base (--color-base) can make the class ambiguous, and the registry has not yet decided how to settle it, so prefer text-body for now.

Serif or sans

Noto Serif for page titles and hero headlines, brand-level messaging, and section headings on landing pages. Noto Sans for everything else: body text, UI labels, buttons, inputs, navigation, card content, error messages.

Heading hierarchy

Use heading levels in order. Never skip from h1 to h3.
Every page has exactly one <h1>. Screen readers build a page outline from this, so a skipped level is a navigation failure, not a styling quirk.

Line height and tracking

Tight tracking stops large headings looking spread out; wide tracking makes all-caps labels readable.

Brand wordmarks

Ecosystem brand names are rendered with an initial capital — Mukoko, Nyuchi, Shamwari, Bundu, Bushtrade, Lingo. This is a brand rule, not a stylistic preference, and it holds everywhere, including headings, labels and running text.

The typography component

The registry ships pre-styled elements: