body {
  margin: 50px;
}

hr {
  margin: 100px auto;
}

.grid {
  counter-reset: item;
  display: grid;
  grid-gap: 10px;
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 900px) {
  .grid {
    grid-template-columns: 1fr;
  }
}

.grid + .grid {
  margin-top: 50px;
}

.grid-item {
  padding-top: 70%;
  position: relative;
  color: white;
}

.grid-item::before {
  counter-increment: item;
  content: counter(item);
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 24px;
  font-weight: 700;
}

.grid-item.large {
  grid-area: span 2 / span 2;
  background: #4c5958;
}

.grid-item.medium {
  grid-area: span 2 / span 1;

  padding-top: calc((200% + 10px) * 0.7);
  background: #8aa6a3;
}

@media (max-width: 900px) {
  .grid-item.medium {
    padding-top: 70%;
  }
}

.grid-item.small {
  grid-area: span 1 / span 1;
  background: #bfbfbf;
}

@media (max-width: 900px) {
  .grid-item {
    grid-area: auto !important;
  }
}
