У вас написано grid-template-rows: 1fr max-content;
А теперь посмотрите что у вас там с дочерними элементами в body и кто на самом деле должен растянуться на всё оставшееся место.
И высоту body задайте как min-height: 100vh для простоты.
Алексей, если вы используете абсолют для футера, то получаете обычные минусы абсолюта и к этому ещё нужен скрипт, проверяющий высоту футера, чтобы сделать такой же паддинг, чтобы футер не налез на контент. Или хуже, накостылять фиксированной высотой.
Зачем рекомендовать весь этот бардак, при наличии флексов и гридов?
Если у вас правильно написан код, то этот вариант должен помочь, всегда им и пользуюсь(первый способ). Кстати, на мобилках сайт слетает. (А у футера точно не position:absolute? Как-то странно он себя ведет)