.ot-cta-block {
    margin-top: var(--cb-cta-margin-top, 1rem);
    padding-top: var(--cb-cta-padding-top, 1rem);
    position: relative;
    text-align: var(--cb-cta-text-align, center);
}

.ot-cta-text {
    margin-bottom: var(--cb-cta-text-margin-bottom, 1rem);
    font-size: var(--cb-cta-text-font-size, 1.75rem);
}

.ot-cta-tilt {
    display: inline-block;
    transform-style: preserve-3d;
    transition: transform var(--cb-cta-tilt-transition-duration, 300ms) ease,
                filter var(--cb-cta-tilt-transition-duration, 300ms) ease;
    will-change: transform;
    position: relative;
    overflow: hidden;
    border-radius: var(--cb-cta-tilt-border-radius, var(--bs-border-radius));
}

.ot-cta-tilt::before {
    content: "";
    position: absolute;
    inset: -20%;
    background: radial-gradient(
        circle,
        var(--cb-cta-glow-color, rgba(var(--bs-primary-rgb), 0.15)) 0%,
        transparent 70%
    );
    z-index: 0;
    opacity: 0;
    transition: opacity 400ms ease;
    pointer-events: none;
}

.ot-cta-tilt.is-hovering::before {
    opacity: 1;
}

.ot-cta-tilt::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    background: radial-gradient(
        circle at var(--shine-x, 50%) var(--shine-y, 50%),
        var(--cb-cta-shine-color-start, rgba(255, 255, 255, 0.3)) 0%,
        var(--cb-cta-shine-color-mid, rgba(255, 255, 255, 0.08)) 30%,
        transparent 60%
    );
    opacity: 0;
    transition: opacity var(--cb-cta-tilt-transition-duration, 300ms) ease;
    pointer-events: none;
    border-radius: inherit;
}

.ot-cta-tilt.is-hovering::after {
    opacity: 1;
}

.ot-cta-tilt .btn {
    position: relative;
    z-index: 1;
    border-radius: inherit;
}