/* Glitch Effects */
@keyframes glitch-anim-1 {
    0% {
        clip-path: inset(20% 0 80% 0);
        transform: translate(-2px, 1px);
    }

    20% {
        clip-path: inset(60% 0 10% 0);
        transform: translate(2px, -1px);
    }

    40% {
        clip-path: inset(40% 0 50% 0);
        transform: translate(-2px, 2px);
    }

    60% {
        clip-path: inset(80% 0 5% 0);
        transform: translate(2px, -2px);
    }

    80% {
        clip-path: inset(10% 0 70% 0);
        transform: translate(-1px, 1px);
    }

    100% {
        clip-path: inset(30% 0 50% 0);
        transform: translate(1px, -1px);
    }
}

@keyframes glitch-flash {
    0% {
        background-color: var(--bg-color);
    }

    10% {
        background-color: #220000;
    }

    /* Flash Red */
    20% {
        background-color: var(--bg-color);
    }

    100% {
        background-color: var(--bg-color);
    }
}

body.glitch-active {
    animation: glitch-flash 0.2s infinite;
}

body.glitch-active .app-container {
    animation: glitch-anim-1 0.3s infinite linear alternate-reverse;
    filter: hue-rotate(90deg) contrast(1.5);
}

/* Shake Effect for Medium Anger */
@keyframes shake {
    0% {
        transform: translate(1px, 1px) rotate(0deg);
    }

    10% {
        transform: translate(-1px, -2px) rotate(-1deg);
    }

    20% {
        transform: translate(-3px, 0px) rotate(1deg);
    }

    30% {
        transform: translate(3px, 2px) rotate(0deg);
    }

    40% {
        transform: translate(1px, -1px) rotate(1deg);
    }

    50% {
        transform: translate(-1px, 2px) rotate(-1deg);
    }

    60% {
        transform: translate(-3px, 1px) rotate(0deg);
    }

    70% {
        transform: translate(3px, 1px) rotate(-1deg);
    }

    80% {
        transform: translate(-1px, -1px) rotate(1deg);
    }

    90% {
        transform: translate(1px, 2px) rotate(0deg);
    }

    100% {
        transform: translate(1px, -2px) rotate(-1deg);
    }
}

body.shake-active .app-container {
    animation: shake 0.5s;
    animation-iteration-count: 1;
}