/* CBN Informatica - Privacy Policy (pagina /privacy-policy/, sezioni in content/privacy-sections/).
   Il TESTO e' quello pubblicato, non modificato: cambiano solo struttura (hero, indice laterale, sezioni) e tipografia.
   Si appoggia a cbn-tokens/chrome/home/chi-siamo (token, header, footer, banner, breadcrumb, CTA arancio). Prefisso .cbn-pv-;
   colori solo dai token --cbn-*. Caricato solo su questa pagina (functions.php, cbn_enqueue_identity_styles). */

/* ---- Hero compatto: un documento non ha bisogno di un titolo da 13rem ---- */
.cbn-pv-hero { padding: var(--cbn-space-lg) 0 var(--cbn-space-xl); }
.cbn-pv-hero__title { margin: var(--cbn-space-lg) 0 var(--cbn-space-md); font: 800 clamp(2.75rem, 7.5vw, 6.25rem)/.92 var(--cbn-font-display); letter-spacing: var(--cbn-tracking-display); }
.cbn-pv-hero__title span { color: var(--cbn-orange); }
.cbn-pv-hero__meta { margin: 0; padding-top: var(--cbn-space-sm); border-top: 1px solid var(--cbn-line-on-dark); width: fit-content; color: var(--cbn-on-dark-muted); font: 500 var(--cbn-size-label)/1.3 var(--cbn-font-label); letter-spacing: .12em; text-transform: uppercase; }

/* ---- Corpo: misura di lettura ~70 caratteri, interlinea 1,7 ---- */
.cbn-pv-main { padding: var(--cbn-section-pad) 0; }
.cbn-pv-doc { max-width: 70ch; font-size: 1.0625rem; line-height: 1.7; color: var(--cbn-text); }
.cbn-block .cbn-pv-doc :where(p, ul, ol) { margin: 0 0 1.1em; }
.cbn-pv-doc .cbn-pv-docname { margin-bottom: .4em; font-size: 1.25rem; font-weight: 800; letter-spacing: -.02em; }
.cbn-pv-intro { padding-bottom: var(--cbn-space-lg); }
.cbn-pv-intro p:nth-child(2) { font-size: 1.1875rem; }
.cbn-pv-sec { padding-top: var(--cbn-space-md); margin-top: var(--cbn-space-xl); border-top: 4px solid var(--cbn-orange); }
.cbn-pv-intro + .cbn-pv-sec { margin-top: 0; }
.cbn-block .cbn-pv-doc h2 { margin: 0 0 var(--cbn-space-md); font: 800 clamp(var(--cbn-size-h2-long-min), 3vw, 2.25rem)/1.1 var(--cbn-font-display); letter-spacing: -.03em; text-wrap: balance; }
.cbn-block .cbn-pv-doc h3 { margin: var(--cbn-space-lg) 0 var(--cbn-space-sm); font: 700 1.3125rem/1.25 var(--cbn-font-display); letter-spacing: -.02em; }
/* H4 = nome del servizio terzo: etichetta tecnica, richiama l'eyebrow del sito */
.cbn-block .cbn-pv-doc h4 { display: flex; align-items: center; gap: 10px; margin: var(--cbn-space-md) 0 var(--cbn-space-xs); font: 500 .875rem/1.3 var(--cbn-font-label); letter-spacing: .1em; text-transform: uppercase; color: var(--cbn-text); }
.cbn-block .cbn-pv-doc h4::before { content: ""; width: 8px; height: 8px; flex: none; background: var(--cbn-orange-strong); }
.cbn-pv-doc strong { font-weight: 700; }

/* Link in palette: arancio scuro (5,11:1 su paper), sottolineati */
.cbn-block .cbn-pv-doc a { color: var(--cbn-orange-strong); font-weight: 700; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; overflow-wrap: anywhere; }
.cbn-block .cbn-pv-doc a:hover { color: var(--cbn-orange-strong-hover); }

