Most terminal themes are built for code: dense token differentiation, high chroma, optimized for scanning short bursts across a dozen language constructs. Claude Code output is different — tool results, reasoning chains, permission prompts, explanations. Paragraphs. I was reading it for four to six hours a day and my eyes were done by afternoon.
klein-blue is four Terminal.app themes built specifically for that use case, anchored on Yves Klein's IKB pigment and verified for body-size prose legibility using APCA contrast.
Why WCAG fails here
WCAG 2.x luminance ratios are polarity-blind: same score whether you're reading light-on-dark or dark-on-light. APCA's Lc metric isn't. On dark terminals, the contrast curve for body-size text is steeper than WCAG implies, and colors that clear 4.5:1 can still be fatiguing over a long session.
Pure IKB makes this concrete. The pigment — a deep ultramarine blue — returns Lc -12 on a dark background. Effectively invisible as text. Beautiful as a border.
So it's split: ansi:blue carries pure IKB for decorative borders and highlights (Claude Code routes those here). ansi:blueBright carries a lifted Klein-family blue at Lc >= 90 — that's the slot Claude Code uses for permission-prompt text, so it has to be readable.
Per-role gates instead of one threshold
body Lc >= 90
subtle Lc >= 75
muted Lc >= 45
accent Lc >= 60
Klein Void Prot (V3) passes all four strictly. The other variations make named tradeoffs — V2 (Sand & Sea) accepts Claude's redBright brand orange as a warm second hero alongside IKB. V4 (Gallery) strips to one blue for maximum void.
One prerequisite worth knowing
Claude Code uses a hardcoded RGB palette by default and ignores Terminal.app ANSI slots. The theme activates only when you run /theme inside Claude Code and select dark-ansi. Easy to miss.
MIT licensed. Install script, rollback script, Objective-C builder if you want to tweak values.
Top comments (0)