.npg-gallery {
  --npg-gap: 12px;
  --npg-thumb-w: 78px;
  --npg-thumb-h: 78px;
  --npg-aspect: auto;
  --npg-modal-color: #fff;
  box-sizing: border-box;
  max-width: 100%;
  margin-inline: auto;
  font-family: inherit;
  color: #111827;
}
.npg-gallery *, .npg-gallery *::before, .npg-gallery *::after { box-sizing: border-box; }
.npg-shell { display: flex; gap: var(--npg-gap); align-items: stretch; min-width: 0; }
.npg-main-column { flex: 1 1 auto; min-width: 0; }
.npg-thumbs-column { flex: 0 0 var(--npg-thumb-w); min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.npg-thumbs { display: flex; flex-direction: column; gap: 10px; max-height: calc((var(--npg-thumb-h) * var(--npg-visible-thumbs, 5)) + (10px * (var(--npg-visible-thumbs, 5) - 1))); overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; scroll-snap-type: y proximity; }
.npg-thumb { position: relative; flex: 0 0 var(--npg-thumb-h); width: var(--npg-thumb-w); height: var(--npg-thumb-h); padding: 5px; overflow: hidden; appearance: none; border: 2px solid #e5e7eb; background: #f5f5f5; cursor: pointer; transition: border-color .2s ease, opacity .2s ease, transform .2s ease; scroll-snap-align: start; }
.npg-thumb:hover { border-color: #9ca3af; transform: translateY(-1px); }
.npg-thumb[aria-current="true"] { border-color: #ef4056; }
.npg-thumb img { display: block; width: 100%; height: 100%; object-fit: contain; border-radius: inherit; }
.npg-thumb-collage { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; width: 100%; height: 100%; }
.npg-stage { position: relative; display: grid; place-items: center; width: 100%; height: 560px; aspect-ratio: var(--npg-aspect); overflow: hidden; touch-action: pan-y pinch-zoom; background: #f5f5f5; isolation: isolate; }
.npg-main-image { display: block; width: 100%; height: 100%; max-width: 100%; object-fit: contain; object-position: center; user-select: none; -webkit-user-drag: none; opacity: 1; transform: scale(1); transition: opacity .22s ease, transform .35s cubic-bezier(.22,1,.36,1); }
.npg-main-image.is-changing { opacity: .22; transform: scale(.985); }
.npg-main-clickable .npg-main-image { cursor: zoom-in; }
.npg-icon-button, .npg-modal-button { display: inline-grid; place-items: center; padding: 0; border: 0; border-radius: 999px; appearance: none; cursor: pointer; transition: opacity .2s ease, transform .2s ease, background .2s ease; }
.npg-icon-button { position: absolute; z-index: 3; width: 42px; height: 42px; color: #111827; background: #fff; box-shadow: 0 5px 20px rgba(17,24,39,.12); }
.npg-icon-button:hover, .npg-modal-button:hover { transform: scale(1.06); }
.npg-icon-button:disabled, .npg-modal-button:disabled { opacity: .32; cursor: default; transform: none; }
.npg-icon-button svg, .npg-modal-button svg { width: 52%; height: 52%; }
.npg-icon-button i, .npg-modal-button i { font-size: 18px; line-height: 1; }
.npg-open { inset-block-start: 16px; inset-inline-end: 16px; }
.npg-prev { inset-inline-start: 16px; top: 50%; transform: translateY(-50%); }
.npg-next { inset-inline-end: 16px; top: 50%; transform: translateY(-50%); }
.npg-prev:hover, .npg-next:hover { transform: translateY(-50%) scale(1.06); }
.npg-counter-stage { position: absolute; z-index: 2; inset-inline-start: 16px; inset-block-end: 16px; padding: 5px 10px; border-radius: 99px; color: #fff; background: rgba(17,24,39,.72); backdrop-filter: blur(5px); }
.npg-footer { display: flex; align-items: center; gap: 14px; margin-top: 14px; }
.npg-progress { position: relative; display: flex; gap: 3px; flex: 1 1 auto; height: 4px; overflow: hidden; background: #e5e7eb; direction: ltr; }
.npg-progress-fill { height: 100%; width: 0; background: #ef4056; transition: width .35s cubic-bezier(.22,1,.36,1); }
.npg-progress-step { display: block; flex: 1 1 0; height: 100%; background: transparent; transition: background .25s ease; }
.npg-progress-step.is-active { background: #ef4056; }
.npg-counter { flex: 0 0 auto; color: #4b5563; font-size: 13px; line-height: 1.5; white-space: nowrap; }
.npg-more { align-items: center; justify-content: center; gap: 5px; color: #fff; background-color: rgba(17,24,39,.72); text-align: center; cursor: pointer; }
.npg-more-overlay { position: absolute; z-index: 2; inset: 0; display: flex; flex-direction: column; padding: 7px; font-size: 11px; line-height: 1.5; backdrop-filter: blur(2px); }
.npg-more-overlay[hidden] { display: none; }
.npg-more svg { width: 19px; height: 19px; }
.npg-more-below { display: inline-flex; width: 100%; min-height: 38px; padding: 7px 9px; border: 0; border-radius: 9px; font: inherit; }
.npg-more-below[hidden] { display: none; }
.npg-loader { position: absolute; z-index: 5; inset: 50% auto auto 50%; width: 34px; height: 34px; margin: -17px; border: 3px solid rgba(128,128,128,.22); border-top-color: #ef4056; border-radius: 50%; opacity: 0; pointer-events: none; animation: npg-spin .7s linear infinite paused; transition: opacity .15s ease; }
.npg-loader.is-loading { opacity: 1; animation-play-state: running; }
@keyframes npg-spin { to { transform: rotate(360deg); } }

/* Position classes emitted by Elementor responsive controls. */
.npg-pos-left .npg-shell { flex-direction: row; }
.npg-pos-right .npg-shell { flex-direction: row-reverse; }
.npg-pos-top .npg-shell { flex-direction: column; }
.npg-pos-bottom .npg-shell { flex-direction: column-reverse; }
.npg-pos-top .npg-thumbs-column, .npg-pos-bottom .npg-thumbs-column { flex-basis: auto; width: 100%; }
.npg-pos-top .npg-thumbs, .npg-pos-bottom .npg-thumbs { flex-direction: row; max-width: 100%; max-height: none; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x proximity; }
.npg-thumbs-no .npg-thumbs-column, .npg-progress-no .npg-progress { display: none; }
.npg-is-single .npg-thumbs-column, .npg-is-single .npg-footer { display: none !important; }
.npg-mobile-carousel, .npg-mobile-status { display: none; }

/* This edition is intentionally mobile-only. Elementor's editor can still render it for configuration. */
@media (min-width: 768px) {
  body:not(.elementor-editor-active):not(.elementor-editor-preview) .npg-gallery { display: none !important; }
}

/* Fullscreen gallery. */
body.npg-modal-open { overflow: hidden !important; }
.npg-modal[hidden] { display: none !important; }
.npg-modal { position: fixed; z-index: 999999; inset: 0; display: grid; grid-template: minmax(0,1fr) auto / minmax(0,1fr); gap: 14px; padding: 64px 72px 22px; color: var(--npg-modal-color); background: rgba(10,13,18,.96); opacity: 0; visibility: hidden; transition: opacity .18s ease, visibility .18s ease; }
.npg-modal.is-open { opacity: 1; visibility: visible; }
.npg-modal-stage { position: relative; display: grid; place-items: center; min-height: 0; overflow: hidden; touch-action: none; }
.npg-modal-image { display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; user-select: none; will-change: transform; transition: opacity .18s ease, transform .2s ease; cursor: zoom-in; }
.npg-modal-image.is-changing { opacity: .2; }
.npg-modal-image.is-zoomed { cursor: grab; transition: opacity .18s ease; }
.npg-modal-image.is-zoomed:active { cursor: grabbing; }
.npg-modal-button { position: absolute; z-index: 4; width: 46px; height: 46px; color: var(--npg-modal-color); background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.22); }
.npg-modal-close { inset-block-start: 18px; inset-inline-end: 20px; }
.npg-modal-zoom { inset-block-start: 18px; inset-inline-end: 78px; }
.npg-modal-prev { inset-inline-start: 18px; top: 50%; transform: translateY(-50%); }
.npg-modal-next { inset-inline-end: 18px; top: 50%; transform: translateY(-50%); }
.npg-modal-prev:hover, .npg-modal-next:hover { transform: translateY(-50%) scale(1.06); }
.npg-modal-counter { position: absolute; z-index: 3; inset-block-start: 26px; inset-inline-start: 24px; font-size: 14px; }
.npg-modal-caption { position: absolute; inset-inline: 0; inset-block-end: 4px; padding: 8px 12px; color: #fff; text-align: center; pointer-events: none; }
.npg-modal-thumbs { display: flex; justify-content: center; gap: 8px; max-width: 100%; overflow-x: auto; padding: 4px; }
.npg-modal-thumb { flex: 0 0 62px; width: 62px; height: 62px; padding: 4px; overflow: hidden; border: 2px solid transparent; border-radius: 9px; background: rgba(255,255,255,.1); cursor: pointer; }
.npg-modal-thumb[aria-current="true"] { border-color: var(--npg-modal-color); }
.npg-modal-thumb img { display: block; width: 100%; height: 100%; object-fit: contain; }

@media (max-width: 1024px) {
  .npg-pos-tablet-left .npg-shell { flex-direction: row; }
  .npg-pos-tablet-right .npg-shell { flex-direction: row-reverse; }
  .npg-pos-tablet-top .npg-shell { flex-direction: column; }
  .npg-pos-tablet-bottom .npg-shell { flex-direction: column-reverse; }
  .npg-pos-tablet-top .npg-thumbs-column, .npg-pos-tablet-bottom .npg-thumbs-column { flex-basis: auto; width: 100%; }
  .npg-pos-tablet-top .npg-thumbs, .npg-pos-tablet-bottom .npg-thumbs { flex-direction: row; max-width: 100%; max-height: none; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x proximity; }
  .npg-thumbs-tablet-no .npg-thumbs-column, .npg-progress-tablet-no .npg-progress { display: none; }
}
@media (max-width: 767px) {
  .npg-gallery {
    --npg-mobile-tile-size: min(70vw, 300px);
    --npg-mobile-stage-h: var(--npg-mobile-tile-size);
    --npg-mobile-gap: var(--npg-gap);
    --npg-mobile-radius: 0px;
    display: block;
    width: 100%;
    max-width: 100%;
    overflow: hidden;
  }
  .npg-gallery .npg-shell { display: none !important; }
  .npg-gallery .npg-mobile-carousel {
    position: relative;
    display: block;
    width: 100%;
    height: var(--npg-mobile-stage-h);
    overflow: hidden;
    isolation: isolate;
  }
  .npg-gallery .npg-mobile-scroll {
    width: 100%;
    height: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    direction: rtl;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 0;
    scrollbar-width: none;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-x pan-y;
  }
  .npg-gallery .npg-mobile-scroll::-webkit-scrollbar { display: none; }
  .npg-gallery .npg-mobile-track {
    display: flex;
    align-items: stretch;
    gap: var(--npg-mobile-gap);
    width: max-content;
    height: 100%;
    min-width: 100%;
    direction: rtl;
  }
  .npg-gallery .npg-mobile-block {
    flex: 0 0 auto;
    min-width: 0;
    height: 100%;
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }
  .npg-gallery .npg-mobile-block--hero,
  .npg-gallery .npg-mobile-block--end { width: var(--npg-mobile-tile-size); }
  .npg-gallery .npg-mobile-block--pair {
    display: grid;
    grid-template-rows: repeat(2, minmax(0, 1fr));
    gap: var(--npg-mobile-gap);
    width: calc((var(--npg-mobile-tile-size) - var(--npg-mobile-gap)) / 2);
  }
  .npg-gallery .npg-mobile-card {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 0;
    appearance: none;
    border: 0;
    border-radius: var(--npg-mobile-radius) !important;
    overflow: hidden;
    background: transparent;
    box-shadow: none;
    cursor: pointer;
    transition: none !important;
  }
  .npg-gallery .npg-mobile-card:focus-visible,
  .npg-gallery .npg-mobile-all:focus-visible { outline: 3px solid #ef4056; outline-offset: -3px; }
  .npg-gallery .npg-mobile-card img {
    display: block;
    width: 100%;
    height: 100%;
    max-width: 100%;
    object-fit: cover;
    object-position: center;
    user-select: none;
    -webkit-user-drag: none;
    border-radius: var(--npg-mobile-radius) !important;
    clip-path: inset(0 round var(--npg-mobile-radius));
  }
  .npg-gallery .npg-mobile-block--end {
    display: grid;
    place-items: center;
    padding: 16px;
    border-radius: var(--npg-mobile-radius) !important;
    background: transparent;
  }
  .npg-gallery .npg-mobile-all {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-height: 46px;
    padding: 10px 18px;
    border: 0;
    border-radius: 999px;
    color: #ef4056;
    background: #ffeaee;
    font: inherit;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: none !important;
  }
  .npg-gallery .npg-mobile-card:hover,
  .npg-gallery .npg-mobile-card:active,
  .npg-gallery .npg-mobile-all:hover,
  .npg-gallery .npg-mobile-all:active { opacity: 1; filter: none; transform: none; box-shadow: none; }
  .npg-mobile-all-icon { display: inline-flex; font-size: 20px; }
  .npg-gallery .npg-mobile-status {
    position: absolute;
    z-index: 4;
    inset-inline-start: 12px;
    inset-block-end: 10px;
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100px;
    height: 29px;
    padding: 5px 8px;
    border: 0;
    border-radius: 999px;
    color: #fff;
    background: rgba(67, 68, 72, .86);
    box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
    font: inherit;
    direction: rtl;
    cursor: pointer;
    transition: none !important;
    backdrop-filter: blur(4px);
  }
  .npg-gallery .npg-mobile-status:hover,
  .npg-gallery .npg-mobile-status:active { opacity: 1; filter: none; transform: none; }
  .npg-mobile-status-icon { display: inline-flex; flex: 0 0 auto; font-size: 15px; }
  .npg-mobile-counter { flex: 0 0 auto; color: #fff !important; font-size: 10px !important; line-height: 1; }
  .npg-mobile-divider { flex: 0 0 2px; width: 2px; height: 15px; border-radius: 99px; background: rgba(255,255,255,.42); }
  .npg-gallery .npg-mobile-progress {
    display: block !important;
    flex: 1 1 auto;
    width: auto !important;
    min-width: 18px;
    height: 5px !important;
    margin: 0;
    overflow: hidden;
    border-radius: 99px;
    background: rgba(255,255,255,.32);
  }
  .npg-gallery .npg-mobile-progress .npg-progress-fill,
  .npg-gallery .npg-mobile-progress .npg-progress-step.is-active { background: #fff; }
  .npg-gallery .npg-mobile-progress .npg-progress-fill {
    width: 100%;
    transform: scaleX(var(--npg-mobile-progress, 0));
    transform-origin: right center;
    transition: none;
    will-change: transform;
  }
  .npg-is-single .npg-mobile-block--hero { width: 100vw; max-width: 100%; }
  .npg-modal { padding: 62px 12px 14px; }
  .npg-modal-button { width: 42px; height: 42px; }
  .npg-modal-prev { inset-inline-start: 8px; }
  .npg-modal-next { inset-inline-end: 8px; }
  .npg-modal-thumb { flex-basis: 54px; width: 54px; height: 54px; }
}
@media (prefers-reduced-motion: reduce) {
  .npg-gallery *, .npg-gallery *::before, .npg-gallery *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
