/* HoverFlow Animation Library */

/* === FADE === */
.hoverflow-anim-fade .hoverflow-dropdown {
    opacity: 0;
    transition: opacity var(--hoverflow-anim-duration, 0.2s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-fade .hoverflow-dropdown.is-open {
    opacity: 1;
}

/* === SLIDE === */
.hoverflow-anim-slide .hoverflow-dropdown {
    opacity: 0;
    transform: translateY(-10px);
    transition: opacity var(--hoverflow-anim-duration, 0.2s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.2s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-slide .hoverflow-dropdown.is-open {
    opacity: 1;
    transform: translateY(0);
}

/* Slide from top */
.hoverflow-anim-slide.hoverflow-origin-top .hoverflow-dropdown { transform: translateY(-10px); }
.hoverflow-anim-slide.hoverflow-origin-bottom .hoverflow-dropdown { transform: translateY(10px); }
.hoverflow-anim-slide.hoverflow-origin-left .hoverflow-dropdown { transform: translateX(-10px); }
.hoverflow-anim-slide.hoverflow-origin-right .hoverflow-dropdown { transform: translateX(10px); }

/* === SCALE === */
.hoverflow-anim-scale .hoverflow-dropdown {
    opacity: 0;
    transform: scale(0.9);
    transition: opacity var(--hoverflow-anim-duration, 0.2s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.2s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-scale .hoverflow-dropdown.is-open {
    opacity: 1;
    transform: scale(1);
}

/* Scale origins */
.hoverflow-anim-scale.hoverflow-origin-top .hoverflow-dropdown { transform-origin: top center; }
.hoverflow-anim-scale.hoverflow-origin-bottom .hoverflow-dropdown { transform-origin: bottom center; }
.hoverflow-anim-scale.hoverflow-origin-left .hoverflow-dropdown { transform-origin: center left; }
.hoverflow-anim-scale.hoverflow-origin-right .hoverflow-dropdown { transform-origin: center right; }
.hoverflow-anim-scale.hoverflow-origin-top-left .hoverflow-dropdown { transform-origin: top left; }
.hoverflow-anim-scale.hoverflow-origin-top-right .hoverflow-dropdown { transform-origin: top right; }

/* === ROTATE === */
.hoverflow-anim-rotate .hoverflow-dropdown {
    opacity: 0;
    transform: rotate(-5deg) scale(0.95);
    transition: opacity var(--hoverflow-anim-duration, 0.3s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.3s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-rotate .hoverflow-dropdown.is-open {
    opacity: 1;
    transform: rotate(0) scale(1);
}

/* === BLUR === */
.hoverflow-anim-blur .hoverflow-dropdown {
    opacity: 0;
    filter: blur(8px);
    transition: opacity var(--hoverflow-anim-duration, 0.3s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                filter var(--hoverflow-anim-duration, 0.3s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-blur .hoverflow-dropdown.is-open {
    opacity: 1;
    filter: blur(0);
}

/* === 3D === */
.hoverflow-anim-3d .hoverflow-dropdown {
    opacity: 0;
    transform: perspective(800px) rotateX(-15deg);
    transform-origin: top center;
    transition: opacity var(--hoverflow-anim-duration, 0.35s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.35s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-3d .hoverflow-dropdown.is-open {
    opacity: 1;
    transform: perspective(800px) rotateX(0);
}

/* === PERSPECTIVE === */
.hoverflow-anim-perspective .hoverflow-dropdown {
    opacity: 0;
    transform: perspective(600px) translateZ(-30px) rotateY(5deg);
    transition: opacity var(--hoverflow-anim-duration, 0.4s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.4s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-perspective .hoverflow-dropdown.is-open {
    opacity: 1;
    transform: perspective(600px) translateZ(0) rotateY(0);
}

/* === MORPH === */
.hoverflow-anim-morph .hoverflow-dropdown {
    opacity: 0;
    border-radius: 50%;
    transform: scale(0.3);
    transition: opacity var(--hoverflow-anim-duration, 0.4s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.4s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                border-radius var(--hoverflow-anim-duration, 0.4s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-morph .hoverflow-dropdown.is-open {
    opacity: 1;
    border-radius: var(--hoverflow-radius, 8px);
    transform: scale(1);
}

/* === COMBINED: Fade + Slide === */
.hoverflow-anim-fade-slide .hoverflow-dropdown {
    opacity: 0;
    transform: translateY(-8px);
    transition: opacity var(--hoverflow-anim-duration, 0.25s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s),
                transform var(--hoverflow-anim-duration, 0.25s) var(--hoverflow-anim-easing, ease) var(--hoverflow-anim-delay, 0s);
}
.hoverflow-anim-fade-slide .hoverflow-dropdown.is-open {
    opacity: 1;
    transform: translateY(0);
}

/* Easing Presets */
.hoverflow-ease-bounce { --hoverflow-anim-easing: cubic-bezier(0.68, -0.55, 0.265, 1.55); }
.hoverflow-ease-smooth { --hoverflow-anim-easing: cubic-bezier(0.4, 0, 0.2, 1); }
.hoverflow-ease-spring { --hoverflow-anim-easing: cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.hoverflow-ease-sharp { --hoverflow-anim-easing: cubic-bezier(0.4, 0, 0.6, 1); }
