.dpf-fg{--dpf-cols-desktop:4;--dpf-cols-mobile:1;--dpf-gap:18px;width:100%;position:relative}.dpf-fg *{box-sizing:border-box}.dpf-fg-filters{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:center;align-items:center;margin:0 0 22px}.dpf-fg-filter{appearance:none;border:0;background:transparent;padding:4px 0;cursor:pointer;color:#777;font:inherit;transition:color .2s ease,opacity .2s ease}.dpf-fg-filter:hover,.dpf-fg-filter.is-active{color:#111}.dpf-fg-grid{display:grid;grid-template-columns:repeat(var(--dpf-cols-desktop),minmax(0,1fr));gap:var(--dpf-gap)}.dpf-fg-card{min-width:0}.dpf-fg-card[hidden]{display:none!important}.dpf-fg-card-trigger{width:100%;height:100%;display:flex;flex-direction:column;text-align:left;border:0;background:transparent;padding:0;cursor:pointer;color:inherit}.dpf-fg-card-image-wrap{display:block;width:100%;overflow:hidden;background:#f2f2f2}.dpf-fg-card-image{display:block;width:100%;height:240px;object-fit:cover;transition:transform .3s ease}.dpf-fg-card-trigger:hover .dpf-fg-card-image,.dpf-fg-card-trigger[aria-expanded="true"] .dpf-fg-card-image{transform:scale(1.02)}.dpf-fg-card-copy{display:flex;flex-direction:column;gap:4px;padding:12px 2px 2px}.dpf-fg-card-title{display:block;font-size:15px;line-height:1.35;font-weight:600;text-transform:uppercase}.dpf-fg-card-subtitle{display:block;font-size:13px;line-height:1.4;color:#777}.dpf-fg-detail{grid-column:1/-1;min-width:0;overflow:hidden;background:#f7f7f7;animation:dpfFgReveal .28s ease both}.dpf-fg-detail-inner{position:relative;padding:34px}.dpf-fg-detail-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:30px;line-height:1;cursor:pointer;color:inherit}.dpf-fg-detail-copy{max-width:980px}.dpf-fg-detail-title{margin:0 0 8px;font-size:30px;line-height:1.15}.dpf-fg-detail-subtitle{margin:0 0 20px;font-size:18px;line-height:1.4;color:#666}.dpf-fg-detail-text{font-size:16px;line-height:1.7}.dpf-fg-detail-text>:first-child{margin-top:0}.dpf-fg-detail-text>:last-child{margin-bottom:0}.dpf-fg-detail-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:28px}.dpf-fg-gallery-link{display:block;overflow:hidden;background:#eee}.dpf-fg-gallery-link img{display:block;width:100%;height:180px;object-fit:cover;transition:transform .25s ease}.dpf-fg-gallery-link:hover img{transform:scale(1.025)}.dpf-fg-lightbox[hidden]{display:none!important}.dpf-fg-lightbox{position:fixed;z-index:999999;inset:0;background:rgba(0,0,0,.93);display:grid;grid-template-columns:64px minmax(0,1fr) 64px;align-items:center;padding:24px}.dpf-fg-lightbox-figure{margin:0;min-width:0;text-align:center}.dpf-fg-lightbox-image{max-width:100%;max-height:82vh;width:auto;height:auto;object-fit:contain}.dpf-fg-lightbox-caption{color:#fff;margin-top:10px;font-size:14px}.dpf-fg-lightbox-close,.dpf-fg-lightbox-prev,.dpf-fg-lightbox-next{border:0;background:transparent;color:#fff;cursor:pointer;font-size:48px;line-height:1}.dpf-fg-lightbox-close{position:absolute;right:18px;top:12px;font-size:42px}.dpf-fg-empty{padding:20px;text-align:center;background:#f7f7f7}@keyframes dpfFgReveal{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:767px){.dpf-fg-grid{grid-template-columns:repeat(var(--dpf-cols-mobile),minmax(0,1fr));gap:14px}.dpf-fg-card-image{height:180px}.dpf-fg-detail-inner{padding:26px 18px}.dpf-fg-detail-title{font-size:24px}.dpf-fg-detail-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.dpf-fg-gallery-link img{height:130px}.dpf-fg-lightbox{grid-template-columns:42px minmax(0,1fr) 42px;padding:14px}.dpf-fg-lightbox-prev,.dpf-fg-lightbox-next{font-size:38px}}@media(max-width:420px){.dpf-fg-card-image{height:150px}.dpf-fg-card-title{font-size:13px}.dpf-fg-detail-gallery{grid-template-columns:1fr 1fr}}

/* Neutral interaction states: keep gallery focus/selection borders black and prevent theme/browser blue/red rings. */
.dpf-fg .dpf-fg-card-trigger,
.dpf-fg .dpf-fg-gallery-link,
.dpf-fg .dpf-fg-filter,
.dpf-fg .dpf-fg-detail-close,
.dpf-fg .dpf-fg-lightbox-close,
.dpf-fg .dpf-fg-lightbox-prev,
.dpf-fg .dpf-fg-lightbox-next{
    -webkit-tap-highlight-color:transparent;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-card-trigger:focus,
.dpf-fg .dpf-fg-card-trigger:active,
.dpf-fg .dpf-fg-filter:focus,
.dpf-fg .dpf-fg-filter:active,
.dpf-fg .dpf-fg-detail-close:focus,
.dpf-fg .dpf-fg-detail-close:active,
.dpf-fg .dpf-fg-lightbox-close:focus,
.dpf-fg .dpf-fg-lightbox-close:active,
.dpf-fg .dpf-fg-lightbox-prev:focus,
.dpf-fg .dpf-fg-lightbox-prev:active,
.dpf-fg .dpf-fg-lightbox-next:focus,
.dpf-fg .dpf-fg-lightbox-next:active{
    outline:none!important;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-card-trigger:focus-visible,
.dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]{
    outline:2px solid #111!important;
    outline-offset:0!important;
}
.dpf-fg .dpf-fg-gallery-link{
    border:2px solid transparent!important;
    outline:none!important;
    box-shadow:none!important;
    color:inherit!important;
    text-decoration:none!important;
}
.dpf-fg .dpf-fg-gallery-link:hover,
.dpf-fg .dpf-fg-gallery-link:focus,
.dpf-fg .dpf-fg-gallery-link:focus-visible,
.dpf-fg .dpf-fg-gallery-link:active,
.dpf-fg .dpf-fg-gallery-link:visited{
    border-color:#111!important;
    outline:none!important;
    box-shadow:none!important;
    color:inherit!important;
    text-decoration:none!important;
}
.dpf-fg .dpf-fg-gallery-link img,
.dpf-fg .dpf-fg-gallery-link:hover img,
.dpf-fg .dpf-fg-gallery-link:focus img,
.dpf-fg .dpf-fg-gallery-link:active img,
.dpf-fg .dpf-fg-lightbox-image{
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-filter:focus-visible,
.dpf-fg .dpf-fg-detail-close:focus-visible,
.dpf-fg .dpf-fg-lightbox-close:focus-visible,
.dpf-fg .dpf-fg-lightbox-prev:focus-visible,
.dpf-fg .dpf-fg-lightbox-next:focus-visible{
    outline:2px solid #111!important;
    outline-offset:2px!important;
}


/* v1.0.4: keep the expanded detail panel visually separated from the active card. */
.dpf-fg .dpf-fg-card.is-open{position:relative;z-index:2}
.dpf-fg .dpf-fg-detail{position:relative;z-index:1;margin-top:12px}

/* Rich editor content: images and supported YouTube/Vimeo embeds stay responsive. */
.dpf-fg .dpf-fg-detail-text img{max-width:100%;height:auto}
.dpf-fg .dpf-fg-detail-text figure{max-width:100%;margin-left:0;margin-right:0}
.dpf-fg .dpf-fg-detail-text iframe{display:block;width:100%;max-width:100%;aspect-ratio:16/9;height:auto;border:0}
.dpf-fg .dpf-fg-detail-text video,
.dpf-fg .dpf-fg-detail-text .wp-video,
.dpf-fg .dpf-fg-detail-text .wp-video-shortcode{max-width:100%;height:auto}
.dpf-fg .dpf-fg-detail-text .wp-block-embed,
.dpf-fg .dpf-fg-detail-text .wp-block-embed__wrapper{max-width:100%}
@media(max-width:767px){.dpf-fg .dpf-fg-detail{margin-top:10px}}

/* Current Elementor font family is applied immediately via root variables. */

.dpf-fg .dpf-fg-filter{font-family:var(--dpf-font-filter,inherit)!important}
.dpf-fg .dpf-fg-card-title{font-family:var(--dpf-font-card-title,inherit)!important}
.dpf-fg .dpf-fg-card-subtitle{font-family:var(--dpf-font-card-subtitle,inherit)!important}
.dpf-fg .dpf-fg-detail-title{font-family:var(--dpf-font-detail-title,inherit)!important}
.dpf-fg .dpf-fg-detail-subtitle{font-family:var(--dpf-font-detail-subtitle,inherit)!important}
.dpf-fg .dpf-fg-detail-text{font-family:var(--dpf-font-detail-text,inherit)!important}

/* v1.0.5: align the image gallery with the same content column used by title, text and embeds. */
.dpf-fg .dpf-fg-detail-gallery-wrap{
    width:100%;
    max-width:100%;
    margin-top:28px;
}
.dpf-fg .dpf-fg-detail-gallery{
    display:flex;
    flex-wrap:nowrap;
    gap:12px;
    width:100%;
    max-width:100%;
    margin:0;
    padding:0;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-behavior:smooth;
    scroll-snap-type:x mandatory;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
}
.dpf-fg .dpf-fg-detail-gallery::-webkit-scrollbar{display:none}
.dpf-fg .dpf-fg-detail-gallery:focus,
.dpf-fg .dpf-fg-detail-gallery:focus-visible{
    outline:none!important;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link{
    flex:0 0 calc((100% - 36px)/4);
    min-width:0;
    scroll-snap-align:start;
}
.dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link img{
    width:100%;
    height:180px;
    object-fit:cover;
}
.dpf-fg .dpf-fg-gallery-controls{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    margin-top:12px;
}
.dpf-fg .dpf-fg-gallery-controls[hidden]{display:none!important}
.dpf-fg .dpf-fg-gallery-scroll{
    appearance:none;
    -webkit-appearance:none;
    width:40px;
    height:32px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid #111!important;
    border-radius:0;
    background:#fff!important;
    color:#111!important;
    font:inherit;
    font-size:25px;
    line-height:1;
    cursor:pointer;
    box-shadow:none!important;
    -webkit-tap-highlight-color:transparent;
}
.dpf-fg .dpf-fg-gallery-scroll:hover{background:#111!important;color:#fff!important}
.dpf-fg .dpf-fg-gallery-scroll:focus,
.dpf-fg .dpf-fg-gallery-scroll:active{outline:none!important;box-shadow:none!important}
.dpf-fg .dpf-fg-gallery-scroll:focus-visible{outline:2px solid #111!important;outline-offset:2px!important}
.dpf-fg .dpf-fg-gallery-scroll:disabled{opacity:.3;cursor:default;background:#fff!important;color:#111!important}

@media(max-width:767px){
    .dpf-fg .dpf-fg-detail-gallery-wrap{margin-top:24px}
    .dpf-fg .dpf-fg-detail-gallery{gap:8px}
    .dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link{flex-basis:calc((100% - 8px)/2)}
    .dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link img{height:130px}
    .dpf-fg .dpf-fg-gallery-controls{margin-top:10px}
}


/* v1.0.6: full-width detail content with truly symmetrical horizontal padding. */
.dpf-fg{
    --dpf-detail-pad-x:34px;
    --dpf-detail-pad-y:34px;
    --dpf-detail-pad-top:34px;
    --dpf-detail-pad-right:34px;
    --dpf-detail-pad-bottom:34px;
    --dpf-detail-pad-left:34px;
}
.dpf-fg .dpf-fg-detail-inner{
    width:100%;
    padding:var(--dpf-detail-pad-y) var(--dpf-detail-pad-x);
}
.dpf-fg .dpf-fg-detail-copy{
    width:100%;
    max-width:none;
    margin:0;
    padding:0;
}
.dpf-fg .dpf-fg-detail-title,
.dpf-fg .dpf-fg-detail-subtitle,
.dpf-fg .dpf-fg-detail-text,
.dpf-fg .dpf-fg-detail-gallery-wrap{
    width:100%;
    max-width:none;
}
.dpf-fg .dpf-fg-detail-text > *,
.dpf-fg .dpf-fg-detail-text .wp-block-embed,
.dpf-fg .dpf-fg-detail-text .wp-block-embed__wrapper,
.dpf-fg .dpf-fg-detail-text figure,
.dpf-fg .dpf-fg-detail-text iframe{
    max-width:100%;
}
.dpf-fg .dpf-fg-detail.is-closing{
    pointer-events:none;
}

@media(max-width:767px){
    .dpf-fg{
        --dpf-detail-pad-x:18px;
        --dpf-detail-pad-y:26px;
        --dpf-detail-pad-top:26px;
        --dpf-detail-pad-right:18px;
        --dpf-detail-pad-bottom:26px;
        --dpf-detail-pad-left:18px;
    }
    .dpf-fg .dpf-fg-detail-inner{
        padding:var(--dpf-detail-pad-y) var(--dpf-detail-pad-x);
    }
}

/* v1.0.8: one shared padded content box for title, text, embeds and detail gallery. */
.dpf-fg .dpf-fg-detail-inner{
    width:100%;
    padding:0!important;
}
.dpf-fg .dpf-fg-detail-content{
    width:100%;
    min-width:0;
    padding:var(--dpf-detail-pad-y) var(--dpf-detail-pad-x);
}
.dpf-fg .dpf-fg-detail-copy{
    width:100%;
    min-width:0;
    max-width:none;
    margin:0;
    padding:0;
    overflow:visible;
}
.dpf-fg .dpf-fg-detail-gallery-wrap{
    display:block!important;
    position:relative!important;
    left:auto!important;
    right:auto!important;
    float:none!important;
    clear:both!important;
    box-sizing:border-box!important;
    width:100%!important;
    max-width:100%!important;
    margin:28px 0 14px!important;
    padding:0!important;
    transform:none!important;
}
.dpf-fg .dpf-fg-detail-gallery{
    box-sizing:border-box!important;
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
}
@media(max-width:767px){
    .dpf-fg .dpf-fg-detail-content{
        padding:var(--dpf-detail-pad-y) var(--dpf-detail-pad-x);
    }
    .dpf-fg .dpf-fg-detail-gallery-wrap{
        margin-top:24px!important;
        margin-bottom:12px!important;
    }
}

/* v1.0.8: optional single-row paginated carousel for the main filtered gallery. */
.dpf-fg.dpf-fg--carousel .dpf-fg-grid{
    display:flex;
    flex-wrap:nowrap;
    align-items:stretch;
    width:100%;
    max-width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-behavior:smooth;
    scroll-snap-type:x mandatory;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-grid::-webkit-scrollbar{display:none}
.dpf-fg.dpf-fg--carousel .dpf-fg-card{
    flex:0 0 auto;
    min-width:0;
    scroll-snap-align:start;
}
.dpf-fg .dpf-fg-carousel-nav{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:22px;
    width:100%;
    margin:28px 0 0;
}
.dpf-fg .dpf-fg-carousel-nav[hidden]{display:none!important}
.dpf-fg .dpf-fg-carousel-pages{
    display:flex;
    align-items:center;
    justify-content:center;
    flex-wrap:wrap;
    gap:20px;
}
.dpf-fg .dpf-fg-carousel-arrow,
.dpf-fg .dpf-fg-carousel-page{
    appearance:none;
    -webkit-appearance:none;
    border:0!important;
    background:transparent!important;
    color:#111!important;
    padding:4px 2px;
    min-width:0;
    box-shadow:none!important;
    font:inherit;
    line-height:1;
    cursor:pointer;
    -webkit-tap-highlight-color:transparent;
}
.dpf-fg .dpf-fg-carousel-arrow{
    font-size:28px;
    min-width:46px;
}
.dpf-fg .dpf-fg-carousel-page{
    font-size:16px;
    opacity:.42;
}
.dpf-fg .dpf-fg-carousel-page.is-active{
    opacity:1;
    font-weight:600;
}
.dpf-fg .dpf-fg-carousel-arrow:hover,
.dpf-fg .dpf-fg-carousel-page:hover{opacity:1}
.dpf-fg .dpf-fg-carousel-arrow:focus,
.dpf-fg .dpf-fg-carousel-arrow:active,
.dpf-fg .dpf-fg-carousel-page:focus,
.dpf-fg .dpf-fg-carousel-page:active{
    outline:none!important;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-carousel-arrow:focus-visible,
.dpf-fg .dpf-fg-carousel-page:focus-visible{
    outline:2px solid #111!important;
    outline-offset:3px!important;
}
.dpf-fg .dpf-fg-carousel-arrow:disabled{
    opacity:.22;
    cursor:default;
}
@media(max-width:767px){
    .dpf-fg .dpf-fg-carousel-nav{
        gap:14px;
        margin-top:20px;
    }
    .dpf-fg .dpf-fg-carousel-pages{gap:14px}
    .dpf-fg .dpf-fg-carousel-arrow{font-size:25px;min-width:36px}
    .dpf-fg .dpf-fg-carousel-page{font-size:15px}
}

/* v1.0.9: definitive detail-gallery spacing and carousel card rendering fixes. */
.dpf-fg .dpf-fg-detail-inner{
    position:relative;
    width:100%;
    padding:0!important;
}
.dpf-fg .dpf-fg-detail-content{
    width:100%;
    min-width:0;
    padding:var(--dpf-detail-pad-top) var(--dpf-detail-pad-right) var(--dpf-detail-pad-bottom) var(--dpf-detail-pad-left);
}
.dpf-fg .dpf-fg-detail-inner.has-gallery .dpf-fg-detail-content{
    padding-bottom:0!important;
}
.dpf-fg .dpf-fg-detail-gallery-zone{
    display:block;
    width:100%;
    min-width:0;
    margin:0;
    padding:28px var(--dpf-detail-pad-right) var(--dpf-detail-pad-bottom) var(--dpf-detail-pad-left);
    box-sizing:border-box;
    clear:both;
}
.dpf-fg .dpf-fg-detail-gallery-zone .dpf-fg-detail-gallery-wrap{
    display:block!important;
    position:relative!important;
    left:auto!important;
    right:auto!important;
    float:none!important;
    clear:both!important;
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
    transform:none!important;
    box-sizing:border-box!important;
}
.dpf-fg .dpf-fg-detail-gallery-zone .dpf-fg-detail-gallery{
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
    box-sizing:border-box!important;
}

/* The selection frame is drawn INSIDE the card, so horizontal overflow can never clip it into a single grey/black side line. */
.dpf-fg .dpf-fg-card-trigger{
    position:relative;
    outline:none!important;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-card-trigger::after{
    content:"";
    position:absolute;
    inset:0;
    z-index:6;
    pointer-events:none;
    border:2px solid transparent;
    box-sizing:border-box;
}
.dpf-fg .dpf-fg-card-trigger[aria-expanded="true"],
.dpf-fg .dpf-fg-card-trigger:focus-visible{
    outline:none!important;
    box-shadow:none!important;
}
.dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]::after,
.dpf-fg .dpf-fg-card-trigger:focus-visible::after{
    border-color:#111;
}

/* Carousel mode keeps every card on one row without turning landscape images into narrow vertical crops. */
.dpf-fg.dpf-fg--carousel .dpf-fg-grid{
    padding:2px 0;
    scroll-padding-inline:0;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card{
    overflow:visible;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image-wrap{
    width:100%;
    aspect-ratio:1 / 1;
    height:auto!important;
    background:#f5f5f5;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image{
    width:100%;
    height:100%!important;
    object-fit:contain!important;
}

@media(max-width:767px){
    .dpf-fg .dpf-fg-detail-gallery-zone{
        padding:24px var(--dpf-detail-pad-right) var(--dpf-detail-pad-bottom) var(--dpf-detail-pad-left);
    }
}

/* v1.0.10: flexible card presentation, category badge and optional short caption. */
.dpf-fg .dpf-fg-card-image-wrap{
    position:relative;
    overflow:visible;
}
.dpf-fg .dpf-fg-card-image{
    overflow:hidden;
}
.dpf-fg .dpf-fg-card-copy{
    width:100%;
    min-width:0;
}
.dpf-fg.dpf-fg--card-align-left .dpf-fg-card-copy{
    text-align:left;
    align-items:flex-start;
}
.dpf-fg.dpf-fg--card-align-center .dpf-fg-card-copy{
    text-align:center;
    align-items:center;
}
.dpf-fg.dpf-fg--card-align-right .dpf-fg-card-copy{
    text-align:right;
    align-items:flex-end;
}
.dpf-fg .dpf-fg-card-title,
.dpf-fg .dpf-fg-card-subtitle,
.dpf-fg .dpf-fg-card-caption{
    max-width:100%;
}
.dpf-fg .dpf-fg-card-category{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    max-width:calc(100% - 20px);
    background:#fff;
    color:#8c7750;
    padding:9px 18px;
    font-size:12px;
    line-height:1.2;
    font-weight:600;
    letter-spacing:.05em;
    text-transform:uppercase;
    white-space:normal;
    overflow-wrap:anywhere;
    box-shadow:none;
    box-sizing:border-box;
    font-family:var(--dpf-font-card-category,inherit)!important;
}
.dpf-fg .dpf-fg-card-category--below{
    position:static;
    margin-top:8px;
}
.dpf-fg .dpf-fg-card-category--overlay{
    position:absolute;
    z-index:5;
    left:50%;
    bottom:0;
    transform:translate(-50%,50%);
    margin:0;
}
.dpf-fg .dpf-fg-card-trigger.has-overlay-category .dpf-fg-card-copy{
    padding-top:30px;
}
.dpf-fg .dpf-fg-card-caption{
    display:block;
    margin-top:8px;
    font-size:13px;
    line-height:1.55;
    color:#777;
    font-family:var(--dpf-font-card-caption,inherit)!important;
}

/* Keep the black active frame complete even when the category badge overlaps the image edge. */
.dpf-fg .dpf-fg-card-trigger::after{
    z-index:9;
}

/* Carousel cards use exactly the same card-copy/category/caption system as the normal grid. */
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image-wrap{
    overflow:visible;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image{
    display:block;
    overflow:hidden;
}

@media(max-width:767px){
    .dpf-fg .dpf-fg-card-category{
        max-width:calc(100% - 12px);
    }
    .dpf-fg .dpf-fg-card-trigger.has-overlay-category .dpf-fg-card-copy{
        padding-top:27px;
    }
}

/* v1.0.11: rebuilt carousel geometry + fixed image crops + exact detail-gallery alignment. */
.dpf-fg{
    min-width:0;
    max-width:100%;
    overflow-x:visible;
}
.dpf-fg .dpf-fg-filters{
    position:relative!important;
    left:auto!important;
    right:auto!important;
    transform:none!important;
    width:100%!important;
    max-width:100%!important;
    margin-left:auto!important;
    margin-right:auto!important;
    justify-content:center!important;
    text-align:center;
}

/* One image system for grid AND carousel. No grey square, no contain letterboxing. */
.dpf-fg .dpf-fg-card-image-wrap,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image-wrap{
    display:block;
    width:100%;
    height:auto!important;
    overflow:visible!important;
    background:transparent!important;
}
.dpf-fg.dpf-fg--ratio-16-9 .dpf-fg-card-image-wrap{aspect-ratio:16 / 9!important}
.dpf-fg.dpf-fg--ratio-1-1 .dpf-fg-card-image-wrap{aspect-ratio:1 / 1!important}
.dpf-fg.dpf-fg--ratio-9-16 .dpf-fg-card-image-wrap{aspect-ratio:9 / 16!important}
.dpf-fg .dpf-fg-card-image,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image{
    display:block!important;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    object-fit:cover!important;
    object-position:50% 50%!important;
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
}

/* Carousel stays one clean row. The card width is set by JS from the viewport width. */
.dpf-fg.dpf-fg--carousel .dpf-fg-grid{
    display:flex!important;
    flex-flow:row nowrap!important;
    align-items:flex-start!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    padding:2px 0!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    scroll-behavior:smooth;
    scroll-snap-type:x mandatory;
    scroll-padding-inline:0!important;
    overscroll-behavior-x:contain;
    scrollbar-width:none;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-grid::-webkit-scrollbar{display:none}
.dpf-fg.dpf-fg--carousel .dpf-fg-card{
    min-width:0!important;
    overflow:visible!important;
    scroll-snap-align:start;
    scroll-snap-stop:normal;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card[hidden]{display:none!important}
.dpf-fg.dpf-fg--carousel .dpf-fg-card-trigger{
    width:100%!important;
    min-width:0!important;
    overflow:visible!important;
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
}

/* Complete black selection frame, always inside the card and independent from scrolling. */
.dpf-fg .dpf-fg-card-trigger::after{
    content:"";
    position:absolute;
    inset:0;
    z-index:20;
    pointer-events:none;
    border:2px solid transparent!important;
    border-radius:inherit;
    box-sizing:border-box;
}
.dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]::after,
.dpf-fg .dpf-fg-card-trigger:focus-visible::after{
    border-color:#111!important;
}

/* The detail gallery now lives inside the SAME padded content node as title/text/video. */
.dpf-fg .dpf-fg-detail-inner.has-gallery .dpf-fg-detail-content{
    padding-bottom:var(--dpf-detail-pad-bottom)!important;
}
.dpf-fg .dpf-fg-detail-content > .dpf-fg-detail-gallery-wrap{
    position:relative!important;
    left:auto!important;
    right:auto!important;
    float:none!important;
    clear:both!important;
    width:100%!important;
    max-width:100%!important;
    margin:28px 0 0!important;
    padding:0!important;
    transform:none!important;
    box-sizing:border-box!important;
}
.dpf-fg .dpf-fg-detail-content > .dpf-fg-detail-gallery-wrap .dpf-fg-detail-gallery{
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
}
@media(max-width:767px){
    .dpf-fg .dpf-fg-detail-content > .dpf-fg-detail-gallery-wrap{margin-top:24px!important}
}

/* v1.0.12: active card uses elevation instead of a black frame, with a tighter detail-panel gap. */
.dpf-fg .dpf-fg-card-trigger{
    transition:transform .22s ease, box-shadow .22s ease, background-color .22s ease;
    will-change:transform, box-shadow;
}

/* Remove every legacy selection frame. */
.dpf-fg .dpf-fg-card-trigger::after,
.dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]::after,
.dpf-fg .dpf-fg-card-trigger:focus-visible::after{
    border:0!important;
    outline:0!important;
    box-shadow:none!important;
}

/* Selected/open card: a soft lift, no hard border. */
.dpf-fg .dpf-fg-card.is-open{
    z-index:8;
}
.dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]{
    outline:0!important;
    border:0!important;
    box-shadow:0 10px 28px rgba(0,0,0,.16)!important;
    transform:translateY(-2px);
}

/* Keyboard focus keeps a visible but non-border-like elevation cue. */
.dpf-fg .dpf-fg-card-trigger:focus-visible:not([aria-expanded="true"]){
    outline:0!important;
    border:0!important;
    box-shadow:0 7px 22px rgba(0,0,0,.13)!important;
}

/* In the normal grid the row gap already contributes spacing: offset it so the
   detail drawer sits about 8px below the card row instead of gap + margin. */
.dpf-fg:not(.dpf-fg--carousel) .dpf-fg-detail{
    margin-top:calc(8px - var(--dpf-gap,18px))!important;
}

/* Keep the exact same card-to-detail distance in carousel mode as in the normal grid. */
.dpf-fg.dpf-fg--carousel > .dpf-fg-detail{
    margin-top:calc(68px - var(--dpf-gap,18px))!important;
}

/* Give carousel shadows room inside its scrollport without creating extra visual whitespace. */
.dpf-fg.dpf-fg--carousel .dpf-fg-grid{
    padding-top:14px!important;
    padding-bottom:16px!important;
    margin-top:-14px!important;
    margin-bottom:-8px!important;
}

@media(max-width:767px){
    .dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]{
        box-shadow:0 8px 22px rgba(0,0,0,.15)!important;
        transform:translateY(-1px);
    }
    .dpf-fg:not(.dpf-fg--carousel) .dpf-fg-detail{
        margin-top:calc(7px - 14px)!important;
    }
    .dpf-fg.dpf-fg--carousel > .dpf-fg-detail{
        margin-top:calc(68px - var(--dpf-gap,18px))!important;
    }
}

@media(prefers-reduced-motion:reduce){
    .dpf-fg .dpf-fg-card-trigger{
        transition:none;
    }
    .dpf-fg .dpf-fg-card-trigger[aria-expanded="true"]{
        transform:none;
    }
}


/* v1.0.14: carousel rebuilt as deterministic paged grid (no horizontal overflow geometry). */
.dpf-fg.dpf-fg--carousel .dpf-fg-grid{
    display:grid!important;
    grid-template-columns:repeat(var(--dpf-cols-desktop),minmax(0,1fr))!important;
    gap:var(--dpf-gap)!important;
    align-items:start!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    overflow:visible!important;
    scroll-snap-type:none!important;
    scroll-behavior:auto!important;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card{
    display:block;
    width:auto!important;
    max-width:none!important;
    min-width:0!important;
    flex:none!important;
    overflow:visible!important;
    scroll-snap-align:none!important;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card.dpf-fg-page-hidden{
    display:none!important;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card-trigger{
    width:100%!important;
    min-width:0!important;
    height:100%;
    overflow:visible!important;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-card-copy,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-title,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-subtitle,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-caption{
    min-width:0!important;
    max-width:100%!important;
    overflow-wrap:normal!important;
    word-break:normal!important;
}
.dpf-fg.dpf-fg--carousel .dpf-fg-page-animate > .dpf-fg-card:not([hidden]):not(.dpf-fg-page-hidden){
    animation:dpfFgCarouselPageIn .22s ease both;
}
@keyframes dpfFgCarouselPageIn{
    from{opacity:.35;transform:translateX(8px)}
    to{opacity:1;transform:translateX(0)}
}
@media(max-width:767px){
    .dpf-fg.dpf-fg--carousel .dpf-fg-grid{
        grid-template-columns:repeat(var(--dpf-cols-mobile),minmax(0,1fr))!important;
        gap:var(--dpf-gap)!important;
    }
}

/* v1.0.14: gallery thumbnails use their own explicit padding zone matching detail text exactly. */
.dpf-fg .dpf-fg-detail-inner.has-gallery .dpf-fg-detail-content{
    padding-bottom:0!important;
}
.dpf-fg .dpf-fg-detail-gallery-zone{
    display:block!important;
    position:relative!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    clear:both!important;
    float:none!important;
    margin:0!important;
    padding:24px var(--dpf-detail-pad-right) var(--dpf-detail-pad-bottom) var(--dpf-detail-pad-left)!important;
    box-sizing:border-box!important;
    transform:none!important;
}
.dpf-fg .dpf-fg-detail-gallery-zone .dpf-fg-detail-gallery-wrap{
    display:block!important;
    position:relative!important;
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    left:auto!important;
    right:auto!important;
    float:none!important;
    transform:none!important;
    box-sizing:border-box!important;
}
.dpf-fg .dpf-fg-detail-gallery-zone .dpf-fg-detail-gallery{
    width:100%!important;
    max-width:100%!important;
    margin:0!important;
    padding:0!important;
    box-sizing:border-box!important;
}
@media(max-width:767px){
    .dpf-fg .dpf-fg-detail-gallery-zone{
        padding-top:20px!important;
        padding-bottom:var(--dpf-detail-pad-bottom)!important;
    }
}

/* Requested card-caption spacing. */
.dpf-fg .dpf-fg-card-caption {
    margin: 15px;
}


/* v1.0.19: theme-proof card/button states, configurable close button, and stronger detail typography. */
/* WordPress themes often style every <button> globally. Neutralize those styles inside gallery cards. */
.dpf-fg .dpf-fg-card-trigger,
.dpf-fg .dpf-fg-card-trigger:hover,
.dpf-fg .dpf-fg-card-trigger:focus,
.dpf-fg .dpf-fg-card-trigger:focus-visible,
.dpf-fg .dpf-fg-card-trigger:active{
    background-color:transparent!important;
    background-image:none!important;
    color:inherit!important;
    border-color:transparent!important;
    text-decoration:none!important;
}
.dpf-fg .dpf-fg-card-trigger:hover .dpf-fg-card-title,
.dpf-fg .dpf-fg-card-trigger:focus .dpf-fg-card-title,
.dpf-fg .dpf-fg-card-trigger:active .dpf-fg-card-title{
    color:inherit!important;
}

/* The close control must never inherit a theme's black button background. Elementor can override these defaults. */
.dpf-fg .dpf-fg-detail-close,
.dpf-fg .dpf-fg-detail-close:hover,
.dpf-fg .dpf-fg-detail-close:focus,
.dpf-fg .dpf-fg-detail-close:focus-visible,
.dpf-fg .dpf-fg-detail-close:active{
    background-color:transparent!important;
    background-image:none!important;
    color:#111!important;
    border:0!important;
    box-shadow:none!important;
    text-decoration:none!important;
}

/* Force the Elementor-selected family through theme typography rules, including p/span/strong/em children. */
.dpf-fg .dpf-fg-detail-title,
.dpf-fg .dpf-fg-detail-title *{
    font-family:var(--dpf-font-detail-title,inherit)!important;
}
.dpf-fg .dpf-fg-detail-subtitle,
.dpf-fg .dpf-fg-detail-subtitle *{
    font-family:var(--dpf-font-detail-subtitle,inherit)!important;
}
.dpf-fg .dpf-fg-detail-text,
.dpf-fg .dpf-fg-detail-text *{
    font-family:var(--dpf-font-detail-text,inherit)!important;
}

/* Inline subtitle formatting must not change the configured typography. */
.dpf-fg .dpf-fg-card-subtitle strong,
.dpf-fg .dpf-fg-card-subtitle b,
.dpf-fg .dpf-fg-card-subtitle em,
.dpf-fg .dpf-fg-card-subtitle i{
    font-family:inherit!important;
}


/* v1.0.20: consistent card geometry, responsive gap, line clamps and title/subtitle spacing. */
.dpf-fg{
    --dpf-title-subtitle-gap:8px;
    --dpf-title-max-lines:3;
    --dpf-subtitle-max-lines:2;
    --dpf-caption-max-lines:3;
}

/* Elementor now controls --dpf-gap on the gallery root, so both normal grid and paged carousel
   use exactly the same responsive spacing. CSS Grid automatically reduces card width to keep
   the requested number of columns inside the available row. */
.dpf-fg .dpf-fg-grid,
.dpf-fg.dpf-fg--carousel .dpf-fg-grid{
    column-gap:var(--dpf-gap)!important;
    row-gap:var(--dpf-gap)!important;
}

/* Equal-height cards work in both the standard grid and paged carousel. */
.dpf-fg.dpf-fg--equal-cards .dpf-fg-grid,
.dpf-fg.dpf-fg--equal-cards.dpf-fg--carousel .dpf-fg-grid{
    align-items:stretch!important;
}
.dpf-fg.dpf-fg--equal-cards .dpf-fg-card{
    height:100%;
}
.dpf-fg.dpf-fg--equal-cards .dpf-fg-card-trigger{
    height:100%!important;
}
.dpf-fg.dpf-fg--equal-cards .dpf-fg-card-copy{
    flex:1 1 auto;
}

/* Clamp only the card preview. The stored title/subtitle/caption and the open detail remain complete. */
.dpf-fg .dpf-fg-card-title,
.dpf-fg .dpf-fg-card-subtitle,
.dpf-fg .dpf-fg-card-caption{
    overflow:hidden;
    text-overflow:ellipsis;
}
.dpf-fg .dpf-fg-card-title{
    display:-webkit-box!important;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:var(--dpf-title-max-lines);
    line-clamp:var(--dpf-title-max-lines);
}
.dpf-fg .dpf-fg-card-subtitle{
    display:-webkit-box!important;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:var(--dpf-subtitle-max-lines);
    line-clamp:var(--dpf-subtitle-max-lines);
}
.dpf-fg .dpf-fg-card-caption{
    display:-webkit-box!important;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:var(--dpf-caption-max-lines);
    line-clamp:var(--dpf-caption-max-lines);
}

/* Preserve safe inline HTML emphasis in the card subtitle across aggressive themes. */
.dpf-fg .dpf-fg-card-subtitle strong,
.dpf-fg .dpf-fg-card-subtitle b{
    font-weight:700!important;
}
.dpf-fg .dpf-fg-card-subtitle em,
.dpf-fg .dpf-fg-card-subtitle i{
    font-style:italic!important;
}

/* Dedicated Elementor control for title/subtitle spacing when they are adjacent. */
.dpf-fg .dpf-fg-card-title + .dpf-fg-card-subtitle{
    margin-top:var(--dpf-title-subtitle-gap)!important;
}


/* v1.0.21: title-safe HTML + image zoom clipped to the photo width. */
/* The overlay category remains free to overlap the image edge, while the zoom itself is
   clipped in an inner viewport. This keeps the photo and the copy block exactly the same width. */
.dpf-fg .dpf-fg-card-image-wrap,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image-wrap{
    position:relative!important;
    display:block!important;
    width:100%!important;
    max-width:100%!important;
    overflow:visible!important;
    box-sizing:border-box!important;
}
.dpf-fg .dpf-fg-card-image-viewport,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image-viewport{
    display:block!important;
    position:relative!important;
    width:100%!important;
    max-width:100%!important;
    overflow:hidden!important;
    background:inherit;
    box-sizing:border-box!important;
}
.dpf-fg.dpf-fg--ratio-16-9 .dpf-fg-card-image-viewport{aspect-ratio:16 / 9!important}
.dpf-fg.dpf-fg--ratio-1-1 .dpf-fg-card-image-viewport{aspect-ratio:1 / 1!important}
.dpf-fg.dpf-fg--ratio-9-16 .dpf-fg-card-image-viewport{aspect-ratio:9 / 16!important}
.dpf-fg .dpf-fg-card-image-viewport .dpf-fg-card-image,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-image-viewport .dpf-fg-card-image{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    object-fit:cover!important;
    transform-origin:center center!important;
}
.dpf-fg .dpf-fg-card-copy,
.dpf-fg.dpf-fg--carousel .dpf-fg-card-copy{
    width:100%!important;
    max-width:100%!important;
    align-self:stretch!important;
    box-sizing:border-box!important;
}
/* Preserve allowed title emphasis even when the active theme has aggressive heading/link rules. */
.dpf-fg .dpf-fg-card-title strong,
.dpf-fg .dpf-fg-card-title b,
.dpf-fg .dpf-fg-detail-title strong,
.dpf-fg .dpf-fg-detail-title b{font-weight:700!important}
.dpf-fg .dpf-fg-card-title em,
.dpf-fg .dpf-fg-card-title i,
.dpf-fg .dpf-fg-detail-title em,
.dpf-fg .dpf-fg-detail-title i{font-style:italic!important}


/* v1.0.22: theme-proof category filter backgrounds + requested normal-grid detail spacing. */
.dpf-fg .dpf-fg-filter{
    background-color:transparent!important;
    min-width:0!important;
    min-height:0!important;
    width:auto!important;
    height:auto!important;
    transition:color .2s ease, background-color .2s ease, opacity .2s ease!important;
}
.dpf-fg .dpf-fg-filter:hover,
.dpf-fg .dpf-fg-filter:focus,
.dpf-fg .dpf-fg-filter:focus-visible,
.dpf-fg .dpf-fg-filter:active,
.dpf-fg .dpf-fg-filter.is-active{
    background-color:transparent!important;
}

body .dpf-fg:not(.dpf-fg--carousel) .dpf-fg-grid > .dpf-fg-detail{
    margin-top:calc(40px - var(--dpf-gap, 18px))!important;
}

@media(max-width:767px){
    body .dpf-fg:not(.dpf-fg--carousel) .dpf-fg-grid > .dpf-fg-detail{
        margin-top:calc(40px - var(--dpf-gap, 18px))!important;
    }
}

/* v1.0.24: configurable detail-panel width on desktop only. */
@media (min-width:1025px){
    .dpf-fg .dpf-fg-detail{
        width:var(--dpf-detail-width-desktop, 100%)!important;
        max-width:100%!important;
        margin-left:auto!important;
        margin-right:auto!important;
        justify-self:center!important;
    }
}

/* Tablet and mobile always keep the expanded panel fully responsive at 100%. */
@media (max-width:1024px){
    .dpf-fg .dpf-fg-detail{
        width:100%!important;
        max-width:100%!important;
        margin-left:0!important;
        margin-right:0!important;
        justify-self:stretch!important;
    }
}


/* v1.0.25: custom-width detail stays horizontally anchored below the clicked card. */
@media (min-width:1025px){
    .dpf-fg .dpf-fg-detail{
        margin-left:var(--dpf-detail-offset-x, 0px)!important;
        margin-right:0!important;
        justify-self:start!important;
    }
}
@media (max-width:1024px){
    .dpf-fg .dpf-fg-detail{
        --dpf-detail-offset-x:0px;
    }
}

/* Expanded-item thumbnail gallery: fixed 16:9 geometry instead of fixed pixel heights. */
.dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link{
    aspect-ratio:16 / 9!important;
    height:auto!important;
    min-height:0!important;
}
.dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link img{
    display:block!important;
    width:100%!important;
    height:100%!important;
    min-height:0!important;
    max-height:none!important;
    object-fit:cover!important;
    object-position:center center!important;
}
@media(max-width:767px){
    .dpf-fg .dpf-fg-detail-gallery .dpf-fg-gallery-link img{
        height:100%!important;
    }
}


/* v1.0.26: optional Elementor-style shadow for closed cards only.
   The selected/open card keeps the existing stronger active elevation. */
.dpf-fg.dpf-fg--closed-shadow .dpf-fg-card:not(.is-open){
    box-shadow:0 8px 24px rgba(0,0,0,.14);
    transition:box-shadow .22s ease, transform .22s ease;
}
.dpf-fg.dpf-fg--closed-shadow .dpf-fg-card.is-open{
    box-shadow:none;
}

/* v1.0.28: optional clean arrow-only controls for the expanded-item gallery. */
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll,
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:hover,
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:focus,
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:focus-visible,
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:active,
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:disabled{
    background:transparent!important;
    border-color:transparent!important;
    box-shadow:none!important;
}
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll{
    width:36px;
    height:36px;
    border-width:0!important;
    transition:color .18s ease, transform .18s ease, opacity .18s ease;
}
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:hover,
.dpf-fg.dpf-fg--gallery-arrows-no-bg .dpf-fg-gallery-scroll:focus-visible{
    transform:scale(1.08);
}

