/*
* @Author: MathieuMari
* @Date:   2020-03-14 22:13:11
* @Last Modified by:   MathieuMari
* @Last Modified time: 2021-11-16 12:38:18
*/

/*
	Voir les docs suivantes:
	https://bootstrapcreative.com/bootstrap-4-media-queries/

	Liste des curseurs:
	https://developer.mozilla.org/fr/docs/Web/CSS/cursor
*/

@charset "UTF-8";

/* ---------------------------------------------------------------------------- Media ALL */
@media all {
	/* ---------------------------------------------------- Flex système */
	/*
				Voir: https://developer.mozilla.org/fr/docs/Web/CSS/flex
			*/
	.mmFlexContainer {
		display: flex !important;
		flex-direction: row !important;
	}

	.mmFlexContainer > .mmFlexItem {
		flex: auto !important;
	}

	/* ---------------------------------------------------- mm_mailto */
	[mm_mailto] > span.arobase {
		display: inline !important;
	}

	span.arobase::before {
		content: '\000040';
	}

	/* ---------------------------------------------------- Textes */
	.tt_l {
		text-transform: lowercase !important;
	}
	.tt_u {
		text-transform: uppercase !important;
	}
	.tt_c {
		text-transform: capitalize !important;
	}

	.td_u {
		text-decoration: underline !important;
	}

	.fw_b {
		font-weight: bold !important;
	}

	.mmConserveLines {
		white-space: pre-line !important; /* Permet de conserver les sauts de ligne, intéressant pour les mentions légales par exemple */
	}

	/* ---------------------------------------------------- Root */
	/* Voir: https://developer.mozilla.org/fr/docs/Web/CSS/var() */
	:root {
		--mm_red: #d70028;

		--mm_color_success: #50d38a;
		--mm_color_alert: #ff9d09;
		--mm_color_error: #ec3b57;

		--mm_color_rgba01: rgba(0, 0, 0, 0.1);

		/* Pour les couleurs spécifiques du système de champs manquants mmFormV2_missingFieldsPopup. */
		--mm-popup-primary-color-start: #00a34a;
		--mm-popup-primary-color-end: #00a34a;
		--mm-popup-primary-shadow: rgba(0, 163, 74, 0.3);
		--mm-popup-primary-shadow-hover: rgba(0, 163, 74, 0.4);
		--mm-popup-primary-shadow-pulse: rgba(0, 163, 74, 0.3);
		--mm-popup-primary-shadow-pulse-active: rgba(0, 163, 74, 0.4);

		/* SweetAlert2 — tokens (surcharge thème via --mm-swal-*) */
		--mm-swal-backdrop: rgba(10, 18, 30, 0.42);
		--mm-swal-backdrop-filter: blur(10px) saturate(118%);
		--mm-swal-bg: #fff;
		--mm-swal-border: rgba(15, 23, 42, 0.08);
		--mm-swal-shadow: 0 24px 80px rgba(15, 23, 42, 0.16), 0 8px 24px rgba(15, 23, 42, 0.08);
		--mm-swal-title: #0f172a;
		--mm-swal-text: #475569;
		--mm-swal-muted: #64748b;
		--mm-swal-radius: 24px;
		--mm-swal-cancel-bg: #f1f5f9;
		--mm-swal-cancel-color: #475569;
		--mm-swal-input-bg: #f8fafc;
		--mm-swal-input-border: rgba(15, 23, 42, 0.12);
		--mm-swal-input-focus: rgba(0, 163, 74, 0.35);

		/* Placeholders — light mode (estompés, distincts du texte saisi) */
		--mm-placeholder-color: rgba(0, 0, 0, 0.14);
		--mm-placeholder-opacity: 1;
		--mm-placeholder-font-weight: 400;

		/* Champs obligatoires — surcharge thème via --mm-required-* */
		--mm-required-color: var(--mm_color_error, #ec3b57);
		--mm-required-size: 0.82em;
		--mm-required-gap: 0.2em;
	}

	[data-bs-theme='dark'] {
		--mm-placeholder-color: rgba(255, 255, 255, 0.16);

		/* SweetAlert2 — dark */
		--mm-swal-backdrop: rgba(2, 6, 12, 0.58);
		--mm-swal-bg: #1e293b;
		--mm-swal-border: rgba(255, 255, 255, 0.08);
		--mm-swal-shadow: 0 32px 96px rgba(0, 0, 0, 0.55), 0 12px 32px rgba(0, 0, 0, 0.35);
		--mm-swal-title: #f8fafc;
		--mm-swal-text: #cbd5e1;
		--mm-swal-muted: #94a3b8;
		--mm-swal-cancel-bg: rgba(255, 255, 255, 0.06);
		--mm-swal-cancel-color: #cbd5e1;
		--mm-swal-input-bg: #0f172a;
		--mm-swal-input-border: rgba(255, 255, 255, 0.12);
		--mm-swal-input-focus: rgba(0, 161, 255, 0.45);
	}

	/* ---------------------------------------------------- Background */
	.backgroundSizeCover {
		-webkit-background-size: cover !important;
		-moz-background-size: cover !important;
		-o-background-size: cover !important;
		background-size: cover !important;
	}

	/* ---------------------------------------------------- Couleurs */
	.reverseColor {
		filter: invert(100%);
	}

	/* ---------------------------------------------------- ScrollBar */
	body.hideScrollBar {
		overflow: hidden;
	}

	/* ---------------------------------------------------- Disabled */
	[mm_disabled] {
		cursor: not-allowed !important;
	}

	/* ---------------------------------------------------- Ajax (loader) */
	#mm_ajax_loader {
		display: none;
		background: rgba(0, 0, 0, 0.6);
		position: fixed;
		width: 100%;
		height: 100%;
		z-index: 999999999;
		top: 0 !important;
	}

	#mm_ajax_loader div {
		text-align: center;
		position: absolute;
		width: calc(100% - 50px);
		left: 50%;
		top: 50%;
		transform: translate(-50%, -50%);
	}

	#mm_ajax_loader div span {
		font-size: 25px;
		color: white;
		padding: 10px;
	}

	/* ---------------------------------------------------- owl-caroussel */
	button.mm-owl_prev,
	button.mm-owl_next {
		border: 0px;
	}

	/* ---------------------------------------------------- Dimensions */
	.w100 {
		width: 100% !important;
	}

	/* ---------------------------------------------------- Génériques */
	.block {
		display: block !important;
	}
	.floatLeft {
		float: left !important;
	}

	.none {
		display: none !important;
	}
	.noneDisabled.noneDisabled {
		display: initial !important;
	}

	.initial {
		display: initial !important;
	}

	.noMargin {
		margin: 0px !important;
	}

	.relative {
		position: relative;
	}

	.cursorPointer {
		cursor: pointer !important;
	}

	[mm] {
		-webkit-transition: all 0.5s ease-in-out;
		-moz-transition: all 0.5s ease-in-out;
		-o-transition: all 0.5s ease-in-out;
		-ms-transition: all 0.5s ease-in-out;
	}

	[mm_send],
	[mm_send_confirm],
	[mm_update],
	[mm-toggle] {
		cursor: pointer !important;
	}

	button:focus {
		outline: 0 !important;
	}

	.noSelect {
		-webkit-user-select: none !important;
		-moz-user-select: none !important;
		-ms-user-select: none !important;
		user-select: none !important;
	}

	/* ---------------------------------------------------- Formulaires */
	::placeholder {
		color: var(--mm-placeholder-color) !important;
		opacity: var(--mm-placeholder-opacity);
		font-weight: var(--mm-placeholder-font-weight);
	}
	::-webkit-input-placeholder {
		color: var(--mm-placeholder-color) !important;
		opacity: var(--mm-placeholder-opacity);
		font-weight: var(--mm-placeholder-font-weight);
	}
	::-moz-placeholder {
		color: var(--mm-placeholder-color) !important;
		opacity: var(--mm-placeholder-opacity);
		font-weight: var(--mm-placeholder-font-weight);
	}
	:-ms-input-placeholder {
		color: var(--mm-placeholder-color) !important;
		opacity: var(--mm-placeholder-opacity);
		font-weight: var(--mm-placeholder-font-weight);
	}
	::-ms-input-placeholder {
		color: var(--mm-placeholder-color) !important;
		opacity: var(--mm-placeholder-opacity);
		font-weight: var(--mm-placeholder-font-weight);
	}

	input.flatpickr-input:read-only {
		cursor: pointer !important;
	}

	input.mm_error,
	select.mm_error,
	textarea.mm_error,
	div.mm_error,
	input.mm_errorV2,
	select.mm_errorV2,
	textarea.mm_errorV2,
	div.mm_errorV2 {
		border-color: var(--mm_red, red) !important;
	}

	input[type='checkbox'].mm_errorV2 {
		background: red;
	}

	input.mm_error::-webkit-input-placeholder,
	textarea.mm_error::-webkit-input-placeholder,
	input.mm_errorV2::-webkit-input-placeholder,
	textarea.mm_errorV2::-webkit-input-placeholder {
		color: var(--mm_red, red) !important;
	}

	label.mm_error,
	span.mm_error,
	label.mm_errorV2,
	span.mm_errorV2 {
		color: var(--mm_red, red) !important;
	}

	select.mm_errorV2 {
		color: var(--mm_red, red) !important;
	}

	/* ---------------------------------------------------- Champs obligatoires [mm] (auto Maestra) */
	/* Le marqueur est rendu via ::after sur le label (aucun noeud DOM créé). */
	/* Le " / \"\" " fournit un texte alternatif vide => marqueur ignoré par les lecteurs d'écran (aria-required porte le sens). */
	label.mm-field-required::after {
		content: "*" / "";
		margin-inline-start: var(--mm-required-gap);
		color: var(--mm-required-color);
		font-size: var(--mm-required-size);
		font-weight: 600;
		vertical-align: baseline;
	}

	/* Fallback sans label : * discret dans le coin du conteneur du champ */
	.mm-field-wrap-required {
		position: relative;
	}

	.mm-field-wrap-required::before {
		content: "*";
		position: absolute;
		top: 0.35rem;
		inset-inline-end: 0.5rem;
		color: var(--mm-required-color);
		font-size: var(--mm-required-size);
		font-weight: 600;
		line-height: 1;
		opacity: 0.55;
		pointer-events: none;
		z-index: 2;
	}

	/* ---------------------------------------------------- Validation [mm_validate] */
	input.mm_validate_invalid,
	select.mm_validate_invalid,
	textarea.mm_validate_invalid {
		background-color: rgba(220, 53, 69, 0.2) !important;
		border: 1px solid rgba(220, 53, 69, 0.5) !important;
	}

	/* ---------------------------------------------------- Popup [sweetAlert2] — Maestra 2026 */
	/* Backdrop plein écran (évite la bande verticale si le container SWAL est contraint) */
	html.swal2-shown:not(.swal2-toast-shown)::before {
		content: '';
		position: fixed;
		inset: 0;
		z-index: 1059;
		background-color: var(--mm-swal-backdrop);
		-webkit-backdrop-filter: var(--mm-swal-backdrop-filter);
		backdrop-filter: var(--mm-swal-backdrop-filter);
		pointer-events: none;
	}

	html:not(.swal2-toast-shown) .swal2-container.swal2-backdrop-show:not(.swal2-top-end):not(.swal2-top-start):not(.swal2-top) {
		position: fixed !important;
		inset: 0 !important;
		width: 100vw !important;
		height: 100dvh !important;
		max-width: none !important;
		background: transparent !important;
		-webkit-backdrop-filter: none !important;
		backdrop-filter: none !important;
	}

	/* Toast : toujours au-dessus de tout (loader ajax, modales plugins, dropdowns, tooltips…).
	   On cible le container qui porte un .swal2-toast pour ne jamais impacter les popups modales. */
	.swal2-container:has(.swal2-toast) {
		z-index: 2147483647 !important;
	}

	/* Toast : neutralise la typo <h2> du thème projet (line-height et letter-spacing hérités
	   cassent le message en deux lignes et gonflent la hauteur du toast). */
	.swal2-popup.swal2-toast .swal2-title,
	.swal2-popup.swal2-toast .swal2-html-container {
		font-size: 0.95rem !important;
		line-height: 1.35 !important;
		letter-spacing: normal !important;
		font-weight: 500 !important;
		text-transform: none !important;
	}

	/* Toast : largeur un peu plus généreuse que les 360px SweetAlert2, pour les messages longs. */
	body.swal2-toast-shown .swal2-container {
		width: 400px !important;
		max-width: 100% !important;
	}

	/* Toast WebPush : le logo du plugin émetteur remplace le glyphe SweetAlert */
	.swal2-popup.swal2-toast .swal2-icon.mm-swal-icon--webpush {
		border: none !important;
		background: transparent !important;
		width: 2.25rem !important;
		height: 2.25rem !important;
		min-width: 2.25rem;
		margin: 0 0.6rem 0 0 !important;
		display: flex !important;
		align-items: center;
		justify-content: center;
		overflow: visible;
	}

	.swal2-popup.swal2-toast .swal2-icon.mm-swal-icon--webpush .swal2-icon-content {
		display: flex;
		align-items: center;
		justify-content: center;
		width: 100%;
		height: 100%;
		font-size: 0;
		line-height: 0;
	}

	.mm-webpush-toast__logo {
		width: 2.25rem;
		height: 2.25rem;
		object-fit: contain;
		border-radius: 0.5rem;
	}

	.mm-webpush-toast {
		display: flex;
		flex-direction: column;
		gap: 0.1rem;
		text-align: left;
		line-height: 1.35;
	}

	.mm-webpush-toast__brand {
		font-size: 0.7rem;
		font-weight: 600;
		text-transform: uppercase;
		letter-spacing: 0.04em;
		opacity: 0.6;
	}

	.mm-webpush-toast__headline {
		font-size: 0.95rem;
		font-weight: 700;
	}

	.mm-webpush-toast__message {
		font-size: 0.85rem;
		font-weight: 400;
		opacity: 0.85;
	}

	.swal2-popup:not(.swal2-toast) {
		font-family: system-ui, -apple-system, 'Segoe UI', sans-serif;
		background: var(--mm-swal-bg) !important;
		border: 1px solid var(--mm-swal-border) !important;
		border-radius: var(--mm-swal-radius) !important;
		box-shadow: var(--mm-swal-shadow) !important;
		padding: 1.75rem;
		max-width: min(92vw, 32rem);
		color: var(--mm-swal-text);
	}

	.swal2-popup:not(.swal2-toast) .swal2-title {
		color: var(--mm-swal-title);
		font-size: 1.35rem;
		font-weight: 700;
		line-height: 1.3;
		letter-spacing: -0.02em;
		margin: 0 0 0.35rem;
		padding: 0;
	}

	.swal2-popup:not(.swal2-toast) .swal2-html-container,
	.swal2-popup:not(.swal2-toast) #swal2-content {
		color: var(--mm-swal-text);
		font-size: 0.975rem;
		line-height: 1.6;
	}

	.swal2-popup:not(.swal2-toast) .swal2-icon {
		width: 4rem;
		height: 4rem;
		margin: 0.25rem auto 1rem;
		border-width: 2.5px;
	}

	/* Icône corbeille animée (suppression) — best design 2026 */
	.swal2-popup .swal2-icon.mm-swal-icon--delete {
		border: none !important;
		background-color: transparent !important;
		width: 5rem !important;
		height: 5rem !important;
		margin: 0.5rem auto 1.25rem !important;
		position: relative;
		display: flex !important;
		align-items: center;
		justify-content: center;
		overflow: visible;
		animation: mm-trash-pop 0.5s cubic-bezier(0.22, 1, 0.36, 1) both !important;
	}

	/* Badge circulaire rouge + halo pulsé */
	.swal2-popup .swal2-icon.mm-swal-icon--delete::before {
		content: '';
		position: absolute;
		inset: 0;
		z-index: 0;
		border-radius: 50%;
		background: radial-gradient(circle at 50% 42%, rgba(239, 68, 68, 0.20), rgba(239, 68, 68, 0.05) 72%);
		box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.30);
		animation: mm-trash-glow 2.6s ease-out 0.5s infinite;
	}

	.swal2-popup .swal2-icon.mm-swal-icon--delete .swal2-icon-content {
		position: relative;
		z-index: 1;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 100%;
		height: 100%;
		font-size: 0;
		line-height: 0;
	}

	.mm-trash {
		display: inline-flex;
		width: 2.7rem;
		height: 2.7rem;
		color: #ef4444;
	}

	.mm-trash__svg {
		width: 100%;
		height: 100%;
		overflow: visible;
		filter: drop-shadow(0 2px 4px rgba(239, 68, 68, 0.25));
	}

	.mm-trash__lid {
		transform-box: fill-box;
		transform-origin: 85% 100%;
		animation: mm-trash-lid 2.6s ease-in-out 0.5s infinite;
	}

	.mm-trash__can {
		transform-box: fill-box;
		transform-origin: 50% 100%;
		animation: mm-trash-shake 2.6s ease-in-out 0.5s infinite;
	}

	[data-bs-theme='dark'] .mm-trash {
		color: #f87171;
	}

	[data-bs-theme='dark'] .swal2-popup .swal2-icon.mm-swal-icon--delete::before {
		background: radial-gradient(circle at 50% 42%, rgba(248, 113, 113, 0.22), rgba(248, 113, 113, 0.06) 72%);
		box-shadow: 0 0 0 0 rgba(248, 113, 113, 0.32);
	}

	@keyframes mm-trash-pop {
		0% {
			transform: scale(0.5);
			opacity: 0;
		}
		55% {
			transform: scale(1.08);
			opacity: 1;
		}
		100% {
			transform: scale(1);
			opacity: 1;
		}
	}

	@keyframes mm-trash-glow {
		0% {
			box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.30);
		}
		70% {
			box-shadow: 0 0 0 12px rgba(239, 68, 68, 0);
		}
		100% {
			box-shadow: 0 0 0 0 rgba(239, 68, 68, 0);
		}
	}

	@keyframes mm-trash-lid {
		0%, 8% {
			transform: rotate(0deg);
		}
		18%, 30% {
			transform: rotate(20deg) translateY(-0.5px);
		}
		42%, 100% {
			transform: rotate(0deg);
		}
	}

	@keyframes mm-trash-shake {
		0%, 16% {
			transform: rotate(0deg);
		}
		20% {
			transform: rotate(-3.5deg);
		}
		24% {
			transform: rotate(3deg);
		}
		28% {
			transform: rotate(-2deg);
		}
		32%, 100% {
			transform: rotate(0deg);
		}
	}

	/* Icône crayon animée (modification) — best design 2026 */
	.swal2-popup .swal2-icon.mm-swal-icon--edit {
		border: none !important;
		background-color: transparent !important;
		width: 5rem !important;
		height: 5rem !important;
		margin: 0.5rem auto 1.25rem !important;
		position: relative;
		display: flex !important;
		align-items: center;
		justify-content: center;
		overflow: visible;
		animation: mm-trash-pop 0.5s cubic-bezier(0.22, 1, 0.36, 1) both !important;
	}

	/* Badge circulaire bleu + halo pulsé */
	.swal2-popup .swal2-icon.mm-swal-icon--edit::before {
		content: '';
		position: absolute;
		inset: 0;
		z-index: 0;
		border-radius: 50%;
		background: radial-gradient(circle at 50% 42%, rgba(59, 130, 246, 0.20), rgba(59, 130, 246, 0.05) 72%);
		box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.30);
		animation: mm-edit-glow 2.6s ease-out 0.5s infinite;
	}

	.swal2-popup .swal2-icon.mm-swal-icon--edit .swal2-icon-content {
		position: relative;
		z-index: 1;
		display: flex;
		align-items: center;
		justify-content: center;
		width: 100%;
		height: 100%;
		font-size: 0;
		line-height: 0;
	}

	.mm-edit {
		display: inline-flex;
		width: 2.6rem;
		height: 2.6rem;
		color: #3b82f6;
	}

	.mm-edit__svg {
		width: 100%;
		height: 100%;
		overflow: visible;
		filter: drop-shadow(0 2px 4px rgba(59, 130, 246, 0.25));
	}

	.mm-edit__pen {
		transform-box: fill-box;
		transform-origin: 8% 92%;
		animation: mm-edit-pen 2.6s ease-in-out 0.5s infinite;
	}

	.mm-edit__line {
		stroke-dasharray: 9;
		stroke-dashoffset: 0;
		animation: mm-edit-line 2.6s ease-in-out 0.5s infinite;
	}

	[data-bs-theme='dark'] .mm-edit {
		color: #60a5fa;
	}

	[data-bs-theme='dark'] .swal2-popup .swal2-icon.mm-swal-icon--edit::before {
		background: radial-gradient(circle at 50% 42%, rgba(96, 165, 250, 0.22), rgba(96, 165, 250, 0.06) 72%);
		box-shadow: 0 0 0 0 rgba(96, 165, 250, 0.32);
	}

	@keyframes mm-edit-glow {
		0% {
			box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.30);
		}
		70% {
			box-shadow: 0 0 0 12px rgba(59, 130, 246, 0);
		}
		100% {
			box-shadow: 0 0 0 0 rgba(59, 130, 246, 0);
		}
	}

	@keyframes mm-edit-pen {
		0%, 10% {
			transform: translate(0, 0) rotate(0deg);
		}
		28% {
			transform: translate(-1px, 1px) rotate(-5deg);
		}
		46% {
			transform: translate(0.8px, -0.8px) rotate(3deg);
		}
		62% {
			transform: translate(-0.6px, 0.6px) rotate(-2deg);
		}
		78%, 100% {
			transform: translate(0, 0) rotate(0deg);
		}
	}

	@keyframes mm-edit-line {
		0%, 12% {
			stroke-dashoffset: 9;
			opacity: 0;
		}
		22% {
			opacity: 1;
		}
		58% {
			stroke-dashoffset: 0;
			opacity: 1;
		}
		82% {
			stroke-dashoffset: 0;
			opacity: 1;
		}
		92% {
			opacity: 0;
		}
		100% {
			stroke-dashoffset: 9;
			opacity: 0;
		}
	}

	@media (prefers-reduced-motion: reduce) {
		.swal2-popup .swal2-icon.mm-swal-icon--delete,
		.swal2-popup .swal2-icon.mm-swal-icon--delete::before,
		.mm-trash__lid,
		.mm-trash__can,
		.swal2-popup .swal2-icon.mm-swal-icon--edit,
		.swal2-popup .swal2-icon.mm-swal-icon--edit::before,
		.mm-edit__pen,
		.mm-edit__line {
			animation: none !important;
		}

		.mm-edit__line {
			stroke-dashoffset: 0;
			opacity: 1;
		}
	}

	.swal2-popup:not(.swal2-toast) .swal2-actions {
		gap: 0.65rem;
		margin-top: 1.35rem;
		width: 100%;
	}

	.swal2-popup:not(.swal2-toast) .swal2-confirm,
	.swal2-popup:not(.swal2-toast) .btn-success {
		background: linear-gradient(135deg, var(--mm-popup-primary-color-start), var(--mm-popup-primary-color-end)) !important;
		border: none !important;
		border-radius: 12px;
		padding: 0.72rem 1.5rem;
		font-size: 0.925rem;
		font-weight: 600;
		color: #fff !important;
		box-shadow: 0 4px 16px var(--mm-popup-primary-shadow) !important;
		min-width: 7.5rem;
	}

	.swal2-popup:not(.swal2-toast) .swal2-cancel,
	.swal2-popup:not(.swal2-toast) .btn-danger {
		background: var(--mm-swal-cancel-bg) !important;
		border: 1px solid var(--mm-swal-border) !important;
		border-radius: 12px;
		padding: 0.72rem 1.5rem;
		font-size: 0.925rem;
		font-weight: 600;
		color: var(--mm-swal-cancel-color) !important;
		box-shadow: none !important;
		min-width: 7.5rem;
	}

	.swal2-popup:not(.swal2-toast) .swal2-input,
	.swal2-popup:not(.swal2-toast) .swal2-textarea,
	.swal2-popup:not(.swal2-toast) .swal2-select {
		background: var(--mm-swal-input-bg);
		border: 1px solid var(--mm-swal-input-border);
		border-radius: 12px;
		color: var(--mm-swal-title);
		margin-top: 0.75rem;
		padding: 0.75rem 1rem;
	}

	.swal2-popup:not(.swal2-toast) .swal2-input:focus,
	.swal2-popup:not(.swal2-toast) .swal2-textarea:focus,
	.swal2-popup:not(.swal2-toast) .swal2-select:focus {
		border-color: var(--mm-popup-primary-color-start);
		box-shadow: 0 0 0 3px var(--mm-swal-input-focus);
	}

	.swal2-top-end h2.swal2-title {
		text-align: initial;
	}

	#swal2-content > ol.mm_liste {
		display: inline-block !important;
		text-align: left !important;
		padding: 0px 0px 0px 0px !important;
		margin: 20px 0px 0px 0px !important;
		list-style-type: none;
		counter-reset: li;
	}

	#swal2-content > ol.mm_liste > li {
		padding: 0px 0px 0px 10px !important;
	}

	#swal2-content > ol.mm_liste > li:before {
		/* Voir ici: https://developer.mozilla.org/fr/docs/Web/CSS/counter_fonction */
		counter-increment: li;
		content: counter(li, decimal-leading-zero);
		color: var(--mm_red, red) !important;
		margin-right: 20px;
	}

	/* ---------------------------------------------------- Mobile (système) */
	.mm-hideIfMobile {
		display: none;
	}

	/* ---------------------------------------------------- Panel système */
	.mm-panel-hide {
		display: none;
	}

	.mm-panel-show {
		display: inherit !important;
	}

	[mm-panel],
	[mm_panel_v2] {
		display: none;
	}

	[mm-panel].mm_active,
	[mm_panel_v2].mm_active {
		display: initial !important;
	}

	[mm-nav],
	[mm_nav_v2] {
		cursor: pointer;
	}
}

