.chp-planning {
	max-width: 800px;
	margin: 0 auto;
}

.chp-planning-list {
	max-width: 800px;
	margin: 0 auto;
}

#chp-planning-list-body.is-loading {
	opacity: 0.5;
	pointer-events: none;
}

/* Rendu "tableau" (voir CHP_Shortcode::render_print_table()) : masqué à l'écran, affiché uniquement à
   l'impression/export PDF à la place des cartes — voir @media print plus bas. */
.chp-print-table-wrap {
	display: none;
}

/* Titre affiché uniquement à l'impression/export PDF (voir CHP_Shortcode::render_planning()) : masqué
   à l'écran, où le titre de la page (.entry-title) suffit déjà. */
.chp-print-title {
	display: none;
}

/* Bascule Liste / Calendrier */

.chp-view-toggle {
	display: flex;
	gap: 0.4em;
	margin-bottom: 1.2em;
}

.chp-view-toggle-btn {
	padding: 0.5em 1.1em;
	border-radius: 999px;
	background: #eef1f6;
	color: #374151;
	font-size: 0.9em;
	font-weight: 600;
	text-decoration: none;
}

.chp-view-toggle-btn:hover {
	background: #dbe6fd;
}

.chp-view-toggle-btn.is-active {
	background: #2563eb;
	color: #fff;
}

/* Liens iCal / impression */

.chp-export-links {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 0.6em;
	margin-top: 1.5em;
	padding-top: 1.2em;
	border-top: 1px solid #e5e7eb;
}

.chp-export-link {
	display: inline-flex;
	align-items: center;
	background: none;
	border: 1px solid #d1d9e6;
	border-radius: 999px;
	padding: 0.45em 1em;
	font: inherit;
	font-size: 0.85em;
	font-weight: 600;
	color: #374151;
	text-decoration: none;
	cursor: pointer;
}

.chp-export-link:hover {
	border-color: #2563eb;
	color: #2563eb;
}

/* Menu déroulant "Ajouter au calendrier" (5 formats) — <details>/<summary> natif, sans JS.
   Réutilisé en bas du planning (chp-export-links) et après le panneau Lieu d'une carte dépliée
   (pas de position:absolute ici : la carte dépliée utilise overflow:hidden pour son animation
   d'accordéon, un menu en position absolue y serait rogné — voir chp-event-details ci-dessous). */

.chp-addcal-wrap {
	margin-top: 1em;
}

.chp-addcal-summary {
	list-style: none;
}

.chp-addcal-summary::-webkit-details-marker {
	display: none;
}

.chp-addcal-summary::after {
	content: '▾';
	margin-left: 0.4em;
}

.chp-addcal[open] .chp-addcal-summary::after {
	content: '▴';
}

.chp-addcal-list {
	margin: 0.5em 0 0;
	padding: 0.4em;
	list-style: none;
	background: #f9fafb;
	border: 1px solid #e5e7eb;
	border-radius: 10px;
	max-width: 240px;
}

.chp-addcal-list li + li {
	margin-top: 2px;
}

.chp-addcal-list a {
	display: block;
	padding: 0.45em 0.6em;
	border-radius: 6px;
	text-decoration: none;
	color: #1f2937;
	font-size: 0.9em;
}

.chp-addcal-list a:hover {
	background: #eef2ff;
	color: #2563eb;
}

/* Calendrier public (lecture seule) — vue [chp_planning chp_view=calendar] */

.chp-pcal {
	max-width: 1000px;
	margin: 0 auto;
}

#chp-pcal-body.is-loading {
	opacity: 0.5;
	pointer-events: none;
}

.chp-pcal-header {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.2em;
	margin-bottom: 1em;
}

.chp-pcal-month-label {
	margin: 0;
	min-width: 12em;
	text-align: center;
	font-size: 1.3em;
}

