.anim-btn-container {
    display: inline-block;
}

.anim-btn-wrapper {
    display: flex;
    align-items: center;
    text-decoration: none;
    cursor: pointer;
    font-family: inherit;
    transition: all 0.3s ease;
    position: relative;
    overflow: visible;
}

.anim-btn-text {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 18px 28px;
    font-weight: 600;
    line-height: 1;
    position: relative;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.anim-btn-text-content {
    display: inline-block;
    transition: transform 0.3s ease;
}

.anim-btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    line-height: 1;
    position: relative;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.anim-btn-icon-inner {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.anim-btn-icon-inner-alt {
    display: none;
    position: absolute;
    align-items: center;
    justify-content: center;
    transform: translate(-30px, 30px);
    transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

.anim-btn-icon svg {
    width: 1.1em;
    height: 1.1em;
    transition: fill 0.3s ease;
}

/* Hover General Behavior */
.anim-btn-wrapper:hover .anim-btn-text,
.anim-btn-wrapper:hover .anim-btn-icon {
    transform: translateY(-2px);
}

/* Rotate Icon Effect */
.anim-btn-effect-rotate:hover .anim-btn-icon-inner {
    transform: rotate(45deg) scale(1.1);
}

/* Slide Arrow Effect */
.anim-btn-effect-slide:hover .anim-btn-icon-inner {
    transform: translate(4px, -4px);
}

/* Pulse Icon Effect */
.anim-btn-effect-pulse:hover .anim-btn-icon-inner {
    transform: scale(1.25);
}

/* Bounce Button Effect */
@keyframes animBtnBounce {
    0%, 100% { transform: translateY(-2px); }
    50% { transform: translateY(-6px); }
}
.anim-btn-effect-bounce:hover {
    animation: animBtnBounce 0.6s ease infinite;
}

/* Shimmer/Glossy Glow Effect */
@keyframes animBtnShimmer {
    0% { left: -150%; }
    50% { left: 150%; }
    100% { left: 150%; }
}
.anim-btn-effect-shimmer .anim-btn-text::after,
.anim-btn-effect-shimmer .anim-btn-icon::after {
    content: '';
    position: absolute;
    top: 0;
    left: -150%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent);
    transform: skewX(-20deg);
    transition: none;
}
.anim-btn-effect-shimmer:hover .anim-btn-text::after,
.anim-btn-effect-shimmer:hover .anim-btn-icon::after {
    animation: animBtnShimmer 1.5s infinite;
}

/* 3D Tilt Shift */
.anim-btn-effect-tilt:hover .anim-btn-text {
    transform: perspective(300px) rotateY(-8deg) rotateX(4deg) translateZ(5px);
    box-shadow: -5px 10px 20px rgba(0,0,0,0.15);
}
.anim-btn-effect-tilt:hover .anim-btn-icon {
    transform: perspective(300px) rotateY(12deg) rotateX(-4deg) translateZ(8px);
    box-shadow: 5px 10px 20px rgba(0,0,0,0.15);
}

/* Horizontal Swap */
.anim-btn-effect-swap {
    transition: flex-direction 0.3s ease;
}
.anim-btn-effect-swap:hover {
    flex-direction: row-reverse;
}
.anim-btn-effect-swap:hover .anim-btn-text {
    transform: translateX(2px);
}
.anim-btn-effect-swap:hover .anim-btn-icon {
    transform: translateX(-2px);
}

/* Expand Arrow Block */
.anim-btn-effect-expand:hover .anim-btn-icon {
    padding-left: 28px;
    padding-right: 28px;
}

/* Retro 3D Pop Shadow */
.anim-btn-effect-retro .anim-btn-text,
.anim-btn-effect-retro .anim-btn-icon {
    box-shadow: 0px 0px 0px rgba(0,0,0,1);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.anim-btn-effect-retro:hover .anim-btn-text,
.anim-btn-effect-retro:hover .anim-btn-icon {
    transform: translate(-4px, -4px);
    box-shadow: 4px 4px 0px rgba(0,0,0,1);
}

/* Double Arrow Slide */
.anim-btn-effect-double_slide .anim-btn-icon-inner-alt {
    display: inline-flex;
}
.anim-btn-effect-double_slide:hover .anim-btn-icon-inner {
    transform: translate(30px, -30px);
    opacity: 0;
}
.anim-btn-effect-double_slide:hover .anim-btn-icon-inner-alt {
    transform: translate(0, 0);
    opacity: 1;
}

/* Liquid Ripple Border */
@keyframes animBtnRipple {
    0% { box-shadow: 0 0 0 0 rgba(254, 240, 69, 0.4), 0 0 0 10px rgba(254, 240, 69, 0.4); }
    100% { box-shadow: 0 0 0 10px rgba(254, 240, 69, 0), 0 0 0 20px rgba(254, 240, 69, 0); }
}
.anim-btn-effect-ripple:hover .anim-btn-text,
.anim-btn-effect-ripple:hover .anim-btn-icon {
    animation: animBtnRipple 1.2s infinite;
}

/* Magnetic Gravity Shift */
.anim-btn-effect-gravity:hover .anim-btn-text {
    transform: translateX(-5px);
}
.anim-btn-effect-gravity:hover .anim-btn-icon {
    transform: translateX(5px);
}

/* Text Slide Up Reveal */
.anim-btn-effect-text_reveal .anim-btn-text::before {
    content: attr(data-text);
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    height: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}
.anim-btn-effect-text_reveal:hover .anim-btn-text-content {
    transform: translateY(-150%);
}
.anim-btn-effect-text_reveal:hover .anim-btn-text::before {
    transform: translateY(-100%);
}

/* Neon Sweep Border */
@keyframes neonSweep {
    0% { border-color: #fef045; box-shadow: 0 0 5px #fef045; }
    50% { border-color: #ff007f; box-shadow: 0 0 15px #ff007f; }
    100% { border-color: #fef045; box-shadow: 0 0 5px #fef045; }
}
.anim-btn-effect-neon_sweep .anim-btn-text,
.anim-btn-effect-neon_sweep .anim-btn-icon {
    border: 2px solid transparent;
}
.anim-btn-effect-neon_sweep:hover .anim-btn-text,
.anim-btn-effect-neon_sweep:hover .anim-btn-icon {
    animation: neonSweep 1.5s linear infinite;
}
