/* ==========================================================================
   LB PRO CLEANING SERVICES — animations.css
   One orchestrated hero entrance + state-change motion only.
   ========================================================================== */

/* ---- hero entrance: a single page-load sequence, not per-section reveals ---- */
@keyframes riseIn{
  from{opacity:0;transform:translateY(18px);}
  to{opacity:1;transform:translateY(0);}
}
@keyframes frameIn{
  from{opacity:0;transform:translateY(26px) scale(.985);}
  to{opacity:1;transform:translateY(0) scale(1);}
}
@keyframes cardIn{
  from{opacity:0;transform:translateY(14px) scale(.97);}
  to{opacity:1;transform:translateY(0) scale(1);}
}

.hero-eyebrow,
.hero h1,
.hero .lead,
.hero .btn-row,
.hero-note,
.hero-badges{
  animation:riseIn .7s cubic-bezier(.22,.61,.36,1) backwards;
}
.hero-eyebrow{animation-delay:.05s;}
.hero h1{animation-delay:.14s;}
.hero .lead{animation-delay:.22s;}
.hero .btn-row{animation-delay:.3s;}
.hero-note{animation-delay:.36s;}
.hero-badges{animation-delay:.42s;}
.hero-frame{animation:frameIn .9s cubic-bezier(.22,.61,.36,1) .18s backwards;}
.float-card{animation:cardIn .6s cubic-bezier(.22,.61,.36,1) backwards;}
.float-card--a{animation-delay:.6s;}
.float-card--b{animation-delay:.72s;}
.float-card--c{animation-delay:.84s;}

/* ---- scroll reveal, applied only to section headings and card groups ---- */
.reveal{opacity:0;transform:translateY(20px);}
.reveal.is-in{
  opacity:1;transform:translateY(0);
  transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1);
}
.reveal.is-in.d1{transition-delay:.06s;}
.reveal.is-in.d2{transition-delay:.12s;}
.reveal.is-in.d3{transition-delay:.18s;}

/* ---- counters hold their space so the band never reflows ---- */
.stat .num{font-variant-numeric:tabular-nums;}

/* ---- accordion + lightbox state motion ---- */
.lightbox{animation:fadeIn .2s ease;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}

/* ---- reduced motion: everything becomes instant ---- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  html{scroll-behavior:auto;}
  .reveal{opacity:1;transform:none;}
  .carousel-track{scroll-behavior:auto;}
}
