body.is-cursor-active {
    cursor: none !important;
}

body.is-cursor-active * {
    cursor: none !important;
}

.cursor {
    position: fixed;
    pointer-events: none;
    z-index: 10000;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: transform 0.1s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.cursor__wrapper {
    display: flex;
    justify-content: center;
    align-items: center;
    transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.cursor__follower {
    position: absolute;
    background-color: #888888;
    opacity: 0.25;
    border-radius: 100%;
    width: 1.5rem;
    height: 1.5rem;
    transition: transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.3s cubic-bezier(0.165, 0.84, 0.44, 1), background-color 0.1s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.cursor__arrows {
    position: absolute;
    display: flex;
    opacity: 0;
    transform: scale(0.7) rotate(40deg);
    transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.cursor__arrows > * {
    position: relative;
    color: black;
    stroke-width: 1;
}

.cursor__arrows > *:first-child {
    left: -0.625rem;
}

.cursor__arrows > *:last-child {
    right: -0.625rem;
}

.cursor__label {
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    letter-spacing: 0.05em;
    transform: scale(0);
    will-change: transform, opacity;
    transition: transform 0.5s cubic-bezier(0.165, 0.84, 0.44, 1), opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.cursor__icon {
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;
    color: white;
    transform: scale(0);
    will-change: transform, opacity;
    transition: transform 500ms cubic-bezier(0.165, 0.84, 0.44, 1), opacity 500ms cubic-bezier(0.165, 0.84, 0.44, 1);
}

.cursor__icon svg {
    width: 48px;
    height: 48px;
    stroke-width: 0.75;
}

.cursor {
    visibility: hidden;
}

.cursor.is-enabled {
    visibility: visible;
}

.cursor.is-hidden .cursor__wrapper {
    transform: scale(0) !important;
}

.cursor.is-mouse-down .cursor__wrapper {
    transform: scale(0.8);
}

.cursor.is-active .cursor__follower {
    box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.7);
    transform: scale(3.6);
    opacity: 0.25;
}

.cursor.is-active.has-label .cursor__follower {
    background-color: black;
    opacity: 0.8;
}

.cursor.is-active.has-label .cursor__label {
    transform: scale(1);
}

.cursor.is-active.has-icon .cursor__follower {
    background-color: black;
    opacity: 0.8;
}

.cursor.is-active.has-icon .cursor__icon {
    transform: scale(1);
}