/* PFPDT Cookie Consent - styles frontend
 *
 * Tous les sélecteurs sont préfixés par l'ID #pfpdt-cc-root (ou #pfpdt-cc-reopen) et les
 * propriétés visuelles sont en !important : les styles du thème (couleurs de liens, boutons,
 * titres, paragraphes…) ne doivent jamais écraser l'apparence configurée de la bannière.
 */

#pfpdt-cc-root {
	position: fixed !important;
	inset: 0 !important;
	z-index: 999999 !important;
	pointer-events: none !important;
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
	font-size: var(--pfpdt-cc-font-size, 15px) !important;
	line-height: 1.5 !important;
	text-align: left !important;
}

#pfpdt-cc-root[hidden] {
	display: none !important;
}

/* Réinitialisation des éléments susceptibles d'être stylés par le thème. */
#pfpdt-cc-root *,
#pfpdt-cc-root *::before,
#pfpdt-cc-root *::after {
	box-sizing: border-box !important;
	font-family: inherit !important;
	letter-spacing: normal;
	text-transform: none;
	text-shadow: none !important;
}

#pfpdt-cc-root h2,
#pfpdt-cc-root p,
#pfpdt-cc-root span,
#pfpdt-cc-root label,
#pfpdt-cc-root summary,
#pfpdt-cc-root table,
#pfpdt-cc-root th,
#pfpdt-cc-root td {
	color: inherit !important;
	background: transparent !important;
	border-color: inherit;
}

#pfpdt-cc-root h2 {
	padding: 0 !important;
	font-weight: 600 !important;
	line-height: 1.3 !important;
}

/* ---------------------------------------------------------------
 * Bannière
 * ------------------------------------------------------------- */

#pfpdt-cc-root .pfpdt-cc-banner {
	pointer-events: auto !important;
	position: absolute !important;
	left: 0;
	right: 0;
	width: auto;
	margin: 0 !important;
	background: var(--pfpdt-cc-bg, #1f2937) !important;
	color: var(--pfpdt-cc-text, #f9fafb) !important;
	box-shadow: 0 -4px 24px rgba(0,0,0,.2) !important;
	padding: var(--pfpdt-cc-padding-y, 20px) var(--pfpdt-cc-padding-x, 20px) !important;
	min-height: var(--pfpdt-cc-min-height, 0px) !important;
	display: flex !important;
	align-items: center !important;
	border: none !important;
}

#pfpdt-cc-root.pfpdt-cc-position-bottom .pfpdt-cc-banner {
	bottom: 0 !important;
}

#pfpdt-cc-root.pfpdt-cc-position-top .pfpdt-cc-banner {
	top: 0 !important;
	box-shadow: 0 4px 24px rgba(0,0,0,.2) !important;
}

#pfpdt-cc-root.pfpdt-cc-position-modal .pfpdt-cc-banner {
	bottom: 20px !important;
	left: 20px !important;
	right: auto !important;
	max-width: var(--pfpdt-cc-modal-width, 420px) !important;
	width: calc(100% - 40px) !important;
	min-height: 0 !important;
	border-radius: var(--pfpdt-cc-radius, 10px) !important;
}

#pfpdt-cc-root .pfpdt-cc-banner[hidden] {
	display: none !important;
}

#pfpdt-cc-root .pfpdt-cc-banner-inner {
	width: 100% !important;
	max-width: var(--pfpdt-cc-content-width, 1100px) !important;
	margin: 0 auto !important;
	padding: 0 !important;
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	gap: 16px !important;
	background: transparent !important;
}

#pfpdt-cc-root .pfpdt-cc-title {
	flex: 1 1 100% !important;
	margin: 0 0 4px !important;
	font-size: 1.15em !important;
	color: var(--pfpdt-cc-title, var(--pfpdt-cc-text, #f9fafb)) !important;
}

#pfpdt-cc-root .pfpdt-cc-text {
	flex: 1 1 480px !important;
	margin: 0 !important;
	padding: 0 !important;
	font-size: 1em !important;
	line-height: 1.5 !important;
	color: var(--pfpdt-cc-text, #f9fafb) !important;
}

#pfpdt-cc-root a.pfpdt-cc-policy-link,
#pfpdt-cc-root a.pfpdt-cc-policy-link:visited,
#pfpdt-cc-root a.pfpdt-cc-policy-link:hover,
#pfpdt-cc-root a.pfpdt-cc-policy-link:focus {
	color: var(--pfpdt-cc-link, var(--pfpdt-cc-accent, #2563eb)) !important;
	background: transparent !important;
	text-decoration: underline !important;
	border: none !important;
	box-shadow: none !important;
	margin-left: 4px;
	white-space: nowrap;
}

#pfpdt-cc-root .pfpdt-cc-actions {
	display: flex !important;
	flex-wrap: wrap !important;
	gap: 10px !important;
	margin: 0 0 0 auto !important;
	padding: 0 !important;
}

/* ---------------------------------------------------------------
 * Boutons (états :hover/:focus/:active forcés pour contrer le thème)
 * ------------------------------------------------------------- */

#pfpdt-cc-root .pfpdt-cc-btn {
	appearance: none !important;
	-webkit-appearance: none !important;
	cursor: pointer !important;
	display: inline-block !important;
	width: auto !important;
	height: auto !important;
	min-height: 0 !important;
	margin: 0 !important;
	border: 1px solid transparent !important;
	border-radius: var(--pfpdt-cc-radius, 10px) !important;
	padding: 10px 18px !important;
	font-size: .95em !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	text-decoration: none !important;
	white-space: nowrap !important;
	box-shadow: none !important;
	transition: filter .15s ease !important;
}