/* ---------------------------------------------------------------------------- Popup de progression */
#mmProgressPopupContainer {
	font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Segoe UI', system-ui, sans-serif;
	user-select: none;
	display: flex;
	flex-direction: column;
	align-items: stretch;
	padding: 24px;
	min-height: 320px;
}

/* Header avec icône animée */
#mmProgressPopupContainer .mmpp-header {
	text-align: center;
	margin-bottom: 32px;
}

#mmProgressPopupContainer .mmpp-icon {
	width: 72px;
	height: 72px;
	margin: 0 auto 20px;
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
}

#mmProgressPopupContainer .mmpp-icon-circle {
	width: 72px;
	height: 72px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 8px 24px var(--mm-popup-primary-shadow);
	animation: mmpp-pulse 2s ease-in-out infinite;
}

@keyframes mmpp-pulse {
	0%,
	100% {
		transform: scale(1);
		box-shadow: 0 8px 24px var(--mm-popup-primary-shadow-pulse);
	}
	50% {
		transform: scale(1.05);
		box-shadow: 0 12px 32px var(--mm-popup-primary-shadow-pulse-active);
	}
}

#mmProgressPopupContainer .mmpp-icon-circle.complete {
	background: linear-gradient(135deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
	animation: mmpp-success-scale 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes mmpp-success-scale {
	0% {
		transform: scale(1);
	}
	50% {
		transform: scale(1.2);
	}
	100% {
		transform: scale(1);
	}
}

#mmProgressPopupContainer .mmpp-icon-svg {
	width: 36px;
	height: 36px;
	color: white;
	animation: mmpp-rotate 2s linear infinite;
}

