For hours every day I'm reading paragraphs — tool output, reasoning traces, permission prompts, explanations. Almost none of it is code. Standard terminal themes spend their contrast budget on syntax token differentiation: keywords, strings, numbers. That's the wrong allocation when your screen is 80% English at body size.
So I built four Terminal.app themes tuned specifically for Claude Code's ANSI slot usage.
The constraint that drove every decision: pure IKB (hex 002FA7) — Yves Klein's pigment — fails APCA contrast as text on a dark ground (Lc -12, effectively invisible). I wanted that blue in the theme because it's the right blue, so I split it. Pure IKB goes into ansi:blue, which Claude Code uses for decorative borders and highlights where legibility isn't load-bearing. A lifted Klein-family A8BEF0 goes into ansi:blueBright, which Claude Code uses for permission-prompt text that you actually need to read.
Contrast targets are per-role: body >= 90 Lc, subtle >= 75, muted >= 45, accent >= 60. Klein Void Prot (V3) is the only variation where every accent slot clears strict gates — the others make deliberate tradeoffs between brand fidelity and maximum legibility.
The four variations split on one specific differentiator: how they handle ansi:redBright, which Claude Code maps to the claude-sand brand color. Refined and Prot neutralize it to avoid competing with IKB. Sand & Sea accepts it as a second hero color, which produces a warm/cool contrast that happens to mirror Claude's own brand palette.
Install requires one step that's easy to miss: Claude Code's /theme picker must be set to dark-ansi. If it's on any other setting, Claude Code ignores the Terminal.app ANSI palette entirely and falls back to hardcoded RGB values.
git clone https://github.com/robertnowell/klein-void
cd klein-void
bash install.sh
Then /theme → dark-ansi in Claude Code. Rollback via restore.sh if it's not for you.
Top comments (0)