.glitch-text {
    position: relative;
}

.glitch-text::before,
.glitch-text::after {
    content: attr(data-text);
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, var(--primary), var(--secondary));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.glitch-text::before {
    left: 2px;
    text-shadow: -1px 0 red;
    animation: glitch-animation 2s infinite linear alternate-reverse;
}

.glitch-text::after {
    left: -2px;
    text-shadow: 1px 0 blue;
    animation: glitch-animation 3s infinite linear alternate-reverse;
}

@keyframes glitch-animation {
    0% {
        clip-path: inset(0% 0% 98% 0%);
    }
    5% {
        clip-path: inset(93% 0% 1% 0%);
    }
    10% {
        clip-path: inset(25% 0% 58% 0%);
    }
    15% {
        clip-path: inset(75% 0% 5% 0%);
    }
    20% {
        clip-path: inset(46% 0% 14% 0%);
    }
    25% {
        clip-path: inset(3% 0% 29% 0%);
    }
    30% {
        clip-path: inset(82% 0% 4% 0%);
    }
    35% {
        clip-path: inset(34% 0% 51% 0%);
    }
    40% {
        clip-path: inset(37% 0% 3% 0%);
    }
    45% {
        clip-path: inset(53% 0% 5% 0%);
    }
    50% {
        clip-path: inset(9% 0% 37% 0%);
    }
    55% {
        clip-path: inset(23% 0% 6% 0%);
    }
    60% {
        clip-path: inset(75% 0% 8% 0%);
    }
    65% {
        clip-path: inset(48% 0% 23% 0%);
    }
    70% {
        clip-path: inset(37% 0% 29% 0%);
    }
    75% {
        clip-path: inset(3% 0% 90% 0%);
    }
    80% {
        clip-path: inset(45% 0% 16% 0%);
    }
    85% {
        clip-path: inset(24% 0% 63% 0%);
    }
    90% {
        clip-path: inset(60% 0% 8% 0%);
    }
    95% {
        clip-path: inset(2% 0% 96% 0%);
    }
    100% {
        clip-path: inset(91% 0% 4% 0%);
    }
}