box-shadow:
0 0 20px
oklch(13% .015 145 / .04)
No origin. No direction.
Only depth.
The blur radiates from the element itself — centered at zero offset — because depth in Velora is atmospheric occlusion, not a shadow cast by a single light source.
box-shadow:
0 0 30px
oklch(13% .015 145 / .06)
box-shadow:
0 0 40px
oklch(13% .015 145 / .08)
box-shadow:
0 0 48px
oklch(13% .015 145 / .10)
02 / 05 · Elevation hierarchy
Four planes of depth. Each one lighter, blurrier, more present.
As an element rises, its tonal background shifts toward Surface Bright and its shadow blur expands — depth without perspective tricks, without z-index games.
Zero offset. All axes.
x:0, y:0, spread:0. The shadow expands uniformly because occlusion has no preferred angle.
03 / 05 · Shadow recipes
Five recipes. One axis of control — blur and alpha only.
No angles. No spread. The demo box at the bottom of each column is rendered with the actual token value. Hover a column to isolate it.
blur 20px · alpha 4%
Cards, secondary btns
blur 30px · alpha 6%
Tooltips, nav clusters
blur 40px · alpha 8%
Modals, dialogs
blur 48px · alpha 10%
Hero elements
blur 56px · alpha 12%
Focus rings, active
/* Apply any ambient shadow tier with one token */
.card { box-shadow: var(--vl-shadow-low); } /* blur 20px · alpha 4% */
.tooltip { box-shadow: var(--vl-shadow-medium); } /* blur 30px · alpha 6% */
.modal { box-shadow: var(--vl-shadow-high); } /* blur 40px · alpha 8% */
.hero { box-shadow: var(--vl-shadow-float); } /* blur 48px · alpha 10% */
.focus { box-shadow: var(--vl-shadow-glow); } /* blur 56px · alpha 12% */
Override --vl-kinetic-blur and --vl-ambient-alpha at :root to retheme the entire shadow family in one declaration.
04 / 05 · Token specification
Two variables govern the whole atmospheric stack.
Override --vl-kinetic-blur and --vl-ambient-alpha at root level;
every derived tier recalculates. No GPU filters. No runtime cost.
05 / 05 · Applied contexts
One token per elevation role. Nothing arbitrary.
Modal at vl-shadow-high. Popover at vl-shadow-medium.
List card at vl-shadow-low. The recipe matches the element's distance from the base canvas.
Modal / Dialog
Maximum depth. Critical focal surface demanding full attention from the user.
Popover / Tooltip
Contextual depth. Floats above a sibling element without claiming the full scene.
List Card / Item
Resting separation. Just enough depth to distinguish from the base canvas.