.dmg-gallery {
    --dmg-filter-bg: #fff;
    --dmg-filter-text: #263238;
    --dmg-filter-border: #d8dee5;
    --dmg-filter-active-bg: #163f3a;
    --dmg-filter-active-text: #fff;
    --dmg-filter-font-size: 15px;
    --dmg-filter-font-weight: 600;
    --dmg-filter-radius: 999px;
    --dmg-filter-padding-x: 18px;
    --dmg-filter-padding-y: 10px;
    --dmg-filters-justify: center;
    --dmg-columns-desktop: 4;
    --dmg-columns-tablet: 3;
    --dmg-columns-mobile: 1;
    --dmg-grid-gap: 18px;
    --dmg-aspect-ratio: 4 / 3;
    --dmg-overlay-opacity: .66;
    display: block !important;
    position: relative !important;
    float: none !important;
    clear: both !important;
    width: 100%;
    height: auto !important;
    min-height: 1px;
    overflow: visible !important;
    contain: none !important;
    box-sizing: border-box;
}

.dmg-gallery *,
.dmg-gallery *::before,
.dmg-gallery *::after {
    box-sizing: border-box;
}

.dmg-filters {
    display: flex;
    flex-wrap: wrap;
    justify-content: var(--dmg-filters-justify);
    gap: 10px;
    margin: 0 0 28px;
}

.dmg-filter {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: var(--dmg-filter-padding-y) var(--dmg-filter-padding-x);
    margin: 0;
    color: var(--dmg-filter-text);
    background: var(--dmg-filter-bg);
    border: 1px solid var(--dmg-filter-border);
    border-radius: var(--dmg-filter-radius);
    box-shadow: 0 4px 14px rgba(20, 40, 50, 0.04);
    font: inherit;
    font-size: var(--dmg-filter-font-size);
    font-weight: var(--dmg-filter-font-weight);
    line-height: 1.15;
    text-align: center;
    cursor: pointer;
    transition: color .22s ease, background-color .22s ease, border-color .22s ease, transform .22s ease, box-shadow .22s ease;
}

.dmg-filter:hover,
.dmg-filter:focus-visible {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(20, 40, 50, 0.1);
    outline: none;
}

.dmg-filter.is-active {
    color: var(--dmg-filter-active-text);
    background: var(--dmg-filter-active-bg);
    border-color: var(--dmg-filter-active-bg);
    box-shadow: 0 8px 22px color-mix(in srgb, var(--dmg-filter-active-bg) 26%, transparent);
}

.dmg-gallery > .dmg-grid {
    display: grid !important;
    position: relative !important;
    float: none !important;
    clear: both !important;
    inset: auto !important;
    width: 100% !important;
    height: auto !important;
    min-height: 1px;
    overflow: visible !important;
    grid-template-columns: repeat(var(--dmg-columns-desktop), minmax(0, 1fr)) !important;
    gap: var(--dmg-grid-gap);
    align-items: start;
    align-content: start;
}

.dmg-gallery > .dmg-grid > .dmg-item {
    position: relative !important;
    float: none !important;
    clear: none !important;
    inset: auto !important;
    width: auto !important;
    max-width: none !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
    will-change: transform, opacity;
}

.dmg-item[hidden] {
    display: none !important;
}

.dmg-card {
    appearance: none;
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: var(--dmg-aspect-ratio);
    padding: 0;
    margin: 0;
    overflow: hidden;
    color: #fff;
    background: #e7ecee;
    border: 0;
    border-radius: 0 !important;
    box-shadow: 0 9px 28px rgba(22, 40, 48, 0.11);
    cursor: pointer;
    isolation: isolate;
    text-align: left;
    text-decoration: none;
    transform: translateZ(0);
}

.dmg-gallery--natural .dmg-card {
    aspect-ratio: auto;
}

.dmg-gallery--natural .dmg-card__media,
.dmg-gallery--natural .dmg-card__media img {
    position: relative;
    height: auto;
}

.dmg-gallery--natural .dmg-card__media img {
    display: block;
    min-height: 180px;
}

.dmg-card__media,
.dmg-card__overlay {
    position: absolute;
    inset: 0;
}

.dmg-card__media,
.dmg-card__media img {
    border-radius: 0 !important;
}

.dmg-card__media {
    z-index: 0;
    overflow: hidden;
}

.dmg-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .55s cubic-bezier(.2,.75,.25,1), filter .4s ease;
}

