.wpfg {
  --wpfg-gap: 18px;
  --wpfg-radius: 12px;
  --wpfg-border: rgba(0, 0, 0, 0.10);
  --wpfg-text: rgba(0, 0, 0, 0.9);
  --wpfg-muted: rgba(0, 0, 0, 0.6);
  /* Thumbnail / multicol grid backing (always transparent; masonry may still tint via CSS snippets). */
  --wpfg-grid-surface: transparent;
}

.wpfg__featured {
  margin: 0 0 calc(var(--wpfg-gap, 18px) * 1.5);
}

.wpfg__featured .wpfg__grid {
  grid-template-columns: 1fr !important;
}

.wpfg__featured .wpfg__card {
  width: 100%;
}

/* Keep viewport width stable only DURING filtering (prevents crossing the 960px breakpoint mid-swap
   without permanently forcing a scrollbar, which can itself keep small galleries below 960px). */
@supports (scrollbar-gutter: stable) {
  html.wpfg-filtering {
    scrollbar-gutter: stable;
  }
}
@supports not (scrollbar-gutter: stable) {
  html.wpfg-filtering {
    overflow-y: scroll;
  }
}

.wpfg__filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wpfg-filter-gap, 10px);
  margin: 40px 0 40px 0;
}

.wpfg__filters--stack {
  flex-direction: column;
  align-items: stretch;
  gap: var(--wpfg-filter-gap, 14px);
}

.wpfg__filters-group {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wpfg-filter-gap, 10px);
  align-items: center;
}

/* Category + availability on one row (desktop); optional right alignment */
.wpfg__filters--avail-inline {
  flex-wrap: wrap;
  align-items: center;
}

.wpfg__filters--avail-inline.wpfg__filters--avail-end .wpfg__filters-group--availability {
  margin-left: auto;
}

@media (max-width: 700px) {
  .wpfg--avail-mobile-stack .wpfg__filters--avail-inline {
    flex-direction: column;
    align-items: stretch;
  }
  .wpfg--avail-mobile-stack .wpfg__filters--avail-inline .wpfg__filters-group--availability {
    margin-left: 0;
    padding-top: 10px;
    border-top: 1px solid var(--wpfg-border);
  }
}

