Достаточно близко к тому, что вы хотели (без медийных запросов и запутанных правил, не стоит хлопот):
HTML:
<div class="container">
<p>Lorem ipsum</p>
<p>Delor sit</p>
<button>Amet</button>
</div>
CSS:
// See the container's items:
.container > * { background: lightblue; }
А) Использовать сетка ;не знаю, если возможно установить другое minmax () при сохранении поведения повторения (автоподгонки, ..):
.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-gap: 2rem;
}
B) Использовать flexbox ;хакерство полей имитирует сточные канавы сетки до тех пор, пока в CSS не будут реализованы собственные флексбоксы:
.container {
display: flex;
flex-wrap: wrap;
margin-right: -2rem;
}
.container > * { margin-right: 2rem; }
p { flex: 1 1 200px; }
button { flex: 1 1 100px; }