Skip to content

Typography

Werklist sets its product, website, documents and slides in Satoshi. A larger ramp serves the pages people read, and a denser one serves the product people work in.

Typeface

Regular400

Aa Bb Gg Rr Čč Ćć Đđ Šš Žž 0123456789

Medium500

Aa Bb Gg Rr Čč Ćć Đđ Šš Žž 0123456789

Bold700

Aa Bb Gg Rr Čč Ćć Đđ Šš Žž 0123456789

Use Satoshi in the product, on the website, in documents and in the deck, in three weights: regular for reading, medium for controls, labels and Title 3 of the reading ramp, and bold for every other heading.

Until Satoshi loads, text shows in the device’s own sans serif and swaps once the font arrives.

Satoshi covers Croatian and Serbian Latin at all weights. Text in Cyrillic, Greek or Devanagari is set in Noto Sans.

Outgoing email is the exception: it is set in Arial, because email clients remove web fonts.

Family
Satoshi, then the system sans serif
--font-sans
Weights
400 regular, 500 medium, 700 bold
Font features
ss01, cv01, cv11 on all text
Code
System monospace
--font-mono
Email
Arial, 13/18 px
--font-email

Type for reading

Display56/60, bold32/38 below 768 px

Werklist helps companies hire reliable workers.

Title 144/52, bold28/34 below 768 px

Werklist helps companies hire reliable workers.

Statement40/48, medium24/32 below 768 px

Werklist helps companies hire reliable workers.

Title 228/34, bold22/28 below 768 px

Werklist helps companies hire reliable workers.

Lede22/32, regular18/28 below 768 px

Werklist helps companies hire reliable workers.

Title 320/28, medium18/26 below 768 px

Werklist helps companies hire reliable workers.

Body16/26, regular16/24 below 768 px

Werklist helps companies hire reliable workers.

Small14/22, regular

Werklist helps companies hire reliable workers.

Navigation14/20, medium

Werklist helps companies hire reliable workers.

Caption13/20, regular

Werklist helps companies hire reliable workers.

Pages, documents and marketing screens use the reading ramp. Keep a line of running text between 45 and 75 characters.

On screens narrower than 768 px, Display, Statement, Title 1, Title 2, Title 3, Lede and Body step down to the smaller size listed with each.

Type for the product

WerkOS screens are dense, so the product ramp is smaller and tighter. Grid rows are set at 13 px, controls and messages at 14 px, hints and timestamps at 12 px.

Nothing in the product is smaller than 11 px. On touch screens, text people type is at least 16 px, so the browser does not zoom the page.

Warehouse operators, Zagreb

12 of 15 workers placed

Updated 2 hours ago

Subtitle, dense and caption

Use the number on the photo page.

Dense, body and caption
RoleWorkersStart date
Welders, Rijeka83 Nov 2026
Kitchen assistants, Split1417 Nov 2026
Dense, medium in the header and the figures
Title 1
26/32 px, bold, -0.02 em
--type-product-title-1
Title 2
22/28 px, bold, -0.02 em
--type-product-title-2
Title 3
17/24 px, bold, -0.01 em
--type-product-title-3
Subtitle
15/22 px, bold
--type-product-subtitle
Body
14/20 px, regular, medium on controls
--type-product-body
Dense
13/18 px, regular, medium on headers and figures
--type-product-dense
Caption
12/16 px, regular or medium
--type-product-caption
Caption small
11/14 px, medium
--type-product-caption-small

Numbers

Figures in a table line up in columns. Set columns, totals, timers and counters in tabular figures, where every digit takes the same width.

In running text, keep the default proportional figures.

  • 1,180
  • 71
  • 9,406
  • 78
  • 12
  • 2,504
Proportional
  • 1,180
  • 71
  • 9,406
  • 78
  • 12
  • 2,504
Tabular
Class
tabular
Font features
tnum, ss01, cv01, cv11, kerning off

Setting text

Write headings, labels and buttons in sentence case: capitalize the first word and proper nouns only.

Do not set labels in capitals or add letter spacing.

Show hierarchy with size and weight first, then with a quieter ink.

Align text to the left and do not justify it. Center a line only inside a component that is centered itself, such as an empty state.

Use bold only on headings, never on words inside running text. The interface has no italics, and emphasis cannot depend on bold or italics alone, since a screen reader does not announce them.

Let headings and labels wrap onto a second line. Cut text short with an ellipsis only in a grid cell, where the full text opens with the row.

