:host {
  display: block;
}

  :host * {
    box-sizing: border-box;
  }

.lightbox {
  --swirl-lightbox-view-height: 100vh;

  position: fixed;
  z-index: var(--s-z-40);
  display: block;
  overflow: visible;
  width: auto;
  max-width: none;
  height: var(--swirl-lightbox-view-height);
  max-height: none;
  margin: 0;
  padding: 0;
  border: none;
  background-color: rgba(0, 0, 0, 1);
  inset: 0;
}

.lightbox::backdrop {
    display: none;
  }

.lightbox:not([open]) {
    display: none;
  }

@supports (height: 100dvh) {

.lightbox {
    --swirl-lightbox-view-height: 100dvh
}
  }

@media (min-width: 768px) {

.lightbox {
    background-color: rgba(0, 0, 0, 0.8)
}
  }

.lightbox:not(.lightbox--closing) .lightbox__body {
    animation: 0.15s lightbox-fade-in;
  }

@media (prefers-reduced-motion) {

.lightbox:not(.lightbox--closing) .lightbox__body {
      animation: none
  }
    }

.lightbox--closing {
  animation: 0.15s lightbox-fade-out;
  animation-fill-mode: forwards;
}

@media (prefers-reduced-motion) {

.lightbox--closing {
    animation: none
}
  }

.lightbox__body {
  position: relative;
  width: 100%;
  height: 100%;
}

.lightbox__header {
  position: absolute;
  z-index: 1;
  top: 0;
  right: 0;
  left: 0;
  display: flex;
  padding: var(--s-space-12) var(--s-space-16);
  align-items: flex-start;
  pointer-events: none;
  gap: var(--s-space-12);
  justify-content: space-between;
}

.lightbox__header .lightbox__close-button {
    order: -1;
  }

@media (min-width: 768px) {

.lightbox__header {
    justify-content: flex-end
}

    .lightbox__header .lightbox__close-button {
      order: unset;
    }
  }

.lightbox__toolbar {
  display: flex;
  align-items: center;
  pointer-events: auto;
  gap: var(--s-space-12);
}

.lightbox__controls {
  position: absolute;
  z-index: 1;
  top: 50%;
  right: 0;
  left: 0;
  display: none;
  padding-right: var(--s-space-16);
  padding-left: var(--s-space-16);
  justify-content: space-between;
  align-items: flex-start;
  pointer-events: none;
}

@media (min-width: 768px) {

.lightbox__controls {
    display: flex
}
  }

.lightbox__close-button,
.lightbox__download-button,
.lightbox__previous-slide-button,
.lightbox__next-slide-button {
  display: inline-flex;
  width: 2.5rem;
  height: 2.5rem;
  justify-content: center;
  align-items: center;
  border: none;
  border-radius: 50%;
  color: var(--s-icon-on-image);
  background-color: rgba(0, 0, 0, 0.6);
  cursor: pointer;
  transition: opacity 0.15s;
  pointer-events: auto;
}

.lightbox__close-button:disabled, .lightbox__download-button:disabled, .lightbox__previous-slide-button:disabled, .lightbox__next-slide-button:disabled {
    pointer-events: none;
    opacity: 0;
  }

@media (min-width: 992px) and (max-width: 1439px) and (hover: hover),(min-width: 1440px) {

.lightbox__close-button,
.lightbox__download-button,
.lightbox__previous-slide-button,
.lightbox__next-slide-button {
    width: 2.25rem;
    height: 2.25rem
}
  }

.lightbox__content {
  overflow: hidden;
  width: 100%;
  height: 100%;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.lightbox__slides {
  display: flex;
  width: 100%;
  height: 100%;
}

.lightbox__slides ::slotted(*) {
    flex-basis: 100%;
    flex-shrink: 0;
    transition: transform 0.3s;
  }

@media (min-width: 768px) {

.lightbox__slides ::slotted(*) {
      padding: 4rem 5rem
  }
    }

@media (prefers-reduced-motion) {

.lightbox__slides ::slotted(*) {
      transition: none
  }
    }

.lightbox__pagination {
  position: absolute;
  bottom: var(--s-space-32);
  left: 50%;
  padding: var(--s-space-4) var(--s-space-12);
  border-radius: var(--s-border-radius-base);
  color: var(--s-text-on-image);
  background-color: rgba(0, 0, 0, 0.6);
  font-weight: var(--s-font-weight-medium);
  line-height: var(--s-line-height-base);
  transform: translateX(-50%);
  pointer-events: none;
}

@media (min-width: 768px) {

.lightbox__pagination {
    display: none
}
  }

@keyframes lightbox-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes lightbox-fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
