/* ═══════════════════════════════════════════════════════════
   MigrationProvision — Animations & motion
   Subtle. Premium. Never bouncy. Respects reduced-motion.
═══════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001s !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001s !important;
  }
}

/* ── Fade-up — used on hero, sections on scroll ───── */
@keyframes mp-fade-up {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
.mp-fade-up { animation: mp-fade-up .8s ease-out both; }
.mp-fade-up--d1 { animation-delay: .12s; }
.mp-fade-up--d2 { animation-delay: .24s; }
.mp-fade-up--d3 { animation-delay: .36s; }
.mp-fade-up--d4 { animation-delay: .48s; }
.mp-fade-up--d5 { animation-delay: .60s; }

/* ── Gentle float — for hero illustrations ────────── */
@keyframes mp-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
.mp-float { animation: mp-float 7s ease-in-out infinite; }

/* ── Soft glow pulse for hero seal / accent ───────── */
@keyframes mp-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(183,138,74,0); }
  50%      { box-shadow: 0 0 0 16px rgba(183,138,74,.10); }
}
.mp-glow { animation: mp-glow 4s ease-in-out infinite; }

/* ── Underline draw — for headline accents ────────── */
@keyframes mp-underline-draw {
  from { width: 0; }
  to   { width: 100%; }
}
.mp-underline-accent {
  position: relative;
  display: inline-block;
  white-space: nowrap;
}
.mp-underline-accent::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: -8px;
  height: 3px;
  background: var(--c-authority);
  animation: mp-underline-draw 1.2s .3s ease-out both;
  border-radius: 2px;
}

/* ── Stat ticker — slight number rise ─────────────── */
@keyframes mp-tick-rise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.mp-tick-rise { animation: mp-tick-rise .5s ease-out both; }

/* ── Scroll-reveal: applied via JS observer ───────── */
.mp-reveal {
  opacity: 0; transform: translateY(20px);
  transition: opacity .8s ease-out, transform .8s ease-out;
  will-change: opacity, transform;
}
.mp-reveal.is-in {
  opacity: 1; transform: translateY(0);
}
.mp-reveal--d1 { transition-delay: .08s; }
.mp-reveal--d2 { transition-delay: .16s; }
.mp-reveal--d3 { transition-delay: .24s; }
.mp-reveal--d4 { transition-delay: .32s; }
.mp-reveal--d5 { transition-delay: .40s; }

/* ── Stamp drop (for seal-style accent) ───────────── */
@keyframes mp-stamp {
  0%   { opacity: 0; transform: scale(2) rotate(-12deg); }
  60%  { opacity: 1; transform: scale(0.96) rotate(-2deg); }
  100% { opacity: 1; transform: scale(1) rotate(-3deg); }
}
.mp-stamp-in { animation: mp-stamp .7s cubic-bezier(.2,.7,.4,1.2) .4s both; }

/* ── Card lift on hover (refined) ─────────────────── */
.mp-card-hover {
  transition: transform .35s cubic-bezier(.2,.6,.3,1),
              box-shadow .35s cubic-bezier(.2,.6,.3,1),
              border-color .35s ease;
  will-change: transform;
}
.mp-card-hover:hover {
  transform: translateY(-4px);
  box-shadow: 0 16px 36px -16px rgba(14,42,71,.22);
}

/* ── Subtle backdrop dot-rain for hero ────────────── */
@keyframes mp-dot-drift {
  0%   { transform: translateY(0); opacity: 0; }
  10%  { opacity: .35; }
  90%  { opacity: .35; }
  100% { transform: translateY(40px); opacity: 0; }
}
.mp-dot-rain { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.mp-dot-rain i {
  position: absolute; top: -10px;
  width: 2px; height: 2px; border-radius: 50%;
  background: var(--c-authority);
  animation: mp-dot-drift 6s linear infinite;
}
.mp-dot-rain i:nth-child(1)  { left: 8%;  animation-delay: 0s;    }
.mp-dot-rain i:nth-child(2)  { left: 22%; animation-delay: 1.2s;  }
.mp-dot-rain i:nth-child(3)  { left: 37%; animation-delay: 2.5s;  }
.mp-dot-rain i:nth-child(4)  { left: 53%; animation-delay: 0.8s;  }
.mp-dot-rain i:nth-child(5)  { left: 68%; animation-delay: 3.4s;  }
.mp-dot-rain i:nth-child(6)  { left: 81%; animation-delay: 1.9s;  }
.mp-dot-rain i:nth-child(7)  { left: 92%; animation-delay: 4.6s;  }
