/* Animation styles */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInDown {
  from { opacity: 0; transform: translateY(-30px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInLeft {
  from { opacity: 0; transform: translateX(-30px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes fadeInRight {
  from { opacity: 0; transform: translateX(30px); }
  to { opacity: 1; transform: translateX(0); }
}

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

@keyframes float {
  0% { transform: translateY(0px); }
  50% { transform: translateY(-10px); }
  100% { transform: translateY(0px); }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes ripple {
  0% {
    box-shadow: 0 0 0 0 rgba(212, 175, 55, 0.3),
                0 0 0 10px rgba(212, 175, 55, 0.3),
                0 0 0 20px rgba(212, 175, 55, 0.3);
  }
  100% {
    box-shadow: 0 0 0 10px rgba(212, 175, 55, 0),
                0 0 0 20px rgba(212, 175, 55, 0),
                0 0 0 40px rgba(212, 175, 55, 0);
  }
}

/* Apply animations to elements */
.fade-in {
  animation: fadeIn 1s ease-out forwards;
}

.fade-in-up {
  animation: fadeInUp 1s ease-out forwards;
}

.fade-in-down {
  animation: fadeInDown 1s ease-out forwards;
}

.fade-in-left {
  animation: fadeInLeft 1s ease-out forwards;
}

.fade-in-right {
  animation: fadeInRight 1s ease-out forwards;
}

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

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

/* Staggered animations for children */
.stagger-children > * {
  opacity: 0;
}

.stagger-children > *:nth-child(1) {
  animation: fadeInUp 0.5s ease-out 0.1s forwards;
}

.stagger-children > *:nth-child(2) {
  animation: fadeInUp 0.5s ease-out 0.2s forwards;
}

.stagger-children > *:nth-child(3) {
  animation: fadeInUp 0.5s ease-out 0.3s forwards;
}

.stagger-children > *:nth-child(4) {
  animation: fadeInUp 0.5s ease-out 0.4s forwards;
}

.stagger-children > *:nth-child(5) {
  animation: fadeInUp 0.5s ease-out 0.5s forwards;
}

/* Shimmer effect for buttons and elements */
.shimmer {
  background: linear-gradient(
    to right,
    var(--color-gold-dark) 0%,
    var(--color-gold) 20%,
    var(--color-gold-light) 40%,
    var(--color-gold) 60%,
    var(--color-gold-dark) 80%,
    var(--color-gold-dark) 100%
  );
  background-size: 200% auto;
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer 3s linear infinite;
}

/* Particle background effect */
.particles {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  z-index: 0;
}

.particle {
  position: absolute;
  width: 4px;
  height: 4px;
  background-color: rgba(212, 175, 55, 0.5);
  border-radius: 50%;
  opacity: 0.6;
}

/* Hover animations */
.hover-lift {
  transition: transform 0.3s ease;
}

.hover-lift:hover {
  transform: translateY(-5px);
}

.hover-scale {
  transition: transform 0.3s ease;
}

.hover-scale:hover {
  transform: scale(1.05);
}

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

.hover-glow:hover {
  box-shadow: 0 0 15px rgba(212, 175, 55, 0.5);
}

/* Entrance animations for sections */
.section-entrance {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.section-entrance.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Animated background gradients */
.animated-bg {
  background: linear-gradient(
    -45deg,
    var(--color-black) 0%,
    var(--color-black-light) 25%,
    var(--color-wood-dark) 50%,
    var(--color-black-light) 75%,
    var(--color-black) 100%
  );
  background-size: 400% 400%;
  animation: gradientBG 15s ease infinite;
}

@keyframes gradientBG {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}