+ (1 + Math.random()) * 3, // Random size between 4 and 6 speedX: (Math.random() - 0.5) * 2, speedY: (Math.random() - 0.5) * 2, }); } function drawParticles() { particles.forEach(particle => { ctx.beginPath(); ctx.arc(particle.x, particle.y, particle.radius, 0, Math.PI * 2); const gradient = ctx.createRadialGradient( particle.x, particle.y, particle.radius / 4, particle.x, particle.y, particle.radius * 1.5 ); gradient.addColorStop(0, 'rgba(255, 255, 255, 0.8)'); gradient.addColorStop(1, 'rgba(0, 0, 0, 0)'); ctx.fillStyle = gradient; ctx.fill(); }); } function updateParticles() { particles.forEach((particle, index) => { particle.x += particle.speedX; particle.y += particle.speedY; if (particle.x < 0 || particle.x > canvas.width) { particle.speedX *= -1; } if (particle.y < 0 || particle.y > canvas.height) { particle.speedY *= -1; } particles