#mmProgressPopupContainer .mmpp-icon-circle.complete .mmpp-icon-svg,
#mmProgressPopupContainer .mmpp-icon-circle.cancelled .mmpp-icon-svg {
	animation: none;
}

@keyframes mmpp-rotate {
	from {
		transform: rotate(0deg);
	}
	to {
		transform: rotate(360deg);
	}
}

#mmProgressPopupContainer .mmpp-title {
	font-size: 1.75rem;
	font-weight: 700;
	color: #1a1a1a;
	margin: 0;
	letter-spacing: -0.5px;
	line-height: 1.2;
}

#mmProgressPopupContainer .mmpp-subtitle {
	font-size: 0.95rem;
	color: #666;
	margin: 8px 0 0;
	font-weight: 400;
}

/* Progression moderne avec shimmer */
#mmProgressPopupContainer .mmpp-progress-wrapper {
	margin-bottom: 28px;
	position: relative;
}

#mmProgressPopupContainer .mmpp-progress-header {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 12px;
}

#mmProgressPopupContainer .mmpp-progress-label {
	font-size: 0.9rem;
	font-weight: 600;
	color: #1a1a1a;
	letter-spacing: 0.2px;
}

#mmProgressPopupContainer .mmpp-progress-percent {
	font-size: 1.1rem;
	font-weight: 700;
	color: var(--mm-popup-primary-color-start);
	letter-spacing: -0.3px;
	min-width: 50px;
	text-align: right;
}

