/* Lightbox Widget - overlay, content, close button, animations */

/* Reserve scrollbar space to prevent layout jump when lightbox opens */
html {
    scrollbar-gutter: stable;
}

/* Prevent body scroll when lightbox is open */
body.awp-lb-open {
    overflow: hidden;
}

.awp-lb-wrapper {
    position: relative;
}

.awp-lb-trigger {
    background: none;
    border: 0;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    outline: 0;
    box-shadow: none;
}

.awp-lb-trigger:hover,
.awp-lb-trigger:focus,
.awp-lb-trigger:active {
    border: 0;
    outline: 0;
    box-shadow: none;
}

.awp-lb-trigger .elementor-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.awp-lb-trigger .elementor-icon i {
    font-size: inherit;
    line-height: 1;
}

.awp-lb-trigger .elementor-icon svg {
    width: 1em;
    height: 1em;
    display: block;
}

.awp-lb-trigger-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* Fallback when circular template reference or fetch-on-click is used */
.awp-lb-depth-limit .awp-lb-trigger {
    cursor: pointer;
}

/* Overlay - fixed, full viewport */
.awp-lb-scope .awp-lb-overlay,
.awp-lb-overlay {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--awp-lb-duration, 300ms) var(--awp-lb-easing, ease),
        transform var(--awp-lb-duration, 300ms) var(--awp-lb-easing, ease),
        visibility 0s var(--awp-lb-visibility-delay, 0s);
    will-change: opacity, transform;
}

.admin-bar .awp-lb-overlay {
    top: 32px;
    height: calc(100vh - 32px);
}

@media (max-width: 782px) {
    .admin-bar .awp-lb-overlay {
        top: 46px;
        height: calc(100vh - 46px);
    }
}

/* Hidden overlay and all descendants must ignore pointer events so clicks pass through to trigger below */
.awp-lb-overlay[aria-hidden="true"],
.awp-lb-overlay[aria-hidden="true"] * {
    pointer-events: none;
}

