It depends on what the eventual content will be.
If it is just coloured rectangular blocks, what you have may be fine.
But if those blocks contained body text, columns that are so narrow they can barely contain a single word, let alone a decent length line of text, will not make very good reading.
Likewise, I canβt imagine them being much good for image content either.
It seems likely you will want an alternative layout for small screens.
Grids and Flex boxes are pretty powerful CSS tools
<main id="content" class="mainStyle"><!-- Part of a grid -->
<div class="twoBoxes"> <!-- flex boxes -->
<div class="box">
</div>
<div class="box dkBlueGray">
<?= $calendar ?>
</div>
</div>
</main>
I design for smaller screens first then work my way up to the larger screens as you can control grids and flex thru media queries which makes it easier in my opinion β
Just a few snippets in what I mean
@media screen and (min-width: 50em) {
@supports (display: flex) {
and this
@supports (grid-area: auto) {
@media screen and (min-width: 75em) {
The benefit of using CSS grid would be that you could have a linear set of divs rather than the nested approach that flexbox requires. This make re-ordering for different screen sizes much easier as each element can be moved independently unlike flex where you have nested sections that can never escape from their section.
e.g. a grid layout for your first example would look like this.
The html is so much cleaner and easier to manage. (Note the classnames are not semantic but easier to understand in a demo. In production they should be specific to the content areas because of course you will be moving them around so left and right are immaterial.)