#mmProgressPopupContainer .mmpp-progress-container {
	width: 100%;
	height: 8px;
	border-radius: 12px;
	background: #f0f0f5;
	overflow: hidden;
	position: relative;
	box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.06);
}

#mmProgressPopupContainer .mmpp-progress-bar {
	width: 0%;
	height: 100%;
	background: linear-gradient(90deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
	transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1);
	border-radius: 12px;
	position: relative;
	overflow: hidden;
}

#mmProgressPopupContainer .mmpp-progress-bar::before {
	content: '';
	position: absolute;
	top: 0;
	left: -100%;
	width: 100%;
	height: 100%;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
	animation: mmpp-shimmer 2s infinite;
}

@keyframes mmpp-shimmer {
	0% {
		left: -100%;
	}
	100% {
		left: 200%;
	}
}

#mmProgressPopupContainer .mmpp-progress-bar.complete {
	background: linear-gradient(90deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
}

/* Logs ultra modernes */
#mmProgressPopupContainer .mmpp-log-container {
	flex: 1;
	opacity: 0;
	transform: translateY(20px);
	transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
	margin-top: 12px;
	max-height: 220px;
	overflow-y: auto;
	background: linear-gradient(to bottom, #fafbfc, #f8f9fa);
	border-radius: 16px;
	border: 1px solid rgba(0, 0, 0, 0.06);
	padding: 16px;
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.04);
	scrollbar-width: thin;
	scrollbar-color: #c8c8cd rgba(0, 0, 0, 0.03);
}

