Puedes usar tal vez
animation-direction que tiene un valor
reverse, tal vez haciendo una animación en el estado natural y otra cuando se pase el mouse por encima. Pero tal vez tengas algún problema con que no se realice la animación al sacarlo, ya que igual choca ese
forwards, y sin eso pues no se mantiene.

Haré alguna prueba por la tarde.
Si la animación sólo tuviera "una vuelta" podrías usar
cubic-bezier() para
timing-function.