.chp-pcal-nav {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.2em;
	height: 2.2em;
	border-radius: 999px;
	background: #eef1f6;
	color: #2563eb;
	font-size: 1.2em;
	text-decoration: none;
	transition: background 0.15s ease;
}

.chp-pcal-nav:hover {
	background: #dbe6fd;
}

.chp-pcal-grid {
	display: grid;
	grid-template-columns: repeat(7, 1fr);
	gap: 6px;
	background: #eff6ff;
	padding: 10px;
	border-radius: 10px;
}

.chp-pcal-dow {
	text-align: center;
	font-size: 0.8em;
	font-weight: 700;
	text-transform: uppercase;
	color: #6b7280;
	padding-bottom: 0.4em;
}

.chp-pcal-cell {
	min-height: 90px;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 8px;
	padding: 0.4em;
	display: flex;
	flex-direction: column;
	gap: 0.3em;
}

.chp-pcal-cell-empty {
	background: transparent;
	border: none;
}

.chp-pcal-cell-today {
	border-color: #2563eb;
	box-shadow: 0 0 0 1px #2563eb;
}

.chp-pcal-cell-weekend {
	background: #f3f4f6;
}

.chp-pcal-cell-holiday {
	background: #fef3c7;
}

.chp-pcal-day-num {
	font-size: 0.85em;
	font-weight: 600;
	color: #374151;
}

.chp-pcal-cell-today .chp-pcal-day-num {
	color: #2563eb;
}

.chp-pcal-cell-events {
	display: flex;
	flex-direction: column;
	gap: 0.25em;
	overflow: hidden;
}

.chp-pcal-pill {
	display: block;
	width: 100%;
	text-align: left;
	border: none;
	border-radius: 5px;
	padding: 0.2em 0.4em;
	color: #fff;
	font-size: 0.75em;
	line-height: 1.25;
	cursor: pointer;
}

.chp-pcal-pill-cancelled {
	text-decoration: line-through;
	opacity: 0.75;
}

.chp-pcal-pill-time {
	font-weight: 700;
	margin-right: 0.3em;
}

.chp-pcal-pill-title {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Modale d'info du calendrier public */

.chp-pcal-modal {
	position: fixed;
	inset: 0;
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
	z-index: 1000;
	transition: opacity 0.15s ease;
}

.chp-pcal-modal.is-open {
	visibility: visible;
	opacity: 1;
	pointer-events: auto;
}

.chp-pcal-modal-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(17, 24, 39, 0.5);
}

.chp-pcal-modal-dialog {
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: min(560px, 92vw);
	max-height: 88vh;
	overflow-y: auto;
	background: #fff;
	border-radius: 10px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
	padding: 1.4em;
}

.chp-pcal-modal-close {
	position: absolute;
	top: 0.8em;
	right: 0.9em;
	background: none;
	border: none;
	font-size: 1.4em;
	line-height: 1;
	color: #6b7280;
	cursor: pointer;
}

.chp-pcal-modal-title {
	margin: 0 0.4em 0.5em 0;
	font-size: 1.15em;
	padding-right: 1.5em;
}

@media (max-width: 480px) {
	.chp-pcal-cell {
		min-height: 60px;
	}
}

.chp-month-heading {
	margin-top: 2em;
	margin-bottom: 0.75em;
	font-size: 1.3em;
	border-bottom: 2px solid #ddd;
	padding-bottom: 0.25em;
}

.chp-month-heading:first-child {
	margin-top: 0;
}

.chp-event {
	display: flex;
	gap: 1em;
	align-items: flex-start;
	padding: 1em;
	margin-bottom: 1em;
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 10px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
	transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.chp-event:hover {
	border-color: #d1d9e6;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.07);
}

.chp-event:last-child {
	margin-bottom: 0;
}

.chp-event-date-badge {
	flex: 0 0 60px;
	text-align: center;
	color: #fff;
	border-radius: 8px;
	padding: 0.5em 0;
	line-height: 1.1;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
}

.chp-event-date-badge .chp-day {
	display: block;
	font-size: 1.4em;
	font-weight: 700;
}

.chp-event-date-badge .chp-month {
	display: block;
	font-size: 0.8em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.85);
}

