Заполнение (или поле) и CSS-сетка - это то, что вам нужно.
У меня похожий дизайн на моем веб-сайте для карточек материалов, которые я создал:
![enter image description here](https://i.stack.imgur.com/YMnju.png)
Взгляните, например, на строку № 2. Я добавил больше контента на левую карточку, но все оставалось выровненным с содержанием правой карточки.
Весь этот макет состоит из сеток внутри сеток. У вас есть внешняя сетка в вашем примере;все, что вам нужно сделать, это также сделать сами сетки.
Вот как это выглядит, когда вы проверяете это:
![enter image description here](https://i.stack.imgur.com/xdetp.png)
А вот что вы хотите на своем сайте для карточек:
display: grid;
grid-template-rows: 1fr max-content;
До:
![enter image description here](https://i.stack.imgur.com/cF4Ug.png)
После:
![enter image description here](https://i.stack.imgur.com/jhgAb.png)
Добавление поля к нижней части кнопок здесь тривиально:
margin-bottom: 30px;
justify-self: center;
![enter image description here](https://i.stack.imgur.com/PZEsZ.png)
Вы можете использовать аналогичную стратегию для выравнивания цен, отделяя их от контейнера, чтобы они находились в еще одном ряду (в настоящее время ваши карты имеют только две «строки»):
![enter image description here](https://i.stack.imgur.com/nnN3W.png)
Игнорируйте третью и четвертую карты и посмотрите только на две левые;оба они имеют три ряда. Первая строка - это содержимое, вторая строка - цена, а третья строка - кнопка. Измените свои карты на:
display: grid;
grid-template-columns: 1fr max-content max-content;
И, конечно, вам нужно будет переместить цену span
, чтобы она располагалась прямо над кнопкой в документе:
![enter image description here](https://i.stack.imgur.com/t6mni.png)