/* Shop3 — секция «Галерея» (gallery; plan-0.3 §1 п. 14). Подключается, только если такая секция есть на странице (render.php, assets()).
   Только токены var(--s3-*) и логические свойства (canon §6.2, docs/dev/rtl.md); общая обёртка — base.css. */

.s3-photos { display: grid; grid-template-columns: repeat(var(--s3x-cols, var(--s3-columns-gallery)), minmax(0, 1fr)); gap: var(--s3-space-4); margin: 0; padding: 0; list-style: none; }
.s3-photos--original { align-items: start; }
.s3-photos__figure { margin: 0; }
.s3-photos__link { display: block; overflow: hidden; border-radius: var(--s3-radius-md); background: var(--s3-surface-alt); cursor: zoom-in; }
.s3-photos__link img { display: block; width: 100%; height: auto; object-fit: cover; transition: transform var(--s3-duration-base); }
.s3-photos--square .s3-photos__link img { aspect-ratio: var(--s3-ratio-square); }
.s3-photos--landscape .s3-photos__link img { aspect-ratio: var(--s3-ratio-landscape); }
.s3-photos--portrait .s3-photos__link img { aspect-ratio: var(--s3-ratio-portrait); }
.s3-photos__link:hover img { transform: scale(var(--s3-motion-scale-hover)); }
.s3-photos__link:focus-visible { outline: var(--s3-border-width-ring) solid var(--s3-focus); outline-offset: var(--s3-border-width-ring); }
.s3-photos__caption { margin-top: var(--s3-space-2); font-size: var(--s3-font-size-sm); color: var(--s3-text-muted); }

.s3-photos__dialog { max-width: min(var(--s3-viewport-lightbox), var(--s3-layout-dialog)); max-height: var(--s3-section-gallery-lightbox-height); padding: 0; border: 0; border-radius: var(--s3-radius-lg); background: var(--s3-surface); color: var(--s3-text); overflow: visible; }
.s3-photos__dialog::backdrop { background: var(--s3-backdrop); }
.s3-photos__view { margin: 0; }
.s3-photos__full { display: block; max-width: 100%; max-height: var(--s3-section-gallery-image-height); width: auto; height: auto; margin-inline: auto; border-radius: var(--s3-radius-lg) var(--s3-radius-lg) 0 0; object-fit: contain; }
.s3-photos__view-caption { padding: var(--s3-space-3) var(--s3-space-4); font-size: var(--s3-font-size-sm); }
.s3-photos__view-caption:empty { display: none; }
.s3-photos__close { position: absolute; top: var(--s3-space-3); inset-inline-end: var(--s3-space-3); background: var(--s3-surface); }
.s3-photos__step { position: absolute; top: 50%; transform: translateY(-50%); background: var(--s3-surface); }
.s3-photos__step--prev { inset-inline-start: var(--s3-space-3); }
.s3-photos__step--next { inset-inline-end: var(--s3-space-3); }

@media (prefers-reduced-motion: reduce) {
  .s3-photos__link img { transition: none; }
  .s3-photos__link:hover img { transform: none; }
}
@media (max-width: 991.98px) {
  .s3-photos { grid-template-columns: repeat(min(var(--s3x-cols, var(--s3-columns-gallery)), var(--s3-columns-gallery)), minmax(0, 1fr)); }
}
@media (max-width: 600.98px) {
  .s3-photos { grid-template-columns: repeat(var(--s3-columns-gallery), minmax(0, 1fr)); gap: var(--s3-space-3); }
}
