After a few weeks of heavy Claude Code use, I noticed what was actually on my screen: tool output, permission prompts, reasoning blocks, explanations. Paragraphs. Prose at body size, for hours at a stretch. My terminal theme was doing syntax highlighting work on a surface that had almost no syntax to highlight.
So I built klein-blue — four Terminal.app themes tuned specifically for that reading surface, anchored on Yves Klein's IKB pigment.
The design problem that shaped everything: pure IKB (hex 002FA7) is invisible as text on dark ground. APCA Lc -12. So I split it across two ANSI slots — pure IKB in ansi:blue for decorative borders and highlights where legibility isn't required, and a lifted Klein-family value (A8BEF0) in ansi:blueBright for permission-prompt text you actually need to read. One pigment, two roles, separated by function.
Contrast is gated per text role using APCA Lc rather than WCAG ratios, which handles dark backgrounds and body-size type more accurately. The targets: body >= 90 Lc, subtle >= 75, muted >= 45, accent >= 60. Klein Void Prot (V3) is the only variation where every accent slot clears all four gates. The other three trade strictness for character — Sand & Sea accepts Claude's brand red-orange as a second hero color rather than neutralizing it; Gallery pushes toward maximum void with one dominant blue.
One thing worth knowing before you install: Claude Code has to be set to /theme dark-ansi. If it's on any other setting, it ignores the Terminal.app ANSI palette entirely and uses its hardcoded RGB colors — the theme does nothing.
Four variations ship as .terminal profile files with an install script and a rollback script. CommitMono-Regular on V1 and V3, IBM Plex Mono on V2 and V4, both dropped into ~/Library/Fonts/.
Top comments (0)