Banny_Boom: С выравниваем все не так просто. Если бы высота каждого блока продукта известно - можно выравнивать через line-height равный высоте блока (за вычетом паддинга). Если высота неизвестна, то самый простой способ это использование табличного выравнивания, потому-что вариант с transform: translateY(-50%) сделает текст размазанным.
Еще как вариант можно задавать top: 50% и делать margin-top: -font-size/2 - padding-bottom/2 но это весьма жуткий вариант, и если названия будут длинными и займут 2 строчки, то этот вариант развалится (а вот табличный будет работать).
Banny_Boom: когда высота неизвестна, лучшие варианты выравнивания текста это либо flexbox, либо табличка (то что вы и написали в уточнении). Попробовал сейчас другие способы - везде проблемы.