Я юзаю calc, но динозавры его могут не поддерживать, зато без js.
В вашем случае:
height: calc(100vh - 6rem);
Так как margin: 3rem; То плюсуем верх и низ и убираем 6rem
Вся прелесть calc что он умеет работать с разными величинами
В принципе неплохая поддержка:
https://caniuse.com/#search=calc