/* PhotoSwipe Diaporama
   Dans la page : mosaïque de miniatures. Plein écran : diaporama PhotoSwipe
   avec panneau de miniatures à droite (bouton à 9 points). */

.pswd-conteneur {
	margin: 1.5em 0;
	clear: both;
}

.pswd {
	--pswd-ecart: 12px;
	--pswd-accent: #e8b04b;
	/* vignette façon tirage papier : marge blanche autour de la photo, puis un fin liseré */
	--pswd-papier: #fff;               /* couleur de la marge entre la photo et le liseré */
	--pswd-marge: 8px;                 /* largeur de cette marge blanche */
	--pswd-liseret: 1px;               /* épaisseur du liseré */
	--pswd-liseret-couleur: #d4d4d4;   /* couleur du liseré */
	--pswd-case: calc(var(--pswd-taille) + 2 * (var(--pswd-marge) + var(--pswd-liseret)));
}
.pswd *, .pswd *::before, .pswd *::after { box-sizing: border-box; }

.pswd-titre-diaporama {
	margin: 0 0 .5em;
	font-size: 1.1em;
}

/* ---------- Mosaïque de miniatures dans la page ---------- */
.pswd-mosaique {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	/* miniatures à leur taille ; plus petites si la place manque (au moins 3 par ligne) */
	grid-template-columns: repeat(auto-fill, min(var(--pswd-case), calc((100% - 2 * var(--pswd-ecart)) / 3)));
	gap: var(--pswd-ecart);
	/* les colonnes se répartissent sur toute la largeur du conteneur ;
	   la dernière ligne reste alignée sur la grille */
	justify-content: space-between;
	padding: 4px;                       /* laisse voir l'ombre des vignettes du bord */
}
.pswd-mosaique li { margin: 0; padding: 0; }
.pswd-mosaique li::before { content: none; }
.pswd-mosaique a {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 1;
	padding: var(--pswd-marge) !important;
	background: var(--pswd-papier) !important;  /* le thème ne doit pas teinter la marge */
	border: var(--pswd-liseret) solid var(--pswd-liseret-couleur) !important;
	border-radius: 2px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, .18);
	cursor: zoom-in;
	transition: transform .25s ease, box-shadow .25s ease;
}
.pswd-vignette {
	display: block;
	width: 100% !important;
	height: 100% !important;
	max-width: none;
	object-fit: cover;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0;
	box-shadow: none !important;
	background: var(--pswd-papier);
}
.pswd-mosaique a:hover,
.pswd-mosaique a:focus-visible { transform: translateY(-3px); box-shadow: 0 6px 14px rgba(0, 0, 0, .22); }
.pswd-mosaique a:focus-visible { outline: 3px solid var(--pswd-accent); outline-offset: 3px; }

/* titre de la photo au survol de la vignette */
.pswd-vignette-titre,
.pswp__pswd-vignette-titre {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 1.6em .5em 0;
	border-bottom: .45em solid transparent; /* marge basse : le texte coupé n'y déborde pas */
	background: linear-gradient(to top, rgba(0, 0, 0, .8), rgba(0, 0, 0, .45) 60%, transparent);
	background-origin: border-box;
	color: #fff;
	font-size: .8rem;
	line-height: 1.25;
	text-align: left;
	overflow: hidden;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	opacity: 0;
	transform: translateY(.4em);
	transition: opacity .25s ease, transform .25s ease;
	pointer-events: none;
}
.pswd-mosaique a:hover .pswd-vignette-titre,
.pswd-mosaique a:focus-visible .pswd-vignette-titre,
.pswp__pswd-vignette:hover .pswp__pswd-vignette-titre,
.pswp__pswd-vignette:focus-visible .pswp__pswd-vignette-titre {
	opacity: 1;
	transform: none;
}
/* dans la page, le titre reste à l'intérieur du liseré */
.pswd-vignette-titre { left: var(--pswd-marge); right: var(--pswd-marge); bottom: var(--pswd-marge); }

@media (prefers-reduced-motion: reduce) {
	.pswd-mosaique a, .pswd-vignette-titre, .pswp__pswd-vignette-titre { transition: none; }
}

/* ---------- Plein écran PhotoSwipe : protection contre les styles du site ---------- */
/* typo.css de SPIP impose « img { max-width: 100% !important } » sous 640 px :
   dans PhotoSwipe, le conteneur de la photo n'a pas de largeur, la photo tombait à 0 px. */