/* Elenchi: quadratino arancio come marcatore; riga tecnica per i dati del servizio terzo */
.cbn-pv-doc ul { padding: 0; list-style: none; }
.cbn-pv-doc ul li { position: relative; padding: 4px 0 4px 24px; }
.cbn-pv-doc ul li::before { content: ""; position: absolute; left: 2px; top: .95em; width: 8px; height: 8px; background: var(--cbn-orange-strong); }
/* elenchi di dati brevi (tipi di dati, trattati da...): due colonne, si leggono come una tabella */
.cbn-pv-doc ul.cbn-pv-compact { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--cbn-space-md); border-top: 1px solid var(--cbn-line-on-light); }
.cbn-pv-doc ul.cbn-pv-compact li { border-bottom: 1px solid var(--cbn-line-on-light); padding-block: 8px; }
.cbn-pv-doc ul.cbn-pv-compact li::before { top: 1.1em; }
/* i diritti: ogni voce e' un blocco con filetto, il neretto in testa fa da titolo */
.cbn-pv-doc ul.cbn-pv-rights li { padding: 16px 0 16px 24px; border-top: 1px solid var(--cbn-line-on-light); }
.cbn-pv-doc ul.cbn-pv-rights li:last-child { border-bottom: 1px solid var(--cbn-line-on-light); }
.cbn-pv-doc ul.cbn-pv-rights li::before { top: 1.65em; }
.cbn-pv-doc ul.cbn-pv-rights li strong { display: block; font-size: 1.0625rem; }
/* scheda del servizio terzo (Azienda / Luogo / Dati trattati) */
.cbn-pv-doc p.cbn-pv-meta { padding: var(--cbn-space-sm) var(--cbn-space-md); background: var(--cbn-white); border-left: 4px solid var(--cbn-orange); box-shadow: 0 0 0 1px var(--cbn-line-on-light); font-size: var(--cbn-size-body); line-height: 1.7; }

/* ---- Indice ---- */
.cbn-pv-toc__label { margin: 0 0 var(--cbn-space-sm); padding-bottom: var(--cbn-space-sm); border-bottom: 2px solid var(--cbn-orange); width: fit-content; font: 500 var(--cbn-size-label)/1 var(--cbn-font-label); letter-spacing: .12em; text-transform: uppercase; }
.cbn-pv-toc ul { margin: 0; padding: 0; list-style: none; }
.cbn-block .cbn-pv-toc a { display: flex; align-items: center; min-height: 44px; padding: 6px 0 6px 16px; border-left: 2px solid var(--cbn-line-on-light); color: var(--cbn-text-muted); font: 600 .9375rem/1.3 var(--cbn-font-body); text-decoration: none; transition: color var(--cbn-dur-ui), border-color var(--cbn-dur-ui); }
.cbn-block .cbn-pv-toc a:hover { color: var(--cbn-text); border-left-color: var(--cbn-orange-strong); }
.cbn-block .cbn-pv-toc a[aria-current="true"] { color: var(--cbn-text); border-left: 4px solid var(--cbn-orange-strong); padding-left: 14px; font-weight: 800; }
.cbn-pv-toc__sub { display: none; }
/* sotto-voci: visibili solo per la sezione attiva (o tutte senza JS) */
html:not(.cbn-js) .cbn-pv-toc__sub { display: block; }
.cbn-pv-toc li:has(> a[aria-current="true"]) > .cbn-pv-toc__sub { display: block; }
.cbn-block .cbn-pv-toc__sub a { min-height: 36px; padding-left: 32px; border-left: 2px solid var(--cbn-line-on-light); font-weight: 500; font-size: .875rem; }
.cbn-block .cbn-pv-toc__sub a[aria-current="true"] { padding-left: 30px; }

/* ---- Variante A: indice laterale sticky ---- */
.cbn-pv-main .cbn-pv-grid { display: grid; grid-template-columns: minmax(240px, 3fr) minmax(0, 9fr); gap: var(--cbn-space-2xl); align-items: start; }
.cbn-pv-main .cbn-pv-aside { position: sticky; top: calc(var(--cbn-header-height) + var(--cbn-space-md)); max-height: calc(100svh - var(--cbn-header-height) - var(--cbn-space-lg)); overflow-y: auto; }
.cbn-pv-toc--drop { display: none; }

/* ---- CTA finale (stessa classe reale .cbn-home-cta, titolo piu' contenuto) ---- */
.cbn-pv-cta { padding: calc(var(--cbn-section-pad) * .75) 0; }
.cbn-pv-cta__title { margin: 0; max-width: 14em; font: 800 clamp(2rem, 5vw, 4.25rem)/.98 var(--cbn-font-display); letter-spacing: var(--cbn-tracking-section); text-wrap: balance; }
.cbn-pv-cta__row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--cbn-space-lg); margin-top: var(--cbn-space-xl); padding-top: var(--cbn-space-lg); border-top: 1px solid rgba(255, 255, 255, .35); }
.cbn-pv-cta__row p { max-width: 26em; margin: 0; color: var(--cbn-white); font-size: 1.125rem; }
.cbn-pv-cta .cbn-btn { overflow-wrap: anywhere; }
/* da 1024px .cbn-home-cta mette titolo e riga in due colonne allineate in basso: il margin-top della riga la spingeva 64px sotto il bordo alto */
@media (min-width: 1024px) { .cbn-pv-cta__row { margin-top: 0; } }

