/*
 * Source-verified /gallery layout.
 *
 * Captured source at 1440px: 3 columns, 27px row/column gaps, 434.7x326px
 * photo frames, 13.5px caption top padding and 17.6px line-height. At 768px:
 * 2 columns, 35.8975px column and 71.7949px row gaps. At 390px: 1 column,
 * 40px row gaps, 20px column gap and 10px caption top padding.
 * The native Image Carousel still owns all 12 source images; this narrowly
 * scoped layer makes its existing slides wrap into the source grid. The
 * gallery extension supplies the exact source currentSrc AVIF dimensions at
 * each breakpoint so auto-height rows do not accumulate image-ratio drift.
 */
.sh-project-gallery-grid { grid-column: 1 / -1 !important; width: 100% !important; min-width: 0; }

.sh-project-gallery-grid .elementor-image-carousel-wrapper {
  container-type: inline-size;
  container-name: project-gallery;
  height: auto !important;
  overflow: visible !important;
}

.sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  align-items: start !important;
  column-gap: 27px !important;
  row-gap: 27px !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  transform: none !important;
  transition: none !important;
}

.sh-project-gallery-grid .swiper-slide {
  box-sizing: border-box;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  flex: initial !important;
}

.sh-project-gallery-grid .swiper-slide-inner {
  display: flex;
  width: 100%;
  height: auto !important;
  margin: 0 !important;
  flex-direction: column;
  align-items: stretch;
  line-height: normal;
}

.sh-project-gallery-grid .sh-gallery-trigger {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  line-height: 0;
  text-align: inherit;
}

.sh-project-gallery-grid .sh-gallery-trigger:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
}

.sh-project-gallery-grid .sh-gallery-trigger .swiper-slide-image {
  display: block;
  width: auto;
  max-width: 100%;
  margin: 0 auto;
  height: 326px;
  object-fit: cover;
  object-position: center;
}

.sh-project-gallery-grid .sh-gallery-caption {
  display: block;
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 13.5px 18px 0 0;
  color: #000;
  font-family: unbounded, "Arial", sans-serif;
  font-size: 16px;
  font-weight: 800;
  line-height: 17.6px;
  text-align: left;
  text-transform: uppercase;
}

.sh-project-gallery-grid .elementor-swiper-button,
.sh-project-gallery-grid .swiper-pagination {
  display: none !important;
}

@media (max-width:1023px) and (min-width: 768px) {
  .sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 35.8975px !important;
    row-gap: 71.7949px !important;
  }

  .sh-project-gallery-grid .sh-gallery-trigger .swiper-slide-image {
    max-height: none !important;
    height: auto !important;
  }

  .sh-project-gallery-grid .sh-gallery-caption {
    padding: 17.9487px 14.359px 0 0;
  }
}

@media (max-width: 767px) {
  .sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper {
    grid-template-columns: minmax(0, 1fr) !important;
    column-gap: 20px !important;
    row-gap: 40px !important;
  }

  .sh-project-gallery-grid .sh-gallery-trigger .swiper-slide-image {
    max-height: none !important;
    height: auto !important;
  }

  .sh-project-gallery-grid .sh-gallery-caption {
    padding: 9.99999px 8px 0 0;
  }
}

