I spend several hours a day reading Claude Code output in a terminal. Tool output, reasoning traces, permission prompts — it's mostly prose, not code. Standard terminal themes optimize for syntax highlighting: vivid reds and greens for keywords, muted grays for comments. That's the wrong tradeoff when your screen is 80% English sentences at body size.
I wanted a theme anchored to Yves Klein's IKB pigment (hex 002FA7). The first thing I checked: does pure IKB work as readable text on a dark ground?
No. APCA Lc score: -12. Effectively invisible.
IKB fails because it's a deep saturated blue optimized as a physical pigment — it absorbs and scatters light in a way that reads as intense presence on a gallery wall, but against a dark terminal background it has almost no luminance differential from the ground. APCA measures contrast as a human perceives it at body text size, not as a ratio, and -12 is below the threshold for any intentional use.
The fix was a two-slot split. Terminal themes have separate ANSI slots for ansi:blue and ansi:blueBright. I assigned pure IKB to ansi:blue, which Claude Code uses for decorative elements — borders, structural highlights — where contrast as readable text doesn't matter. Then I lifted it to a Klein-family blue (A8BEF0) for ansi:blueBright, which Claude Code routes permission-prompt text through. That slot needs to be legible; it gets the lightened variant.
The result: IKB stays present as pure pigment in the decorative layer. The readable text layer gets a blue in the same family that passes a body-text gate (Lc >= 90 for main content, >= 60 for accents).
I built four variations. Klein Void Prot is the strict one — every accent slot passes APCA gates, no exceptions. Klein Void Gallery goes full void with maximum IKB saturation. Klein Void Sand & Sea accepts Claude's ansi:redBright brand color as a second hero rather than neutralizing it. Klein Void Refined splits the difference.
All four ship as macOS Terminal.app .terminal profile files with an Objective-C builder, install via install.sh, and are fully rollback-able. One required prerequisite: Claude Code's /theme picker must be set to dark-ansi, otherwise Claude Code ignores the ANSI layer entirely and renders its own hardcoded RGB palette.
Top comments (0)