/* ---- Mobile ---- */
@media (max-width: 899px) {
	.cbn-pv-main .cbn-pv-grid { display: block; }
	.cbn-pv-toc--side { display: none; }
	/* indice a tendina: resta agganciato sotto l'header, cosi' si cambia sezione senza tornare in cima */
	.cbn-pv-main .cbn-pv-aside { position: sticky; top: var(--cbn-header-height); z-index: 10; margin: 0 calc(var(--cbn-gutter) * -1) var(--cbn-space-lg); max-height: none; overflow: visible; }
	.cbn-pv-toc--drop { display: block; background: var(--cbn-white); border-bottom: 1px solid var(--cbn-line-on-light); box-shadow: 0 6px 12px rgba(37, 38, 40, .08); }
	.cbn-pv-toc--drop summary { display: flex; align-items: center; justify-content: space-between; min-height: 52px; padding: 0 var(--cbn-gutter); font: 500 var(--cbn-size-label)/1 var(--cbn-font-label); letter-spacing: .12em; text-transform: uppercase; cursor: pointer; list-style: none; }
	.cbn-pv-toc--drop summary::-webkit-details-marker { display: none; }
	.cbn-pv-toc--drop summary::after { content: ""; width: 10px; height: 10px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translate(-2px, -2px); transition: transform var(--cbn-dur-ui) var(--cbn-ease-ui); }
	.cbn-pv-toc--drop[open] summary::after { transform: rotate(-135deg); }
	.cbn-block .cbn-pv-toc--drop summary:focus-visible { outline: 3px solid var(--cbn-orange-strong); outline-offset: -3px; }
	.cbn-pv-toc--drop nav { max-height: calc(100svh - var(--cbn-header-height) - 52px - 24px); overflow-y: auto; padding: 0 var(--cbn-gutter) var(--cbn-space-sm); border-top: 1px solid var(--cbn-line-on-light); }
	.cbn-block .cbn-pv-toc--drop a { min-height: 48px; }
	.cbn-pv-doc ul.cbn-pv-compact { grid-template-columns: 1fr; }
	.cbn-pv-doc { font-size: 1.0625rem; }
	.cbn-pv-sec { margin-top: var(--cbn-space-lg); }
	.cbn-pv-cta__row { gap: var(--cbn-space-md); margin-top: var(--cbn-space-lg); }
	.cbn-block.cbn-pv-cta .cbn-btn { width: 100%; justify-content: space-between; padding-inline: var(--cbn-space-md); }
}
/* L'email del Titolare (31 caratteri) a 15px bold non sta nei 280px utili di 320px: andava a capo con "it" orfano e la
   freccia centrata sulla seconda riga. Sotto 480px il testo scala con la viewport (minimo 11px, ancora leggibile a 320px),
   padding e gap si stringono (il selettore e' .cbn-block.cbn-pv-cta: le due classi stanno sulla stessa <section>, un selettore a discendente non matcherebbe mai) cosi' l'email sta su una riga a 320/360/390/430 con la freccia centrata; overflow-wrap:anywhere (sopra) resta solo come rete di sicurezza. */
@media (max-width: 479px) {
	.cbn-block.cbn-pv-cta .cbn-btn { font-size: clamp(.6875rem, 3.5vw, .9375rem); gap: 8px; padding-inline: var(--cbn-space-sm); }
}
/* Sotto 720px l'header e' alto 72px, ma quel valore di --cbn-header-height e' dichiarato solo su .cbn-header
   (cbn-chrome.css): qui, fuori dall'header, il token resta 96px e la tendina si aggancerebbe 24px troppo in basso. */
@media (max-width: 719px) {
	.cbn-pv-main { --cbn-header-height: 72px; }
}
@media (min-width: 900px) and (max-width: 1199px) {
	.cbn-pv-main .cbn-pv-grid { gap: var(--cbn-space-xl); }
}
@media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }

/* Le ancore dell'indice non devono finire sotto l'header sticky: l'altezza dell'header e' gia' in scroll-padding-top
   (cbn-chrome.css), qui solo il respiro e, su mobile, la tendina dell'indice agganciata sotto l'header (52px) */
.cbn-pv-doc [id] { scroll-margin-top: var(--cbn-space-md); }
@media (max-width: 899px) {
	.cbn-pv-doc [id] { scroll-margin-top: calc(52px + var(--cbn-space-md)); }
}

/* Il contenitore del template del tema padre (.template-home-wrapper) ha overflow:hidden, che trasforma l'antenato in
   contenitore di scorrimento e impedisce a position:sticky di agganciare l'indice. "clip" taglia come prima (niente
   scroll orizzontale) ma non crea un contenitore di scorrimento. Il foglio si carica solo su questa pagina. */
.template-home-wrapper { overflow-x: clip; overflow-y: visible; }
