В целом правильный, кроме фиксированной высоты у блоков. Надо заменить на min-height.
А над оптимизацией кода еще надо поработать. Много повторяющихся свойств у элементов.
Например, записей такого рода:
В качестве примера можете посмотреть этот вариант: 27/32: Как решить проблему выпадающего элемента в испытании?
Там конечно тоже есть ошибки, но чтобы понять принцип группировки свойств, он сгодится.