/* GRID */
.grid-gallery {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(min(var(--min-col-size, 300px), 100%), 1fr));
}
.grid-gallery > a {
  display: grid;
  isolation: isolate;
  overflow: clip;
}
/* CARD */
.grid-gallery > a > * {
  grid-area: 1/1;
}
.grid-gallery a img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.grid-gallery a:hover img {
  transform: scale(1.02);
}
.grid-gallery a header {
  z-index: 1;
  background: rgb(0 0 0 / 0.8);
  align-self: end;
  padding: 0.25rem 1rem;
  color: white;
}
.grid-gallery a:hover header {
  padding: 0.4rem 1rem;
  transform: translatey(100%);
}
.grid-gallery:hover > .card:not(:hover) img {
  filter: grayscale(100%);
  opacity: 0.8;
}
/* SCROLL ANIMATION */
@media (prefers-reduced-motion: no-preference) {
  .grid-gallery > a {
    transform: translateY(30px) scale(0.9);
    opacity: 0;
    animation: reveal linear both;
    animation-timeline: view(block);
    animation-range: entry 10% cover 25%;
  }
  .grid-gallery > a:nth-child(3n + 2) {
    animation-range: entry 13% cover 28%;
  }
  .grid-gallery > a:nth-child(3n + 3) {
    animation-range: entry 16% cover 31%;
  }
  .grid-gallery a img {
    transition:
      transform 0.3s 0.2s ease,
      opacity 0.3s ease;
  }
  .grid-gallery a header {
    transition:
      padding 0.3s ease,
      transform 0.3s 0.2s ease;
  }
}
@keyframes reveal {
  to {
    transform: translateY(0px) scale(1);
    opacity: 1;
  }
}
