/* ============================================================
   LTDLF · Sticky genérico para Containers Elementor · v1.11.7
   Sticky / App Pin / App Sheet
   ============================================================ */
.ltdlf-sticky-container{
  --ltdlf-sticky-header-bottom:0px;
  --ltdlf-sticky-extra-gap:0px;
  --ltdlf-sticky-z-index:80;
  --ltdlf-sheet-overlap:0px;
  --ltdlf-sheet-hold:0vh;
  --ltdlf-sheet-radius:28px;
  --ltdlf-sheet-background:#fff;
  --ltdlf-sheet-anchor-z:10;
  --ltdlf-sheet-panel-z:30;
}

/* Sticky normal */
.ltdlf-sticky-container.ltdlf-sticky-runtime-active[data-ltdlf-sticky-mode="sticky"]{
  position:sticky!important;
  top:calc(var(--ltdlf-sticky-header-bottom,0px) + var(--ltdlf-sticky-extra-gap,0px))!important;
  z-index:var(--ltdlf-sticky-z-index,80)!important;
  align-self:flex-start;
}

/* App Sheet v1.10.2: el bloque seleccionado se fija mediante runtime JS
   cuando toca el header. El placeholder conserva su hueco y el panel siguiente
   sube por delante, incluso cuando Elementor tiene wrappers que rompen sticky. */
.ltdlf-sheet-parent-active{
  position:relative!important;
  overflow:visible!important;
  isolation:isolate;
}

.ltdlf-sticky-container.ltdlf-sticky-runtime-active[data-ltdlf-sticky-mode="sheet"]{
  position:relative;
  z-index:var(--ltdlf-sheet-anchor-z,10);
  align-self:flex-start;
}

.ltdlf-sticky-container.ltdlf-sticky-runtime-active[data-ltdlf-sticky-mode="sheet"].is-ltdlf-sheet-pinned{
  position:fixed!important;
  top:var(--ltdlf-sheet-fixed-top,0px)!important;
  left:var(--ltdlf-sheet-fixed-left,0px)!important;
  width:var(--ltdlf-sheet-fixed-width,auto)!important;
  z-index:var(--ltdlf-sheet-anchor-z,10)!important;
  margin-left:0!important;
  margin-right:0!important;
  transform:translateY(var(--ltdlf-sheet-stop-shift,0px))!important;
  will-change:auto;
  transition:none!important;
  animation:none!important;
  opacity:1!important;
}


.ltdlf-sheet-panel{
  position:relative!important;
  z-index:var(--ltdlf-sheet-panel-z-runtime,30)!important;
  margin-top:calc(var(--ltdlf-sheet-original-margin-top,0px) + var(--ltdlf-sheet-hold-runtime,0vh))!important;
  border-top-left-radius:var(--ltdlf-sheet-radius-runtime,28px)!important;
  border-top-right-radius:var(--ltdlf-sheet-radius-runtime,28px)!important;
  isolation:isolate;
}

/* El solape visual sólo entra cuando la galería ya está fijada.
   Así el panel nunca tapa los dots/miniaturas en el estado inicial. */
.ltdlf-sheet-panel.is-ltdlf-sheet-covering{
  margin-top:calc(var(--ltdlf-sheet-original-margin-top,0px) + var(--ltdlf-sheet-hold-runtime,0vh) - var(--ltdlf-sheet-overlap-runtime,0px))!important;
}


.ltdlf-sheet-panel[data-ltdlf-sheet-custom-background="yes"]{
  background:var(--ltdlf-sheet-background-runtime,#fff)!important;
}

.ltdlf-sheet-panel[data-ltdlf-sheet-shadow="soft"]{
  box-shadow:0 -10px 30px rgba(15,23,42,.06);
}

.ltdlf-sheet-panel[data-ltdlf-sheet-shadow="app"]{
  box-shadow:0 -16px 42px rgba(15,23,42,.12);
}

/* Estados visuales existentes */
.ltdlf-sticky-container.is-ltdlf-stuck[data-ltdlf-sticky-effect="shadow"]{
  box-shadow:0 10px 28px rgba(15,23,42,.10);
}

.ltdlf-sticky-container.is-ltdlf-stuck[data-ltdlf-sticky-effect="app"]{
  box-shadow:0 12px 30px rgba(15,23,42,.12);
  animation:ltdlfStickyAppIn .18s ease-out both;
}

/* Placeholder exclusivo de App Pin fixed */
.ltdlf-sticky-pin-placeholder{
  display:none;
  visibility:hidden;
  pointer-events:none;
}

.ltdlf-sticky-pin-placeholder.is-active{
  display:block;
  flex:0 0 auto;
  min-width:0;
}

@keyframes ltdlfStickyAppIn{
  from{opacity:.92;transform:translateY(-5px)}
  to{opacity:1;transform:translateY(0)}
}

@media (prefers-reduced-motion:reduce){
  .ltdlf-sticky-container.is-ltdlf-stuck[data-ltdlf-sticky-effect="app"]{animation:none}
}

/* v1.10.4 · App Sheet Garnier: el panel es una capa opaca real.
   Evita transparencias/fades del wrapper mientras cubre la galería fija. */
.ltdlf-sheet-panel{
  opacity:1!important;
  transform:none!important;
}
