/* Project photo grids.
   "uniform" is the equal-tile grid on the Services page.
   "mosaic" is the mixed-span arrangement on the Our Work page. */

.gallery {
  display: grid;
  gap: var(--space-4);
}

.gallery__item {
  margin: 0;
  overflow: hidden;
  border-radius: var(--radius-md);
  background: var(--color-surface-sunken);
}

.gallery__frame {
  display: block;
  height: 100%;
}

.gallery__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-base);
}

.gallery__item:hover .gallery__image {
  transform: scale(1.04);
}

/* --- Uniform layout ----------------------------------------------------- */

.gallery--uniform {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.gallery--uniform .gallery__image {
  aspect-ratio: 4 / 3;
}

/* --- Mosaic layout ------------------------------------------------------ */

.gallery--mosaic {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.gallery__item--half {
  grid-column: span 3;
}

.gallery__item--third {
  grid-column: span 2;
}

.gallery__item--full {
  grid-column: 1 / -1;
}

.gallery__item--half .gallery__image {
  aspect-ratio: 4 / 3;
}

.gallery__item--third .gallery__image {
  aspect-ratio: 1 / 1;
}

.gallery__item--full .gallery__image {
  aspect-ratio: 90 / 31;
}

@media (max-width: 900px) {
  .gallery--uniform {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gallery--mosaic {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gallery__item--half,
  .gallery__item--third {
    grid-column: span 1;
  }

  .gallery__item--third .gallery__image,
  .gallery__item--full .gallery__image {
    aspect-ratio: 4 / 3;
  }
}

@media (max-width: 560px) {
  .gallery--uniform,
  .gallery--mosaic {
    grid-template-columns: minmax(0, 1fr);
  }
}
