/* ========================================
   Animations — Enterprise polish
   Smooth reveals, micro-interactions, decorative motion
======================================== */

/* Fade in up — default reveal */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

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

/* Stagger children */
.reveal-stagger > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

.reveal-stagger.visible > *:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger.visible > *:nth-child(2) { transition-delay: 100ms; }
.reveal-stagger.visible > *:nth-child(3) { transition-delay: 200ms; }
.reveal-stagger.visible > *:nth-child(4) { transition-delay: 300ms; }
.reveal-stagger.visible > *:nth-child(5) { transition-delay: 400ms; }
.reveal-stagger.visible > *:nth-child(6) { transition-delay: 500ms; }

.reveal-stagger.visible > * {
  opacity: 1;
  transform: translateY(0);
}

/* Fade in only */
.reveal-fade {
  opacity: 0;
  transition: opacity var(--transition-slow);
}

.reveal-fade.visible {
  opacity: 1;
}

/* Subtle scale */
.reveal-scale {
  opacity: 0;
  transform: scale(0.95);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

.reveal-scale.visible {
  opacity: 1;
  transform: scale(1);
}

/* Slide in from left */
.reveal-left {
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

.reveal-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Slide in from right */
.reveal-right {
  opacity: 0;
  transform: translateX(30px);
  transition: opacity var(--transition-slow), transform var(--transition-slow);
}

.reveal-right.visible {
  opacity: 1;
  transform: translateX(0);
}

/* ---- Keyframe Animations ---- */

/* 
   Japanese Design: Stillness (Silence)
   Removed decorative looping animations (float, gradientShift) 
   to reduce visual noise and promote calm.
*/
/* 
@keyframes float { ... } 
@keyframes gradientShift { ... }
*/

/* Pulse glow for focus/active states */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(var(--primary-rgb), 0.15); }
  50% { box-shadow: 0 0 0 8px rgba(var(--primary-rgb), 0); }
}

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

.stat__number {
  animation: countUp 0.6s ease forwards;
}

/* Page transition */
.page-transition {
  /* Removed 'forwards' so the animation releases the transform context after completion */
  animation: pageIn 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

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

/* Shimmer effect for premium elements */
@keyframes shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-stagger > *,
  .reveal-fade,
  .reveal-scale,
  .reveal-left,
  .reveal-right {
    transition: none;
    opacity: 1;
    transform: none;
  }

  .hero::before,
  .hero::after,
  .cta-banner::before {
    animation: none;
  }

  .page-transition {
    animation: none;
    opacity: 1;
  }
}