Style

Rendered from the live tokens, so it cannot go stale. Switch the theme in the header to see every value in the other scheme.

Type scale

Fluid between 320 and 1280 pixels — resize the window and watch it move. Newsreader's optical-size axis follows, so the large steps are a different drawing rather than the small one enlarged.

--text-step-3page title
The lethal trifecta
--text-step-2section
The lethal trifecta
--text-step-1entry title
The lethal trifecta
--text-step-0body
The lethal trifecta
--text-step--1metadata
The lethal trifecta
--text-step--2fine print
The lethal trifecta

Colour roles

Two hues over warm neutrals. Contrast is verified in CI by scripts/check-contrast.mjs, not by eye.

Links

An unvisited link in prose is rust with a solid underline. A visited one shifts to teal and changes to a dotted underline, so the state survives for a reader who cannot tell the two hues apart. Tab to any link to see the focus ring.

Entry titles and permalink dates are the exception. The title carries the primary hue and underlines only on hover; the date beside it is ink. Colour sits on the thing you are being invited to click, and the date reads as structure rather than as a second link competing with it.

Neither one flips hue when visited. Letting them inherit the plain link rules meant a reader's browser history repainted every title teal, which inverted the palette across the whole site depending on where that reader had already been. A read title dims within its own hue instead, and the date — which points back here rather than out — never changes at all.

Metadata voice

02 AUG 2026 · simonwillison.net · tabular figures 0123456789

Mono, small, muted. Everything the page says about itself — dates, hostnames, counts, navigation — uses it, and nothing else does.

Prose

Body copy sits on a measure of about 65 characters. Entries are short by design, so this is a reading column rather than a page layout. The token is set in ch units, which measure the width of a zero rather than an average letter — in this typeface that is a factor of 1.24, so the number in the stylesheet is deliberately not the character count.

A quotation is set on a hairline rule in the muted role, italic, at the same size as the body.
  • Lists use a disc marker and tight leading between items.
  • Inline code borrows the mono face at nine tenths of the surrounding size, so it sits on the same baseline.