Every surface sits on one of seven named rungs, from the draft at base to the blocking dialog on top. Elevation describes a crossing surface with shadow; this ladder decides which surface paints over the other.
The ladder
Seven tokens in steps of ten, top wins. The gaps belong to future system rungs, never to feature values.
60z.dialogBlocking dialogs, the top of the product stackRerun feedback?
50z.backdropThe single ink scrimScrim
Blocking above this line
40z.toastToasts in the bottom right cornerYour draft is saved
30z.overlayMenus, popovers, autocomplete, tooltipsExport menu
20z.stickyThe app navigation bar and sticky toolbarsApp navigation
10z.raisedSticky table headers and in-page raised surfacesSticky table header
0z.baseAll in-flow content: the draft, cards, controlsThe draft
The stacking ladderEach plane steps right as its token rises; the top rung paints over everything beneath it
Miniature radiischematic surfaces scale down, 4px at most on a mini plane, 0 where the surface it depicts is square
Every product surface names its rung. Elevation owns how these shadows look; this table only orders them.
Product surfaces mapped to z-index tokens and paired elevation
Product surface
Token
Value
Paired elevation
The draft, question cards, controls
z.base
0
shadow.none
Sticky table header
z.raised
10
shadow.raised while content passes beneath
App navigation bar
z.sticky
20
shadow.raised after overlap
Export menu
z.overlay
30
shadow.overlay
Dimensions legend popover
z.overlay
30
shadow.overlay
Your draft is saved toast
z.toast
40
shadow.overlay
Dialog scrim
z.backdrop
50
bg.overlay fill
Rerun feedback confirmation
z.dialog
60
shadow.dialog
Only tokens reach feature code.
A raw z-index number in a component is a defect: if a surface has no rung, it belongs on z.base.
Blocking and non-blocking
The ladder splits at the scrim. Below z.backdrop the page stays live; above it the page waits.
Non-blocking
z.overlay 30 · z.toast 40
Rerun feedbackCopy or export draftStart Brainstormingoverlay 30
Your draft is savedtoast 40
Nothing dims; the page underneath stays live.
Menus and popovers close on outside click or Escape and never trap focus.
A toast waits in the bottom right corner and dismisses itself; it never takes focus.
Blocking
z.backdrop 50 · z.dialog 60
Rerun feedback?
This replaces the current questions on your draft.
One blocking surface at a time; a dialog never opens a second dialog above itself.
The single ink scrim sits at z.backdrop and dims everything below it.
The dialog traps focus and restores it on close; deeper keyboard detail belongs to the accessibility page.
A toast never covers an open dialog.
z.toast 40 sits below z.backdrop 50 by design, so the toast waits its turn behind the scrim.
Stacking contexts
transform, filter, and position: sticky each start a new stacking context, and a token wins only against siblings in the same one. Whatever the ancestor sits on caps everything inside it.
App navigationsticky 20
Rerun feedback?dialog 60
Do portal blocking surfaces to the document body, where only the ladder decides what paints on top.
transform
Export menuoverlay 30
App navigationsticky 20
Don't mount one inside a transformed, filtered, or sticky ancestor; its token competes only inside that context, so the navigation still paints over it.
Rules
Seven checks keep stacking boring, which is the goal.
Name every rung. A raw z-index number in feature code is a defect; use the seven tokens and nothing between them.
Keep one blocking surface. A dialog never opens a second dialog above itself; replace the decision or finish it first.
Let toasts wait.z.toast 40 sits below z.backdrop 50 by design, so a toast never covers an open dialog.
Pair order with elevation.z.overlay carries shadow.overlay; z.dialog carries shadow.dialog plus the single bg.overlay scrim.
Match interaction mode. Non-blocking layers close on outside click or Escape and never trap focus; blocking layers trap focus and restore it on close.
Portal blocking surfaces. Render the backdrop and dialog at the document body so no ancestor stacking context can cap them.
Never dim below the scrim. Menus, popovers, autocomplete, and tooltips never darken the page; the one scrim belongs to the dialog alone.