/**
 * AOS (Animate On Scroll) - Luxury High-Performance Edition
 * Baskara Riau Teknik (BRT)
 * 
 * Hardware-accelerated CSS animations with luxury cubic-bezier deceleration curves.
 * Fully WCAG AA compliant with prefers-reduced-motion fallback.
 */

[data-aos] {
  pointer-events: none;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  will-change: transform, opacity;
}

[data-aos].aos-animate {
  pointer-events: auto;
}

/* ==========================================================================
   EASING CURVES (Luxury Deceleration Curves)
   ========================================================================== */
body[data-aos-easing="ease-luxury"] [data-aos],
[data-aos][data-aos-easing="ease-luxury"] {
  transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

body[data-aos-easing="ease-out-cubic"] [data-aos],
[data-aos][data-aos-easing="ease-out-cubic"],
[data-aos] {
  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}

body[data-aos-easing="ease-in-out"] [data-aos],
[data-aos][data-aos-easing="ease-in-out"] {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* ==========================================================================
   DEFAULT TRANSITION DURATION
   ========================================================================== */
[data-aos] {
  transition-duration: 700ms;
  transition-property: opacity, transform;
}

/* Durations */
[data-aos][data-aos-duration="400"] { transition-duration: 400ms; }
[data-aos][data-aos-duration="500"] { transition-duration: 500ms; }
[data-aos][data-aos-duration="600"] { transition-duration: 600ms; }
[data-aos][data-aos-duration="700"] { transition-duration: 700ms; }
[data-aos][data-aos-duration="800"] { transition-duration: 800ms; }
[data-aos][data-aos-duration="900"] { transition-duration: 900ms; }
[data-aos][data-aos-duration="1000"] { transition-duration: 1000ms; }
[data-aos][data-aos-duration="1200"] { transition-duration: 1200ms; }

/* Delays */
[data-aos][data-aos-delay="50"] { transition-delay: 50ms; }
[data-aos][data-aos-delay="100"] { transition-delay: 100ms; }
[data-aos][data-aos-delay="150"] { transition-delay: 150ms; }
[data-aos][data-aos-delay="200"] { transition-delay: 200ms; }
[data-aos][data-aos-delay="250"] { transition-delay: 250ms; }
[data-aos][data-aos-delay="300"] { transition-delay: 300ms; }
[data-aos][data-aos-delay="350"] { transition-delay: 350ms; }
[data-aos][data-aos-delay="400"] { transition-delay: 400ms; }
[data-aos][data-aos-delay="450"] { transition-delay: 450ms; }
[data-aos][data-aos-delay="500"] { transition-delay: 500ms; }
[data-aos][data-aos-delay="600"] { transition-delay: 600ms; }
[data-aos][data-aos-delay="700"] { transition-delay: 700ms; }
[data-aos][data-aos-delay="800"] { transition-delay: 800ms; }

/* ==========================================================================
   ANIMATIONS: FADE
   ========================================================================== */
[data-aos="fade"] {
  opacity: 0;
  transition-property: opacity;
}
[data-aos="fade"].aos-animate {
  opacity: 1;
}

[data-aos="fade-up"] {
  opacity: 0;
  transform: translate3d(0, 36px, 0);
}
[data-aos="fade-up"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-down"] {
  opacity: 0;
  transform: translate3d(0, -36px, 0);
}
[data-aos="fade-down"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-right"] {
  opacity: 0;
  transform: translate3d(-36px, 0, 0);
}
[data-aos="fade-right"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-left"] {
  opacity: 0;
  transform: translate3d(36px, 0, 0);
}
[data-aos="fade-left"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-up-right"] {
  opacity: 0;
  transform: translate3d(-30px, 30px, 0);
}
[data-aos="fade-up-right"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

[data-aos="fade-up-left"] {
  opacity: 0;
  transform: translate3d(30px, 30px, 0);
}
[data-aos="fade-up-left"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* ==========================================================================
   ANIMATIONS: ZOOM
   ========================================================================== */
[data-aos="zoom-in"] {
  opacity: 0;
  transform: scale3d(0.92, 0.92, 1);
}
[data-aos="zoom-in"].aos-animate {
  opacity: 1;
  transform: scale3d(1, 1, 1);
}

[data-aos="zoom-in-up"] {
  opacity: 0;
  transform: translate3d(0, 30px, 0) scale3d(0.92, 0.92, 1);
}
[data-aos="zoom-in-up"].aos-animate {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale3d(1, 1, 1);
}

[data-aos="zoom-out"] {
  opacity: 0;
  transform: scale3d(1.08, 1.08, 1);
}
[data-aos="zoom-out"].aos-animate {
  opacity: 1;
  transform: scale3d(1, 1, 1);
}

/* ==========================================================================
   ANIMATIONS: FLIP & SLIDE
   ========================================================================== */
[data-aos="flip-up"] {
  opacity: 0;
  transform: perspective(1200px) rotateX(25deg);
}
[data-aos="flip-up"].aos-animate {
  opacity: 1;
  transform: perspective(1200px) rotateX(0deg);
}

[data-aos="slide-up"] {
  transform: translate3d(0, 100%, 0);
}
[data-aos="slide-up"].aos-animate {
  transform: translate3d(0, 0, 0);
}

/* ==========================================================================
   ACCESSIBILITY: PREFERS-REDUCED-MOTION (WCAG 2.1 AA) & PRINT OVERRIDE
   ========================================================================== */
@media (prefers-reduced-motion: reduce), print {
  [data-aos] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    pointer-events: auto !important;
  }
}

/* Fail-safe Fallback: Never lock content in invisible state if JS is delayed */
html.no-js [data-aos],
html.aos-fallback [data-aos] {
  opacity: 1 !important;
  transform: none !important;
  pointer-events: auto !important;
}