.wpfg--filters-uppercase .wpfg__filter {
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.wpfg__filters--stack .wpfg__filters-group--availability {
  padding-top: 10px;
  border-top: 1px solid var(--wpfg-border);
}

.wpfg--filters-center .wpfg__filters-group {
  justify-content: center;
}

.wpfg--filters-right .wpfg__filters-group {
  justify-content: flex-end;
}

.wpfg--filters-center .wpfg__filters {
  justify-content: center;
}

.wpfg--filters-right .wpfg__filters {
  justify-content: flex-end;
}

.wpfg__filter.is-active {
  background: var(--wpfg-filter-active-bg, #111);
  color: var(--wpfg-filter-active-fg, #fff);
  border-color: var(--wpfg-filter-active-bg, #111);
}

.wpfg__filter {
  appearance: none;
  border: 1px solid var(--wpfg-border);
  background: #fff;
  color: var(--wpfg-filter-fg, var(--wpfg-text));
  padding: 10px 12px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  transition: background 160ms ease, border-color 160ms ease, transform 60ms ease;
}

.wpfg__filter:not(.is-active):hover {
  border-color: var(--wpfg-filter-hover-border, rgba(0, 0, 0, 0.2));
  background: var(--wpfg-filter-hover-bg, #fff);
  color: var(--wpfg-filter-hover-fg, var(--wpfg-text));
}

.wpfg__filter:active {
  transform: scale(0.99);
}

.wpfg__filter.is-disabled {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}

.wpfg--style-minimal .wpfg__filters {
  gap: var(--wpfg-filter-gap, 18px);
  border-bottom: 1px solid var(--wpfg-border);
  padding-bottom: 10px;
}

.wpfg--style-minimal .wpfg__filters--stack .wpfg__filters-group--availability {
  border-top-color: var(--wpfg-border);
}

.wpfg--style-minimal .wpfg__filter {
  border: 0;
  background: transparent;
  padding: 8px 2px;
  border-radius: 0;
  font-size: 14px;
  color: var(--wpfg-filter-fg, var(--wpfg-muted));
}

.wpfg--style-minimal .wpfg__filter:not(.is-active):hover {
  background: transparent !important;
  border-color: transparent;
  color: var(--wpfg-filter-minimal-hover-fg, var(--wpfg-text));
}

.wpfg--style-minimal .wpfg__filter.is-active {
  background: transparent;
  color: var(--wpfg-filter-minimal-active-fg, var(--wpfg-text));
  border-color: transparent;
  box-shadow: inset 0 -2px 0 0
    var(--wpfg-filter-minimal-active-line, var(--wpfg-filter-active-bg, currentColor));
}

/* Optional CTA when a category filter is active */
.wpfg .wpfg__filtered-cta {
  margin: var(--wpfg-cta-margin-top, 10px) 0 var(--wpfg-cta-margin-bottom, 4px);
}

.wpfg__filtered-cta-link {
  display: inline-block;
  font-size: var(--wpfg-cta-font-size, 14px);
  padding: var(--wpfg-cta-padding, 0);
  text-decoration: underline;
  color: var(--wpfg-cta-text, inherit);
  transition: color 160ms ease, transform 180ms ease;
}

.wpfg .wpfg__filtered-cta .wpfg__filtered-cta-btn {
  display: inline-block;
  padding: var(--wpfg-cta-padding, 8px 14px);
  border-radius: 6px;
  border: 1px solid var(--wpfg-cta-border, var(--wpfg-border));
  background-color: var(--wpfg-cta-bg, var(--wpfg-filter-active-bg, var(--wpfg-text))) !important;
  background-image: none !important;
  color: var(--wpfg-cta-text, var(--wpfg-filter-active-fg, #fff)) !important;
  font-size: var(--wpfg-cta-font-size, 14px);
  line-height: 1.2;
  text-decoration: none;
  transition:
    background 160ms ease,
    border-color 160ms ease,
    color 160ms ease,
    transform 180ms ease;
}

.wpfg .wpfg__filtered-cta .wpfg__filtered-cta-btn:hover {
  background-color: var(--wpfg-cta-hover-bg, var(--wpfg-cta-bg, var(--wpfg-filter-active-bg, var(--wpfg-text)))) !important;
  background-image: none !important;
  border-color: var(--wpfg-cta-hover-border, var(--wpfg-cta-border, var(--wpfg-border)));
  color: var(--wpfg-cta-hover-text, var(--wpfg-cta-text, var(--wpfg-filter-active-fg, #fff))) !important;
}

.wpfg__filtered-cta-minimal {
  display: inline-block;
  font-size: var(--wpfg-cta-font-size, 14px);
  font-weight: 500;
  text-decoration: none;
  color: var(--wpfg-cta-text, inherit);
  border: 0;
  background: transparent;
  padding: var(--wpfg-cta-padding, 0 2px 3px);
  border-radius: 0;
  line-height: 1.35;
  box-shadow: inset 0 -1px 0 0 var(--wpfg-cta-border, currentColor);
  opacity: 0.9;
  transition: color 160ms ease, box-shadow 160ms ease, opacity 160ms ease, transform 180ms ease;
}

.wpfg__filtered-cta-minimal:hover {
  opacity: 1;
  color: var(--wpfg-cta-hover-text, var(--wpfg-cta-text, inherit));
  box-shadow: inset 0 -1px 0 0 var(--wpfg-cta-hover-border, var(--wpfg-cta-border, currentColor));
}

.wpfg .wpfg__filtered-cta .wpfg__filtered-cta-chip {
  display: inline-block;
  padding: var(--wpfg-cta-padding, 8px 14px);
  border-radius: 6px;
  border: 1px solid var(--wpfg-cta-border, var(--wpfg-border));
  background-color: var(--wpfg-cta-bg, transparent) !important;
  background-image: none !important;
  color: var(--wpfg-cta-text, var(--wpfg-filter-fg, var(--wpfg-text))) !important;
  font-size: var(--wpfg-cta-font-size, 14px);
  line-height: 1.2;
  text-decoration: none;
  transition:
    border-color 0.15s ease,
    color 0.15s ease,
    background 0.15s ease,
    transform 180ms ease;
}

.wpfg .wpfg__filtered-cta .wpfg__filtered-cta-chip:hover {
  border-color: var(--wpfg-cta-hover-border, var(--wpfg-cta-border, var(--wpfg-filter-hover-border, rgba(0, 0, 0, 0.22))));
  background-color: var(--wpfg-cta-hover-bg, var(--wpfg-filter-hover-bg, rgba(0, 0, 0, 0.04))) !important;
  background-image: none !important;
  color: var(--wpfg-cta-hover-text, var(--wpfg-cta-text, var(--wpfg-filter-fg, var(--wpfg-text)))) !important;
}

.wpfg__filtered-cta-link:hover {
  color: var(--wpfg-cta-hover-text, var(--wpfg-cta-text, inherit));
}

.wpfg__filtered-cta--zoom-subtle a:hover {
  transform: scale(1.035);
}

.wpfg__filtered-cta--zoom-medium a:hover {
  transform: scale(1.07);
}

.wpfg__filtered-cta--size-sm .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--size-sm .wpfg__filtered-cta-link {
  font-size: var(--wpfg-cta-font-size, 12px);
}

.wpfg__filtered-cta--size-sm .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--size-sm .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 12px);
  padding: var(--wpfg-cta-padding, 6px 10px);
}

.wpfg__filtered-cta--size-lg .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--size-lg .wpfg__filtered-cta-link {
  font-size: var(--wpfg-cta-font-size, 16px);
}

.wpfg__filtered-cta--size-lg .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--size-lg .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 16px);
  padding: var(--wpfg-cta-padding, 10px 18px);
}

.wpfg__filtered-cta--size-md .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--size-md .wpfg__filtered-cta-link {
  font-size: var(--wpfg-cta-font-size, 14px);
}

.wpfg__filtered-cta--size-md .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--size-md .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 14px);
  padding: var(--wpfg-cta-padding, 8px 14px);
}

.wpfg__filtered-cta--size-xl .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--size-xl .wpfg__filtered-cta-link {
  font-size: var(--wpfg-cta-font-size, 19px);
}

.wpfg__filtered-cta--size-xl .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--size-xl .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 19px);
  padding: var(--wpfg-cta-padding, 11px 18px);
}

.wpfg__filtered-cta--size-xxl .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--size-xxl .wpfg__filtered-cta-link {
  font-size: var(--wpfg-cta-font-size, 22px);
}

.wpfg__filtered-cta--size-xxl .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--size-xxl .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 22px);
  padding: var(--wpfg-cta-padding, 12px 20px);
}

