ICUI4CU, покажите всю задачу. Потому что пока не понятно назначение wrapper и его ширины.
В общем, на css это можно сделать через aspect-ratio, если устраивает поддержка.
У родителя не должно быть ширины, а только высота 100% и aspect-ratio 1.
Инпуту ширину 100%.
Ну там всякие фишечки, чтобы эта обертка не мешалась типа pointer-events
miss_allegory, оно могло бы сработать, если были бы разные теги через nth-of-type, но с классами так не работает.
Пишите js, если не знаете точного количества элементов.
Сначала, что "первые 2 блока имеют класс .mode--pc".
А потом .block:not(.mode--pc):first-child хотите задать border-radius первому элементу, если он не mode--pc.
Но из первой фразы следует, что так не бывает, потому что первый всегда с этим классом.
.mode--pc + .block:not(.mode--pc)