Skip to main content

Global Design System

Motion rules

Subtle hover transforms, reduced-motion respect, and animation budget.

Complete

Subtle, purposeful, reduced-motion-aware. The editorial discipline applies to animation too — if a motion does not earn its budget, it gets cut.

Approved motion patterns

Card hover: translateY(-1px) + border tint
150ms ease transition. Purple border tint at 40% opacity. Optional soft 6-12px purple shadow.
CTA arrow advance: gap shifts on hover
The arrow icon scoots forward by ~0.25rem on hover. 150ms ease. Subtle directional signal.
Live signal dot: pulse animation
`.deadline-pulse` and `.live-tick` use a 1.5-2s pulse. Reserved for actively-running deadlines and live signals.
Ticker marquee: linear scroll
Signal-board ticker scrolls horizontally at a constant rate. GPU-cheap (`background-position` only).
Animated background scan
`.cal-signal-board__scan` runs a 6s subtle scan line across the Signal Board hero. Pauses on user inactivity.

Universal rules

  • Every animation MUST respect `prefers-reduced-motion: reduce`. Hover transforms disable, pulses freeze.
  • No motion budget over 6s for any single loop (longest live loop = `.cal-signal-board__scan` at 6s).
  • No motion on touch devices for hover transforms (auto-disabled via `@media (hover: none)`).
  • GPU-only properties: `transform`, `opacity`, `background-position`. Avoid animating `width`, `height`, `top`, `left`.