.wpfg__filtered-cta--size-xxxl .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--size-xxxl .wpfg__filtered-cta-link {
  font-size: var(--wpfg-cta-font-size, 26px);
}

.wpfg__filtered-cta--size-xxxl .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--size-xxxl .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 26px);
  padding: var(--wpfg-cta-padding, 14px 22px);
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-sm .wpfg__filtered-cta-chip,
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-sm .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 12px);
  padding: var(--wpfg-cta-padding, 6px 10px);
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-md .wpfg__filtered-cta-chip,
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-md .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 14px);
  padding: var(--wpfg-cta-padding, 8px 14px);
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-lg .wpfg__filtered-cta-chip,
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-lg .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 16px);
  padding: var(--wpfg-cta-padding, 10px 18px);
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-xl .wpfg__filtered-cta-chip,
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-xl .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 19px);
  padding: var(--wpfg-cta-padding, 11px 18px);
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-xxl .wpfg__filtered-cta-chip,
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-xxl .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 22px);
  padding: var(--wpfg-cta-padding, 12px 20px);
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-xxxl .wpfg__filtered-cta-chip,
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--size-xxxl .wpfg__filtered-cta-btn {
  font-size: var(--wpfg-cta-font-size, 26px);
  padding: var(--wpfg-cta-padding, 14px 22px);
}

