Home/Site design system

The design system behind this site

This portfolio runs on a small design system of its own: color tokens, three modes and a few shared components. Every value on this page comes from the site's own stylesheet. The Day, Night and Focus modes mirror my Figma variables experiment, One file, three moods.

Tokens3 modesComponentsAccessibility
Modes

One set of tokens, three modes

Components never use raw colors. They use tokens, and each mode changes the token values, so the whole site switches at once. Try the switch here or in the top right.

Day

Light porcelain background, frosted glass and soft color in the background. The default when your device is in light mode.

Night

The same layout on dark surfaces, with lighter accent and status colors so they stay readable.

Focus

A low-distraction view: no motion, no blur, solid surfaces, larger text and darker body text. It starts on its own when a device asks for more contrast.

Color

Color tokens

Fourteen color tokens cover the whole site. Focus mode keeps the Day or Night values and changes only the ones listed.

TokenUsed forDayNightFocus
--bgPage background#eceef1#0e0f12same
--surfaceCards and panels#ffffff#1a1c22replaces glass
--surface-2Quiet fills#f5f6f8#22252csame
--inkHeadings and main text#14161b#eef0f4same
--ink-2Body text#4b505c#b5bac5set to ink, for more contrast
--ink-3Labels and captions#757b88#868c99same
--lineBorders and dividers#d5d9e0#2e323bsame
--sunAccent, from the sunflower photos#f2b300#ffc533same
--sun-inkAccent text#7a5600#ffd66bsame
--selFocus rings and selection#0d99ff#2ea8ffsame
--okSuccess#1a7f4b#4cc38asame
--warnWarning#a15c00#f0a43asame
--badError#c2312f#ff6b66same
--glassFrosted nav and cardsrgba(255,255,255,.72)rgba(28,30,36,.70)solid surface, no blur
Type

Three typefaces, one job each

Display · Bricolage Grotesque

Case studies

Headings and big numbers.

Body · Geist

I make complex information clear for the people who use it.

Paragraphs, buttons and interface text.

Labels · Geist Mono

Client work · 2018 – now

Small labels, dates and code.

Shape

Layout and corners

One 1180px column with a side gutter that shrinks from 40px to 16px on phones. Corners get rounder as elements get bigger.

Pills · 999px
Small cards · 14px
Cards · 22px
Project cards · 26px
Components

The pieces every page is built from

Tags
DefaultFigmaAI-assistedAccent
Section label
Selected work · 2018 – now
Glass panel
Frosted surface

Used for the nav, project cards and pop-ups.

Numbered notes
  1. Number on the left, text flows beside it.
  2. Used for annotated screenshots.
Reading switch

The “Full story / 60-second version” control on every case study, for people who skim.

See it on DESE →
Accessibility

Built in, not added later

  • Follows the device's light or dark setting until you choose a mode.
  • Turns off motion when the device asks for reduced motion, and in Focus mode.
  • Starts in Focus mode when the device asks for more contrast.
  • Visible focus rings on links, buttons and controls.
  • The before-and-after sliders, the XCQ search and the reading switch all work with a keyboard.