/**
 * Global Hover Effects & Entrance Animations
 */

/* Premium Button Hover Effects */
.elementor-widget-e-button .elementor-button,
.elementor-widget-button .elementor-button,
.woocommerce-page button.button,
.woocommerce-page a.button {
    transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
    position: relative;
    overflow: hidden;
}

.elementor-widget-e-button .elementor-button:after,
.elementor-widget-button .elementor-button:after,
.woocommerce-page button.button:after,
.woocommerce-page a.button:after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: width 0.6s ease, height 0.6s ease;
    z-index: 0;
}

.elementor-widget-e-button .elementor-button:hover:after,
.elementor-widget-button .elementor-button:hover:after,
.woocommerce-page button.button:hover:after,
.woocommerce-page a.button:hover:after {
    width: 300px;
    height: 300px;
}

.elementor-widget-e-button .elementor-button .elementor-button-content-wrapper,
.elementor-widget-button .elementor-button .elementor-button-content-wrapper {
    position: relative;
    z-index: 1;
}

.elementor-widget-e-button .elementor-button:hover,
.elementor-widget-button .elementor-button:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}

/* Base state for animated elements */
.cn-animate {
    opacity: 0;
    visibility: hidden;
    will-change: transform, opacity;
}

/* Animations */
@keyframes cnFadeInUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes cnFadeInDown {
    from { opacity: 0; transform: translateY(-30px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes cnFadeInLeft {
    from { opacity: 0; transform: translateX(-30px); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes cnFadeInRight {
    from { opacity: 0; transform: translateX(30px); }
    to { opacity: 1; transform: translateX(0); }
}

@keyframes cnZoomIn {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

/* Active states */
.cn-animate.is-visible {
    visibility: visible;
}

.cn-fade-in-up.is-visible {
    animation: cnFadeInUp 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

.cn-fade-in-down.is-visible {
    animation: cnFadeInDown 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

.cn-fade-in-left.is-visible {
    animation: cnFadeInLeft 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

.cn-fade-in-right.is-visible {
    animation: cnFadeInRight 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

.cn-zoom-in.is-visible {
    animation: cnZoomIn 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

/* Delays */
.cn-delay-200 { animation-delay: 0.2s; }
.cn-delay-400 { animation-delay: 0.4s; }
