/**
 * Panel: AOS — scroll-driven animations, ZERO front-end JavaScript.
 * Powered by CSS animation-timeline: view() + animation-range.
 *
 * Repurposed controls (delay/duration are now raw percentages, written by the editor
 * panel as inline custom properties on each block):
 *   --aos-start       -> where the reveal starts inside the scroll window (cover %)  [Delay %]
 *   --aos-span        -> how much scroll distance the reveal spans (cover %)          [Duration %]
 *   data-aos-easing   -> animation-timing-function
 *
 * Graceful fallback: browsers without scroll-driven-animation support (or users with
 * prefers-reduced-motion: reduce) simply see the fully-revealed content, no JS needed.
 */

@media (prefers-reduced-motion: no-preference) {
  @supports (animation-timeline: view()) {

    [data-aos] {
      --aos-start: 0%;   /* from data-aos-delay */
      --aos-span: 40%;   /* from data-aos-duration */
      animation-name: aos-fade;
      animation-fill-mode: both;
      animation-timing-function: ease;
      animation-timeline: view();
      animation-range: cover var(--aos-start) cover calc(var(--aos-start) + var(--aos-span));
      will-change: transform, opacity, filter;
    }

    [data-aos^='flip'] { backface-visibility: hidden; }

    @keyframes aos-fade { from { opacity:0 } to { opacity:1 } }
    @keyframes aos-fade-up { from { opacity:0;transform:translate3d(0,50px,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-down { from { opacity:0;transform:translate3d(0,-50px,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-right { from { opacity:0;transform:translate3d(-50px,0,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-left { from { opacity:0;transform:translate3d(50px,0,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-up-right { from { opacity:0;transform:translate3d(-50px,50px,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-up-left { from { opacity:0;transform:translate3d(50px,50px,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-down-right { from { opacity:0;transform:translate3d(-50px,-50px,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-fade-down-left { from { opacity:0;transform:translate3d(50px,-50px,0) } to { opacity:1;transform:translate3d(0,0,0) } }
    @keyframes aos-zoom-in { from { opacity:0;transform:scale(.6) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-in-up { from { opacity:0;transform:translate3d(0,50px,0) scale(.6) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-in-down { from { opacity:0;transform:translate3d(0,-50px,0) scale(.6) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-in-right { from { opacity:0;transform:translate3d(-50px,0,0) scale(.6) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-in-left { from { opacity:0;transform:translate3d(50px,0,0) scale(.6) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-out { from { opacity:0;transform:scale(1.2) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-out-up { from { opacity:0;transform:translate3d(0,50px,0) scale(1.2) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-out-down { from { opacity:0;transform:translate3d(0,-50px,0) scale(1.2) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-out-right { from { opacity:0;transform:translate3d(-50px,0,0) scale(1.2) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-zoom-out-left { from { opacity:0;transform:translate3d(50px,0,0) scale(1.2) } to { opacity:1;transform:translate3d(0,0,0) scale(1) } }
    @keyframes aos-slide-up { from { transform:translate3d(0,100%,0) } to { transform:translate3d(0,0,0) } }
    @keyframes aos-slide-down { from { transform:translate3d(0,-100%,0) } to { transform:translate3d(0,0,0) } }
    @keyframes aos-slide-right { from { transform:translate3d(-100%,0,0) } to { transform:translate3d(0,0,0) } }
    @keyframes aos-slide-left { from { transform:translate3d(100%,0,0) } to { transform:translate3d(0,0,0) } }
    @keyframes aos-flip-left { from { transform:perspective(2500px) rotateY(-100deg) } to { transform:perspective(2500px) rotateY(0) } }
    @keyframes aos-flip-right { from { transform:perspective(2500px) rotateY(100deg) } to { transform:perspective(2500px) rotateY(0) } }
    @keyframes aos-flip-up { from { transform:perspective(2500px) rotateX(-100deg) } to { transform:perspective(2500px) rotateX(0) } }
    @keyframes aos-flip-down { from { transform:perspective(2500px) rotateX(100deg) } to { transform:perspective(2500px) rotateX(0) } }
    @keyframes aos-blur { from { filter:blur(50px) } to { filter:blur(0) } }
    @keyframes aos-blur-up { from { filter:blur(50px);transform:translate3d(0,50px,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-down { from { filter:blur(50px);transform:translate3d(0,-50px,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-right { from { filter:blur(50px);transform:translate3d(-50px,0,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-left { from { filter:blur(50px);transform:translate3d(50px,0,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-up-right { from { filter:blur(50px);transform:translate3d(-50px,50px,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-up-left { from { filter:blur(50px);transform:translate3d(50px,50px,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-down-right { from { filter:blur(50px);transform:translate3d(-50px,-50px,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }
    @keyframes aos-blur-down-left { from { filter:blur(50px);transform:translate3d(50px,-50px,0) } to { filter:blur(0);transform:translate3d(0,0,0) } }

    [data-aos='fade'] { animation-name: aos-fade; }
    [data-aos='fade-up'] { animation-name: aos-fade-up; }
    [data-aos='fade-down'] { animation-name: aos-fade-down; }
    [data-aos='fade-right'] { animation-name: aos-fade-right; }
    [data-aos='fade-left'] { animation-name: aos-fade-left; }
    [data-aos='fade-up-right'] { animation-name: aos-fade-up-right; }
    [data-aos='fade-up-left'] { animation-name: aos-fade-up-left; }
    [data-aos='fade-down-right'] { animation-name: aos-fade-down-right; }
    [data-aos='fade-down-left'] { animation-name: aos-fade-down-left; }
    [data-aos='zoom-in'] { animation-name: aos-zoom-in; }
    [data-aos='zoom-in-up'] { animation-name: aos-zoom-in-up; }
    [data-aos='zoom-in-down'] { animation-name: aos-zoom-in-down; }
    [data-aos='zoom-in-right'] { animation-name: aos-zoom-in-right; }
    [data-aos='zoom-in-left'] { animation-name: aos-zoom-in-left; }
    [data-aos='zoom-out'] { animation-name: aos-zoom-out; }
    [data-aos='zoom-out-up'] { animation-name: aos-zoom-out-up; }
    [data-aos='zoom-out-down'] { animation-name: aos-zoom-out-down; }
    [data-aos='zoom-out-right'] { animation-name: aos-zoom-out-right; }
    [data-aos='zoom-out-left'] { animation-name: aos-zoom-out-left; }
    [data-aos='slide-up'] { animation-name: aos-slide-up; }
    [data-aos='slide-down'] { animation-name: aos-slide-down; }
    [data-aos='slide-right'] { animation-name: aos-slide-right; }
    [data-aos='slide-left'] { animation-name: aos-slide-left; }
    [data-aos='flip-left'] { animation-name: aos-flip-left; }
    [data-aos='flip-right'] { animation-name: aos-flip-right; }
    [data-aos='flip-up'] { animation-name: aos-flip-up; }
    [data-aos='flip-down'] { animation-name: aos-flip-down; }
    [data-aos='blur'] { animation-name: aos-blur; }
    [data-aos='blur-up'] { animation-name: aos-blur-up; }
    [data-aos='blur-down'] { animation-name: aos-blur-down; }
    [data-aos='blur-right'] { animation-name: aos-blur-right; }
    [data-aos='blur-left'] { animation-name: aos-blur-left; }
    [data-aos='blur-up-right'] { animation-name: aos-blur-up-right; }
    [data-aos='blur-up-left'] { animation-name: aos-blur-up-left; }
    [data-aos='blur-down-right'] { animation-name: aos-blur-down-right; }
    [data-aos='blur-down-left'] { animation-name: aos-blur-down-left; }

    [data-aos-easing='linear'] { animation-timing-function: cubic-bezier(.250,.250,.750,.750); }
    [data-aos-easing='ease'] { animation-timing-function: cubic-bezier(.250,.100,.250,1); }
    [data-aos-easing='ease-in'] { animation-timing-function: cubic-bezier(.420,0,1,1); }
    [data-aos-easing='ease-out'] { animation-timing-function: cubic-bezier(.000,0,.580,1); }
    [data-aos-easing='ease-in-out'] { animation-timing-function: cubic-bezier(.420,0,.580,1); }
    [data-aos-easing='ease-in-back'] { animation-timing-function: cubic-bezier(.6,-.28,.735,.045); }
    [data-aos-easing='ease-out-back'] { animation-timing-function: cubic-bezier(.175,.885,.32,1.275); }
    [data-aos-easing='ease-in-out-back'] { animation-timing-function: cubic-bezier(.68,-.55,.265,1.55); }
    [data-aos-easing='ease-in-sine'] { animation-timing-function: cubic-bezier(.47,0,.745,.715); }
    [data-aos-easing='ease-out-sine'] { animation-timing-function: cubic-bezier(.39,.575,.565,1); }
    [data-aos-easing='ease-in-out-sine'] { animation-timing-function: cubic-bezier(.445,.05,.55,.95); }
    [data-aos-easing='ease-in-quad'] { animation-timing-function: cubic-bezier(.55,.085,.68,.53); }
    [data-aos-easing='ease-out-quad'] { animation-timing-function: cubic-bezier(.25,.46,.45,.94); }
    [data-aos-easing='ease-in-out-quad'] { animation-timing-function: cubic-bezier(.455,.03,.515,.955); }
    [data-aos-easing='ease-in-cubic'] { animation-timing-function: cubic-bezier(.55,.085,.68,.53); }
    [data-aos-easing='ease-out-cubic'] { animation-timing-function: cubic-bezier(.25,.46,.45,.94); }
    [data-aos-easing='ease-in-out-cubic'] { animation-timing-function: cubic-bezier(.455,.03,.515,.955); }
    [data-aos-easing='ease-in-quart'] { animation-timing-function: cubic-bezier(.55,.085,.68,.53); }
    [data-aos-easing='ease-out-quart'] { animation-timing-function: cubic-bezier(.25,.46,.45,.94); }
    [data-aos-easing='ease-in-out-quart'] { animation-timing-function: cubic-bezier(.455,.03,.515,.955); }

  }
}
