/* Casa Única universal photographic viewer — one source of geometry.
 * All supported photo, gallery, single, mini and restaurant-menu photos use
 * the same centered image frame and the existing progressive quality controller.
 * The actual IMG is the only transformed element; controls are its siblings
 * inside a common untransformed photo-frame (never viewport-rect calculations).
 */
.cu-image-viewer[hidden]{display:none!important}
.cu-overlay-root:is([data-cu-overlay-kind="viewer"],[data-cu-overlay-kind="viewer-mini"],[data-cu-overlay-kind="viewer-single"]) .cu-overlay-root__backdrop{
  display:block;background:rgba(5,13,10,.55)!important;touch-action:none!important;overscroll-behavior:contain!important;
  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;filter:none!important
}
.cu-image-viewer{
  position:absolute!important;inset:0!important;display:flex!important;align-items:center!important;justify-content:center!important;
  width:100%!important;height:100%!important;margin:0!important;padding:1rem!important;background:transparent!important;color:#fff!important;
  touch-action:pan-y;z-index:1;pointer-events:none!important
}
.cu-image-viewer__card{
  position:relative!important;width:min(1480px,calc(100vw - 2.75rem))!important;
  height:min(1400px,calc(100dvh - 2.25rem))!important;max-width:calc(100vw - 2.75rem)!important;
  max-height:calc(100dvh - 2.25rem)!important;overflow:visible!important;border:0!important;
  border-radius:0!important;background:transparent!important;box-shadow:none!important;isolation:isolate!important;pointer-events:none!important
}
.cu-image-viewer__figure{
  position:absolute!important;inset:0!important;display:flex!important;align-items:center!important;justify-content:center!important;
  width:100%!important;height:100%!important;margin:0!important;padding:0!important;overflow:visible!important;
  border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;pointer-events:none!important
}
/* Exactly one normal-frame geometry owner; changes of resolution never move controls. */
.cu-image-viewer__photo-frame{
  position:relative;display:block;flex:0 0 auto;width:var(--cu-viewer-photo-width,100%);height:var(--cu-viewer-photo-height,100%);
  max-width:none;max-height:none;overflow:visible;pointer-events:none;
  transition:width .46s cubic-bezier(.16,.7,.22,1),height .46s cubic-bezier(.16,.7,.22,1)
}
.cu-image-viewer__viewport{
  position:relative!important;display:block!important;width:100%!important;height:100%!important;
  max-width:100%!important;max-height:100%!important;margin:0!important;padding:0!important;overflow:hidden!important;
  border:0!important;border-radius:.54rem!important;background:#06100c!important;
  box-shadow:0 0 0 var(--cu-viewer-border-size,6px) #06100c,0 18px 56px rgba(0,0,0,.30)!important;
  touch-action:none!important;overscroll-behavior:contain!important;pointer-events:auto!important;
  transition:box-shadow .46s ease!important
}
.cu-image-viewer__viewport > img[data-cu-viewer-image]{
  display:block!important;position:absolute!important;left:50%!important;top:50%!important;
  width:var(--cu-viewer-photo-width,100%)!important;height:var(--cu-viewer-photo-height,100%)!important;
  max-width:none!important;max-height:none!important;margin:0!important;
  object-fit:fill!important;object-position:center!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;
  opacity:0;transition:opacity .12s ease;transform:none;transform-origin:center center;will-change:auto;
  user-select:none;-webkit-user-select:none;-webkit-user-drag:none;cursor:zoom-in;pointer-events:none!important
}
.cu-image-viewer__card.is-ready .cu-image-viewer__viewport > img[data-cu-viewer-image]{opacity:1}
.cu-image-viewer__card.is-zoomed .cu-image-viewer__viewport{cursor:grab}
.cu-image-viewer__card.is-panning .cu-image-viewer__viewport{cursor:grabbing}
.cu-image-viewer__card.is-zoom-animating .cu-image-viewer__viewport > img[data-cu-viewer-image]{transition:opacity .12s ease,transform .2s cubic-bezier(.2,.72,.2,1)}
/* The viewer frame geometry and border thickness are set by the canonical
 * source-coordinate zoom controller. No object-fit:cover, no second frame owner. */
/* Direct touch manipulation has NO catch-up transition. Existing
 * 460ms transitions remain for wheel/settling after the fingers are lifted. */
