WCAG 2.1 contrast ratios are symmetric — they treat light-on-dark and dark-on-light as equivalent. APCA doesn't. That asymmetry is why Yves Klein's IKB pigment — hex 002FA7 — scores Lc -12 on the APCA scale against a dark terminal ground. Functionally invisible as text. WCAG hands it a passing 4.6:1 ratio and moves on.
I spent several sessions in Claude Code squinting at tool output and permission prompts before admitting the problem wasn't fatigue. It was the theme. Claude Code renders mostly prose: reasoning blocks, tool results, permission prompts, explanations. The ANSI slots those map to aren't the slots syntax highlighters care about. So I built klein-blue: four Terminal.app theme variations tuned for those specific slots, verified against APCA.
The per-role gates I landed on: body text at Lc 90 or above, subtle text at 75, muted at 45, accents at 60. The strict variation (Klein Void Prot) is the only one where every accent passes all four gates. The other three make deliberate tradeoffs — Klein Void Gallery pushes maximum IKB saturation in decorative slots and accepts that pure Klein blue stays decorative-only.
The IKB split is the core design constraint. Pure IKB can't be used as readable text on a dark background — it lives in ansi:blue for borders and decorative highlights, places Claude Code doesn't render body text. The permission-prompt text that needs legibility goes through ansi:blueBright, lifted to a Klein-family blue (around Lc 90) that clears the body-text gate.
The other differentiating slot: ansi:redBright. Claude Code uses that slot for its claude-sand brand color. Two variations neutralize it to avoid competing with the blue anchor; two accept it as a second hero. That single decision separates Klein Void Refined from Klein Void Sand & Sea.
Ships as macOS Terminal.app .terminal profiles, installed via install.sh, rollback via restore.sh. One prerequisite that isn't obvious: Claude Code's /theme must be set to dark-ansi. Without that, Claude Code ignores the ANSI palette and falls back to hardcoded RGB values.
git clone https://github.com/robertnowell/klein-void
cd klein-void && ./install.sh
Fonts included: CommitMono-Regular for variations 1 and 3, IBM Plex Mono for 2 and 4, both written to ~/Library/Fonts/ on install.
Top comments (0)