.wpfg__filtered-cta--uppercase .wpfg__filtered-cta-minimal,
.wpfg__filtered-cta--uppercase .wpfg__filtered-cta-link,
.wpfg__filtered-cta--uppercase .wpfg__filtered-cta-chip,
.wpfg__filtered-cta--uppercase .wpfg__filtered-cta-btn {
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.wpfg .wpfg__results + .wpfg__filtered-cta,
.wpfg .wpfg__carousel-row + .wpfg__filtered-cta {
  margin-top: var(--wpfg-cta-margin-top, 16px);
}

.wpfg--filters-center .wpfg__filtered-cta {
  text-align: center;
}

.wpfg--filters-right .wpfg__filtered-cta {
  text-align: right;
}

/* Explicit CTA alignment (overrides match-filter rules above). */
.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--align-left {
  text-align: left;
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--align-center {
  text-align: center;
}

.wpfg .wpfg__filtered-cta.wpfg__filtered-cta--align-right {
  text-align: right;
}

.wpfg__grid {
  display: grid;
  gap: var(--wpfg-gap-row, var(--wpfg-gap)) var(--wpfg-gap-col, var(--wpfg-gap));
}

.wpfg__grid.wpfg__grid--layout-carousel {
  display: flex !important;
  align-items: flex-start;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: none;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
  cursor: grab;
  scrollbar-width: none;
  -ms-overflow-style: none;
  -webkit-user-select: none;
  user-select: none;
}

.wpfg__grid.wpfg__grid--layout-carousel::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

.wpfg__grid.wpfg__grid--layout-carousel:active {
  cursor: grabbing;
}

.wpfg__grid.wpfg__grid--layout-carousel.is-dragging {
  cursor: grabbing;
}

.wpfg__grid.wpfg__grid--layout-carousel .wpfg__card {
  flex: 0 0 auto;
  min-width: 0;
  scroll-snap-align: none;
  touch-action: pan-x;
}

.wpfg__grid.wpfg__grid--layout-carousel .wpfg__card a,
.wpfg__grid.wpfg__grid--layout-carousel .wpfg__link {
  touch-action: manipulation;
}

.wpfg__grid.wpfg__grid--layout-carousel .wpfg__img,
.wpfg__grid.wpfg__grid--layout-carousel .wpfg__media {
  touch-action: pan-x;
}

.wpfg__grid.wpfg__grid--layout-carousel.wpfg__grid--cols-1 .wpfg__card { flex-basis: 100%; }
.wpfg__grid.wpfg__grid--layout-carousel.wpfg__grid--cols-2 .wpfg__card { flex-basis: calc((100% - var(--wpfg-gap-col, var(--wpfg-gap))) / 2); }
.wpfg__grid.wpfg__grid--layout-carousel.wpfg__grid--cols-3 .wpfg__card { flex-basis: calc((100% - (var(--wpfg-gap-col, var(--wpfg-gap)) * 2)) / 3); }
.wpfg__grid.wpfg__grid--layout-carousel.wpfg__grid--cols-4 .wpfg__card { flex-basis: calc((100% - (var(--wpfg-gap-col, var(--wpfg-gap)) * 3)) / 4); }
.wpfg__grid.wpfg__grid--layout-carousel.wpfg__grid--cols-5 .wpfg__card { flex-basis: calc((100% - (var(--wpfg-gap-col, var(--wpfg-gap)) * 4)) / 5); }
.wpfg__grid.wpfg__grid--layout-carousel.wpfg__grid--cols-6 .wpfg__card { flex-basis: calc((100% - (var(--wpfg-gap-col, var(--wpfg-gap)) * 5)) / 6); }

.wpfg__grid.wpfg__grid--layout-carousel .wpfg__media {
  aspect-ratio: auto;
  height: auto;
  display: flex;
  justify-content: center;
  align-items: center;
  background: transparent;
}

.wpfg__grid.wpfg__grid--layout-carousel .wpfg__img {
  width: 100%;
  height: auto;
  max-height: var(--wpfg-carousel-max-h, min(78vh, 760px));
  object-fit: contain;
  -webkit-user-drag: none;
  user-drag: none;
}

/* Original photo (natural): slide width follows aspect at max-height (JS sets flex-basis). */
.wpfg[data-ratio="natural"] .wpfg__grid.wpfg__grid--layout-carousel .wpfg__card {
  flex: 0 0 auto;
  flex-basis: auto !important;
  width: auto;
  max-width: none;
  min-width: 0;
}

.wpfg[data-ratio="natural"] .wpfg__grid.wpfg__grid--layout-carousel .wpfg__media {
  display: block;
  text-align: center;
}

.wpfg[data-ratio="natural"] .wpfg__grid.wpfg__grid--layout-carousel .wpfg__img--natural {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: var(--wpfg-carousel-max-h, min(78vh, 760px));
  object-fit: contain;
  display: block;
  margin-inline: auto;
}

.wpfg__carousel-row {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  width: 100%;
  max-width: 100%;
}

.wpfg__carousel-row .wpfg__results--carousel {
  flex: 1 1 auto;
  min-width: 0;
}

.wpfg__carousel-row .wpfg__carousel-btn {
  flex: 0 0 auto;
  align-self: center;
  margin: 0;
  padding: 4px 2px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  min-width: 1.25em;
  width: auto;
  height: auto;
  line-height: 1;
  font-size: clamp(26px, 4vw, 40px);
  font-weight: 300;
  color: var(--wpfg-text);
  opacity: 0.55;
  cursor: pointer;
  transition: opacity 0.15s ease;
}

.wpfg__carousel-row .wpfg__carousel-btn:hover:not([disabled]) {
  opacity: 1;
}

.wpfg__carousel-row .wpfg__carousel-btn[disabled] {
  opacity: 0.2;
  cursor: default;
}

/* Masonry: multicol flow (not CSS grid). */
.wpfg .wpfg__results .wpfg__grid.wpfg__grid--layout-masonry {
  display: block !important;
  width: 100%;
  column-gap: var(--wpfg-gap-col, var(--wpfg-gap));
  column-fill: auto;
  background-color: var(--wpfg-grid-surface, transparent);
}

.wpfg__grid--layout-masonry.wpfg__grid--cols-1 { column-count: 1; }
.wpfg__grid--layout-masonry.wpfg__grid--cols-2 { column-count: 2; }
.wpfg__grid--layout-masonry.wpfg__grid--cols-3 { column-count: 3; }
.wpfg__grid--layout-masonry.wpfg__grid--cols-4 { column-count: 4; }
.wpfg__grid--layout-masonry.wpfg__grid--cols-5 { column-count: 5; }
.wpfg__grid--layout-masonry.wpfg__grid--cols-6 { column-count: 6; }

.wpfg__grid--layout-masonry .wpfg__card {
  display: inline-block;
  width: 100%;
  vertical-align: top;
  break-inside: avoid;
  page-break-inside: avoid;
  margin-top: 0;
  margin-bottom: var(--wpfg-gap-row, var(--wpfg-gap));
  -webkit-column-break-inside: avoid;
}

.wpfg--masonry-ordered .wpfg__grid.wpfg__grid--layout-masonry {
  position: relative;
  display: block !important;
  column-count: 1 !important;
  column-gap: 0 !important;
}

.wpfg--masonry-ordered .wpfg__grid.wpfg__grid--layout-masonry .wpfg__card {
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  margin: 0 !important;
  break-inside: auto;
  page-break-inside: auto;
}

.wpfg__grid.wpfg__grid--layout-grid {
  grid-auto-flow: row;
}

.wpfg__media--masonry {
  aspect-ratio: auto;
  height: auto;
  background: var(--wpfg-grid-surface, transparent);
  overflow: hidden;
}

.wpfg__grid--cols-1 { grid-template-columns: 1fr; }
.wpfg__grid--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.wpfg__grid--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.wpfg__grid--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.wpfg__grid--cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.wpfg__grid--cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }

@media (max-width: 960px) {
  .wpfg__grid--cols-4,
  .wpfg__grid--cols-5,
  .wpfg__grid--cols-6 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .wpfg__grid--layout-masonry.wpfg__grid--cols-4,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-5,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-6 {
    column-count: 3;
  }
  .wpfg__grid.wpfg__grid--layout-carousel .wpfg__card {
    flex-basis: calc((100% - (var(--wpfg-gap-col, var(--wpfg-gap)) * 2)) / 3);
  }
}

@media (max-width: 700px) {
  .wpfg__grid--cols-3,
  .wpfg__grid--cols-4,
  .wpfg__grid--cols-5,
  .wpfg__grid--cols-6 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .wpfg__grid--layout-masonry.wpfg__grid--cols-3,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-4,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-5,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-6 {
    column-count: 2;
  }
  .wpfg__grid.wpfg__grid--layout-carousel .wpfg__card {
    flex-basis: calc((100% - var(--wpfg-gap-col, var(--wpfg-gap))) / 2);
  }
}

@media (max-width: 420px) {
  .wpfg__grid:not(.wpfg__grid--layout-masonry) {
    grid-template-columns: 1fr !important;
  }
  .wpfg__grid--layout-masonry.wpfg__grid--cols-3,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-4,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-5,
  .wpfg__grid--layout-masonry.wpfg__grid--cols-6 {
    column-count: 2;
  }
  .wpfg__grid.wpfg__grid--layout-carousel .wpfg__card {
    flex-basis: 100%;
  }
}

.wpfg__card {
  border: 0;
  border-radius: 0;
  overflow: hidden;
  background: transparent;
  transform-origin: 50% 100%;
  transition:
    opacity 420ms ease,
    transform 520ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 260ms ease;
  will-change: opacity, transform;
}

/* Hidden state: subtle fade + lift. Used for first load and newly mounted cards. */
.wpfg__card.wpfg__card--out {
  opacity: 0;
  transform: translate3d(0, 14px, 0);
  pointer-events: none;
}

.wpfg__card.wpfg__card--leaving {
  filter: blur(1px);
}

.wpfg__card.wpfg__card--in {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: none;
}

.wpfg__card.wpfg__card--ghost {
  box-sizing: border-box;
  contain: layout paint;
  backface-visibility: hidden;
}

@media (prefers-reduced-motion: reduce) {
  .wpfg__card,
  .wpfg__card.wpfg__card--in,
  .wpfg__card.wpfg__card--out,
  .wpfg__card.wpfg__card--leaving {
    transition: none !important;
    transform: none !important;
    opacity: 1 !important;
    filter: none !important;
    will-change: auto;
  }

  .wpfg__results .wpfg__img,
  .wpfg__featured .wpfg__img {
    opacity: 1 !important;
    transition: transform 220ms ease !important;
  }
}

.wpfg__link {
  display: block;
  color: inherit;
  text-decoration: none;
}

.wpfg__media {
  background: var(--wpfg-grid-surface, transparent);
  overflow: hidden;
  position: relative;
}

/* Hover overlay: dim image + show caption on photo */
.wpfg--hover-dim_text .wpfg__hover {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px;
  background: rgba(0, 0, 0, 0.42);
  opacity: 0;
  transition: opacity 200ms ease;
  pointer-events: none;
}
.wpfg--hover-dim_text .wpfg__hover-text {
  color: var(--wpfg-hover-text-color, rgba(255, 255, 255, 0.96));
  font-size: var(--wpfg-hover-text-size, 14px);
  font-family: var(--wpfg-hover-text-font, inherit);
  line-height: 1.25;
  letter-spacing: 0.2px;
  text-align: center;
  text-wrap: balance;
  white-space: pre-wrap;
  text-shadow: 0 1px 18px rgba(0,0,0,0.55);
}
.wpfg--hover-dim_text .wpfg__hover-text--tablet,
.wpfg--hover-dim_text .wpfg__hover-text--mobile {
  display: none;
}
.wpfg--hover-dim_text .wpfg__card:hover .wpfg__hover,
.wpfg--hover-dim_text .wpfg__card:focus-within .wpfg__hover {
  opacity: 1;
}

.wpfg__media--ratio-4x3 { aspect-ratio: 4 / 3; }
.wpfg__media--ratio-1x1 { aspect-ratio: 1 / 1; }
.wpfg__media--ratio-3x4 { aspect-ratio: 3 / 4; }
.wpfg__media--ratio-16x9 { aspect-ratio: 16 / 9; }
.wpfg__media--ratio-natural {
  aspect-ratio: auto;
  height: auto;
}

.wpfg__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transform: scale(1);
  transition: transform 220ms ease;
}

