/* Wrapper alignment */
.elementor-align-left .btn-d9405be2-wrapper { text-align: left; }
.elementor-align-center .btn-d9405be2-wrapper { text-align: center; }
.elementor-align-right .btn-d9405be2-wrapper { text-align: right; }
.elementor-align-justify .btn-d9405be2-wrapper .btn-d9405be2 { display: flex; justify-content: center; width: 100%; }

/* Core Button Styles */
.btn-d9405be2 {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    overflow: hidden;
    z-index: 1;
    transition: color 0.4s ease, border-color 0.4s ease, background-color 0.4s ease, box-shadow 0.4s ease;
    border-style: solid;
}

/* Background sliding pseudo-element */
.btn-d9405be2::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

/* Direction animations for background fill */
.btn-slide-left-to-right .btn-d9405be2::before {
    transform: scaleX(0);
    transform-origin: left center;
}
.btn-slide-left-to-right .btn-d9405be2:hover::before {
    transform: scaleX(1);
}

.btn-slide-right-to-left .btn-d9405be2::before {
    transform: scaleX(0);
    transform-origin: right center;
}
.btn-slide-right-to-left .btn-d9405be2:hover::before {
    transform: scaleX(1);
}

.btn-slide-top-to-bottom .btn-d9405be2::before {
    transform: scaleY(0);
    transform-origin: center top;
}
.btn-slide-top-to-bottom .btn-d9405be2:hover::before {
    transform: scaleY(1);
}

.btn-slide-bottom-to-top .btn-d9405be2::before {
    transform: scaleY(0);
    transform-origin: center bottom;
}
.btn-slide-bottom-to-top .btn-d9405be2:hover::before {
    transform: scaleY(1);
}


/* Text Container & Dynamic Clone Slide up animation */
.btn-text-container {
    position: relative;
    display: inline-block;
    overflow: hidden;
}

.btn-text-slide-up .btn-text-content {
    display: inline-block;
    position: relative;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

/* Create the sliding duplicate using data-text */
.btn-text-slide-up .btn-text-content::after {
    content: attr(data-text);
    position: absolute;
    left: 0;
    top: 100%;
    width: 100%;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

.btn-text-slide-up .btn-d9405be2:hover .btn-text-content {
    transform: translateY(-100%);
}


/* Icon Wrapper Styles */
.btn-icon-wrapper {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1), opacity 0.4s ease;
}

.btn-icon-wrapper svg {
    width: 1em;
    height: 1em;
    display: block;
}

/* Icon Animations */
/* Rotate Effect */
.btn-icon-anim-rotate .btn-d9405be2:hover .btn-icon-wrapper {
    transform: rotate(360deg);
}

/* Slide Right Out & In Effect (Shopify Ella Style) */
.btn-icon-anim-slide-right .btn-icon-right {
    overflow: hidden;
    position: relative;
}

.btn-icon-anim-slide-right .btn-d9405be2:hover .btn-icon-right svg,
.btn-icon-anim-slide-right .btn-d9405be2:hover .btn-icon-right i {
    animation: btnIconSlideRight 0.4s forwards;
}

.btn-icon-anim-slide-right .btn-icon-left {
    overflow: hidden;
    position: relative;
}

.btn-icon-anim-slide-right .btn-d9405be2:hover .btn-icon-left svg,
.btn-icon-anim-slide-right .btn-d9405be2:hover .btn-icon-left i {
    animation: btnIconSlideLeft 0.4s forwards;
}

@keyframes btnIconSlideRight {
    0% {
        transform: translate3d(0, 0, 0);
    }
    49% {
        transform: translate3d(150%, 0, 0);
    }
    50% {
        opacity: 0;
        transform: translate3d(-150%, 0, 0);
    }
    51% {
        opacity: 1;
    }
    100% {
        transform: translate3d(0, 0, 0);
    }
}

@keyframes btnIconSlideLeft {
    0% {
        transform: translate3d(0, 0, 0);
    }
    49% {
        transform: translate3d(-150%, 0, 0);
    }
    50% {
        opacity: 0;
        transform: translate3d(150%, 0, 0);
    }
    51% {
        opacity: 1;
    }
    100% {
        transform: translate3d(0, 0, 0);
    }
}