.chp-event-info {
	flex: 1 1 auto;
	min-width: 0;
}

.chp-event-title {
	margin: 0 0 0.35em;
	font-size: 1.1em;
}

.chp-event-title-toggle {
	background: none;
	border: none;
	padding: 0;
	margin: 0;
	font: inherit;
	font-weight: 600;
	color: #1d4ed8;
	text-align: left;
	cursor: pointer;
}

.chp-event-title-toggle:hover {
	text-decoration: underline;
}

.chp-event-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0 1em;
	font-size: 0.9em;
	color: #555;
	margin-bottom: 0.5em;
}

.chp-event-actions {
	margin-top: 0.25em;
}

.chp-event-toggle {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	background: none;
	border: none;
	padding: 0;
	margin: 0;
	font: inherit;
	font-size: 0.9em;
	font-weight: 600;
	color: #1d4ed8;
	cursor: pointer;
}

.chp-event-toggle:hover {
	text-decoration: underline;
}

.chp-event-toggle-icon {
	display: inline-block;
	transition: transform 0.2s ease;
}

.chp-event-toggle.is-open .chp-event-toggle-icon {
	transform: rotate(180deg);
}

.chp-event-details {
	max-height: 0;
	overflow: hidden;
	opacity: 0;
	transition: max-height 0.3s ease, opacity 0.2s ease;
}

.chp-event-details.is-open {
	max-height: 1200px;
	opacity: 1;
}

.chp-event-details-inner {
	margin-top: 1em;
	padding-top: 1em;
	border-top: 1px dashed #d8dee8;
}

.chp-event-panel {
	background: #f8fafc;
	border: 1px solid #e5e7eb;
	border-radius: 8px;
	padding: 0.85em 1em;
	margin-bottom: 0.85em;
}

.chp-event-panel:last-of-type {
	margin-bottom: 0;
}

.chp-event-panel-title {
	margin: 0 0 0.5em;
	font-size: 0.75em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #6b7280;
}

.chp-event-full-content {
	font-size: 0.95em;
	color: #333;
}

.chp-event-location-name {
	margin: 0 0 0.35em;
	font-size: 0.95em;
	font-weight: 600;
	color: #111827;
	text-transform: none;
}

.chp-event-collapse {
	background: none;
	border: none;
	padding: 0;
	margin-top: 0.5em;
	font: inherit;
	font-size: 0.85em;
	font-weight: 600;
	color: #6b7280;
	cursor: pointer;
}

.chp-event-collapse:hover {
	color: #1d4ed8;
	text-decoration: underline;
}

.chp-event-cancelled-notice {
	display: inline-block;
	background: #fdecea;
	color: #b32d2e;
	font-size: 0.85em;
	padding: 0.2em 0.6em;
	border-radius: 4px;
	margin-bottom: 0.5em;
}

.chp-event-cancelled .chp-event-title {
	text-decoration: line-through;
	opacity: 0.7;
}

.chp-location-details {
	margin-top: 0.5em;
}

.chp-location-map {
	margin: 0.6em 0;
	border-radius: 8px;
	overflow: hidden;
	border: 1px solid #e5e7eb;
}

.chp-location-map iframe {
	display: block;
	width: 100%;
	height: 200px;
	border: 0;
}

.chp-no-events {
	color: #666;
	font-style: italic;
}

.chp-today-row {
	text-align: center;
	margin: 0 0 0.6em;
}

.chp-pagination-today {
	display: inline-flex;
	background: #eef1f6;
	color: #374151;
	box-shadow: none;
}

.chp-pagination-today:hover {
	background: #dbe6fd;
	color: #1d4ed8;
}

.chp-pagination {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1em;
}