#pfpdt-cc-root .pfpdt-cc-btn:hover {
	filter: brightness(1.1) !important;
}

#pfpdt-cc-root .pfpdt-cc-btn-accept,
#pfpdt-cc-root .pfpdt-cc-btn-accept:hover,
#pfpdt-cc-root .pfpdt-cc-btn-accept:focus,
#pfpdt-cc-root .pfpdt-cc-btn-accept:active {
	background: var(--pfpdt-cc-accent, #2563eb) !important;
	color: var(--pfpdt-cc-accent-text, #fff) !important;
	border-color: var(--pfpdt-cc-accent, #2563eb) !important;
}

#pfpdt-cc-root .pfpdt-cc-btn-reject,
#pfpdt-cc-root .pfpdt-cc-btn-reject:hover,
#pfpdt-cc-root .pfpdt-cc-btn-reject:focus,
#pfpdt-cc-root .pfpdt-cc-btn-reject:active {
	background: var(--pfpdt-cc-reject-bg, #374151) !important;
	color: var(--pfpdt-cc-reject-text, #f9fafb) !important;
	border-color: var(--pfpdt-cc-reject-bg, #374151) !important;
}

#pfpdt-cc-root .pfpdt-cc-btn-outline,
#pfpdt-cc-root .pfpdt-cc-btn-outline:hover,
#pfpdt-cc-root .pfpdt-cc-btn-outline:focus,
#pfpdt-cc-root .pfpdt-cc-btn-outline:active {
	background: transparent !important;
	color: var(--pfpdt-cc-text, #f9fafb) !important;
	border-color: var(--pfpdt-cc-text, #f9fafb) !important;
}

#pfpdt-cc-root .pfpdt-cc-btn:focus-visible {
	outline: 2px solid var(--pfpdt-cc-accent, #2563eb) !important;
	outline-offset: 2px !important;
}

/* ---------------------------------------------------------------
 * Modale de préférences
 * ------------------------------------------------------------- */

#pfpdt-cc-root .pfpdt-cc-modal {
	pointer-events: auto !important;
	position: fixed !important;
	inset: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	z-index: 1000000 !important;
}

#pfpdt-cc-root .pfpdt-cc-modal[hidden] {
	display: none !important;
}

#pfpdt-cc-root .pfpdt-cc-modal-overlay {
	position: absolute !important;
	inset: 0 !important;
	background: rgba(0,0,0,.55) !important;
}

#pfpdt-cc-root .pfpdt-cc-modal-content {
	position: relative !important;
	background: var(--pfpdt-cc-bg, #1f2937) !important;
	color: var(--pfpdt-cc-text, #f9fafb) !important;
	border-radius: var(--pfpdt-cc-radius, 10px) !important;
	max-width: 640px !important;
	width: calc(100% - 32px) !important;
	max-height: 85vh !important;
	overflow-y: auto !important;
	padding: 24px !important;
	margin: 0 !important;
}

#pfpdt-cc-root .pfpdt-cc-modal-content h2 {
	margin: 0 0 12px !important;
	font-size: 1.3em !important;
	color: var(--pfpdt-cc-title, var(--pfpdt-cc-text, #f9fafb)) !important;
}

#pfpdt-cc-root .pfpdt-cc-category {
	border-top: 1px solid rgba(127,127,127,.3) !important;
	padding: 14px 0 !important;
	margin: 0 !important;
}

#pfpdt-cc-root .pfpdt-cc-category:first-of-type {
	border-top: none !important;
}

#pfpdt-cc-root .pfpdt-cc-category-head {
	display: flex !important;
	align-items: center !important;
	gap: 10px !important;
}

#pfpdt-cc-root .pfpdt-cc-category-label {
	font-weight: 600 !important;
}

#pfpdt-cc-root .pfpdt-cc-category-badge {
	margin-left: auto !important;
	font-size: .75em !important;
	text-transform: uppercase !important;
	letter-spacing: .04em !important;
	opacity: .75 !important;
}

