/* ===== CINEMATIC ANIMATIONS ===== */
.fade-in { opacity: 0; transform: translateY(20px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
.fade-in.visible { opacity: 1; transform: translateY(0); }

.slide-left { opacity: 0; transform: translateX(-30px); transition: opacity 0.6s, transform 0.6s; }
.slide-left.visible { opacity: 1; transform: translateX(0); }

.zoom-in { transform: scale(0.95); transition: transform 0.5s ease; }
.zoom-in.visible { transform: scale(1); }

@keyframes float {
  0%,100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
.float { animation: float 3s ease-in-out infinite; }

/* Entrance animations for blocks */
.block-animate { opacity: 0; transform: translateY(30px); transition: opacity 0.8s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); }
.block-animate.visible { opacity: 1; transform: translateY(0); }

/* Reduced motion handled globally */