/* ==========================================================================
   BLZR — animations.css
   ========================================================================== */

@keyframes fadeUp{
  from{ opacity:0; transform:translateY(24px); }
  to{ opacity:1; transform:translateY(0); }
}
@keyframes fadeIn{
  from{ opacity:0; }
  to{ opacity:1; }
}
@keyframes scaleIn{
  from{ opacity:0; transform:scale(0.92); }
  to{ opacity:1; transform:scale(1); }
}
@keyframes floatY{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-10px); }
}
@keyframes spin{
  to{ transform:rotate(360deg); }
}
@keyframes pulseGlow{
  0%,100%{ opacity:0.25; }
  50%{ opacity:0.45; }
}
@keyframes checkDraw{
  from{ stroke-dashoffset:48; }
  to{ stroke-dashoffset:0; }
}
@keyframes shimmer{
  0%{ background-position:-200px 0; }
  100%{ background-position:200px 0; }
}

/* Scroll reveal — toggled by IntersectionObserver in animations.js */
[data-reveal]{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .7s cubic-bezier(.16,.84,.44,1), transform .7s cubic-bezier(.16,.84,.44,1);
}
[data-reveal].is-visible{ opacity:1; transform:translateY(0); }
[data-reveal="scale"]{ transform:scale(0.94) translateY(0); }
[data-reveal="scale"].is-visible{ transform:scale(1) translateY(0); }

/* Stagger helper: children get incremental delay via inline style set in JS,
   fallback nth-child steps below */
[data-reveal-group] > *{ transition-delay: calc(var(--stagger, 0) * 80ms); }

.hero-copy > *{ animation:fadeUp .8s cubic-bezier(.16,.84,.44,1) both; }
.hero-copy .eyebrow{ animation-delay:.05s; }
.hero-copy h1{ animation-delay:.15s; }
.hero-copy p.lead{ animation-delay:.25s; }
.hero-copy .hero-actions{ animation-delay:.35s; }
.hero-copy .hero-trust{ animation-delay:.45s; }
.hero-visual{ animation:scaleIn .9s cubic-bezier(.16,.84,.44,1) .3s both; }

.mock-glow{ animation:pulseGlow 5s ease-in-out infinite; }
.float-badge{ animation:floatY 4.5s ease-in-out infinite; }
.badge-speed{ animation-delay:1.2s; }

.faq-answer{ transition:max-height .35s ease; }

.spinner{
  width:18px; height:18px; border-radius:50%;
  border:2.5px solid rgba(255,255,255,0.25); border-top-color:#0A0B10;
  animation:spin .7s linear infinite;
}

.confirm-icon svg circle{ animation:scaleIn .5s ease both; }
.confirm-icon svg polyline{
  stroke-dasharray:48; stroke-dashoffset:48;
  animation:checkDraw .5s ease .35s forwards;
}

.skeleton{
  background:linear-gradient(90deg, var(--surface) 25%, var(--surface-strong) 37%, var(--surface) 63%);
  background-size:400px 100%;
  animation:shimmer 1.4s ease infinite;
}

@media (prefers-reduced-motion: reduce){
  .hero-copy > *, .hero-visual, .mock-glow, .float-badge, [data-reveal]{
    animation:none !important; opacity:1 !important; transform:none !important;
  }
}
