/* Politicare Privacy – interfaccia del consenso.
   Molte proprietà dei pulsanti hanno !important: i temi (CMSMasters incluso)
   applicano stili globali a ogni <button>, compreso un ::before colorato. */

:root {
	--pp-testo: #1F1F1F;
	--pp-accento: #D32F2F;
	--pp-accento-tenue: #FDECEC;
	--pp-sfondo: #FFFFFF;
	--pp-superficie: #F5F5F3;
	--pp-bordo: #E7E7E4;
	--pp-tenue: #5E5E5E;
	--pp-raggio: 20px;
	--pp-ombra: 0 24px 64px -16px rgba(15, 15, 15, .30), 0 2px 8px rgba(15, 15, 15, .06);
	--pp-font-ui: var(--cmsmasters-tertiary-font-family, "Poppins Local", Poppins, system-ui, -apple-system, "Segoe UI", sans-serif);
	--pp-font-testo: var(--cmsmasters-base-font-family, "Pt Serif Local", "PT Serif", Georgia, serif);
	--pp-curva: cubic-bezier(.2, .8, .2, 1);
}

.pp-banner[hidden], .pp-modale[hidden], .pp-fluttuante[hidden] { display: none !important; }

.pp-banner, .pp-modale, .pp-fluttuante, .pp-segnaposto {
	box-sizing: border-box;
	color: var(--pp-testo);
	font-family: var(--pp-font-ui);
	-webkit-font-smoothing: antialiased;
}
.pp-banner *, .pp-modale *, .pp-segnaposto * { box-sizing: border-box; }

.pp-banner button::before, .pp-banner button::after,
.pp-modale button::before, .pp-modale button::after,
.pp-segnaposto button::before, .pp-segnaposto button::after,
.pp-fluttuante::before, .pp-fluttuante::after {
	content: none !important;
	display: none !important;
}

.pp-banner a, .pp-modale a, .pp-segnaposto a {
	color: var(--pp-testo);
	text-decoration: underline;
	text-decoration-color: var(--pp-accento);
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
}
.pp-banner a:hover, .pp-modale a:hover { color: var(--pp-accento); }

.pp-banner :focus-visible, .pp-modale :focus-visible, .pp-fluttuante:focus-visible, .pp-segnaposto :focus-visible {
	outline: 3px solid var(--pp-accento) !important;
	outline-offset: 2px !important;
}

/* ---------- pulsanti ---------- */

.pp-banner .pp-btn, .pp-modale .pp-btn, .pp-segnaposto .pp-btn {
	appearance: none;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	margin: 0;
	min-height: 46px !important;
	padding: 0 22px !important;
	border: 1.5px solid var(--pp-testo) !important;
	border-radius: 999px !important;
	background: var(--pp-testo) !important;
	color: #FFFFFF !important;
	box-shadow: none !important;
	font-family: var(--pp-font-ui) !important;
	font-size: 14.5px !important;
	font-weight: 600 !important;
	line-height: 1.2 !important;
	letter-spacing: 0 !important;
	text-transform: none !important;
	text-shadow: none !important;
	white-space: nowrap;
	cursor: pointer;
	transition: transform .15s var(--pp-curva), background-color .15s, border-color .15s, color .15s, box-shadow .15s;
}
.pp-banner .pp-btn:hover, .pp-modale .pp-btn:hover, .pp-segnaposto .pp-btn:hover {
	background: #3A3A3A !important;
	border-color: #3A3A3A !important;
	color: #FFFFFF !important;
	transform: translateY(-1px);
}

/* Accetta: stesso peso visivo di Rifiuta, con il colore del brand. */
.pp-banner .pp-btn[data-pp-azione="accetta"], .pp-modale .pp-btn[data-pp-azione="accetta"], .pp-segnaposto .pp-btn[data-pp-azione="attiva"] {
	background: var(--pp-accento) !important;
	border-color: var(--pp-accento) !important;
}
.pp-banner .pp-btn[data-pp-azione="accetta"]:hover, .pp-modale .pp-btn[data-pp-azione="accetta"]:hover, .pp-segnaposto .pp-btn[data-pp-azione="attiva"]:hover {
	background: #B71C1C !important;
	border-color: #B71C1C !important;
	box-shadow: 0 8px 20px -8px rgba(211, 47, 47, .6) !important;
}

