.fade-in {
  opacity: 0;
  animation: fadeInUp 1.2s cubic-bezier(.4,2,.3,1) forwards;
}
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(40px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

.floating {
  animation: floating 3.5s ease-in-out infinite alternate;
}
@keyframes floating {
  0% { transform: translateY(0); }
  100% { transform: translateY(-18px); }
}

.tech-move {
  animation: techMove 6s linear infinite alternate;
}
@keyframes techMove {
  0% { transform: translateX(0) rotate(0deg); }
  100% { transform: translateX(20px) rotate(6deg); }
}

/* Spring/bounce for buttons */
.animated-btn {
  transition: transform 0.18s cubic-bezier(.4,2,.3,1), box-shadow 0.18s;
}
.animated-btn:active {
  transform: scale(0.97);
} 