/* Thumbs start transparent and ease in when loaded (JS adds .is-ready). */
.wpfg__results .wpfg__img,
.wpfg__featured .wpfg__img {
  opacity: 0;
  transition: opacity 420ms ease, transform 220ms ease;
}

.wpfg__results .wpfg__img.is-ready,
.wpfg__featured .wpfg__img.is-ready {
  opacity: 1;
}

/* Masonry cards use .wpfg__img + .wpfg__img--masonry; this block must follow .wpfg__img so height/object-fit are not overridden. */
.wpfg__img.wpfg__img--masonry {
  width: 100%;
  height: auto;
  max-height: none;
  object-fit: contain;
  background-color: var(--wpfg-grid-surface, transparent);
}

.wpfg__img--natural {
  width: 100%;
  height: auto;
  max-height: none;
  object-fit: contain;
}

.wpfg__grid:not(.wpfg__grid--layout-masonry) .wpfg__card:hover .wpfg__img {
  transform: scale(1.02);
}

.wpfg__grid--layout-masonry .wpfg__card:hover .wpfg__img.wpfg__img--masonry {
  transform: scale(1.03);
  transition: opacity 1.15s ease, transform 220ms ease;
}

.wpfg__placeholder {
  width: 100%;
  height: 100%;
  min-height: 80px;
  border-radius: 0;
  background: linear-gradient(110deg, #ececec 8%, #f6f6f6 18%, #ececec 33%);
  background-size: 200% 100%;
  animation: wpfg-shimmer 1.2s linear infinite;
}

.wpfg__placeholder--square {
  border-radius: 0;
}

@keyframes wpfg-shimmer {
  to { background-position-x: -200%; }
}

.wpfg__meta {
  padding: 10px 0 0;
}

.wpfg__title {
  margin: 0;
  font-size: var(--wpfg-card-title-size, 14px);
  font-family: var(--wpfg-card-title-font, inherit);
  line-height: 1.25;
  color: var(--wpfg-card-title-color, var(--wpfg-text));
}

.wpfg__price {
  margin-top: 6px;
  font-size: var(--wpfg-card-price-size, 0.95em);
  font-family: var(--wpfg-card-price-font, inherit);
  font-weight: 600;
  color: var(--wpfg-card-price-color, var(--wpfg-text));
  opacity: 0.92;
}

.wpfg__desc {
  margin-top: 8px;
  font-size: var(--wpfg-card-desc-size, 13px);
  font-family: var(--wpfg-card-desc-font, inherit);
  line-height: 1.45;
  color: var(--wpfg-card-desc-color, var(--wpfg-muted));
}

.wpfg__desc p {
  margin: 0 0 0.5em;
}

.wpfg__desc p:last-child {
  margin-bottom: 0;
}

.wpfg__empty {
  padding: 18px;
  border: 1px dashed var(--wpfg-border);
  border-radius: var(--wpfg-radius);
  color: var(--wpfg-muted);
}

.wpfg.is-loading {
  opacity: 1;
}

.wpfg__results {
  position: relative;
  transition: opacity 220ms ease;
}

/* Extra backing for multicol + reveal: fills any gap between wrapper and grid. */
.wpfg .wpfg__results:has(.wpfg__grid--layout-masonry) {
  background-color: var(--wpfg-grid-surface, transparent);
}

/* Subtle, delayed dim — only appears if the request is slow.
   Quick swaps complete before the 220ms delay, so users never see it. */
.wpfg.is-loading .wpfg__results {
  opacity: 0.94;
  transition: opacity 220ms ease 220ms;
}

.wpfg__loadmore {
  display: flex;
  justify-content: center;
}
.wpfg__loadmore-btn {
  appearance: none;
  border: 1px solid rgba(0,0,0,0.18);
  background: #fff;
  color: inherit;
  padding: 10px 14px;
  border-radius: 10px;
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  transition: transform 120ms ease, box-shadow 180ms ease, border-color 180ms ease;
}
.wpfg__loadmore-btn:hover {
  border-color: rgba(0,0,0,0.28);
  box-shadow: 0 6px 22px rgba(0,0,0,0.08);
  transform: translateY(-1px);
}
.wpfg__loadmore-btn:disabled {
  opacity: 0.55;
  cursor: default;
  transform: none;
  box-shadow: none;
}

/* Lightbox */
html.wpfg-no-scroll,
html.wpfg-no-scroll body {
  overflow: hidden;
}

.wpfg-lightbox {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: none;
  isolation: isolate;
  pointer-events: auto;
}

.wpfg-lightbox.is-open {
  display: block;
  -webkit-user-select: none;
  user-select: none;
}

.wpfg-lightbox-active .wpfg .wpfg__hover,
.wpfg-lightbox-active .wpfg .wpfg__meta,
.wpfg-lightbox-active .wpfg .wpfg__desc {
  opacity: 0 !important;
  visibility: hidden !important;
  transition: none !important;
}

.wpfg-lightbox__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.68);
  pointer-events: auto;
  opacity: 1;
  transition: opacity 0.52s cubic-bezier(0.4, 0, 0.2, 1);
}