.cu-image-viewer__card.is-touch-tracking .cu-image-viewer__photo-frame{transition:none!important}
.cu-image-viewer__card.is-touch-tracking .cu-image-viewer__viewport{transition:none!important}
.cu-image-viewer__card.is-touch-tracking .cu-image-viewer__viewport > img[data-cu-viewer-image]{transition:none!important}
/* 5.0.233 — delayed photo-load feedback. The page/viewer remains visually
 * unchanged for fast loads; after 180ms only this tiny three-dot indicator is
 * shown. It owns no frame, X, chevrons, or backdrop. */
.cu-image-viewer-pending-indicator{
  position:fixed;z-index:2147483000;left:50%;top:50%;display:flex;align-items:center;justify-content:center;gap:.3rem;
  min-width:42px;height:28px;padding:0 .55rem;border-radius:999px;background:rgba(6,16,12,.82);
  box-shadow:0 5px 18px rgba(0,0,0,.24);transform:translate(-50%,-50%);pointer-events:none
}
.cu-image-viewer-pending-indicator[hidden]{display:none!important}
.cu-image-viewer-pending-indicator span{
  display:block;width:6px;height:6px;border-radius:50%;background:#fff;animation:cu-viewer-dot-bounce .78s ease-in-out infinite
}
.cu-image-viewer-pending-indicator span:nth-child(2){animation-delay:.12s}
.cu-image-viewer-pending-indicator span:nth-child(3){animation-delay:.24s}
@keyframes cu-viewer-dot-bounce{0%,60%,100%{transform:translateY(0);opacity:.6}30%{transform:translateY(-5px);opacity:1}}
@media(prefers-reduced-motion:reduce){.cu-image-viewer-pending-indicator span{animation:none;opacity:1}}

