← All foundations
Color · card 3 of 3

Light-surface exceptions — and why there is no light theme

CODECAVE is dark-first and ships no light mode. Exactly three light surfaces exist in the system, and this is the complete set. Reviewers should confirm no fourth has crept in.

Not a theme. Do not derive a light palette by inverting the ramp. If a light surface is genuinely unavoidable — a printed page, a third-party embed — use the black-text wordmark variant and leave every other token untouched.

Exception 1 — the glow CTA field

#9980FF with #1B0D4E text: 5.67:1. This is the only dark-on-light text in the entire system, and it exists on exactly one control. Source: source_examples/common/GlowButton.vue.

Discuss project for free fill --color-glow-25 · text --color-brand-800
44px pill · halo, not a drop shadow

Exception 2 — the near-white type ramp

Light ink, not a light surface. Included here so the distinction is explicit: #F4F4F6 and #C7C7DB are foregrounds and never become page fills.

#F4F4F6 as ink correct — foreground on #0A0A0B
#F4F4F6 as a field off-system — do not build pages on this

Exception 3 — the black-text wordmark

For print and genuinely light third-party surfaces only. The chevron glyph stays #5F20FE; only the wordmark paths change color. Real files, loaded from assets/.

CODECAVE horizontal wordmark, black text assets/codecave-wide-1024-text-black.png — on a genuinely light plate
CODECAVE stacked wordmark, all black assets/codecave-tall-1024-all-black.png — one-ink printing

A note on error text

--color-error (#B42318) reaches only 3.2:1 on the near-black page, which is below the 4.5:1 requirement for normal text. The package therefore renders error messages in --color-error-100 (#FE9A9A, 8.4:1) and keeps #B42318 for icons and rules. This is a deliberate divergence from production — see DESIGN.md → Known divergences.

#B42318 — production error text (3.2:1) #FE9A9A — package error text (8.4:1)