* {
    cursor: none !important;
    user-select: none !important;
}

*::before,
*::after,
*:hover,
*:active,
*:focus,
*:visited,
*:focus-visible,
*:focus-within {
    cursor: none !important;
}

input[type="text"],
input[type="email"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="url"],
input[type="number"],
textarea {
    cursor: none !important;
    user-select: text !important;
}

a,
button,
[role="button"],
.clickable,
img,
svg,
path,
g,
rect,
circle,
ellipse,
line,
polyline,
polygon,
i,
.fa,
.fab,
.fas,
.far,
.fal,
div[id*="lottie"],
canvas,
iframe,
video,
audio,
embed,
object,
select,
option,
label,
span,
p,
h1,
h2,
h3,
h4,
h5,
h6 {
    cursor: none !important;
}

a:hover,
a:active,
a:focus,
a:visited,
button:hover,
button:active,
button:focus,
[role="button"]:hover,
[role="button"]:active,
[role="button"]:focus,
.clickable:hover,
.clickable:active,
.clickable:focus,
img:hover,
img:active,
img:focus,
svg:hover,
svg:active,
svg:focus,
path:hover,
path:active,
path:focus,
g:hover,
g:active,
g:focus,
i:hover,
i:active,
i:focus,
.fa:hover,
.fa:active,
.fa:focus,
.fab:hover,
.fab:active,
.fab:focus,
.fas:hover,
.fas:active,
.fas:focus,
.far:hover,
.far:active,
.far:focus,
.fal:hover,
.fal:active,
.fal:focus,
div[id*="lottie"]:hover,
div[id*="lottie"]:active,
div[id*="lottie"]:focus {
    cursor: none !important;
}

.custom-cursor {
    position: fixed;
    width: 26px;
    height: 26px;
    pointer-events: none;
    z-index: 999999;
    transform: translate(-50%, -50%);
    transition:
        width 0.15s ease-out,
        height 0.15s ease-out,
        opacity 0.3s ease;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    opacity: 1;
    will-change: transform;
}

.custom-cursor.default {
    background-image: url("../assets/cursors/default.svg");
    width: 26px;
    height: 26px;
}

.custom-cursor.hover {
    background-image: url("../assets/cursors/hover.svg");
    width: 33px;
    height: 33px;
}

.custom-cursor.click {
    background-image: url("../assets/cursors/click.svg");
    width: 34px;
    height: 34px;
    animation: clickPulse 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes clickPulse {
    0% {
        transform: translate(-50%, -50%) scale(1) rotate(0deg);
    }
    50% {
        transform: translate(-50%, -50%) scale(0.8) rotate(-5deg);
    }
    100% {
        transform: translate(-50%, -50%) scale(1) rotate(0deg);
    }
}
