/* ─────────────────────────────────────────
   animations.css  —  Motion & transitions
───────────────────────────────────────── */

/* ── Scroll Reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity   0.7s var(--ease-out),
    transform 0.7s var(--ease-out);
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger children inside a revealed container */
.reveal--stagger > * {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity   0.5s var(--ease-out),
    transform 0.5s var(--ease-out);
}

.reveal--stagger.visible > *:nth-child(1) { transition-delay: 0ms;   opacity: 1; transform: none; }
.reveal--stagger.visible > *:nth-child(2) { transition-delay: 80ms;  opacity: 1; transform: none; }
.reveal--stagger.visible > *:nth-child(3) { transition-delay: 160ms; opacity: 1; transform: none; }
.reveal--stagger.visible > *:nth-child(4) { transition-delay: 240ms; opacity: 1; transform: none; }
.reveal--stagger.visible > *:nth-child(5) { transition-delay: 320ms; opacity: 1; transform: none; }
.reveal--stagger.visible > *:nth-child(6) { transition-delay: 400ms; opacity: 1; transform: none; }

/* ── Hero entrance ── */
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

.hero__content .badge        { animation: heroFadeUp 0.7s 0.1s var(--ease-out) both; }
.hero__title                 { animation: heroFadeUp 0.8s 0.2s var(--ease-out) both; }
.hero__role                  { animation: heroFadeUp 0.8s 0.35s var(--ease-out) both; }
.hero__desc                  { animation: heroFadeUp 0.8s 0.45s var(--ease-out) both; }
.hero__btns                  { animation: heroFadeUp 0.8s 0.55s var(--ease-out) both; }
.hero__stats                 { animation: heroFadeUp 0.8s 0.65s var(--ease-out) both; }
.scroll-hint                 { animation: heroFadeUp 1s 0.9s var(--ease-out) both; }

/* ── Counter animation ── */
@keyframes countUp {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

.stat__number { animation: countUp 0.6s var(--ease-out) both; }

/* ── Page loader ── */
.page-loader {
  position: fixed;
  inset: 0;
  background: var(--color-bg);
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: opacity 0.5s var(--ease-out), visibility 0.5s;
}

.page-loader.hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.loader__bar {
  width: 160px;
  height: 2px;
  background: var(--color-border);
  border-radius: 2px;
  overflow: hidden;
  position: relative;
}

.loader__bar::after {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, var(--color-accent), var(--color-accent2));
  animation: load 1s var(--ease-out) forwards;
}

@keyframes load {
  to { left: 0; }
}