.pswp img { max-width: none !important; }

/* ---------- Plein écran PhotoSwipe : légende et lecture ---------- */
.pswp__pswd-legende {
	position: absolute;
	left: 50%;
	bottom: 1.2em;
	transform: translateX(-50%);
	max-width: min(90%, 50em);
	padding: .5em 1em;
	background: rgba(0, 0, 0, .55);
	color: #fff;
	border-radius: 4px;
	font-size: .95em;
	line-height: 1.4;
	text-align: center;
}
.pswp__pswd-legende:empty { display: none; }
.pswp__pswd-jauge {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: 4px;
	background: rgba(255, 255, 255, .15);
	opacity: 0;
	transition: opacity .3s;
	pointer-events: none;
	z-index: 20;
}
.pswp--pswd-lecture .pswp__pswd-jauge { opacity: 1; }
.pswp__pswd-jauge span {
	display: block;
	height: 100%;
	background: var(--pswd-accent, #e8b04b);
	transform: scaleX(0);
	transform-origin: left center;
}
.pswp__button--pswd-lecture .pswp__icn { fill: var(--pswp-icon-color, #fff); stroke: var(--pswp-icon-stroke-color, #4f4f4f); stroke-width: var(--pswp-icon-stroke-width, 2px); paint-order: stroke fill; }
.pswp__button--pswd-lecture .pswd-icone-pause { display: none; }
.pswp__button--pswd-lecture[aria-pressed="true"] .pswd-icone-lecture { display: none; }
.pswp__button--pswd-lecture[aria-pressed="true"] .pswd-icone-pause { display: block; }

/* ---------- Panneau de miniatures à droite du plein écran ---------- */
.pswp__button--pswd-voir-mosaique .pswp__icn {
	fill: var(--pswp-icon-color, #fff);
	width: 22px;
	height: 22px;
	top: 19px;
	left: 14px;
}
.pswp__button--pswd-voir-mosaique[aria-pressed="true"] .pswp__icn { fill: var(--pswd-accent, #e8b04b); }

.pswp__pswd-mosaique {
	position: absolute;
	top: 60px;
	right: 0;
	bottom: 0;
	width: var(--pswd-panneau, 0px);
	z-index: 15;
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	scrollbar-width: thin;
	padding: 12px;                     /* = MARGE dans le JavaScript */
	background: #0b0b0b;
	border-left: 1px solid rgba(255, 255, 255, .08);
}
.pswp__pswd-mosaique[hidden] { display: none; }
.pswp__pswd-mosaique ul {
	display: grid;
	grid-template-columns: repeat(var(--pswd-colonnes, 2), minmax(0, var(--pswd-taille, 120px)));
	gap: 8px;                          /* = ECART dans le JavaScript */
	margin: 0;
	padding: 0;
	list-style: none;
}
.pswp__pswd-mosaique li { margin: 0; padding: 0; }
.pswp__pswd-vignette {
	position: relative;
	display: block;
	width: 100%;
	aspect-ratio: 1;
	padding: 0;
	border: 0;
	border-radius: 3px;
	overflow: hidden;
	background: #222;
	cursor: pointer;
	filter: brightness(.6);
	outline: 2px solid transparent;
	outline-offset: -2px;
	transition: filter .2s, outline-color .2s;
}
.pswp__pswd-vignette img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pswp__pswd-vignette:hover, .pswp__pswd-vignette:focus-visible { filter: none; }
.pswp__pswd-vignette:focus-visible { outline-color: #fff; }
.pswp__pswd-vignette[aria-current="true"] { filter: none; outline-color: var(--pswd-accent, #e8b04b); }

/* la photo, la flèche droite et la légende se décalent pour laisser la place au panneau */
.pswp--pswd-mosaique .pswp__button--arrow--next { right: var(--pswd-panneau, 0px); }
.pswp--pswd-mosaique .pswp__pswd-legende { left: calc((100% - var(--pswd-panneau, 0px)) / 2); max-width: min(90%, calc(100% - var(--pswd-panneau, 0px) - 2em), 50em); }

/* ---------- Transition entre deux photos ---------- */
.pswp__pswd-copie {
	position: absolute;
	z-index: 1;
	pointer-events: none;
}
.pswp__pswd-copie img {
	display: block;
	width: 100%;
	height: 100%;
}
