{"slug": "klein-blue-scores-lc-12-as-text-here-s-the-two-slot-fix", "title": "Klein Blue scores Lc -12 as text — here's the two-slot fix", "summary": "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.", "body_md": "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.\n\nFirst 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.\n\nThe 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.\n\nSo the theme still *reads* as Klein blue. The decorative layer carries the pigment. The readable layer carries a legible relative.\n\n```\nansi:blue       = 002FA7   // IKB — decorative borders, highlights\nansi:blueBright = A8BEF0   // Klein-family, APCA-legible for permission text\n```\n\nThe 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.\n\nOne requirement worth knowing before you install: Claude Code has to be set to dark-ansi via `/theme`\n\n. 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.", "url": "https://wpnews.pro/news/klein-blue-scores-lc-12-as-text-here-s-the-two-slot-fix", "canonical_source": "https://dev.to/palo_alto_ai/klein-blue-scores-lc-12-as-text-heres-the-two-slot-fix-576l", "published_at": "2026-06-24 16:43:35+00:00", "updated_at": "2026-06-24 17:09:24.273448+00:00", "lang": "en", "topics": ["developer-tools", "large-language-models", "ai-tools"], "entities": ["Claude Code", "Yves Klein", "IKB", "APCA", "Terminal.app"], "alternates": {"html": "https://wpnews.pro/news/klein-blue-scores-lc-12-as-text-here-s-the-two-slot-fix", "markdown": "https://wpnews.pro/news/klein-blue-scores-lc-12-as-text-here-s-the-two-slot-fix.md", "text": "https://wpnews.pro/news/klein-blue-scores-lc-12-as-text-here-s-the-two-slot-fix.txt", "jsonld": "https://wpnews.pro/news/klein-blue-scores-lc-12-as-text-here-s-the-two-slot-fix.jsonld"}}