Квадратный блок на CSS можно достичь несколькими хаками, самый, как мне кажется простой - это сделать паддинг в 100% по высоте у псевдоэлемента. Есть еще вариант с подкладкой квадратного элемента свг и растягиванием по ширине контейнера, а контент делать абсолютным по отношению к родителю с свг, но псевдоэлемент проще
.elem {
...
position: relative;
}
.elem::before {
content: '';
display: block;
height: 100%;
padding-top: 100%;
}
Ну и реализация с свг и картинкой
https://codepen.io/irodger/pen/ZydPoZ (изменяйте экран кодпена, чтоб убедиться в адаптивности квадрата)