.dmg-card__placeholder {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    color: #4d6665;
    background:
        radial-gradient(circle at 20% 20%, rgba(255,255,255,.75), transparent 36%),
        linear-gradient(135deg, #dbe6e4, #b9cbc8);
}

.dmg-card__placeholder svg {
    width: 64px;
    height: 64px;
    padding: 15px;
    color: #fff;
    background: rgba(22, 63, 58, .82);
    border-radius: 50%;
}

.dmg-card__overlay {
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-start;
    padding: clamp(16px, 2.2vw, 26px);
    background: linear-gradient(180deg, rgba(0,0,0,.04) 10%, rgba(0,0,0,var(--dmg-overlay-opacity)) 100%);
    opacity: 0;
    transition: opacity .35s ease;
}

.dmg-card__icon {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    margin: auto;
    color: #173f3a;
    background: rgba(255,255,255,.94);
    border-radius: 50%;
    box-shadow: 0 10px 24px rgba(0,0,0,.2);
    opacity: 0;
    transform: translateY(8px) scale(.86);
    transition: opacity .32s ease, transform .32s cubic-bezier(.2,.75,.25,1);
}

.dmg-card__icon svg {
    width: 25px;
    height: 25px;
}

.dmg-card:hover .dmg-card__media img,
.dmg-card:focus-visible .dmg-card__media img {
    transform: scale(1.065);
    filter: saturate(1.04);
}

.dmg-card:hover .dmg-card__overlay,
.dmg-card:focus-visible .dmg-card__overlay {
    opacity: 1;
}

.dmg-card:hover .dmg-card__icon,
.dmg-card:focus-visible .dmg-card__icon {
    opacity: 1;
    transform: translateY(0) scale(1);
}



.dmg-card:focus-visible {
    outline: 3px solid var(--dmg-filter-active-bg);
    outline-offset: 4px;
}

.dmg-empty-gallery {
    padding: 26px;
    color: #52616a;
    text-align: center;
    background: #f6f8f9;
    border: 1px dashed #cfd7db;
    border-radius: 12px;
}


@media (min-width: 768px) and (max-width: 1024px) {
    .dmg-gallery > .dmg-grid {
        display: grid !important;
        grid-template-columns: repeat(var(--dmg-columns-tablet), minmax(0, 1fr)) !important;
    }
}

/* Elementor uses 767px as its default mobile breakpoint. */
@media (max-width: 767px) {
    .dmg-filters {
        justify-content: flex-start;
        flex-wrap: nowrap;
        margin-right: calc(50% - 50vw);
        margin-left: calc(50% - 50vw);
        padding: 2px max(16px, calc((100vw - 100%)/2)) 10px;
        overflow-x: auto;
        scroll-snap-type: x proximity;
        scrollbar-width: none;
    }

    .dmg-filters::-webkit-scrollbar {
        display: none;
    }

    .dmg-filter {
        flex: 0 0 auto;
        scroll-snap-align: start;
    }

    .dmg-gallery > .dmg-grid {
        display: grid !important;
        grid-template-columns: repeat(var(--dmg-columns-mobile), minmax(0, 1fr)) !important;
    }

}

@media (hover: none) {
    .dmg-card__overlay {
        justify-content: center;
        align-items: center;
        opacity: 1;
        background: rgba(0, 0, 0, .18);
    }

    .dmg-card__icon {
        opacity: 1;
        transform: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .dmg-gallery *,
    .dmg-gallery *::before,
    .dmg-gallery *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* Video thumbnails and hosted-video first-frame previews. */
.dmg-card__media video,
.dmg-card__video-preview {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 0 !important;
    pointer-events: none;
    background: #111;
    transition: transform .55s cubic-bezier(.2,.75,.25,1), filter .4s ease, opacity .2s ease;
}

.dmg-card__placeholder--video {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.dmg-card__video-preview.has-frame + .dmg-card__placeholder--video {
    opacity: 0;
}

.dmg-card:hover .dmg-card__video-preview,
.dmg-card:focus-visible .dmg-card__video-preview {
    transform: scale(1.065);
    filter: saturate(1.04);
}

.dmg-card__video-preview {
    opacity: 0;
    background: transparent;
}

.dmg-card__video-preview.has-frame {
    opacity: 1;
    background: #111;
}

.dmg-gallery--natural .dmg-card:has(.dmg-card__video-preview) {
    min-height: 180px;
}


/* Keep the gallery in the normal document flow even when a theme applies
 * generic positioning rules to article, gallery, or shortcode elements. */
.elementor-widget-container:has(> .elementor-shortcode > .dmg-gallery),
.elementor-widget-container:has(> .dmg-gallery),
.elementor-shortcode:has(> .dmg-gallery) {
    height: auto !important;
    overflow: visible !important;
}
