.elementor-widget-vallaurie_justified_gallery {
    --vjg-target: 300px; --vjg-min: 150px; --vjg-max: 450px;
    --vjg-gap: 10px; --vjg-radius: 15px;
    --vjg-hover-scale: 1.04; --vjg-hover-duration: 350ms;
    --vjg-backdrop-color: #090909; --vjg-backdrop-opacity: .92;
    --vjg-icon-color: #fff; --vjg-arrow-size: 32px; --vjg-close-size: 28px;
    --vjg-lightbox-duration: 200ms;
    min-width: 0;
}
/* Repli sans JS, fondé sur les ratios : pas de colonnes fixes. */
.vjg-gallery { display: flex; flex-wrap: wrap; gap: var(--vjg-gap, 10px); position: relative; width: 100%; min-width: 0; }
.vjg-gallery > .vjg-item {
    appearance: none; box-sizing: border-box; display: block; position: relative;
    flex: var(--vjg-ratio, 1) 1 calc(var(--vjg-ratio, 1) * var(--vjg-target, 300px));
    min-width: 0; max-width: 100%; padding: 0; margin: 0; border: 0;
    border-radius: var(--vjg-radius, 15px); overflow: hidden;
    background: transparent; box-shadow: none; color: inherit;
    font: inherit; text-align: inherit; text-decoration: none;
}
.vjg-gallery > button.vjg-item { cursor: pointer; }
.vjg-gallery[data-vjg-layout] { display: block; }
.vjg-gallery[data-vjg-layout] > .vjg-item { position: absolute; aspect-ratio: auto !important; }
.vjg-item > img.vjg-image {
    position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none;
    object-fit: contain; object-position: 50% 50%; padding: 0; margin: 0; border: 0; border-radius: 0;
    transform: scale(1); transition: transform var(--vjg-hover-duration, 350ms) ease-out;
}
@media (hover: hover) and (pointer: fine) {
    .vjg-gallery[data-vjg-hover="yes"] > .vjg-item:hover > .vjg-image { transform: scale(var(--vjg-hover-scale, 1.04)); }
}
.vjg-gallery[data-vjg-hover="yes"] > .vjg-item:focus-visible > .vjg-image { transform: scale(var(--vjg-hover-scale, 1.04)); }
.vjg-gallery > .vjg-item:focus-visible { outline: 2px solid currentColor; outline-offset: -3px; }
.vjg-caption { position: absolute; inset: auto 0 0; padding: 10px 14px; background: rgb(0 0 0 / 55%); color: #fff; font: inherit; font-size: .85em; line-height: 1.4; pointer-events: none; }
.vjg-empty { padding: 32px; border: 1px dashed #aaa; text-align: center; }

/* Le dialogue appartient à la top layer du navigateur, au-dessus de tous les z-index. */
dialog.vjg-lightbox {
    box-sizing: border-box; position: fixed; inset: 0; width: 100%; height: 100%; height: 100dvh;
    max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
    background: transparent; color: var(--vjg-icon-color, #fff); overflow: hidden;
    z-index: 2147483647; isolation: isolate;
}
dialog.vjg-lightbox:not([open]) { display: none; }
dialog.vjg-lightbox[open] { display: grid; grid-template: 1fr / minmax(0, 1fr); }
dialog.vjg-lightbox::backdrop { background: transparent; }
.vjg-lightbox::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--vjg-backdrop-color, #090909); opacity: var(--vjg-backdrop-opacity, .92); }
.vjg-lightbox .vjg-canvas { min-width: 0; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 64px 72px; }
.vjg-lightbox .vjg-full-image { display: block; max-width: 100%; max-height: calc(100dvh - 160px); width: auto; height: auto; object-fit: contain; margin: 0; padding: 0; border: 0; border-radius: 0; box-shadow: none; user-select: none; -webkit-user-drag: none; }
.vjg-lightbox .vjg-full-caption { max-width: min(90vw, 1000px); margin: 0; color: inherit; text-align: center; font: 14px/1.5 system-ui, sans-serif; }
.vjg-lightbox .vjg-full-caption[hidden],.vjg-lightbox [hidden] { display: none !important; }
.vjg-lightbox .vjg-control {
    appearance: none; display: grid; place-items: center; position: absolute; z-index: 2;
    width: max(48px, calc(var(--vjg-arrow-size, 32px) + 16px)); height: max(48px, calc(var(--vjg-arrow-size, 32px) + 16px));
    padding: 8px; margin: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none;
    color: var(--vjg-icon-color, #fff); cursor: pointer; line-height: 1;
}
.vjg-lightbox .vjg-control:hover { background: transparent; color: var(--vjg-icon-color, #fff); }
.vjg-lightbox .vjg-control:focus-visible { outline: 2px solid currentColor; outline-offset: -4px; }
.vjg-lightbox .vjg-control svg { display: block; width: var(--vjg-arrow-size, 32px); height: var(--vjg-arrow-size, 32px); fill: none; stroke: currentColor; stroke-width: 1.7; }
.vjg-lightbox .vjg-close { top: max(12px, env(safe-area-inset-top)); right: max(12px, env(safe-area-inset-right)); }
.vjg-lightbox .vjg-close svg { width: var(--vjg-close-size, 28px); height: var(--vjg-close-size, 28px); }
.vjg-lightbox .vjg-prev { left: max(8px, env(safe-area-inset-left)); top: 50%; translate: 0 -50%; }
.vjg-lightbox .vjg-next { right: max(8px, env(safe-area-inset-right)); top: 50%; translate: 0 -50%; }
.vjg-lightbox .vjg-count { position: absolute; bottom: max(20px, env(safe-area-inset-bottom)); left: 0; width: 100%; margin: 0; text-align: center; color: inherit; font: 13px/1.5 system-ui, sans-serif; pointer-events: none; }
.vjg-lightbox .vjg-status { position: absolute; left: 50%; top: 50%; translate: -50% -50%; font: 14px/1.5 system-ui, sans-serif; }
.vjg-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 1024px) { .elementor-widget-vallaurie_justified_gallery { --vjg-target: 240px; --vjg-min: 120px; --vjg-max: 360px; } }
@media (max-width: 767px) {
    .elementor-widget-vallaurie_justified_gallery { --vjg-target: 180px; --vjg-min: 90px; --vjg-max: 280px; --vjg-gap: 8px; --vjg-radius: 12px; --vjg-arrow-size: 26px; --vjg-close-size: 26px; }
    .vjg-lightbox .vjg-canvas { padding: 64px 12px 76px; }
    .vjg-lightbox .vjg-full-image { max-height: calc(100dvh - 170px); max-width: 100%; }
    .vjg-lightbox .vjg-prev,.vjg-lightbox .vjg-next { top: auto; bottom: max(8px, env(safe-area-inset-bottom)); translate: none; }
}
@media (prefers-reduced-motion: reduce) { .vjg-item > img.vjg-image { transition: none; transform: none !important; } }
