/* Galeria final visual fixes.
   Loaded after styles.css so these rules win without touching app logic. */

.app-shell {
  padding-top: max(14px, env(safe-area-inset-top)) !important;
  padding-bottom: max(112px, calc(env(safe-area-inset-bottom) + 104px)) !important;
}

/* La navegacion principal de galeria debe vivir arriba, no encima de las tarjetas. */
.site-return-nav {
  position: relative !important;
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
  z-index: 80 !important;
  display: flex !important;
  width: max-content !important;
  max-width: min(760px, calc(100vw - 28px)) !important;
  min-height: 48px !important;
  margin: 0 auto 22px !important;
  transform: none !important;
}

.site-return-nav + .topbar {
  margin-top: 0 !important;
}

.tabbar {
  position: fixed !important;
  left: 50% !important;
  right: auto !important;
  top: auto !important;
  bottom: max(14px, calc(env(safe-area-inset-bottom) + 10px)) !important;
  z-index: 1200 !important;
  width: min(520px, calc(100vw - 24px)) !important;
  max-width: calc(100vw - 24px) !important;
  transform: translateX(-50%) !important;
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 6px !important;
  margin: 0 !important;
  padding: 8px !important;
  border: 1px solid rgba(196, 208, 225, 0.86) !important;
  border-radius: 28px !important;
  background: rgba(255, 255, 255, 0.94) !important;
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.14) !important;
  backdrop-filter: blur(20px) !important;
}

.tab-button {
  min-width: 0 !important;
  min-height: 58px !important;
  border: 0 !important;
  border-radius: 20px !important;
  background: transparent !important;
  color: #536174 !important;
  font-size: 11px !important;
  line-height: 1 !important;
}

.tab-button.active {
  background: linear-gradient(180deg, #eef5ff, #dfeaff) !important;
  color: #1747b8 !important;
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, 0.2), 0 10px 24px rgba(37, 99, 235, 0.12) !important;
}

.tab-button.active span {
  color: #1747b8 !important;
}

#catalogView .filters,
#stockView .filters {
  z-index: 900 !important;
}

.gallery-check-filter-panel {
  z-index: 1300 !important;
}

.business-gate-dialog[open] {
  z-index: 9000 !important;
}

.detail-dialog.gallery-mode[open],
.detail-dialog.gallery-mode.stock-mode[open] {
  overscroll-behavior: contain !important;
  touch-action: manipulation !important;
}

.detail-dialog.gallery-mode[open] .detail-media,
.detail-dialog.gallery-mode.stock-mode[open] .detail-media {
  padding-bottom: max(152px, calc(env(safe-area-inset-bottom) + 140px)) !important;
}

.detail-dialog.gallery-mode[open] .thumb-row,
.detail-dialog.gallery-mode.stock-mode[open] .thumb-row {
  left: 50% !important;
  right: auto !important;
  bottom: max(80px, calc(env(safe-area-inset-bottom) + 74px)) !important;
  width: min(860px, calc(100vw - 28px)) !important;
  min-height: 58px !important;
  max-height: 66px !important;
  transform: translateX(-50%) !important;
  justify-content: center !important;
  gap: 8px !important;
  padding: 7px 10px !important;
  border-radius: 0 !important;
  background: rgba(241, 245, 249, 0.92) !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
}

.detail-dialog.gallery-mode[open] .thumb-row button,
.detail-dialog.gallery-mode.stock-mode[open] .thumb-row button {
  flex: 0 0 48px !important;
  width: 48px !important;
  height: 48px !important;
  border-radius: 10px !important;
}

.detail-dialog.gallery-mode[open] .detail-bottom-bar,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar {
  left: 50% !important;
  right: auto !important;
  bottom: max(14px, calc(env(safe-area-inset-bottom) + 8px)) !important;
  width: min(680px, calc(100vw - 28px)) !important;
  min-height: 58px !important;
  transform: translateX(-50%) !important;
  display: grid !important;
  grid-template-columns: 56px minmax(0, 1fr) 56px !important;
  align-items: center !important;
  gap: 9px !important;
  pointer-events: none !important;
}

