/* ===================================================================
 * Bouton « Épingler » posé sur les images d'un article.
 *
 * Balisage produit par mpn-pin-it.php :
 *
 *   <span class="mpn-pin">
 *     <img …>                          (ou <a><img …></a>)
 *     <a class="mpn-pin-btn" …>Épingler</a>
 *   </span>
 *
 * Le bouton n'apparaît qu'au survol de l'image sur les écrans à souris, et
 * reste affiché sur les écrans tactiles, où le survol n'existe pas.
 * =================================================================== */

.mpn-pin {
	position: relative;
	display: inline-block;
	max-width: 100%;
	/* Un conteneur en ligne réserve la place des jambages sous l'image :
	 * 3 à 4 px de blanc qui décalent tout ce qui suit. */
	line-height: 0;
}

/* Image cliquable : le lien porte l'image, le conteneur porte les deux.
 *
 * Le `:not()` n'est pas une précaution, il est indispensable : le bouton est
 * lui aussi un <a> enfant direct du conteneur. Sans lui, ce sélecteur — plus
 * spécifique que `.mpn-pin-btn` — imposerait `display: block` au bouton, son
 * `::before` redeviendrait une boîte en ligne, où largeur et hauteur sont
 * ignorées, et le logo disparaîtrait sans laisser de trace. */
.mpn-pin > a:not(.mpn-pin-btn) {
	display: block;
	line-height: 0;
}

/* ---- Alignements WordPress -----------------------------------------
 * Déplacés de l'image vers le conteneur par mpn_pin_it_move_alignment().
 * Les valeurs reprennent celles de la feuille par défaut de WordPress.
 * ------------------------------------------------------------------- */

.mpn-pin.alignleft {
	float: left;
	margin: 0 1.5em 1em 0;
}

.mpn-pin.alignright {
	float: right;
	margin: 0 0 1em 1.5em;
}

.mpn-pin.aligncenter {
	display: block;
	/* Sans cela, le conteneur occuperait toute la largeur disponible et le
	 * bouton se poserait dans le vide, loin du bord de l'image. */
	width: -moz-fit-content;
	width: fit-content;
	margin-left: auto;
	margin-right: auto;
}

/* ---- Le bouton ---------------------------------------------------- */

.mpn-pin-btn {
	position: absolute;
	top: 12px;
	right: 12px;
	z-index: 2;

	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 14px 8px 11px;
	border-radius: 999px;

	background-color: #e60023;
	color: #fff;
	font-family: inherit;
	font-size: 13px;
	font-weight: 600;
	line-height: 1;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: 0 2px 10px rgba(0, 0, 0, .3);

	/* Masqué au repos : la photo passe avant le bouton.
	 *
	 * Par l'opacité seule, et non par `visibility` ou `display` : le bouton
	 * reste ainsi dans l'ordre de tabulation, et la règle `:focus-within`
	 * plus bas le fait apparaître quand on l'atteint au clavier. Masqué pour
	 * de bon, il serait tout bonnement inatteignable sans souris.
	 *
	 * `pointer-events` évite en contrepartie qu'un clic dans le vide, sur un
	 * bouton invisible, ouvre Pinterest. */
	opacity: 0;
	pointer-events: none;
	transform: translateY(-4px);
	transition: opacity .15s ease, transform .15s ease;
}

.mpn-pin-btn::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	/* Logo Pinterest, en blanc. En ligne dans le CSS plutôt qu'en fichier :
	 * une requête HTTP de moins pour 700 octets. */
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M12 0C5.373 0 0 5.372 0 12c0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.168 1.777 2.168 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.74a.36.36 0 0 1 .083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.632-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146A12 12 0 0 0 12 24c6.627 0 12-5.373 12-12S18.627 0 12 0'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* Réaffirmé pour passer devant les styles de lien du thème, qui visent
 * `.blog-details-content a` — plus spécifique que `.mpn-pin-btn` seul. */
.mpn-pin .mpn-pin-btn,
.mpn-pin .mpn-pin-btn:hover,
.mpn-pin .mpn-pin-btn:focus {
	color: #fff;
	text-decoration: none;
	border: 0;
}

.mpn-pin:hover .mpn-pin-btn,
.mpn-pin:focus-within .mpn-pin-btn {
	opacity: 1;
	pointer-events: auto;
	transform: none;
}

.mpn-pin .mpn-pin-btn:hover,
.mpn-pin .mpn-pin-btn:focus-visible {
	background-color: #ad081b;
}

.mpn-pin .mpn-pin-btn:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 2px;
}

/* ---- Galerie de blocs ----------------------------------------------
 * La galerie recadre ses vignettes avec ce sélecteur, dans la feuille du
 * cœur (wp-includes/blocks/gallery/style.min.css) :
 *
 *   .wp-block-gallery.has-nested-images.is-cropped
 *     figure.wp-block-image:not(#individual-image) a,
 *     … img { flex: 1 0 0%; height: 100%; object-fit: cover; width: 100% }
 *
 * Il vise TOUT <a> descendant, donc le bouton, qui prend alors la taille de
 * l'image — et son `border-radius: 999px` en fait un gros rond rouge. Le
 * `:not(#individual-image)` donne à ce sélecteur le poids d'un identifiant :
 * `!important` est le seul moyen de repasser devant.
 * ------------------------------------------------------------------- */

.mpn-pin .mpn-pin-btn {
	width: auto !important;
	height: auto !important;
}

/* Le conteneur s'intercale entre la figure et l'image, là où la galerie
 * attend un enfant direct. Ces deux règles lui font tenir le rôle du <div>
 * que le cœur y met lui-même — sans quoi l'image perd son recadrage carré et
 * la vignette ne remplit plus sa case. */
.wp-block-gallery.has-nested-images figure.wp-block-image > .mpn-pin {
	display: block;
	flex-direction: column;
	flex-grow: 1;
	margin: 0;
}

.wp-block-gallery.has-nested-images.is-cropped figure.wp-block-image > .mpn-pin {
	display: flex;
}

/* Écrans tactiles : aucun survol possible, le bouton reste visible. */
@media (hover: none) {

	.mpn-pin-btn {
		opacity: 1;
		pointer-events: auto;
		transform: none;
		/* Un peu plus discret, puisqu'il ne s'efface jamais. */
		background-color: rgba(230, 0, 35, .92);
	}
}

@media (prefers-reduced-motion: reduce) {

	.mpn-pin-btn {
		transition: none;
	}
}
