.cp-lightbox-open { overflow: hidden; }

.gallery-lightbox-trigger {
    display: block;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    cursor: zoom-in;
}

.gallery-lightbox-trigger img { transform: rotate(var(--image-rotation, 0deg)); transition: transform .25s ease, opacity .25s ease; }
.gallery-lightbox-trigger:hover img { transform: rotate(var(--image-rotation, 0deg)) scale(1.015); opacity: .94; }
.gallery-lightbox-trigger:focus-visible { outline: 3px solid #fff; outline-offset: -3px; }

.cp-lightbox[hidden] { display: none; }
.cp-lightbox {
    position: fixed;
    z-index: 1000;
    inset: 0;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    background: rgba(17, 18, 19, .96);
    color: #fff;
    font-family: Arial, Helvetica, sans-serif;
}

.cp-lightbox__topbar {
    display: flex;
    min-height: 4rem;
    align-items: center;
    justify-content: space-between;
    padding: .75rem 1rem;
}

.cp-lightbox__actions { display: flex; align-items: center; gap: .5rem; }
.cp-lightbox__counter { font-size: 1rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.cp-lightbox__close, .cp-lightbox__zoom, .cp-lightbox__arrow {
    display: grid;
    width: 3rem;
    height: 3rem;
    place-items: center;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    color: #fff;
    cursor: pointer;
}
.cp-lightbox__close { font-size: 2rem; line-height: 1; }
.cp-lightbox__zoom { font-size: 1.55rem; line-height: 1; }
.cp-lightbox__zoom svg { width: 1.45rem; height: 1.45rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-width: 1.8; }
.cp-lightbox__zoom:disabled { opacity: .35; cursor: default; }
.cp-lightbox__close:hover, .cp-lightbox__zoom:hover, .cp-lightbox__arrow:hover { background: rgba(255, 255, 255, .18); }
.cp-lightbox__zoom:disabled:hover { background: rgba(255, 255, 255, .08); }
.cp-lightbox button:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

.cp-lightbox__stage { position: relative; display: grid; min-height: 0; place-items: center; padding: 1rem 5rem; touch-action: pan-y; }
.cp-lightbox__figure { display: grid; max-width: 100%; max-height: 100%; place-items: center; margin: 0; }
.cp-lightbox__image { display: block; max-width: 100%; max-height: calc(100vh - 12rem); object-fit: contain; transform: translate3d(0, 0, 0) scale(1); transform-origin: center; user-select: none; -webkit-user-drag: none; }
.cp-lightbox__image[data-zoomed="true"] { cursor: grab; }
.cp-lightbox__image[data-dragging="true"] { cursor: grabbing; }
.cp-lightbox__caption {
    position: absolute;
    z-index: 2;
    right: 50%;
    bottom: .85rem;
    width: max-content;
    max-width: min(55rem, calc(100% - 10rem));
    padding: .65rem .9rem;
    border-radius: .65rem;
    background: rgba(15, 18, 22, .76);
    box-shadow: 0 .35rem 1rem rgba(0, 0, 0, .22);
    color: #fff;
    font-size: .9rem;
    line-height: 1.45;
    text-align: center;
    text-wrap: balance;
    transform: translateX(50%);
    backdrop-filter: blur(.35rem);
    pointer-events: none;
}
.cp-lightbox__caption:empty { display: none; }
.cp-lightbox__arrow { position: absolute; top: 50%; transform: translateY(-50%); font-size: 2rem; }
.cp-lightbox__arrow--previous { left: 1rem; }
.cp-lightbox__arrow--next { right: 1rem; }

.cp-lightbox__thumbs { display: flex; min-height: 5.5rem; justify-content: center; gap: .55rem; overflow-x: auto; padding: .75rem 1rem 1rem; }
.cp-lightbox__thumb {
    flex: 0 0 3.75rem;
    height: 3.75rem;
    padding: 0;
    overflow: hidden;
    border: 2px solid transparent;
    border-radius: .25rem;
    background: #292a2b;
    opacity: .58;
    cursor: pointer;
}
.cp-lightbox__thumb[aria-current="true"] { border-color: #fff; opacity: 1; }
.cp-lightbox__thumb img { width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 40rem) {
    .cp-lightbox__topbar { min-height: 3.5rem; }
    .cp-lightbox__stage { padding: .5rem; }
    .cp-lightbox__image { max-height: calc(100vh - 10rem); }
    .cp-lightbox__arrow { top: auto; bottom: 1rem; }
    .cp-lightbox__arrow--previous { left: 1rem; }
    .cp-lightbox__arrow--next { right: 1rem; }
    .cp-lightbox__thumbs { justify-content: flex-start; }
    .cp-lightbox__caption { bottom: .65rem; max-width: calc(100% - 6rem); padding: .5rem .7rem; font-size: .82rem; }
}

@media (prefers-reduced-motion: reduce) {
    .gallery-lightbox-trigger img { transition: none; }
}
