.grid-container {
    padding: 50vh 0;
  }

p {
  margin: 0;
}
  
  .image-container {
    position: relative;
    overflow: hidden;
    background-color: red;
     padding-bottom: calc(100% / (var(--ratio))); 
  }

  
  .cell + .cell {
    margin-top: 20vh;
  }
  
  .image-one {
    --ratio: 400/400;
  }
  
  .image-two {
    --ratio: 1920/1080;
  }
  
  .image-three {
    --ratio: 1080/1920;
  }
  
  .image-container img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }