#gallery { overflow: clip; }
#gallery .gallery-heading-row,
#gallery .gallery-intro {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(210px, 310px);
  align-items: center;
  gap: 30px;
  margin-bottom: 36px;
}
#gallery .gallery-header { min-width: 0; margin: 0; }
.ptz-slot {
  position: relative;
  grid-column: 2;
  grid-row: 1;
  width: 100%;
  aspect-ratio: 1.1;
  justify-self: end;
  margin: 0;
  pointer-events: none;
  contain: style;
}
.ptz-slot .ptz-dock {
  position: fixed;
  top: clamp(112px, 14vh, 154px);
  right: -24px;
  z-index: 43;
  width: clamp(190px, 18vw, 252px);
  aspect-ratio: 1.1;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 8px;
  color: inherit;
  box-shadow: none;
  visibility: hidden;
  opacity: var(--ptz-opacity, 0);
  transform: translate3d(var(--ptz-slide, 150%), var(--ptz-rise, 14px), 0) rotate(var(--ptz-roll, -7deg));
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.ptz-slot.is-present.is-rendered .ptz-dock,
.ptz-slot.is-present[data-ptz-state="fallback"] .ptz-dock { visibility: visible; }
.ptz-slot.is-interactive .ptz-dock { pointer-events: auto; }
.ptz-slot .ptz-dock:disabled { pointer-events: none; cursor: default; }
.ptz-camera { position: absolute; inset: 0; display: block; }
.ptz-slot .ptz-dock:focus-visible,
.services .fixture-trigger:focus-visible { outline: 2px solid #ed2024; outline-offset: -12px; }
.ptz-camera canvas { display: block; width: 100%; height: 100%; }
.ptz-camera canvas,
.ptz-camera img { filter: drop-shadow(0 15px 9px rgba(0, 0, 0, .2)); }
.ptz-camera img { display: none; width: 100%; height: 100%; object-fit: contain; }
.ptz-slot[data-ptz-state="fallback"] img { display: block; }
.ptz-slot.is-rendered img { display: none; }
.ptz-slot:not(.is-rendered) canvas { visibility: hidden; }
#gallery .gallery-slideshow-launch { grid-column: 2; grid-row: 1; align-self: end; justify-self: end; z-index: 3; }
@media (max-width: 1000px) {
  #gallery .gallery-heading-row,
  #gallery .gallery-intro { grid-template-columns: minmax(0, 1fr) 215px; gap: 18px; }
}
@media (max-width: 640px) {
  #gallery .gallery-heading-row,
  #gallery .gallery-intro { grid-template-columns: 1fr; gap: 4px; }
  .ptz-slot { grid-column: 1; grid-row: 2; width: 0; height: 0; aspect-ratio: auto; }
  .ptz-slot .ptz-dock { top: auto; bottom: 74px; right: -18px; width: 146px; }
  #gallery .gallery-slideshow-launch { grid-column: 1; grid-row: 2; justify-self: start; align-self: center; }
}
.services > .moving-head-light,
.services > .leko-beam-rig {
  translate: 120% 0;
  transform: translateY(var(--moving-light-lift));
  transition: opacity .8s ease, translate 1.25s cubic-bezier(.22, 1, .36, 1), transform .24s linear;
}
.services.section-in-view > .moving-head-light,
.services.section-in-view > .leko-beam-rig { translate: 0 0; transform: translateY(var(--moving-light-lift)); }
.services .fixture-trigger {
  position: absolute;
  inset: 12%;
  z-index: 5;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  pointer-events: none;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}
.services.section-in-view:not(.fixture-disabled) .fixture-trigger { pointer-events: auto; }
body.menu-open .services .fixture-trigger,
body.lightbox-open .services .fixture-trigger,
body.contact-verification-open .services .fixture-trigger { pointer-events: none; }
@media (prefers-reduced-motion: reduce) {
  .ptz-slot .ptz-dock,
  .services > .moving-head-light,
  .services > .leko-beam-rig { transition: none; transform: none; translate: none; }
}