.pp-modale .pp-btn--contorno {
	background: transparent !important;
	color: var(--pp-testo) !important;
	border-color: var(--pp-bordo) !important;
}
.pp-modale .pp-btn--contorno:hover {
	background: var(--pp-superficie) !important;
	color: var(--pp-testo) !important;
	border-color: #CFCFCB !important;
}

.pp-banner .pp-btn--testo, .pp-segnaposto .pp-btn--testo {
	background: transparent !important;
	border-color: transparent !important;
	color: var(--pp-tenue) !important;
	min-height: 36px !important;
	font-weight: 500 !important;
	font-size: 13.5px !important;
}
.pp-banner .pp-btn--testo:hover, .pp-segnaposto .pp-btn--testo:hover {
	background: transparent !important;
	border-color: transparent !important;
	color: var(--pp-testo) !important;
	transform: none;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.pp-banner .pp-x, .pp-modale .pp-x {
	position: absolute;
	top: 14px;
	right: 14px;
	width: 34px !important;
	height: 34px !important;
	min-height: 0 !important;
	display: grid !important;
	place-items: center;
	padding: 0 !important;
	margin: 0;
	border: 0 !important;
	border-radius: 50% !important;
	background: var(--pp-superficie) !important;
	color: var(--pp-testo) !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: background-color .15s, transform .15s var(--pp-curva);
}
.pp-banner .pp-x:hover, .pp-modale .pp-x:hover { background: var(--pp-bordo) !important; transform: rotate(90deg); }
.pp-banner .pp-x svg, .pp-modale .pp-x svg { width: 12px; height: 12px; }

/* ---------- banner ---------- */

.pp-banner {
	position: fixed;
	z-index: 2147483000;
	left: 24px;
	bottom: 24px;
	width: min(440px, calc(100vw - 32px));
	pointer-events: none;
}
.pp-banner--centro {
	left: 50%;
	bottom: 50%;
	transform: translate(-50%, 50%);
	width: min(500px, calc(100vw - 32px));
}

.pp-banner__box {
	position: relative;
	pointer-events: auto;
	max-height: calc(100vh - 48px);
	overflow-y: auto;
	padding: 24px;
	background: var(--pp-sfondo);
	border: 1px solid rgba(0, 0, 0, .05);
	border-radius: var(--pp-raggio);
	box-shadow: var(--pp-ombra);
	animation: pp-entra .5s var(--pp-curva);
}

@keyframes pp-entra { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }

.pp-banner__titolo {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 44px 12px 0;
	font-family: var(--pp-font-ui);
	font-size: 18px;
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -.01em;
	color: var(--pp-testo);
}
.pp-banner__titolo::before {
	content: "";
	flex: none;
	width: 40px;
	height: 40px;
	border-radius: 12px;
	background: var(--pp-accento-tenue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23D32F2F' d='M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5zm-3.5 7a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zm6 5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3zm-7 2a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm10-5a1 1 0 1 1 0 2 1 1 0 0 1 0-2z'/%3E%3C/svg%3E") center / 22px no-repeat;
}

.pp-banner__testo {
	margin: 0;
	font-family: var(--pp-font-ui);
	font-size: 13.5px;
	line-height: 1.6;
	color: var(--pp-tenue);
}
.pp-banner__link {
	display: block;
	margin-top: 8px;
	font-size: 13px;
	font-weight: 500;
}
.pp-banner__link a { color: var(--pp-testo); }

.pp-azioni {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 10px;
	margin-top: 18px;
}
.pp-azioni .pp-btn { width: 100%; }
.pp-azioni .pp-btn--testo { grid-column: 1 / -1; order: 3; margin-top: -2px; }

/* ---------- pannello preferenze ---------- */

html.pp-bloccato { overflow: hidden; }

.pp-modale {
	position: fixed;
	inset: 0;
	z-index: 2147483001;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
}
.pp-modale__sfondo {
	position: absolute;
	inset: 0;
	background: rgba(17, 17, 17, .45);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	animation: pp-dissolvi .25s ease-out;
}
@keyframes pp-dissolvi { from { opacity: 0; } to { opacity: 1; } }

.pp-modale__box {
	position: relative;
	width: 100%;
	max-width: 600px;
	max-height: calc(100vh - 48px);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: var(--pp-sfondo);
	border-radius: 24px;
	box-shadow: var(--pp-ombra);
	outline: none;
	animation: pp-apri .35s var(--pp-curva);
}
@keyframes pp-apri { from { transform: translateY(12px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }

.pp-modale__testa { position: relative; padding: 26px 70px 6px 28px; }
.pp-modale__titolo {
	margin: 0 !important;
	font-family: var(--pp-font-ui) !important;
	font-size: 22px !important;
	font-weight: 600 !important;
	line-height: 1.25 !important;
	letter-spacing: -.01em !important;
	color: var(--pp-testo) !important;
}
.pp-modale__testa .pp-x { top: 22px; right: 22px; }

.pp-modale__corpo { padding: 8px 28px 16px; overflow-y: auto; }
.pp-modale__intro { margin: 0 0 16px; font-size: 13.5px; line-height: 1.6; color: var(--pp-tenue); }

.pp-cat {
	margin-bottom: 10px;
	padding: 16px 18px;
	background: var(--pp-superficie);
	border-radius: 14px;
	transition: background-color .15s;
}
.pp-cat:has(.pp-switch:checked) { background: #FBF3F3; }
.pp-cat__riga { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.pp-cat__nome { margin: 0; font-size: 15px; font-weight: 600; color: var(--pp-testo); cursor: pointer; }
.pp-cat__sempre {
	flex: none;
	padding: 5px 10px;
	border-radius: 999px;
	background: #E6F4EA;
	color: #1E6B34;
	font-size: 12px;
	font-weight: 600;
}
.pp-cat__desc { margin: 6px 0 0; font-size: 13.5px; line-height: 1.55; color: var(--pp-tenue); }

.pp-cat__servizi { margin-top: 10px; font-size: 13px; }
.pp-cat__servizi summary {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	list-style: none;
	cursor: pointer;
	font-weight: 500;
	color: var(--pp-testo);
}
.pp-cat__servizi summary::-webkit-details-marker { display: none; }
.pp-cat__servizi summary::after {
	content: "";
	width: 7px;
	height: 7px;
	border-right: 1.5px solid currentColor;
	border-bottom: 1.5px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
	transition: transform .2s var(--pp-curva);
}
.pp-cat__servizi[open] summary::after { transform: translateY(1px) rotate(-135deg); }
.pp-cat__servizi ul { margin: 10px 0 0; padding: 0; list-style: none; }
.pp-cat__servizi li {
	margin: 0 0 6px;
	padding: 10px 12px;
	background: var(--pp-sfondo);
	border-radius: 10px;
	line-height: 1.5;
	color: var(--pp-tenue);
}
.pp-cat__servizi li strong { color: var(--pp-testo); font-weight: 600; }

.pp-switch {
	appearance: none !important;
	-webkit-appearance: none !important;
	position: relative;
	flex: none;
	width: 46px !important;
	height: 28px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 999px !important;
	background: #CFCFCB !important;
	box-shadow: none !important;
	cursor: pointer;
	transition: background-color .2s;
}
.pp-switch::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 3px;
	width: 22px;
	height: 22px;
	border-radius: 50%;
	background: #FFFFFF;
	box-shadow: 0 2px 4px rgba(0, 0, 0, .2);
	transition: transform .2s var(--pp-curva);
}
.pp-switch:checked { background: var(--pp-accento) !important; }
.pp-switch:checked::after { transform: translateX(18px); }
.pp-switch::before { content: none !important; display: none !important; }

.pp-modale__piede {
	display: flex;
	gap: 10px;
	justify-content: flex-end;
	padding: 16px 28px 22px;
	border-top: 1px solid var(--pp-bordo);
	background: var(--pp-sfondo);
}
.pp-modale__piede .pp-btn--contorno { margin-right: auto; }

/* ---------- pulsante fluttuante ---------- */

.pp-fluttuante {
	position: fixed;
	z-index: 2147482999;
	left: 20px;
	bottom: 20px;
	width: 48px !important;
	height: 48px !important;
	min-height: 0 !important;
	display: grid !important;
	place-items: center;
	padding: 0 !important;
	margin: 0;
	border: 1px solid rgba(0, 0, 0, .06) !important;
	border-radius: 50% !important;
	background: var(--pp-sfondo) !important;
	color: var(--pp-accento) !important;
	box-shadow: 0 8px 24px -6px rgba(15, 15, 15, .28) !important;
	cursor: pointer;
	transition: transform .2s var(--pp-curva), box-shadow .2s;
}
.pp-fluttuante:hover { transform: scale(1.08) rotate(-8deg); box-shadow: 0 12px 28px -6px rgba(15, 15, 15, .35) !important; }

/* ---------- segnaposto dei contenuti bloccati ---------- */

iframe[data-pp-src] { display: none !important; }

.pp-segnaposto {
	width: 100%;
	aspect-ratio: 16 / 9;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 28px;
	text-align: center;
	color: #FFFFFF;
	background: radial-gradient(120% 90% at 50% 0%, #3A3A3A 0%, #1F1F1F 70%);
	border-radius: 16px;
	overflow: hidden;
}
.pp-segnaposto::before {
	content: "";
	width: 56px;
	height: 56px;
	margin-bottom: 8px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M8 5.5v13l11-6.5z'/%3E%3C/svg%3E") 55% 50% / 24px no-repeat;
}
.pp-segnaposto p { margin: 0; max-width: 460px; font-size: 13.5px; line-height: 1.55; color: rgba(255, 255, 255, .78); }
.pp-segnaposto .pp-segnaposto__titolo { font-size: 16px; font-weight: 600; color: #FFFFFF; }
.pp-segnaposto .pp-btn { margin-top: 12px; }
.pp-segnaposto .pp-btn--testo { margin-top: 0; color: rgba(255, 255, 255, .8) !important; }
.pp-segnaposto .pp-btn--testo:hover { color: #FFFFFF !important; }

.pp-segnaposto.pp-segnaposto--riempi {
	position: absolute;
	inset: 0;
	width: auto;
	height: auto;
	aspect-ratio: auto;
	overflow: auto;
	border-radius: 0;
}

/* ---------- documenti legali ---------- */

/* Colonna di lettura centrata e distanziata dall'header, che nel tema è sovrapposto alla pagina. */
.pp-documento {
	max-width: 860px;
	margin: 0 auto;
	padding: clamp(40px, 6vw, 80px) 0 clamp(72px, 9vw, 128px);
	font-family: var(--pp-font-testo);
	line-height: 1.7;
	overflow-wrap: break-word;
}
.pp-documento--tabella { padding: 0; max-width: none; }
.pp-documento .pp-documento__titolo {
	margin: 0 0 16px !important;
	font-family: var(--cmsmasters-h1-font-family, "Gloock Local", Gloock, Georgia, serif) !important;
	font-size: clamp(38px, 5.2vw, 60px) !important;
	font-weight: 400 !important;
	line-height: 1.08 !important;
	letter-spacing: -.01em !important;
	color: var(--pp-testo) !important;
}
.pp-documento .pp-documento__titolo + .pp-aggiornamento {
	display: inline-block;
	margin: 0 0 clamp(28px, 4vw, 48px);
	padding: 6px 14px;
	border-radius: 999px;
	background: #EBEBE8;
}
.pp-documento h2 { font-size: clamp(24px, 2.4vw, 32px) !important; line-height: 1.2 !important; margin: 1.9em 0 .6em !important; scroll-margin-top: 140px; }
.pp-documento h3 { font-size: clamp(19px, 1.8vw, 23px) !important; line-height: 1.25 !important; margin: 1.5em 0 .45em !important; scroll-margin-top: 140px; }
.pp-documento ul { padding-left: 1.3em; }
.pp-documento li { margin-bottom: .35em; }

/* ---------- barra legale in fondo alla pagina ---------- */

.pp-barra-legale {
	padding: 18px 88px calc(18px + env(safe-area-inset-bottom));
	border-top: 1px solid var(--pp-bordo);
	background: var(--pp-sfondo);
	font-family: var(--pp-font-ui);
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--pp-tenue);
}
.pp-barra-legale__interno {
	max-width: 1280px;
	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 4px 10px;
	text-align: center;
}
.pp-barra-legale a { color: var(--pp-testo) !important; text-decoration: none !important; }
.pp-barra-legale a:hover { color: var(--pp-accento) !important; text-decoration: underline !important; text-underline-offset: 3px; }
.pp-barra-legale .pp-sep { color: #BDBDBA; }
@media (max-width: 600px) {
	.pp-barra-legale { padding: 16px 16px calc(80px + env(safe-area-inset-bottom)); }
}
.pp-documento .pp-tabella-scorrimento {
	overflow-x: auto;
	margin: 1em 0 1.5em;
	border: 1px solid var(--pp-bordo);
	border-radius: 14px;
}
.pp-documento table { width: 100%; margin: 0; border-collapse: collapse; font-size: 15px; }
.pp-documento th, .pp-documento td { text-align: left; vertical-align: top; padding: 12px 14px; border: 0; border-bottom: 1px solid var(--pp-bordo); }
.pp-documento tbody tr:last-child td { border-bottom: 0; }
.pp-documento th { font-family: var(--pp-font-ui); font-size: 13px; font-weight: 600; background: var(--pp-superficie); }
.pp-documento code { font-size: 13px; padding: 2px 6px; border-radius: 6px; background: var(--pp-superficie); }
.pp-documento mark.pp-da-completare { background: #FFE8A3; color: #1F1F1F; padding: 0 4px; border-radius: 4px; }
.pp-documento .pp-aggiornamento { font-family: var(--pp-font-ui); font-size: 13px; color: var(--pp-tenue); }
/* Eredita il colore della sezione: i moduli stanno sia su fondi chiari sia scuri. */
.pp-informativa-form { margin: 12px 0 0 !important; font-family: var(--pp-font-ui); font-size: 12.5px !important; line-height: 1.55 !important; color: inherit; opacity: .78; text-align: left; }
.pp-informativa-form a { color: inherit !important; text-decoration: underline !important; text-underline-offset: 2px; }

/* ---------- mobile: bottom sheet ---------- */

@media (max-width: 600px) {
	.pp-banner, .pp-banner--centro {
		left: 0;
		right: 0;
		bottom: 0;
		width: auto;
		transform: none;
	}
	.pp-banner__box {
		max-height: 85vh;
		padding: 22px 18px calc(16px + env(safe-area-inset-bottom));
		border-radius: 22px 22px 0 0;
	}
	.pp-banner__titolo { font-size: 17px; }
	.pp-banner__titolo::before { width: 36px; height: 36px; border-radius: 10px; background-size: 20px; }
	.pp-btn { white-space: normal; }

	.pp-modale { padding: 0; align-items: flex-end; }
	.pp-modale__box { max-height: 92vh; border-radius: 24px 24px 0 0; animation-name: pp-sale; }
	@keyframes pp-sale { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
	.pp-modale__testa { padding: 22px 64px 4px 18px; }
	.pp-modale__testa .pp-x { top: 18px; right: 16px; }
	.pp-modale__titolo { font-size: 20px !important; }
	.pp-modale__corpo { padding: 8px 18px 12px; }
	.pp-modale__piede {
		display: grid;
		grid-template-columns: 1fr 1fr;
		padding: 12px 18px calc(16px + env(safe-area-inset-bottom));
	}
	.pp-modale__piede .pp-btn--contorno { grid-column: 1 / -1; order: 3; margin: 0; }
	.pp-fluttuante { left: 14px; bottom: 14px; }
	.pp-segnaposto { aspect-ratio: auto; min-height: 240px; padding: 22px; }
}

@media (prefers-reduced-motion: reduce) {
	.pp-banner__box, .pp-modale__box, .pp-modale__sfondo { animation: none; }
	.pp-btn, .pp-x, .pp-switch, .pp-switch::after, .pp-fluttuante, .pp-cat__servizi summary::after { transition: none !important; }
}
