Most of my working day is spent reading prose in a terminal. Tool output, reasoning traces, permission prompts, explanations — the text-to-code ratio runs close to 80/20 in favor of paragraphs. Every theme I tried was optimized for syntax highlighting: maximize token contrast, make keywords pop. Wrong problem.
So I built klein-blue: four Terminal.app themes anchored to Yves Klein's IKB pigment, with APCA contrast gates set per text role rather than per syntax class.
The central constraint that shaped everything: pure IKB (the pigment's hex value, 002FA7) fails APCA contrast on a dark background — Lc -12, effectively invisible as readable text. The fix was splitting it across two ANSI slots. The blue slot gets pure IKB for borders and decorative highlights. The blueBright slot gets a lifted Klein-family value (A8BEF0) for permission-prompt text that actually needs to be read. One pigment family, two roles, two different slots.
The APCA gates across variations: body >= 90 Lc, subtle >= 75, muted >= 45, accent >= 60. Klein Void Prot is the only one of four variations where every slot passes strict gates. The others make deliberate tradeoffs — more void, or a second hero color — at the cost of one or two marginal accent values.
The four variations differ on one axis: what to do with the ANSI redBright slot, which Claude Code uses for its claude-sand brand color. Refined neutralizes it so nothing competes with IKB. Sand & Sea accepts it as a second hero. Gallery pushes toward monochrome. Prot locks everything to verified contrast.
One non-obvious install step: Claude Code's built-in theme picker must be set to dark-ansi. Any other setting and it uses hardcoded RGB values, ignoring the Terminal.app ANSI profile entirely.
Ships with CommitMono-Regular and IBM Plex Mono, copied to the system font directory on install. Fully rollback-able. MIT licensed.
Top comments (0)