(255,255,255,0)');
        ctx.fillStyle = grad;
        ctx.beginPath(); ctx.arc(x, y, p.r, 0, Math.PI*2); ctx.fill();
      } else if (p.type === 'ellipse') {
        const a = Math.max(0, Math.min(1, p.a));
        ctx.save();
        ctx.translate(x, y);
        ctx.rotate(p.rot||0);
        ctx.scale(p.aspect||1.8, 1);
        const grad = ctx.createRadialGradient(0, 0, 0, 0, 0, p.r);
        grad.addColorStop(0, 'rgba(255,255,255,'+(a*0.95)+')');
        grad.addColorStop(1, 'rgba(255,255,255,0)');
  