cd /news/developer-tools/klein-blue-scores-lc-12-as-text-here… · home topics developer-tools article
[ARTICLE · art-38094] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=· neutral

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

A developer created a terminal theme for Claude Code based on Yves Klein's International Klein Blue (IKB), but discovered the pigment fails APCA contrast at Lc -12 on dark backgrounds. The fix splits IKB into two slots: pure IKB (hex 002FA7) for decorative elements via ansi:blue, and a legible Klein-family blue (A8BEF0) for body text via ansi:blueBright. The theme requires Claude Code to be set to dark-ansi mode to respect the Terminal.app ANSI palette.

read2 min views1 publishedJun 24, 2026

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.

── more in #developer-tools 4 stories · sorted by recency
── more on @claude code 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/klein-blue-scores-lc…] indexed:0 read:2min 2026-06-24 ·