Идея без изменения html состоит в том, чтобы переместить анимацию в псевдоэлемент, и вы избежите потери при наведении, поскольку основной элемент не будет вращаться:
Вы также можете упростить свою логику, используя переходвместо анимации:
p a {
color: #000;
display: inline-block;
height: 50px;
z-index:0;
position:relative;
color:transparent;
}
p a:before {
content:attr(data-text);
position:absolute;
z-index:-1;
top:0;
left:0;
right:0;
bottom:0;
color:#000;
transition:transform 0.9s linear;
}
p a:focus::before,
p a:hover::before {
transform: rotateX(360deg);
background: radial-gradient(ellipse at center, #777 0%, #222 100%);
color: #fff;
}
<p>some content here <a href="admin/" data-text="Admin">Admin</a> and more here</p>