To me, it looks like the timing is different. I’ve added a call to .ease(d3.easeCubicOut), which seems to make it more similar (I’ve forked your notebook and sent you a suggestion). But check out the d3.ease() documentation for some other options!
I was guessing It seemed that the red circle had an initial delay. The default easing function is d3.easeCubic, which means it has a slow-in-slow-out kind of shape. To speed up the beginning, I picked cubicOut, which starts as a linear function and then rounds off towards the end. That seems to work, but now I wonder if the CSS default is simply linear. It’s hard to see the difference because the light colors at the end are harder to tell apart. If you slow it down you’ll see it though.