/* Global Scroll Reveal Setup */
.reveal {
  opacity: 0;
  transition: opacity var(--rp-transition-slow), transform var(--rp-transition-slow);
}

.reveal.reveal-active {
  opacity: 1;
}

/* Individual transition directions */
.reveal-fade {
  transform: translateY(0);
}

.reveal-slide-up {
  transform: translateY(40px);
}

.reveal-slide-up.reveal-active {
  transform: translateY(0);
}

.reveal-slide-down {
  transform: translateY(-40px);
}

.reveal-slide-down.reveal-active {
  transform: translateY(0);
}

.reveal-slide-left {
  transform: translateX(40px);
}

.reveal-slide-left.reveal-active {
  transform: translateX(0);
}

.reveal-slide-right {
  transform: translateX(-40px);
}

.reveal-slide-right.reveal-active {
  transform: translateX(0);
}

/* Curtain Reveal Animation (clip-path) */
.curtain-reveal {
  clip-path: inset(0 50% 0 50%);
  transition: clip-path 1.2s cubic-bezier(0.25, 1, 0.5, 1);
}

.curtain-reveal.reveal-active {
  clip-path: inset(0 0% 0 0%);
}

/* Gold Shimmer effect */
@keyframes shimmer {
  0% {
    background-position: -200% center;
  }
  100% {
    background-position: 200% center;
  }
}

.gold-shimmer {
  background: linear-gradient(
    90deg, 
    var(--rp-gold-dark) 0%, 
    var(--rp-gold-light) 25%, 
    var(--rp-gold) 50%, 
    var(--rp-gold-light) 75%, 
    var(--rp-gold-dark) 100%
  );
  background-size: 200% auto;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  animation: shimmer 6s linear infinite;
}

/* Pulsing accent ring */
@keyframes gold-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(197, 165, 90, 0.4);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(197, 165, 90, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(197, 165, 90, 0);
  }
}

.pulse-gold {
  animation: gold-pulse 2.5s infinite;
}

/* Hover-micro animations for text */
.hover-reveal-underline {
  position: relative;
}

.hover-reveal-underline::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--rp-gold);
  transition: width var(--rp-transition-smooth);
}

.hover-reveal-underline:hover::after {
  width: 100%;
}

/* Soft floating animation (for background decorations or elements) */
@keyframes float {
  0% {
    transform: translateY(0px);
  }
  50% {
    transform: translateY(-10px);
  }
  100% {
    transform: translateY(0px);
  }
}

.floating-element {
  animation: float 6s ease-in-out infinite;
}

/* Delay helpers for staggered reveals */
.delay-1 { transition-delay: 0.1s !important; }
.delay-2 { transition-delay: 0.2s !important; }
.delay-3 { transition-delay: 0.3s !important; }
.delay-4 { transition-delay: 0.4s !important; }
.delay-5 { transition-delay: 0.5s !important; }
.delay-6 { transition-delay: 0.6s !important; }
.delay-7 { transition-delay: 0.7s !important; }
.delay-8 { transition-delay: 0.8s !important; }
.delay-9 { transition-delay: 0.9s !important; }
.delay-10 { transition-delay: 1.0s !important; }

/* Slow transitions */
.duration-slow {
  transition-duration: 1.2s !important;
}

/* Ambient Dust Particles in Hero Background */
@keyframes float-particles {
  0% {
    transform: translateY(0px) translateX(0px) rotate(0deg);
    opacity: 0;
  }
  10% {
    opacity: 0.4;
  }
  90% {
    opacity: 0.4;
  }
  100% {
    transform: translateY(-100px) translateX(30px) rotate(360deg);
    opacity: 0;
  }
}

.particle {
  position: absolute;
  background-color: var(--rp-gold-light);
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  animation: float-particles 15s infinite linear;
}

/* Spinner for lazy image loading or ajax actions */
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.loading-spinner {
  width: 40px;
  height: 40px;
  border: 2px solid rgba(197, 165, 90, 0.1);
  border-radius: 50%;
  border-top-color: var(--rp-gold);
  animation: spin 0.8s linear infinite;
}
