/* SFTS EXPERIENCE COMPONENT #006 — "Photo Grid Experience"
   Extrait de MT Univers (thème mt-univers, `.photo-grid` + lightbox
   de footer.php) le 2026-09-24. Voir component.php pour le contexte
   complet et la différence assumée avec #002 Gallery Experience.

   Couleurs : jamais de token de marque ici (contrairement à #001/#003) —
   la légende incrustée utilise un dégradé neutre noir/transparent, valable
   sur n'importe quelle photo, aucune teinte client. Cohérent avec #002,
   qui n'a lui non plus aucun paramètre `theme` (voir
   SFTS-EXPERIENCE-COMPONENT-CONTRACT.md, "à démontrer plus tard"). */

.sfts-photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px;
}
.sfts-photo-grid-item {
  position: relative;
  margin: 0;
  overflow: hidden;
}
/* zoom-in seulement quand le lightbox est actif (voir component.php,
   data-lightbox="1") — jamais un curseur qui promet une interaction
   absente. */
.sfts-photo-grid[data-lightbox="1"] .sfts-photo-grid-item { cursor: zoom-in; }
.sfts-photo-grid-item img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  transition: transform 0.5s ease;
}
.sfts-photo-grid-item:hover img { transform: scale(1.045); }
.sfts-photo-grid-item figcaption {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 34px 16px 14px;
  font-size: 0.82rem;
  line-height: 1.35;
  color: #fff;
  background: linear-gradient(to top, rgba(10,14,20,0.82) 0%, rgba(10,14,20,0.38) 60%, rgba(10,14,20,0) 100%);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.sfts-photo-grid-item figcaption strong { color: #fff; }

/* Variante optionnelle "photos épinglées" — jamais active par défaut,
   réglage explicite (voir component.php, args.style). Portée à l'identique
   depuis MT Univers (inspirée d'un lauréat Webby, pennrosefarms.com —
   principe transposable, jamais un gadget copié). */
.sfts-photo-grid--pinned .sfts-photo-grid-item {
  --sfts-pin-rot: -2deg;
  transform: rotate(var(--sfts-pin-rot));
  box-shadow: 0 10px 22px rgba(0,0,0,0.2);
}
.sfts-photo-grid--pinned .sfts-photo-grid-item:nth-child(2n) { --sfts-pin-rot: 2deg; }
.sfts-photo-grid--pinned .sfts-photo-grid-item:nth-child(3n) { --sfts-pin-rot: -3deg; }
.sfts-photo-grid--pinned .sfts-photo-grid-item:nth-child(5n) { --sfts-pin-rot: 3deg; }
.sfts-photo-grid--pinned .sfts-photo-grid-item::before {
  content: "";
  position: absolute;
  top: -10px;
  left: 50%;
  width: 48px;
  height: 20px;
  transform: translateX(-50%);
  background: rgba(0,0,0,0.16);
  border-radius: 3px;
  z-index: 1;
  pointer-events: none;
}

/* Lightbox — zoom vanille, sans librairie, propre à ce composant (jamais
   partagé avec un mécanisme de page, contrairement à l'ancien
   `.sfts-lightbox` de footer.php qui servait plusieurs grilles à la fois
   par sélecteur global — ici scopé par instance via script.js). */
.sfts-photo-grid-lightbox {
  position: fixed; inset: 0; z-index: 1000; background: rgba(10,14,20,0.92);
  display: flex; align-items: center; justify-content: center; padding: 24px;
  opacity: 0; pointer-events: none; transition: opacity 0.25s ease;
}
.sfts-photo-grid-lightbox.is-open { opacity: 1; pointer-events: auto; }
.sfts-photo-grid-lightbox-inner { display: flex; flex-direction: column; align-items: center; max-width: 100%; }
.sfts-photo-grid-lightbox img { max-width: min(92vw, 1100px); max-height: 78vh; object-fit: contain; box-shadow: 0 30px 80px -30px rgba(0,0,0,0.6); display: block; }
.sfts-photo-grid-lightbox figcaption { color: #fff; text-align: center; margin-top: 16px; font-size: 0.92rem; max-width: 700px; opacity: 0.9; }
.sfts-photo-grid-lightbox-close, .sfts-photo-grid-lightbox-prev, .sfts-photo-grid-lightbox-next {
  position: fixed; background: rgba(255,255,255,0.12); border: none; color: #fff; cursor: pointer;
  border-radius: 50%; width: 44px; height: 44px; font-size: 1.3rem; line-height: 1;
  display: flex; align-items: center; justify-content: center; transition: background 0.15s ease;
}
.sfts-photo-grid-lightbox-close:hover, .sfts-photo-grid-lightbox-prev:hover, .sfts-photo-grid-lightbox-next:hover { background: rgba(255,255,255,0.24); }
.sfts-photo-grid-lightbox-close { top: 20px; right: 20px; }
.sfts-photo-grid-lightbox-prev { top: 50%; left: 20px; transform: translateY(-50%); }
.sfts-photo-grid-lightbox-next { top: 50%; right: 20px; transform: translateY(-50%); }
@media (max-width: 700px) { .sfts-photo-grid-lightbox-prev, .sfts-photo-grid-lightbox-next { display: none; } }
@media (prefers-reduced-motion: reduce) {
  .sfts-photo-grid-item, .sfts-photo-grid-item img, .sfts-photo-grid-lightbox { transition: none; }
}
