// Premium Theme Effects
document.addEventListener('DOMContentLoaded', () => {
createParticles();
initializePremiumEffects();
});
function createParticles() {
const particlesContainer = document.getElementById('particles');
if (!particlesContainer) return;
// Create 50 particles
for (let i = 0; i < 50; i++) {
const particle = document.createElement('div');
particle.className = 'particle';
// Random position
particle.style.left = Math.random() * 100 + '%';
particle.style.top = Math.random() * 100 + '%';
// Random size
const size = Math.random() * 3 + 1;
particle.style.width = size + 'px';
particle.style.height = size + 'px';
// Random color
const colors = ['#00f3ff', '#b967ff', '#ff2d75', '#2ed573'];
particle.style.background = colors[Math.floor(Math.random() * colors.length)];
// Random animation delay and duration
particle.style.animationDelay = Math.random() * 10 + 's';
particle.style.animationDuration = (Math.random() * 10 + 10) + 's';
particlesContainer.appendChild(particle);
}
}
function initializePremiumEffects() {
// Add ripple effect to buttons
document.querySelectorAll('button.premium').forEach(button => {
button.addEventListener('click', function (e) {
const ripple = document.createElement('span');
const rect = this.getBoundingClientRect();
const size = Math.max(rect.width, rect.height);
ripple.style.width = ripple.style.height = size + 'px';
ripple.style.left = e.clientX - rect.left - size / 2 + 'px';
ripple.style.top = e.clientY - rect.top - size / 2 + 'px';
ripple.classList.add('ripple');
this.appendChild(ripple);
setTimeout(() => {
ripple.remove();
}, 600);
});
});
// Add hover effects to stats
document.querySelectorAll('.stat.premium').forEach(stat => {
stat.addEventListener('mouseenter', () => {
const value = stat.querySelector('.stat-value');
if (value) {
value.style.transform = 'scale(1.1)';
}
});
stat.addEventListener('mouseleave', () => {
const value = stat.querySelector('.stat-value');
if (value) {
value.style.transform = 'scale(1)';
}
});
});
}
// Add CSS for ripple effect
const style = document.createElement('style');
style.textContent = `
.ripple {
position: absolute;
border-radius: 50%;
background: rgba(255, 255, 255, 0.3);
transform: scale(0);
animation: ripple-animation 0.6s linear;
pointer-events: none;
}
@keyframes ripple-animation {
to {
transform: scale(4);
opacity: 0;
}
}
button.premium {
position: relative;
overflow: hidden;
}
`;
document.head.appendChild(style);