/* =========================================================
   Keyframes + entrance / hover animations
   ========================================================= */

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

@keyframes flag-flow {
  from { background-position: 200% 50%; }
  to   { background-position: 0%   50%; }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.5; }
}

/* Initial state for elements observed by IntersectionObserver */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity 0.7s ease,
    transform 0.7s ease;
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Variant: animate immediately (no observer) */
.animate-fade-up {
  animation: fade-up 0.7s ease-out both;
}

/* Decorative blob slowly drifts */
@keyframes drift {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50%      { transform: translate(-48%, -52%) scale(1.05); }
}
.bg-blob {
  animation: drift 12s ease-in-out infinite;
}

/* Carousel autoplay paused indicator (visual hint not used yet) */
.is-paused { opacity: 1; }
