Brik Design System
Foundation

Elevation

The Figma Elevation collection — box-shadow and blur-radius primitives, and the composed semantic shadow tokens components consume.

Elevation is the Figma collection that governs depth (modes flat / subtle / lifted / dramatic). It ships two Primitive groups — box-shadow and blur-radius — that compose into the ready-to-use semantic --shadow-* values components reference. The CSS variable prefix stays --shadow-* / --box-shadow-*; the collection and this page carry Figma's name, Elevation.

Use composed semantic shadows in component CSS — --shadow-sm, --shadow-md, --shadow-lg, --shadow-xl. Never compose raw blur and spread values yourself; the semantic tokens are tuned together for consistent perceived elevation.

From Figma Elevation to shadow tokens

A Figma variable holds a single dimension, so the Elevation collection's box-shadow group exports as --box-shadow-sm/md/lg/xl carrying only a blur value (e.g. 2px) — not a usable box-shadow shorthand. tokens/gap-fills.css closes the gap: it defines the real multi-part --shadow-* shorthands, then re-aliases --box-shadow-* → var(--shadow-*) so either name resolves to the correct value.

LayerNamesWhere
Figma collectionElevation → groups box-shadow, blur-radiusdesign-tokens/tokens-studio.json
Style Dictionary output--box-shadow-* (single blur), --blur-radius-*, --shadow-blur/offset/spread-*tokens/figma-tokens.css
Composed semantic (what you use)--bds-shadow-sm/md/lg/xl, --bds-shadow-overlaytokens/gap-fills.css

--shadow-* is canonical for elevation; --box-shadow-{sm,md,lg,xl} is a deprecated alias (#2233). Both ship and resolve identically, but component CSS now references only --shadow-* — the safe composed base, defined once. The --box-shadow-{sm..xl} aliases survive only for existing consumers; don't reach for them in new work. Note --box-shadow-none (value none, for suppressing a shadow) is a separate token with no --shadow-* twin — it stays as-is.

Composed shadow tokens

Ready-to-use box-shadow values defined in tokens/gap-fills.css. These are what components reference.

TokenCSS VariableValueUse case
Small--bds-shadow-sm0px 2px 4px 0px rgba(0,0,0,0.06)Subtle cards, inputs
Medium--bds-shadow-md0px 4px 12px 0px rgba(0,0,0,0.12)Cards, panels
Large--bds-shadow-lg0px 4px 16px 0px rgba(0,0,0,0.12)Dropdowns, popovers
Extra large--bds-shadow-xl0px 8px 24px 4px rgba(0,0,0,0.20)Modals, dialogs

Overlay

TokenCSS VariableValue
Overlay--bds-background-overlayrgba(0, 0, 0, 0.4)

Used for modal backdrops and drawer overlays.

Shadow blur scale

Controls the softness/diffusion of shadows.

--shadow-blur-0
0px
--shadow-blur-100
2px
--shadow-blur-200
4px
--shadow-blur-300
6px
--shadow-blur-400
8px
--shadow-blur-500
10px
--shadow-blur-600
12px
--shadow-blur-700
14px
--shadow-blur-800
16px

Shadow spread scale

Controls how far a shadow extends outward.

--shadow-spread-0
0px
--shadow-spread-100
2px
--shadow-spread-200
4px
--shadow-spread-300
8px
--shadow-spread-400
10px
--shadow-spread-500
12px
--shadow-spread-600
14px
--shadow-spread-700
16px
--shadow-spread-800
16px

Filter blur

--blur-radius-* feeds the CSS filter: blur() and backdrop-filter — the softening of an element or of whatever sits behind it. This is distinct from --shadow-blur-*, which is the blur component of a box-shadow; the two are not interchangeable.

Shipped, but unconsumed today. No component references --blur-radius-* (grep -r "var(--blur-radius" components/ → 0). The family is available for frosted-glass / scrim treatments; until one ships, whether BDS keeps it is an open question for the naming ADR (#1910).

TokenCSS VariableValue
Small--bds-blur-radius-sm8px
Medium--bds-blur-radius-md12px
Large--bds-blur-radius-lg14px
Extra large--bds-blur-radius-xl16px
.frosted-panel {
  backdrop-filter: blur(var(--bds-blur-radius-md));
}
  • Border — radius and elevation read together at the component edge
  • Color tokens — surface tokens shadows sit on

On this page

💬