/* French Lore - Animations */
/* Revolutionary Keyframes and Transitions */

/* Loading Screen Animations */
@keyframes guillotine-drop {
  0% {
    transform: translateY(-100px);
  }
  50% {
    transform: translateY(80px);
  }
  100% {
    transform: translateY(-100px);
  }
}

@keyframes pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

/* Hero Section Animations */
@keyframes crumble {
  0%, 90% {
    transform: translateY(0) rotate(0deg);
    opacity: 0.3;
  }
  95% {
    transform: translateY(10px) rotate(2deg);
    opacity: 0.2;
  }
  100% {
    transform: translateY(20px) rotate(-1deg);
    opacity: 0.1;
  }
}

@keyframes rotate3d {
  0% {
    transform: rotateY(0deg) rotateX(0deg);
  }
  25% {
    transform: rotateY(90deg) rotateX(10deg);
  }
  50% {
    transform: rotateY(180deg) rotateX(0deg);
  }
  75% {
    transform: rotateY(270deg) rotateX(-10deg);
  }
  100% {
    transform: rotateY(360deg) rotateX(0deg);
  }
}

@keyframes pulse-glow {
  0%, 100% {
    transform: scale(1);
    opacity: 0.3;
  }
  50% {
    transform: scale(1.1);
    opacity: 0.6;
  }
}

@keyframes pulse-button {
  0%, 100% {
    box-shadow: 0 0 20px var(--neon-green-glow);
  }
  50% {
    box-shadow: 0 0 40px var(--neon-green-glow), 0 0 60px var(--neon-green-glow);
  }
}

/* Story Section Character Animations */
@keyframes character-bob {
  0%, 100% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-5px);
  }
}

@keyframes hide-charts {
  0%, 100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.3;
    transform: scale(0.8);
  }
}

@keyframes laser-eyes {
  0%, 100% {
    text-shadow: 0 0 5px var(--neon-green);
  }
  50% {
    text-shadow: 0 0 20px var(--neon-green), 0 0 30px var(--neon-green);
  }
}

@keyframes sweat-drop {
  0% {
    transform: translateY(0px) translateX(-50%);
    opacity: 1;
  }
  100% {
    transform: translateY(20px) translateX(-50%);
    opacity: 0;
  }
}

@keyframes shadow-fall {
  0%, 70% {
    opacity: 0;
    transform: translateY(-20px);
  }
  80% {
    opacity: 0.5;
    transform: translateY(-10px);
  }
  100% {
    opacity: 0.8;
    transform: translateY(0px);
  }
}

@keyframes popup-appear {
  0%, 80% {
    opacity: 0;
    transform: translateX(-50%) translateY(-20px) scale(0.8);
  }
  85% {
    opacity: 1;
    transform: translateX(-50%) translateY(-40px) scale(1.1);
  }
  95% {
    opacity: 1;
    transform: translateX(-50%) translateY(-40px) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateX(-50%) translateY(-60px) scale(0.9);
  }
}

@keyframes slice-fall {
  0% {
    transform: translateY(-50px) rotate(0deg);
    opacity: 1;
  }
  50% {
    transform: translateY(0px) rotate(180deg);
    opacity: 1;
  }
  100% {
    transform: translateY(50px) rotate(360deg);
    opacity: 0;
  }
}

@keyframes chat-scroll {
  0% {
    transform: translateY(0px);
    opacity: 1;
  }
  25% {
    opacity: 1;
  }
  75% {
    opacity: 0.7;
  }
  100% {
    transform: translateY(-20px);
    opacity: 0;
  }
}

/* Tokenomics Section Animations */
@keyframes background-float {
  0% {
    transform: translateX(0px) translateY(0px);
  }
  25% {
    transform: translateX(-10px) translateY(-5px);
  }
  50% {
    transform: translateX(0px) translateY(-10px);
  }
  75% {
    transform: translateX(10px) translateY(-5px);
  }
  100% {
    transform: translateX(0px) translateY(0px);
  }
}

@keyframes wobble {
  0%, 100% {
    transform: translateX(0px) rotate(0deg);
  }
  15% {
    transform: translateX(-5px) rotate(-5deg);
  }
  30% {
    transform: translateX(5px) rotate(3deg);
  }
  45% {
    transform: translateX(-3px) rotate(-3deg);
  }
  60% {
    transform: translateX(3px) rotate(2deg);
  }
  75% {
    transform: translateX(-1px) rotate(-1deg);
  }
}

/* Roadmap Section Animations */
@keyframes blade-drop {
  0% {
    transform: translateY(-100%);
  }
  70% {
    transform: translateY(0%);
  }
  80% {
    transform: translateY(-10%);
  }
  90% {
    transform: translateY(0%);
  }
  100% {
    transform: translateY(0%);
  }
}

