/* ===== Animations ===== */
.reveal-fade,
.reveal-up,
.reveal-left,
.reveal-right {
  opacity: 0;
  transition: all 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal-fade { transform: none; transition-property: opacity; }
.reveal-up { transform: translateY(40px); }
.reveal-left { transform: translateX(-40px); }
.reveal-right { transform: translateX(40px); }

.reveal-fade.is-visible,
.reveal-up.is-visible,
.reveal-left.is-visible,
.reveal-right.is-visible {
  opacity: 1;
  transform: translate(0);
}

/* Counter animation */
.stat-number { transition: all 0.3s ease; }

/* Tab panel transition */
.tab-panel { animation: tabFadeIn 0.4s ease; }
@keyframes tabFadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Gallery track transition */
.gallery-track { transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1); }