I'm trying to build a web layout with a title bar, a nav header, a footer and a main content area in the middle (split in two for a sidebar and main view).
I intend to use CSS Grid layout for it. My current code manages it all, except: The main content (and sidebar) adjust to its content. And that's not what I want.
How can I make that 3rd grid row fill all remaining vertical space?
* {
  box-sizing: border-box;
}
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-template-rows: min-content min-content auto min-content;
  grid-gap: 10px;
  grid-template-areas: "header header" "nav nav" "sidebar main" "footer footer";
}
.title {
  grid-area: header;
  background-color: #1BC336;
}
.navigation {
  grid-area: nav;
  background-color: #C3A21B;
}
.sidebar {
  grid-area: sidebar;
  background-color: gold;
  overflow: auto;
}
.main {
  grid-area: main;
  background-color: #1BC3B9;
  overflow: auto;
}
.footer {
  grid-area: footer;
  background-color: #5C1BC3;
}<div class="grid">
  <div class="title">
    <h3>Title Bar</h1>
  </div>
  <div class="navigation">Navbar</div>
  <div class="sidebar">Sidebar:<br>Info-type stuff about what's currently being shown in main</div>
  <div class="footer">Footer</div>
  <div class="main">
    <h1>Main content</h2><br>Should occupy all the remaining space. <br>Test<br>Test<br>Test<br>Test<br>Test</div>
</div> 
     
    