/* ==========================================================================
   Gulf Pipe Supply & Services — Animations
   Subtle, professional motion only. All motion is disabled when the user
   has requested reduced motion.
   ========================================================================== */

/* Scroll reveal — elements get [data-gp-reveal]; main.js adds .is-visible */
[data-gp-reveal]{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1);
  will-change:opacity,transform;
}
[data-gp-reveal="left"]{transform:translateX(-32px)}
[data-gp-reveal="right"]{transform:translateX(32px)}
[data-gp-reveal="fade"]{transform:none}
[data-gp-reveal].is-visible{opacity:1;transform:none}

[data-gp-delay="1"]{transition-delay:.09s}
[data-gp-delay="2"]{transition-delay:.18s}
[data-gp-delay="3"]{transition-delay:.27s}
[data-gp-delay="4"]{transition-delay:.36s}
[data-gp-delay="5"]{transition-delay:.45s}
[data-gp-delay="6"]{transition-delay:.54s}
[data-gp-delay="7"]{transition-delay:.63s}
[data-gp-delay="8"]{transition-delay:.72s}

/* Image reveal — soft rise + settle. Deliberately NOT clip-path: a clipped
   element reports zero intersection area, which breaks the observer. */
.gp-reveal-media{
  opacity:0;transform:translateY(18px) scale(1.03);
  transition:opacity .9s cubic-bezier(.22,.61,.36,1),transform 1.1s cubic-bezier(.22,.61,.36,1);
}
.gp-reveal-media.is-visible{opacity:1;transform:none}

/* Hero content lift on slide change */
.gp-hero .carousel-item.active .gp-hero-copy > *{animation:gpHeroIn .85s cubic-bezier(.22,.61,.36,1) both}
.gp-hero .carousel-item.active .gp-hero-copy > *:nth-child(2){animation-delay:.12s}
.gp-hero .carousel-item.active .gp-hero-copy > *:nth-child(3){animation-delay:.24s}
.gp-hero .carousel-item.active .gp-hero-copy > *:nth-child(4){animation-delay:.36s}

@keyframes gpHeroIn{
  from{opacity:0;transform:translateY(24px)}
  to{opacity:1;transform:none}
}

/* Slow zoom on the active hero image (Ken Burns, very restrained) */
.gp-hero .carousel-item.active .gp-hero-media img{animation:gpSlowZoom 9s ease-out both}
@keyframes gpSlowZoom{
  from{transform:scale(1.055)}
  to{transform:scale(1)}
}

.gp-hero .carousel-item{transition:transform .8s ease-in-out,opacity .8s ease-in-out}

/* Counter-up placeholder state */
.gp-stat strong[data-gp-count]{font-variant-numeric:tabular-nums}

/* Back-to-top */
.gp-top{
  position:fixed;right:1.25rem;bottom:1.25rem;z-index:1040;
  width:48px;height:48px;border:0;border-radius:2px;
  background:var(--gp-navy);color:#fff;font-size:1.2rem;
  display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transform:translateY(12px);
  transition:opacity .25s ease,transform .25s ease,visibility .25s ease,background .2s ease;
}
.gp-top.is-visible{opacity:1;visibility:visible;transform:none}
.gp-top:hover{background:var(--gp-accent)}

/* Reduced motion ------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
  [data-gp-reveal]{opacity:1!important;transform:none!important}
  .gp-reveal-media{opacity:1!important;transform:none!important}
}