.wpfg-lightbox.is-closing .wpfg-lightbox__backdrop {
  opacity: 0;
}

.wpfg-lightbox__dialog {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 18px;
  z-index: 0;
  pointer-events: none;
}

.wpfg-lightbox__figure {
  position: relative;
  z-index: 1;
  margin: 0 auto;
  width: fit-content;
  max-width: min(1100px, 96vw);
  max-height: 88vh;
  display: grid;
  gap: 10px;
  pointer-events: auto;
  transform: scale(1) translateY(0);
  opacity: 1;
  transition: transform 0.58s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: 50% 42%;
  -webkit-user-select: none;
  user-select: none;
}
.wpfg-lightbox.is-opening .wpfg-lightbox__figure {
  transform: scale(0.985) translateY(10px);
  opacity: 0.01;
}

/* During thumb → lightbox fly animation, keep figure hidden (clone handles zoom). */
.wpfg-lightbox.is-opening-fly .wpfg-lightbox__figure {
  opacity: 0;
}

.wpfg-lightbox.is-closing .wpfg-lightbox__figure {
  transform: scale(0.84) translateY(28px);
  opacity: 0;
}

.wpfg-lightbox.is-closing-fly .wpfg-lightbox__figure {
  transform: none;
  opacity: 0;
  transition: opacity 0.22s ease;
}

