/*
 * Prisma Listing — structure des widgets de fiche.
 *
 * ⚠️ AUCUNE COULEUR NI TYPOGRAPHIE ICI, VOLONTAIREMENT.
 * Tout cela se règle dans Elementor, widget par widget. Une propriété écrite
 * ici s'imposerait au site d'accueil et rendrait le réglage sans effet, ce qui
 * est exactement le défaut corrigé sur Prisma Agenda le 06/09/2026.
 * Ce fichier ne pose donc que des dispositions et des espacements par défaut.
 */

.pl-entete { display: flex; flex-direction: column; gap: 12px; }
.pl-logo img { display: block; max-width: 100%; height: auto; }
.pl-titre { margin: 0; }
.pl-accroche { margin: 0; }

.pl-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.pl-bouton {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 10px 18px; text-decoration: none; cursor: pointer;
	border: 0; background: transparent; font: inherit;
	transition: filter .15s ease;
}
.pl-bouton:hover, .pl-bouton:focus-visible { text-decoration: none; }

.pl-bloc { margin: 0 0 24px; }
.pl-bloc-titre { margin: 0 0 12px; }

.pl-infos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.pl-infos li { margin: 0; }
.pl-infos a { text-decoration: none; transition: filter .15s ease; }
.pl-infos a:hover { text-decoration: underline; }

