/* Lumière PhotoSwipe 5 beta. PhotoSwipe base styles load locally when installed, or through the pinned CDN when permitted. */
.lpl-pswp { --pswp-bg:var(--lpl-ps-bg,#000); --pswp-icon-color:var(--lpl-ps-arrow,#fff); --pswp-icon-color-secondary:#ccc; --pswp-icon-stroke-color:#111; }
.lpl-pswp .pswp__bg{background:var(--lpl-ps-bg,#000);overflow:hidden}.lpl-pswp .pswp__bg:before{content:"";position:absolute;inset:0;background-image:var(--lpl-ps-bg-image-url,none);background-position:var(--lpl-ps-bg-image-position,center center);background-size:var(--lpl-ps-bg-image-size,cover);background-repeat:no-repeat;opacity:var(--lpl-ps-bg-image-opacity,0);pointer-events:none}
.lpl-pswp .pswp__button{cursor:pointer;touch-action:manipulation}
.lpl-pswp .pswp__button--arrow--prev,.lpl-pswp .pswp__button--arrow--next{width:var(--lpl-ps-arrow-size,42px);height:var(--lpl-ps-arrow-size,42px)}
.lpl-pswp [hidden]{display:none!important}
.lpl-pswp .pswp__button--lpl-heart,.lpl-pswp .pswp__button--lpl-play,.lpl-pswp .pswp__button--lpl-thumbs,.lpl-pswp .pswp__button--lpl-fullscreen{
 display:inline-grid;place-items:center;color:var(--lpl-ps-arrow,#fff);background:none;border:0;min-width:48px;min-height:48px;
 font:500 25px/1 system-ui,sans-serif;text-shadow:0 1px 4px #111;
}
.lpl-pswp .pswp__button--lpl-heart[aria-pressed="true"]{color:#ff868f}
.lpl-pswp .pswp__button--lpl-heart:disabled{opacity:.35;cursor:not-allowed}
.lpl-pswp .lpl-ps-caption{
 position:absolute;z-index:4;bottom:14px;left:50%;max-width:min(80vw,820px);transform:translateX(-50%);
 pointer-events:none;color:#fff;background:rgba(0,0,0,.55);border-radius:8px;
 padding:8px 14px;text-align:center;font:14px/1.5 system-ui,sans-serif;
}
.lpl-pswp.lpl-pswp-thumbs-open .lpl-ps-caption{bottom:calc(var(--lpl-ps-thumb-size,56px) + 36px)}
.lpl-pswp .lpl-ps-strip{
 position:absolute;z-index:4;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:flex-start;
 overflow-x:auto;overscroll-behavior:contain;gap:8px;height:calc(var(--lpl-ps-thumb-size,56px) + 26px);
 padding:8px 16px;box-sizing:border-box;background:rgba(0,0,0,.63);scrollbar-width:thin;
}
.lpl-pswp .lpl-ps-strip button{position:relative;display:block;flex:0 0 auto;width:var(--lpl-ps-thumb-size,56px);height:var(--lpl-ps-thumb-size,56px);padding:0;overflow:hidden;border:2px solid transparent;border-radius:5px;background:#222;cursor:pointer}
.lpl-pswp .lpl-ps-strip button[aria-current="true"]{border-color:white}
.lpl-pswp .lpl-ps-strip button.lpl-ps-approved:after{content:'♥';position:absolute;top:0;right:2px;color:#ff8089;font-size:16px;text-shadow:0 1px 2px #000}
.lpl-pswp .lpl-ps-strip img{width:100%;height:100%;display:block;object-fit:cover}
.lpl-pswp .pswp__top-bar,.lpl-pswp .pswp__button--arrow--prev,.lpl-pswp .pswp__button--arrow--next,
.lpl-pswp .pswp__counter,.lpl-pswp .lpl-ps-caption,.lpl-pswp .lpl-ps-strip{
 transition:opacity .24s ease,visibility .24s ease
}
.lpl-pswp.lpl-pswp-idle .pswp__top-bar,
.lpl-pswp.lpl-pswp-idle .pswp__button--arrow--prev,
.lpl-pswp.lpl-pswp-idle .pswp__button--arrow--next,
.lpl-pswp.lpl-pswp-idle .pswp__counter,
.lpl-pswp.lpl-pswp-idle .lpl-ps-caption,
.lpl-pswp.lpl-pswp-idle .lpl-ps-strip{opacity:0!important;visibility:hidden!important;pointer-events:none!important}
/* PhotoSwipe transforms the zoom-wrap. Keep the watermark as a sibling to the
   image within that zoom-wrap, so both move/scale together. */
.lpl-pswp .pswp__zoom-wrap{position:absolute}
.lpl-pswp .pswp__zoom-wrap .lpl-ps-wm{z-index:2!important;left:0;top:0;right:auto!important;bottom:auto!important;border-radius:var(--lpl-photo-radius,0px)}
.lpl-pswp .pswp__img{border-radius:var(--lpl-photo-radius,0px)!important;box-shadow:var(--lpl-photo-shadow,none)!important}
@media(max-width:600px){.lpl-pswp .pswp__button--lpl-heart,.lpl-pswp .pswp__button--lpl-play,.lpl-pswp .pswp__button--lpl-thumbs,.lpl-pswp .pswp__button--lpl-fullscreen{min-width:42px;min-height:44px;font-size:22px}.lpl-pswp .lpl-ps-caption{font-size:12px;max-width:95vw}}
@media(prefers-reduced-motion:reduce){.lpl-pswp .pswp__top-bar,.lpl-pswp .pswp__button,.lpl-pswp .lpl-ps-strip,.lpl-pswp .lpl-ps-caption{transition:none!important}}

.lpl-pswp .lpl-ps-proofing-message{position:absolute;z-index:5;left:50%;top:64px;transform:translateX(-50%);max-width:min(85vw,680px);color:#fff;background:rgba(0,0,0,.82);font:13px/1.4 system-ui,sans-serif;padding:0 10px;border-radius:6px;text-align:center;pointer-events:none;}
.lpl-pswp .lpl-ps-proofing-message:empty{display:none;}
.lpl-pswp .pswp__button--lpl-heart[disabled]{opacity:.35;cursor:wait;}

/* Beta 12: The theme's fixed header can have a higher z-index than PhotoSwipe's
   default (100000). Cover the entire viewport and avoid inherited theme bars. */
html body .pswp.lpl-pswp {
  position: fixed !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 0 !important;
  z-index: 2147483000 !important;
  --pswp-root-z-index: 2147483000;
}
/* PhotoSwipe controls float on the image; an opaque site-header background must
   not become a large horizontal black strip in the top portion of the screen. */
html body .pswp.lpl-pswp .pswp__top-bar {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  height: 60px !important;
  min-height: 0 !important;
  max-height: 60px !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  border: 0 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
/* Keep PhotoSwipe's placeholder neutral; it must never inherit photo frames,
   shadows or rounded white borders while Safari is decoding the real image. */
html body .pswp.lpl-pswp .pswp__img--placeholder {
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  outline: none !important;
}

/* Beta 14: one frozen outgoing PhotoSwipe frame. The actual incoming slide
   is already fitted and decoded underneath before this layer fades away.
   Keep the controls above it (z-index 4+). Pointer events on the hold layer
   intentionally block a second swipe while the current transition completes. */
.lpl-pswp .lpl-ps-fade-hold {
  position:absolute;inset:0;z-index:3;overflow:hidden;
  opacity:1;pointer-events:auto;background:var(--lpl-ps-bg,#000);
  will-change:opacity;
}
.lpl-pswp .lpl-ps-fade-hold > img {
  position:absolute;display:block;max-width:none!important;max-height:none!important;
  object-fit:fill;pointer-events:none;
}
@media(prefers-reduced-motion:reduce){.lpl-pswp .lpl-ps-fade-hold{display:none!important}}

/* Beta 16: prevent theme-level img max-width/height and object-fit rules
   from clipping the intrinsic PhotoSwipe image. PhotoSwipe handles scaling. */
html body .pswp.lpl-pswp .pswp__img:not(.pswp__img--placeholder){
  max-width:none!important;
  max-height:none!important;
  object-fit:fill!important;
  margin:0!important;
}

/* Beta 17: PhotoSwipe 5 does not hide the cursor when its controls fade out.
   During a slideshow/cinema, hide it after the configured idle delay even
   when hovering over a button or the image's built-in zoom cursor. */
html body .pswp.lpl-pswp.lpl-pswp-cinema.lpl-pswp-cursor-idle,
html body .pswp.lpl-pswp.lpl-pswp-cinema.lpl-pswp-cursor-idle * {
  cursor:none!important;
}

/* RC4: independent highlight floating above the reveal edge. It must NOT be
   masked with the old frame and must travel across the whole viewport. */
.lpl-pswp .lpl-ps-sweep-flare{
  position:absolute;top:0;bottom:0;z-index:3;pointer-events:none;
  background:linear-gradient(90deg,transparent 0%,rgba(255,227,172,.02) 13%,rgba(255,239,201,.13) 30%,rgba(255,249,228,.46) 46%,rgba(255,255,255,.72) 50%,rgba(255,236,193,.28) 57%,rgba(255,224,162,.07) 77%,transparent 100%);
  mix-blend-mode:screen;filter:blur(2px);will-change:transform,opacity;
}

/* RC3: portrait watermarks stay within the real fitted photo, never the viewport. */
.lpl-pswp .pswp__zoom-wrap .lpl-ps-wm{overflow:hidden!important;pointer-events:none!important;}

/* RC9: the old photograph's copyright is held and dissolved together with
   its frozen image. The next photo already has its own watermark beneath. */
.lpl-pswp .lpl-ps-fade-hold .lpl-ps-held-watermark-frame {
  position:absolute;z-index:2;overflow:hidden;pointer-events:none;
}
.lpl-pswp .lpl-ps-fade-hold .lpl-ps-held-watermark-frame > .lpl-watermark-overlay {
  position:absolute!important;inset:0!important;display:block!important;
  width:100%!important;height:100%!important;pointer-events:none!important;
}
/* Force normal sizing for PhotoSwipe's intrinsic watermark text. */
.lpl-pswp .pswp__zoom-wrap > .lpl-ps-wm {
  box-sizing:border-box!important;display:block!important;
  max-width:none!important;max-height:none!important;
  visibility:visible!important;pointer-events:none!important;
}

/* RC12: portrait copyright is drawn in the final *visible* photo rectangle.
   Unlike the intrinsic PhotoSwipe zoom-wrap overlay, its text is sized in
   screen pixels, and can never be clipped by provisional aspect ratios. */
.lpl-pswp .pswp__zoom-wrap > .lpl-ps-wm.lpl-ps-portrait-native{
  visibility:hidden!important;
}
.lpl-pswp > .lpl-ps-portrait-watermark{
  position:absolute!important;z-index:2!important;display:block!important;
  box-sizing:border-box!important;overflow:hidden!important;
  pointer-events:none!important;user-select:none!important;
  opacity:1!important;visibility:visible!important;
}
.lpl-pswp > .lpl-ps-portrait-watermark > .lpl-watermark-overlay{
  position:absolute!important;inset:0!important;width:100%!important;
  height:100%!important;display:block!important;
  max-width:none!important;max-height:none!important;
  pointer-events:none!important;
}

/* RC13: keep only the image title when the presentation controls auto-hide.
   In slideshow-only mode it is absent when autoplay is paused/stopped. */
html body .pswp.lpl-pswp.lpl-pswp-idle.lpl-pswp-slideshow-titles .lpl-ps-caption {
  opacity:1!important;visibility:visible!important;pointer-events:none!important;
}
html body .pswp.lpl-pswp:not(.lpl-pswp-slideshow-titles) .lpl-ps-caption-slideshow-only {
  display:none!important;
}

/* RC14 – a true 3D page turn with an inked front, pale paper back and shadow. */
.lpl-pswp .lpl-ps-book-page{position:absolute;transform-style:preserve-3d;will-change:transform,opacity;pointer-events:none;}
.lpl-pswp .lpl-ps-book-front,.lpl-pswp .lpl-ps-book-back{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden;}
.lpl-pswp .lpl-ps-book-front{background:#151515;box-shadow:inset -10px 0 22px rgba(0,0,0,.2),15px 8px 23px rgba(0,0,0,.34);}
.lpl-pswp .lpl-ps-book-front::after{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;background:linear-gradient(90deg,rgba(0,0,0,.28),transparent 22%,transparent 78%,rgba(255,255,255,.17));}
.lpl-pswp .lpl-ps-book-front>img{position:absolute;display:block;inset:0;max-width:none!important;max-height:none!important;object-fit:fill!important;}
.lpl-pswp .lpl-ps-book-back{transform:rotateY(180deg);background:linear-gradient(105deg,#d6d0c6 0%,#f5f1e7 48%,#e0d9cf 100%);box-shadow:inset 18px 0 28px rgba(0,0,0,.23),-12px 12px 35px rgba(0,0,0,.28);}
@media(prefers-reduced-motion:reduce){.lpl-pswp .lpl-ps-book-page{display:none!important}}

/* RC15: replace the default pixelated PhotoSwipe zoom cursor over the image.
   The normal button pointer and the cinema cursor:none override stay intact. */
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier .pswp__img:not(.pswp__img--placeholder),
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier .pswp__zoom-wrap{
  cursor:url('cursor-zoom-in.png') 12 12,zoom-in!important;
}
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier.lpl-pswp-photo-zoomed .pswp__img:not(.pswp__img--placeholder),
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier.lpl-pswp-photo-zoomed .pswp__zoom-wrap{
  cursor:url('cursor-zoom-out.png') 12 12,zoom-out!important;
}

/* Keep the existing slideshow/cinema hide behaviour above custom cursors. */
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier.lpl-pswp-cinema.lpl-pswp-cursor-idle,
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier.lpl-pswp-cinema.lpl-pswp-cursor-idle *,
html body .pswp.lpl-pswp.lpl-pswp-cursor-magnifier.lpl-pswp-cinema.lpl-pswp-cursor-idle.lpl-pswp-photo-zoomed *{
  cursor:none!important;
}
