/* JP Slider 2.0 — frontend styles (also used by the admin stage preview) */
.jpsl{position:relative;display:flex;flex-direction:column;width:100%;margin-left:auto;margin-right:auto;box-sizing:border-box;-webkit-tap-highlight-color:transparent;outline-offset:2px}
.jpsl *{box-sizing:border-box}

/* skins */
.jpsl-skin-light{--ui-bg:rgba(255,255,255,.92);--ui-fg:#1d2327;--ui-dot:rgba(255,255,255,.6);--ui-dot-on:#fff;--jpsl-accent:#2271b1}
.jpsl-skin-dark{--ui-bg:rgba(0,0,0,.55);--ui-fg:#fff;--ui-dot:rgba(255,255,255,.4);--ui-dot-on:#fff;--jpsl-accent:#fff}
.jpsl-skin-contrast{--ui-bg:#e63946;--ui-fg:#fff;--ui-dot:rgba(255,255,255,.5);--ui-dot-on:#e63946;--jpsl-accent:#e63946}
.jpsl-skin-glass{--ui-bg:rgba(255,255,255,.2);--ui-fg:#fff;--ui-dot:rgba(255,255,255,.4);--ui-dot-on:#fff;--jpsl-accent:#fff}
.jpsl-skin-glass .jpsl-arrow{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.4)}
.jpsl-skin-minimal{--ui-bg:transparent;--ui-fg:#fff;--ui-dot:rgba(255,255,255,.45);--ui-dot-on:#fff;--jpsl-accent:#fff}
.jpsl-skin-minimal .jpsl-arrow{box-shadow:none;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6))}
.jpsl-skin-ocean{--ui-bg:#0ea5e9;--ui-fg:#fff;--ui-dot:rgba(255,255,255,.5);--ui-dot-on:#0ea5e9;--jpsl-accent:#0ea5e9}
.jpsl-skin-sunset{--ui-bg:#f97316;--ui-fg:#fff;--ui-dot:rgba(255,255,255,.5);--ui-dot-on:#f97316;--jpsl-accent:#f97316}

/* layouts */
.jpsl-layout-fullwidth,.jpsl-layout-fullscreen{width:100vw;max-width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.jpsl-layout-autofill{height:100%}
.jpsl-viewport{position:relative;overflow:hidden;width:100%;flex:0 0 auto;aspect-ratio:var(--jpsl-aw,1100)/var(--jpsl-ah,500);touch-action:pan-y}
.jpsl-dir-vertical .jpsl-viewport{touch-action:pan-x}
.jpsl-layout-fullscreen .jpsl-viewport{aspect-ratio:auto;height:100vh;height:100svh}
.jpsl-layout-autofill .jpsl-viewport{aspect-ratio:auto;flex:1 1 0;height:auto;min-height:0}
.jpsl-layout-autoheight .jpsl-viewport{transition:height .45s ease}
.jpsl-peek{overflow:hidden}
.jpsl-peek .jpsl-viewport{overflow:visible}
.jpsl-peek .jpsl-slide{left:var(--jpsl-peek,15%);width:calc(100% - 2 * var(--jpsl-peek,15%));transition:transform .7s,opacity .7s}
.jpsl-peek .jpsl-slide:not(.is-active){opacity:.55}
.jpsl-js .jpsl-viewport{cursor:grab}
.jpsl.is-dragging .jpsl-viewport{cursor:grabbing}
.jpsl.is-dragging .jpsl-layer{transition:none}
.jpsl-loading .jpsl-viewport{visibility:hidden}
.jpsl-loading::after{content:"";position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border:3px solid rgba(0,0,0,.15);border-top-color:var(--jpsl-accent,#2271b1);border-radius:50%;animation:jpsl-spin .8s linear infinite}
@keyframes jpsl-spin{to{transform:rotate(360deg)}}

/* slides + transitions */
.jpsl-slide{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;visibility:hidden}
.jpsl-tr-slide .jpsl-slide{will-change:transform}
.jpsl-tr-slide .jpsl-slide.is-vis,.jpsl-slide.is-active{visibility:visible}
.jpsl-tr-fade .jpsl-slide,.jpsl-tr-zoom .jpsl-slide,.jpsl-tr-flip .jpsl-slide,.jpsl-tr-wipe .jpsl-slide,.jpsl-tr-blur .jpsl-slide,.jpsl-tr-rotate .jpsl-slide{opacity:0;transition:opacity var(--jpsl-speed,700ms) ease,transform var(--jpsl-speed,700ms) ease,filter var(--jpsl-speed,700ms) ease,clip-path var(--jpsl-speed,700ms) ease,visibility 0s linear var(--jpsl-speed,700ms)}
.jpsl-tr-zoom .jpsl-slide{transform:scale(1.12)}
.jpsl-tr-flip .jpsl-viewport{perspective:1400px}
.jpsl-tr-flip .jpsl-slide{transform:rotateY(-90deg);backface-visibility:hidden}
.jpsl-tr-wipe .jpsl-slide{opacity:1;clip-path:inset(0 100% 0 0)}
.jpsl-tr-blur .jpsl-slide{filter:blur(24px);transform:scale(1.06)}
.jpsl-tr-rotate .jpsl-slide{transform:rotate(6deg) scale(1.15)}
.jpsl-tr-fade .jpsl-slide.is-active,.jpsl-tr-zoom .jpsl-slide.is-active,.jpsl-tr-flip .jpsl-slide.is-active,.jpsl-tr-wipe .jpsl-slide.is-active,.jpsl-tr-blur .jpsl-slide.is-active,.jpsl-tr-rotate .jpsl-slide.is-active{opacity:1;visibility:visible;transform:none;filter:none;clip-path:inset(0);transition-delay:0s;z-index:2}
.jpsl-tr-wipe .jpsl-slide.is-leaving{opacity:1;visibility:visible;clip-path:inset(0);transition:none;z-index:1}

.jpsl-bg{position:absolute;left:0;top:0;width:100%;height:100%;display:block;pointer-events:none;-webkit-user-drag:none;user-select:none}
.jpsl-pos-fill{object-fit:cover}
.jpsl-pos-fit{object-fit:contain}
.jpsl-pos-center{object-fit:none}
.jpsl-pos-stretch{object-fit:fill}
div.jpsl-pos-tile{background-repeat:repeat;background-size:auto}
.jpsl-vbg{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.jpsl-overlay{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}
.jpsl-slide-link{position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}
.jpsl-pscroll .jpsl-bg,.jpsl-pscroll .jpsl-vbg{transform:translate3d(0,var(--bgy,0px),0) scale(1.2)}
.jpsl-vsound{position:absolute;left:14px;bottom:14px;z-index:6;width:38px;height:38px;border:0;border-radius:50%;background:var(--ui-bg,rgba(0,0,0,.5));color:var(--ui-fg,#fff);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:.85}
.jpsl-vsound.is-on{opacity:1;box-shadow:0 0 0 2px var(--jpsl-accent,#fff)}

/* layers */
.jpsl-layers{position:absolute;left:0;top:0;z-index:3;transform-origin:0 0;transform:scale(var(--jpsl-s,1));pointer-events:none}
.jpsl-layer{position:absolute;pointer-events:auto;transition:transform .25s ease-out;line-height:1.25}
.jpsl-l-in{display:block;margin:0}
.jpsl-lnk{color:inherit;text-decoration:none;display:block}
.jpsl-text{white-space:nowrap}
.jpsl-fixed .jpsl-text{white-space:normal}
.jpsl-text h1,.jpsl-text h2,.jpsl-text p{margin:0}
ul.jpsl-text,ol.jpsl-text{margin:0;padding-left:1.2em}
.jpsl-btn{display:inline-block;width:auto;text-decoration:none;white-space:nowrap;line-height:1.2;cursor:pointer;background:#111;color:#fff;padding:12px 26px;border-radius:4px;transition:background .2s,color .2s,transform .2s}
.jpsl-btn[style*="--hb"]:hover{background:var(--hb)!important}
.jpsl-btn[style*="--hc"]:hover{color:var(--hc)!important}
.jpsl-img{overflow:hidden}
.jpsl-img img{display:block;width:100%;height:auto;max-width:none;-webkit-user-drag:none}
.jpsl-video{aspect-ratio:16/9;background:#000}
.jpsl-video iframe,.jpsl-video video{display:block;width:100%;height:100%;border:0}

/* hotspot */
.jpsl-hotspot{position:relative;width:1em;height:1em}
.jpsl-dot{display:block;position:relative;width:1em;height:1em;border-radius:50%;background:var(--hs,#e63946);box-shadow:0 0 0 .25em rgba(255,255,255,.6);cursor:pointer}
.jpsl-dot::after{content:"";position:absolute;inset:0;border-radius:50%;background:inherit;opacity:.6;animation:jpsl-pulse 1.8s ease-out infinite}
.jpsl-tip{position:absolute;left:50%;bottom:calc(100% + 14px);transform:translateX(-50%) translateY(6px);width:max-content;min-width:120px;max-width:260px;padding:10px 12px;border-radius:6px;background:#fff;color:#1d2327;font:400 14px/1.4 system-ui,sans-serif;box-shadow:0 8px 24px rgba(0,0,0,.25);opacity:0;visibility:hidden;transition:.2s;pointer-events:none;white-space:normal;text-align:left;letter-spacing:0;text-transform:none}
.jpsl-hotspot:hover .jpsl-tip,.jpsl-hotspot:focus .jpsl-tip,.jpsl-hotspot:focus-within .jpsl-tip,.jpsl-layer.is-sel .jpsl-tip{opacity:1;visibility:visible;transform:translateX(-50%);pointer-events:auto}
@keyframes jpsl-pulse{from{transform:scale(1);opacity:.6}to{transform:scale(2.6);opacity:0}}

/* ---- layer entrance animations ---- */
.jpsl-js .jpsl-slide .jpsl-l-in{opacity:0}
.jpsl-js .jpsl-slide.is-active .jpsl-l-in,.jpsl-js .jpsl-slide.is-leaving .jpsl-l-in{opacity:1}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) [class*="jpsl-anim-"]{animation-duration:var(--t,800ms);animation-delay:var(--d,0ms);animation-fill-mode:both;animation-timing-function:var(--ez,cubic-bezier(.2,.7,.2,1))}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-fade{animation-name:jpsl-fade}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-left{animation-name:jpsl-left}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-right{animation-name:jpsl-right}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-top{animation-name:jpsl-top}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-bottom{animation-name:jpsl-bottom}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-zoom{animation-name:jpsl-zoom}
:is(.jpsl-slide.is-active,.jpsl-slide.is-leaving,.jpsl-stage.is-scrub) .jpsl-anim-custom{animation-name:jpsl-custom}
@keyframes jpsl-fade{from{opacity:0}to{opacity:1}}
@keyframes jpsl-left{from{opacity:0;transform:translateX(-80px)}to{opacity:1;transform:none}}
@keyframes jpsl-right{from{opacity:0;transform:translateX(80px)}to{opacity:1;transform:none}}
@keyframes jpsl-top{from{opacity:0;transform:translateY(-60px)}to{opacity:1;transform:none}}
@keyframes jpsl-bottom{from{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}
@keyframes jpsl-zoom{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes jpsl-custom{from{opacity:var(--ti-o,0);transform:translate(var(--ti-x,0px),var(--ti-y,0px)) scale(var(--ti-s,1)) rotate(var(--ti-r,0deg));filter:blur(var(--ti-b,0px))}to{opacity:1;transform:none;filter:blur(0px)}}

/* ---- layer exit animations (when the slide leaves, or at a timed moment via .is-out) ---- */
.jpsl-slide.is-leaving .jpsl-l-in[class*="jpsl-out-"],.jpsl-l-in.is-out[class*="jpsl-out-"]{animation-duration:var(--ot,600ms);animation-delay:var(--od,0ms);animation-fill-mode:both;animation-timing-function:var(--ez,cubic-bezier(.2,.7,.2,1))}
.jpsl-slide.is-leaving .jpsl-out-fade,.jpsl-l-in.is-out.jpsl-out-fade{animation-name:jpsl-ofade}
.jpsl-slide.is-leaving .jpsl-out-left,.jpsl-l-in.is-out.jpsl-out-left{animation-name:jpsl-oleft}
.jpsl-slide.is-leaving .jpsl-out-right,.jpsl-l-in.is-out.jpsl-out-right{animation-name:jpsl-oright}
.jpsl-slide.is-leaving .jpsl-out-top,.jpsl-l-in.is-out.jpsl-out-top{animation-name:jpsl-otop}
.jpsl-slide.is-leaving .jpsl-out-bottom,.jpsl-l-in.is-out.jpsl-out-bottom{animation-name:jpsl-obottom}
.jpsl-slide.is-leaving .jpsl-out-zoom,.jpsl-l-in.is-out.jpsl-out-zoom{animation-name:jpsl-ozoom}
.jpsl-slide.is-leaving .jpsl-out-custom,.jpsl-l-in.is-out.jpsl-out-custom{animation-name:jpsl-ocustom}
.jpsl-stage.is-scrub .jpsl-l-in{animation-play-state:paused!important}
@keyframes jpsl-ofade{from{opacity:1}to{opacity:0}}
@keyframes jpsl-oleft{from{opacity:1;transform:none}to{opacity:0;transform:translateX(-80px)}}
@keyframes jpsl-oright{from{opacity:1;transform:none}to{opacity:0;transform:translateX(80px)}}
@keyframes jpsl-otop{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-60px)}}
@keyframes jpsl-obottom{from{opacity:1;transform:none}to{opacity:0;transform:translateY(60px)}}
@keyframes jpsl-ozoom{from{opacity:1;transform:none}to{opacity:0;transform:scale(.6)}}
@keyframes jpsl-ocustom{from{opacity:1;transform:none;filter:blur(0px)}to{opacity:var(--to-o,0);transform:translate(var(--to-x,0px),var(--to-y,0px)) scale(var(--to-s,1)) rotate(var(--to-r,0deg));filter:blur(var(--to-b,0px))}}

/* ---- controls: arrows ---- */
.jpsl-arrow{position:absolute;top:50%;z-index:6;width:var(--jpsl-asz,44px);height:var(--jpsl-asz,44px);margin-top:calc(var(--jpsl-asz,44px) / -2);padding:0;border:0;border-radius:50%;background:var(--ui-bg);color:var(--ui-fg);cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .25s,transform .2s;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.jpsl-as-square .jpsl-arrow{border-radius:8px}
.jpsl-as-plain .jpsl-arrow{background:none;box-shadow:none;color:#fff;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6))}
.jpsl-arrow:hover{transform:scale(1.08)}
.jpsl:hover .jpsl-arrow,.jpsl-arrow:focus-visible{opacity:1}
@media (hover:none){.jpsl-arrow{opacity:1}}
.jpsl-arrow.is-disabled{opacity:.25!important;pointer-events:none}
.jpsl-prev{left:var(--jpsl-am,14px)}.jpsl-prev svg{transform:rotate(180deg)}
.jpsl-next{right:var(--jpsl-am,14px)}
.jpsl-ap-top .jpsl-arrow,.jpsl-ap-bottom .jpsl-arrow{margin-top:0}
.jpsl-ap-top .jpsl-arrow{top:var(--jpsl-am,14px)}
.jpsl-ap-bottom .jpsl-arrow{top:auto;bottom:var(--jpsl-am,14px)}
.jpsl-ap-top .jpsl-prev,.jpsl-ap-bottom .jpsl-prev{left:auto;right:calc(var(--jpsl-am,14px) + var(--jpsl-asz,44px) + 8px)}
.jpsl-dir-vertical.jpsl-ap-sides .jpsl-prev{left:50%;top:var(--jpsl-am,14px);margin:0 0 0 calc(var(--jpsl-asz,44px) / -2)}
.jpsl-dir-vertical.jpsl-ap-sides .jpsl-prev svg{transform:rotate(-90deg)}
.jpsl-dir-vertical.jpsl-ap-sides .jpsl-next{right:auto;left:50%;top:auto;bottom:var(--jpsl-am,14px);margin:0 0 0 calc(var(--jpsl-asz,44px) / -2)}
.jpsl-dir-vertical.jpsl-ap-sides .jpsl-next svg{transform:rotate(90deg)}

/* ---- controls: bullets (small, always inside the slide) ---- */
.jpsl-bullets{position:absolute;z-index:6;display:flex;align-items:center;gap:var(--jpsl-bgap,8px);pointer-events:none;left:0;right:0;bottom:var(--jpsl-bm,12px);justify-content:center;padding:0 var(--jpsl-bm,12px)}
.jpsl-bp-top .jpsl-bullets{bottom:auto;top:var(--jpsl-bm,12px)}
.jpsl-bp-left .jpsl-bullets,.jpsl-bp-right .jpsl-bullets{flex-direction:column;top:0;bottom:0;left:auto;right:auto;padding:var(--jpsl-bm,12px) 0}
.jpsl-bp-left .jpsl-bullets{left:var(--jpsl-bm,12px)}
.jpsl-bp-right .jpsl-bullets{right:var(--jpsl-bm,12px)}
.jpsl-ba-start .jpsl-bullets{justify-content:flex-start}
.jpsl-ba-end .jpsl-bullets{justify-content:flex-end}
.jpsl-ba-center .jpsl-bullets{justify-content:center}
.jpsl-bullet{flex:0 0 auto;width:var(--jpsl-bsz,8px);height:var(--jpsl-bsz,8px);padding:0;border:0;border-radius:50%;background:var(--ui-dot);box-shadow:0 0 0 1px rgba(0,0,0,.22);cursor:pointer;pointer-events:auto;transition:transform .2s,background .2s,width .25s,height .25s,border-color .2s}
.jpsl-bullet.is-active{background:var(--ui-dot-on);transform:scale(1.2)}
/* ring */
.jpsl-bs-ring .jpsl-bullet{background:transparent;border:2px solid var(--ui-dot-on);box-shadow:none;opacity:.75}
.jpsl-bs-ring .jpsl-bullet.is-active{background:var(--ui-dot-on);opacity:1;transform:none}
/* square / diamond */
.jpsl-bs-square .jpsl-bullet{border-radius:2px}
.jpsl-bs-diamond .jpsl-bullet{border-radius:1px;transform:rotate(45deg)}
.jpsl-bs-diamond .jpsl-bullet.is-active{transform:rotate(45deg) scale(1.2)}
/* line (dash) */
.jpsl-bs-line .jpsl-bullet{width:calc(var(--jpsl-bsz,8px) * 3);height:max(3px,calc(var(--jpsl-bsz,8px) / 2.5));border-radius:2px}
.jpsl-bs-line .jpsl-bullet.is-active{transform:none}
.jpsl-bp-left.jpsl-bs-line .jpsl-bullet,.jpsl-bp-right.jpsl-bs-line .jpsl-bullet{width:max(3px,calc(var(--jpsl-bsz,8px) / 2.5));height:calc(var(--jpsl-bsz,8px) * 3)}
/* pill (active one stretches) */
.jpsl-bs-pill .jpsl-bullet{border-radius:99px}
.jpsl-bs-pill .jpsl-bullet.is-active{transform:none;width:calc(var(--jpsl-bsz,8px) * 3)}
.jpsl-bp-left.jpsl-bs-pill .jpsl-bullet.is-active,.jpsl-bp-right.jpsl-bs-pill .jpsl-bullet.is-active{width:var(--jpsl-bsz,8px);height:calc(var(--jpsl-bsz,8px) * 3)}
/* numbers */
.jpsl-bs-number .jpsl-bullet{width:auto;height:auto;min-width:calc(var(--jpsl-bsz,8px) * 2.4);padding:2px 6px;border-radius:99px;font:600 calc(var(--jpsl-bsz,8px) + 3px)/1.2 system-ui,sans-serif;color:#1d2327}
.jpsl-bs-number .jpsl-bullet.is-active{transform:none;color:#1d2327;box-shadow:0 0 0 2px var(--jpsl-accent,#2271b1)}

/* ---- timer / scrollbar ---- */
.jpsl-timer{position:absolute;left:0;bottom:0;width:100%;height:3px;z-index:6;pointer-events:none;background:rgba(0,0,0,.12)}
.jpsl-timer i{display:block;height:100%;width:0;background:var(--jpsl-accent)}
.jpsl-ring{position:absolute;top:14px;right:14px;z-index:6;width:30px;height:30px;pointer-events:none}
.jpsl-ring svg{width:100%;height:100%;fill:none;stroke-width:3}
.jpsl-ring .a{stroke:rgba(255,255,255,.35)}
.jpsl-ring .b{stroke:var(--jpsl-accent);stroke-dasharray:97.4;stroke-dashoffset:97.4;transform:rotate(-90deg);transform-origin:50% 50%}
.jpsl-scroll{position:absolute;left:12%;right:12%;bottom:6px;height:6px;z-index:6;border-radius:3px;background:rgba(0,0,0,.25);cursor:pointer}
.jpsl-scroll i{position:absolute;top:0;height:100%;border-radius:3px;background:var(--ui-dot-on,#fff);transition:left .4s ease}

/* ---- thumbnails (bottom / top / left / right) ---- */
.jpsl-thumbs{display:flex;gap:6px;overflow:auto;padding:8px 0;scrollbar-width:thin;flex:0 0 auto}
.jpsl-tp-top .jpsl-thumbs{order:-1}
.jpsl-tp-left,.jpsl-tp-right{flex-direction:row}
.jpsl-tp-left .jpsl-thumbs{order:-1}
.jpsl-tp-left .jpsl-viewport,.jpsl-tp-right .jpsl-viewport{flex:1 1 0;width:auto;min-width:0}
.jpsl-tp-left .jpsl-thumbs,.jpsl-tp-right .jpsl-thumbs{flex-direction:column;padding:0 8px;width:calc(var(--jpsl-tw,90px) + 16px)}
.jpsl-thumb{flex:0 0 auto;width:var(--jpsl-tw,90px);height:var(--jpsl-th,58px);padding:0;border:2px solid transparent;border-radius:4px;background-color:#ddd;background-size:cover;background-position:center;opacity:.6;cursor:pointer;transition:opacity .2s}
.jpsl-thumb.is-active{opacity:1;border-color:var(--jpsl-accent)}

/* WooCommerce gallery */
.jpsl-wc-gallery .jpsl{max-width:100%}

/* image layers without a fixed width: never blow up to the natural image size */
.jpsl-layer:not(.jpsl-fixed) .jpsl-img img{width:auto;max-width:500px;max-height:100%}

/* per-device options */
.jpsl[data-dev="m"].jpsl-noarrow-m .jpsl-arrow,.jpsl[data-dev="m"].jpsl-nobullet-m .jpsl-bullets{display:none}
