body {
    display: grid;
    grid-template-rows: auto 1fr auto;
    grid-template-columns: 1fr;
    grid-template-areas:
        "header"
        "main"
        "footer";

    width: 100%;
    height: 100vh;
}

header { grid-area: header; }
main { grid-area: main; justify-self: stretch; }
footer { grid-area: footer; }