Personal Website

Design System
& Language

A minimal, editorial system for a senior frontend engineer's personal website. Built on three typefaces, a two-color palette, and strict line-based iconography.

line-based editorial type-led serif × mono no photos dark mode

3

Typefaces

Serif · Sans · Mono

2

True Colors

Navy + Accent Blue

1.5px

Icon Stroke

Line-based only

Color Palette

#0F1829

Navy

Primary · text · logo

#1B3BCC

Accent Blue

Links · hover · active

#FAFAF8

Off-white

Background

#888880

Muted

Secondary text · metadata

#F5F5F2

Surface

Cards · code bg

navy / 12%

Border

Dividers · strokes

Navy Opacity Scale

100%
80%
60%
40%
20%
12% · border
6% · surface tint

Typography

Instrument Serif · 80px · ls -0.03em · hero

Building the web.

Instrument Serif · 56px · ls -0.02em · page title

Things I've built
and written.

Instrument Serif · 40px · ls -0.01em · section heading

Recent Writing

Geist · 20px · wt 500 · component headings

Frontend Architecture

Geist · 16px · lh 1.75 · body copy

I'm a senior frontend engineer focused on performance, design systems, and the craft of building interfaces that feel inevitable. Currently working on things I can't talk about yet.

Geist · 14px · secondary / muted

Last updated March 2026 · 5 min read

DM Mono · 14px · metadata, dates, labels

2026 · senior frontend engineer · react / typescript

DM Mono · 12px · uppercase · ls 0.08em · eyebrows & section labels

Projects · Blog · Stories

Iconography

strokeWidth 1.5, fill none. 20×20 inside 44×44 touch targets.

Rules

— strokeWidth: 1.5 always

— fill: none always

— min render size: 16px

— touch target: 44×44px

— stroke inherits text color

— functional only, no decoration

Components

Navigation

Sticky top bar · logo · links · theme toggle

edchkm logo edchkm.com
Design System

Hero

Page opener · eyebrow · serif headline · body · actions

Senior Frontend Engineer

Greetings. Ed
is here.

You've arrived exactly where you were meant to be. This corner of the ether is being forged from raw stardust and code.

LinkedIn

Writing List

Post row · meta · serif title · tags · date

The case for CSS custom properties as your design token layer

Why I stopped using component libraries and what I do instead

On shipping things that aren't perfect

Project Cards

Icon · title · description · tags · link

codeblock

Syntax highlighter built for performance at scale.

token-sync

CLI that keeps design tokens in sync between Figma and code.

focuskit

Accessible focus management primitives for React.

Buttons

Primary · ghost · icon · disabled states

Tags

Mono pill · border · muted · used for labels

css react typescript design systems a11y performance

Dark Mode

CSS custom properties invert · body.dark class toggle

edchkm logo edchkm.com
Design System

Essay · 8 min

The case for CSS custom properties

css design systems

Feb 2026

Design Principles

01

Line over fill

Icons, borders, dividers: always 1–1.5px lines. Never filled shapes for decoration.

02

Serif headings

All display text is Instrument Serif. Editorial gravity with italic for warmth and emphasis.

03

Mono for data

Dates, tags, labels, code — always DM Mono. Tabular, precise, and scannable.

04

Motion is rare

Border, color, translateY only. cubic-bezier(0.16,1,0.3,1) at 240ms. Nothing else moves.

05

No decorative images

No hero images, no stock photography. Every image earns its place as information.

06

Space is content

Generous vertical rhythm. Let type breathe. Density only when data demands it.


CSS Tokens

--navy:       #0F1829
--accent:     #1B3BCC
--white:      #FAFAF8
--muted:      #888880
--border:     rgba(15,24,41,0.12)
--serif:      'Instrument Serif'
--sans:       'Geist'
--mono:       'DM Mono'
--ease:       cubic-bezier(0.16,1,0.3,1)
--dur:        240ms