Foundations

Elevation

In this system elevation does not mean importance. It means temporary — floating above the page, and about to go away. Which is why static content never gets a shadow, and why the alarm layer sits at the top of the stack.

Stable · v1.0 IEC 60601-1-8

Overview

Most design systems use elevation as emphasis: more important things float higher. That reading fails here for two reasons. Importance in clinical software is already carried by the alarm palette, which is governed and unambiguous — and a raised card that never goes away teaches clinicians that raised things are permanent, which then undermines the components where transience is the entire point.

So elevation carries one meaning: this is floating, and it will be dismissed. Popovers, menus, tooltips and dialogs are elevated. Cards, panels and rows are not.

Transience, not importance

A shadow says "temporary". Priority is said by the IEC palette, never by height.

Sparing

Four levels, and most screens use none of them. Static content is separated by a 1 px border.

Strictly ordered

One stacking order for the whole product, defined here. Nothing chooses its own z-index.

The stacking order

Five layers, fixed. The one that matters is the top.

Stacking order · alarms above everything
0 · CONTENT — cards, grids, panels. No shadow.
10 · STICKY — masthead, patient header, grid header
20 · POPOVER — menu, select listbox, tooltip
30 · DIALOG — scrim and dialog surface
40 · ALARM — always above, never obscured
Alarms outrank the modal layer

A dialog traps focus, dims the record and demands an answer — but it never conceals a patient signal. The alarm region renders above the dialog scrim, stays readable, and does not steal focus. This is the single most consequential rule on this page, and it is the reason the stacking order is defined centrally rather than left to whichever component last set a z-index. See Dialog.

Layerz-indexShadowMembers
Content0None — 1 px border Cards, data grids, layout panels, worklist rows
Sticky10Level 1 Masthead, patient header, sticky table headers
Popover20Level 2 Menus, select listboxes, popovers, tooltips
Dialog30Level 3 Scrim and dialog surface
Alarm40Level 3 The docked alert region. Never obscured by anything.

Shadow levels

The four levels
Level 0
Border only. All static content.
Level 1
Sticky. Just enough to separate on scroll.
Level 2
Popovers and menus.
Level 3
Dialogs and the alarm region.

Shadows are tinted with the brand's deepest teal rather than neutral black, so they sit in the warm palette instead of greying it. In dark mode they deepen rather than invert — a light glow reads as a highlight, which would collide with the meaning of the alarm layer.

Rules

Do

Troponin

Rising
47 ng/L

Static card, border only. Its urgency is carried by the chip, where a clinician already knows to look for it.

Don't

Troponin

47 ng/L

Raised to signal importance. It now reads as floating and dismissible, and it competes with the layer real alarms occupy.

Outcomes of use

What this contributes to, in the terms of Usability & context of use.

Do's and don'ts

Do
Card — flat
Popover — raised

Only the transient surface is raised, so elevation still means “this will go away”.

Don't
Card — raised
Popover — raised

Everything floats. Elevation distinguishes nothing, and genuinely dismissible surfaces stop reading as dismissible.

Do
.alarm-region { z-index: 40; }  /* layer name */
.dialog       { z-index: 30; }

Layers come from one central scale, so the alarm region is provably above the modal layer.

Don't
.dialog { z-index: 9999; }
/* fixes overlap bug */

An ad-hoc value chosen to win a stacking fight. It has just placed a dialog over the alarm region.

Clinical safety notes

Risk controls carried by this foundation

Trace these in your risk file (ISO 14971) and usability engineering file (IEC 62366-1).

NotJustAnyMed.Tech Design System · Elevation · v1.0 · draft for review