@keyframes shake {
    0% { transform: translate(0.5px, 0.5px) rotate(0deg); }
    25% { transform: translate(-0.5px, -0.5px) rotate(-0.2deg); }
    50% { transform: translate(-0.5px, 0.5px) rotate(0.2deg); }
    75% { transform: translate(0.5px, -0.5px) rotate(-0.2deg); }
    100% { transform: translate(0, 0) rotate(0deg); }
}

@keyframes impact-reveal {
    0% { opacity: 0; transform: scale(1.02) translateY(15px); filter: contrast(1.1); }
    100% { opacity: 1; transform: scale(1) translateY(0); filter: contrast(1); }
}

.impact-ready {
    opacity: 0;
    transition: opacity 0.3s ease-out;
}

.impact-active {
    opacity: 1 !important;
    animation: impact-reveal 0.6s cubic-bezier(0.23, 1, 0.32, 1) forwards;
}

.page-shake {
    animation: shake 0.2s cubic-bezier(.36,.07,.19,.97) both;
}

/* Engine vibration effect */
.btn-press:hover, .hover-shake:hover {
    animation: shake 0.3s infinite;
}
