Design system

The actual tokens and primitives this site renders with, imported from the same code the pages use, so this page cannot drift from reality. Quiet, typography-led, near-monochrome with one accent.

Principles

  1. Typography does the design: hierarchy from size, weight, and space, not boxes.
  2. One accent colour, spent sparingly on links and selection.
  3. Hairline borders separate; backgrounds stay out of the way.
  4. Every element earns its place. If it doesn't inform, it goes.
  5. Server-rendered and semantic first; scripts only enhance.

Colour

Tokens are OKLCH with a 140° green hue thread. Toggle the theme to see both modes:

Type

Newsreader (serif) for display, Geist for body and UI, Geist Mono for code and data. Body measure caps at 65ch via max-w-prose.

Page titlePage title
Section headingSection heading
Entry headingEntry heading
BodyBody text at a comfortable measure.
Small bodyCV bullets and dense content.
MetaSecondary information
Fine printTimestamps, utility links

Spacing rhythm

Primitives

TextLink · accent / quiet / ink

Button · primary / secondary / ghost

TextInput · Select · Checkbox

EntryGrid · dated entries (CV, education, lists)

Aug 2023 – Jul 2026

Entry heading

Organisation · context note

Body content sits in the right column; the left gutter carries the date in tabular figures.

MetaText · DateStamp

Secondary information

Divided list (repo table rows)

  • first itemTypeScript · Jul 2026
  • second itemTypeScript · Jul 2026

Prose (blog posts)

Long-form content uses prose-quiet: comfortable line height, accent links, and surface-tinted code blocks.

pnpm build

Selection

Select this sentence to see the accent selection colour.

View as markdown