Visual Identity

Typography

Font families

Signifier Light

Display / large headings (h1, h2, h3)

Signifier-Light, serif

Honest folks doing honest work.

Used automatically on h1, h2, and h3. Sets the editorial tone of the brand — never used at body text sizes. Available as `font-serif` token but rarely needed manually since the CSS base layer applies it.

Light 300

PP Mori

Sub-headings, body, UI

PP Mori, sans-serif

Honest folks doing honest work.

Default font everywhere except h1/h2/h3. Auto-applied — never add `font-sans` to body text or sub-headings.

Light 300Regular 400Medium 500SemiBold 600Bold 700

Type scale

NameSizeLine heightWeightFont
h1 (desktop)120px1.1300Signifier Light
h1 (mobile)50px1.1500Signifier Light
h2 (desktop)85px1.094300Signifier Light
h2 (mobile)32px1.094500Signifier Light
h3 (desktop)50px1.21300Signifier Light
h3 (mobile)28px1.21500Signifier Light
h4 (desktop)40px1em400PP Mori
h4 (mobile)18px1em600PP Mori
h5 (desktop)30px1.36400PP Mori
h5 (mobile)20px1.36700PP Mori
h626px1em600PP Mori
p (desktop)24px1.5400PP Mori
p (mobile)18px1.6300PP Mori
p-sm18px1.58300Signifier Light
p-xs12px1emPP Mori

Rules

  • Use semantic HTML tags. Don't add sizing classes — the CSS base layer handles all responsive font sizing automatically inside .tailwind-scope.
  • Never add `font-sans` to body or sub-headings, never add `font-serif` to h1/h2/h3 — both are auto-applied.
  • Display overrides (.display-h1, .display-h2, .display-h3) exist for visual hierarchy without breaking heading order. Never use them to skip levels.
  • When Figma shows a size that doesn't match a token, use the closest semantic heading level rather than an arbitrary text-[Xpx] class.