/* ==========================================================================
   GEOWASOL Proteins & Polymers - Scroll Animations & Micro-interactions
   ========================================================================== */

/* Base Reveal States (Initial before observer triggers) */
[data-reveal] {
  opacity: 0;
  will-change: transform, opacity;
  transition: opacity 0.75s cubic-bezier(0.16, 1, 0.3, 1), transform 0.75s cubic-bezier(0.16, 1, 0.3, 1);
}

[data-reveal="fade-up"] {
  transform: translateY(36px);
}

[data-reveal="fade-in"] {
  transform: none;
}

[data-reveal="slide-left"] {
  transform: translateX(-40px);
}

[data-reveal="slide-right"] {
  transform: translateX(40px);
}

[data-reveal="scale-up"] {
  transform: scale(0.92);
}

/* Activated State (When element scrolls into viewport) */
[data-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0) translateX(0) scale(1);
}

/* Stagger Delays for Grids */
.stagger-grid > *:nth-child(1) { transition-delay: 0.05s; }
.stagger-grid > *:nth-child(2) { transition-delay: 0.12s; }
.stagger-grid > *:nth-child(3) { transition-delay: 0.19s; }
.stagger-grid > *:nth-child(4) { transition-delay: 0.26s; }
.stagger-grid > *:nth-child(5) { transition-delay: 0.33s; }
.stagger-grid > *:nth-child(6) { transition-delay: 0.40s; }
.stagger-grid > *:nth-child(7) { transition-delay: 0.47s; }
.stagger-grid > *:nth-child(8) { transition-delay: 0.54s; }
.stagger-grid > *:nth-child(9) { transition-delay: 0.61s; }

/* Subtle Hero Floating Technical Grid */
@keyframes heroFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

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

/* Map Pulse Halo */
.map-pulse-halo {
  transform-origin: center;
  animation: mapRadarPulse 3s infinite cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes mapRadarPulse {
  0% { transform: scale(0.6); opacity: 0.9; }
  100% { transform: scale(1.8); opacity: 0; }
}

/* Circular Loop Active Orbit Spin */
@keyframes orbitSpin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

.circular-spin-track {
  transform-origin: 270px 270px;
  animation: orbitSpin 18s linear infinite;
}

/* Circular node hover pulse */
.circ-node {
  transition: transform var(--transition-normal);
  cursor: pointer;
}

.circ-node:hover {
  transform: scale(1.12);
}

/* Reduced Motion Override */
@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-reveal="fade-up"],
  [data-reveal="slide-left"],
  [data-reveal="slide-right"],
  [data-reveal="scale-up"] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .map-pulse-halo,
  .whatsapp-pulse,
  .circular-spin-track,
  .hero-floating-element {
    animation: none !important;
  }
}
