Yves Klein registered IKB — International Klein Blue, hex 002FA7 — in 1960 as a pigment so saturated it reads as pure depth rather than surface color. That's the aesthetic argument for building a terminal theme around it. The practical problem came after.
Pure IKB fails APCA contrast as text on a dark background. Lc -12, essentially invisible. If you want IKB present without lying about its legibility, you split it: pure 002FA7 into ansi:blue for decorative roles — borders, highlights, things you clock without reading — and lift it to A8BEF0 in ansi:blueBright for permission-prompt text that needs to actually land.
That split is the structural decision the whole project turns on, because Claude Code is mostly prose. Tool output, reasoning steps, permission prompts — paragraphs, not syntax. Most terminal themes are tuned for code: they get the keyword and string colors right and treat everything else as afterthought. When your screen is 80% English for hours at a stretch, the wrong thing is being optimized.
So the four variations use APCA Lc contrast with per-role gates: body text must hit Lc 90, subtle text Lc 75, muted Lc 45, accents Lc 60. Klein Void Prot (V3) is the one where every single accent clears its strict gate. The others make deliberate aesthetic trades — V2 accepts claude-sand (the ansi:redBright slot Claude Code uses for its brand color) as a second hero color alongside Klein blue; V4 goes maximum void, one blue, nothing competing.
Fonts ship with it: CommitMono-Regular for V1 and V3, IBM Plex Mono for V2 and V4, both installed to ~/Library/Fonts/. One requirement that bites people: Claude Code's /theme picker must be set to dark-ansi, or Claude Code ignores the ANSI profile entirely and falls back to its hardcoded RGB palette.
Built from build.m, a variation-aware Objective-C builder. Install via install.sh, fully rollback-able via restore.sh.
Top comments (0)