Most terminal themes are built around syntax highlighting — they optimize for keywords, strings, and operators. When your screen is 80% tool output, reasoning chains, and permission prompts, that's the wrong target.
I built klein-blue as four Terminal.app themes around Yves Klein's IKB pigment (hex 002FA7), each one a different answer to the same question: how should Claude's sand brand color (ansi:redBright) behave in your terminal?
The four variations:
- Klein Void Refined — balanced, IKB as the single accent, sand neutralized so there's no brand competition
- Klein Void Sand & Sea — accepts sand as a second hero color, IKB and sand as dual anchors
- Klein Void Prot — the strict one; every accent role passes APCA Lc gates (body >= 90, subtle >= 75, accent >= 60)
- Klein Void Gallery — maximum void, one blue, everything else as near-neutral as possible
The contrast problem pure IKB creates:
IKB fails APCA as text on a dark ground — Lc -12, effectively invisible. So the themes split it across two ANSI slots: pure IKB in ansi:blue for decorative borders and highlights (where legibility isn't load-bearing), and a lifted Klein-family value A8BEF0 in ansi:blueBright for permission-prompt text that actually needs to be read.
# Pure IKB as text on dark — what APCA reports:
Lc: -12 (threshold for body text: Lc 90)
# Lifted A8BEF0 in the same slot:
Lc: 91 (passes body gate)
V3 Prot is the only variation where every accent passes strict gates. The others make deliberate tradeoffs — Gallery sacrifices strict accent contrast for the aesthetic, Refined and Sand & Sea sit in between.
One constraint worth knowing: none of this works unless Claude Code's /theme picker is set to dark-ansi. If it's on any other setting, Claude Code ignores the ANSI palette entirely and renders its hardcoded RGB values instead.
Built for macOS Terminal.app. Ships as .terminal profile files with an Objective-C builder, install.sh, and a restore.sh that rolls back your previous profile.
Top comments (0)