Colors & Tokens
Ziom defines every color as a CSS custom property in
app/assets/stylesheets/ziom/variables.css. Always reference the token
(e.g. var(--ziom-primary)) rather than a raw hex value — this is
what makes light/dark theming automatic. Toggle the theme in the page header to see
these swatches update live.
Semantic
Used for status, feedback, and intent. Each has a matching -light tint for backgrounds.
Neutral Grays
A 10-step scale that inverts in dark mode.
Surfaces & Text
Glass & Shadows
The signature frosted-glass look combines a translucent background with a backdrop blur. Shadows are ambient and soft.
| Token | Value | Usage |
|---|---|---|
--ziom-glass-bg | rgba(255,255,255,0.72) | Translucent surface fill |
--ziom-glass-blur | blur(20px) | backdrop-filter for frosted effect |
--ziom-glass-border-subtle | rgba(0,0,0,0.04) | Hairline borders on cards/inputs |
--ziom-shadow-sm | 0 2px 8px rgba(0,0,0,0.04) | Resting elevation |
--ziom-shadow-glass | layered | Glass card elevation |
--ziom-shadow-lg | 0 8px 32px rgba(0,0,0,0.08) | Modals, popovers |
Theming
Dark mode is enabled by setting data-theme="dark" on the <html>
element. When no theme is set, Ziom falls back to the operating system preference via
prefers-color-scheme. The theme Stimulus controller persists the
choice to localStorage.
Using a token
Reference tokens in your own CSS so components theme automatically.
--ziom-bg-elevated and --ziom-text-primary.
<div style="padding: var(--ziom-space-4); background: var(--ziom-bg-elevated); border: 1px solid var(--ziom-glass-border-subtle); border-radius: var(--ziom-radius-md); color: var(--ziom-text-primary);">
This box uses <code>--ziom-bg-elevated</code> and <code>--ziom-text-primary</code>.
</div>