Dark mode is not just a CSS filter. Proper dark themes need adjusted contrast ratios, warm grays, and careful shadow handling.
Pure black is the wrong default
Black backgrounds with white text produce a halo effect that makes body copy harder to read for long stretches. A very dark warm grey holds the same mood with far less strain.
Text needs softening in the other direction as well. Full white at body size is louder than it needs to be; pulling it slightly off-white keeps the hierarchy without the glare.
// Note
Contrast ratios do not carry over when you invert a palette. A pairing that passes on white can fail on dark, so check both themes separately.
Depth without shadows
Drop shadows barely register against a dark background. Surfaces read as raised through lighter fills and visible borders instead, which is why dark interfaces tend to lean on outlined cards.

