You could do this instead:
/* Desktop */
@media (min-width: 769px) {
#page {
min-height: calc(100vh - 350px);
}
}
/* Mobile
@media (max-width: 768px) {
#page {
min-height: calc(100vh - 294px);
}
}
Which uses a different height for the deducted elements ( header , nav , footer ) on mobile.
But the problem is the height of the header changes as the screen size reduces due to the logo rescaling.
Theres no simple and efficient fix to that other then using a fixed size header for mobile.