/* ===================================================================
   animations.css — preloader wipe, hero float/glow, misc keyframes
   =================================================================== */

/* ---------------- preloader ---------------- */
.preloader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: block;
}
.preloader__panel {
  position: absolute;
  left: 0; right: 0;
  height: 50%;
  background: #08080a;
  transition: transform .7s cubic-bezier(.76,0,.24,1);
}
.preloader__panel--top { top: 0; }
.preloader__panel--bottom { bottom: 0; }
.preloader__content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.1rem;
  text-align: center;
  transition: opacity .4s ease;
}
.preloader__mark {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: .06em;
  font-size: clamp(1.1rem, 3vw, 1.6rem);
  color: var(--ink);
}
.preloader__mark span {
  display: block;
  font-size: .55em;
  letter-spacing: .18em;
  color: var(--red-bright);
  margin-top: .35em;
}
.preloader__bar {
  width: min(220px, 60vw);
  height: 3px;
  background: rgba(255,255,255,.12);
  border-radius: 3px;
  overflow: hidden;
}
.preloader__bar-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--red), var(--amber));
  transition: width .15s linear;
}
.preloader__count {
  font-family: var(--font-display);
  font-size: .85rem;
  letter-spacing: .1em;
  color: var(--muted);
}

.preloader.is-gone { pointer-events: none; }
.preloader.is-gone .preloader__panel--top { transform: translateY(-100%); }
.preloader.is-gone .preloader__panel--bottom { transform: translateY(100%); }
.preloader.is-gone .preloader__content { opacity: 0; }

/* ---------------- hero logo float + glow ---------------- */
@keyframes heroLogoFloat {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
@keyframes heroGlowPulse {
  0%, 100% { filter: drop-shadow(0 0 26px rgba(229,23,31,.35)); }
  50% { filter: drop-shadow(0 0 44px rgba(245,166,35,.4)); }
}
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: none; }
}
.hero__badgerow { animation: heroFadeUp .8s ease both; animation-delay: .05s; }
.hero__logo {
  opacity: 0;
  animation: heroFadeUp .9s ease both, heroLogoFloat 6s ease-in-out 1s infinite, heroGlowPulse 6s ease-in-out 1s infinite;
  animation-delay: .15s, 1s, 1s;
}
.hero__subhead { animation: heroFadeUp .8s ease both; animation-delay: .3s; }
.hero__ctas { animation: heroFadeUp .8s ease both; animation-delay: .42s; }

/* ---------------- magnetic buttons ---------------- */
[data-magnetic] { transition: transform .25s cubic-bezier(.2,.9,.3,1); will-change: transform; }

/* ---------------- misc ---------------- */
.pill, .fade-in-up, .service-card, .area-card, .review-card, .crew-card, .storm-step {
  will-change: transform, opacity;
}

/* ---------------- reduced motion: kill everything decorative ---------------- */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .hero__logo { animation: none !important; filter: drop-shadow(0 0 30px rgba(229,23,31,.3)); }
  html.reveal-armed .word__in { transform: none !important; opacity: 1 !important; }
  html.reveal-armed .fade-in-up { opacity: 1 !important; transform: none !important; }
}