Choose a heading level by the outline of the page and its size from the ramp. Do not skip a level to get a smaller heading.

Keep text people may need elsewhere selectable, such as an error message, a passport number or an email address.

Ink in both themes

Use the primary ink for content, the label ink for column headers and field labels that people scan, and the muted ink for metadata and hints. Sizes and weights stay the same in both themes.

Every ink meets a contrast of 4.5 to 1 at any size, headings included. The muted ink sits closest to that floor, so keep it off tinted and darker grounds.

Kitchen assistants, Split

Start date

17 November 2026

Updated today

Light theme: primary, label and muted ink on a card.

Kitchen assistants, Split

Start date

17 November 2026

Updated today

Dark theme: primary, label and muted ink on a card.

Permitted and not permitted

Permitted

  • Sizes from the ramp

    Each step has a role, so a screen stays in order.

  • Medium control labels, bold headings

  • Tabular figures in columns and totals

  • Labels in sentence case

Not permitted

  • A size between two steps, such as 13.5 px

    It belongs to no step and drifts from the text beside it.

  • Weight 600

    Satoshi has no semibold, so the browser draws bold or fakes one.

  • Capitals with letter spacing

    They slow reading and turn a label into decoration.

  • Text smaller than 11 px

NextLayout

Typography

Sets the typeface, the reading ramp, the product ramp, tabular figures and the rules for setting text in Werklist products and pages.

  • Kind: foundation
  • Page: https://design.werklist.com/foundations/typography
  • Version: 2.1.2

Rules

  • Satoshi on the product, the website, documents and slides.
  • The reading ramp (--type-*) on pages, documents and slides. The product ramp (--type-product-*) on WerkOS screens.
  • Reading ramp, size/line height in px, weight, tracking: display 56/60, 700, -0.022em; title-1 44/52, 700, -0.02em; statement 40/48, 500, -0.015em; title-2 28/34, 700, -0.012em; lede 22/32, 400; title-3 20/28, 500; body 16/26, 400; small 14/22, 400; nav 14/20, 500; caption 13/20, 400.
  • Below 768 px: display 32/38, statement 24/32, title-1 28/34, title-2 22/28, title-3 18/26, lede 18/28, body 16/24. The other steps keep their values.
  • Product ramp, size/line height in px, weight, tracking: title-1 26/32, 700, -0.02em; title-2 22/28, 700, -0.02em; title-3 17/24, 700, -0.01em; subtitle 15/22, 700; body 14/20, 400, regular, medium on controls; dense 13/18, 400, regular, medium on headers and figures; caption 12/16, 400, regular or medium; caption-small 11/14, 500.
  • No size between two steps, such as 13.5 px.
  • Nothing in the product is smaller than 11 px.
  • On touch screens, text people type is at least 16 px, so the browser does not zoom the page.
  • Tabular figures on everything that lines up: columns, totals, timers, counters.
  • Tabular figures: font-variant-numeric: tabular-nums; font-feature-settings: "tnum", "ss01", "cv01", "cv11"; font-kerning: none. Apply them to a whole column.
  • Keep running text between 45 and 75 characters a line.
  • Weight 400 for reading text and values.
  • Weight 500 for control labels, navigation, grid headers, row figures and title-3 of the reading ramp.
  • Weight 700 for every other heading. No weight 600: Satoshi does not have it.
  • Bold only on headings, never on words inside running text.
  • Sentence case. No capitals and no letter spacing. Negative tracking only on the steps that list it.
  • Align text to the left and never justify it. No italics in the interface.
  • Headings, labels and buttons wrap. An ellipsis cuts text only in a grid cell whose full text opens with the row.
  • Choose a heading level by the outline of the page and its size from the ramp. Do not skip a level to get a smaller heading.
  • Text in Cyrillic, Greek or Devanagari is set in Noto Sans.
  • Outgoing email is set in Arial (--font-email) at 13/18 px, because email clients remove web fonts.

Accessibility

  • Text meets 4.5 to 1 against its ground at every size, headings included.
  • --text-muted sits closest to that floor. Keep it off tinted and darker grounds.
  • Emphasis never depends on bold or italics alone.
  • Text a reader may need elsewhere stays selectable: an error message, a passport number, an email address.

