/* Micro-animations and scroll effects */

@keyframes float {
  0% { transform: translateY(0px) rotate(0deg) scale(1); }
  50% { transform: translateY(-30px) rotate(5deg) scale(1.05); }
  100% { transform: translateY(0px) rotate(0deg) scale(1); }
}

@keyframes pulse-glow {
  0% { box-shadow: 0 0 0 0 rgba(0, 96, 222, 0.4); }
  70% { box-shadow: 0 0 0 15px rgba(0, 96, 222, 0); }
  100% { box-shadow: 0 0 0 0 rgba(0, 96, 222, 0); }
}

@keyframes rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

html {
  scroll-behavior: smooth;
}

/* Scroll reveal base classes */
.reveal {
  opacity: 0;
  visibility: hidden;
  transition: all 0.8s cubic-bezier(0.5, 0, 0, 1);
  will-change: transform, opacity;
}

.reveal.active {
  opacity: 1;
  visibility: visible;
  transform: translate(0, 0) scale(1);
}

/* Specific reveal animations */
.fade-in {
  opacity: 0;
  transform: translateY(20px);
}

.fade-in.active {
  opacity: 1;
  transform: translateY(0);
}

.slide-up {
  opacity: 0;
  transform: translateY(50px);
}

.slide-up.active {
  opacity: 1;
  transform: translateY(0);
}

.slide-left {
  opacity: 0;
  transform: translateX(50px);
}

.slide-left.active {
  opacity: 1;
  transform: translateX(0);
}

.slide-right {
  opacity: 0;
  transform: translateX(-50px);
}

.slide-right.active {
  opacity: 1;
  transform: translateX(0);
}

.zoom-in {
  opacity: 0;
  transform: scale(0.9);
}

.zoom-in.active {
  opacity: 1;
  transform: scale(1);
}

/* Base hover states for interaction */
.hover-scale {
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}
.hover-scale:hover {
  transform: scale(1.02);
  z-index: 10;
}
