Вы должны активировать перенос, а затем просто отрегулировать ширину ваших элементов:
.main {
display: flex;
flex-wrap: wrap;
}
.main > section {
width:50%; /*half the width by default to all section*/
text-align:center;
border:1px solid;
}
section.benefits,
section.requirements {
width:100%; /*full width so they stack above each other*/
}
* {
box-sizing:border-box;
}
<main class="main" id="zen-supporting" role="main">
<section class="explanation" id="zen-explanation" role="article">
<h3>What's This About?</h3>
<p>There</p>
</section>
<section class="participation" id="zen-participation" role="article">
<h3>Participation</h3>
<p>Download</p>
</section>
<section class="benefits" id="zen-benefits" role="article">
<h3>Benefits</h3>
<p>Why participate?</p>
</section>
<section class="requirements" id="zen-requirements" role="article">
<h3>Requirements</h3>
<p>gtgtgtg</p>
</section>
И с некоторым интервалом:
.main {
display: flex;
flex-wrap: wrap;
}
.main > section {
flex-basis:40%;
flex-grow:1;
text-align:center;
border:1px solid;
margin:10px;
}
section.benefits,
section.requirements {
flex-basis:90%; /*full width so they stack above each other*/
}
* {
box-sizing:border-box;
}
<main class="main" id="zen-supporting" role="main">
<section class="explanation" id="zen-explanation" role="article">
<h3>What's This About?</h3>
<p>There</p>
</section>
<section class="participation" id="zen-participation" role="article">
<h3>Participation</h3>
<p>Download</p>
</section>
<section class="benefits" id="zen-benefits" role="article">
<h3>Benefits</h3>
<p>Why participate?</p>
</section>
<section class="requirements" id="zen-requirements" role="article">
<h3>Requirements</h3>
<p>gtgtgtg</p>
</section>
Связанный: Как добавить 1px поле для гибкого элемента, который является гибким: 0 0 25%?