Прежде всего, большое спасибо за ваши комментарии. Комбинируя два предложенных здесь ответа, я нашел решение, которое подходит для моих нужд.
html, body {
font-family: Roboto, "Helvetica Neue", sans-serif;
padding: 0;
margin: 0;
height: 100%;
}
.outer {
display: flex;
flex-flow: column;
height: 100vh;
border: 2px dashed blue;
}
header {
display: flex;
}
header .top-left {
display: flex;
flex-basis: 20%;
border: 2px dashed green;
justify-content: center;
text-align: center;
}
header .top-right {
display: flex;
flex: 1;
border: 2px dashed red;
vertical-align: center;
justify-content: center;
align-items: center;
}
main {
display: flex;
flex-grow: 1;
align-items: center;
justify-content: center;
border: 2px dashed fuchsia;
}
<div class="outer">
<header>
<div class="top-left"> a </div>
<div class="top-right"> b </div>
</header>
<main> c </main>
</div>
Я думаю, я злоупотребляю использованием дисплея: flex. Во всяком случае, по крайней мере, сейчас работает. Спасибо, ребята !!