.detail-dialog.gallery-mode[open] .detail-bottom-bar .favorite-photo-button,
.detail-dialog.gallery-mode[open] .detail-bottom-bar .share-photo-button,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .favorite-photo-button,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .share-photo-button {
  width: 56px !important;
  height: 56px !important;
  min-height: 56px !important;
  pointer-events: auto !important;
}

.detail-dialog.gallery-mode[open] .detail-bottom-bar .chip-row,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .chip-row {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 52px !important;
  max-height: 62px !important;
  display: flex !important;
  flex-wrap: nowrap !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 7px 10px !important;
  border-radius: 999px !important;
  overflow: hidden !important;
  pointer-events: auto !important;
}

.detail-dialog.gallery-mode[open] .detail-data-chip,
.detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip {
  flex: 0 1 auto !important;
  max-width: 190px !important;
  min-width: 0 !important;
  padding: 5px 8px !important;
}

.detail-dialog.gallery-mode[open] .detail-data-chip strong,
.detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip strong {
  display: block !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  font-size: 12px !important;
}

.detail-dialog.gallery-mode[open] .run-chip-list,
.detail-dialog.gallery-mode.stock-mode[open] .run-chip-list {
  flex-wrap: nowrap !important;
  overflow: hidden !important;
}

@media (max-width: 640px) {
  .tabbar {
    width: min(430px, calc(100vw - 20px)) !important;
    padding: 7px !important;
    border-radius: 25px !important;
  }

  .tab-button {
    min-height: 54px !important;
    font-size: 10px !important;
  }

  .tab-button span {
    font-size: 17px !important;
  }

  .detail-dialog.gallery-mode[open] .thumb-row,
  .detail-dialog.gallery-mode.stock-mode[open] .thumb-row {
    bottom: max(76px, calc(env(safe-area-inset-bottom) + 68px)) !important;
    width: calc(100vw - 18px) !important;
    min-height: 56px !important;
    max-height: 60px !important;
    justify-content: flex-start !important;
    padding-inline: 8px !important;
  }

  .detail-dialog.gallery-mode[open] .thumb-row button,
  .detail-dialog.gallery-mode.stock-mode[open] .thumb-row button {
    flex-basis: 46px !important;
    width: 46px !important;
    height: 46px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-bottom-bar,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar {
    width: calc(100vw - 16px) !important;
    grid-template-columns: 50px minmax(0, 1fr) 50px !important;
    gap: 6px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-bottom-bar .favorite-photo-button,
  .detail-dialog.gallery-mode[open] .detail-bottom-bar .share-photo-button,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .favorite-photo-button,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .share-photo-button {
    width: 50px !important;
    height: 50px !important;
    min-height: 50px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-bottom-bar .chip-row,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .chip-row {
    min-height: 48px !important;
    max-height: 54px !important;
    gap: 4px !important;
    padding: 5px 6px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-data-chip,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip {
    max-width: 94px !important;
    padding: 4px 6px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-data-chip strong,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip strong {
    font-size: 10px !important;
  }

  .detail-dialog.gallery-mode[open] .run-chip-list b,
  .detail-dialog.gallery-mode.stock-mode[open] .run-chip-list b {
    padding: 2px 5px !important;
    font-size: 10px !important;
  }
}

/* Mantiene las tarjetas de galeria con tamano constante al filtrar. */
@media (min-width: 721px) {
  .library-grid {
    grid-template-columns: repeat(auto-fill, minmax(210px, 230px)) !important;
    justify-content: center !important;
    align-items: start !important;
  }

  .model-card,
  .library-grid > * {
    width: 100% !important;
    max-width: 230px !important;
  }
}

/* Final filter/NIP fixes. Keep controls above cards and allow the PIN input to receive taps. */
#catalogView .filters,
#stockView .filters {
  position: relative !important;
  z-index: 1200 !important;
  overflow: visible !important;
}

.gallery-check-filter {
  position: relative !important;
  z-index: 1210 !important;
  overflow: visible !important;
}

.gallery-check-filter:focus-within,
.gallery-check-filter.is-open {
  z-index: 1400 !important;
}

.gallery-check-filter-panel {
  z-index: 1500 !important;
  right: auto !important;
  min-width: 230px !important;
  max-width: min(320px, calc(100vw - 28px)) !important;
}

#galleryBusinessGate[open],
.business-gate-dialog[open] {
  z-index: 9000 !important;
}

#galleryBusinessGate .business-gate-card,
#galleryBusinessGate .business-pin,
#galleryBusinessGate .business-pin input,
#galleryBusinessGate .business-pin button {
  position: relative !important;
  z-index: 9010 !important;
  pointer-events: auto !important;
}

/* Estabilizacion final del visor de galeria.
   Esta capa vive al final para no mover controles antiguos por accidente. */
.detail-dialog.gallery-mode[open],
.detail-dialog.gallery-mode.stock-mode[open] {
  touch-action: manipulation !important;
  overscroll-behavior: contain !important;
}

.detail-dialog.gallery-mode[open] .detail-media,
.detail-dialog.gallery-mode.stock-mode[open] .detail-media {
  padding-bottom: max(168px, calc(env(safe-area-inset-bottom) + 156px)) !important;
}

.detail-dialog.gallery-mode[open] .thumb-row,
.detail-dialog.gallery-mode.stock-mode[open] .thumb-row {
  left: 50% !important;
  right: auto !important;
  bottom: max(86px, calc(env(safe-area-inset-bottom) + 78px)) !important;
  width: min(980px, calc(100vw - 48px)) !important;
  min-height: 60px !important;
  max-height: 68px !important;
  transform: translateX(-50%) !important;
  justify-content: center !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  z-index: 44 !important;
}

.detail-dialog.gallery-mode[open] .detail-bottom-bar,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar {
  position: fixed !important;
  left: 50% !important;
  right: auto !important;
  bottom: max(14px, calc(env(safe-area-inset-bottom) + 8px)) !important;
  width: min(760px, calc(100vw - 24px)) !important;
  min-height: 58px !important;
  transform: translateX(-50%) !important;
  display: grid !important;
  grid-template-columns: 58px minmax(260px, 1fr) 58px !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  pointer-events: none !important;
  z-index: 52 !important;
}

.detail-dialog.gallery-mode[open] .detail-bottom-bar .favorite-photo-button,
.detail-dialog.gallery-mode[open] .detail-bottom-bar .share-photo-button,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .favorite-photo-button,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .share-photo-button {
  position: static !important;
  inset: auto !important;
  flex: none !important;
  width: 58px !important;
  height: 58px !important;
  min-width: 58px !important;
  min-height: 58px !important;
  pointer-events: auto !important;
}

.detail-dialog.gallery-mode[open] .detail-bottom-bar .chip-row,
.detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .chip-row {
  min-width: 0 !important;
  min-height: 54px !important;
  max-height: none !important;
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  align-content: center !important;
  justify-content: center !important;
  gap: 6px !important;
  padding: 7px 12px !important;
  overflow: visible !important;
  pointer-events: auto !important;
}

.detail-dialog.gallery-mode[open] .detail-data-chip,
.detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip {
  flex: 0 1 auto !important;
  max-width: min(210px, 45vw) !important;
  min-width: 0 !important;
  padding: 5px 9px !important;
}

.detail-dialog.gallery-mode[open] .detail-data-chip strong,
.detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip strong {
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  font-size: 12px !important;
}

@media (max-width: 640px) {
  .detail-dialog.gallery-mode[open] .detail-media,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-media {
    padding-top: max(86px, calc(env(safe-area-inset-top) + 76px)) !important;
    padding-bottom: max(162px, calc(env(safe-area-inset-bottom) + 152px)) !important;
  }

  .detail-dialog.gallery-mode[open] .thumb-row,
  .detail-dialog.gallery-mode.stock-mode[open] .thumb-row {
    bottom: max(82px, calc(env(safe-area-inset-bottom) + 74px)) !important;
    width: calc(100vw - 18px) !important;
    min-height: 54px !important;
    max-height: 58px !important;
    justify-content: flex-start !important;
  }

  .detail-dialog.gallery-mode[open] .thumb-row button,
  .detail-dialog.gallery-mode.stock-mode[open] .thumb-row button {
    flex: 0 0 46px !important;
    width: 46px !important;
    height: 46px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-bottom-bar,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar {
    width: calc(100vw - 18px) !important;
    grid-template-columns: 50px minmax(178px, 1fr) 50px !important;
    gap: 6px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-bottom-bar .favorite-photo-button,
  .detail-dialog.gallery-mode[open] .detail-bottom-bar .share-photo-button,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .favorite-photo-button,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .share-photo-button {
    width: 50px !important;
    height: 50px !important;
    min-width: 50px !important;
    min-height: 50px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-bottom-bar .chip-row,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-bottom-bar .chip-row {
    min-height: 50px !important;
    max-height: 72px !important;
    gap: 4px !important;
    padding: 6px 8px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-data-chip,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip {
    max-width: 138px !important;
    padding: 4px 7px !important;
  }

  .detail-dialog.gallery-mode[open] .detail-data-chip strong,
  .detail-dialog.gallery-mode.stock-mode[open] .detail-data-chip strong {
    font-size: 10.5px !important;
  }
}

/* 2026-07-18: boton Mostrar todo uniforme sin mover la galeria. */
#catalogView .import-unlock #catalogUnlockImport,
#stockView .import-unlock #stockUnlockImport,
#catalogUnlockImport,
#stockUnlockImport {
  min-height: 42px !important;
  padding: 0 18px !important;
  color: #ffffff !important;
  background: linear-gradient(135deg, #c8102e 0%, #9f0c27 100%) !important;
  border-color: rgba(200, 16, 46, 0.34) !important;
  box-shadow: 0 16px 34px rgba(200, 16, 46, 0.2) !important;
}

#catalogView .import-unlock #catalogUnlockImport:hover,
#stockView .import-unlock #stockUnlockImport:hover,
#catalogUnlockImport:hover,
#stockUnlockImport:hover {
  transform: translateY(-1px);
  box-shadow: 0 20px 38px rgba(200, 16, 46, 0.26) !important;
}

#catalogView .filters,
#stockView .filters {
  overflow: visible !important;
  z-index: 1200 !important;
}

#catalogView .gallery-check-filter-panel,
#stockView .gallery-check-filter-panel {
  z-index: 1600 !important;
}

/* 2026-07-30: estabilidad responsive y carga visual progresiva.
   Respeta el diseno limpio de galeria y evita tarjetas gigantes al filtrar. */
html {
  -webkit-text-size-adjust: 100%;
  text-rendering: optimizeLegibility;
}

body {
  -webkit-font-smoothing: antialiased;
}

@supports (content-visibility: auto) {
  .model-card,
  .favorite-list-card {
    content-visibility: auto;
    contain-intrinsic-size: 260px 360px;
  }
}

@media (min-width: 721px) {
  .library-grid {
    grid-template-columns: repeat(auto-fill, minmax(210px, 230px)) !important;
    justify-content: center !important;
    align-items: start !important;
  }

  .model-card {
    max-width: 230px !important;
  }
}

@media (max-width: 720px) {
  .app-shell,
  .library-grid,
  .filters {
    width: min(100%, calc(100vw - 18px)) !important;
  }

  .library-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    padding-bottom: calc(110px + env(safe-area-inset-bottom)) !important;
  }

  .model-photo img {
    transform: translateZ(0);
  }
}

@media (max-width: 430px) {
  .library-grid {
    grid-template-columns: 1fr !important;
    max-width: 270px !important;
    margin-inline: auto !important;
  }
}
