
.pwsp-runtime-gallery{width:100%;position:relative}.pw-gallery-image-slot{position:relative;display:block;min-width:0;overflow:hidden;background:#f5f5f2}.pw-gallery-image-slot-link{display:block;width:100%;height:100%}.pw-gallery-image-slot img{display:block;width:100%;height:100%;object-fit:contain}.pw-gallery-thumbnail-rail{display:block;box-sizing:border-box;flex:0 0 auto;min-width:0;min-height:0;overflow:hidden}.pw-gallery-thumbnail-rail[data-direction="row"][data-overflow="scroll"]{width:min(var(--pwsp-viewport-width),100%);height:calc(var(--pwsp-effective-thumb-height,var(--pwsp-thumb-height)) + 16px);margin-inline:0;overflow-x:auto;overflow-y:hidden;scroll-behavior:auto;scrollbar-width:none;-ms-overflow-style:none}.pw-gallery-thumbnail-rail[data-direction="row"][data-overflow="scroll"]::-webkit-scrollbar{display:none;height:0;width:0}.pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="scroll"]{width:var(--pwsp-thumb-width);height:var(--pwsp-viewport-height);overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-ms-overflow-style:none}.pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="scroll"]::-webkit-scrollbar{display:none;height:0;width:0}.pw-gallery-thumbnail-rail[data-overflow="wrap"]{width:100%;height:auto;overflow:visible}.pwsp-thumb-track{display:flex;flex-direction:var(--pwsp-rail-direction,row);flex-wrap:nowrap;gap:var(--pwsp-rail-gap,10px);width:max-content;min-width:100%;min-height:100%;align-items:flex-start}.pw-gallery-thumbnail-rail[data-overflow="wrap"] .pwsp-thumb-track{width:100%;min-width:0;height:auto;flex-wrap:wrap}.pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="wrap"] .pwsp-thumb-track{flex-direction:column;width:auto;min-width:100%}.pw-gallery-thumb{display:block;box-sizing:border-box;position:relative;flex:0 0 auto;padding:0;border:0;background-color:var(--pwsp-thumb-bg,#fff)!important;background-image:none!important;cursor:pointer;overflow:hidden;width:var(--pwsp-thumb-width,90px);height:var(--pwsp-thumb-height,90px);appearance:none;-webkit-appearance:none;box-shadow:none!important;transition:background-color .12s ease}.pw-gallery-thumb:not(.is-active):not([aria-current="true"]):hover,.pw-gallery-thumb:not(.is-active):not([aria-current="true"]):focus{background-color:var(--pwsp-thumb-hover,var(--pwsp-thumb-bg,#fff))!important;background-image:none!important;box-shadow:none!important}.pw-gallery-thumb.is-active,.pw-gallery-thumb[aria-current="true"]{background-color:var(--pwsp-thumb-active-bg,var(--pwsp-thumb-bg,#fff))!important;background-image:none!important}.pw-gallery-thumb:focus-visible{outline:2px solid currentColor;outline-offset:2px}.pw-gallery-thumb img{display:block;width:100% !important;height:100% !important;max-width:none !important;max-height:none !important;min-width:0 !important;min-height:0 !important;margin:0 !important;padding:0 !important;object-fit:contain;object-position:center center;position:relative;z-index:1}.pwsp-thumb-inactive-overlay{position:absolute;inset:0;z-index:2;pointer-events:none;display:block}.pwsp-thumb-blur{position:absolute;inset:-6px;background:var(--pwsp-blur-color,#fff);opacity:0}.pw-gallery-thumb.pwsp-blur-enabled:not(.is-active) .pwsp-thumb-blur{opacity:var(--pwsp-blur-opacity,.58)}.pw-gallery-thumb.pwsp-blur-enabled:not(.is-active) img{filter:blur(3px)}.pwsp-thumb-x{position:absolute;inset:0;display:none;overflow:hidden}.pwsp-thumb-x:before,.pwsp-thumb-x:after{content:"";position:absolute;left:50%;top:50%;width:145%;height:var(--pwsp-x-thickness,3px);background:var(--pwsp-x-color,#111);opacity:var(--pwsp-x-opacity,.92);border-radius:999px}.pwsp-thumb-x:before{transform:translate(-50%,-50%) rotate(45deg)}.pwsp-thumb-x:after{transform:translate(-50%,-50%) rotate(-45deg)}.pw-gallery-thumb.pwsp-x-enabled:not(.is-active) .pwsp-thumb-x{display:block}.pw-gallery-thumb.is-active .pwsp-thumb-inactive-overlay,.pw-gallery-thumb[aria-current="true"] .pwsp-thumb-inactive-overlay{display:none}.pw-gallery-thumb.is-active{outline:2px solid #111;outline-offset:-2px}.pw-gallery-thumb[aria-current="true"]{outline:2px solid #111;outline-offset:-2px}.pwsp-arrow-layout{display:flex;align-items:center;justify-content:flex-start;width:100%;min-width:0;min-height:0;background:transparent!important;background-image:none!important;box-shadow:none!important;opacity:1!important;filter:none!important}.pwsp-arrow-layout .pw-gallery-arrow{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;padding:0;margin:0;border:0;background:transparent;color:inherit;cursor:pointer;line-height:1;appearance:none;box-shadow:none;text-decoration:none;min-width:0;min-height:0;flex:0 0 auto;opacity:1!important;filter:none!important;overflow:hidden}.pwsp-arrow-layout .pw-gallery-arrow:focus,.pwsp-arrow-layout .pw-gallery-arrow:hover{box-shadow:none;text-decoration:none}.pwsp-arrow-layout .pw-gallery-arrow:focus-visible{outline:2px solid currentColor;outline-offset:3px}/* v0.1.56 — Icon Size must remain independent, but the icon frame may never escape the Button Size box. */
.pwsp-arrow-icon-frame{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;flex:0 0 auto;min-width:0;min-height:0;max-width:100%;max-height:100%;overflow:hidden;line-height:0;background:transparent!important;box-shadow:none!important;opacity:1!important;filter:none!important}.pwsp-arrow-icon-frame svg,.pwsp-arrow-icon-frame i,.pwsp-arrow-fallback{display:block;flex:0 0 auto;max-width:100%;max-height:100%;width:100%;height:100%;font-size:100%;line-height:1;color:currentColor!important;fill:currentColor!important;opacity:1!important;filter:none!important}.pwsp-arrow-icon-frame svg *{fill:currentColor!important;stroke:currentColor!important;opacity:1!important;filter:none!important}.pwsp-arrow-fallback{display:grid;place-items:center}.pwsp-arrow-layout .pw-gallery-arrow svg{overflow:hidden}
/* v0.1.57 — keep the icon anchored to the button while preserving separate controls. */
/* v0.1.62 — center the icon as a true flex child of the button and let Icon Size drive the graphic. Button overflow clips only when the icon is larger than the button. */
.elementor-widget-pw_gallery_arrow .pwsp-arrow-layout .pw-gallery-arrow{
position:relative!important;
overflow:hidden;
display:flex!important;
align-items:center!important;
justify-content:center!important;
text-align:center!important;
line-height:0!important;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-icon-frame{
position:relative!important;
left:auto!important;
top:auto!important;
transform:none!important;
width:var(--pwsp-arrow-icon-size,18px)!important;
height:var(--pwsp-arrow-icon-size,18px)!important;
max-width:none!important;
max-height:none!important;
margin:0!important;
flex:0 0 auto!important;
display:flex!important;
align-items:center!important;
justify-content:center!important;
line-height:0!important;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-icon-frame svg,
.elementor-widget-pw_gallery_arrow .pwsp-arrow-icon-frame i,
.elementor-widget-pw_gallery_arrow .pwsp-arrow-fallback{
width:100%!important;
height:100%!important;
max-width:none!important;
max-height:none!important;
font-size:var(--pwsp-arrow-icon-size,18px)!important;
line-height:1!important;
flex:0 0 auto!important;
display:flex!important;
align-items:center!important;
justify-content:center!important;
vertical-align:middle!important;
text-align:center!important;
margin:0!important;
padding:0!important;
/* v0.1.69 — center the actual glyph/graphic, not the icon frame. */
transform:translateY(-15%) !important;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-fallback{
display:flex!important;
align-items:center!important;
justify-content:center!important;
}.pw-gallery-arrow[hidden]{display:flex;align-items:center;justify-content:center;gap:8px}.pw-gallery-dot{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;padding:0;margin:0;border:0;background:transparent!important;color:inherit;cursor:pointer;line-height:0;appearance:none;box-shadow:none!important}.pw-gallery-dot:hover,.pw-gallery-dot:focus{background:transparent!important;box-shadow:none!important}.pw-gallery-dot:focus-visible{outline:2px solid currentColor;outline-offset:3px}.pwsp-dot-icon-frame{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;box-sizing:border-box;line-height:0;overflow:hidden;contain:paint;background:transparent;box-shadow:none;border:0;color:inherit}.pwsp-dot-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:100%;height:100%;line-height:0;background:transparent!important;box-shadow:none;border:0;color:inherit}.pwsp-dot-icon-inactive{display:inline-flex}.pwsp-dot-icon-active{display:none}.pw-gallery-dot.is-active .pwsp-dot-icon-inactive,.pw-gallery-dot[data-dot-state="active"] .pwsp-dot-icon-inactive{display:none}.pw-gallery-dot.is-active .pwsp-dot-icon-active,.pw-gallery-dot[data-dot-state="active"] .pwsp-dot-icon-active{display:inline-flex}.pw-gallery-dot:not(.is-active) .pwsp-dot-icon-active,.pw-gallery-dot[data-dot-state="inactive"] .pwsp-dot-icon-active{display:none}.pw-gallery-dot:not(.is-active) .pwsp-dot-icon-inactive,.pw-gallery-dot[data-dot-state="inactive"] .pwsp-dot-icon-inactive{display:inline-flex}.pwsp-dot-icon svg,.pwsp-dot-icon i,.pwsp-dot-icon .pwsp-dot-fallback{display:block;max-width:100%;max-height:100%;width:100%;height:100%;font-size:100%;line-height:1;color:currentColor!important}.pwsp-dot-icon svg{overflow:hidden;fill:currentColor!important}.pwsp-dot-icon svg *{fill:currentColor!important;stroke:currentColor!important}.pwsp-dot-icon .pwsp-dot-fallback{font-size:inherit}.pwsp-dot-icon-frame svg,.pwsp-dot-icon-frame i{background:transparent!important;box-shadow:none!important}.pwsp-dot-icon-template{display:none!important}.pwsp-component-placeholder{display:grid;place-items:center;min-height:120px;border:1px dashed #aaa;background:#fafafa;color:#777;font-size:12px}.pwsp-editor-slot{min-height:220px}.pwsp-editor-slot .pwsp-editor-badge{position:absolute;left:10px;top:10px;background:#111;color:#fff;border-radius:4px;padding:4px 6px;font-size:9px;z-index:2}.pwsp-editor-rail{padding:0}.pwsp-editor-arrow{pointer-events:auto}.pwsp-editor-dots{min-height:24px}.pwsp-editor-hidden-component{display:none!important}
.pwsp-gallery-responsive>.pwsp-device-desktop{display:block}.pwsp-gallery-responsive>.pwsp-device-tablet,.pwsp-gallery-responsive>.pwsp-device-mobile{display:none}@media(min-width:768px) and (max-width:1024px){.pwsp-gallery-responsive>.pwsp-device-desktop{display:none}.pwsp-gallery-responsive>.pwsp-device-tablet{display:block}}@media(max-width:767px){.pwsp-gallery-responsive>.pwsp-device-desktop,.pwsp-gallery-responsive>.pwsp-device-tablet{display:none}.pwsp-gallery-responsive>.pwsp-device-mobile{display:block}}

.pw-gallery-image-collection{display:grid;grid-template-columns:repeat(var(--pwsp-collection-columns,3),minmax(0,1fr));width:100%;box-sizing:border-box}.pw-gallery-image-collection-item{display:block;overflow:hidden;min-width:0}.pw-gallery-image-collection-item img{display:block;width:100%;height:auto;max-width:100%;object-fit:contain}.pwsp-editor-collection .pw-gallery-image-collection-item{background:#f5f5f5;min-height:120px}.pwsp-editor-collection .pw-gallery-image-collection-item img{height:180px;object-fit:contain}
@media(max-width:767px){.pw-gallery-image-collection{grid-template-columns:repeat(min(var(--pwsp-collection-columns,2),2),minmax(0,1fr))}}

/* PW Core Widget Preset — universal across every saved template and every new instance.
 * Elementor owns the outer widget box (Advanced Margin, Padding, Width, Align Self, Position).
 * PW owns only the component's internal layout/containment surfaces.
 */
:is(.elementor-widget-pw_gallery_image_slot,.elementor-widget-pw_gallery_thumbnail_rail,.elementor-widget-pw_gallery_arrow,.elementor-widget-pw_gallery_dots){
  box-sizing:border-box;
  min-width:0;
}
:is(.elementor-widget-pw_gallery_image_slot,.elementor-widget-pw_gallery_thumbnail_rail,.elementor-widget-pw_gallery_arrow,.elementor-widget-pw_gallery_dots) > .elementor-widget-container{
  box-sizing:border-box;
  min-width:0;
  min-height:0;
}

/* v0.1.40 preserved: keep only the PW-rendered inner Arrow/Dots surfaces transparent.
 * The Elementor widget root remains untouched so Advanced controls can style it.
 */
.elementor-widget-pw_gallery_arrow > .elementor-widget-container,
.elementor-widget-pw_gallery_arrow .pwsp-arrow-layout,
.elementor-widget-pw_gallery_dots,
.elementor-widget-pw_gallery_dots .elementor-widget-container {
  background-color: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
}

/* v0.1.79 — Elementor owns the Arrow widget root geometry.
 * The plugin controls only the internal Arrow layout/button.
 */
.elementor-widget-pw_gallery_arrow > .elementor-widget-container{
  box-sizing:border-box;
  width:auto;
  min-width:0;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-layout{
  position:relative;
  box-sizing:border-box!important;
  display:flex!important;
  flex:0 0 auto!important;
  align-items:center;
  justify-content:flex-start;
  width:max-content;
  max-width:100%;
  min-width:0;
  min-height:var(--pwsp-arrow-button-size,44px);
  height:var(--pwsp-arrow-button-size,44px);
  margin:0;
  padding:0;
  overflow:hidden;
  line-height:0;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-pair{
  position:relative;
  display:block;
  box-sizing:border-box;
  flex:0 0 auto;
  width:var(--pwsp-arrow-button-size,44px);
  height:var(--pwsp-arrow-button-size,44px);
  min-width:0;
  min-height:0;
  margin:0;
  padding:0;
  overflow:hidden;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-pair .pw-gallery-arrow{
  box-sizing:border-box!important;
  position:absolute!important;
  inset:0 auto auto 0!important;
  width:var(--pwsp-arrow-button-size,44px)!important;
  height:var(--pwsp-arrow-button-size,44px)!important;
  min-width:0!important;
  min-height:0!important;
  max-width:100%!important;
  max-height:100%!important;
  margin:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  vertical-align:middle!important;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-pair .pw-gallery-arrow[data-pwsp-arrow-layer="secondary"]{
  inset:0!important;
}
.elementor-widget-pw_gallery_arrow .pwsp-arrow-icon-frame,
.elementor-widget-pw_gallery_arrow .pwsp-arrow-icon-frame svg,
.elementor-widget-pw_gallery_arrow .pwsp-arrow-icon-frame i,
.elementor-widget-pw_gallery_arrow .pwsp-arrow-fallback{
  margin:0!important;
  vertical-align:middle!important;
}


/* v0.1.91.39 — Dots alignment + template/single-product geometry parity.
 * Elementor owns the outer Dots widget and its parent Container geometry. PW owns
 * only the internal Dots surface. The JS geometry bridge copies the actual main
 * image-column rect into this surface so editor and hosted single-product output
 * share the same horizontal reference without hard-coded responsive percentages.
 */
.elementor-widget-pw_gallery_dots > .elementor-widget-container{
  box-sizing:border-box;
  min-width:0;
  min-height:0;
  overflow:visible;
}
.elementor-widget-pw_gallery_dots .pwsp-dots-layout{
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  max-width:none;
  min-width:0;
  min-height:24px;
  margin:0;
  padding:0;
  overflow:visible;
}

/* v0.1.91.42 — Dots Alignment editor/runtime parity.
 * Elementor owns the responsive Alignment value on .pwsp-dots-layout. Do not
 * mirror that saved value into data attributes: those attributes can become
 * stale during live editor control changes and override Elementor's current CSS.
 * The actual row also has an intrinsic-width floor so a Width value smaller than
 * the dot content cannot make the visible row overflow from a tiny 20px box.
 */
.elementor-widget-pw_gallery_dots .pw-gallery-dots{
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  width:max-content;
  max-width:none;
  min-width:max-content;
  min-height:0;
  height:auto;
  margin:0;
  padding:0;
  gap:8px;
  flex-wrap:nowrap;
}
.elementor-widget-pw_gallery_dots .pw-gallery-dot{
  box-sizing:border-box;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  margin:0;
  min-width:0;
}

/* v0.1.91.43 — Dots parent cross-axis containment.
 * The mobile Elementor template places the Dots widget inside an intermediate
 * Container whose parent is center-aligned and whose own width is otherwise auto.
 * That makes the Dots alignment surface shrink-wrap to the dots themselves.
 * Only an Elementor Container with a direct PW Gallery Dots child is widened;
 * the outer gallery column and the Dots widget root remain untouched.
 */
.e-con:has(> .elementor-widget-pw_gallery_dots),
.elementor-column:has(> .elementor-widget-pw_gallery_dots){
  box-sizing:border-box;
  min-width:100%;
  max-width:100%;
}

/* v0.1.72 — unified responsive widget containment.
 * Each gallery widget owns its own box. Parent Elementor Containers remain the
 * sizing authority. Widget controls do not rewrite parent container geometry.
 */
.elementor-widget-pw_gallery_thumbnail_rail{
  box-sizing:border-box;
  min-width:0;
}
.elementor-widget-pw_gallery_dots{
  box-sizing:border-box;
  min-width:0;
  max-width:100%;
}

/* v0.1.80 — Image Slot stable frame.
 * Elementor owns the widget root. The frame owns the available stage width/height;
 * the visual Image Slot box can change width without shrinking the parent layout.
 * This prevents Width changes from moving/resizing the surrounding gallery stage.
 */
.elementor-widget-pw_gallery_image_slot > .elementor-widget-container{
  box-sizing:border-box;
  width:auto;
  min-width:0;
}
.elementor-widget-pw_gallery_image_slot .pwsp-image-slot-frame{
  box-sizing:border-box;
  width:100%;
  min-width:0;
  min-height:0;
  margin:0;
  padding:0;
  display:flex;
  align-items:stretch;
  justify-content:center;
}
.elementor-widget-pw_gallery_image_slot .pw-gallery-image-slot{
  box-sizing:border-box!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0 auto!important;
  position:relative;
  flex:0 1 auto;
}
.elementor-widget-pw_gallery_image_slot .pw-gallery-image-slot-link{
  display:block;
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  box-sizing:border-box;
}
.elementor-widget-pw_gallery_image_slot .pw-gallery-image-slot img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  object-fit:contain;
  object-position:center center;
}

/* v0.1.91.26 — Internal viewport alignment + bounded thumbnail geometry.
 * Elementor owns the outer widget/container. PW owns only the internal
 * thumbnail viewport + track. Visible Items calculation is unchanged.
 */
.elementor-widget-pw_gallery_thumbnail_rail{
  box-sizing:border-box;
  min-width:0;
}
.elementor-widget-pw_gallery_thumbnail_rail > .elementor-widget-container{
  box-sizing:border-box;
  width:auto;
  min-width:0;
  min-height:0;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail{
  box-sizing:border-box!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  container-type:inline-size;
  overflow:hidden;
}
/* The inner viewport is the only plugin-owned positioning surface. Elementor
 * controls the outer widget/container; the viewport stays inside that space. */
.elementor-widget-pw_gallery_thumbnail_rail .pwsp-thumb-viewport{
  box-sizing:border-box;
  width:min(var(--pwsp-viewport-width,100%),100%)!important;
  max-width:100%!important;
  min-width:0!important;
  margin-left:auto;
  margin-right:auto;
  overflow:hidden;
  display:flex;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-pwsp-align="left"] .pwsp-thumb-viewport{margin-left:0!important;margin-right:auto!important;}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-pwsp-align="center"] .pwsp-thumb-viewport{margin-left:auto!important;margin-right:auto!important;}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-pwsp-align="right"] .pwsp-thumb-viewport{margin-left:auto!important;margin-right:0!important;}

/* Horizontal scroll: Visible Items determines viewport width; track scrolls inside it. */
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="row"][data-overflow="scroll"] .pwsp-thumb-viewport{
  width:min(calc(var(--pwsp-effective-thumb-width,var(--pwsp-thumb-width,90px)) * var(--pwsp-visible,4) + var(--pwsp-rail-gap,10px) * max(0, var(--pwsp-visible,4) - 1)),100%)!important;
  max-width:100%!important;
  height:calc(var(--pwsp-effective-thumb-height,var(--pwsp-thumb-height,90px)) + 16px)!important;
  min-height:0!important;
  max-height:100%!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="row"][data-overflow="scroll"] .pwsp-thumb-viewport::-webkit-scrollbar{display:none;height:0;width:0}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="row"][data-overflow="scroll"] .pwsp-thumb-track{
  flex-direction:row!important;
  width:max-content!important;
  min-width:100%!important;
  max-width:none!important;
  min-height:0!important;
  height:auto!important;
  flex:0 0 auto!important;
  justify-content:flex-start!important;
  align-items:center!important;
}

/* Vertical scroll: preserve the existing finite visible-items height fix, but
 * make the internal viewport the scroll surface. */
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="scroll"] .pwsp-thumb-viewport{
  width:min(var(--pwsp-thumb-width,90px),100%)!important;
  max-width:100%!important;
  height:min(calc(var(--pwsp-thumb-height) * var(--pwsp-visible) + var(--pwsp-rail-gap) * (var(--pwsp-visible) - 1)),var(--pwsp-available-height,var(--pwsp-viewport-height)))!important;
  max-height:100%!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-width:none;
  -ms-overflow-style:none;
  flex-direction:column;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="scroll"] .pwsp-thumb-viewport::-webkit-scrollbar{display:none;height:0;width:0}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="scroll"] .pwsp-thumb-track{
  flex-direction:column!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  height:max-content!important;
  min-height:100%!important;
  max-height:none!important;
  flex:0 0 auto!important;
  align-items:var(--pwsp-track-align,center)!important;
  justify-content:flex-start!important;
}

/* Wrap mode: the viewport contains the wrapped track and remains aligned inside
 * the Elementor-sized rail. */
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-overflow="wrap"] .pwsp-thumb-viewport{
  width:100%!important;
  max-width:100%!important;
  height:auto!important;
  overflow:hidden!important;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="row"][data-overflow="wrap"] .pwsp-thumb-track{
  flex-direction:row!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  height:auto;
  min-height:0;
  flex-wrap:wrap;
  justify-content:var(--pwsp-track-align,center)!important;
  align-items:center!important;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"][data-overflow="wrap"] .pwsp-thumb-track{
  flex-direction:column!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  height:auto;
  min-height:0;
  flex-wrap:nowrap;
  align-items:var(--pwsp-track-align,center)!important;
  justify-content:flex-start!important;
}

/* Thumbnail sizing remains child-only. The JS geometry pass resolves a bounded
 * effective size from Elementor's available space; the outer Elementor widget
 * and parent container are never resized by these rules. */
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="row"] .pw-gallery-thumb{
  width:var(--pwsp-effective-thumb-width,var(--pwsp-thumb-width,90px))!important;
  height:var(--pwsp-effective-thumb-height,var(--pwsp-thumb-height,90px))!important;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="row"][data-sizing-mode="square"] .pw-gallery-thumb{
  aspect-ratio:1 / 1;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"] .pw-gallery-thumb{
  --pwsp-height-slot-cap:calc((var(--pwsp-available-height,var(--pwsp-viewport-height,100000px)) - var(--pwsp-rail-gap,0px) * (var(--pwsp-visible) - 1)) / var(--pwsp-visible));
  width:var(--pwsp-effective-thumb-width,var(--pwsp-thumb-width,90px))!important;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"][data-sizing-mode="square"] .pw-gallery-thumb{
  width:min(var(--pwsp-thumb-width,90px),100cqw,var(--pwsp-height-slot-cap))!important;
  height:min(var(--pwsp-thumb-height,90px),100cqw,var(--pwsp-height-slot-cap))!important;
  aspect-ratio:1 / 1;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumbnail-rail[data-direction="column"][data-sizing-mode="custom"] .pw-gallery-thumb{
  width:min(var(--pwsp-thumb-width,90px),100cqw)!important;
  height:min(var(--pwsp-thumb-height,90px),var(--pwsp-height-slot-cap))!important;
}

.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumb{
  flex:0 0 auto!important;
  box-sizing:border-box!important;
  max-width:100%!important;
  max-height:100%!important;
}
.elementor-widget-pw_gallery_thumbnail_rail .pw-gallery-thumb img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  object-position:center center!important;
}
