/* =========================================================
   ANIMATIONS.CSS
   ========================================================= */

@keyframes fadeInUp{
  from{opacity:0;transform:translateY(28px);}
  to{opacity:1;transform:translateY(0);}
}
@keyframes fadeIn{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes pulseDot{
  0%,100%{transform:scale(1);opacity:1;}
  50%{transform:scale(1.4);opacity:.6;}
}
@keyframes tracePath{
  from{stroke-dashoffset:1000;}
  to{stroke-dashoffset:0;}
}
@keyframes floatY{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-8px);}
}
@keyframes spinSlow{
  from{transform:rotate(0deg);}
  to{transform:rotate(360deg);}
}

.animate-fade-up{animation: fadeInUp 700ms ease both;}
.animate-fade{animation: fadeIn 600ms ease both;}
.delay-1{animation-delay:120ms;}
.delay-2{animation-delay:240ms;}
.delay-3{animation-delay:360ms;}

.hero-visual .spec-tag::before{animation: pulseDot 2.2s ease-in-out infinite;}

.wire-divider path{
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
}
.wire-divider.in-view path{
  animation: tracePath 1.4s ease forwards;
}

.trust-strip li::before{animation: pulseDot 2.6s ease-in-out infinite;}

.gallery-item .overlay{will-change: opacity;}

.brand-mark, .brand-mark-img{transition: transform 400ms ease;}
.brand:hover .brand-mark, .brand:hover .brand-mark-img{transform: rotate(-6deg);}

/* FIX (accessibility + perf): the previous reduced-motion rule only disabled a handful of
   named animations. This is the stronger, blanket version that catches every transition and
   animation on the page (including ones added later), matching standard reduced-motion
   guidance — needed because scroll-reveal / counters / hover transforms were still animating
   for people who have explicitly asked their OS to minimize motion. */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal{opacity:1 !important;transform:none !important;}
}

/* FIX (mobile performance): decorative ambient animations (pulsing dots, floating tags) are
   simplified on small screens, where they cost more relative battery/CPU and add little. */
@media (max-width: 575px){
  .hero-visual .spec-tag::before,
  .trust-strip li::before{
    animation:none;
  }
}
