/*
 * Composant « boîte à icône ».
 *
 * Tout ce qui se règle dans l'éditeur passe par une variable CSS : la feuille reste
 * lisible et rien n'est écrit en dur dans le HTML.
 */

.lc47-boite {
	position: relative;
	display: flex;
	gap: var(--lc47-boite-ecart, 20px);
	padding: var(--lc47-boite-marge, 0);
	background: var(--lc47-boite-fond, transparent);
	border-radius: var(--lc47-boite-rayon, 0);
	color: inherit;
}

.lc47-boite--icone-haut   { flex-direction: column; }
.lc47-boite--icone-gauche { flex-direction: row; align-items: var(--lc47-boite-valign, flex-start); }
.lc47-boite--icone-droite { flex-direction: row-reverse; align-items: var(--lc47-boite-valign, flex-start); }

.lc47-boite--align-gauche { text-align: left; }
.lc47-boite--align-centre { text-align: center; }
.lc47-boite--align-droite { text-align: right; }

.lc47-boite--align-centre.lc47-boite--icone-haut .lc47-boite__icone { align-self: center; }
.lc47-boite--align-droite.lc47-boite--icone-haut .lc47-boite__icone { align-self: flex-end; }

.lc47-boite__icone {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: var(--lc47-boite-icone-boite, auto);
	height: var(--lc47-boite-icone-boite, auto);
	color: var(--lc47-boite-icone-couleur, inherit);
	background: var(--lc47-boite-icone-fond, transparent);
	border-radius: var(--lc47-boite-icone-rayon, 0);
}

.lc47-boite__icone svg,
.lc47-boite__icone i {
	width: var(--lc47-boite-icone-taille, 40px);
	height: var(--lc47-boite-icone-taille, 40px);
	font-size: var(--lc47-boite-icone-taille, 40px);
	fill: currentColor;
}

.lc47-boite__image {
	width: var(--lc47-boite-icone-taille, 40px);
	height: auto;
	display: block;
}

.lc47-boite__corps {
	display: flex;
	flex-direction: column;
	gap: var(--lc47-boite-corps-ecart, 10px);
	min-width: 0; /* sans ça, un mot long fait déborder la carte */
}

.lc47-boite .lc47-boite__titre {
	margin: 0;
	color: var(--lc47-boite-titre-couleur, inherit);
	font-size: var(--lc47-boite-titre-taille, inherit);
	line-height: 1.25;
}

.lc47-boite__texte {
	margin: 0;
	color: var(--lc47-boite-texte-couleur, inherit);
}

.lc47-boite__texte > :first-child { margin-top: 0; }
.lc47-boite__texte > :last-child  { margin-bottom: 0; }

.lc47-boite__lien {
	color: inherit;
	text-decoration: none;
}

/*
 * Lien étendu : le lien du titre recouvre toute la carte. Un seul élément focusable,
 * et la carte entière reste cliquable à la souris.
 */
.lc47-boite--cliquable .lc47-boite__lien::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
}

.lc47-boite.lc47-boite--cliquable:hover .lc47-boite__titre {
	color: var(--lc47-boite-titre-couleur-survol, var(--lc47-boite-titre-couleur, inherit));
}

/* Le focus se voit sur la carte, pas sur le seul mot du titre. */
.lc47-boite--cliquable:focus-within {
	outline: 2px solid var(--lc47-boite-focus, currentColor);
	outline-offset: 3px;
}

.lc47-boite--cliquable .lc47-boite__lien:focus-visible {
	outline: none;
}

/* Le bouton repasse au-dessus du lien étendu, sinon il devient incliquable. */
.lc47-boite__bouton {
	position: relative;
	z-index: 1;
	align-self: var(--lc47-boite-bouton-align, flex-start);
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: var(--lc47-boite-bouton-marge, .6em 1.2em);
	border-radius: var(--lc47-boite-bouton-rayon, 999px);
	background: var(--lc47-boite-bouton-fond, transparent);
	color: var(--lc47-boite-bouton-couleur, inherit);
	border: var(--lc47-boite-bouton-bordure, 1px solid currentColor);
	text-decoration: none;
	font-weight: 600;
	transition: background-color .2s ease, color .2s ease;
}

.lc47-boite--align-centre .lc47-boite__bouton { align-self: center; }
.lc47-boite--align-droite .lc47-boite__bouton { align-self: flex-end; }

.lc47-boite__bouton:hover,
.lc47-boite__bouton:focus-visible {
	background: var(--lc47-boite-bouton-fond-survol, var(--lc47-boite-bouton-fond, transparent));
	color: var(--lc47-boite-bouton-couleur-survol, var(--lc47-boite-bouton-couleur, inherit));
}

.lc47-boite__badge {
	position: absolute;
	top: var(--lc47-boite-badge-haut, 12px);
	right: var(--lc47-boite-badge-droite, 12px);
	z-index: 2;
	padding: .25em .7em;
	border-radius: 999px;
	font-size: .75em;
	font-weight: 700;
	background: var(--lc47-boite-badge-fond, currentColor);
	color: var(--lc47-boite-badge-couleur, #000);
}

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