<style>
* {
	box-sizing: border-box; 
}
body {
	display: flex;
	min-height: 100vh;
	flex-direction: column;
	margin: 0;
	background-color: rgba(102, 123, 198, .85);
	font-family: "Gotham", "Open Sans",sans-serif;

}
#main {
    display: flex;
    flex: 1;
}
#main > article {
    flex: 1;
}
#main > nav, 
#main > aside {
    flex: 0 0 20vw;
    background: beige;
}
#main > nav {
    order: -1;
}
header, footer {
    background: yellowgreen;
    height: 20vh;
}
header, footer, article, nav, aside {
    padding: 1em;
}
</style>