.ab-0d53efb3-container {
    display: block;
    width: 100%;
}

.ab-0d53efb3-btn-wrap {
    display: inline-flex;
    position: relative;
    vertical-align: middle;
    z-index: 1;
}

.elementor-align-justify .ab-0d53efb3-btn-wrap {
    display: flex;
    width: 100%;
}

.ab-0d53efb3-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    position: relative;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
    box-sizing: border-box;
    z-index: 2;
    cursor: pointer;
    width: 100%;
}

.ab-0d53efb3-btn .ab-0d53efb3-content {
    position: relative;
    z-index: 4;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
}

.ab-0d53efb3-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.ab-0d53efb3-icon svg {
    width: 1em;
    height: 1em;
    display: block;
}

/* Base pseudos for sweep effects */
.ab-0d53efb3-sweep-right::before,
.ab-0d53efb3-sweep-left::before,
.ab-0d53efb3-slide-up::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 3;
    transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* Sweep Right */
.ab-0d53efb3-sweep-right::before {
    left: 0;
    transform: scaleX(0);
    transform-origin: left;
}

.ab-0d53efb3-sweep-right:hover::before {
    transform: scaleX(1);
}

/* Sweep Left */
.ab-0d53efb3-sweep-left::before {
    right: 0;
    transform: scaleX(0);
    transform-origin: right;
}

.ab-0d53efb3-sweep-left:hover::before {
    transform: scaleX(1);
}

/* Slide Up (Greystones Style sweep bottom to top) */
.ab-0d53efb3-slide-up::before {
    transform: scaleY(0);
    transform-origin: bottom;
}

.ab-0d53efb3-slide-up:hover::before {
    transform: scaleY(1);
}

/* Icon rotation / transformation on Sweep hover */
.ab-0d53efb3-sweep-right:hover .ab-0d53efb3-icon,
.ab-0d53efb3-sweep-left:hover .ab-0d53efb3-icon {
    transform: translateX(3px) rotate(15deg);
}

/* Slide Content Up Animation */
.ab-0d53efb3-slide-up {
    position: relative;
}

.ab-0d53efb3-slide-wrap {
    display: block;
    position: relative;
    overflow: hidden;
    height: 1.5em;
    line-height: 1.5em;
    z-index: 4;
}

.ab-0d53efb3-slide-item {
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.ab-0d53efb3-slide-item.slide-hover {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
}

.ab-0d53efb3-slide-up:hover .slide-normal {
    transform: translateY(-100%);
}

.ab-0d53efb3-slide-up:hover .slide-hover {
    transform: translateY(-100%);
}

/* Shimmer Animation */
.ab-0d53efb3-shimmer::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 50%;
    height: 100%;
    background: linear-gradient(
        to right,
        rgba(255, 255, 255, 0) 0%,
        rgba(255, 255, 255, 0.3) 50%,
        rgba(255, 255, 255, 0) 100%
    );
    transform: skewX(-25deg);
    z-index: 3;
    transition: none;
}

.ab-0d53efb3-shimmer:hover::before {
    animation: ab-shimmer-glow-0d53efb3 1s ease-in-out infinite;
}

@keyframes ab-shimmer-glow-0d53efb3 {
    0% {
        left: -100%;
    }
    100% {
        left: 200%;
    }
}

/* Border-Line Expand */
.ab-0d53efb3-border-grow {
    box-shadow: inset 0 0 0 2px transparent;
}

.ab-0d53efb3-border-grow::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border: 2px solid transparent;
    box-sizing: border-box;
    transform: scale(0.9);
    transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
    z-index: 3;
}

.ab-0d53efb3-border-grow:hover::before {
    transform: scale(1);
    border-color: currentColor;
}

/* --- ATTENTION GRABBERS (OUTSIDE BUTTON) --- */

/* Pulse Ripple Ring - Emitting Outside Button wrapper */
.ab-0d53efb3-btn-wrap.ab-0d53efb3-att-pulse::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: inherit;
    border: 2px solid #f39c12; /* Customized via control */
    opacity: 0.9;
    z-index: -1;
    pointer-events: none;
    animation: ab-pulse-ring-0d53efb3 2.5s cubic-bezier(0.25, 0, 0, 1) infinite;
}

@keyframes ab-pulse-ring-0d53efb3 {
    0% {
        transform: scale(1);
        opacity: 0.9;
    }
    50% {
        opacity: 0.5;
    }
    100% {
        transform: scale(1.3, 1.4);
        opacity: 0;
    }
}

/* Attention Shaking wrapper */
.ab-0d53efb3-btn-wrap.ab-0d53efb3-att-shake {
    animation: ab-soft-shake-0d53efb3 4s cubic-bezier(.36,.07,.19,.97) infinite;
    transform: translate3d(0, 0, 0);
}

@keyframes ab-soft-shake-0d53efb3 {
    2%, 18% { transform: translate3d(-1px, 0, 0); }
    4%, 16% { transform: translate3d(2px, 0, 0); }
    6%, 10%, 14% { transform: translate3d(-4px, 0, 0); }
    8%, 12% { transform: translate3d(4px, 0, 0); }
    20%, 100% { transform: translate3d(0, 0, 0); }
}
