Yves Klein's IKB is a deep ultramarine, hex 002FA7. I wanted it as the anchor color for a Claude Code terminal theme. Problem: on a dark background, pure IKB scores Lc -12 on the APCA contrast scale. That's not low contrast — that's effectively invisible. You can't use it for readable text at all.
The fix splits the pigment across two ANSI slots. Pure IKB goes into ansi:blue, which Claude Code uses for decorative borders and structural chrome — things you perceive rather than read. A lifted Klein-family blue (A8BEF0) goes into ansi:blueBright, the slot Claude Code uses for permission-prompt text — things you actually need to parse. Same visual family, different luminance, each assigned to the role it can serve.
This matters because Claude Code is mostly prose. Tool output, reasoning blocks, explanations, permission prompts — I was reading paragraphs of it for hours. Most terminal themes are tuned for code syntax; they're optimizing for a minority of what's on screen. I wanted APCA-verified contrast across the specific ANSI slots Claude Code uses for its actual content, not slots that matter for JavaScript syntax highlighting.
The result is klein-void: four theme variations for macOS Terminal.app, all built around IKB. Each ships as a .terminal profile with fonts installed to ~/Library/Fonts/ and a restore.sh if you want to roll back. The contrast model uses APCA Lc gates per role: body >= 90, subtle >= 75, muted >= 45, accent >= 60. The Prot variation (V3, CommitMono-Regular) is the only one where every accent slot passes strict gates.
One setup requirement worth flagging: Claude Code must be on /theme dark-ansi or it ignores your ANSI profile entirely and falls back to its hardcoded RGB palette. I missed this the first time and spent twenty minutes wondering why nothing changed.
MIT licensed. https://github.com/robertnowell/klein-void
Top comments (0)