Skip to content
Site volume
Colourway

Foundations

Type

Anybody for display, Schibsted Grotesk for text, Shantell Sans for lettering, Geist Mono for code only.

  • Experimental
On this page

Three families do the talking and a fourth only handles code. Anybody stretches for posters, Schibsted Grotesk reads for hours, Shantell Sans letters the comic balloons, and Geist Mono stays inside code blocks where it belongs. Every piece of text uses a role class, never a raw size.

The families#

Print it loud

.mk-type-display size clamp(3rem, 2.0714rem + 3.81vw, 6.5rem) leading 0.9

Anybody, on its width axis. The standard voice is near-normal and upright for heads; the wide italic and the condensed are for three words or fewer on one line: posters, SFX and the volume dial.

Schibsted Grotesk reads for hours without complaining about it.

.mk-type-lede size clamp(1.25rem, 1.1571rem + 0.381vw, 1.5rem) leading 1.4

Schibsted Grotesk for body, labels and controls, at 16 px or more with a generous leading.

Pow, it shipped by noon

.mk-type-letter-balloon size 1rem leading 1.42

Shantell Sans, all caps, in balloons and captions only. Balloons stay short: 35 words is the page limit.

import { Button } from '@maxgrits/overprint-react/button';

.mk-type-code size 1rem leading 1.6

Geist Mono appears in code blocks and inline code, nowhere else (D-D9). No mono headlines, no mono labels, no mono "tech vibes".

Roles#

The roles by family, each printed in its own class with its size token. Sizes are fluid where the role is.

Text: Schibsted Grotesk (13 roles)
Text roles
RoleSizeLeadingSample
.mk-type-ledeclamp(1.25rem, 1.1571rem + 0.381vw, 1.5rem)1.4Pebblepath
.mk-type-statementclamp(1.375rem, 1.2357rem + 0.571vw, 1.875rem)1.3Pebblepath
.mk-type-body1.125rem1.55Pebblepath
.mk-type-body-ui1rem1.5Pebblepath
.mk-type-meta1rem1.4Pebblepath
.mk-type-row-title1.125rem1.3Pebblepath
.mk-type-field-label1rem1.3Pebblepath
.mk-type-label0.875rem1.3Pebblepath
.mk-type-control-sm1rem1Pebblepath
.mk-type-control-md1.0625rem1Pebblepath
.mk-type-control-lg1.125rem1Pebblepath
.mk-type-nav1rem1Pebblepath
.mk-type-code1rem1.6Pebblepath
Display: Anybody (10 roles)
Display roles
RoleSizeLeadingSample
.mk-type-displayclamp(3rem, 2.0714rem + 3.81vw, 6.5rem)0.9Pebblepath
.mk-type-head-sectionclamp(2rem, 1.675rem + 1.333vw, 3.25rem)1Pebblepath
.mk-type-head-cardclamp(1.5rem, 1.3607rem + 0.571vw, 2rem)1.05Pebblepath
.mk-type-kickerclamp(1.5rem, 1.3607rem + 0.571vw, 2rem)1.1Pebblepath
.mk-type-numeral-xlclamp(3.5rem, 2.9429rem + 2.2857vw, 5.5rem)0.9Pebblepath
.mk-type-numeral-lclamp(2.75rem, 2.5179rem + 0.9524vw, 3.625rem)0.9Pebblepath
.mk-type-numeral-mclamp(2rem, 1.9071rem + 0.381vw, 2.25rem)0.95Pebblepath
.mk-type-numeral-s1.5rem1Pebblepath
.mk-type-sfxclamp(3.5rem, 2.2rem + 5.333vw, 8rem)0.85Pebblepath
.mk-type-wordmark1.3125rem1Pebblepath
Lettering: Shantell Sans (5 roles)
Lettering roles
RoleSizeLeadingSample
.mk-type-letter-balloon1rem1.42Pow, it ships
.mk-type-letter-caption1rem1.5Pow, it ships
.mk-type-letter-shout1.3125rem1.1Pow, it ships
.mk-type-letter-whisper1rem1.42Pow, it ships
.mk-type-letter-note1rem1.4Pow, it ships

The second ink#

Display type of 2 rem and larger prints twice: the second ink lands off register as it arrives and stays there at rest (D-D6, Max's call). It is one token switch, data-mk-second-ink, with three settings:

rest (default)

Fernlight

motion

Fernlight

off

Fernlight

Below 2 rem the offset reads as blur, so smaller type never prints twice. Quiet and more contrast turn it off too.