<div class="root">
  <div class="header">Header</div>
  <div class="banner">Banner</div>
  <div class="main">Main</div>
  <div class="side">Side</div>
  <div class="footer">Footer</div>
</div>
* {
  box-sizing: border-box;
  font-weight: bold;
  font-family: sans-serif;
}
.root {
  border: 4px solid #000;
  padding: 12px;
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 12px;
  
  > * {
    border: 4px solid #000;
    padding: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
.header {
  background-color: #acf;
  grid-column-end: span 2;
}
.banner {
  background-color: #fca;
  height: 100px;
}
.main {
  background-color: #faa;
  height: 300px;
}
.side {
  background-color: #afa;
  grid-row: 2 / span 2;
  grid-column-start: 2;
}
.footer {
  background-color: #aff;
  grid-column-end: span 2;
}

@media screen and (max-width: 525px) {
  .root {
    grid-template-columns: 1fr;
  }
  .header, .footer {
    grid-column-end: auto;
  }
  .side {
    grid-row-start: auto;
    grid-row-end: auto;
    grid-column-start: auto;
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.