/* MI Roofing — supplementary animation keyframes, loaded after style.css */

@keyframes miFadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes miShimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
.mi-skeleton {
  background: linear-gradient(90deg, var(--color-surface-alt, #F3F0E9) 25%, var(--color-bg, #FBFAF7) 37%, var(--color-surface-alt, #F3F0E9) 63%);
  background-size: 400% 100%;
  animation: miShimmer 1.4s ease infinite;
}
@keyframes miBounceIn {
  0%   { transform: scale(0.9); opacity: 0; }
  60%  { transform: scale(1.03); opacity: 1; }
  100% { transform: scale(1); }
}
.mi-form-success { animation: miBounceIn 0.4s var(--ease-spring, ease) both; }

@keyframes miCheckDraw {
  from { stroke-dashoffset: 24; }
  to   { stroke-dashoffset: 0; }
}
.mi-check-icon path {
  stroke-dasharray: 24;
  stroke-dashoffset: 24;
  animation: miCheckDraw 0.5s ease 0.1s forwards;
}

@media (prefers-reduced-motion: reduce) {
  .mi-skeleton, .mi-form-success, .mi-check-icon path { animation: none !important; }
}
