/* ==========================================================================
   Reveal-on-scroll
   ========================================================================== */
[data-reveal] {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s cubic-bezier(0.22, 0.61, 0.36, 1), transform 0.7s cubic-bezier(0.22, 0.61, 0.36, 1);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal="fade"] { transform: none; }
[data-reveal-delay="1"] { transition-delay: 0.08s; }
[data-reveal-delay="2"] { transition-delay: 0.16s; }
[data-reveal-delay="3"] { transition-delay: 0.24s; }
[data-reveal-delay="4"] { transition-delay: 0.32s; }

/* image mask reveal for hero + editorial media */
.reveal-media {
  position: relative;
  overflow: hidden;
}
.reveal-media::before {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--color-graphite);
  z-index: 2;
  transform-origin: right;
  transform: scaleX(0);
}
.reveal-media.is-visible::before {
  animation: mask-sweep 0.9s cubic-bezier(0.65, 0, 0.35, 1) forwards;
}
.reveal-media img,
.reveal-media .img-placeholder {
  transform: scale(1.08);
  transition: transform 1.1s cubic-bezier(0.22, 0.61, 0.36, 1);
}
.reveal-media.is-visible img,
.reveal-media.is-visible .img-placeholder { transform: scale(1); }

@keyframes mask-sweep {
  0% { transform: scaleX(1); transform-origin: left; }
  50% { transform: scaleX(0); transform-origin: left; }
  50.001% { transform: scaleX(0); transform-origin: right; }
  100% { transform: scaleX(0); transform-origin: right; }
}

/* status pulse for 24/7 / live dispatch cues */
.pulse-dot {
  position: relative;
}
.pulse-dot::after {
  content: "";
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid var(--color-accent);
  animation: pulse-ring 2.2s ease-out infinite;
}
@keyframes pulse-ring {
  0% { transform: scale(0.9); opacity: 0.9; }
  70% { transform: scale(1.7); opacity: 0; }
  100% { transform: scale(1.7); opacity: 0; }
}

/* card lift */
.value-card,
.review-card,
.benefit-row {
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}
.value-card:hover,
.review-card:hover,
.benefit-row:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-soft);
}

/* faq chevron handled inline; smooth open handled via JS setting max-height */

/* subtle fade for header on load */
.site-header { animation: header-fade 0.6s ease both; }
@keyframes header-fade {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* hero content stagger */
.hero__content > * {
  opacity: 0;
  animation: hero-rise 0.8s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
}
.hero__content > *:nth-child(1) { animation-delay: 0.05s; }
.hero__content > *:nth-child(2) { animation-delay: 0.15s; }
.hero__content > *:nth-child(3) { animation-delay: 0.25s; }
.hero__content > *:nth-child(4) { animation-delay: 0.35s; }
.hero__content > *:nth-child(5) { animation-delay: 0.45s; }
@keyframes hero-rise {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1; transform: none; transition: none; }
  .reveal-media::before { display: none; }
  .reveal-media img,
  .reveal-media .img-placeholder { transform: none; }
  .pulse-dot::after { animation: none; display: none; }
  .hero__content > * { opacity: 1; animation: none; }
  .site-header { animation: none; }
}
