/* 2025 Modern Effects */
:root {
  --cta-ripple-size: 0;
}

.fade-in, .animate-fade-in {
  animation: fadeIn 1.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(40px); }
  to { opacity: 1; transform: none; }
}

/* Morphing SVG blobs */
@keyframes blobMorph {
  0%,100% { transform: scale(1) translate(0,0) rotate(0deg); }
  25% { transform: scale(1.08) translate(30px, -20px) rotate(8deg); }
  50% { transform: scale(0.95) translate(-20px, 30px) rotate(-6deg); }
  75% { transform: scale(1.05) translate(10px, 10px) rotate(4deg); }
}
.animate-blob-morph {
  animation: blobMorph 18s ease-in-out infinite alternate;
}
@keyframes blobMorph2 {
  0%,100% { transform: scale(1) translate(0,0) rotate(0deg); }
  33% { transform: scale(1.1) translate(-20px, 20px) rotate(-10deg); }
  66% { transform: scale(0.9) translate(20px, -20px) rotate(10deg); }
}
.animate-blob-morph2 {
  animation: blobMorph2 22s ease-in-out infinite alternate;
}

/* Animated CTA ripple */
.cta-animated {
  position: relative;
  overflow: hidden;
}
.cta-animated .cta-ripple {
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--cta-ripple-size, 0);
  height: var(--cta-ripple-size, 0);
  background: radial-gradient(circle, rgba(255,255,255,0.5) 0%, rgba(255,255,255,0.1) 80%, transparent 100%);
  border-radius: 50%;
  pointer-events: none;
  transform: translate(-50%, -50%);
  opacity: 0.7;
  transition: width 0.4s cubic-bezier(0.4,0,0.2,1), height 0.4s cubic-bezier(0.4,0,0.2,1);
}
.cta-animated:active .cta-ripple {
  --cta-ripple-size: 300px;
}

/* Pulsing contest badge */
@keyframes pulseBadge {
  0%, 100% { box-shadow: 0 0 0 0 rgba(251, 191, 36, 0.7); }
  50% { box-shadow: 0 0 60px 20px rgba(251, 191, 36, 0.4); }
}
.animate-pulse-badge {
  animation: pulseBadge 2.5s infinite;
}

/* Dark/Light mode transitions */
[data-theme="dark"] body {
  background: linear-gradient(135deg, #181e29 0%, #232946 100%);
  color: #e0e6f7;
}
[data-theme="light"] body {
  background: linear-gradient(135deg, #2563eb 0%, #f472b6 100%);
  color: #1e293b;
}

/* Micro-interactions */
input:focus, button:focus {
  outline: 2px solid #f472b6;
  outline-offset: 2px;
}
button:active {
  transform: scale(0.97);
}

/* Smooth transitions */
body, input, button {
  transition: background 0.5s, color 0.5s, box-shadow 0.3s, border 0.3s;
} 