.wpfg-lightbox.is-closing-fly .wpfg-lightbox__backdrop {
  opacity: 0;
  transition: opacity 0.48s ease;
}

.wpfg-lightbox__stage {
  position: relative;
  touch-action: none;
  cursor: grab;
  width: 100%;
  max-height: 78vh;
  -webkit-user-select: none;
  user-select: none;
}

.wpfg-lightbox__thumbs {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 44px;
  justify-content: center;
  gap: 8px;
  overflow-x: auto;
  padding: 6px 2px;
  opacity: 0;
  transition: opacity 480ms ease;
  pointer-events: none;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.wpfg-lightbox__thumbs.is-visible {
  opacity: 1;
  pointer-events: auto;
}
.wpfg-lightbox__thumb {
  width: 44px;
  height: 44px;
  border-radius: 6px;
  border: 1px solid rgba(255,255,255,0.22);
  padding: 0;
  background: rgba(0,0,0,0.2);
  cursor: pointer;
  overflow: hidden;
  opacity: 0.75;
  transition: opacity 160ms ease, border-color 160ms ease, transform 160ms ease;
}
.wpfg-lightbox__thumb.is-active {
  opacity: 1;
  border-color: rgba(255,255,255,0.55);
  transform: translateY(-1px);
}
.wpfg-lightbox__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  opacity: 0;
  transition: opacity 420ms ease;
}
.wpfg-lightbox__thumb img.is-ready {
  opacity: 1;
}

/* Slides engine (like lightGallery: prev/current/next) */
.wpfg-lightbox__slides {
  position: relative;
  width: 100%;
  display: grid;
  grid-template-areas: "stack";
}
.wpfg-lightbox__slide {
  grid-area: stack;
  display: grid;
  place-items: center;
  opacity: 0;
  transform: translate3d(0, 0, 0);
  pointer-events: none;
  will-change: transform, opacity;
}
.wpfg-lightbox__slide.is-current {
  opacity: 1;
  pointer-events: auto;
}

.wpfg-lightbox__slides[data-mode="fade"] .wpfg-lightbox__slide {
  transition: opacity 220ms ease;
}

.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide {
  transition: transform 220ms cubic-bezier(0.25, 0.9, 0.25, 1), opacity 180ms ease;
}
.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide.is-next {
  opacity: 1;
  transform: translate3d(36px, 0, 0);
}
.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide.is-prev {
  opacity: 1;
  transform: translate3d(-36px, 0, 0);
}
.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide.is-next.is-current,
.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide.is-prev.is-current {
  transform: translate3d(0, 0, 0);
}
.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide.is-exit-left {
  opacity: 0;
  transform: translate3d(-42px, 0, 0);
}
.wpfg-lightbox__slides[data-mode="slide"] .wpfg-lightbox__slide.is-exit-right {
  opacity: 0;
  transform: translate3d(42px, 0, 0);
}

.wpfg__copyright {
  position: absolute;
  z-index: 3;
  pointer-events: none;
  box-sizing: border-box;
}

.wpfg__copyright--bl {
  left: 8px;
  bottom: 8px;
  right: auto;
  top: auto;
  transform: none;
  text-align: left;
}

.wpfg__copyright--br {
  right: 8px;
  bottom: 8px;
  left: auto;
  top: auto;
  transform: none;
  text-align: right;
}

.wpfg__copyright--tl {
  left: 8px;
  top: 8px;
  right: auto;
  bottom: auto;
  transform: none;
  text-align: left;
}

.wpfg__copyright--tr {
  right: 8px;
  top: 8px;
  left: auto;
  bottom: auto;
  transform: none;
  text-align: right;
}

.wpfg__copyright--bc {
  left: 50%;
  bottom: 8px;
  right: auto;
  top: auto;
  transform: translateX(-50%);
  text-align: center;
}

.wpfg__copyright--tc {
  left: 50%;
  top: 8px;
  right: auto;
  bottom: auto;
  transform: translateX(-50%);
  text-align: center;
}

.wpfg__copyright--mc {
  left: 50%;
  top: 50%;
  right: auto;
  bottom: auto;
  transform: translate(-50%, -50%);
  text-align: center;
}

.wpfg-lightbox__zoom {
  display: block;
  position: relative;
  transform-origin: center center;
  will-change: transform;
}

.wpfg-lightbox__copyright {
  position: absolute;
  z-index: 4;
  pointer-events: none;
  box-sizing: border-box;
}

.wpfg-lightbox__stage.is-pinching {
  touch-action: none;
}

.wpfg-lightbox__stage.is-dragging {
  cursor: grabbing;
}

.wpfg-lightbox__stage.is-dragging .wpfg-lightbox__img {
  transition: none !important;
}

.wpfg-lightbox__img {
  width: auto;
  max-width: min(1100px, 96vw);
  height: auto;
  max-height: 78vh;
  object-fit: contain;
  display: block;
  background: #111;
  border-radius: 0;
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
  transition: transform 0.12s ease-out;
  will-change: transform;
}