.chp-pagination-top {
	margin-bottom: 1.5em;
}

.chp-pagination-bottom {
	margin-top: 1.5em;
}

.chp-pagination-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	padding: 0.55em 1.2em;
	border-radius: 999px;
	background: #878788;
	color: #fff;
	font-size: 0.85em;
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	box-shadow: 0 1px 3px rgba(37, 99, 235, 0.35);
	transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.chp-pagination-btn:hover {
	background: #1d4ed8;
	transform: translateY(-1px);
	box-shadow: 0 3px 8px rgba(37, 99, 235, 0.4);
	color: #fff;
}

.chp-pagination-arrow {
	font-size: 1.1em;
	line-height: 1;
}

.chp-pagination-btn.chp-pagination-disabled {
	background: #eef1f6;
	color: #b0b8c4;
	box-shadow: none;
	cursor: default;
	pointer-events: none;
	transform: none;
}

.chp-pagination-status {
	flex: 0 0 auto;
	font-size: 0.85em;
	font-weight: 600;
	color: #555;
	text-align: center;
}

@media (max-width: 480px) {
	.chp-pagination-label {
		display: none;
	}
	.chp-pagination-btn {
		padding: 0.55em 0.75em;
	}
}

@media (max-width: 480px) {
	.chp-event {
		gap: 0.75em;
	}
	.chp-event-date-badge {
		flex-basis: 48px;
	}
}

/* Impression / export PDF via le navigateur (Ctrl+P) */

/* Réduit la marge haute par défaut du navigateur (souvent ~2,5cm) sur la première page imprimée.
   N'affecte que l'impression/export PDF, sans effet à l'écran. */
@page :first {
	margin-top: 1cm;
}

@media print {
	/* Isole la zone imprimée du reste de la page (bandeau, en-tête, menus, colonne latérale du
	   thème...) en la retirant complètement du flux (display:none, pas juste visibility:hidden) : ne
	   reste que le conteneur racine de la page imprimée (.chp-planning ou .chp-participants — chaque
	   page n'a jamais les deux en même temps, mais la règle doit connaître les deux : un sélecteur
	   ignorant l'un d'eux masquerait tout sur cette page-là, faute de rien reconnaître), ses descendants,
	   et ses ancêtres (nécessaires pour que le conteneur existe encore dans le document, mais eux-mêmes
	   vidés de tout AUTRE enfant que cette chaîne). visibility:hidden seul aurait laissé chaque élément
	   masqué réserver quand même sa hauteur normale dans la mise en page — d'où l'écart auparavant
	   constaté entre le haut de la page imprimée et le titre, exactement la hauteur du bandeau du site
	   resté invisible mais toujours présent dans le flux. Fonctionne quel que soit le thème (sélecteur
	   :has(), supporté par tous les navigateurs modernes utilisés pour imprimer/exporter en PDF), sans
	   dépendre de ses classes. */
	body *:not(.chp-planning):not(.chp-planning *):not(:has(.chp-planning)):not(.chp-participants):not(.chp-participants *):not(:has(.chp-participants)) {
		display: none !important;
	}

	/* Les ancêtres du conteneur racine restent dans le flux (voir ci-dessus) mais leur propre
	   padding/margin (mise en page du thème) doit être neutralisé, sinon il resterait un espace résiduel
	   avant le titre. */
	body *:has(.chp-planning),
	body *:has(.chp-participants) {
		margin: 0 !important;
		padding: 0 !important;
		min-height: 0 !important;
	}

	.chp-planning {
		max-width: none;
		width: 100%;
		margin: 0;
	}

	.chp-print-title {
		display: block;
		margin: 0 0 0.5em;
		font-size: 1.3em;
		font-weight: 600;
	}

	.chp-view-toggle,
	.chp-export-links,
	.chp-addcal-wrap,
	.chp-today-row,
	.chp-pagination,
	.chp-event-actions,
	.chp-event-collapse,
	.chp-event-panel-location,
	.chp-pcal-nav {
		display: none !important;
	}

	/* Anniversaires : utiles à consulter en ligne, mais absents des documents imprimés/PDF */
	.chp-event-birthday,
	.chp-pcal-pill-birthday {
		display: none !important;
	}

	/* on force l'ouverture de tous les panneaux dépliables : l'impression doit contenir
	   toutes les descriptions, pas seulement les cartes dépliées à l'écran au moment du print */
	.chp-event-details {
		max-height: none !important;
		opacity: 1 !important;
		overflow: visible !important;
	}

	.chp-event {
		box-shadow: none;
		border: 1px solid #ccc;
		break-inside: avoid;
	}

	.chp-event-title-toggle {
		color: #000;
	}

	/* Remplace les cartes par le rendu "tableau" (même présentation que l'email "Envoyer le planning",
	   voir CHP_Shortcode::render_print_table()) — les deux boutons d'impression du bas de page passent
	   par ce même rendu. */
	.chp-planning-list {
		display: none !important;
	}

	.chp-print-table-wrap {
		display: block !important;
	}

	.chp-print-table-year {
		font-size: 1em;
		margin: 1.2em 0 0.4em;
	}

	.chp-print-table-year:first-child {
		margin-top: 0;
	}

	.chp-print-table {
		width: 100%;
		border-collapse: collapse;
		margin-bottom: 0.5em;
	}

	.chp-print-table th,
	.chp-print-table td {
		text-align: left;
		padding: 4px 6px;
		border-bottom: 1px solid #ccc;
		font-size: 0.75em;
		white-space: nowrap;
	}

	.chp-print-table th {
		background: #2563eb;
		color: #fff;
	}

	.chp-print-table tr {
		break-inside: avoid;
	}
}

