<div class="grid">
  <div class="item">Element 1</div>
  <div class="item">Element 2</div>
  <div class="item">Element 3</div>
  <div class="item">Element 4</div>
  <div class="item">Element 5</div>
  <div class="item">Element 6</div>
  <div class="item">Element 7</div>
  <div class="item">Element 8</div>
  <div class="item">Element 9</div>
  <div class="item">Element 10</div>
  <div class="item">Element 11</div>
  <div class="item">Element 12</div>
  <div class="item">Element 13</div>
  <div class="item">Element 14</div>
  <div class="item">Element 15</div>
  <div class="item">Element 16</div>
  <div class="item">Element 17</div>
  <div class="item">Element 18</div>
  <div class="item">Element 19</div>
  <div class="item">Element 20</div>
  <div class="item">Element 21</div>
  <div class="item">Element 22</div>
  <div class="item">Element 23</div>
  <div class="item">Element 24</div>
  <div class="item">Element 25</div>
  <div class="item">Element 26</div>
  <div class="item">Element 27</div>
  <div class="item">Element 28</div>
  <div class="item">Element 29</div>
  <div class="item">Element 30</div>
  <div class="item">Element 31</div>
  <div class="item">Element 32</div>
  <div class="item">Element 33</div>
  <div class="item">Element 34</div>
  <div class="item">Element 35</div>
  <div class="item">Element 36</div>
  <div class="item">Element 37</div>
  <div class="item">Element 38</div>
  <div class="item">Element 39</div>
  <div class="item">Element 40</div>
  <div class="item">Element 41</div>
  <div class="item">Element 42</div>
  <div class="item">Element 43</div>
  <div class="item">Element 44</div>
  <div class="item">Element 45</div>
  <div class="item">Element 46</div>
  <div class="item">Element 47</div>
  <div class="item">Element 48</div>
  <div class="item">Element 49</div>
  <div class="item">Element 50</div>
</div>
@layer reset;

@property --grid-cols {
  syntax: "<integer>";
  inherits: false;
  initial-value: 12;
}

@property --grid-rows {
  syntax: "<integer>";
  inherits: false;
  initial-value: 12;
}

@property --row-items {
  syntax: "<integer>";
  inherits: false;
  initial-value: 1;
}

@property --span-cols {
  syntax: "<integer>";
  inherits: false;
  initial-value: 1;
}

@property --span-rows {
  syntax: "<integer>";
  inherits: false;
  initial-value: 1;
}

@layer reset {
  * {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
}

body {
  background-color: #121224;
}

:root {
  font-family: "Roboto", sans-serif;
}

.grid {
  display: grid;
  grid-template-rows: repeat(var(--grid-rows), 1fr);
  grid-template-columns: repeat(var(--grid-cols), 1fr);
  block-size: 95cqb;
  inline-size: 90cqi;
  margin-inline: auto;
  padding: 3rem;
  gap: 1rem;

  .item {
    --span-cols: calc(var(--grid-cols) / var(--row-items));
    display: block;
    width: 100%;
    height: 100%;
    align-content: center;
    background-color: rgba(200, 200, 200, 0.125);
    color: white;
    border-radius: 12px;
    grid-column: span var(--span-cols);
    grid-row: span var(--span-rows);
    padding-block: 4rem;
    padding-inline: 2rem;

    &:nth-child(5n - 4), &:nth-child(5n - 4) ~ &:is(:nth-child(5n - 3), :nth-child(5n - 2)) {
      --row-items: 3;
    }
    
    &:nth-child(5n - 1), &:nth-child(5n - 1) ~ &:nth-child(5n) {
      --row-items: 2;
    }
  }
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.