Вообще, это сложность для веб, управлять не прямоугольной графикой.
Как вариант, внутри разместить круглый синий круглый блок (border-radius 50%), который будет намного больше родительского контейнера, и будет скрыт за его границами, т.е. визуально будет видно прямоугольник. При наведении делается transform: scale, и он уменьшается до нужных размеров. Фон родительского контейнера сделать серым.
Правда, всё зависит от анимации которая вам требуется.
И, вот этот текст, чтобы под блоком был белый, а дальше черный. Попробуйте вот это:
https://developer.mozilla.org/en-US/docs/Web/CSS/f...