/* ===== Animations ===== */

/* Smooth fade-up entrance */
.anim-fade {
  opacity: 1;
  transform: translateY(0);
}

.anim-fade:not(.visible) {
  opacity: 0;
  transform: translateY(32px);
}

.anim-fade {
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

/* Stagger children */
.anim-stagger > * {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1),
              transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.anim-stagger.visible > *:nth-child(1) { transition-delay: 0.06s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(2) { transition-delay: 0.12s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(3) { transition-delay: 0.18s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(4) { transition-delay: 0.24s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(5) { transition-delay: 0.30s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(6) { transition-delay: 0.36s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(7) { transition-delay: 0.42s; opacity: 1; transform: translateY(0); }
.anim-stagger.visible > *:nth-child(8) { transition-delay: 0.48s; opacity: 1; transform: translateY(0); }

/* Page load */
@keyframes pageLoad {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

.page-wrapper {
  animation: pageLoad 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

/* Floating decoration */
@keyframes float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  33% { transform: translateY(-10px) rotate(1.5deg); }
  66% { transform: translateY(5px) rotate(-1deg); }
}

/* Pulse glow */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 var(--accent-glow); }
  50% { box-shadow: 0 0 24px 6px var(--accent-glow); }
}

/* Line grow */
@keyframes lineGrow {
  from { width: 0; }
  to { width: 60px; }
}

/* Shimmer loading */
@keyframes shimmer {
  0% { background-position: -200px 0; }
  100% { background-position: calc(200px + 100%) 0; }
}

/* Gentle scale entrance */
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

/* Slide up for chatbot */
@keyframes chatSlideUp {
  from { opacity: 0; transform: translateY(16px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Smooth card hover lift */
.card {
  transition: background var(--transition-base),
              border-color var(--transition-base),
              box-shadow var(--transition-base),
              transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.card:hover {
  transform: translateY(-2px);
}

/* Gallery image hover with smooth zoom */
.region-gallery-item img,
.masonry-item img {
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1),
              filter 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Region card header zoom */
.region-card-header img {
  transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}
