Foundations

Motion

Movement is the strongest attention signal an interface has, and alarms depend on it working. Every animation spends a little of that budget, so this foundation is mostly a set of limits.

Stable · v1.0 IEC 60601-1-8 WCAG 2.2 AA SC 2.3.1

Overview

Peripheral vision detects movement far better than it detects colour or shape. That is why a new alarm is noticed on a screen nobody is looking at — and why an interface that animates routinely trains the eye to stop reporting movement. Habituation is not a theoretical risk here; it is the same mechanism as alarm fatigue, operating one level lower.

So motion in this system is permitted for three narrow purposes — confirming an interaction, explaining a change of state, and connecting a before to an after — and prohibited for the one it is most often reached for: making something urgent.

Purposeful

Motion answers a question the clinician would otherwise have to ask: did that register, where did this come from, what just changed.

Brief

Nothing exceeds 320 ms. Motion a clinician can outrun is motion that delays them.

Never urgent

Urgency is said by the IEC palette and by wording. Nothing flashes, pulses or throbs to get attention — ever.

Durations

Four values. Definitions live in Tokens; this is which one to use.

Duration scale
--njt-dur-1 80 ms · hover, press feedback
--njt-dur-2 140 ms · colour and state change
--njt-dur-3 220 ms · entry and exit
--njt-dur-4 320 ms · larger surfaces, panels
CurveValueUse
--njt-ease-standardcubic-bezier(.2, 0, 0, 1) Anything that begins and ends on screen — colour, size, position.
--njt-ease-entercubic-bezier(0, 0, 0, 1) Entering. Fast in, settles gently, so arrival is noticed without startling.
--njt-ease-exitcubic-bezier(.3, 0, 1, 1) Leaving. Accelerates away — nothing lingers once dismissed.

What motion may do

What motion must never do

No flashing, pulsing or throbbing — at any rate

Urgency is never expressed by movement. This is stricter than WCAG 2.3.1, which permits flashing below three per second: here it is prohibited outright. Three reasons — it is a photosensitive seizure risk, it competes with the alarm palette that already carries priority, and a pulsing element in peripheral vision is exactly the signal a genuinely new alarm needs to be able to use.

NeverBecause
Flash, pulse or throb to signal urgency Seizure risk; competes with the alarm layer; habituates the eye.
Animate on re-render A list that re-flashes on every poll trains clinicians to ignore movement entirely — see Data grid.
Animate a waveform or trend A drawn-on ECG cannot be measured while it is drawing, and animation implies a change in the signal that has not occurred.
Animate a value counting up A troponin result ticking from 0 to 1 240 displays several wrong values on the way.
Delay an action behind a transition Motion runs alongside the action, never in front of it.
Move content under the pointer Layout shift is a wrong-target mechanism — see Grid & layout.
Auto-scroll or auto-advance Position is the clinician's to control.
Do
STEMI pattern detected — anterior V2–V4
entered once, 220 ms, then still

Enters once so arrival is noticed, then holds absolutely still. Its urgency is carried by hue and wording, which do not decay with exposure.

Don't
STEMI pattern detected — anterior V2–V4
pulsing until acknowledged

Pulsing to demand attention. Within a shift it becomes wallpaper, and it has taken movement away from the next alarm that needs it.

Reduced motion

Under prefers-reduced-motion: reduce, transitions are removed. Nothing else changes. Every state still changes, every alarm still appears, every entry still happens — instantly. Reduced motion is a preference about animation, never a reason to withhold a clinical signal, and treating it as one is a failure mode worth testing for explicitly.

/* Remove the animation, never the event. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

Loading and progress

Outcomes of use

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

Do's and don'ts

Do

A skeleton occupies the space the real rows will take, so nothing moves when the data lands.

Don't

A spinner in a box smaller than the content. Everything below jumps when the rows arrive.

Do
STEMI pattern detected
reduced motion · appears instantly, no transition

Reduced motion removes the animation. The alarm still appears, immediately.

Don't
Animations disabled
Some notifications are suppressed in reduced-motion mode.

A motion preference suppressing clinical signals. The setting was about animation, never about what the clinician is told.

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 · Motion · v1.0 · draft for review