/* ============================================================
   AIRUN — Animations
   ============================================================ */

/* ---- Scroll-reveal base states ---- */
.fade-up,
.fade-left,
.fade-right {
  opacity: 0;
  transition: opacity .75s cubic-bezier(0.4,0,0.2,1),
              transform .75s cubic-bezier(0.4,0,0.2,1);
}
.fade-up    { transform: translateY(22px); }
.fade-left  { transform: translateX(-22px); }
.fade-right { transform: translateX(22px); }

.fade-up.vis,
.fade-left.vis,
.fade-right.vis {
  opacity: 1;
  transform: translate(0,0);
}

/* ---- Stagger delays ---- */
.d1 { transition-delay: .10s; }
.d2 { transition-delay: .20s; }
.d3 { transition-delay: .30s; }
.d4 { transition-delay: .40s; }
.d5 { transition-delay: .50s; }

/* ---- Keyframes ---- */
@keyframes pulse-dot {
  0%,100% { opacity: 1; transform: scale(1); }
  50%      { opacity: .45; transform: scale(.75); }
}

@keyframes float {
  0%,100% { transform: translateY(0px); }
  50%      { transform: translateY(-11px); }
}

@keyframes scan-line {
  0%   { top: 0; opacity: .6; }
  100% { top: 100%; opacity: 0; }
}

@keyframes blink-cursor {
  0%,100% { opacity: 1; }
  50%      { opacity: 0; }
}

/* ---- Hero emblem float ---- */
.hero-emblem {
  animation: float 8s ease-in-out infinite;
}

/* ---- Accent underline on section titles ---- */
.sec-title .accent {
  position: relative;
  display: inline;
}
.sec-title .accent::after {
  content: '';
  position: absolute;
  left: 0; bottom: -3px;
  width: 0; height: 2px;
  background: var(--accent);
  transition: width 1.2s cubic-bezier(0.4,0,0.2,1) .3s;
}
.sec-title.vis .accent::after { width: 100%; }

/* ---- Dashboard scan animation ---- */
.dashboard {
  position: relative; overflow: hidden;
}
.dashboard::after {
  content: '';
  position: absolute;
  left: 0; top: -100%;
  width: 100%; height: 2px;
  background: linear-gradient(90deg, transparent, rgba(0,212,255,.35), transparent);
  animation: scan-line 4s linear infinite;
  pointer-events: none;
}

/* ---- Card hover glow border ---- */
.cap-card,
.step-card {
  position: relative;
}

/* ---- Metric counter shimmer on load ---- */
@keyframes count-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.dm-val {
  animation: count-in .5s ease forwards;
}
