Semantic Timing and Motion Tokens (CEM) — Canonical Spec

Status: Canonical (v1.0)

Last updated: August 10, 2026

Audience: Design Systems, Product Design, Front-End Engineering

Applies to: UI animation timing (durations and easing curves)

Companion specs:


1. Purpose and scope

This spec defines the CEM contract surface for motion timing:


2. Taxonomy placement

Related dimensions:


3. Consumer vocabulary

CEM duration names reflect how users perceive timing:

Easing names reflect intent:


4. Canonical token surface

4.1 Duration tokens (required)

cem-timing-durations
TokenValueDescriptiontier
--cem-duration-instant50msBlink; do not interrupt flowrequired
--cem-duration-noticeable250msRegisterable but not slowrequired
--cem-duration-lingering300msLarge change; allow user to trackrequired
--cem-duration-actionvar(--cem-duration-noticeable)Default for interactive state changesrecommended
--cem-duration-overlayvar(--cem-duration-lingering)Default for overlay entry/exitrecommended
--cem-duration-pending-cycle2000msOne seamless cycle of the pending background gradient; repetition stops under reduced motionrecommended
--cem-duration-continuous-cycle1000msOne neutral cycle of repeated status motion, such as indeterminate progressrecommended

Normative rules:

4.2 Easing tokens (required)

Easing tokens are expressed as CSS timing functions. R-D7-1 resolved: highlighted curves now use Material 3 "Emphasized" cubic-beziers — visibly more deliberate than smooth. Adapters SHOULD replace these with platform-appropriate emphasized curves.

cem-timing-easings
TokenValueDescriptiontier
--cem-easing-smoothease-in-outDefault; everyday unobtrusive motionrequired
--cem-easing-start-smoothease-inEntrance motionrequired
--cem-easing-end-smoothease-outDismissal motionrequired
--cem-easing-highlightedcubic-bezier(0.2, 0, 0, 1)Attention-drawing motion (M3 Emphasized)required
--cem-easing-highlighted-startcubic-bezier(0.3, 0, 0.8, 0.15)Highlighted entrance (M3 Emphasized Accelerate)required
--cem-easing-highlighted-endcubic-bezier(0.05, 0.7, 0.1, 1)Highlighted dismissal (M3 Emphasized Decelerate)required
--cem-easing-uniformlinearNeutral/mechanical (e.g. indeterminate progress)required
--cem-easing-classiceaseLegacy compatibilityrequired

Normative rules:

4.3 Spring motion (adapter-local, not canonical tokens)

R-D7-2 is resolved by not defining or reserving canonical --cem-spring-* custom properties in v1.

Reason:

Adapter guidance:

Normative rules (if springs are implemented):

4.4 Reduced-motion overrides

When prefers-reduced-motion: reduce is active, duration tokens are overridden to dramatically shorter values while preserving their relative ordering (instant < noticeable < lingering). Alias tokens (--cem-duration-action, --cem-duration-overlay) inherit automatically via var() and need no explicit override. Easing tokens are unaffected. --cem-duration-continuous-cycle is intentionally not shortened: consumers must remove automatic repetition and retain a static status graphic under reduced motion.

cem-timing-reduced-motion
Tokenreduced-motion valueDescription
--cem-duration-instant0msOff entirely — motion is imperceptible
--cem-duration-noticeable50msDramatically shortened; signals "something happened"
--cem-duration-lingering100msDramatically shortened; ordering preserved

5. Usage guidance

Easing selection:


6. Governance and versioning

Treat D7 tokens as contract-level once canonical.

Breaking (MAJOR):

Non-breaking (MINOR/PATCH):


7. Token manifest index

Token tier is encoded in the tier column of each source table. The manifest validator derives expected token names from these tables using the same XPath pattern as cem-timing.html.

Source table h6 idTokens coveredValidator derivation
cem-timing-durations--cem-duration-* (6 tokens: 3 required + 3 recommended semantic endpoints)one token per row
cem-timing-easings--cem-easing-* (8 tokens: all required)one token per row

Reduced-motion overrides (cem-timing-reduced-motion) produce no new token names — they override core duration tokens within @media (prefers-reduced-motion: reduce). Spring tokens (--cem-spring-*) are intentionally absent from the v1 manifest and default CSS output; spring motion is adapter-local until CEM defines a portable concrete encoding.