.awp-lb-overlay[aria-hidden="false"] {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

/* Inner passes clicks through so backdrop hits overlay; content-wrap stays clickable */
.awp-lb-overlay[aria-hidden="false"] .awp-lb-inner {
    pointer-events: none;
}
.awp-lb-overlay[aria-hidden="false"] .awp-lb-content-wrap {
    pointer-events: auto;
}

.awp-lb-inner {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.awp-lb-inner .awp-lb-content-wrap {
    pointer-events: auto;
}

.awp-lb-inner.awp-lb-sized .awp-lb-content-wrap {
    position: relative;
    display: flex;
    flex-direction: column;
}

.awp-lb-inner.awp-lb-full .awp-lb-content-wrap {
    width: 100vw;
    height: 100vh;
    display: flex;
    flex-direction: column;
}

.awp-lb-content-wrap {
    position: relative;
    padding: 20px;
}

/* Track mode: side-by-side slide - panels stay adjacent, no gap */
.awp-lb-content-wrap.awp-lb-trans-track-wrap {
    overflow: hidden;
    flex: 1;
    min-height: 0;
}
.awp-lb-trans-track {
    display: flex;
    width: 200%;
    height: 100%;
    min-height: 0;
    flex: 1;
    flex-shrink: 0;
    align-self: stretch;
    transition: transform 0.3s ease;
}
/* Must beat .content-scroll > .awp-lb-content (flex:1) — only direct track panels */
.awp-lb-content-wrap.awp-lb-trans-track-wrap .awp-lb-trans-track > .awp-lb-content {
    flex: 0 0 50%;
    min-width: 0;
    min-height: 0;
    overflow: auto;
    overflow-anchor: none;
}
.awp-lb-trans-track.awp-lb-trans-track-slide-left {
    transform: translateX(0);
}
.awp-lb-trans-track.awp-lb-trans-track-slide-left.awp-lb-trans-track-active {
    transform: translateX(-50%);
}
.awp-lb-trans-track.awp-lb-trans-track-slide-right {
    transform: translateX(-50%);
}
.awp-lb-trans-track.awp-lb-trans-track-slide-right.awp-lb-trans-track-active {
    transform: translateX(0);
}
/* Vertical track for slide-up / slide-down */
.awp-lb-trans-track.awp-lb-trans-track-vertical {
    flex-direction: column;
    width: 100%;
    height: 200%;
}
.awp-lb-content-wrap.awp-lb-trans-track-wrap .awp-lb-trans-track.awp-lb-trans-track-vertical > .awp-lb-content {
    flex: 0 0 50%;
    min-height: 0;
    min-width: 0;
    overflow: auto;
}
.awp-lb-trans-track.awp-lb-trans-track-slide-down {
    transform: translateY(0);
}
.awp-lb-trans-track.awp-lb-trans-track-slide-down.awp-lb-trans-track-active {
    transform: translateY(-50%);
}
.awp-lb-trans-track.awp-lb-trans-track-slide-up {
    transform: translateY(-50%);
}
.awp-lb-trans-track.awp-lb-trans-track-slide-up.awp-lb-trans-track-active {
    transform: translateY(0);
}

/* Overlap mode: fade - wrapper holds both panels, absolutely positioned to prevent duplication */
.awp-lb-content-wrap.awp-lb-trans-overlap {
    position: relative;
}
.awp-lb-trans-fade-wrap {
    position: absolute;
    inset: 0;
}
.awp-lb-trans-fade-wrap .awp-lb-content {
    position: absolute;
    inset: 0;
    overflow: auto;
    overflow-anchor: none;
}

/* Scroll on content — direct child only (do not target slide-track panels) */
.awp-lb-content-wrap.awp-lb-content-scroll > .awp-lb-content {
    flex: 1;
    min-height: 0;
    overflow: auto;
    overflow-anchor: none;
}

.awp-lb-content-wrap.awp-lb-content-scroll > .awp-lb-trans-fade-wrap {
    flex: 1;
    min-height: 0;
}

.awp-lb-content-wrap.awp-lb-content-no-scroll > .awp-lb-content {
    overflow: visible;
}

.awp-lb-content-wrap.awp-lb-content-no-scroll {
    overflow: hidden;
}

.awp-lb-content {
    position: relative;
    display: flow-root;
    min-height: 0;
    overflow-anchor: none;
}

/*
 * Soft reset only: without !important so .elementor-element-*.e-con rules from the template still win.
 * Restores stable flex/centering for nested transitions; plain .e-con defaults no longer stack awkwardly.
 */
.awp-lb-content .e-con,
.awp-lb-content .e-con-inner {
    padding: 0;
}

/* Close button placement */
.awp-lb-scope .awp-lb-close,
.awp-lb-close {
    position: absolute;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: 0;
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    outline: 0;
    box-shadow: none;
    z-index: 10;
    pointer-events: auto;
    transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.awp-lb-close:hover,
.awp-lb-close:focus,
.awp-lb-close:active {
    outline: 0;
    box-shadow: none;
}

.awp-lb-close .elementor-icon,
.awp-lb-close svg {
    display: block;
    pointer-events: none;
}

/* Offset: uses --awp-lb-close-offset from overlay (inherited) */
.awp-lb-inner.awp-lb-close-top-left .awp-lb-close,
.awp-lb-overlay.awp-lb-close-top-left .awp-lb-close {
    top: calc(0px + var(--awp-lb-close-offset, 0));
    left: calc(8px + var(--awp-lb-close-offset, 0));
    right: auto;
    bottom: auto;
}

.awp-lb-inner.awp-lb-close-top-right .awp-lb-close,
.awp-lb-overlay.awp-lb-close-top-right .awp-lb-close {
    top: calc(0px + var(--awp-lb-close-offset, 0));
    right: calc(15px + var(--awp-lb-close-offset, 0));
    left: auto;
    bottom: auto;
}

.awp-lb-inner.awp-lb-close-bottom-left .awp-lb-close,
.awp-lb-overlay.awp-lb-close-bottom-left .awp-lb-close {
    bottom: calc(8px + var(--awp-lb-close-offset, 0));
    left: calc(8px + var(--awp-lb-close-offset, 0));
    right: auto;
    top: auto;
}

.awp-lb-inner.awp-lb-close-bottom-right .awp-lb-close,
.awp-lb-overlay.awp-lb-close-bottom-right .awp-lb-close {
    bottom: calc(8px + var(--awp-lb-close-offset, 0));
    right: calc(8px + var(--awp-lb-close-offset, 0));
    left: auto;
    top: auto;
}

/* Admin bar: overlay is already shifted (top: 32px/46px), so close button uses same offset as normal */

/* Close lock: overlay - close is direct child of overlay; overlay stays fixed, close positions relative to it */
.awp-lb-overlay.awp-lb-close-lock-overlay .awp-lb-close {
    position: absolute;
}

/* Close lock: outside-content - close in content-close-wrapper, positioned just outside content box */
.awp-lb-content-outer {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
}

.awp-lb-content-close-wrapper {
    position: relative;
    display: flex;
    flex-direction: column;
}

.awp-lb-inner.awp-lb-full .awp-lb-content-close-wrapper {
    width: 100vw;
    height: 100vh;
}

/* content-wrap fills the wrapper; widget dimension rules apply to wrapper instead */
.awp-lb-inner .awp-lb-content-close-wrapper .awp-lb-content-wrap {
    flex: 1;
    min-height: 0;
    width: 100% !important;
    height: 100% !important;
}

/* Close positions at content box corners, transform pushes it just outside (vertical only; offset handles horizontal) */
.awp-lb-inner.awp-lb-close-top-left .awp-lb-content-close-wrapper .awp-lb-close {
    top: calc(0px + var(--awp-lb-close-offset, 0));
    left: calc(0px + var(--awp-lb-close-offset, 0));
    right: auto;
    bottom: auto;
    transform: translateY(-100%);
}

.awp-lb-inner.awp-lb-close-top-right .awp-lb-content-close-wrapper .awp-lb-close {
    top: calc(0px + var(--awp-lb-close-offset, 0));
    right: calc(0px + var(--awp-lb-close-offset, 0));
    left: auto;
    bottom: auto;
    transform: translateY(-100%);
}

.awp-lb-inner.awp-lb-close-bottom-left .awp-lb-content-close-wrapper .awp-lb-close {
    bottom: calc(0px + var(--awp-lb-close-offset, 0));
    left: calc(0px + var(--awp-lb-close-offset, 0));
    right: auto;
    top: auto;
    transform: translateY(100%);
}

.awp-lb-inner.awp-lb-close-bottom-right .awp-lb-content-close-wrapper .awp-lb-close {
    bottom: calc(0px + var(--awp-lb-close-offset, 0));
    right: calc(0px + var(--awp-lb-close-offset, 0));
    left: auto;
    top: auto;
    transform: translateY(100%);
}

/* Close lock: inside-content - close inside content-wrap, overlays content */
.awp-lb-content-wrap .awp-lb-close {
    position: absolute;
}

/* Open/Close animations - use data attributes from widget */
.awp-lb-overlay[aria-hidden="true"][data-anim-close="fade"] { transform: none; }
.awp-lb-overlay[aria-hidden="true"][data-anim-close="slide-left"] { transform: translateX(-100%); }
.awp-lb-overlay[aria-hidden="true"][data-anim-close="slide-right"] { transform: translateX(100%); }
.awp-lb-overlay[aria-hidden="true"][data-anim-close="slide-up"] { transform: translateY(-100%); }
.awp-lb-overlay[aria-hidden="true"][data-anim-close="slide-down"] { transform: translateY(100%); }
.awp-lb-overlay[aria-hidden="false"][data-anim-open="fade"],
.awp-lb-overlay[aria-hidden="false"][data-anim-open="slide-left"],
.awp-lb-overlay[aria-hidden="false"][data-anim-open="slide-right"],
.awp-lb-overlay[aria-hidden="false"][data-anim-open="slide-up"],
.awp-lb-overlay[aria-hidden="false"][data-anim-open="slide-down"] {
    transform: translate(0) scale(1);
}

/* Content transition animations (for nested lightbox swaps) */
.awp-lb-content-wrap .awp-lb-trans-out-fade,
.awp-lb-content-wrap .awp-lb-trans-out-slide-left,
.awp-lb-content-wrap .awp-lb-trans-out-slide-right,
.awp-lb-content-wrap .awp-lb-trans-out-slide-up,
.awp-lb-content-wrap .awp-lb-trans-out-slide-down,
.awp-lb-content-wrap .awp-lb-trans-in-fade,
.awp-lb-content-wrap .awp-lb-trans-in-slide-left,
.awp-lb-content-wrap .awp-lb-trans-in-slide-right,
.awp-lb-content-wrap .awp-lb-trans-in-slide-up,
.awp-lb-content-wrap .awp-lb-trans-in-slide-down {
    transition: opacity 0.3s ease, transform 0.3s ease;
}

.awp-lb-trans-out-fade {
    opacity: 0;
}

.awp-lb-trans-out-slide-left {
    transform: translateX(-100%);
}

.awp-lb-trans-out-slide-right {
    transform: translateX(100%);
}

.awp-lb-trans-out-slide-up {
    transform: translateY(-100%);
}

.awp-lb-trans-out-slide-down {
    transform: translateY(100%);
}

.awp-lb-trans-in-fade {
    opacity: 0;
}

.awp-lb-trans-in-fade.awp-lb-trans-in-active {
    opacity: 1;
}

.awp-lb-trans-in-slide-left {
    transform: translateX(100%);
}

.awp-lb-trans-in-slide-left.awp-lb-trans-in-active {
    transform: translateX(0);
}

.awp-lb-trans-in-slide-right {
    transform: translateX(-100%);
}

.awp-lb-trans-in-slide-right.awp-lb-trans-in-active {
    transform: translateX(0);
}

.awp-lb-trans-in-slide-up {
    transform: translateY(100%);
}

.awp-lb-trans-in-slide-up.awp-lb-trans-in-active {
    transform: translateY(0);
}

.awp-lb-trans-in-slide-down {
    transform: translateY(-100%);
}

.awp-lb-trans-in-slide-down.awp-lb-trans-in-active {
    transform: translateY(0);
}