Tokens

  • --font-sans
  • --font-mono
  • --font-email
  • --type-display
  • --type-title-1
  • --type-statement
  • --type-title-2
  • --type-lede
  • --type-title-3
  • --type-body
  • --type-small
  • --type-nav
  • --type-caption
  • --type-product-title-1
  • --type-product-title-2
  • --type-product-title-3
  • --type-product-subtitle
  • --type-product-body
  • --type-product-dense
  • --type-product-caption
  • --type-product-caption-small
  • --text
  • --text-label
  • --text-muted
  • .tabular

JSON

{
  "title": "Typography",
  "path": "/foundations/typography",
  "url": "https://design.werklist.com/foundations/typography",
  "text": "https://design.werklist.com/agent/foundations/typography",
  "summary": "Satoshi, the ramp for reading, the denser ramp for the product, and how to set text and numbers.",
  "version": "2.1.2",
  "kind": "foundation",
  "name": "Typography",
  "purpose": "Sets the typeface, the reading ramp, the product ramp, tabular figures and the rules for setting text in Werklist products and pages.",
  "tokens": [
    "--font-sans",
    "--font-mono",
    "--font-email",
    "--type-display",
    "--type-title-1",
    "--type-statement",
    "--type-title-2",
    "--type-lede",
    "--type-title-3",
    "--type-body",
    "--type-small",
    "--type-nav",
    "--type-caption",
    "--type-product-title-1",
    "--type-product-title-2",
    "--type-product-title-3",
    "--type-product-subtitle",
    "--type-product-body",
    "--type-product-dense",
    "--type-product-caption",
    "--type-product-caption-small",
    "--text",
    "--text-label",
    "--text-muted",
    ".tabular"
  ],
  "rules": [
    "Satoshi on the product, the website, documents and slides.",
    "The reading ramp (--type-*) on pages, documents and slides. The product ramp (--type-product-*) on WerkOS screens.",
    "Reading ramp, size/line height in px, weight, tracking: display 56/60, 700, -0.022em; title-1 44/52, 700, -0.02em; statement 40/48, 500, -0.015em; title-2 28/34, 700, -0.012em; lede 22/32, 400; title-3 20/28, 500; body 16/26, 400; small 14/22, 400; nav 14/20, 500; caption 13/20, 400.",
    "Below 768 px: display 32/38, statement 24/32, title-1 28/34, title-2 22/28, title-3 18/26, lede 18/28, body 16/24. The other steps keep their values.",
    "Product ramp, size/line height in px, weight, tracking: title-1 26/32, 700, -0.02em; title-2 22/28, 700, -0.02em; title-3 17/24, 700, -0.01em; subtitle 15/22, 700; body 14/20, 400, regular, medium on controls; dense 13/18, 400, regular, medium on headers and figures; caption 12/16, 400, regular or medium; caption-small 11/14, 500.",
    "No size between two steps, such as 13.5 px.",
    "Nothing in the product is smaller than 11 px.",
    "On touch screens, text people type is at least 16 px, so the browser does not zoom the page.",
    "Tabular figures on everything that lines up: columns, totals, timers, counters.",
    "Tabular figures: font-variant-numeric: tabular-nums; font-feature-settings: \"tnum\", \"ss01\", \"cv01\", \"cv11\"; font-kerning: none. Apply them to a whole column.",
    "Keep running text between 45 and 75 characters a line.",
    "Weight 400 for reading text and values.",
    "Weight 500 for control labels, navigation, grid headers, row figures and title-3 of the reading ramp.",
    "Weight 700 for every other heading. No weight 600: Satoshi does not have it.",
    "Bold only on headings, never on words inside running text.",
    "Sentence case. No capitals and no letter spacing. Negative tracking only on the steps that list it.",
    "Align text to the left and never justify it. No italics in the interface.",
    "Headings, labels and buttons wrap. An ellipsis cuts text only in a grid cell whose full text opens with the row.",
    "Choose a heading level by the outline of the page and its size from the ramp. Do not skip a level to get a smaller heading.",
    "Text in Cyrillic, Greek or Devanagari is set in Noto Sans.",
    "Outgoing email is set in Arial (--font-email) at 13/18 px, because email clients remove web fonts."
  ],
  "accessibility": [
    "Text meets 4.5 to 1 against its ground at every size, headings included.",
    "--text-muted sits closest to that floor. Keep it off tinted and darker grounds.",
    "Emphasis never depends on bold or italics alone.",
    "Text a reader may need elsewhere stays selectable: an error message, a passport number, an email address."
  ]
}

Raw file: https://design.werklist.com/agent/foundations/typography