#mmProgressPopupContainer .mmpp-log-container.visible {
	opacity: 1;
	transform: translateY(0);
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar {
	width: 8px;
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar-track {
	background: rgba(0, 0, 0, 0.03);
	border-radius: 10px;
	margin: 4px 0;
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar-thumb {
	background: linear-gradient(180deg, #c8c8cd 0%, #b0b0b5 100%);
	border-radius: 10px;
	border: 2px solid transparent;
	background-clip: padding-box;
	transition: all 0.3s ease;
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar-thumb:hover {
	background: linear-gradient(180deg, #a8a8ad 0%, #909095 100%);
	border-radius: 10px;
	border: 2px solid transparent;
	background-clip: padding-box;
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar-thumb:active {
	background: linear-gradient(180deg, #88888d 0%, #707075 100%);
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar-button {
	display: none;
}

#mmProgressPopupContainer .mmpp-log-container::-webkit-scrollbar-corner {
	background: transparent;
}

#mmProgressPopupContainer .mmpp-log-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

#mmProgressPopupContainer .mmpp-log-item {
	display: flex;
	align-items: flex-start;
	padding: 10px 12px;
	font-size: 0.9rem;
	color: #2c2c2e;
	background: white;
	border-radius: 10px;
	margin-bottom: 8px;
	line-height: 1.5;
	opacity: 0;
	transform: translateX(-10px);
	transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
	font-weight: 500;
}

#mmProgressPopupContainer .mmpp-log-item.visible {
	opacity: 1;
	transform: translateX(0);
}

#mmProgressPopupContainer .mmpp-log-item:last-child {
	margin-bottom: 0;
}

#mmProgressPopupContainer .mmpp-log-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: linear-gradient(135deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
	margin-right: 12px;
	flex-shrink: 0;
	box-shadow: 0 2px 8px var(--mm-popup-primary-shadow);
}

#mmProgressPopupContainer .mmpp-log-item.complete .mmpp-log-icon {
	background: linear-gradient(135deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
	animation: mmpp-check-bounce 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

#mmProgressPopupContainer .mmpp-log-icon.error {
	background: linear-gradient(135deg, var(--mm_color_error) 0%, var(--mm_color_error) 100%) !important;
	box-shadow: 0 2px 8px rgba(236, 59, 87, 0.3) !important;
}

@keyframes mmpp-check-bounce {
	0% {
		transform: scale(0);
	}
	50% {
		transform: scale(1.2);
	}
	100% {
		transform: scale(1);
	}
}

#mmProgressPopupContainer .mmpp-log-icon svg {
	width: 12px;
	height: 12px;
	color: white;
}

#mmProgressPopupContainer .mmpp-log-text {
	flex: 1;
	padding-top: 2px;
}

#mmProgressPopupContainer .mmpp-log-time {
	font-size: 0.75rem;
	color: #8e8e93;
	margin-left: 12px;
	flex-shrink: 0;
	font-weight: 400;
}

