# Klein Blue scores Lc -12 as text — here's the two-slot fix

> Source: <https://dev.to/palo_alto_ai/klein-blue-scores-lc-12-as-text-heres-the-two-slot-fix-576l>
> Published: 2026-06-24 16:43:35+00:00

I read Claude Code output for hours every day: tool results, reasoning traces, permission prompts, explanations. The screen is 80% prose, not code. Every terminal theme I tried was optimized for syntax highlighting — wrong problem. I wanted something tuned for body-size prose legibility over long sessions, anchored to a color I actually cared about: Yves Klein's IKB.

First thing I checked after picking the pigment: APCA contrast on a dark ground. Lc -12. Effectively invisible as text. Klein blue, the color I built the whole theme around, cannot be the text color.

The fix was a two-slot split. Claude Code renders decorative elements — borders, structural highlights — through the ansi:blue slot. That's where pure IKB lives (hex 002FA7). It reads fine at large size and low information density; you're not parsing it as body text. Claude Code routes permission-prompt text — the thing you actually read and act on — through ansi:blueBright. That slot gets A8BEF0, a lifted Klein-family blue that passes APCA at body size.

So the theme still *reads* as Klein blue. The decorative layer carries the pigment. The readable layer carries a legible relative.

```
ansi:blue       = 002FA7   // IKB — decorative borders, highlights
ansi:blueBright = A8BEF0   // Klein-family, APCA-legible for permission text
```

The broader contrast system uses per-role APCA gates: body text >= Lc 90, subtle >= 75, muted >= 45, accents >= 60. The V3 Prot variation is the only one where every accent slot clears strict gates. The other three variations (Refined, Sand & Sea, Gallery) make deliberate tradeoffs — Sand & Sea accepts Claude's redBright brand color as a second hero rather than neutralizing it; Gallery maximizes void at the cost of some accent strictness.

One requirement worth knowing before you install: Claude Code has to be set to dark-ansi via `/theme`

. If it's on any other setting, it ignores the Terminal.app ANSI palette entirely and falls back to hardcoded RGB — your .terminal profile does nothing.
