/* ============================================================
   PROINTECA v3 — Animations
   ============================================================ */

/* Scroll Reveal - Default Visible for Stability */
.reveal, .reveal--left, .reveal--right, .reveal--scale {
  opacity: 1;
  transform: none;
  transition: opacity 0.8s cubic-bezier(0.16,1,0.3,1), transform 0.8s cubic-bezier(0.16,1,0.3,1);
  will-change: opacity, transform;
}

/* Hide only when JS is ready and we want to animate */
body.js-animations .reveal { opacity: 0; transform: translateY(30px); }
body.js-animations .reveal--left { opacity: 0; transform: translateX(-30px); }
body.js-animations .reveal--right { opacity: 0; transform: translateX(30px); }
body.js-animations .reveal--scale { opacity: 0; transform: scale(0.95); }

/* Show when visible */
body.js-animations .reveal.is-visible,
body.js-animations .reveal--left.is-visible,
body.js-animations .reveal--right.is-visible,
body.js-animations .reveal--scale.is-visible {
  opacity: 1;
  transform: translate(0,0) scale(1);
}

/* Stagger */
.stagger-1 { transition-delay: 0.1s; }
.stagger-2 { transition-delay: 0.2s; }
.stagger-3 { transition-delay: 0.3s; }
.stagger-4 { transition-delay: 0.4s; }
.stagger-5 { transition-delay: 0.5s; }
.stagger-6 { transition-delay: 0.6s; }
.stagger-7 { transition-delay: 0.7s; }
.stagger-8 { transition-delay: 0.8s; }

/* Float */
@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-12px)} }
.float { animation: float 6s ease-in-out infinite; }
.float--slow { animation: float 8s ease-in-out infinite; }

/* Pulse Glow */
@keyframes pulseGlow { 0%,100%{box-shadow:0 0 20px var(--accent-glow)} 50%{box-shadow:0 0 40px var(--accent-glow-strong)} }
.pulse-glow { animation: pulseGlow 3s ease-in-out infinite; }

/* Gradient Shift */
@keyframes gradientShift { 0%{background-position:0% 50%} 50%{background-position:100% 50%} 100%{background-position:0% 50%} }
.gradient-shift { background-size: 200% 200%; animation: gradientShift 8s ease infinite; }

/* Orb Drift */
@keyframes orbDrift { 0%,100%{transform:translate(0,0) scale(1)} 25%{transform:translate(30px,-20px) scale(1.1)} 50%{transform:translate(-10px,20px) scale(0.95)} 75%{transform:translate(-30px,-10px) scale(1.05)} }
/* .orb-drift { animation: orbDrift 20s ease-in-out infinite; } -- Disabled for performance */

/* Scroll Indicator */
@keyframes scrollBounce { 0%,100%{transform:translateX(-50%) translateY(0)} 50%{transform:translateX(-50%) translateY(8px)} }

/* Marquee */
@keyframes marqueeScroll { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
@keyframes marqueeScrollReverse { 0%{transform:translateX(-50%)} 100%{transform:translateX(0)} }

/* Hover Shine */
.hover-shine { position: relative; overflow: hidden; }
.hover-shine::after { content:''; position:absolute; top:-50%; left:-50%; width:200%; height:200%; background:linear-gradient(to right,transparent 0%,hsla(0,0%,100%,0.03) 50%,transparent 100%); transform:rotate(45deg) translateX(-100%); transition:transform 0.6s cubic-bezier(0.16,1,0.3,1); pointer-events:none; }
.hover-shine:hover::after { transform:rotate(45deg) translateX(100%); }

/* Hover Glow */
.hover-glow { transition: box-shadow 500ms cubic-bezier(0.16,1,0.3,1); }
.hover-glow:hover { box-shadow: 0 0 0 1px hsla(var(--color-orange-hsl),0.15), 0 0 40px hsla(var(--color-orange-hsl),0.25); }

/* Counter */
.counter { font-variant-numeric: tabular-nums; }

/* Metallic Shine (Animated) */
@keyframes metallicShine {
  0% { filter: brightness(1) contrast(1); }
  20% { filter: brightness(1.3) contrast(1.1) drop-shadow(0 0 5px hsla(var(--color-orange-hsl), 0.5)); }
  40% { filter: brightness(1) contrast(1); }
  100% { filter: brightness(1) contrast(1); }
}

.metallic-shine {
  animation: metallicShine 4s ease-in-out infinite;
}
