﻿.glitch {
    color: #fff;
    font-size: clamp(2rem, 10vw, 8rem);
    white-space: nowrap;
    font-weight: 900;
    position: relative;
    margin: 0 auto;
    user-select: none;
    cursor: pointer;
}

    .glitch::after,
    .glitch::before {
        content: attr(data-text);
        position: absolute;
        top: 0;
        color: #fff;
        background-color: #060010;
        overflow: hidden;
        clip-path: inset(0 0 0 0);
    }

    .glitch:not(.enable-on-hover)::after {
        left: 10px;
        text-shadow: var(--after-shadow, -10px 0 red);
        animation: animate-glitch var(--after-duration, 3s) infinite linear alternate-reverse;
    }

    .glitch:not(.enable-on-hover)::before {
        left: -10px;
        text-shadow: var(--before-shadow, 10px 0 cyan);
        animation: animate-glitch var(--before-duration, 2s) infinite linear alternate-reverse;
    }

    .glitch.enable-on-hover::after,
    .glitch.enable-on-hover::before {
        content: '';
        opacity: 0;
        animation: none;
    }

    .glitch.enable-on-hover:hover::after {
        content: attr(data-text);
        opacity: 1;
        left: 10px;
        text-shadow: var(--after-shadow, -10px 0 red);
        animation: animate-glitch var(--after-duration, 3s) infinite linear alternate-reverse;
    }

    .glitch.enable-on-hover:hover::before {
        content: attr(data-text);
        opacity: 1;
        left: -10px;
        text-shadow: var(--before-shadow, 10px 0 cyan);
        animation: animate-glitch var(--before-duration, 2s) infinite linear alternate-reverse;
    }

@keyframes animate-glitch {
    0% {
        clip-path: inset(20% 0 50% 0);
    }

    5% {
        clip-path: inset(10% 0 60% 0);
    }

    10% {
        clip-path: inset(15% 0 55% 0);
    }

    15% {
        clip-path: inset(25% 0 35% 0);
    }

    20% {
        clip-path: inset(30% 0 40% 0);
    }

    25% {
        clip-path: inset(40% 0 20% 0);
    }

    30% {
        clip-path: inset(10% 0 60% 0);
    }

    35% {
        clip-path: inset(15% 0 55% 0);
    }

    40% {
        clip-path: inset(25% 0 35% 0);
    }

    45% {
        clip-path: inset(30% 0 40% 0);
    }

    50% {
        clip-path: inset(20% 0 50% 0);
    }

    55% {
        clip-path: inset(10% 0 60% 0);
    }

    60% {
        clip-path: inset(15% 0 55% 0);
    }

    65% {
        clip-path: inset(25% 0 35% 0);
    }

    70% {
        clip-path: inset(30% 0 40% 0);
    }

    75% {
        clip-path: inset(40% 0 20% 0);
    }

    80% {
        clip-path: inset(20% 0 50% 0);
    }

    85% {
        clip-path: inset(10% 0 60% 0);
    }

    90% {
        clip-path: inset(15% 0 55% 0);
    }

    95% {
        clip-path: inset(25% 0 35% 0);
    }

    100% {
        clip-path: inset(30% 0 40% 0);
    }
}
