The canvas element is only used on Chrome as it has a hard time rendering animations above a big CSS radial-gradient. The whole animation is just using DOM elements, CSS transitions/animations and requestAnimationFrame. And yes, entirely handmade :)
And it does a great job at actually communicating exactly what you wanted it to, which is also an uncommon skill.
Would like to get feedback on what you really liked about Stripe experience and how to improve Castbin.