/* Page [chp_my_participations] : demandes de participation du choriste connecté */

.chp-my-participations {
	max-width: 700px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: 1em;
}

.chp-participation-card {
	background: #fff;
	border: 1px solid #e5e7eb;
	border-radius: 10px;
	padding: 1em 1.2em;
}

.chp-participation-title {
	margin: 0 0 0.3em;
	font-size: 1.05em;
}

.chp-participation-status {
	font-weight: 600;
	margin: 0.6em 0;
}

.chp-participation-status--yes {
	color: #16a34a;
}

.chp-participation-status--no {
	color: #9ca3af;
}

.chp-participation-status--pending {
	color: #b45309;
}

.chp-participation-actions {
	display: flex;
	gap: 0.6em;
	flex-wrap: wrap;
}

.chp-participation-btn {
	padding: 0.5em 1.1em;
	border-radius: 999px;
	border: 1px solid #d1d5db;
	background: #f9fafb;
	color: #374151;
	font-weight: 600;
	cursor: pointer;
}

.chp-participation-btn:hover {
	background: #eef1f6;
}

.chp-participation-btn-yes.is-active {
	background: #16a34a;
	border-color: #16a34a;
	color: #fff;
}

.chp-participation-btn-no.is-active {
	background: #9ca3af;
	border-color: #9ca3af;
	color: #fff;
}

/* Page [chp_participants] : tableau des réponses à une demande de participation, pour une page
   WordPress créée par l'utilisateur (voir Planning > Réglages), ouverte depuis le calendrier admin. */

.chp-participants {
	max-width: 700px;
	margin: 0 auto;
}

.chp-participants-title {
	display: flex;
	align-items: center;
	gap: 0.4em;
	margin: 0 0 0.2em;
}

.chp-participants-title-icon {
	font-size: 1.1em;
}

.chp-participants-date {
	color: #6b7280;
	margin: 0 0 1.4em;
}

.chp-participants-subtitle {
	display: flex;
	align-items: center;
	gap: 0.4em;
	margin: 0 0 0.4em;
	font-size: 1em;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #6b7280;
}

.chp-participants-summary {
	font-weight: 600;
	margin: 0 0 0.8em;
}

