Design System

Internal kitchen sink. Every token and component in one place. Not indexed.

Colours

Semantic tokens — adapt automatically in dark mode.

--color-bg Page background
--color-surface Elevated surface
--color-text Body text
--color-muted Secondary text
--color-link Links
--color-border Borders

Typography

Display — post title

The craft of good writing

H2 — section heading

Why this matters

H3

A closer look

H4

Detail

Heading label — section and subsection marker

Section title

Lead — first paragraph

Every piece of writing starts with a question. The answer isn't always obvious, and that's the point. You follow the question wherever it leads.

Body

Good writing is precise without being cold, direct without being blunt. It earns the reader's time by saying something worth reading. The links look like this, understated and clearly marked. Bold is used sparingly, for emphasis that actually needs it.

Muted

Published 9 May 2026 · 5 min read

Blockquote

The enemy of art is the absence of limitations. — Orson Welles

Inline code

Use npm run check before committing.

Monospace / code block

function greet(name: string): string {
  return `Hello, ${name}`;
}

Spacing

4 px grid. 1 unit = 4 px = 0.25 rem.

--space-1 4px
--space-2 8px
--space-3 12px
--space-4 16px
--space-5 20px
--space-6 24px
--space-8 32px
--space-10 40px
--space-12 48px
--space-16 64px

Components

PageHeader

Section title

A short description of what this page is about.

FormattedDate

Tags

Meta block

Code block

export async function getStaticPaths() {
  const posts = await getCollection('posts');
  return posts.map((post) => ({
    params: { slug: post.id },
    props: { post },
  }));
}