/* ==========================================================================
   PRODUCT GALLERY — miniatury + główne zdjęcie, mobile-first
   ========================================================================== */

.product-gallery {
  display: flex;
  flex-direction: column-reverse;
  gap: var(--space-sm);
}

.product-gallery__thumbs {
  display: flex;
  gap: var(--space-xs);
  overflow-x: auto;
  scrollbar-width: none;
}
.product-gallery__thumbs::-webkit-scrollbar { display: none; }

.product-gallery__thumb {
  flex: 0 0 64px;
  width: 64px;
  height: 80px;
  border-radius: var(--radius-sm);
  overflow: hidden;
  border: 1px solid var(--color-border);
  position: relative;
  opacity: 0.7;
  transition: opacity var(--transition-fast), border-color var(--transition-fast);
}
.product-gallery__thumb img { width: 100%; height: 100%; object-fit: cover; }
.product-gallery__thumb.is-active,
.product-gallery__thumb:hover {
  opacity: 1;
  border-color: var(--color-black);
}
.product-gallery__thumb--video::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.25) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M8 5v14l11-7z'/%3E%3C/svg%3E") center/18px no-repeat;
}

.product-gallery__main {
  position: relative;
  aspect-ratio: 3 / 4;
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--color-beige-light);
}
/* object-fit: contain (nie cover) — zdjęcia z hurtowni rzadko mają idealnie
   proporcje 3:4, więc "cover" obcinał modelkom głowy/stopy, żeby wypełnić
   ramkę. "contain" pokazuje całe zdjęcie zawsze, ewentualne puste pasy
   wypełnia tłem ramki (tego samego koloru co placeholder), więc przy
   zdjęciach z jasnym tłem praktycznie niewidoczne. */
.product-gallery__main img { width: 100%; height: 100%; object-fit: contain; }

.product-gallery__zoom {
  position: absolute;
  bottom: var(--space-sm);
  right: var(--space-sm);
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--color-white);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-sm);
}
.product-gallery__zoom svg { width: 16px; height: 16px; }

@media (min-width: 768px) {
  .product-gallery {
    flex-direction: row;
    align-items: flex-start;
  }
  .product-gallery__thumbs {
    flex-direction: column;
    flex: 0 0 80px;
    overflow-x: visible;
    overflow-y: auto;
    max-height: 640px;
  }
  .product-gallery__thumb { flex: 0 0 80px; width: 80px; height: 100px; }
  .product-gallery__main { flex: 1; aspect-ratio: 3 / 4; max-height: 720px; }
}

/* Oznaczenie treści AI (art. 50 AI Act) — ma być wyraźne i odróżnialne */
.product-gallery__ai-disclosure {
  display: flex;
  align-items: center;
  gap: var(--space-xs);
  margin-top: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  background: var(--color-beige-light);
  border-radius: var(--radius-sm);
  font-size: var(--fs-xs);
  color: var(--color-text-muted);
}
.product-gallery__ai-disclosure svg { width: 16px; height: 16px; flex-shrink: 0; }

/* Podgląd zdjęcia na pełnym ekranie */
.gallery-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: rgba(0, 0, 0, 0.9);
}
[data-gallery-image].is-zoomed {
  position: fixed !important;
  inset: 0;
  z-index: 10000;
  display: block !important;
  width: auto !important;
  height: auto !important;
  max-width: 92vw;
  max-height: 92vh;
  margin: auto;
  object-fit: contain;
}
.gallery-lightbox__close {
  position: absolute;
  top: var(--space-md);
  right: var(--space-md);
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  color: #fff;
  font-size: 28px;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
