Klarhimmel UI

Typography

Geist for headings and text, Geist Mono for code. Sizes are multiples of one base size; titles scale with their container.

The scale, drawn live

Each line is set in its own token. Title and display scale with the width of the container they sit in, so a block in a narrow column gets a smaller title; the pixel size shown is what it is on this page right now.

  • text-kh-display

    Display: calm software

    Page titles in heroes

  • text-kh-title

    Title: calm software

    Section titles

  • text-kh-heading

    Heading: calm software

    Item titles

  • text-kh-lead

    Lead: calm software

    Section descriptions

  • text-kh-body

    Body: calm software

    Body text

  • text-kh-small

    Small: calm software

    Secondary text, labels

  • text-kh-caption

    Caption: calm software

    Captions, meta, badges

Geist, sans and display

Weight 400: the quick brown fox

Weight 500: the quick brown fox

Weight 600: the quick brown fox

Geist Mono, code

const style = { radius: 8 };

0123456789 { } [ ] ( ) =>

Type scale

Base size 16 px. Title and display are fluid in the block's container width (cqi), not the viewport.

TailwindSizeUse for
text-kh-captionsize × 0.8125Captions, meta, badges
text-kh-smallsize × 0.875Secondary text, labels
text-kh-bodysizeBody text
text-kh-leadsize × 1.1875Section descriptions
text-kh-headingsize × 1.25Item titles
text-kh-titlefluid, 1.875 to 2.75 × sizeSection titles
text-kh-displayfluid, 2.5 to 4.5 × sizePage titles in heroes

Fonts a style can use: Geist, Geist Mono, Inter, Space Grotesk, DM Sans, Instrument Serif, Fraunces, JetBrains Mono.

Rules

Readable first.

Headings balance

Headings use text-wrap: balance and paragraphs text-wrap: pretty, so no line is left with one word.

Muted text

Do not set essential content in muted colour below the small size.