.sh-project-gallery-lightbox:not(.sh-gallery-open) {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.sh-project-gallery-lightbox.sh-gallery-open {
  z-index: 2147483000 !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
}

/* Closed-source visibility was also captured on the native layout ancestors.
   Opening the dialog must reveal those containers, not just its outer shell. */
.sh-project-gallery-lightbox.sh-gallery-open .e-con {
  visibility: visible !important;
}
.sh-project-gallery-lightbox .swiper-slide-contents {
  display: none !important;
}
.sh-project-gallery-lightbox .swiper-slide-bg {
  background-color: #fff !important;
}

.sh-project-gallery-lightbox .sh-gallery-close {
  position: fixed;
  z-index: 2147483001;
  top: 40px;
  right: 40px;
  display: flex;
  width: 17px;
  height: 17px;
  min-width: 17px;
  min-height: 17px;
  margin: 0;
  padding: 0;
  align-items: center;
  justify-content: center;
  border: 0;
  background: transparent;
  color: #000;
  cursor: pointer;
  line-height: 0;
}

.sh-project-gallery-lightbox .sh-gallery-close svg {
  display: block;
  width: 17px;
  height: 17px;
  fill: #000;
}

.sh-project-gallery-lightbox .sh-gallery-close:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

.sh-project-gallery-lightbox .elementor-swiper-button {
  position: fixed !important;
  z-index: 2147483001 !important;
  top: 50% !important;
  display: flex !important;
  width: 17px !important;
  height: 17px !important;
  min-width: 17px !important;
  min-height: 17px !important;
  margin: 0 !important;
  padding: 0 !important;
  align-items: center;
  justify-content: center;
  color: #000 !important;
  cursor: pointer;
  line-height: 0;
  transform: translateY(-50%) !important;
}

.sh-project-gallery-lightbox .elementor-swiper-button-prev {
  right: auto !important;
  left: 40px !important;
}

.sh-project-gallery-lightbox .elementor-swiper-button-next {
  right: 40px !important;
  left: auto !important;
}

.sh-project-gallery-lightbox .elementor-swiper-button.swiper-button-disabled {
  display: none !important;
}

.sh-project-gallery-lightbox .elementor-swiper-button svg {
  display: block;
  width: 17px;
  height: 17px;
  max-width: none;
  max-height: none;
  fill: #000 !important;
}

.sh-project-gallery-lightbox .elementor-swiper-button-prev svg {
  transform: rotate(180deg);
}

.sh-project-gallery-lightbox .elementor-swiper-button:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

html.sh-gallery-scroll-lock,
body.sh-gallery-scroll-lock {
  overflow: hidden !important;
}
/* Native image frames retain the source layout ratio, not the rounded encoded-image dimensions. */
@media(max-width:767px){
.sh-project-gallery-grid .swiper-slide:nth-child(1) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(2) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(3) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 256.5;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(4) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 256.5;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(5) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(6) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(7) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(8) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(9) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 256.5;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(10) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(11) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 256.5;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(12) .swiper-slide-image{width:100%!important;aspect-ratio:342 / 456;height:auto!important}
}
@media(min-width:768px) and (max-width:1023px){
.sh-project-gallery-grid .swiper-slide:nth-child(1) .swiper-slide-image{width:100%!important;aspect-ratio:318.78125 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(2) .swiper-slide-image{width:100%!important;aspect-ratio:318.796875 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(3) .swiper-slide-image{width:100%!important;aspect-ratio:318.78125 / 239;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(4) .swiper-slide-image{width:100%!important;aspect-ratio:318.796875 / 239;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(5) .swiper-slide-image{width:100%!important;aspect-ratio:318.78125 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(6) .swiper-slide-image{width:100%!important;aspect-ratio:318.796875 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(7) .swiper-slide-image{width:100%!important;aspect-ratio:318.78125 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(8) .swiper-slide-image{width:100%!important;aspect-ratio:318.796875 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(9) .swiper-slide-image{width:100%!important;aspect-ratio:318.78125 / 239;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(10) .swiper-slide-image{width:100%!important;aspect-ratio:318.796875 / 425;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(11) .swiper-slide-image{width:100%!important;aspect-ratio:318.78125 / 239;height:auto!important}
.sh-project-gallery-grid .swiper-slide:nth-child(12) .swiper-slide-image{width:100%!important;aspect-ratio:318.796875 / 425;height:auto!important}
}
@media(max-width:767px){.sh-project-gallery-grid .swiper-slide:nth-child(9) .sh-gallery-trigger,.sh-project-gallery-grid .swiper-slide:nth-child(11) .sh-gallery-trigger{height:calc((100vw - 48px)*.75)!important;overflow:visible}}
/* Keep the native gallery responsive between captured viewport sizes. */
@media(max-width:767px){body .elementor.elementor.elementor .elementor-element-8d3450f{width:calc(342 / 390 * 100vw)!important}}
body .elementor.elementor.elementor .elementor-element-bcc30a4{display:block!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto!important}
body .elementor.elementor.elementor .sh-project-gallery-grid{width:100%!important;height:auto!important;max-width:100%!important}
@media(min-width:1024px){body .elementor.elementor.elementor .elementor-element-8d3450f{width:calc(1358.13 / 1440 * min(100vw,1920px))!important;margin-left:calc(37.13 / 1440 * min(100vw,1920px))!important;margin-bottom:calc(72.59 / 1440 * min(100vw,1920px))!important}.sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper{gap:calc(27 / 1440 * min(100vw,1920px))!important}.sh-project-gallery-grid .sh-gallery-trigger .swiper-slide-image{height:calc(326 / 1440 * min(100vw,1920px))!important}.sh-project-gallery-grid .sh-gallery-caption{padding:calc(13.5 / 1440 * min(100vw,1920px)) calc(18 / 1440 * min(100vw,1920px)) 0 0}}
@media(max-width:767px){body .elementor.elementor.elementor .elementor-element-8d3450f{margin-top:calc(40 / 390 * 100vw)!important;margin-bottom:calc(80 / 390 * 100vw)!important}.sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper{row-gap:calc(40 / 390 * 100vw)!important}.sh-project-gallery-grid .sh-gallery-caption{padding:calc(10 / 390 * 100vw) calc(8 / 390 * 100vw) 0 0}.sh-project-gallery-grid .swiper-slide:nth-child(9) .sh-gallery-trigger,.sh-project-gallery-grid .swiper-slide:nth-child(11) .sh-gallery-trigger{height:calc(342 / 390 * 100vw * .75)!important}}

/* The source adds a column for each 400px of gallery content width. */
@media (min-width: 1024px) {
  .sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .sh-project-gallery-grid .sh-gallery-trigger .swiper-slide-image {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 4 / 3;
    object-fit: cover;
  }
  @container project-gallery (min-width: 1200px) {
    .sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper {
      grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    }
  }
  @container project-gallery (min-width: 1600px) {
    .sh-project-gallery-grid .elementor-image-carousel.swiper-wrapper {
      grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    }
  }
}