#pfpdt-cc-root .pfpdt-cc-category-desc {
	margin: 8px 0 0 !important;
	padding: 0 !important;
	line-height: 1.5 !important;
	font-size: .95em !important;
	opacity: .92 !important;
}

#pfpdt-cc-root .pfpdt-cc-cookie-details {
	margin-top: 8px !important;
	font-size: .85em !important;
}

#pfpdt-cc-root .pfpdt-cc-cookie-details summary {
	cursor: pointer !important;
}

#pfpdt-cc-root .pfpdt-cc-cookie-table {
	width: 100% !important;
	border-collapse: collapse !important;
	border: none !important;
	margin: 8px 0 0 !important;
}

#pfpdt-cc-root .pfpdt-cc-cookie-table th,
#pfpdt-cc-root .pfpdt-cc-cookie-table td {
	text-align: left !important;
	padding: 6px 8px !important;
	border: none !important;
	border-bottom: 1px solid rgba(127,127,127,.25) !important;
	vertical-align: top !important;
}

/* ---------------------------------------------------------------
 * Switch (toggle)
 * ------------------------------------------------------------- */

#pfpdt-cc-root .pfpdt-cc-switch {
	position: relative !important;
	display: inline-block !important;
	width: 40px !important;
	height: 22px !important;
	margin: 0 !important;
	padding: 0 !important;
	flex: none !important;
}

#pfpdt-cc-root .pfpdt-cc-switch input {
	position: absolute !important;
	opacity: 0 !important;
	width: 0 !important;
	height: 0 !important;
	margin: 0 !important;
}

#pfpdt-cc-root .pfpdt-cc-switch-slider {
	position: absolute !important;
	inset: 0 !important;
	background: rgba(127,127,127,.45) !important;
	border-radius: 999px !important;
	transition: background .15s ease !important;
}

#pfpdt-cc-root .pfpdt-cc-switch-slider::before {
	content: "" !important;
	position: absolute !important;
	height: 16px !important;
	width: 16px !important;
	left: 3px !important;
	top: 3px !important;
	background: #fff !important;
	border-radius: 50% !important;
	transition: transform .15s ease !important;
}

#pfpdt-cc-root .pfpdt-cc-switch input:checked + .pfpdt-cc-switch-slider {
	background: var(--pfpdt-cc-accent, #2563eb) !important;
}

#pfpdt-cc-root .pfpdt-cc-switch input:checked + .pfpdt-cc-switch-slider::before {
	transform: translateX(18px) !important;
}

#pfpdt-cc-root .pfpdt-cc-switch input:focus-visible + .pfpdt-cc-switch-slider {
	outline: 2px solid var(--pfpdt-cc-accent, #2563eb) !important;
	outline-offset: 2px !important;
}

#pfpdt-cc-root .pfpdt-cc-switch input:disabled + .pfpdt-cc-switch-slider {
	opacity: .6 !important;
	cursor: not-allowed !important;
}

/* ---------------------------------------------------------------
 * Bouton flottant pour rouvrir les préférences à tout moment (ch. 3.12.7)
 * ------------------------------------------------------------- */

#pfpdt-cc-reopen,
#pfpdt-cc-reopen:hover,
#pfpdt-cc-reopen:focus,
#pfpdt-cc-reopen:active {
	appearance: none !important;
	position: fixed !important;
	left: 16px !important;
	bottom: 16px !important;
	z-index: 999998 !important;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	background: var(--pfpdt-cc-bg, #1f2937) !important;
	color: var(--pfpdt-cc-text, #f9fafb) !important;
	border: 1px solid rgba(127,127,127,.35) !important;
	border-radius: 999px !important;
	padding: 8px 14px !important;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif !important;
	font-size: 13px !important;
	font-weight: 400 !important;
	line-height: 1.2 !important;
	text-transform: none !important;
	text-decoration: none !important;
	cursor: pointer !important;
	box-shadow: 0 2px 10px rgba(0,0,0,.25) !important;
}

#pfpdt-cc-reopen:focus-visible {
	outline: 2px solid var(--pfpdt-cc-accent, #2563eb) !important;
	outline-offset: 2px !important;
}

#pfpdt-cc-reopen[hidden] {
	display: none !important;
}

@media (max-width: 640px) {
	#pfpdt-cc-root .pfpdt-cc-banner {
		padding: 16px !important;
	}
	#pfpdt-cc-root .pfpdt-cc-banner-inner {
		flex-direction: column !important;
		align-items: stretch !important;
	}
	#pfpdt-cc-root .pfpdt-cc-actions {
		margin-left: 0 !important;
		flex-direction: column !important;
	}
	#pfpdt-cc-root .pfpdt-cc-btn {
		width: 100% !important;
		white-space: normal !important;
	}
	#pfpdt-cc-root.pfpdt-cc-position-modal .pfpdt-cc-banner {
		left: 10px !important;
		right: 10px !important;
		width: auto !important;
		max-width: none !important;
	}
}
