Most terminal themes are built around code. Keyword colors, string literals, diff output — the usual priorities. Claude Code is different: tool output, reasoning traces, permission prompts, explanations. I was reading paragraphs of English prose in my terminal for hours every day, on a theme optimized for the wrong content.
So I built klein-blue, four Terminal.app theme variations built around Yves Klein's IKB pigment, tuned for the specific ANSI slots Claude Code actually uses.
The interesting constraint: pure IKB is invisible as text on a dark background. APCA Lc -12 — not low contrast, effectively zero. If you drop IKB into your color palette and assign it to text roles, you get a blue terminal that reads nothing.
The fix was to stop treating blue as a single slot. Klein-blue assigns pure IKB to ansi:blue, which Claude Code uses for decorative borders and structural highlights — roles where Lc -12 is fine because you're not reading it as body text. For ansi:blueBright, which Claude Code maps to permission-prompt text you actually need to parse, the theme uses a lifted Klein-family blue (A8BEF0) that clears the APCA body-text gate (Lc >= 90).
The four variations differ in how aggressively they apply this logic and what they do with the ansi:redBright slot — which Claude Code uses for its claude-sand brand color. Two variations neutralize it to avoid competing with IKB; two accept it as a second hero color.
Variation Font Brand color
Void Refined CommitMono neutralized
Sand & Sea IBM Plex Mono accepted (two-hero)
Void Prot CommitMono neutralized, all accents APCA-verified
Void Gallery IBM Plex Mono maximum void, one blue
Void Prot is the strictest: every accent passes per-role APCA gates (body >= 90, subtle >= 75, muted >= 45, accent >= 60). The other three make aesthetic tradeoffs at the margins.
One setup note that burned me during testing: Claude Code has to be set to dark-ansi via the /theme picker, or it ignores the Terminal.app ANSI palette entirely and falls back to its hardcoded RGB values. The theme does nothing until that's set.
Install is install.sh (copies .terminal profiles and fonts to ~/Library/Fonts/), rollback is restore.sh.
Top comments (0)