.ripple-btn-ad098fed {
    --btn-text-color: #333;
    --btn-bg-color: #f3f4f6;
    --btn-border-color: #d1d5db;
    --btn-hover-text-color: #ffffff;
    --btn-hover-border-color: #16a34a;
    --btn-ripple-color: #16a34a;
    --btn-hover-scale: 1;
    --btn-hover-lift: 0px;
    --btn-ripple-duration: 0.55s;
    --btn-icon-normal-rotate: 0deg;
    --btn-icon-normal-translate-x: 0px;
    --btn-icon-normal-translate-y: 0px;
    --btn-icon-hover-rotate: 45deg;
    --btn-icon-hover-translate-x: 5px;
    --btn-icon-hover-translate-y: 0px;

    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 15px 30px;
    border: 2px solid var(--btn-border-color);
    background-color: var(--btn-bg-color);
    color: var(--btn-text-color);
    border-radius: 8px;
    overflow: hidden;
    text-decoration: none;
    transition: color 0.3s ease, border-color 0.3s ease, transform 0.3s ease, box-shadow 0.3s ease;
    cursor: pointer;
}

.ripple-btn-ad098fed:hover {
    color: var(--btn-hover-text-color);
    border-color: var(--btn-hover-border-color);
    transform: scale(var(--btn-hover-scale)) translateY(var(--btn-hover-lift));
}

.btn-content-ad098fed {
    position: relative;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.btn-text-ad098fed {
    position: relative;
}

.btn-icon-ad098fed {
    display: inline-flex;
    transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1);
    transform-origin: center;
    transform: translateX(var(--btn-icon-normal-translate-x)) translateY(var(--btn-icon-normal-translate-y)) rotate(var(--btn-icon-normal-rotate));
    width: 1em; /* Fix layout shift */
    height: 1em; /* Fix layout shift */
    align-items: center;
    justify-content: center;
}

/* Ensure inner SVG/i tag strictly respects parent container */
.btn-icon-ad098fed svg,
.btn-icon-ad098fed i {
    width: 100% !important; /* Force to container size */
    height: 100% !important; /* Force to container size */
    max-width: 1em; /* Prevent native SVG size bleeding */
    max-height: 1em; /* Prevent native SVG size bleeding */
    fill: currentColor;
    display: block; /* Remove inline spacing issues */
}

.ripple-btn-ad098fed:hover .btn-icon-ad098fed {
    transform: translateX(var(--btn-icon-hover-translate-x)) translateY(var(--btn-icon-hover-translate-y)) rotate(var(--btn-icon-hover-rotate));
}

.ripple-circle-ad098fed {
    position: absolute;
    width: 20px;
    height: 20px;
    background-color: var(--btn-ripple-color);
    border-radius: 50%;
    transform: translate(-50%, -50%) scale(0);
    z-index: 1;
    pointer-events: none;
    transition: transform 450ms cubic-bezier(0.22, 1, 0.36, 1);
}

.ripple-btn-ad098fed.is-hovering .ripple-circle-ad098fed {
    transition: transform var(--btn-ripple-duration) cubic-bezier(0.22, 1, 0.36, 1);
    transform: translate(-50%, -50%) scale(25);
}
