/* Ohana Beach House - Animations
   Purposeful motion only - no decorative noise
   Respects prefers-reduced-motion
*/

/* Page load: staggered fade-in with vertical drift */
@keyframes fadeUp {
  from { 
    opacity: 0; 
    transform: translateY(24px); 
  }
  to { 
    opacity: 1; 
    transform: translateY(0); 
  }
}

.stagger-1 { animation: fadeUp 1s .1s both; }
.stagger-2 { animation: fadeUp 1s .25s both; }
.stagger-3 { animation: fadeUp 1s .4s both; }

/* Scroll-triggered reveals via IntersectionObserver */
.reveal { 
  opacity: 0; 
  transform: translateY(24px); 
  transition: opacity .8s cubic-bezier(.2,.7,.2,1), 
              transform .8s cubic-bezier(.2,.7,.2,1); 
}

.reveal.is-visible { 
  opacity: 1; 
  transform: translateY(0); 
}

/* Room cards - scale + overlay reveal */
.room-card img { 
  transition: transform 1.2s cubic-bezier(.2,.7,.2,1); 
  will-change: transform;
}

.room-card:hover img { 
  transform: scale(1.05); 
}

.room-overlay { 
  opacity: 0; 
  transform: translateY(8px); 
  transition: all .5s ease; 
}

.room-card:hover .room-overlay { 
  opacity: 1; 
  transform: translateY(0); 
}

/* Gallery - cursor follow effect */
.gallery-item img {
  transition: transform 0.3s ease-out;
  will-change: transform;
  transform-origin: center center;
}

/* Signature parallax layers */
[data-parallax] {
  will-change: transform;
}

/* Accessibility: respect user preference */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  
  .reveal, 
  .stagger-1, 
  .stagger-2, 
  .stagger-3,
  .room-card img,
  .room-overlay { 
    animation: none !important; 
    transition: none !important; 
    opacity: 1 !important; 
    transform: none !important; 
  }
  
  video { 
    display: none; 
  }
}