@import "tailwindcss";

:root {
  --background: #00aa44;
  --foreground: #ffffff;
  --tint: #88ff99;
  --accent-light: #ccffe0;
  --accent-blue: #b8d0eb;
  --accent-purple: #d7c1f0;
}

@media (prefers-color-scheme: dark) {
  :root {
    --background: #004422;
    --foreground: #ffffff;
    --tint: #88ff99;
    --accent-light: #66aa77;
    --accent-blue: #6a8eae;
    --accent-purple: #584f7a;
  }
}

body {
  background: var(--background);
  color: var(--foreground);
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes slideUp {
  from {
    transform: translateY(20px);
    opacity: 0;
  }

  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes pulse {
  0% {
    transform: scale(1);
  }

  50% {
    transform: scale(1.05);
  }

  100% {
    transform: scale(1);
  }
}

@keyframes float {
  0% {
    transform: translateY(0px) rotate(0deg);
  }

  33% {
    transform: translateY(-8px) rotate(2deg);
  }

  66% {
    transform: translateY(-12px) rotate(-2deg);
  }

  100% {
    transform: translateY(0px) rotate(0deg);
  }
}

@keyframes dragon-pulse {
  0% {
    transform: translateY(0px) rotate(0deg) scale(1);
    filter: brightness(1);
  }

  25% {
    transform: translateY(-15px) rotate(3deg) scale(1.1);
    filter: brightness(1.1);
  }

  50% {
    transform: translateY(-5px) rotate(-2deg) scale(0.95);
    filter: brightness(0.95);
  }

  75% {
    transform: translateY(-20px) rotate(4deg) scale(1.15);
    filter: brightness(1.15);
  }

  100% {
    transform: translateY(0px) rotate(0deg) scale(1);
    filter: brightness(1);
  }
}

@keyframes traveling-flame {
  0% {
    transform: translateX(0) translateY(0) rotate(0deg) scale(1);
    opacity: 0;
  }

  10% {
    transform: translateX(-20px) translateY(-10px) rotate(5deg) scale(1.1);
    opacity: 1;
  }

  30% {
    transform: translateX(-80px) translateY(-15px) rotate(-5deg) scale(1.15);
    opacity: 0.95;
  }

  50% {
    transform: translateX(-160px) translateY(-10px) rotate(10deg) scale(1.1);
    opacity: 0.9;
  }

  70% {
    transform: translateX(-240px) translateY(-15px) rotate(-8deg) scale(0.95);
    opacity: 0.8;
  }

  90% {
    transform: translateX(-320px) translateY(-5px) rotate(5deg) scale(0.9);
    opacity: 0.5;
  }

  100% {
    transform: translateX(-360px) translateY(0) rotate(0deg) scale(0.8);
    opacity: 0;
  }
}


@keyframes rainbow-move {
  0% {
    background-position: 0% 50%;
  }

  50% {
    background-position: 100% 50%;
  }

  100% {
    background-position: 0% 50%;
  }
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

.animate-fadeIn {
  animation: fadeIn 0.8s ease-in forwards;
}

.animate-slideUp {
  animation: slideUp 0.5s ease-out forwards;
}

.animate-pulse-slow {
  animation: pulse 4s infinite;
}

.delay-100 {
  animation-delay: 100ms;
}

.delay-200 {
  animation-delay: 200ms;
}

.delay-300 {
  animation-delay: 300ms;
}

.animate-float {
  animation: float 5s ease-in-out infinite;
}

.animate-float-slow {
  animation: float 7s ease-in-out infinite;
}

.animate-dragon-pulse {
  animation: dragon-pulse 8s ease-in-out infinite;
  filter: drop-shadow(0 0 20px rgba(255, 100, 0, 0.7));
}

.animate-traveling-flame {
  animation: traveling-flame 5s cubic-bezier(0.25, 0.1, 0.25, 1) forwards;
  filter: drop-shadow(0 0 15px rgba(255, 100, 0, 0.8));
}


@keyframes sparkle {
  0% {
    opacity: 0.4;
    transform: scale(0.8);
  }

  50% {
    opacity: 1;
    transform: scale(1.1);
  }

  100% {
    opacity: 0.4;
    transform: scale(0.8);
  }
}

@keyframes height-pulse {
  0% {
    height: 80%;
  }

  50% {
    height: 100%;
  }

  100% {
    height: 80%;
  }
}

@keyframes rainbow-glow {
  0% {
    filter: blur(0px);
    opacity: 0.7;
  }

  50% {
    filter: blur(5px);
    opacity: 0.9;
  }

  100% {
    filter: blur(0px);
    opacity: 0.7;
  }
}

@keyframes shooting-star {
  0% {
    transform: translate(-5vw, 50vh) scale(0.7) rotate(-15deg);
    opacity: 0;
  }

  10% {
    opacity: 1;
  }

  40% {
    transform: translate(40vw, 20vh) scale(0.8) rotate(5deg);
  }

  70% {
    transform: translate(70vw, 40vh) scale(0.9) rotate(-5deg);
  }

  100% {
    transform: translate(105vw, 30vh) scale(1) rotate(15deg);
    opacity: 0;
  }
}

@keyframes nyan-cat {
  0% {
    transform: translate(-10vw, 30vh) scale(1);
    opacity: 0;
  }

  5% {
    opacity: 1;
  }

  25% {
    transform: translate(25vw, 20vh) scale(1) rotate(5deg);
  }

  50% {
    transform: translate(50vw, 35vh) scale(1) rotate(-5deg);
  }

  75% {
    transform: translate(75vw, 25vh) scale(1) rotate(5deg);
  }

  95% {
    opacity: 1;
  }

  100% {
    transform: translate(110vw, 30vh) scale(1);
    opacity: 0;
  }
}

@keyframes gallop {
  0% {
    transform: translateX(-100%) scaleX(1);
  }

  45% {
    transform: translateX(calc(50vw - 50%)) scaleX(1);
  }

  50% {
    transform: translateX(calc(50vw - 50%)) scaleX(-1);
  }

  95% {
    transform: translateX(-100%) scaleX(-1);
  }

  100% {
    transform: translateX(-100%) scaleX(1);
  }
}

@keyframes prancing-unicorn {
  0% {
    transform: translateX(-10vw) translateY(0px) scale(1);
    opacity: 0;
  }

  5% {
    opacity: 1;
  }

  /* Moving right with more exaggerated bouncing motion */
  8% {
    transform: translateX(0vw) translateY(-10px) scale(1.1, 0.9) rotate(3deg);
  }

  12% {
    transform: translateX(10vw) translateY(5px) scale(0.9, 1.1) rotate(-2deg);
  }

  16% {
    transform: translateX(20vw) translateY(-25px) scale(1.1, 0.9) rotate(5deg);
  }

  20% {
    transform: translateX(30vw) translateY(5px) scale(0.9, 1.1) rotate(-3deg);
  }

  24% {
    transform: translateX(40vw) translateY(-20px) scale(1.1, 0.9) rotate(4deg);
  }

  28% {
    transform: translateX(50vw) translateY(5px) scale(0.9, 1.1) rotate(-3deg);
  }

  32% {
    transform: translateX(60vw) translateY(-25px) scale(1.1, 0.9) rotate(5deg);
  }

  36% {
    transform: translateX(70vw) translateY(5px) scale(0.9, 1.1) rotate(-2deg);
  }

  40% {
    transform: translateX(80vw) translateY(-15px) scale(1.1, 0.9) rotate(3deg);
  }

  44% {
    transform: translateX(90vw) translateY(0px) scale(1) rotate(0deg);
  }

  /* At the right edge, turning around with a little pause and bounce */
  48% {
    transform: translateX(100vw) translateY(-10px) scale(1) rotate(0deg);
  }

  50% {
    transform: translateX(100vw) translateY(0px) scaleX(-1) scale(1) rotate(0deg);
  }

  52% {
    transform: translateX(100vw) translateY(-15px) scaleX(-1) scale(1.1, 0.9) rotate(0deg);
  }

  /* Moving left with bouncing, now facing left */
  56% {
    transform: translateX(90vw) translateY(5px) scaleX(-1) scale(0.9, 1.1) rotate(3deg);
  }

  60% {
    transform: translateX(80vw) translateY(-25px) scaleX(-1) scale(1.1, 0.9) rotate(-5deg);
  }

  64% {
    transform: translateX(70vw) translateY(5px) scaleX(-1) scale(0.9, 1.1) rotate(3deg);
  }

  68% {
    transform: translateX(60vw) translateY(-20px) scaleX(-1) scale(1.1, 0.9) rotate(-4deg);
  }

  72% {
    transform: translateX(50vw) translateY(5px) scaleX(-1) scale(0.9, 1.1) rotate(3deg);
  }

  76% {
    transform: translateX(40vw) translateY(-25px) scaleX(-1) scale(1.1, 0.9) rotate(-5deg);
  }

  80% {
    transform: translateX(30vw) translateY(5px) scaleX(-1) scale(0.9, 1.1) rotate(2deg);
  }

  84% {
    transform: translateX(20vw) translateY(-15px) scaleX(-1) scale(1.1, 0.9) rotate(-3deg);
  }

  88% {
    transform: translateX(10vw) translateY(5px) scaleX(-1) scale(0.9, 1.1) rotate(2deg);
  }

  92% {
    transform: translateX(0vw) translateY(-10px) scaleX(-1) scale(1.1, 0.9) rotate(-2deg);
    opacity: 1;
  }

  96% {
    transform: translateX(-5vw) translateY(0px) scaleX(-1) scale(1) rotate(0deg);
    opacity: 0.5;
  }

  100% {
    transform: translateX(-10vw) translateY(0px) scaleX(-1) scale(1) rotate(0deg);
    opacity: 0;
  }
}

@keyframes confetti {
  0% {
    transform: translateY(0) translateX(0) rotate(0deg);
    opacity: 0;
  }

  10% {
    opacity: 1;
  }

  25% {
    transform: translateY(-20vh) translateX(15vw) rotate(90deg);
  }

  50% {
    transform: translateY(-35vh) translateX(-5vw) rotate(180deg);
  }

  75% {
    transform: translateY(-45vh) translateX(10vw) rotate(270deg);
  }

  100% {
    transform: translateY(-60vh) translateX(0) rotate(360deg);
    opacity: 0;
  }
}

.animate-shooting-star {
  animation: shooting-star 8s ease-in-out forwards;
  position: fixed;
  z-index: 40;
  filter: drop-shadow(0 0 15px rgba(255, 255, 255, 0.9));
  transition: all 0.3s ease;
}

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

.animate-spin-slow {
  animation: spin 8s linear infinite;
}

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

.animate-rainbow {
  background-size: 200% 200%;
  animation: rainbow-move 3s ease infinite;
}

.animate-rainbow-glow {
  animation: rainbow-glow 3s ease-in-out infinite;
}

.animate-gallop {
  animation: gallop 15s ease-in-out infinite;
  position: fixed;
}

.animate-race-unicorn {
  animation: race-unicorn 10s ease-in-out forwards;
  position: absolute;
}

.animate-bouncy-unicorn {
  animation: bouncy-unicorn 15s ease-in-out forwards;
  position: absolute;
  bottom: 20px;
  filter: drop-shadow(0 0 10px rgba(255, 100, 255, 0.7));
}

.animate-prancing-unicorn {
  animation: prancing-unicorn 18s cubic-bezier(0.45, 0.05, 0.55, 0.95) forwards;
  position: absolute;
  bottom: 30px;
  z-index: 50;
  filter: drop-shadow(0 0 15px rgba(255, 50, 255, 0.8)) drop-shadow(0 0 25px rgba(128, 0, 255, 0.6));
}

.animate-confetti {
  animation: confetti 1.5s ease-out forwards;
  position: absolute;
  z-index: 60;
}

.animate-nyan-cat {
  animation: nyan-cat 12s linear infinite;
  position: fixed;
  z-index: 45;
  filter: drop-shadow(0 0 20px rgba(255, 192, 203, 0.8));
}
