/* =========================================================
   Animations
   Respect prefers-reduced-motion (handled globally in style.css)
   ========================================================= */

@keyframes fadeUp{
  from{opacity:0;transform:translateY(24px);}
  to{opacity:1;transform:translateY(0);}
}
@keyframes fadeIn{
  from{opacity:0;}
  to{opacity:1;}
}
@keyframes pulseRing{
  0%{box-shadow:0 0 0 0 rgba(242,140,40,.45);}
  70%{box-shadow:0 0 0 12px rgba(242,140,40,0);}
  100%{box-shadow:0 0 0 0 rgba(242,140,40,0);}
}
@keyframes spin{
  to{transform:rotate(360deg);}
}
@keyframes marquee{
  from{transform:translateX(0);}
  to{transform:translateX(-50%);}
}

.animate-fade-up{animation:fadeUp .7s var(--ease) both;}
.animate-fade-in{animation:fadeIn .6s var(--ease) both;}

/* Quote button pulse — used sparingly on the primary header CTA */
.pulse{position:relative;}
.pulse::before{
  content:"";position:absolute;inset:0;border-radius:inherit;animation:pulseRing 2.6s ease-out infinite;
}

/* Loading spinner for form submission */
.spinner{
  width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;
  animation:spin .7s linear infinite;
}

/* Staggered reveal delays applied via inline style or nth-child from JS */
[data-reveal][data-delay="1"]{transition-delay:.08s;}
[data-reveal][data-delay="2"]{transition-delay:.16s;}
[data-reveal][data-delay="3"]{transition-delay:.24s;}
[data-reveal][data-delay="4"]{transition-delay:.32s;}
[data-reveal][data-delay="5"]{transition-delay:.4s;}
[data-reveal][data-delay="6"]{transition-delay:.48s;}

/* Mobile menu animation */
.mobile-menu{
  position:fixed;inset:0;z-index:300;
  visibility:hidden;
}
.mobile-menu__overlay{
  position:absolute;inset:0;background:rgba(14,23,38,.6);opacity:0;transition:opacity .3s var(--ease);
}
.mobile-menu__panel{
  position:absolute;top:0;right:0;bottom:0;width:min(360px,86vw);background:var(--primary);
  transform:translateX(100%);transition:transform .35s var(--ease);
  display:flex;flex-direction:column;overflow-y:auto;
}
.mobile-menu.is-open{visibility:visible;}
.mobile-menu.is-open .mobile-menu__overlay{opacity:1;}
.mobile-menu.is-open .mobile-menu__panel{transform:translateX(0);}

/* Technical grid hover effect used on bento items / cards */
.hover-grid{position:relative;}
.hover-grid::before{
  content:"";position:absolute;inset:0;opacity:0;transition:opacity .3s var(--ease);
  background-image:linear-gradient(rgba(242,140,40,.12) 1px, transparent 1px), linear-gradient(90deg, rgba(242,140,40,.12) 1px, transparent 1px);
  background-size:14px 14px;pointer-events:none;
}
.hover-grid:hover::before{opacity:1;}

/* Animated border used on the featured RFQ card */
.animated-border{position:relative;}
.animated-border::after{
  content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;
  background:linear-gradient(120deg, var(--accent), transparent 40%, transparent 60%, var(--accent));
  background-size:200% 200%;
  -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  animation:borderMove 4s linear infinite;
  pointer-events:none;
}
@keyframes borderMove{
  0%{background-position:0% 0%;}
  100%{background-position:200% 200%;}
}
