/* Nestor rehydration shim — restores JS behaviors stripped during site import.
   Scoped with nl- prefixes so it can't collide with the captured theme. */

/* Lightbox */
.nl-lb{position:fixed;inset:0;z-index:2147483000;display:none;align-items:center;justify-content:center;
  background:rgba(0,0,0,.9);opacity:0;transition:opacity .2s ease;}
.nl-lb.open{display:flex;opacity:1;}
.nl-lb-fig{margin:0;max-width:92vw;max-height:88vh;display:flex;align-items:center;justify-content:center;}
.nl-lb-img{max-width:92vw;max-height:88vh;object-fit:contain;border-radius:4px;box-shadow:0 6px 40px rgba(0,0,0,.5);}
.nl-lb button{position:absolute;background:rgba(0,0,0,.35);color:#fff;border:0;cursor:pointer;line-height:1;
  width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:34px;transition:background .2s;}
.nl-lb button:hover{background:rgba(255,255,255,.22);}
.nl-lb-close{top:18px;right:18px;font-size:30px;}
.nl-lb-prev{left:18px;top:50%;transform:translateY(-50%);}
.nl-lb-next{right:18px;top:50%;transform:translateY(-50%);}
.nl-lb-count{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);background:none;color:#fff;
  width:auto;height:auto;font-size:14px;opacity:.8;border-radius:0;}
@media(max-width:640px){.nl-lb button{width:44px;height:44px;font-size:26px;}}

/* Defensive sticky header (only applied when the captured header lost its fixed CSS) */
.nl-fixed-header{position:sticky;top:0;z-index:1000;background:var(--nl-header-bg,#fff);
  box-shadow:0 2px 12px rgba(0,0,0,.08);}

/* Carousel arrows we may need to reveal */
.nl-car-arrow-shown{opacity:1!important;visibility:visible!important;pointer-events:auto!important;}

/* ── Tenant-specific: restore nav dropdown on hover (desktop) ────────────
   The captured markup has visibility:hidden on .dropdown__menu with no
   :hover rule — the original opened on hover. Restore that. */
@media (min-width:1024px){
  .subnav-menu:hover .dropdown__menu,
  .subnav-menu:focus-within .dropdown__menu{
    opacity:1!important;
    visibility:visible!important;
    transform:rotateX(0) translateX(0)!important;
    pointer-events:auto!important;
  }
}

/* ── Tenant-specific: force 3-column gallery on desktop (home page) ─────
   The captured tiles have baked pixel widths that wrap on narrower
   desktops. Normalize to a clean 3-up on >=1024px. */
@media (min-width:1024px){
  .css-1gz8088 .ReactGridGallery,
  .css-1gz8088 .ReactGridGallery > div{
    width:100%!important;
    display:flex!important;
    flex-wrap:wrap!important;
    justify-content:center!important;
    align-items:stretch!important;
  }
  .css-1gz8088 .ReactGridGallery_tile{
    width:calc(33.333% - 8px)!important;
    max-width:calc(33.333% - 8px)!important;
    margin:4px!important;
    height:auto!important;
    position:relative!important;
    float:none!important;
  }
  .css-1gz8088 .ReactGridGallery_tile-viewport{
    width:100%!important;
    height:320px!important;
    overflow:hidden!important;
  }
  .css-1gz8088 .ReactGridGallery_tile-viewport > img{
    width:100%!important;
    height:100%!important;
    max-width:100%!important;
    margin:0!important;
    object-fit:cover!important;
  }
}

/* ── Tenant-specific: back-to-top pill smooth appearance ────────────── */
.back-to-top-module{transition:opacity .3s ease!important;pointer-events:none;}
.back-to-top-module.nl-btt-visible{opacity:1!important;pointer-events:auto;}

/* ── Tenant-specific: entrance animation initial states.
   Set BEFORE JS runs so no first-paint flash. The JS in nestor-rehydrate.js
   flips these to the "revealed" state as elements scroll into view. */
[data-nl-anim-fade="pending"]{
  opacity:0!important;
  transform:translateY(24px)!important;
  transition:opacity .8s ease-out, transform .8s ease-out!important;
}
[data-nl-anim-slide="pending"]{
  clip-path:inset(0 100% 0 0)!important;
  transition:clip-path 1s ease-out!important;
}
[data-nl-anim-fade="on"]{
  opacity:1!important;
  transform:none!important;
  transition:opacity .8s ease-out, transform .8s ease-out!important;
}
[data-nl-anim-slide="on"]{
  clip-path:inset(0%)!important;
  transition:clip-path 1s ease-out!important;
}
