/* ── Pro Gallery — front-end ─────────────────────────────────── */
.pro-gallery { width: 100%; }

/* Items */
.pro-gallery__item { position: relative; }
.pro-gallery__item-link {
    display: block; position: relative; overflow: hidden; border-radius: var(--pg-radius, 3px);
    color: inherit; text-decoration: none;
}
.pro-gallery__item-link img {
    display: block; width: 100%; height: auto; transition: transform 0.3s ease;
}
.pro-gallery__item-link:hover img { transform: scale(1.04); }
.pro-gallery__item-link::after {
    content: ''; position: absolute; inset: 0; background: rgba(0,0,0,0);
    transition: background 0.2s; pointer-events: none;
}
.pro-gallery__item-link:hover::after { background: rgba(0,0,0,0.12); }
.pro-gallery[data-lightbox="true"] .pro-gallery__item-link { cursor: zoom-in; }

/* Grid */
.pro-gallery__grid--grid {
    display: grid;
    grid-template-columns: repeat(var(--pg-columns, 3), minmax(0, 1fr));
    gap: var(--pg-gap, 8px);
}
.pro-gallery__grid--grid .pro-gallery__item-link img { height: 220px; object-fit: cover; }
.pro-gallery__grid--grid[data-ratio="1:1"]  .pro-gallery__item-link img { height: auto; aspect-ratio: 1 / 1; }
.pro-gallery__grid--grid[data-ratio="4:3"]  .pro-gallery__item-link img { height: auto; aspect-ratio: 4 / 3; }
.pro-gallery__grid--grid[data-ratio="3:2"]  .pro-gallery__item-link img { height: auto; aspect-ratio: 3 / 2; }
.pro-gallery__grid--grid[data-ratio="16:9"] .pro-gallery__item-link img { height: auto; aspect-ratio: 16 / 9; }

/* Masonry — CSS columns as the no-JS fallback, Masonry.js takes over once ready */
.pro-gallery__grid--masonry { column-count: var(--pg-columns, 3); column-gap: var(--pg-gap, 8px); }
.pro-gallery__grid--masonry .pro-gallery__item { break-inside: avoid; margin-bottom: var(--pg-gap, 8px); }
.pro-gallery__grid--masonry.is-masonry-ready { column-count: auto; }
.pro-gallery__grid--masonry.is-masonry-ready .pro-gallery__item {
    width: calc((100% - (var(--pg-columns, 3) - 1) * var(--pg-gap, 8px)) / var(--pg-columns, 3));
}

