тут может и нет absolute вообще.
карточка сама по себе - элемент flex-контейнера. А то что на скрине, при ховере - ее внутренник. Позиционируем относительно карточки, а уж absolute или нет - по вкусу
потому что transform только один, а у вас в нем был translateY а стал rotate.
Так что либо пишете оба, как у RAX7, либо применяете трансформации к разным сущностям.
Т.е. если translateY к обертке например (тогда вместо :after надо некий блок), а rotate уже к стрелке
Потому что минимальное значение для детей в flex&grid берется по контенту.
Т.е. что бы не вылазило, переопределяем минимальное значение, в данном случае - высоту. .parent > * { min-height: 0; }
Далее аналогично для внутреников правой... .parent .item-2 div { min-height: 0; }
можно писать стили для условного класса .button так, чтобы они работали и для A, и для BUTTON, и даже для INPUT (с type = button) одинаково. Хотя, конечно, сейчас такое оформление бывает, что инпуту все детали не прикрутишь, ну да и ладно - ссылки или button должно хватить для всего. А далее в верстке/на проекте применяешь с этим классом нужный тэг по вкусу/желанию/назначению.
а насчет с помощью какие правил делать - так зависит от задачи. "просто кнопке" хватит паддингов, если кнопку надо ровнять по высоте с инпутами или еще чем - надо фиксировать высоту. всегда - от задачи.
можно применить jquery.gray.js
это по сути готовый компонент, у него обычный css с фильтрами и прочим, как у вас. А ie10+ он детектит встроенным модернайзером и генерит svg. всего 6 кб