/* Success state final */
#mmProgressPopupContainer.complete .mmpp-progress-bar {
	background: linear-gradient(90deg, var(--mm-popup-primary-color-start) 0%, var(--mm-popup-primary-color-end) 100%);
}

#mmProgressPopupContainer.complete .mmpp-progress-percent {
	color: var(--mm-popup-primary-color-start);
}

/* ---------------------------------------------------------------------------- Arbre parent/enfant (progress_tree) — fusionné dans le log */
#mmProgressPopupContainer .mmpp-log-container:has(.mmpp-tree-parent) {
	max-height: 300px;
}

#mmProgressPopupContainer .mmpp-tree-list {
	/* classe marqueur sur #mmpp-log-list — pas de style liste séparé */
}

#mmProgressPopupContainer .mmpp-tree-parent {
	display: flex;
	flex-direction: column;
	align-items: stretch;
	padding: 0;
	opacity: 1;
	transform: none;
}

#mmProgressPopupContainer .mmpp-tree-parent-toggle {
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	padding: 10px 12px;
	border: none;
	background: transparent;
	cursor: pointer;
	text-align: left;
	font: inherit;
	color: #2c2c2e;
	border-radius: 10px;
	transition: background 0.15s ease;
}

#mmProgressPopupContainer .mmpp-tree-parent-toggle:hover {
	background: rgba(0, 0, 0, 0.03);
}