/* Slider */
.pro-gallery--slider .pro-gallery__swiper { border-radius: var(--pg-radius, 4px); overflow: hidden; }
.pro-gallery--slider .pro-gallery__slide { position: relative; }
.pro-gallery--slider .pro-gallery__item-link { border-radius: 0; }
.pro-gallery--slider .pro-gallery__item-link img { max-height: 560px; object-fit: cover; }
.pro-gallery--slider .pro-gallery__item-link:hover img { transform: none; }
.pro-gallery--slider .swiper-button-prev,
.pro-gallery--slider .swiper-button-next {
    width: 40px; height: 40px; border-radius: 50%; color: #fff;
    background: rgba(0,0,0,0.4); transition: background 0.2s;
}
.pro-gallery--slider .swiper-button-prev:hover,
.pro-gallery--slider .swiper-button-next:hover { background: rgba(0,0,0,0.65); }
.pro-gallery--slider .swiper-button-prev::after,
.pro-gallery--slider .swiper-button-next::after { font-size: 16px; }
.pro-gallery--slider .swiper-pagination-bullet-active { background: #fff; }

/* Captions */
.pro-gallery__caption { font-size: 13px; line-height: 1.4; color: #555; padding: 6px 4px 2px; }
.pro-gallery__caption--hover {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 10px 12px;
    background: linear-gradient(transparent, rgba(0,0,0,0.7)); color: #fff;
    font-size: 13px; opacity: 0; transform: translateY(6px);
    transition: opacity 0.2s, transform 0.2s; pointer-events: none;
}
.pro-gallery__item-link:hover .pro-gallery__caption--hover,
.pro-gallery__item-link:focus-visible .pro-gallery__caption--hover { opacity: 1; transform: none; }
.pro-gallery--slider .pro-gallery__caption {
    position: absolute; left: 0; right: 0; bottom: 0; padding: 10px 16px;
    background: rgba(0,0,0,0.55); color: #fff; font-size: 14px;
}
@media (hover: none) { .pro-gallery__caption--hover { opacity: 1; transform: none; } }

/* Block styles */
.pro-gallery.is-style-rounded { --pg-radius: 12px; }
.pro-gallery.is-style-shadow .pro-gallery__item-link { box-shadow: 0 2px 10px rgba(0,0,0,0.18); }
.pro-gallery.is-style-shadow .pro-gallery__item-link:hover { box-shadow: 0 6px 18px rgba(0,0,0,0.25); }
.pro-gallery.is-style-framed .pro-gallery__item-link { border: 1px solid rgba(0,0,0,0.12); padding: 6px; background: #fff; }
.pro-gallery.is-style-framed .pro-gallery__item-link img { border-radius: 0; }

/* Responsive */
@media (max-width: 768px) {
    .pro-gallery__grid--grid { grid-template-columns: repeat(min(var(--pg-columns, 3), 2), minmax(0, 1fr)); }
    .pro-gallery__grid--grid .pro-gallery__item-link img { height: 160px; }
    .pro-gallery__grid--masonry:not(.is-masonry-ready) { column-count: min(var(--pg-columns, 3), 2); }
    .pro-gallery__grid--masonry.is-masonry-ready { --pg-columns: 2; }
}
@media (max-width: 480px) {
    .pro-gallery__grid--grid { grid-template-columns: 1fr; }
    .pro-gallery__grid--grid .pro-gallery__item-link img { height: 200px; }
    .pro-gallery__grid--masonry:not(.is-masonry-ready) { column-count: 1; }
    .pro-gallery__grid--masonry.is-masonry-ready { --pg-columns: 1; }
}

/* ── Lightbox ──────────────────────────────────────────────────── */
/* Rules below are deliberately explicit (and a few !important) so theme/Elementor
   global img/svg/button styles cannot leak into the overlay. */
html.pg-lightbox-open { overflow: hidden; }

.pg-lightbox {
    display: none; position: fixed; inset: 0; z-index: 2147483000;
    background: rgba(8,8,8,0.94); color: #fff; outline: none;
    grid-template-rows: auto 1fr auto auto; grid-template-columns: 100%;
    -webkit-user-select: none; user-select: none;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}
.pg-lightbox.is-open { display: grid; }

.pg-lightbox__bar {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 14px; min-height: 52px;
}
.pg-lightbox__counter { font-size: 13px; letter-spacing: 0.05em; color: rgba(255,255,255,0.75); }
.pg-lightbox__actions { display: flex; gap: 4px; }

/* Buttons: plain white icons, no background or border */
.pg-lightbox__btn,
.pg-lightbox__nav,
.pg-lightbox__thumb {
    -webkit-appearance: none; appearance: none;
    margin: 0; border: 0 !important; border-radius: 0; box-shadow: none !important;
    background: transparent !important; color: #fff !important; text-decoration: none;
    font: inherit; line-height: 0; cursor: pointer;
}
.pg-lightbox__btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; padding: 0; opacity: 0.85; transition: opacity 0.15s;
}
.pg-lightbox__btn:hover, .pg-lightbox__btn:focus-visible { opacity: 1; }
.pg-lightbox__btn:focus { outline: none; }
.pg-lightbox__btn:focus-visible { outline: 2px solid rgba(255,255,255,0.6); outline-offset: 2px; }
.pg-lightbox__download { display: none; }
.pg-lightbox.has-download .pg-lightbox__download { display: inline-flex; }

/* Icons: force white strokes, no fill, fixed size — beats theme svg/path rules */
.pg-lightbox svg {
    display: block !important; width: 24px !important; height: 24px !important;
    max-width: none !important; fill: none !important; stroke: #fff !important;
    stroke-width: 2 !important; stroke-linecap: round; stroke-linejoin: round;
    filter: drop-shadow(0 1px 2px rgba(0,0,0,0.6)); pointer-events: none;
}
.pg-lightbox svg * { fill: none !important; stroke: #fff !important; }
.pg-lightbox__nav svg { width: 34px !important; height: 34px !important; }

.pg-lightbox__stage {
    position: relative; display: flex; align-items: center; justify-content: center;
    overflow: hidden; touch-action: none; min-height: 0; min-width: 0; width: 100%;
}
.pg-lightbox__img {
    max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain;
    cursor: zoom-in; transform-origin: center center; will-change: transform;
    transition: opacity 0.2s; -webkit-user-drag: none;
}
.pg-lightbox__img.is-loading { opacity: 0.25; }
.pg-lightbox.is-zoomed .pg-lightbox__img { cursor: grab; }
.pg-lightbox.is-zoomed .pg-lightbox__img:active { cursor: grabbing; }

.pg-lightbox__nav {
    position: absolute; top: 50%; transform: translateY(-50%); width: 56px; height: 72px; padding: 0;
    display: flex; align-items: center; justify-content: center; opacity: 0.8; transition: opacity 0.15s;
}
.pg-lightbox__nav:hover, .pg-lightbox__nav:focus-visible { opacity: 1; }
.pg-lightbox__nav:focus { outline: none; }
.pg-lightbox__prev { left: 4px; }
.pg-lightbox__next { right: 4px; }
.pg-lightbox.is-single .pg-lightbox__nav,
.pg-lightbox.is-zoomed .pg-lightbox__nav { display: none; }

.pg-lightbox__caption {
    padding: 10px 20px 0; text-align: center; font-size: 14px; line-height: 1.5;
    color: rgba(255,255,255,0.85); max-width: 720px; margin: 0 auto;
}

.pg-lightbox__thumbs {
    display: flex; gap: 6px; padding: 12px 14px; overflow-x: auto; scrollbar-width: none;
    justify-content: safe center; width: 100%; box-sizing: border-box;
}
.pg-lightbox__thumbs::-webkit-scrollbar { display: none; }
.pg-lightbox__thumbs:empty { padding: 8px; }
.pg-lightbox__thumb {
    flex: 0 0 auto; width: 56px; height: 42px; padding: 0; overflow: hidden; border-radius: 3px;
    opacity: 0.45; transition: opacity 0.15s; outline: 2px solid transparent; outline-offset: -2px;
}
.pg-lightbox__thumb img {
    display: block !important; width: 100% !important; height: 100% !important;
    max-width: none !important; object-fit: cover; margin: 0 !important; border: 0 !important; border-radius: 0 !important;
}
.pg-lightbox__thumb:hover, .pg-lightbox__thumb:focus-visible { opacity: 0.85; }
.pg-lightbox__thumb.is-active { opacity: 1; outline-color: #fff; }

@media (max-width: 600px) {
    .pg-lightbox__nav { width: 44px; }
    .pg-lightbox__nav svg { width: 28px !important; height: 28px !important; }
    .pg-lightbox__thumb { width: 44px; height: 34px; }
    .pg-lightbox__caption { font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) {
    .pro-gallery__item-link img, .pg-lightbox__img, .pro-gallery__caption--hover { transition: none !important; }
}
