Foundations

Every visual decision on this site traces back to four raw materials: typefaces, colors, spacing, and motion. These aren’t abstract tokens waiting to be assembled — they carry specific opinions about how text should feel on screen, how much room it needs to breathe, and how quickly the eye should be guided from one state to the next.

The foundations were chosen together. Signifier’s warm serifs informed the Flexoki palette; the palette’s ink-on-paper warmth motivated the spacing scale’s generous margins; the spacing rhythm shaped the easing curve that governs every transition. Change one and the others shift in response.


Typography

Two typefaces carry the entire site. Signifier, a variable serif by Klim Type Foundry, handles everything a reader spends time with — body prose, headings, pull quotes, the nameplate. Montreuil, a humanist sans by 205TF, handles everything that orients them — navigation, dates, captions, category pills. Size, weight, and spacing create all hierarchy. No colors, no borders, no backgrounds.


Color

The palette is built entirely from Flexoki by Steph Ango — colors designed around the warmth of ink on paper. Three semantic tiers organize everything: surfaces (the paper), structure (borders and dividers), and text (the ink). One accent color signals interactivity. The reader chooses which hue. Every value is hand-tuned independently for light and dark mode.


Spacing

Five tokens — xs through xl — deliberately constrain every spacing decision. A single content column at 42rem keeps prose at a comfortable reading measure. Three breakpoints (1080px, 768px, 600px) handle responsive behavior. The constraint is the point: fewer choices mean fewer opportunities for drift.


Motion

One signature easing curve governs every transition: a fast start that decelerates into a natural stop. Motion exists only to confirm actions and create spatial continuity — weight shifts on hover, layout expansion on interaction. No entrance animations, no gratuitous movement. A prefers-reduced-motion query disables all of it.