An ordinary stagger computes delay = index × interval, producing a "row" of motion that lags in order: cell 1, then 2, then 3. A staggered grid wave uses delay = distance × interval instead — where distance is the Euclidean (Pythagorean) distance between each cell's (row, column) and the center cell's. Cells near the center move first; cells farther out lag progressively more, and the result reads as a circular ripple spreading outward.
For an infinitely looping animation, giving each cell a negative animation-delay is convenient — delay: −(distance × interval) seconds means every cell starts as if it had already played that far into the loop, so the ripple keeps cycling with no separate trigger needed.
Swap the center point from the grid's middle to the mouse cursor's position, and it becomes an interaction — a ripple spreading from wherever the user's pointer crosses the grid. That means recomputing distance on every pointer move, so with many cells (several hundred or more) you'll want to throttle it.
When to use
Use it for hero backgrounds or loading screens where you want a sense of spreading from one point. For lists and cards with a reading order, index-based stagger fits better — radial delay scrambles the order the eye expects.