This seems to be a very simple approach to grid layouts. (Source)

<div class="container">
  <header>
    <!-- Header content -->
  </header>
 
  <nav>
    <!-- Navigation -->
  </nav>
 
  <main>
    <!-- Main content -->
  </main>
 
  <aside>
    <!-- Sidebar / Ads -->
  </aside>
 
  <footer>
    <!-- Footer content -->
  </footer>
</div>
.container {
  display: grid;
 
  grid-template-areas:
    "header header header"
    "nav content side"
    "footer footer footer";
 
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  grid-gap: 10px;
 
  height: 100vh;
}
 
header {
  grid-area: header;
}
 
nav {
  grid-area: nav;
  margin-left: 0.5rem;
}
 
main {
  grid-area: content;
}
 
aside {
  grid-area: side;
  margin-right: 0.5rem;
}
 
footer {
  grid-area: footer;
}
 
@media (max-width: 768px) {
  .container {
    grid-template-areas:
      "header"
      "nav"
      "content"
      "side"
      "footer";
 
    grid-template-columns: 1fr;
    grid-template-rows:
      auto /* Header */
      minmax(75px, auto) /* Nav */
      1fr /* Content */
      minmax(75px, auto) /* Sidebar */
      auto; /* Footer */
  }
 
  nav, aside {
    margin: 0;
  }
}