.as-wpg-modal {

    --wpg-z: 1000000;
    --wpg-bg: rgba(0, 0, 0, 0.9);
    --wpg-blur: 2px;
    --wpg-fade: .25s;
    --wpg-slide: .3s cubic-bezier(.25, .46, .45, .94);

    --wpg-btn-size: 56px;
    --wpg-btn-bg: rgba(50, 50, 50, 0.5);
    --wpg-btn-bg-hover: rgba(50, 50, 50, 0.9);
    --wpg-btn-color: #fff;
    --wpg-btn-blur: 10px;
    --wpg-btn-ring: rgba(255, 255, 255, 0.61);
    --wpg-btn-shadow: 0 4px 15px rgba(0, 0, 0, 0.4);

    --wpg-img-pad: 20px;

    position: fixed;
    inset: 0;
    z-index: var(--wpg-z);
    background: var(--wpg-bg);
    -webkit-backdrop-filter: blur(var(--wpg-blur));
    backdrop-filter: blur(var(--wpg-blur));
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--wpg-fade) ease, visibility 0s linear var(--wpg-fade);

    display: flex;
    justify-content: center;
    align-items: center;
}

.as-wpg-modal.is-visible {
    opacity: 1;
    visibility: visible;
    transition: opacity var(--wpg-fade) ease;
}

.as-wpg-locked { overflow: hidden !important; }

.as-wpg-track {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    transform: translateZ(0);
    transition: transform var(--wpg-slide);
    will-change: transform;
}

.as-wpg-track.no-anim { transition: none; }

.as-wpg-slide {
    flex: 0 0 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: var(--wpg-img-pad);
    box-sizing: border-box;
}

.as-wpg-img {
    max-width: calc(100% - var(--wpg-img-pad) * 2);
    max-height: calc(100% - var(--wpg-img-pad) * 2);
    object-fit: contain;
    border-radius: 4px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: opacity .25s ease;
}

.as-wpg-img.is-loaded { opacity: 1; }

.as-wpg-close,
.as-wpg-prev,
.as-wpg-next {
    position: absolute;
    background: var(--wpg-btn-bg);
    color: var(--wpg-btn-color);
    border: none;
    border-radius: 50%;
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
    -webkit-backdrop-filter: blur(var(--wpg-btn-blur));
    backdrop-filter: blur(var(--wpg-btn-blur));
    box-shadow: var(--wpg-btn-shadow);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    z-index: 1;
    transition: background-color .2s ease, transform .1s ease, opacity .2s ease;
}

.as-wpg-close:hover,
.as-wpg-prev:hover,
.as-wpg-next:hover {
    background: var(--wpg-btn-bg-hover);
}

.as-wpg-close:active,
.as-wpg-prev:active,
.as-wpg-next:active {
    transform: scale(0.95);
}

.as-wpg-close:focus-visible,
.as-wpg-prev:focus-visible,
.as-wpg-next:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

.as-wpg-prev:disabled,
.as-wpg-next:disabled {
    opacity: 0.3;
    pointer-events: none;
}

.as-wpg-close {
    top: 20px;
    right: 20px;
    width: 48px;
    height: 48px;
    background: rgba(0, 0, 0, 0.8);
    border: 3px solid var(--wpg-btn-ring);
    font-size: 28px;
    line-height: 1;
}

.as-wpg-prev,
.as-wpg-next {
    top: 50%;
    width: var(--wpg-btn-size);
    height: var(--wpg-btn-size);
    margin-top: calc(var(--wpg-btn-size) / -2);
}

.as-wpg-prev { left: 20px; }
.as-wpg-next { right: 20px; }

.as-wpg-prev::before,
.as-wpg-next::before {
    content: "";
    width: 22px;
    height: 22px;
    background: currentColor;
    -webkit-mask: var(--wpg-arrow) center / contain no-repeat;
    mask: var(--wpg-arrow) center / contain no-repeat;
}

.as-wpg-prev {
    --wpg-arrow: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M15 4 7 12l8 8' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}

.as-wpg-next {
    --wpg-arrow: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m9 4 8 8-8 8' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
}

.as-wpg-spinner {
    position: absolute;
    width: 40px;
    height: 40px;
    border: 3px solid rgba(255, 255, 255, 0.2);
    border-top-color: #fff;
    border-radius: 50%;
    animation: wpg-spin .8s linear infinite;
    pointer-events: none;
}

.as-wpg-slide.is-loaded .as-wpg-spinner { display: none; }

@keyframes wpg-spin {
    to { transform: rotate(360deg); }
}

.as-wpg-host img,
.wp-block-gallery-slider img {
    cursor: zoom-in;
    transition: opacity .2s ease;
}

.as-wpg-host a:hover img {
    opacity: 0.85;
}

@media (max-width: 768px) {
    .as-wpg-modal {
        --wpg-btn-size: 48px;
        --wpg-img-pad: 10px;
    }
    .as-wpg-close {
        width: 40px;
        height: 40px;
        top: 15px;
        right: 15px;
        font-size: 24px;
    }
    .as-wpg-prev { left: 15px; }
    .as-wpg-next { right: 15px; }
    .as-wpg-prev::before,
    .as-wpg-next::before {
        width: 18px;
        height: 18px;
    }
}

@media (max-width: 480px) {
    .as-wpg-modal {
        --wpg-btn-size: 44px;
    }
    .as-wpg-close {
        width: 36px;
        height: 36px;
        top: 10px;
        right: 10px;
        font-size: 22px;
    }
    .as-wpg-prev { left: 10px; }
    .as-wpg-next { right: 10px; }
}

@media (prefers-reduced-motion: reduce) {
    .as-wpg-modal,
    .as-wpg-track,
    .as-wpg-close,
    .as-wpg-prev,
    .as-wpg-next,
    .as-wpg-img {
        transition: none;
    }
    .as-wpg-spinner {
        animation: none;
    }
}
