@keyframes fill_to_right {
    0% { width: 0%; }
    100% { width: calc(100% + 3rem); }
}
@keyframes pulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.15); }
    100% { transform: scale(1); }
}

@keyframes blink {
    0% { opacity: 1; }
    50% { opacity: 0; }
    100% { opacity: 1; }
}

@keyframes shake {
    0% { transform: translateX(0); }
    10% { transform: translateX(-10px); }
    20% { transform: translateX(10px); }
    30% { transform: translateX(-10px); }
    40% { transform: translateX(10px); }
    50% { transform: translateX(-10px); }
    60% { transform: translateX(5px); }
    70% { transform: translateX(-5px); }
    80% { transform: translateX(3px); }
    90% { transform: translateX(-3px); }
    100% { transform: translateX(0); }
}

@keyframes loginShake {
    0% { transform: translate(1px, 1px); }
    10% { transform: translate(-1px, -2px); }
    20% { transform: translate(-3px, 0px); }
    30% { transform: translate(3px, 2px); }
    40% { transform: translate(1px, -1px); }
    50% { transform: translate(-1px, 2px); }
    60% { transform: translate(-3px, 1px); }
    70% { transform: translate(3px, 1px); }
    80% { transform: translate(-1px, -1px); }
    90% { transform: translate(1px, 2px); }
    100% { transform: translate(1px, -2px); }
}
