html { scroll-behavior: auto !important; }

.gs-reveal { /* opacity: 0; transform: translateY(40px); removed to prevent perma-hide if js fails */ }
/* GSAP overrides these via .from() — this is ONLY the pre-JS fallback
   state so there's zero flash-of-unstyled-content before GSAP boots */

.hero-section { perspective: 1000px; overflow: visible; }
.hero-img-wrap { transform-style: preserve-3d; perspective: 1000px; }

.services-grid { perspective: 1200px; }
.service-card { transform-style: preserve-3d; backface-visibility: hidden; }

.team-grid .flip-card { transform-style: preserve-3d; }

.marquee-track { animation-duration: calc(20s / var(--marquee-speed-mult, 1)); }

/* Prevent layout shift and transition fight during pin (Part 3, Part 7) */
.trust-strip, .testimonials-section { will-change: auto; }
.testimonials-section .testimonial-track { transition: none !important; }

/* Reduced motion: nuke everything back to instant/simple */
@media (prefers-reduced-motion: reduce) {
  .gs-reveal { transition: opacity 0.2s ease; opacity: 1 !important; transform: none !important; }
  .hero-img-wrap, .service-card, .flip-card { transform: none !important; }
}

/* GPU layer hints only where actively used, scoped narrowly */
.hero-img-wrap, .service-card, .float-badge {
  backface-visibility: hidden;
  -webkit-font-smoothing: subpixel-antialiased;
}

/* Premium Visualizers & Keyframes */
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
.spin-ring {
  transform-origin: center;
  animation: spin 25s linear infinite;
}

/* Grid graph indicator line animations */
@keyframes pulseGlow {
  0%, 100% { opacity: 0.15; }
  50% { opacity: 0.3; }
}
.hero-img-wrap svg path {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  animation: drawLine 4s ease-in-out forwards infinite;
}
@keyframes drawLine {
  0% { stroke-dashoffset: 1000; }
  45%, 100% { stroke-dashoffset: 0; }
}
