Там всё неправильно.
Во-первых transition надо указывать для анимируемого элемента, а не для контейнера - оно не наследуется! То есть, для .hover
Во-вторых, transition так не указывается - для каждого свойства надо указывать отдельно, то есть transition: opacity .2s linear, transform .3s easy-in-out, например. В данном случае, лучше укороченную запись для all применить: transition: .2s easy-out
В-третьих, для плавной работы transition нельзя для "свёрнутого состояния" указывать display: none - можно, разве что visibility: hidden для старых ослов указать, по спецификации видимость включается сразу, а выключается в конце трансформации, да и блок как бы отображён, только не показывается, по этому на его прорисовку тратится намного меньше времени. И все размеры, отступы и цвета должны быть заданы заранее - при ховере он только должен выдвигаться и "проявляться" из прозрачного состояния. Ну, и двигать лучше с помощью transform - так плавнее намного
Вот так примерно:
codepen.io/anon/pen/QyGqqz