/* Existing progressive loader. Photo openings use only the separate global pending dots. */
.cu-image-viewer__loader{display:none!important}
@keyframes cu-viewer-spin{to{transform:rotate(360deg)}}
.cu-image-viewer__close,.cu-image-viewer__quality,.cu-image-viewer__arrow{
  appearance:none;-webkit-appearance:none;position:absolute!important;display:flex!important;align-items:center!important;justify-content:center!important;
  margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;color:rgba(255,255,255,.98)!important;
  cursor:pointer!important;box-shadow:none!important;opacity:1;transition:opacity .22s ease,visibility .22s ease;pointer-events:auto!important
}
.cu-image-viewer__close span,.cu-image-viewer__arrow span{display:block;pointer-events:none}
/* The existing quality artwork/states/loading animation are unchanged. */
.cu-image-viewer__quality{
  z-index:12!important;top:.48rem!important;right:calc(.58rem + 48px)!important;
  width:40px!important;height:44px!important;cursor:help!important;pointer-events:auto!important;
  text-shadow:0 2px 10px rgba(0,0,0,.75)!important
}
.cu-image-viewer__quality .cu-image-viewer__quality-mark{display:block;pointer-events:none;width:24px;height:24px;filter:drop-shadow(0 1px 4px rgba(0,0,0,.68))}
.cu-image-viewer__quality[hidden]{display:none!important}
.cu-image-viewer__quality[data-cu-quality-state="displayed"]{color:#60bb79!important}
.cu-image-viewer__quality[data-cu-quality-state="loading"] .cu-image-viewer__quality-mark{animation:cu-viewer-quality-pulse .92s ease-in-out infinite;transform-origin:center;filter:drop-shadow(0 0 4px rgba(255,255,255,.7))}
@keyframes cu-viewer-quality-pulse{0%,100%{opacity:.48;transform:scale(.90);filter:drop-shadow(0 0 1px rgba(255,255,255,.2))}50%{opacity:1;transform:scale(1.12);filter:drop-shadow(0 0 8px rgba(255,255,255,.9))}}
@media(prefers-reduced-motion:reduce){.cu-image-viewer__quality[data-cu-quality-state="loading"] .cu-image-viewer__quality-mark{animation:none!important;opacity:1!important}}

/* The X and quality sparkle have invariant insets INSIDE every normal photo frame. */
.cu-image-viewer__close{
  z-index:12!important;top:.48rem!important;right:.58rem!important;
  width:44px!important;height:44px!important;font-family:Arial,sans-serif!important;font-size:2.35rem!important;
  font-weight:700!important;line-height:1!important;text-shadow:0 2px 10px rgba(0,0,0,.76)!important
}
.cu-image-viewer__card.is-photo-geometry-pending :is(.cu-image-viewer__close,.cu-image-viewer__quality){opacity:0!important;pointer-events:none!important}
/* The universal viewer alone places photo navigation together at bottom center. */
.cu-image-viewer__arrow{
  z-index:10!important;top:auto!important;bottom:10px!important;width:44px!important;height:60px!important;
  font-family:"Cera Pro",Arial,sans-serif!important;font-size:4.35rem!important;font-weight:300!important;line-height:1!important;
  text-shadow:0 2px 12px rgba(0,0,0,.78)!important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.28));
  transform:scaleY(1.16) scaleX(.62)!important;transform-origin:center!important
}
.cu-image-viewer__arrow--prev{left:calc(50% - 48px)!important;right:auto!important}
.cu-image-viewer__arrow--next{left:calc(50% + 4px)!important;right:auto!important}
.cu-image-viewer[data-cu-viewer-mode="single"] .cu-image-viewer__arrow{display:none!important}
.cu-image-viewer__arrow[hidden],.cu-image-viewer__quality[hidden]{display:none!important}
.cu-image-viewer__arrow:hover,.cu-image-viewer__close:hover{opacity:.82!important;background:transparent!important}
.cu-image-viewer__arrow:focus-visible,.cu-image-viewer__close:focus-visible{outline:2px solid #fff!important;outline-offset:2px!important;box-shadow:none!important}
/* All three controls disappear together during manipulation, reappear after settling. */
.cu-image-viewer__card.is-zoom-interacting :is(.cu-image-viewer__quality,.cu-image-viewer__close,.cu-image-viewer__arrow){
  opacity:0!important;visibility:hidden!important;pointer-events:none!important
}
.cu-image-viewer__figure figcaption[hidden]{display:none!important}
.cu-image-viewer__caption{
  position:absolute!important;z-index:8!important;left:10px!important;bottom:10px!important;display:block!important;
  max-width:min(32%,320px)!important;margin:0!important;padding:.34rem .55rem!important;border-radius:.38rem!important;
  background:rgba(5,16,12,.76)!important;color:#fff!important;font-family:Arial,sans-serif!important;
  font-size:.74rem!important;font-weight:500!important;line-height:1.2!important;text-align:left!important;
  transform:none!important;pointer-events:none!important
}
.cu-image-viewer__caption.is-external-photo{
  left:auto!important;right:8px!important;bottom:8px!important;max-width:calc(100% - 16px)!important;text-align:right!important
}
/* The photo's decoded pixels establish geometry before any chrome becomes
 * visible. A re-opened viewer cannot expose controls over an empty backdrop. */
.cu-image-viewer__card:not(.is-ready) :is(.cu-image-viewer__close,.cu-image-viewer__quality,.cu-image-viewer__arrow){
  opacity:0!important;visibility:hidden!important;pointer-events:none!important
}
/* Pending decode must not display unattached controls or a fabricated frame. */
.cu-image-viewer[data-cu-viewer-pending="1"] :is(.cu-image-viewer__figure,.cu-image-viewer__close,.cu-image-viewer__quality,.cu-image-viewer__arrow){
  visibility:hidden!important;pointer-events:none!important
}
@media(max-width:800px){
  .cu-image-viewer{padding:.5rem!important}
  .cu-image-viewer__card{width:calc(100vw - 1rem)!important;height:min(1400px,calc(100dvh - 1.25rem))!important;max-width:calc(100vw - 1rem)!important;max-height:calc(100dvh - 1.25rem)!important}
  .cu-image-viewer__close{width:40px!important;height:40px!important;font-size:2.15rem!important;right:.45rem!important}
  .cu-image-viewer__quality{width:36px!important;height:40px!important;right:calc(.45rem + 40px)!important}
  .cu-image-viewer__arrow{width:40px!important;height:54px!important;font-size:3.85rem!important;bottom:8px!important}
  .cu-image-viewer__arrow--prev{left:calc(50% - 43px)!important}
  .cu-image-viewer__arrow--next{left:calc(50% + 3px)!important}
  .cu-image-viewer__caption{font-size:.68rem!important}
}
@media(prefers-reduced-motion:reduce){
  .cu-image-viewer__photo-frame,.cu-image-viewer__viewport,.cu-image-viewer__close,.cu-image-viewer__quality,.cu-image-viewer__arrow{transition:none!important}
}
/* 5.0.331 — shared card-photo viewer affordance. The parent card's dimensions,
   approved crops and navigation link markup remain authoritative. */
.cu-card-image-view{
  position:absolute;left:10px;bottom:10px;z-index:25;
  box-sizing:border-box;display:flex;align-items:center;justify-content:center;
  width:36px;height:36px;min-width:36px;min-height:36px;padding:0;
  border:1px solid rgba(255,255,255,.86);border-radius:50%;
  background:rgba(255,255,255,.94);color:#354e3e;
  box-shadow:0 3px 13px rgba(24,38,29,.2);cursor:zoom-in;
  opacity:0;visibility:hidden;transform:translateY(3px);
  transition:opacity .16s ease,transform .16s ease,visibility .16s;
  pointer-events:none
}
.cu-card-image-view::before{content:'';display:block;width:18px;height:18px;flex:none;background:url('../img/card-image-sparkle.png') center/contain no-repeat;transform-origin:center}
.cu-card-image-view--small{width:28px;height:28px;min-width:28px;min-height:28px}
.cu-card-image-view--small::before{width:13px;height:13px}
.cu-card-image-view--floating{bottom:auto;right:auto}
.cu-card-image-view-anchor-host{position:relative}
.cu-card-image-view:focus-visible{outline:2px solid var(--cu-copper,#a66f45);outline-offset:2px;opacity:1;visibility:visible;transform:none;pointer-events:auto}
.cu-guide-entity-card__media:hover .cu-card-image-view,
.cu-guide-entity-card__media:focus-within .cu-card-image-view,
.cu-trip-stay-card__media:hover .cu-card-image-view,
.cu-trip-stay-card__media:focus-within .cu-card-image-view,
.cu-trip-activity-card__media:hover .cu-card-image-view,
.cu-trip-activity-card__media:focus-within .cu-card-image-view,
.cu-card-image-view--floating.is-visible,
.cu-card-image-view-anchor-host>.cu-card-image-view--floating:focus-visible{
  opacity:1;visibility:visible;transform:none;pointer-events:auto
}
@media(hover:none),(pointer:coarse){
  .cu-card-image-view{opacity:1;visibility:visible;transform:none;pointer-events:auto}
}
@media(prefers-reduced-motion:reduce){.cu-card-image-view{transition:none;transform:none}}

/* Small visual glyph, usable touch target on narrow Explore Further cards. */
@media(hover:none),(pointer:coarse){
 .cu-guide-directory[data-directory-variant="compact_rail"] .cu-card-image-view{
   width:30px;height:30px;min-width:30px;min-height:30px;
   border:0;box-shadow:none;
   background:radial-gradient(circle at center,rgba(255,255,255,.94) 0 13px,transparent 13.5px)
 }
}

/* One approved raster sparkle is the card affordance; no inline SVG variants. */
.cu-card-image-view:hover,.cu-card-image-view:focus-visible{transform:scale(1.075)!important;box-shadow:0 5px 17px rgba(22,50,31,.23)!important}
.cu-card-image-view:hover::before,.cu-card-image-view:focus-visible::before{animation:cu-card-sparkle-once .44s ease-out 1}
@keyframes cu-card-sparkle-once{0%{transform:scale(.86) rotate(-7deg)}55%{transform:scale(1.12) rotate(4deg)}100%{transform:scale(1) rotate(0)}}

/* Tiny photo contexts: proportional viewer invitation, no oversized white button. */
.cu-card-image-view--tiny,
.cu-unit-v3-related-card .cu-card-image-view,
.cu-trip-stay-card__media .cu-card-image-view{width:26px;height:26px;min-width:26px;min-height:26px;left:6px;bottom:6px}
.cu-card-image-view--tiny::before,
.cu-unit-v3-related-card .cu-card-image-view::before,
.cu-trip-stay-card__media .cu-card-image-view::before{width:12px;height:12px}