@keyframes milestone-reveal {
  0% {
    opacity: 0;
    transform: translateY(20px) scale(0.8);
  }
  100% {
    opacity: 1;
    transform: translateY(0px) scale(1);
  }
}

/* Gallery Section Animations */
@keyframes tilt-hover {
  0% {
    transform: perspective(1000px) rotateX(0deg) rotateY(0deg);
  }
  100% {
    transform: perspective(1000px) rotateX(5deg) rotateY(5deg);
  }
}

@keyframes frame-glow {
  0%, 100% {
    box-shadow: 0 0 10px var(--gold);
  }
  50% {
    box-shadow: 0 0 30px var(--gold), 0 0 50px var(--gold);
  }
}

/* Community Section Animations */
@keyframes crowd-cheer {
  0%, 100% {
    transform: translateY(0px);
  }
  25% {
    transform: translateY(-2px);
  }
  75% {
    transform: translateY(-1px);
  }
}

@keyframes wax-seal-press {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(0.95);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes counter-tick {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.1);
    color: var(--neon-green);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes drumroll {
  0%, 100% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
}

/* Map Section Animations */
@keyframes region-pulse {
  0%, 100% {
    fill: var(--french-blue);
    stroke-width: 2px;
  }
  50% {
    fill: var(--neon-green);
    stroke-width: 4px;
  }
}

@keyframes tooltip-appear {
  0% {
    opacity: 0;
    transform: translateY(10px) scale(0.8);
  }
  100% {
    opacity: 1;
    transform: translateY(0px) scale(1);
  }
}

/* Footer Animations */
@keyframes crying-animation {
  0%, 100% {
    transform: translateY(0px);
  }
  25% {
    transform: translateY(-2px);
  }
  75% {
    transform: translateY(2px);
  }
}

@keyframes floating-coin {
  0%, 100% {
    transform: translateY(0px) rotate(0deg);
  }
  25% {
    transform: translateY(-10px) rotate(90deg);
  }
  50% {
    transform: translateY(-5px) rotate(180deg);
  }
  75% {
    transform: translateY(-15px) rotate(270deg);
  }
}

/* Meme Mode Animations */
@keyframes rainbow-bg {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}

@keyframes rainbow-text {
  0% {
    color: #ff0000;
  }
  16.66% {
    color: #ff8000;
  }
  33.33% {
    color: #ffff00;
  }
  50% {
    color: #00ff00;
  }
  66.66% {
    color: #0080ff;
  }
  83.33% {
    color: #8000ff;
  }
  100% {
    color: #ff0000;
  }
}

@keyframes shake {
  0%, 100% {
    transform: translateX(0px);
  }
  25% {
    transform: translateX(-2px);
  }
  75% {
    transform: translateX(2px);
  }
}

/* Scroll-triggered Animations */
@keyframes fade-in-up {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  100% {
    opacity: 1;
    transform: translateY(0px);
  }
}

@keyframes slide-in-left {
  0% {
    opacity: 0;
    transform: translateX(-50px);
  }
  100% {
    opacity: 1;
    transform: translateX(0px);
  }
}

@keyframes slide-in-right {
  0% {
    opacity: 0;
    transform: translateX(50px);
  }
  100% {
    opacity: 1;
    transform: translateX(0px);
  }
}

/* Particle System Animations */
@keyframes baguette-fall {
  0% {
    transform: translateY(-100vh) rotate(0deg);
    opacity: 1;
  }
  100% {
    transform: translateY(100vh) rotate(360deg);
    opacity: 0;
  }
}

@keyframes pumpfun-candle {
  0%, 100% {
    height: 20px;
    background: var(--french-red);
  }
  25% {
    height: 40px;
    background: var(--neon-green);
  }
  50% {
    height: 60px;
    background: var(--french-blue);
  }
  75% {
    height: 30px;
    background: var(--neon-green);
  }
}

/* Utility Animation Classes */
.animate-on-scroll {
  opacity: 0;
  transform: translateY(30px);
  transition: all 0.6s ease-out;
}

.animate-on-scroll.visible {
  opacity: 1;
  transform: translateY(0px);
}

.bounce-in {
  animation: bounce-in 0.6s ease-out;
}

@keyframes bounce-in {
  0% {
    transform: scale(0.3);
    opacity: 0;
  }
  50% {
    transform: scale(1.05);
    opacity: 0.8;
  }
  70% {
    transform: scale(0.9);
    opacity: 1;
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

.spin {
  animation: spin 2s linear infinite;
}

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* Hover Effects */
.hover-lift {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.hover-lift:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
}

.hover-glow {
  transition: all 0.3s ease;
}

.hover-glow:hover {
  box-shadow: 0 0 20px var(--neon-green-glow);
  text-shadow: 0 0 10px var(--neon-green);
}

/* Performance Optimizations */
.gpu-accelerated {
  transform: translateZ(0);
  will-change: transform;
}

/* Reduced Motion Support */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
