Colophon
How this site is made — the light, the letters, the files.
The light
Six sections, six hues, one rule: every surface shares oklch(0.88 0.055 h), so no face dominates. Posts drift from their section by a hash of their slug — ±8° of hue, ±0.03 lightness, ±0.015 chroma — and every derivable shade is contrast-tested at build time: body ink ≥ 7:1, everything else ≥ 4.5:1, or the build refuses. The full proof lives on the swatch page.
| face | hue | surface | accent | specimen |
|---|---|---|---|---|
| Journal | 18° | #facaca | #902634 | Aa aeiou |
| Frames | 62° | #f3d0b3 | #794301 | Aa aeiou |
| Motion | 112° | #d8dcb2 | #545701 | Aa aeiou |
| Sound | 168° | #b5e4d1 | #016249 | Aa aeiou |
| Signal | 238° | #b7def8 | #015981 | Aa aeiou |
| About | 302° | #ded0f6 | #623a91 | Aa aeiou |
The letters
Display: Fraunces (variable, OFL) with its SOFT and WONK axes engaged — the same substance, seen at a slight angle, which is the site's whole argument. Body: Hanken Grotesk (OFL), standing in until Switzer is supplied. Mono: JetBrains Mono (OFL) for captions, EXIF, timestamps, durations, and code. All self-hosted, subset to Latin + Latin Extended; no CDN is consulted. The type scale is modular 1.25 anchored on a 19px reading size, nine steps, no exceptions.
Fraunces carries the headlinesHanken Grotesk carries the readingJetBrains Mono keeps the records
The files
Next.js (App Router, static export), React, Tailwind CSS v4, React Three Fiber for the homepage, MDX for the writing (validated by Zod at build — a malformed post cannot ship), Shiki for code with a theme generated from the Signal hue, wavesurfer for the waveforms, Pagefind for search. The output is a directory of files; any static host can serve it, and rsync can move it. Sample imagery, audio, and video are currently procedural placeholders, generated from each post's own shade.
Analytics: none at present. If any are added they will be cookieless (Plausible or Umami) — this site does not want a consent banner, and earns that by not needing one.