for(c.width|=0,i=l=999;i--;)for(t=i/l+.02,e=t*(f=l/360)+b,r=S(e+C(e/3))**3*280+480,a=C(e/3)**3*150+270,h=i+360*b,k=30/t,y=C(h)*k,R=S(h)*k,$=1e3*t+2,d=.2*C(b/.7),r=r*C(d)+$*S(d),o=S(h)*C(3*e),x.fillStyle=`hsl(${50*o},80%,${(30*o+30)*(1-t**4)}%`,s=1-S(e/2)**14+.1,w=15/t*s,x.fillRect(y+r,R+a,w,w),v=w/2/s,x.fillStyle=`hsl(9,10%,${60*(1-t)}%`,track=2;track--;)x.fillRect(r+(track?-1:1)*v,a+.6*k,.8/t,8),(80*e|0)%10==0&&(x.fillStyle="#533",x.fillRect(r-v,a+.6*k,2*v,8)) 465 bytes

* uses Dwitter code golf minimal host environment