.gallery-wrap{--radius:12px;--shadow:0 10px 30px rgba(0,0,0,.12);--hover-bg:rgba(0,0,0,.45);--icon-size:52px;--dur:.35s;--easing:cubic-bezier(.2,.7,.3,1);position:relative}.gallery-wrap .photo-grid>[class^="col-"]{margin:15px 0}.gallery-wrap .gallery{height:100%;display:block;background-color:var(--primary-bg);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);transform:translateZ(0)}.gallery-wrap .gallery-image{position:relative;aspect-ratio:1 / 1;overflow:hidden;backface-visibility:hidden}.gallery-wrap .gallery-image img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1);transition:transform var(--dur) var(--easing),filter var(--dur) var(--easing)}.gallery-wrap .gal-img-hover{position:absolute;inset:0;display:grid;place-items:center;background-color:var(--hover-bg);opacity:0;transform:translateY(6px);transition:opacity var(--dur) var(--easing),transform var(--dur) var(--easing);pointer-events:none}.gallery-wrap .gal-icon a{display:inline-flex;width:var(--icon-size);height:var(--icon-size);align-items:center;justify-content:center;border-radius:50%;background-color:var(--primary-bg);color:var(--primary-text);box-shadow:0 6px 18px rgb(0 0 0 / .15);transform:scale(.92);transition:transform var(--dur) var(--easing),box-shadow var(--dur) var(--easing),opacity var(--dur) var(--easing);pointer-events:auto}.gallery-wrap .gal-icon a:hover{transform:scale(1);box-shadow:0 10px 26px rgb(0 0 0 / .22);background-color:var(--secondary-bg);color:var(--secondary-text)}.gallery-wrap .gal-icon i{font-size:20px;line-height:1}.gallery-wrap .gallery:hover .gal-img-hover{opacity:1;transform:translateY(0)}.gallery-wrap .gallery:hover .gallery-image img{transform:scale(1.03);filter:saturate(1.05)}.gallery-wrap .photo-slider{--center-scale:1.1;--side-scale:.6;padding-block:40px}.gallery-wrap .photo-slider .swiper-slide{height:auto;transition:transform var(--dur) var(--easing),opacity var(--dur) var(--easing),box-shadow var(--dur) var(--easing);transform:scale(var(--side-scale));opacity:.9;will-change:transform}.gallery-wrap .photo-slider .swiper-slide-active{transform:scale(var(--center-scale));opacity:1;z-index:2}.gallery-wrap .photo-slider .swiper-slide-next,.gallery-wrap .photo-slider .swiper-slide-prev{transform:scale(calc((var(--center-scale) + var(--side-scale)) / 2))}.gallery-wrap .photo-slider .gallery{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.gallery-wrap .photo-slider .swiper-button-next,.gallery-wrap .photo-slider .swiper-button-prev{width:44px;height:44px;border-radius:50%;background-color:var(--primary-bg);box-shadow:0 6px 20px rgb(0 0 0 / .15);transition:transform var(--dur) var(--easing),box-shadow var(--dur) var(--easing),opacity var(--dur) var(--easing)}.gallery-wrap .photo-slider .swiper-button-next:hover,.gallery-wrap .photo-slider .swiper-button-prev:hover{transform:scale(1.06);box-shadow:0 10px 28px rgb(0 0 0 / .22)}.gallery-wrap .photo-slider .swiper-button-disabled{opacity:.45;cursor:default;transform:none}.gallery-wrap .photo-slider .swiper-pagination-bullets .swiper-pagination-bullet{background-color:rgb(0 0 0 / .35);opacity:1;transition:transform var(--dur) var(--easing),background var(--dur) var(--easing)}.gallery-wrap .photo-slider .swiper-pagination-bullet-active{background-color:#111;transform:scale(1.15)}.gallery-wrap .gal-icon a:focus-visible,.gallery-wrap .photo-slider .swiper-button-next:focus-visible,.gallery-wrap .photo-slider .swiper-button-prev:focus-visible{outline:2px solid #111;outline-offset:3px}@media (prefers-reduced-motion:reduce){.gallery-wrap *{transition:none!important;animation:none!important}}