.chp-participants-filters {
	display: flex; flex-wrap: wrap; gap: 0.5em;
	margin: 0 0 1em;
}

.chp-participants-filter-btn {
	display: inline-flex; align-items: center; gap: 0.35em;
	padding: 0.35em 0.9em;
	border: 1px solid #d1d5db; border-radius: 999px;
	background: #fff; color: #374151;
	font-size: 0.88em; font-weight: 600;
	cursor: pointer;
	transition: background .12s, border-color .12s, color .12s;
}

.chp-participants-filter-btn:hover { background: #f3f4f6; }

.chp-participants-filter-btn.is-active {
	background: #2563eb; border-color: #2563eb; color: #fff;
}

.chp-participants-filter-count {
	opacity: .8;
}

.chp-participants-table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	margin: 1em 0;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

.chp-participants-table tbody tr.chp-participants-group-row td {
	background: #eef2ff;
	color: #3730a3;
	font-weight: 700;
	font-size: 0.85em;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	padding: 0.5em 0.9em;
}

.chp-participants-group-count {
	font-weight: 500;
	text-transform: none;
	opacity: .75;
}

.chp-participants-table th {
	text-align: left;
	padding: 0.6em 0.9em;
	background: #2563eb;
	color: #fff;
	font-weight: 600;
	font-size: 0.9em;
}

.chp-participants-table td {
	text-align: left;
	padding: 0.55em 0.9em;
	border-bottom: 1px solid #e5e7eb;
	background: #fff;
}

.chp-participants-table tbody tr:nth-child(even) td {
	background: #f9fafb;
}

.chp-participants-table tbody tr:last-child td {
	border-bottom: none;
}

.chp-participants-status {
	display: inline-block;
	padding: 0.2em 0.7em;
	border-radius: 999px;
	font-size: 0.85em;
	font-weight: 600;
}

.chp-participants-status--yes {
	background: #dcfce7;
	color: #16a34a;
}

.chp-participants-status--no {
	background: #f3f4f6;
	color: #6b7280;
}

.chp-participants-status--pending {
	background: #fef3c7;
	color: #b45309;
}

.chp-participants-export-btn {
	display: inline-block;
	padding: 0.55em 1.2em;
	background: #2563eb;
	color: #fff;
	text-decoration: none;
	border-radius: 6px;
	font-weight: 600;
}

.chp-participants-export-btn:hover {
	background: #1d4ed8;
}

.chp-participants-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6em;
}

.chp-participants-manual-actions {
	display: inline-flex;
	gap: 0.3em;
}

.chp-participants-manual-btn {
	padding: 0.25em 0.6em;
	border-radius: 6px;
	border: 1px solid #d1d5db;
	background: #fff;
	color: #374151;
	font-size: 0.8em;
	font-weight: 600;
	cursor: pointer;
}

.chp-participants-manual-btn:hover {
	background: #f3f4f6;
}

.chp-participants-manual-btn-yes.is-active {
	background: #16a34a;
	border-color: #16a34a;
	color: #fff;
}

.chp-participants-manual-btn-no.is-active {
	background: #6b7280;
	border-color: #6b7280;
	color: #fff;
}

.chp-participants-btn {
	padding: 0.55em 1.2em;
	border-radius: 6px;
	border: none;
	font-size: 0.9em;
	font-weight: 600;
	cursor: pointer;
}

.chp-participants-btn-primary {
	background: #2563eb;
	color: #fff;
}

.chp-participants-btn-primary:hover {
	background: #1d4ed8;
}

.chp-participants-btn-secondary {
	background: #eef1f6;
	color: #374151;
}

.chp-participants-btn-secondary:hover {
	background: #dde3ee;
}

.chp-participants-btn-success {
	background: #16a34a;
	color: #fff;
}

.chp-participants-btn-success:hover {
	background: #15803d;
}

