Choreograph list reveals with --i + calc() delays, chain multiple animations on one element, and peek at negative delays.
prefers-reduced-motion: animations disabled
Each item gets style="--i: N" and animation-delay: calc(var(--i) * step). Hit Replay to re-trigger the cascade.
Comma-separated animations share one element — each phase waits for the previous delay + duration stack.
A negative animation-delay skips the opening frames — useful when an element should look like it was already animating.
animation-delay: 0s — starts at the beginning.
animation-delay: -1s — jumps in halfway through a 2s loop.
Both dots use the same @keyframes neg-slide and 2s duration — only the delay differs. Negative values pull the playhead backward on the timeline.