Design system
A living reference for the system this site is built on, built in the open as proof of craft. Four token modules (type, spacing, color, motion), then the execute layer: how the system is run, the decisions behind it, and one component documented end to end.
Typography
One fluid ramp per role. The clamp min anchors a tight ~1.2 scale at 320px; the max anchors a more dramatic ~1.333 scale at 1440px. Lyon (serif) for display & titles, Founders Grotesk (grotesque) for reading & UI, Founders X-Condensed for labels.
The typefaces
The system runs on two typefaces chosen for character. Both Lyon and Founders Grotesk are revivals. Setting one against the other gives the site its editorial voice and keeps a clear division of labor: Lyon speaks (titles, leads, quotes), Founders works (display structure, reading, UI).
serif · Commercial Type (opens in new tab)
Kai Bernau, 2009. A contemporary serif drawn from Robert Granjon’s 16th-century Renaissance punchcutting, reworked for modern editorial use.
sans · Klim Type Foundry (opens in new tab)
Kris Sowersby, 2012. A grotesque that reaches back past Helvetica to the rougher early-20th-century faces, keeping a directness that later sans-serifs standardized away.
Color
An accented neutral: a near-neutral paper field, near-black ink, and a single oxblood accent. These are the primitives — surface, ink, accent, and status — that the semantic aliases (card, primary, ring, the *-foreground pairs) track. The accent family is one OKLCH hue (~25°) stepped in lightness. Full taxonomy, OKLCH coordinates, and the WCAG/APCA contrast audit are in DESIGN-SYSTEM.md.
Spacing
One named step set (Option A): an 8px grid with a 4px half-step, growing ~geometrically (×1.33–1.5 per step) so every value is a multiple of 8 and the workhorse 16 / 24 survive. Bars render at true size. Section rhythm (--page-gap, --gap-section), the reading measure, and the golden-ratio proportions are fluid or compound, so they live in DESIGN-SYSTEM.md rather than on a slider.
Motion
An ordered duration ramp (80–800ms) on three named easing roles. Each specimen replays a move on the standard ease so you can read the speed; the three eases are shown side by side for curve comparison. CSS --motion-* is canonical; the component transition vars (--card-*, --layer-*, --btn-*) alias it and animation-tokens.ts mirrors it for GSAP. Full rationale in DESIGN-SYSTEM.md (Motion).
Component: the button
One component documented end to end rather than a shallow gallery. The button is a composition, not a prop-driven widget: a real <a>/<button> carrying .btn-interactive (the motion behavior), one geometry (36px tall, 4px radius, a cap-trimmed label + a 34px icon box), and one of three fills. Hover to feel the asymmetric timing; press for the 80ms scale.
Operating model
How a system is governed and evolved is what separates a design system from a style guide, and it is what most portfolios omit. This is an honest, lightweight model for a one-person site: governance is centralized but real (trap sheets, do-not rules, enforced two-layer aliasing, a multi-agent workflow); token changes are the versioned surface, with deprecations migrated rather than left to rot; adoption is measured by token coverage and the absence of off-scale values. Every heavier mechanism (RFCs, federation, semver tags) is named as a deliberate non-goal.
Decisions & non-goals
A rationalized “no” is the strongest systems-thinking evidence available. The high-signal subset of the register: