I am trying to achieve the following Layout, as per screenshot.

Main features are
- Screen divided into 3 regions (columns);
- Left / Right columns are fixed width;
- Middle column expands as per Browser width
- Right column is subdivided into two regions
- Bottom region is fixed size, always at the bottom
- Top region expands as per Browser height
Using HTML-tables took me about 2 hours to generate the above screenshot, with the above features.
After stuffing around with CSS for two days, I cannot get it looking as above, my attempt at CSS and associated screenshot follow below:
<html>
<head>
<title>My Layout</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
body{
height:100%;
background:beige;
}
#header {
width:100%;
height:60px;
text-align:center;
background:#A7C942;
color:#fff;
float:left;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
font-size:2em;
}
#leftDiv {
float:left;
width:150px;
height:90%;
background:aquamarine;
}
#midDiv {
float:left;
width:auto;
height:90%;
background:lightsalmon;
display:block;
}
#rightDiv {
float:right;
width:365px;
height:90%;
background:green;
display:block;
}
#topRow {
background-color:lightgoldenrodyellow;
}
#bottomRow {
background-color:lightpink;
height:200px;
}
</style>
</head>
<body>
<div id="body">
<div id="main">
<div id="header">my header</div>
<div id="leftDiv">
<p>LEFT</p>
</div>
<div id="midDiv">
<p>MIDDLE</p>
</div>
<div id="rightDiv">
<p>RIGHT</p>
<div id="topRow">
TOP
</div>
<div id="bottomRow">
BOTTOM
</div>
</div>
</div>
</div>
</body>
</html>
Screenshot with CSS:

Problems with the CSS attempt are:
- Middle col does not expand (salmon colored part);
- instead white color appears out of nowhere;
- cannot get pink region to stay at the bottom always
- Cannot get yellow region to stretch up and down
- unwanted wrapping (i.e. the right region goes under left, middle regions)
Therefore, I am about to unleash my solution using tables, unless some die-hard CSS fanatic comes to the rescue with a working answer:-)
Update Great answers, at the time of this update there were 4. I tried out all 4 on Firefox and Chrome, and every answer is acceptable. But i can only choose one as the accepted answer, and i will go with the one that's plain and simple using only css and absolute positioning (no flexbox nor css-tables).
Thank you muchly to @matthewelsom, @Pangloss, @Shrinivas, @Paulie_D; I am sure anyone who stumbles upon your answers will find it useful for their use case. Upvotes for everyone, your efforts are appreciated!