/* animations.css — scroll-reveal + micro-interactions
   Hidden state is scoped behind .reveal-ready (added by JS) so the page
   is never blank if scripts fail. Fully disabled under reduced-motion. */

.reveal-ready .reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 0.7s cubic-bezier(0.22, 0.7, 0.2, 1),
    transform 0.7s cubic-bezier(0.22, 0.7, 0.2, 1);
  will-change: opacity, transform;
}
.reveal-ready .reveal.is-in {
  opacity: 1;
  transform: none;
}

/* Side-enter variants for split layouts */
.reveal-ready .reveal-left  { transform: translateX(-34px); }
.reveal-ready .reveal-right { transform: translateX(34px); }
.reveal-ready .reveal-left.is-in,
.reveal-ready .reveal-right.is-in { transform: none; }

/* Soft scale-in for imagery */
.reveal-ready .reveal-zoom { transform: scale(0.965); }
.reveal-ready .reveal-zoom.is-in { transform: none; }

/* ── Micro-interactions: gentle lift on interactive cards ── */
.service-card,
.proj-card,
.about-point {
  transition:
    transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1),
    box-shadow 0.32s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.service-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-lg, 0 24px 50px -18px rgba(13, 31, 92, 0.28));
}
.proj-card:hover {
  transform: translateY(-5px);
}
.about-point:hover {
  transform: translateX(4px);
}

/* Arrow links nudge on hover */
.arrow-link svg,
.btn svg {
  transition: transform 0.25s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.arrow-link:hover svg,
.btn:hover svg {
  transform: translateX(4px);
}

/* Primary buttons get a subtle press feel */
.btn-primary {
  transition:
    transform 0.18s ease,
    box-shadow 0.25s ease,
    background 0.2s ease;
}
.btn-primary:hover {
  transform: translateY(-2px);
}
.btn-primary:active {
  transform: translateY(0);
}

/* KPI numbers settle in with a touch of bounce */
.reveal-ready .kpi-item.reveal {
  transform: translateY(18px) scale(0.97);
}
.reveal-ready .kpi-item.reveal.is-in {
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .reveal-ready .reveal,
  .reveal-ready .reveal-left,
  .reveal-ready .reveal-right,
  .reveal-ready .reveal-zoom,
  .reveal-ready .kpi-item.reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .service-card:hover,
  .proj-card:hover,
  .about-point:hover {
    transform: none;
  }
}