/* Anneau circulaire */
#mmProgressPopupContainer .mmpp-tree-ring {
	position: relative;
	flex: 0 0 auto;
	width: 30px;
	height: 30px;
}

#mmProgressPopupContainer .mmpp-tree-ring svg {
	width: 100%;
	height: 100%;
	transform: rotate(-90deg);
	display: block;
}

#mmProgressPopupContainer .mmpp-tree-ring-track {
	fill: none;
	stroke: #ececf0;
	stroke-width: 3.5;
}

#mmProgressPopupContainer .mmpp-tree-ring-fill {
	fill: none;
	stroke: var(--mm-popup-primary-color-start, #3b3bdc);
	stroke-width: 3.5;
	stroke-linecap: round;
	transition: stroke-dasharray 0.3s ease, stroke 0.25s ease;
}

#mmProgressPopupContainer .mmpp-tree-ring-mark {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
}

#mmProgressPopupContainer .mmpp-tree-ring-mark svg {
	width: 12px;
	height: 12px;
	transform: none;
	color: var(--mm-popup-primary-color-start, #3b3bdc);
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="done"] .mmpp-tree-ring-fill {
	stroke: #2e9b54;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="done"] .mmpp-tree-ring-mark svg {
	color: #2e9b54;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="error"] .mmpp-tree-ring-fill {
	stroke: #c0392b;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="error"] .mmpp-tree-ring-mark svg {
	color: #c0392b;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="cancelled"] .mmpp-tree-ring-fill {
	stroke: #b08a00;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="cancelled"] .mmpp-tree-ring-mark svg {
	color: #b08a00;
}

#mmProgressPopupContainer .mmpp-tree-parent-text {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 1px;
	line-height: 1.3;
}

#mmProgressPopupContainer .mmpp-tree-parent-label {
	font-size: 0.9rem;
	font-weight: 600;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

#mmProgressPopupContainer .mmpp-tree-parent-description {
	font-size: 0.8rem;
	font-weight: 400;
	color: #8e8e93;
	margin-top: 2px;
	line-height: 1.4;
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	white-space: normal;
}

#mmProgressPopupContainer .mmpp-tree-parent-detail {
	font-size: 0.75rem;
	font-weight: 500;
	color: #8e8e93;
	margin-top: 2px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

#mmProgressPopupContainer .mmpp-tree-parent-pct {
	flex: 0 0 auto;
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--mm-popup-primary-color-start, #3b3bdc);
	min-width: 2.5em;
	text-align: right;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="done"] .mmpp-tree-parent-pct {
	color: #2e9b54;
}

#mmProgressPopupContainer .mmpp-tree-parent[data-status="error"] .mmpp-tree-parent-pct {
	color: #c0392b;
}

#mmProgressPopupContainer .mmpp-tree-chevron {
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: #8e8e93;
	transition: transform 0.2s ease;
}

#mmProgressPopupContainer .mmpp-tree-chevron svg {
	width: 14px;
	height: 14px;
}

#mmProgressPopupContainer .mmpp-tree-parent.expanded .mmpp-tree-chevron {
	transform: rotate(90deg);
}

/* Enfants — même rendu que .mmpp-log-item (icône + texte + detail + %) */
#mmProgressPopupContainer .mmpp-tree-children {
	list-style: none;
	margin: 0;
	padding: 0 8px 8px 8px;
	display: flex;
	flex-direction: column;
	gap: 0;
}

#mmProgressPopupContainer .mmpp-tree-child {
	opacity: 1;
	transform: none;
	margin-bottom: 8px;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
}

#mmProgressPopupContainer .mmpp-tree-child:last-child {
	margin-bottom: 0;
}

#mmProgressPopupContainer .mmpp-tree-child .mmpp-log-icon.success {
	background: linear-gradient(135deg, #2e9b54 0%, #248a47 100%);
	box-shadow: 0 2px 8px rgba(46, 155, 84, 0.3);
}

#mmProgressPopupContainer .mmpp-tree-child .mmpp-log-icon.warning {
	background: linear-gradient(135deg, #b08a00 0%, #9a7800 100%);
	box-shadow: 0 2px 8px rgba(176, 138, 0, 0.3);
}

#mmProgressPopupContainer .mmpp-tree-child-detail {
	font-size: 0.8rem;
	color: #8e8e93;
	margin-top: 4px;
	line-height: 1.4;
}

#mmProgressPopupContainer .mmpp-tree-child-pct {
	font-size: 0.75rem;
	color: #8e8e93;
	margin-left: 12px;
	flex-shrink: 0;
	font-weight: 400;
}

