.nb-blurry-button {
    z-index: 1;
    -webkit-tap-highlight-color: transparent;
    -webkit-user-select: none;
    user-select: none;
    text-decoration: none;
    position: relative;
    cursor: pointer;
    width: fit-content;

    --elastic-ease: linear( 0, 0.2178 2.1%, 1.1144 8.49%, 1.2959 10.7%, 1.3463 11.81%, 1.3705 12.94%, 1.3726, 1.3643 14.48%, 1.3151 16.2%, 1.0317 21.81%, 0.941 24.01%, 0.8912 25.91%, 0.8694 27.84%, 0.8698 29.21%, 0.8824 30.71%, 1.0122 38.33%, 1.0357, 1.046 42.71%, 1.0416 45.7%, 0.9961 53.26%, 0.9839 57.54%, 0.9853 60.71%, 1.0012 68.14%, 1.0056 72.24%, 0.9981 86.66%, 1 100% );
    --elastic-ease-out: linear( 0, 0.5737 7.6%, 0.8382 11.87%, 0.9463 14.19%, 1.0292 16.54%, 1.0886 18.97%, 1.1258 21.53%, 1.137 22.97%, 1.1424 24.48%, 1.1423 26.1%, 1.1366 27.86%, 1.1165 31.01%, 1.0507 38.62%, 1.0219 42.57%, 0.9995 46.99%, 0.9872 51.63%, 0.9842 58.77%, 1.0011 81.26%, 1 );
    --opacity-ease: ease-out;
    --blur-ease: cubic-bezier(0.83, 0, 0.17, 1);
}
.nb-blurry-button::before {
    content: "";
    display: block;
    position: absolute;
}
.nb-blurry-button::after {
    content: attr(data-text);
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    inset: 0;
    z-index: 1;
}
.nb-blurry-button__container {
    opacity: 0;
    display: block;
}
.nb-blurry-button__text {
    display: block;
}
.nb-blurry-button__background {
    z-index: -1;
    width: 100%;
    height: 100%;
    position: absolute;
    inset: 0%;
}
@media (hover: hover) and (pointer: fine) {
    .nb-blurry-button::after {
        transform: scale(1.05);
        filter: blur(var(--blur));
        opacity: 0;
        transition: transform var(--blur-duration) var(--elastic-ease), opacity calc(var(--blur-duration) * 0.25) ease-out, filter calc(var(--blur-duration) * 0.15) var(--blur-ease);
    }
    .nb-blurry-button__container {
        transition: transform calc(var(--blur-duration) * 0.65) var(--elastic-ease-out), opacity calc(var(--blur-duration) * 0.25) ease-out;
        opacity: 1;
    }
    .nb-blurry-button:hover .nb-blurry-button__container,
    .nb-blurry-button:focus-visible .nb-blurry-button__container {
        transform: scale(var(--blur-scale));
        opacity: 0;
    }
    .nb-blurry-button:hover::after,
    .nb-blurry-button:focus-visible::after {
        transform: scale(1);
        filter: blur(0em);
        opacity: 1;
    }
}