.reveal { 
  opacity: 0; transform: translateY(40px) translateZ(0); 
  transition: opacity 1.5s var(--apple-ease), transform 1.5s var(--apple-ease); 
}
.reveal.active { opacity: 1; transform: translateY(0) translateZ(0); }

.scale-in { 
  transform: scale(0.92) translateY(20px) translateZ(0); 
  opacity: 0; transition: opacity 1.5s var(--apple-ease), transform 1.5s var(--apple-ease); 
}
.scale-in.active { transform: scale(1) translateY(0) translateZ(0); opacity: 1; }

.delay-1 { transition-delay: 0.1s; } 
.delay-2 { transition-delay: 0.2s; } 
.delay-3 { transition-delay: 0.3s; } 
.delay-4 { transition-delay: 0.4s; }

.fade-up-out { 
  transition: all 0.8s var(--apple-ease) !important; 
  opacity: 0 !important; transform: translateY(-30px) scale(0.95) translateZ(0) !important; pointer-events: none; 
}

@keyframes float-1 { 
  0%, 100% { transform: translateY(0) rotate(8deg) scaleX(-1); } 
  50% { transform: translateY(-8px) rotate(10deg) scaleX(-1); } 
}
@keyframes float-2 { 
  0%, 100% { transform: translateY(0) rotate(4deg); } 
  50% { transform: translateY(-8px) rotate(6deg); } 
}
@keyframes float-3 { 
  0%, 100% { transform: translateY(0) rotate(-6deg) scaleX(-1); } 
  50% { transform: translateY(-6px) rotate(-4deg) scaleX(-1); } 
}
@keyframes float-4 { 
  0%, 100% { transform: translateY(0) rotate(-6deg); } 
  50% { transform: translateY(-6px) rotate(-4deg); } 
}

/* KUNCI PERBAIKAN: translate(-50%, -50%) memotong gambar 1/2 di kiri dan pas di tengah vertikal */
@keyframes breathe-left { 
  0% { transform: translate(-50%, -44%) scale(1) translateZ(0); } 
  100% { transform: translate(-50%, -44%) scale(1.05) translateZ(0); } 
}

@keyframes bounce { 
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 
  40% { transform: translateY(-16px); } 60% { transform: translateY(-8px); } 
}

/* Dukungan "Kurangi Gerakan" di perangkat yang membutuhkannya */
@media (prefers-reduced-motion: reduce) {
  .floral, .sunda-house-icon, .gunungan-bg, .cover-gunungan-logo, .scroll-down svg {
    animation: none !important;
  }
  .reveal, .scale-in {
    transition-duration: 0.5s !important;
  }
}