/* Popup progression — reveal bouton uniquement */
.mmProgressPopupContainerMaster .swal2-actions {
	opacity: 0;
	transform: translateY(10px);
	transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
	pointer-events: none;
}

.mmProgressPopupContainerMaster .swal2-actions.visible {
	opacity: 1;
	transform: translateY(0);
	pointer-events: all;
}

/*
Bootstrap 4 breakpoints

Extra small devices (portrait phones, less than 576px) 
No media query since this is the default in Bootstrap because it is "mobile first"
*/

/* ---------------------------------------------------------------------------- ALL */
@media (min-width: 1201px) {
}

/* ---------------------------------------------------------------------------- Extra large devices (large desktops, 1200px and up) */
@media all and (max-width: 1200px) {
}

/* ---------------------------------------------------------------------------- Large devices (desktops, 992px and up) */
@media all and (max-width: 992px) {
}

/* ---------------------------------------------------------------------------- Medium devices (tablets, 768px and up) The navbar toggle appears at this breakpoint */
@media all and (max-width: 768px) {
	/* .mmBodyAPP est utilisé pour ne pas pouvoir scroller et avoir le comportement d'une app native */
	.mmBodyAPP {
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		width: 100vw;
		height: 100vh;
		height: 100dvh; /* ou 100vh selon compatibilité / fallback */
		overflow: hidden;
		touch-action: none; /* bloque les gestes tactiles */
	}
}

/* ---------------------------------------------------------------------------- Small devices (landscape phones, 576px and up) */
@media all and (max-width: 576px) {
	.swal2-popup:not(.swal2-toast) {
		padding: 1.35rem 1.15rem;
		border-radius: 20px !important;
	}

	.swal2-popup:not(.swal2-toast) .swal2-actions {
		flex-direction: column-reverse;
		align-items: stretch;
	}

	.swal2-popup:not(.swal2-toast) .swal2-actions button {
		width: 100%;
		min-width: 0;
	}

	.mm-hideIfMobile {
		display: inherit;
	}
}

/* ===============================================================
   Selects natifs — options « shadow root » best design 2026
   ---------------------------------------------------------------
   CSS Customizable Select : on stylise nativement le picker (le
   shadow root du <select>) via appearance:base-select. Logique
   Maestra réutilisable partout, sans JS, light + dark. Fallback
   gracieux : les navigateurs non compatibles gardent le <select>
   natif classique (rien ne casse).
   Shadow DOM modales : voir mmDesign_shadowSelect (webpack design/shadow_select.js).
   =============================================================== */
@supports (appearance: base-select) {

	select,
	select.form-select {
		appearance: base-select;
		background-image: none;
		display: inline-flex;
		align-items: center;
		justify-content: space-between;
		gap: 6px;
		max-width: 100%;
		vertical-align: middle;
		line-height: 1.2;
	}

	/* .form-select réserve ~22px à droite pour la flèche en background-image, que
	   base-select remplace par ::picker-icon. Sans ce reset, la flèche s'arrête
	   avant le bord au lieu de finir la ligne : on rend le padding symétrique. */
	select.form-select {
		padding-inline-end: 1rem;
	}

	select.form-select-sm {
		padding-inline-end: 0.5rem;
	}

	/* Flèche du bouton */
	select::picker-icon {
		flex-shrink: 0;
		margin-inline-start: auto;
		color: #94a3b8;
		transition: transform 0.2s ease;
	}

	select:open::picker-icon {
		transform: rotate(180deg);
	}

	/* Valeur reflétée dans le bouton */
	selectedcontent {
		flex: 1 1 auto;
		min-width: 0;
		display: inline-flex;
		align-items: center;
		gap: 8px;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}

	/* Le picker (panneau d'options) */
	::picker(select) {
		appearance: base-select;
		border: none;
		border-radius: 14px;
		padding: 6px;
		margin-top: 6px;
		background: #fff;
		box-shadow:
			0 0 0 1px rgba(15, 23, 42, 0.06),
			0 14px 36px rgba(15, 23, 42, 0.16);
		opacity: 1;
		transform: translateY(0);
		transition: opacity 0.18s ease, transform 0.18s ease;
	}

	/* Animation d'apparition */
	@starting-style {
		::picker(select) {
			opacity: 0;
			transform: translateY(-6px);
		}
	}

	/* Options */
	select option {
		display: flex;
		align-items: center;
		gap: 10px;
		padding: 9px 12px;
		border-radius: 9px;
		font-size: 14px;
		line-height: 1.3;
		color: var(--primary-color, #111c2d);
		cursor: pointer;
		transition: background-color 0.12s ease, color 0.12s ease;
	}

	select option:where(:hover, :focus, :active) {
		background: color-mix(in srgb, var(--brand-primary, #00a1ff) 12%, transparent);
		outline: none;
	}

	select option:checked {
		font-weight: 600;
	}

	/* Coche de l'option sélectionnée, repositionnée à droite
	   Escape \2713 (pas de glyph UTF-8 littéral) : évite le mojibake âœ“
	   si le CSS est servi sans charset UTF-8. */
	option::checkmark {
		order: 1;
		margin-left: auto;
		content: "\2713";
		color: var(--brand-primary, #00a1ff);
		font-weight: 700;
	}

	/* --------------------------------- Dark theme */
	html[data-bs-theme="dark"] ::picker(select) {
		background: #161d21;
		box-shadow:
			0 0 0 1px rgba(255, 255, 255, 0.08),
			0 16px 42px rgba(0, 0, 0, 0.48);
	}

	html[data-bs-theme="dark"] select option:where(:hover, :focus, :active) {
		background: rgba(255, 255, 255, 0.09);
	}
}