.pl-reseaux-titre { margin: 16px 0 8px; }
.pl-reseaux { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.pl-reseaux li { margin: 0; }
.pl-reseau {
	display: inline-flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; text-decoration: none; transition: filter .15s ease;
}
/* Le nom du réseau reste lisible par les lecteurs d'écran, sans s'afficher. */
.pl-reseau-nom {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

.pl-equipements { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.pl-equipements li { margin: 0; min-width: 0; }
.pl-equipement { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; transition: filter .15s ease; }
.pl-equipement-nom { min-width: 0; overflow-wrap: anywhere; }

.pl-horaires { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.pl-horaires li { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin: 0; }
.pl-jour-heures { text-align: right; }
.pl-jour--aujourdhui { padding: 4px 8px; }

@media (max-width: 767px) {
	.pl-equipements { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pl-actions { gap: 8px; }
}

/* --- Icônes ------------------------------------------------------------- */
.pl-icone { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; line-height: 1; }
.pl-icone svg { width: 1em; height: 1em; display: block; }

.pl-bloc-titre { display: flex; align-items: center; gap: 10px; }
.pl-bloc-titre-texte { min-width: 0; }

.pl-infos li { display: flex; align-items: baseline; gap: 10px; }
.pl-infos li > a { min-width: 0; overflow-wrap: anywhere; }

/* Position des icônes dans les boutons. */
.pl-actions--dessus .pl-bouton { flex-direction: column; }
/* Icône seule : le libellé reste lu par les lecteurs d'écran. */
.pl-actions--seule .pl-bouton-texte {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* --- Galerie ------------------------------------------------------------ */
.pl-galerie { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.pl-galerie li { margin: 0; min-width: 0; }
.pl-galerie a, .pl-galerie span { display: block; overflow: hidden; }
.pl-galerie img { display: block; width: 100%; height: 100%; object-fit: cover; transition: filter .15s ease; }

/* --- Vidéo -------------------------------------------------------------- */
.pl-video { position: relative; width: 100%; }
.pl-video iframe, .pl-video video, .pl-video embed, .pl-video object {
	display: block; width: 100%; height: 100%; border: 0;
}
.pl-video--ratio { aspect-ratio: 16 / 9; }

/* --- Fourchette de prix -------------------------------------------------- */
.pl-prix { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.pl-prix-echelle { position: relative; display: inline-block; white-space: nowrap; }
.pl-prix-actifs { position: absolute; inset: 0 auto 0 0; overflow: hidden; white-space: nowrap; }

/* --- À proximité --------------------------------------------------------- */
.pl-proches { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.pl-proches li { margin: 0; min-width: 0; }
.pl-proche { display: flex; flex-direction: column; gap: 8px; text-decoration: none; transition: filter .15s ease; }
.pl-proche-image { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.pl-proche-nom { overflow-wrap: anywhere; }
.pl-proche-distance { display: block; }

@media (max-width: 767px) {
	.pl-galerie { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pl-proches { grid-template-columns: 1fr; }
}

/* --- Étoiles (affichage) ------------------------------------------------- */
.pl-etoiles { position: relative; display: inline-block; white-space: nowrap; line-height: 1; }
.pl-etoiles-pleines { position: absolute; inset: 0 auto 0 0; overflow: hidden; white-space: nowrap; }

.pl-note { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

.pl-repartition { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.pl-repartition li { display: flex; align-items: center; gap: 10px; margin: 0; }
.pl-barre { flex: 1 1 auto; height: 8px; overflow: hidden; }
.pl-barre-pleine { display: block; height: 100%; }
.pl-repartition-palier, .pl-repartition-nombre { flex: 0 0 auto; }

/* --- Avis ---------------------------------------------------------------- */
.pl-avis-liste { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 24px; }
.pl-avis { display: flex; gap: 14px; margin: 0; }
.pl-avis-avatar img { display: block; width: 48px; height: 48px; object-fit: cover; }
.pl-avis-corps { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.pl-avis-entete { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.pl-avis-texte { overflow-wrap: anywhere; }
.pl-avis-texte > :first-child { margin-top: 0; }
.pl-avis-texte > :last-child { margin-bottom: 0; }

/* --- Formulaire d'avis --------------------------------------------------- */
.pl-avis-form { margin-top: 24px; }
.pl-saisie-note { border: 0; margin: 0 0 16px; padding: 0; }
.pl-saisie-note legend { padding: 0; margin: 0 0 6px; }

/* Les étoiles sont écrites de 5 vers 1, d'où le sens inverse à l'affichage. */
.pl-saisie-etoiles { display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: 4px; }
.pl-saisie-radio {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.pl-saisie-etoile { cursor: pointer; line-height: 1; }
.pl-saisie-libelle {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
/* Sans JavaScript, le survol et le focus marquent quand même les étoiles. */
.pl-saisie-etoiles:hover .pl-saisie-etoile:hover,
.pl-saisie-etoiles:hover .pl-saisie-etoile:hover ~ .pl-saisie-etoile,
.pl-saisie-radio:focus-visible + .pl-saisie-etoile { outline-offset: 2px; }
.pl-saisie-radio:focus-visible + .pl-saisie-etoile { outline: 2px solid currentColor; }

/* --- Favori -------------------------------------------------------------- */
.pl-favori {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 10px 18px; cursor: pointer; border: 0; background: transparent;
	font: inherit; text-decoration: none; transition: filter .15s ease;
}
.pl-favori[disabled] { opacity: .6; cursor: wait; }

/* --- Comptes : formulaires ---------------------------------------------- */
/* Structure seulement : couleurs, polices et bordures se règlent dans Elementor. */
.pl-compte { display: flex; flex-direction: column; gap: 16px; }
.pl-form { display: flex; flex-direction: column; gap: 0; margin: 0; }
.pl-form-titre { margin: 0; }
.pl-champ { display: flex; flex-direction: column; gap: 6px; margin: 0 0 16px; min-width: 0; }
.pl-champ--case { flex-direction: row; align-items: center; }
.pl-libelle { display: block; }
.pl-champ--case .pl-libelle, .pl-case, .pl-type { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; }
.pl-saisie { box-sizing: border-box; width: 100%; max-width: 100%; padding: 10px 12px; font: inherit; border: 1px solid; border-color: inherit; }
.pl-saisie:focus { outline: 2px solid; outline-offset: 1px; }
textarea.pl-saisie { resize: vertical; min-height: 140px; }
input[type="file"].pl-saisie { padding: 8px 0; border: 0; }
.pl-aide { display: block; margin: 0; opacity: .8; }
.pl-texte { margin: 0; }

.pl-actions-form { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 8px 0 0; }
.pl-liens-form { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 0; }
.pl-bouton-principal {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 12px 22px; cursor: pointer; border: 0; font: inherit;
	text-decoration: none; transition: filter .15s ease;
}
.pl-lien {
	display: inline; padding: 0; border: 0; background: transparent; font: inherit;
	text-decoration: underline; cursor: pointer; transition: filter .15s ease;
}
.pl-form-ligne { display: inline; margin: 0; }

/* Messages : distingués par un filet et par leur rôle, sans couleur imposée. */
.pl-message { margin: 0; padding: 12px 14px; border-left: 4px solid currentColor; }

/* Pot de miel : hors de l'écran, hors du parcours clavier et des lecteurs d'écran. */
.pl-piege { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Choix du type de compte. */
.pl-types { border: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.pl-types legend { padding: 0; margin: 0 0 8px; }
.pl-type { flex-wrap: wrap; padding: 14px; border: 1px solid; border-color: inherit; }
.pl-type-nom { flex: 1 1 auto; }
.pl-type-texte { flex: 1 1 100%; opacity: .8; }

/* --- Comptes : tableau de bord ------------------------------------------- */
.pl-tableau-entete { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px; }
.pl-onglets { display: flex; flex-wrap: wrap; gap: 24px; border-bottom: 1px solid; border-bottom-color: inherit; margin: 0 0 20px; }
.pl-onglet { display: inline-block; padding: 10px 0; margin-bottom: -1px; border-bottom: 2px solid transparent; text-decoration: none; transition: filter .15s ease; }
.pl-onglet.est-actif { border-bottom-color: currentColor; }
.pl-statut { display: inline-block; padding: 2px 8px; }

.pl-elements { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.pl-element { display: flex; gap: 14px; align-items: flex-start; margin: 0; padding: 14px 0; border-bottom: 1px solid; border-bottom-color: inherit; }
.pl-element-image { flex: 0 0 64px; width: 64px; height: 64px; object-fit: cover; display: block; }
.pl-element-image--vide { opacity: .15; background: currentColor; }
.pl-element-corps { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.pl-element-titre { overflow-wrap: anywhere; text-decoration: none; }
.pl-element-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.pl-element-actions { display: flex; flex-wrap: wrap; gap: 16px; }
.pl-element-texte > :first-child { margin-top: 0; }
.pl-element-texte > :last-child { margin-bottom: 0; }

.pl-avatar { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 16px; }
.pl-avatar img { display: block; width: 96px; height: 96px; object-fit: cover; border-radius: 50%; }
.pl-avatar .pl-champ { flex: 1 1 220px; margin: 0; }
.pl-encart { margin-top: 32px; padding-top: 20px; border-top: 1px solid; border-top-color: inherit; display: flex; flex-direction: column; gap: 10px; }

/* --- Comptes : formulaire de fiche --------------------------------------- */
.pl-groupe { margin: 0 0 28px; padding: 0; border: 0; min-width: 0; }
.pl-groupe-titre { padding: 0; margin: 0 0 14px; }
.pl-cases { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px 16px; }
.pl-horaires-saisie { display: flex; flex-direction: column; gap: 10px; }
.pl-jour-saisie { display: grid; grid-template-columns: 110px minmax(150px, 200px) 1fr; align-items: center; gap: 10px; }
.pl-jour-saisie .pl-saisie { width: auto; }
.pl-creneaux { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.pl-creneaux[hidden] { display: none; }
.pl-vignettes { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 12px; }
.pl-vignettes li { margin: 0; display: flex; flex-direction: column; gap: 4px; }
.pl-vignettes img { display: block; width: 96px; height: 96px; object-fit: cover; }

/* --- Comptes : bouton d'accès -------------------------------------------- */
.pl-acces { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.pl-acces-bouton { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; text-decoration: none; transition: filter .15s ease; }
.pl-acces-avatar { display: block; width: 28px; height: 28px; border-radius: 50%; object-fit: cover; }

@media (max-width: 767px) {
	.pl-types { grid-template-columns: 1fr; }
	.pl-jour-saisie { grid-template-columns: 1fr; gap: 6px; }
	.pl-onglets { gap: 16px; }
}