The logo — one question left

Arrow dropped, text layout settled. What remains is the two themes where a uniform mark stops being visible, and that turns out to be a much smaller problem than I claimed.

PROOF v2 · 2026-08-01 · contrast measured from the app's own theme tokens

Settled — Chris, 2026-08-01

01 I was wrong, and specifically wrong

I argued for themed colors and named Matrix, Terminal and Bumblebee as where uniform would fall apart. Measured against the real sidebar colors, Matrix and Terminal are the two strongest cases for uniform — 19.13:1 and 18.47:1. A cream mark on near-black is exactly what the dark themes want. I generalised from a worry instead of measuring, which is the thing this project keeps teaching me not to do.

ThemeSidebarCream tileWhite wordmarkUniform works?
Matrix#00000019.13:121.00:1✓ best in the set
Terminal#05060718.47:120.28:1
Landscape#100E0C17.55:119.26:1
Wings#10111217.22:118.90:1
Clouds#0C161816.73:118.36:1
Ocean#062A3813.70:115.04:1
Riviera#1B2A5B12.51:113.74:1
Ledger#0E45369.95:110.92:1
Gulf#6CACE42.21:12.43:1✗ washes out
Bumblebee#F5B3011.69:11.85:1✗ washes out

Eight of ten are excellent. The two that fail are the two light sidebars — and they fail for the same reason, not for ten different reasons. That is a rule, not a pile of exceptions, which is what makes uniform viable.

02 Uniform, as you'd actually see it

Every theme, the same mark. The two flagged in amber are the ones to judge — everything else is settled by the numbers above.

03 The two light themes — three ways to handle it

Worth saying before you pick: logotypes are formally exempt from WCAG contrast (1.4.3 and 1.4.11 both carve them out). So none of this is a compliance failure — it is purely whether the mark still reads. Judge it by eye; the numbers are only there to explain why it looks how it looks.

My recommendation: uniform everywhere, hairline on the two light sidebars option B

Option A (leave it) is more defensible than it looks — the cream plate goes quiet on Gulf and Bumblebee, but the green = inside it holds 5.72:1 against the cream regardless of theme, so the sign never stops being readable. It reads as a soft plaque rather than a badge. If you like that, it is genuinely fine and it is the least code.

Option B adds a single hairline on light sidebars only. It keeps the mark identical — same cream, same green, same shape, one screenshot to the next — and just gives it an edge where the background is pale. There is already precedent in the codebase: Riviera carries inset 0 -3px 0 rgba(0,0,0,.18) on its mark for exactly this kind of reason, so this is following an existing pattern rather than inventing one.

Option C (invert) I'd avoid. It scores worse than it looks — green on Gulf is 2.59:1, barely better than the 2.21:1 it replaces — and it costs the thing uniform was for: the mark is now two different marks depending on theme.

The wordmark needs the same rule, whichever you pick

White "Money Ledger" scores 2.43:1 on Gulf and 1.85:1 on Bumblebee — and unlike the logo, text is not exempt. On those two the wordmark has to go dark: #101112 scores 7.79:1 and 10.20:1. This is not a taste call, and it is one line of CSS.

04 If you say go

WhereChange
.brand-mark · 38pxsquare, cream #f7f4ee, 18×9 rule, 5px double green #2f6b52
.topbar-mark · 26pxsame, 12×6 rule, 4px double (3px is the collapse floor — one pixel of headroom)
wizard railshares .brand-mark — inherits, no separate change
.brand-namewhite; dark on Gulf + Bumblebee
.brand-subvar(--accent), mono, uppercase, .22em tracking — the guide's label treatment
theme filesnone — two overrides added for the light pair, nothing else touched