Dark Mode

µCSS manages the toggle between light and dark themes. Dark mode is activated either automatically via the user's system preference (prefers-color-scheme), or manually via the data-theme attribute on the root element.

Usage

No configuration is required for automatic mode. µCSS detects the system preference and adapts colors accordingly.

To force a theme, add data-theme on <html>:

<html data-theme="dark">

Available modes

ModeTriggerCSS Selector
Light (default)System preference or data-theme="light":root:not([data-theme="dark"])
Auto darkprefers-color-scheme: dark without data-theme@media (prefers-color-scheme: dark) { :root:not([data-theme]) }
Forced darkdata-theme="dark"[data-theme="dark"]

Manual toggle

A JavaScript button allows the user to toggle between themes:

<button id="theme-toggle">Toggle theme</button>

<script>
const btn = document.getElementById('theme-toggle');
btn.addEventListener('click', () => {
    const html = document.documentElement;
    const current = html.getAttribute('data-theme');
    html.setAttribute('data-theme', current === 'dark' ? 'light' : 'dark');
});
</script>

Affected color variables

All µCSS color variables adapt to the theme. The main ones:

VariableLight themeDark theme
--mu-background-color#fffrgb(19, 22.5, 30.5)
--mu-color#373c44#c2c7d0
--mu-primary#0172ad#01aaff
--mu-muted-color#646b79#8891a4
--mu-card-background-color#fffrgb(24, 28.5, 38)

The full list is available in Variables.

color-scheme property

µCSS sets color-scheme: light or color-scheme: dark depending on the active theme. This native CSS property informs the browser of the color scheme, which affects scrollbars, native form fields, and other browser UI elements.

Color customization

To override the colors of a theme, target the corresponding selector:

/* Override background in dark mode */
[data-theme="dark"] {
    --mu-background-color: #1a1a2e;
}

/* Override in light mode */
:root:not([data-theme="dark"]) {
    --mu-primary: #e63946;
}

Accessibility

  • Theme toggling must not modify the content or structure of the page.
  • Color contrasts comply with WCAG AA recommendations in both themes.
  • Using prefers-color-scheme as the default mode respects user preferences.
  • Provide a visible toggle control so users can override system settings when desired.

See also: Variables