/*
 * Gallery module — SD-39
 * Figma: content modules / Gallery (node 6361-114362)
 * Responsive image grid (2–4 cols) with two modes (lightbox / link),
 * client-side pagination (16/page) and an accessible <dialog> lightbox.
 * Module-level layout only — items use the gallery-item component, the close
 * control uses the close-button component.
 */

.dk-gallery {
  padding-block: var(--dk-space-section-m);
  padding-inline: var(--dk-space-page-inline);
}

.dk-gallery__headline,
.dk-gallery__grid,
.dk-gallery__pagination {
  max-inline-size: 88.75rem; /* 1420px — Figma L inner */
  margin-inline: auto;
}

.dk-gallery__headline {
  margin-block: 0 var(--dk-space-06);
}

.dk-gallery__headline:focus,
.dk-gallery__grid[data-gallery-focus]:focus {
  outline: none;
}

.dk-gallery__headline:focus-visible,
.dk-gallery__grid[data-gallery-focus]:focus-visible {
  outline: 2px solid var(--dk-color-focus);
  outline-offset: 4px;
}

.dk-gallery__grid {
  list-style: none;
  /* Keep margin-inline: auto from the max-width rule above — margin: 0 was killing centering */
  margin-block: 0;
  padding: 0;
  display: grid;
  gap: var(--dk-space-04);
}

.dk-gallery__grid { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 79.9375rem) { .dk-gallery__grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 44rem) { .dk-gallery__grid { grid-template-columns: repeat(2, 1fr); } }

.dk-gallery__item { min-inline-size: 0; }
.dk-gallery__item[hidden] { display: none; }

/* Pagination reuses components/pagination.css (SD-58) */

/* ── Lightbox (native dialog) ──────────────────────────────────────────── */
.dk-gallery__lightbox {
  inline-size: 100vw;
  max-inline-size: 100vw;
  block-size: 100dvh;
  max-block-size: 100dvh;
  margin: 0;
  padding: 0;
  border: 0;
  background: var(--dk-color-brand-secondary-02);
  color: var(--dk-color-black);
}

.dk-gallery__lightbox::backdrop { background: rgb(0 0 0 / 0.5); }

.dk-gallery__lightbox[open] {
  display: flex;
  flex-direction: column;
}

.dk-gallery__lightbox-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--dk-space-04);
  padding: var(--dk-space-04) var(--dk-space-06);
}

.dk-gallery__lightbox-stage {
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--dk-space-04);
  min-block-size: 0;
  padding-inline: var(--dk-space-04);
  padding-block-end: var(--dk-space-06);
}

.dk-gallery__figure {
  margin: 0;
  min-block-size: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--dk-space-04);
}

.dk-gallery__lightbox-img {
  max-inline-size: 100%;
  max-block-size: 80dvh;
  inline-size: auto;
  block-size: auto;
  object-fit: contain;
}

.dk-gallery__lightbox-caption { text-align: center; margin: 0; }
.dk-gallery__lightbox-caption:empty { display: none; }

.dk-gallery__nav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  inline-size: 3rem; /* 48px — Figma */
  block-size: 3rem;
  border: 1px solid var(--dk-color-black);
  border-radius: 999px;
  background: transparent;
  color: var(--dk-color-black);
  cursor: pointer;
  flex-shrink: 0;
  overflow: hidden;
  transition: background-color 0.15s ease, border-width 0.15s ease;
}

.dk-gallery__nav:hover {
  background-color: var(--dk-color-brand-secondary-01);
}

.dk-gallery__nav:active {
  background-color: var(--dk-color-brand-secondary-01);
  border-width: 2px;
}

.dk-gallery__nav svg {
  display: block;
  inline-size: 2rem; /* 32px — Figma */
  block-size: 2rem;
  transform: translateY(1px);
}

.dk-gallery__nav:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--dk-color-black), 0 0 0 4px var(--dk-color-brand-secondary-02), 0 0 0 6px var(--dk-color-focus);
}

body.dk-gallery-lightbox-open {
  overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
  .dk-gallery__nav {
    transition: none;
  }
}
