.sp-gallery {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 10px;
margin: 2rem 0;
}
.sp-gallery__item {
margin: 0;
opacity: 0;
transform: translateY(20px);
transition: opacity 0.6s ease-out, transform 0.6s ease-out;
aspect-ratio: 4 / 3;
overflow: hidden;
}
.sp-gallery__item.visible {
opacity: 1;
transform: translateY(0);
}
.sp-gallery__link {
display: block;
width: 100%;
height: 100%;
}
.sp-gallery__item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.3s ease;
}
.sp-gallery__link:hover img,
.sp-gallery__link:focus-visible img {
transform: scale(1.02);
} .sp-gallery-lightbox {
position: fixed;
inset: 0;
z-index: 999999;
display: none;
align-items: center;
justify-content: center;
padding: 40px 70px;
background: rgba(0, 0, 0, 0.92);
}
.sp-gallery-lightbox.is-open {
display: flex;
}
body.sp-gallery-lightbox-open {
overflow: hidden;
}
.sp-gallery-lightbox__image {
max-width: min(1400px, 100%);
max-height: calc(100vh - 80px);
width: auto;
height: auto;
object-fit: contain;
}
.sp-gallery-lightbox__close,
.sp-gallery-lightbox__prev,
.sp-gallery-lightbox__next {
position: absolute;
border: 0;
background: transparent;
color: #fff;
cursor: pointer;
line-height: 1;
}
.sp-gallery-lightbox__close {
top: 18px;
right: 24px;
font-size: 42px;
}
.sp-gallery-lightbox__prev,
.sp-gallery-lightbox__next {
top: 50%;
transform: translateY(-50%);
font-size: 64px;
padding: 15px;
}
.sp-gallery-lightbox__prev { left: 10px; }
.sp-gallery-lightbox__next { right: 10px; }
@media (max-width: 1400px) {
.sp-gallery {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 768px) {
.sp-gallery {
grid-template-columns: 1fr;
}
.sp-gallery-lightbox {
padding: 55px 45px;
}
.sp-gallery-lightbox__prev,
.sp-gallery-lightbox__next {
font-size: 46px;
padding: 8px;
}
}
@media (prefers-reduced-motion: reduce) {
.sp-gallery__item,
.sp-gallery__item img {
transition: none;
}
}