.chp-participants-mail-input {
	width: 100%;
	max-width: 500px;
	padding: 0.5em 0.7em;
	border: 1px solid #d1d5db;
	border-radius: 6px;
}

/* Modale "Envoyer un mail aux présents" — même technique que .chp-pcal-modal : toujours présente dans
   le DOM (visibility/opacity plutôt que display:none) pour que TinyMCE puisse s'y initialiser. */

.chp-mail-modal {
	position: fixed;
	inset: 0;
	visibility: hidden;
	opacity: 0;
	pointer-events: none;
	z-index: 1000;
	transition: opacity 0.15s ease;
}

.chp-mail-modal.is-open {
	visibility: visible;
	opacity: 1;
	pointer-events: auto;
}

.chp-mail-modal-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(17, 24, 39, 0.5);
}

.chp-mail-modal-dialog {
	position: fixed;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: min(640px, 92vw);
	max-height: 88vh;
	overflow-y: auto;
	background: #fff;
	border-radius: 10px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
	padding: 1.4em;
}

.chp-mail-modal-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-bottom: 0.3em;
}

.chp-mail-modal-header h3 {
	margin: 0;
}

.chp-mail-modal-close {
	background: none;
	border: none;
	font-size: 1.4em;
	line-height: 1;
	color: #6b7280;
	cursor: pointer;
}

.chp-mail-modal-event {
	font-weight: 600;
	margin: 0 0 0.2em;
}

.chp-mail-modal-recipients-note {
	color: #6b7280;
	font-size: 0.9em;
	margin: 0 0 1em;
}

.chp-mail-editor-field {
	margin: 1em 0;
}

.chp-mail-modal-error {
	color: #b32d2e;
	font-size: 0.9em;
}

.chp-mail-modal-actions {
	display: flex;
	justify-content: flex-end;
	gap: 0.6em;
	margin-top: 1em;
}

/* Impression / export PDF de la liste des présents (voir CHP_Participation::render_participants_print_table()) —
   masqué à l'écran, affiché uniquement à l'impression/export PDF (@media print plus bas), même principe
   que .chp-print-table-wrap pour le planning [chp_planning]. */
.chp-participants-print-wrap {
	display: none;
}

@media print {
	/* La règle d'isolation générale (masquer tout ce qui n'est ni .chp-planning ni .chp-participants)
	   est définie une seule fois, dans le premier bloc @media print de ce fichier — elle doit connaître
	   tous les conteneurs racine possibles à la fois, pas un par bloc, sinon chacun masquerait le
	   conteneur de l'autre (bug constaté : la règle du planning masquait entièrement cette page tant
	   qu'elle ignorait .chp-participants). */

	.chp-participants {
		max-width: none;
		width: 100%;
		margin: 0;
	}

	.chp-participants-title,
	.chp-participants-date,
	.chp-participants-subtitle,
	.chp-participants-summary,
	.chp-participants-filters,
	.chp-participants-table,
	.chp-participants-actions {
		display: none !important;
	}

	.chp-participants-print-wrap {
		display: block;
	}

	.chp-participants-print-title {
		margin: 0 0 0.2em;
		font-size: 1.3em;
		font-weight: 600;
	}

	.chp-participants-print-meta {
		margin: 0 0 1em;
		color: #333;
	}

	.chp-participants-print-voice {
		font-size: 1em;
		margin: 1.2em 0 0.4em;
	}

	.chp-participants-print-voice:first-of-type {
		margin-top: 0;
	}

	.chp-participants-print-table {
		width: 100%;
		border-collapse: collapse;
		margin-bottom: 0.5em;
	}

	.chp-participants-print-table th,
	.chp-participants-print-table td {
		text-align: left;
		padding: 4px 6px;
		border-bottom: 1px solid #ccc;
		font-size: 0.8em;
		white-space: nowrap;
	}

	.chp-participants-print-table th {
		background: #2563eb;
		color: #fff;
	}
}
