enhance(ripple): rewrites ripple effect to match the spec

Closes #348. Closes #359. Closes #412. Closes #440. Closes #548.