.photoGallery {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
.photoGallery .photo {
  width: 100%;
}
.photoGallery a {
  position: relative;
  display: block;
  margin: 0;
  border-radius: 4px;
  overflow: hidden;
}
.photoGallery a:hover .galleryImageCaption {
  opacity: 1;
}
.photoGallery img {
  display: block;
  position: relative;
  aspect-ratio: 5/3;
  object-fit: cover;
  opacity: 0.8;
  width: 100%;
  transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out;
}
.photoGallery img:hover {
  opacity: 1;
  transform: scale(1.2);
}
.photoGallery .galleryImageCaption {
  position: absolute;
  bottom: 0;
  left: 0;
  padding: 25px 15px 15px;
  width: 100%;
  color: white;
  opacity: 0;
  background: linear-gradient(0deg, rgba(0, 0, 0, 0.75) 0%, rgba(255, 255, 255, 0) 100%);
  transition: 0.5s;
}

.lightbox {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: rgb(0, 0, 0);
  display: flex;
  opacity: 0;
  transition: opacity 450ms ease-in-out;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 996;
}
.lightbox:target {
  opacity: 1;
  pointer-events: inherit;
}
.lightbox:target img {
  filter: blur(0);
}
.lightbox .content {
  max-width: 90%;
  position: relative;
  color: #fff;
}
.lightbox .content .navButton {
  position: fixed;
  bottom: 10px;
  opacity: 1;
  z-index: 997;
  font-size: 2.488rem;
}
.lightbox .content .navButton.previous {
  left: 10px;
}
.lightbox .content .navButton.next {
  right: 10px;
}
.lightbox .content .navButton a {
  transition: opacity 450ms ease-in-out;
  opacity: 0.8;
}
.lightbox .content .navButton a:link, .lightbox .content .navButton a:visited {
  color: #fff;
}
.lightbox .content .navButton a:hover {
  opacity: 1;
}
.lightbox .content .navButton .icon {
  width: 2.488rem;
  height: 2.488rem;
}
.lightbox .content:hover > .navButton {
  opacity: 1;
  transform: scale(1, 1);
}
.lightbox .content:hover > a.close {
  opacity: 1;
  transform: scale(1, 1);
}
.lightbox .content:hover > .caption {
  opacity: 1;
  transform: translateY(0);
}
.lightbox .content:hover > .caption::after {
  opacity: 1;
}
.lightbox .content > * {
  transition: all 450ms ease-in-out;
}
.lightbox .caption {
  display: flex;
  flex-flow: column;
  margin: 0;
  padding: 0.5rem 1rem;
  position: fixed;
  align-items: center;
  top: 0;
  left: 0;
  width: 100%;
  font-size: 1.2rem;
  opacity: 1;
}
.lightbox .caption .title {
  flex-grow: 1;
}
.lightbox .caption .photoLocation {
  text-transform: uppercase;
  font-size: 0.833rem;
}
.lightbox .caption::after {
  content: " ";
  background-color: rgba(0, 0, 0, 0.4);
  bottom: 0;
  left: 0;
  height: 100%;
  width: 100%;
  position: absolute;
  transition: all 350ms ease-in-out 250ms;
  opacity: 0;
  transform-origin: bottom;
  mix-blend-mode: soft-light;
}
.lightbox img {
  max-height: 90vh;
  max-width: 100%;
  margin: 0;
  padding: 0;
  filter: blur(50px);
}
.lightbox a.close {
  width: 2.074rem;
  height: 2.074rem;
  position: fixed;
  right: 0;
  top: 0;
  background-color: rgb(0, 0, 0);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  text-decoration: none;
  color: #fff;
  border-bottom-left-radius: 4px;
}
.lightbox a.close svg {
  width: 2.074rem;
  height: 2.074rem;
}
.lightbox:first-child .previous {
  display: none;
}
.lightbox:last-child .next {
  display: none;
}

@media screen and (min-width: 56rem) {
  .photoGallery {
    grid-template-columns: repeat(3, 1fr);
  }
  .photoGallery .photo {
    scroll-margin-top: 3rem;
  }
  .lightbox {
    background-color: rgba(0, 0, 0, 0.75);
  }
  .lightbox .content .navButton {
    position: absolute;
    top: 50%;
    opacity: 0;
    bottom: unset;
    transform: scale(0, 0);
  }
  .lightbox .content .navButton a {
    opacity: 0.6;
  }
  .lightbox .content .navButton a:hover, .lightbox .content .navButton a:active {
    opacity: 1;
  }
  .lightbox .content a.close {
    position: absolute;
    transform: scale(0, 0);
    transform-origin: right top;
    opacity: 0;
    background-color: rgba(0, 0, 0, 0.5);
    font-size: 1.44rem;
  }
  .lightbox .content .caption {
    flex-flow: row;
    position: absolute;
    bottom: 0;
    top: unset;
    transform: translateY(50%);
    opacity: 0;
  }
}
@media screen and (min-width: 18rem) {
  .photoGallery .photo {
    width: unset;
  }
}
