fix(ui): soften saturated accents in dark mode#60
Merged
Conversation
The near-OLED palette swap (PR #58) lowered surface luminance but left every accent at light-mode saturation, so primary CTAs, the selected DB chip, and the emerald credits pill now punch harder than the headings. Three targeted overrides in dark-mode.css, no template churn. 1. Primary indigo CTA mute: at-rest .bg-indigo-600 drops to indigo-700 (#4338ca) instead of indigo-600 (#4f46e5). Hover bumps to indigo-500 (#6366f1) — inverting the affordance direction vs light mode (where hover darkens) so intent still reads as a brighten step. 2. Selected DB chip: replace dark:bg-white pure-white pill with warm cream (#e7e5e0). Pure white on #0a0a0a was the worst contrast on the page and read as a UI block, not a "this is selected" affordance. Scoped to [role="radio"][aria-checked="true"] so it only affects the chip group and not any other dark:bg-white usages. 3. Emerald credits pill text: emerald-300 (#6ee7b7) → emerald-400 (#34d399). Still distinct against the rgba(16,185,129,0.22) bg, ~30% less luminous. Applies to all grade-A pills consistently. Held off on softening the wordmark (#a5b4fc) and the Q-ring logo strokes — those are brand-identity calls and deserve a deliberate decision rather than a mechanical desaturation.
3 tasks
ringo380
added a commit
that referenced
this pull request
May 14, 2026
…#61) User feedback after PR #60: the "warm cream" selected chip was still a near-white block, and the emerald credits pill was still glowing at 22% saturation. Both read as bright UI alerts in an otherwise muted dark palette — wrong for the dark-mode aesthetic regardless of the hex codes under them. Selected DB chip: replace cream-on-black with an indigo wash. Background `rgba(99,102,241,0.18)`, text `#c7d2fe` (indigo-200), inset 1px indigo border via box-shadow so the affordance comes from brand color rather than brute-force luminance contrast. Still visually distinct from the unselected `#17181c` slate chips; quiet against the `#0a0a0a` page. Grade/status pill backgrounds: halve opacity (22-28% → 10-16%) across emerald / lime / amber / orange / red. Text colors mostly preserved (lime gets bumped to #a3e635 for the lower-opacity bg). Pills now read as ambient indicators with colored text floating on near-black, not as glowing chips. Same selector as before — applies to the credits pill in the navbar and the grade pill on results/account/history pages.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The near-OLED palette swap (#58) lowered surface luminance to `#0a0a0a` but left every accent at light-mode saturation. Result: the Register button, selected DB chip, and credits pill punch harder than the actual headings — they read as UI alerts, not brand accents. Visible in the user-reported screenshots from the post-#58 review.
Three targeted overrides in dark-mode.css
No template churn — single CSS file edit.
Out of scope (deliberately deferred)
Verification
Test plan