Color
Hue 148 — deliberately between grass green (≈130) and emerald (≈162). Neutrals carry hue 152 at chroma 0.004–0.012, so the palette reads as one material rather than green stickers on gray card.
Signal — hue 148
Ink — hue 152
Measured contrast — dark mode
ink-500 is banned as text: on ink-950 it measures 4.10:1 and fails AA. It stays in the ramp for hairlines and disabled states only. There is no light palette to check — this site is dark only.
The green rule — signal, never surface
1px rule
Status dot
Accent text
Typography
Display
Space Grotesk
Hero, titles
Sans
Geist
Body, UI
Mono
JetBrains Mono
Paths, labels, code
Structure
Structure is drawn, not implied. Section boundaries are 1px rules. Cards do not float — depth comes from surface lightness, never shadow. Radius is 2px everywhere.
Indexed rule header — the core motif
About
Selected work
Writing
Surface ladder — no shadows
background
1px border · no shade
surface
1px border · no shade
surface-raised
1px border · no shade
Components
Buttons — nothing scales on hover
Links, badges, input
An inline link stays currentColor — only the underline strengthens on hover. No color jump.
focus ring · green · 2px offset
Wordmark
With the current location (§8.1)
~/fozooni/blog/why-boring-winsAlways text, never an image — selectable, searchable, sharp at any size. The caret blinks on a hard square wave (step-end, 1.06s, no fade) and sits tight at 0.1em — a fade or a wide gap stops it reading as a terminal.
Pointer affordance — if it clicks, it says so
Declared once globally in globals.css, covering native elements, Base UI primitives, and ARIA roles alike — so anything added later inherits it without being remembered. Disabled controls get not-allowed, text inputs keep a caret.
Motion
One entrance, used everywhere: opacity 0→1, y 12→0, 420ms, expo-out. Fires once. Everything on this page scrolled in that way — which is the point: you should have barely noticed.
instant
120ms
hover, press, focus
quick
220ms
small entrances
base
420ms
section entrances
slow
700ms
hero only
Exactly two ambient loops exist — the contour drift above and the status dot. Adding a third requires removing one. No parallax, no counters, no typewriter, no hover scale.