The moment I noticed the problem: I was three hours into a session, reading a long reasoning trace, and realized my eyes were braced for something — scanning for the structure cues that weren't coming. Syntax-highlighting themes train your eyes to hunt. Claude Code doesn't give you syntax to hunt.
Clause Code's interface is prose. Tool output, permission prompts, model reasoning — it's paragraphs. The ANSI slots that matter aren't ansi:green (strings) and ansi:yellow (keywords). They're ansi:blueBright (permission-prompt text) and ansi:white (body output). If your theme isn't tuned to those slots at body-size prose legibility, you're optimizing for a different terminal.
klein-blue is four dark variations built around IKB — Yves Klein's ultramarine pigment — with APCA Lc as the contrast metric. APCA is perceptually accurate at body text sizes in a way WCAG's ratio isn't; it accounts for spatial frequency, which matters when you're reading 10pt mono prose, not scanning 18pt display headings.
One thing that took real iteration: the ansi:redBright slot. Claude Code maps that slot to its claude-sand brand color. Every theme has to decide what to do with it. Klein Void Sand & Sea (V2, IBM Plex Mono) accepts sand as a second hero and leans into the Claude brand aesthetic. Klein Void Gallery (V4) neutralizes it toward near-white to maximize the IKB-dominant void. Neither is wrong — they're different answers to the same design question.
Installs via install.sh, rolls back via restore.sh. Fonts (CommitMono-Regular for V1/V3, IBM Plex Mono for V2/V4) go to ~/Library/Fonts/ automatically. macOS Terminal.app only.
github.com/robertnowell/klein-blue
Top comments (0)