Most of my Claude Code screen is English sentences. Tool output, reasoning traces, permission prompts — I was reading paragraphs for hours on a theme tuned to highlight Python keywords. The colors were optimized for the wrong thing entirely.
So I built klein-blue: four Terminal.app themes anchored to Yves Klein's IKB pigment, with contrast verified per ANSI slot against the specific roles Claude Code assigns to each color.
The interesting constraint is that pure IKB fails as text on a dark ground. APCA Lc score: -12. Effectively invisible. But IKB is the whole point — dropping it wasn't an option.
The fix was splitting the blue across two ANSI slots with different jobs. ansi:blue gets pure IKB, used only where Claude Code renders decorative borders and structural highlights — elements you register visually without needing to read character by character. ansi:blueBright gets a lifted Klein-family blue (A8BEF0) that clears the APCA body-text gate, and that's the slot Claude Code uses for permission-prompt text — the sentences you actually have to read and act on.
Neither slot is doing the other's job. The IKB stays pure because it never has to be legible as running text. The readable blue earns its place in blueBright because that slot carries semantic weight.
The four variations handle the secondary tension differently: Claude Code uses ansi:redBright for its claude-sand brand orange. Klein Void Sand & Sea accepts that as a second hero color. Klein Void Refined neutralizes it so IKB reads without competition. Klein Void Prot (V3) is the strictest — every accent slot passes APCA gates, body text at 90 Lc minimum, nothing fudged. Klein Void Gallery pushes maximum void: one blue, everything else near-neutral.
Installation requires Claude Code's /theme picker set to dark-ansi. If it's set to anything else, Claude Code ignores the Terminal.app palette entirely and falls back to its hardcoded RGB values.
Built for macOS Terminal.app, ships as .terminal profiles, fully rollback-able.
Top comments (0)