.wpfg-lightbox__figure .wpfg-lightbox__caption {
  color: var(--wpfg-lb-caption-color, rgba(255,255,255,0.92));
  font-size: var(--wpfg-lb-caption-size, 14px);
  font-family: var(--wpfg-lb-caption-font, inherit);
  line-height: 1.4;
  -webkit-user-select: text;
  user-select: text;
}

.wpfg-lightbox__figure.wpfg-lightbox__figure--cap-center .wpfg-lightbox__caption {
  text-align: center;
}

.wpfg-lightbox__figure.wpfg-lightbox__figure--cap-right .wpfg-lightbox__caption {
  text-align: right;
}

.wpfg-lightbox__figure .wpfg-lightbox__caption::selection {
  background: rgba(100, 160, 255, 0.45);
  color: #fff;
}

.wpfg-lightbox__figure .wpfg-lightbox__price {
  margin: 8px 0 0;
  font-size: var(--wpfg-lb-price-size, 15px);
  font-family: var(--wpfg-lb-price-font, inherit);
  font-weight: 600;
  color: var(--wpfg-lb-price-color, rgba(255,255,255,0.95));
}

.wpfg-lightbox__figure .wpfg-lightbox__longdesc {
  margin: 10px 0 0;
  font-size: var(--wpfg-lb-desc-size, 13px);
  font-family: var(--wpfg-lb-desc-font, inherit);
  line-height: 1.45;
  color: var(--wpfg-lb-desc-color, rgba(255,255,255,0.88));
  max-height: 34vh;
  overflow: auto;
  -webkit-user-select: text;
  user-select: text;
}

.wpfg-lightbox__figure.wpfg-lightbox__figure--cap-center .wpfg-lightbox__price,
.wpfg-lightbox__figure.wpfg-lightbox__figure--cap-center .wpfg-lightbox__longdesc {
  text-align: center;
}

.wpfg__grid:not(.wpfg__grid--layout-masonry) .wpfg__card:hover .wpfg__img--natural {
  transform: none;
  opacity: 0.96;
  transition: opacity 0.2s ease;
}

.wpfg-lightbox__close {
  z-index: 20;
  position: absolute;
  top: 14px;
  right: 14px;
  width: 44px;
  height: 44px;
  border-radius: 4px;
  pointer-events: auto;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(0,0,0,0.3);
  color: #fff;
  font-size: 28px;
  line-height: 1;
  cursor: pointer;
}

.wpfg-lightbox__close:hover {
  background: rgba(0,0,0,0.5);
}

.wpfg-lightbox__nav {
  z-index: 20;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 44px;
  height: 44px;
  border-radius: 4px;
  pointer-events: auto;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(0,0,0,0.3);
  color: #fff;
  font-size: 32px;
  line-height: 1;
  cursor: pointer;
  display: none;
}

.wpfg-lightbox__nav:hover {
  background: rgba(0,0,0,0.5);
}

.wpfg-lightbox__prev { left: 14px; }
.wpfg-lightbox__next { right: 14px; }

@media (max-width: 520px) {
  .wpfg-lightbox__prev { left: 10px; }
  .wpfg-lightbox__next { right: 10px; }
}

/*
 * Print / “Save as PDF”: no scroll → IntersectionObserver never reveals far-down cards;
 * lazy images may not load in some browsers.
 */
@media print {
  .wpfg-lightbox {
    display: none !important;
  }

  .wpfg__carousel-btn {
    display: none !important;
  }

  .wpfg.is-loading,
  .wpfg.is-loading .wpfg__results {
    opacity: 1 !important;
  }

  .wpfg__card,
  .wpfg__card.wpfg__card--out,
  .wpfg__card.wpfg__card--in,
  .wpfg__card.wpfg__card--leaving {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
    will-change: auto !important;
    pointer-events: auto !important;
    animation: none !important;
  }

  .wpfg__card.wpfg__card--ghost {
    display: none !important;
  }

  .wpfg--hover-dim_text .wpfg__hover {
    opacity: 0 !important;
  }

  .wpfg .wpfg__results .wpfg__grid.wpfg__grid--layout-carousel,
  .wpfg__grid.wpfg__grid--layout-carousel {
    display: grid !important;
    grid-auto-flow: row !important;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)) !important;
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
    gap: var(--wpfg-gap-row, var(--wpfg-gap)) var(--wpfg-gap-col, var(--wpfg-gap)) !important;
    align-items: start !important;
    -webkit-user-select: auto !important;
    user-select: auto !important;
  }

  .wpfg__grid.wpfg__grid--layout-carousel .wpfg__card {
    flex: initial !important;
    flex-basis: auto !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    transform: none !important;
  }

  .wpfg__grid.wpfg__grid--layout-carousel .wpfg__img,
  .wpfg__grid.wpfg__grid--layout-carousel .wpfg__img--natural {
    max-height: none !important;
    height: auto !important;
  }

  .wpfg .wpfg__img,
  .wpfg .wpfg__img--natural,
  .wpfg .wpfg__img--masonry {
    max-height: none !important;
  }
}
