Designing a Dark Theme Design System
Most design systems start with light mode and tack on dark mode as an afterthought. We went the other direction.
Pixel Guild's design system is dark-first. Every color decision, every contrast ratio, every shadow value was chosen for dark backgrounds first. This isn't just an aesthetic choice,our target audience of developers and designers overwhelmingly prefers dark interfaces.
We chose a monochromatic slate palette deliberately. It's tempting to add accent colors, but restraint creates elegance. Our entire UI uses shades of slate, from slate-950 backgrounds to slate-300 text, with white reserved for emphasis.
The key challenge with dark themes is maintaining readability without causing eye strain. We use gray-400 for body text instead of pure white, which reduces contrast just enough to be comfortable during long reading sessions while still meeting WCAG AA standards.
Cards use a semi-transparent slate-800 with backdrop blur, creating subtle depth without harsh borders. This layering effect is what makes the design feel three-dimensional rather than flat.
Tailwind CSS v4 made implementing this system straightforward. CSS custom properties for our color tokens, utility classes for common patterns, and the new @theme directive for type-safe theme values.