DEV Community

J Now
J Now

Posted on

Prose legibility in a syntax-tuned medium

Yves Klein registered his ultramarine as a pigment in 1960 — IKB 79, a specific formulation that reads as depth rather than surface. I wanted that color anchoring my terminal. The problem: the hex value 002FA7 on a dark background measures Lc -12 on the APCA scale. That's below the threshold where text registers as readable at all.

So it splits across two ANSI slots. The ansi:blue slot gets pure IKB for decorative borders and structural highlights — anything that signals without needing to be read. The ansi:blueBright slot — the one Claude Code routes permission-prompt text through — gets a lifted Klein-family blue, A8BEF0, that clears Lc 60. The color family stays coherent; the contrast math works.

The reason this matters: Claude Code renders mostly prose. Tool output, reasoning steps, permission dialogs with three lines of explanation before the yes/no. I was reading paragraphs of English for hours against a theme tuned for syntax — one optimizing string and keyword slots that almost never fire in a Claude Code session. The slots that fire constantly are the UI slots: tool output, reasoning trace, the claude-sand brand accent in permission flows.

Klein Void ships as four variations for macOS Terminal.app:

  • Refined — balanced, IKB anchor, neutral stance on the Claude-sand accent
  • Sand & Sea — accepts ansi:redBright (the claude-sand color) as a second hero alongside IKB
  • Prot — every role passes strict APCA gates: body >= 90, subtle >= 75, muted >= 45, accent >= 60
  • Gallery — maximum void, one blue, minimal everything else

Prot is the only variation where every accent slot clears its gate without exception. The others make deliberate tradeoffs toward aesthetics where the math allows.

Install via install.sh, fully reversible with restore.sh. Requires Claude Code's /theme picker set to dark-ansi — otherwise Claude Code ignores the ANSI palette entirely and falls back to hardcoded RGB.

https://github.com/robertnowell/klein-void

Top comments (0)