Elevation

Depth without drama: hairlines first, shadows only where meaning needs them.

v1.0.0·Updated Jul 10, 2026 · 23:00
Depth without drama

On a dark field, most separation is a hairline — one pixel of #1E1E1E — not a shadow. Shadows are reserved for things that genuinely float above the page and need to say so. Four levels, and you rarely need more than the first two.

The levels
Flat
hairline only
Most surfaces
Raised
shadow-1
Cards that lift
Overlay
shadow-2
Menus, popovers
Modal
shadow-3
Dialogs, toasts
Tokens
TokenValueRole
--elevation-01px solid #1E1E1EFlat — the default hairline
--shadow-10 1px 2px rgba(0,0,0,.35)Raised — a card that lifts
--shadow-20 8px 24px rgba(0,0,0,.42)Overlay — menus, popovers
--shadow-30 16px 40px rgba(0,0,0,.5)Modal — dialogs, toasts
--shadow-focus0 0 0 3px rgba(255,122,0,.14)The one warm ring, for focus
Rules
Hairline first

Try a #1E1E1E border before a shadow. Structure should read from lines and spacing, not from drop shadows.

One layer per context

An overlay sits at shadow-2; a modal at shadow-3. Don't nest shadowed things inside shadowed things.

Warm is only for focus

The single warm ring belongs to keyboard focus. Never tint an elevation shadow for decoration.