@keyframes confetti {
  0% {
    transform: translateY(-10vh) rotate(0deg);
    opacity: 1;
  }
  100% {
    transform: translateY(100vh) rotate(720deg);
    opacity: 0;
  }
}

@keyframes berry-fall {
  0% {
    transform: translateY(-10vh) rotate(0deg);
    opacity: 1;
  }
  100% {
    transform: translateY(100vh) rotate(360deg);
    opacity: 0;
  }
}

@keyframes heart-burst {
  0% {
    transform: scale(0) rotate(0deg);
    opacity: 1;
  }
  50% {
    transform: scale(1.5) rotate(180deg);
    opacity: 1;
  }
  100% {
    transform: scale(0) rotate(360deg);
    opacity: 0;
  }
}

@keyframes pulse-heart {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.2);
  }
}

@keyframes orbit {
  0% {
    transform: rotate(0deg) translateX(100px) rotate(0deg);
  }
  100% {
    transform: rotate(360deg) translateX(100px) rotate(-360deg);
  }
}

@keyframes orbit-reverse {
  0% {
    transform: rotate(180deg) translateX(100px) rotate(-180deg);
  }
  100% {
    transform: rotate(540deg) translateX(100px) rotate(-540deg);
  }
}

@keyframes handshake {
  0%, 100% {
    transform: rotate(-10deg);
  }
  50% {
    transform: rotate(10deg);
  }
}

.animate-confetti {
  animation: confetti 3s ease-out forwards;
}

.animate-berry-fall {
  animation: berry-fall 4s ease-in forwards;
}

.animate-heart-burst {
  animation: heart-burst 1.5s ease-out forwards;
}

.animate-pulse-heart {
  animation: pulse-heart 1s ease-in-out infinite;
}

.animate-orbit {
  animation: orbit 4s linear infinite;
}

.animate-orbit-reverse {
  animation: orbit-reverse 4s linear infinite;
}

.animate-handshake {
  animation: handshake 0.5s ease-in-out infinite;
}

.scrollbar-hide::-webkit-scrollbar {
  display: none;
}

.scrollbar-hide {
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* Glassmorphism effect for cards */
.glass {
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.dark .glass {
  background: rgba(31, 41, 55, 0.7);
}

/* Custom scrollbar for modal */
::-webkit-scrollbar {
  width: 8px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: linear-gradient(to bottom, #6B46C1, #EC4899);
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(to bottom, #553C9A, #D53F8C);
}

/* Smooth transitions for dark mode */
body {
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* Button glow effect */
button:hover {
  filter: brightness(1.05);
}

/* Pulse animation for loading */
@keyframes pulse-glow {
  0%, 100% {
    box-shadow: 0 0 20px rgba(107, 70, 193, 0.3);
  }
  50% {
    box-shadow: 0 0 40px rgba(236, 72, 153, 0.5);
  }
}

.animate-pulse-glow {
  animation: pulse-glow 2s ease-in-out infinite;
}