.gallery-wall {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: minmax(140px, 18vw);
  grid-auto-flow: dense;
  gap: 3px;
  padding: 3px;
  background: var(--bg);
}

.gallery-wall__item {
  position: relative;
  margin: 0;
  padding: 0;
  border: 0;
  background: var(--card);
  overflow: hidden;
  border-radius: 4px;
}

.gallery-wall__item.is-1 {
  grid-column: span 1;
  grid-row: span 1;
}

.gallery-wall__item.is-wide {
  grid-column: span 2;
  grid-row: span 1;
}

.gallery-wall__item.is-tall {
  grid-column: span 1;
  grid-row: span 2;
}

.gallery-wall__item.is-4 {
  grid-column: span 2;
  grid-row: span 2;
}

.gallery-wall__item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s ease;
}

.gallery-wall__item:hover img,
.gallery-wall__item:focus-visible img {
  transform: scale(1.04);
}

html.pref-reduced-motion .gallery-wall__item img,
html.pref-reduced-motion .gallery-wall__item:hover img {
  transition: none;
  transform: none;
}

@media (max-width: 960px) {
  .gallery-wall {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-rows: minmax(120px, 28vw);
  }
}

@media (max-width: 520px) {
  .gallery-wall {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2px;
    padding: 2px;
  }

  .gallery-wall__item.is-4,
  .gallery-wall__item.is-wide {
    grid-column: span 2;
  }

  .gallery-wall__item.is-4 {
    grid-row: span 2;
  }
}
