/* =====================================================
   HeelzFlow — animations.css
   ===================================================== */

@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.4; transform: scale(0.85); }
}

@keyframes shimmer {
  0%   { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes marqueeLeft {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

@keyframes loaderProgress {
  from { width: 0; }
  to   { width: 100%; }
}

/* Shimmer loading */
.showcase-nav-item,
.showcase-stat-card,
.showcase-table {
  background: linear-gradient(
    90deg,
    rgba(255,255,255,0.03) 0%,
    rgba(255,255,255,0.07) 50%,
    rgba(255,255,255,0.03) 100%
  );
  background-size: 800px 100%;
  animation: shimmer 2s infinite linear;
}

/* Page loader */
#page-loader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.4s ease, visibility 0.4s ease;
}
#page-loader.hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.loader-inner { display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.loader-logo { font-size: 1.35rem; font-weight: 900; }
/* .logo-flow gradient handled globally in components.css */
.loader-bar { width: 100px; height: 2px; background: var(--color-border); border-radius: var(--radius-full); overflow: hidden; }
.loader-progress { height: 100%; background: var(--grad-brand); border-radius: var(--radius-full); animation: loaderProgress 0.8s ease forwards; }

/* AOS */
[data-aos] { pointer-events: none; }
[data-aos].aos-animate { pointer-events: auto; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  html { scroll-behavior: auto; }
  .marquee-inner { animation: none; }
}
