i=pl.trail.length-1;i>=0;i--) {
        const c = pl.trail[i];
        c.r += 6*DPR*dt*0.06; c.a *= (1 - 0.015*dt);
        if (c.a < 0.01) { pl.trail.splice(i,1); continue; }
        const g = ctx.createRadialGradient(c.x, c.y, 0, c.x, c.y, c.r);
        g.addColorStop(0, 'rgba(255,255,255,'+(c.a*0.9)+')');
        g.addColorStop(1, 'rgba(255,255,255,0)');
        ctx.fillStyle = g; ctx.beginPath(); ctx.arc(c.x, c.y, c.r, 0, Math.PI*2); ctx.fill();
      }
    }

    function roundRect(x, y, w, h, r){
    