/* Stili dei blocchi dinamici di GAL Core.
   Usano esclusivamente i token esposti da theme.json: nessun colore hardcoded. */

/* --- Percorso di navigazione -------------------------------------------- */

.gal-breadcrumb {
	margin-bottom: var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--salvia);
}

.gal-breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0 0.5em;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gal-breadcrumb__item + .gal-breadcrumb__item::before {
	content: "/";
	margin-inline-end: 0.5em;
	color: var(--wp--preset--color--bordo);
}

.gal-breadcrumb__item [aria-current="page"] {
	color: var(--wp--preset--color--antracite);
}

/* --- Indice Amministrazione trasparente ---------------------------------- */

.gal-trasparenza {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
	gap: var(--wp--preset--spacing--20);
	align-items: start;
}

.gal-trasparenza__sezione {
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-top: var(--wp--custom--accent--bar) solid var(--wp--preset--color--ocra);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
	background: var(--wp--preset--color--bianco);
}

.gal-trasparenza__titolo {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h-4);
	font-weight: 800;
	line-height: 1.15;
	color: var(--wp--preset--color--verde-bosco);
}

.gal-trasparenza__lista {
	margin: 0;
	padding: 0;
	list-style: none;
}

.gal-trasparenza__item {
	padding: 6px 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.4;
}

.gal-trasparenza__item + .gal-trasparenza__item {
	border-top: 1px solid var(--wp--preset--color--bordo);
}

/* Sottolivelli: rientro con filo verticale, il separatore resta al primo livello. */
.gal-trasparenza__lista--l2,
.gal-trasparenza__lista--l3 {
	margin: 6px 0 0;
	padding-left: 12px;
	border-left: 2px solid var(--wp--preset--color--bordo);
}

.gal-trasparenza__lista--l2 .gal-trasparenza__item,
.gal-trasparenza__lista--l3 .gal-trasparenza__item {
	padding: 3px 0;
	font-size: var(--wp--preset--font-size--caption);
	border-top: 0;
}

.gal-trasparenza__vuota {
	color: var(--wp--preset--color--salvia);
}

.gal-trasparenza__stato {
	font-size: var(--wp--preset--font-size--caption);
	font-style: italic;
}

.gal-trasparenza__errore {
	border: 1px solid var(--wp--preset--color--terracotta);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card-dense);
	color: var(--wp--preset--color--terracotta);
}

/* --- Iscrizione alla newsletter ------------------------------------------ */

.gal-newsletter {
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-top: var(--wp--custom--accent--bar) solid var(--wp--preset--color--ocra);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
	background: var(--wp--preset--color--carta-calda);
}

.gal-newsletter__titolo {
	margin: 0 0 6px;
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h-4);
	font-weight: 800;
	line-height: 1.15;
	color: var(--wp--preset--color--verde-bosco);
}

.gal-newsletter__testo {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--antracite);
}

.gal-newsletter__form {
	display: grid;
	gap: var(--wp--custom--gap--grid);
}

.gal-newsletter__campo {
	display: grid;
	gap: 4px;
	margin: 0;
}

.gal-newsletter__campo label {
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 600;
	color: var(--wp--preset--color--antracite);
}

.gal-newsletter__campo input {
	width: 100%;
	min-height: var(--wp--custom--button--height);
	box-sizing: border-box;
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-radius: var(--wp--custom--radius--button);
	padding: 0 12px;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--antracite);
	background: var(--wp--preset--color--bianco);
}

.gal-newsletter__campo input:focus-visible,
.gal-newsletter__consenso input:focus-visible,
.gal-newsletter__pulsante:focus-visible {
	outline: 2px solid var(--wp--preset--color--petrolio);
	outline-offset: 2px;
}

.gal-newsletter__obbligatorio {
	color: var(--wp--preset--color--terracotta);
}

.gal-newsletter__consenso {
	display: flex;
	gap: 8px;
	align-items: flex-start;
	margin: 0;
	font-size: var(--wp--preset--font-size--caption);
	line-height: 1.5;
	color: var(--wp--preset--color--antracite);
}

.gal-newsletter__consenso input {
	flex: 0 0 auto;
	margin-top: 2px;
}

.gal-newsletter__azione {
	margin: 0;
}

.gal-newsletter__pulsante {
	min-height: var(--wp--custom--button--height);
	border: 0;
	border-radius: var(--wp--custom--radius--button);
	padding: 0 22px;
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 700;
	color: var(--wp--preset--color--crema);
	background: var(--wp--preset--color--verde-bosco);
	cursor: pointer;
}

.gal-newsletter__pulsante[disabled] {
	cursor: progress;
	opacity: 0.7;
}

.gal-newsletter__esito {
	margin: 0 0 var(--wp--preset--spacing--20);
	border-left: var(--wp--custom--accent--bar) solid var(--wp--preset--color--salvia);
	border-radius: 0;
	padding: 10px 14px;
	font-size: var(--wp--preset--font-size--small);
	background: var(--wp--preset--color--bianco);
}

.gal-newsletter__esito--ok {
	border-left-color: var(--wp--preset--color--verde-bosco);
	color: var(--wp--preset--color--verde-bosco);
}

.gal-newsletter__esito--errore {
	border-left-color: var(--wp--preset--color--terracotta);
	color: var(--wp--preset--color--terracotta);
}

.gal-newsletter__avviso {
	border: 1px solid var(--wp--preset--color--terracotta);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card-dense);
	color: var(--wp--preset--color--terracotta);
}

/* Campo esca: fuori dallo schermo, non display:none — deve restare
   compilabile da un automatismo e invisibile a chi legge, anche con i CSS
   parzialmente caricati. */
.gal-newsletter__esca {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* --- Bandi ---------------------------------------------------------------- */

/* La vetrina non è una griglia di notizie: i bandi sono pochi e pesanti, e
   fra due bandi aperti non c'è parità — uno scade fra sei giorni, l'altro fra
   sei mesi. Quello in scadenza prende tutta la riga e il fondo scuro, gli
   altri stanno accanto. È la differenza che si vede prima di leggere. */
.gal-bandi--vetrina,
.gal-bandi--shortlist {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: var(--wp--preset--spacing--20);
	align-items: start;
}

.gal-bando {
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
}

.gal-bando > * {
	margin-block: 0 var(--wp--preset--spacing--20);
}

.gal-bando > :last-child {
	margin-bottom: 0;
}

/* Schede di misura uguale, e il pulsante sempre sul fondo: senza questo la
   fila si allinea sul bando col titolo più lungo, e le schede accanto
   sembrano incomplete. Titolo e occhiello si troncano con i puntini invece di
   allungare il box — vedi `line-clamp` più sotto. */
.gal-bandi--vetrina .gal-bando,
.gal-bandi--shortlist .gal-bando {
	display: flex;
	flex-direction: column;
	min-height: 320px;
}

.gal-bando__azione {
	margin-top: auto;
}

.gal-bando__titolo {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}

.gal-bando__estratto {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	overflow: hidden;
}

/* --- Fila scorrevole, da quattro bandi in su ----------------------------- */

/* Scorrimento nativo: nessuna libreria e nessun JavaScript, quindi funziona
   anche se lo script non arriva. `scroll-snap` perché una scheda tagliata a
   metà sembra un errore di caricamento, e la barra di scorrimento resta
   visibile di proposito — se la nascondi, nessuno sa che c'è altro. */
.gal-bandi--scorrevole {
	display: flex;
	grid-template-columns: none;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x proximity;
	padding-bottom: var(--wp--preset--spacing--10);
}

.gal-bandi--scorrevole .gal-bando {
	flex: 0 0 clamp(260px, 32%, 360px);
	scroll-snap-align: start;
}

/* L'area che scorre prende il fuoco da tastiera: va detto dove si trova. */
.gal-bandi--scorrevole:focus-visible {
	outline: 2px solid var(--wp--preset--color--petrolio);
	outline-offset: 4px;
}

.gal-bando__titolo {
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h3);
	line-height: 1.15;
}

.gal-bando__misura {
	color: var(--wp--preset--color--salvia);
}

.gal-bando__estratto {
	font-size: var(--wp--preset--font-size--small);
}

.gal-bando__data {
	font-size: var(--wp--preset--font-size--small);
}

/* Il conto dei giorni è l'informazione per cui la gente apre questa pagina:
   ha il corpo di un titolo, non di una didascalia. */
.gal-bando__urgenza {
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h2);
	font-weight: 800;
	line-height: 1;
	letter-spacing: -0.01em;
}

/* In scadenza: fondo petrolio a tutta riga. */
.gal-bandi--vetrina .gal-bando--in-scadenza {
	grid-column: 1 / -1;
	background: var(--wp--preset--color--petrolio);
	color: var(--wp--preset--color--crema);
}

.gal-bando--in-scadenza .gal-bando__misura,
.gal-bando--in-scadenza .gal-bando__estratto,
.gal-bando--in-scadenza .gal-bando__data {
	color: var(--wp--custom--text--on-dark-muted);
}

.gal-bando--in-scadenza .gal-bando__urgenza {
	color: var(--wp--preset--color--ocra);
}

.gal-bando--in-scadenza a:where(:not(.wp-element-button)) {
	color: var(--wp--preset--color--crema);
}

/* Aperto: fondo chiaro e barra ocra a sinistra. Sta accanto agli altri, non
   sopra: c'è tempo, e il sito non deve fingere un'urgenza che non c'è. */
.gal-bandi--vetrina .gal-bando--aperto,
.gal-bandi--shortlist .gal-bando--sempre-aperto {
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo-crema);
	border-left: var(--wp--custom--accent--bar) solid var(--wp--preset--color--ocra);
	background: var(--wp--preset--color--crema);
}

.gal-bandi--shortlist .gal-bando--sempre-aperto {
	border-left-color: var(--wp--preset--color--petrolio);
}

.gal-bando--aperto .gal-bando__urgenza {
	font-size: var(--wp--preset--font-size--h4);
	font-weight: 700;
	color: var(--wp--preset--color--verde-bosco);
}

.gal-bandi__vuoto {
	margin: 0;
	border: 1px dashed var(--wp--preset--color--bordo);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
	font-size: var(--wp--preset--font-size--lead);
	background: var(--wp--preset--color--grigio-spento);
}

/* --- Archivio dei bandi -------------------------------------------------- */

/* Righe, non schede: chi arriva in archivio sa già cosa cerca, e vuole
   scorrere. La scadenza resta visibile perché è la chiave con cui la gente
   riconosce «il bando del 2019». */
.gal-bandi__archivio {
	margin: 0;
	padding: 0;
	list-style: none;
}

.gal-bando--riga {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 4px var(--wp--preset--spacing--20);
	border-bottom: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-radius: 0;
	padding: var(--wp--preset--spacing--20) 0;
	align-items: baseline;
}

.gal-bando--riga .gal-chip {
	grid-column: 1;
	grid-row: 1;
	justify-self: start;
}

.gal-bando--riga .gal-bando__titolo {
	grid-column: 1;
	font-size: var(--wp--preset--font-size--h4);
}

.gal-bando--riga .gal-bando__dettagli {
	grid-column: 1;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--salvia);
}

.gal-bando--riga .gal-bando__graduatoria {
	grid-column: 2;
	grid-row: 1 / span 3;
	align-self: center;
	font-size: var(--wp--preset--font-size--small);
	white-space: nowrap;
}

/* --- Targa in testa alla pagina del bando -------------------------------- */

/* Colonna flex con `gap` e non margini sui figli: i margini si possono
   annullare a vicenda o essere sovrascritti da una regola più specifica — è
   già successo, con il pulsante della graduatoria appiccicato alle date. Il
   `gap` non si azzera per sbaglio. */
.gal-bando-targa {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--20);
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-top: var(--wp--custom--accent--bar) solid var(--wp--preset--color--ocra);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
	margin-bottom: var(--wp--preset--spacing--40);
	background: var(--wp--preset--color--carta-calda);
}

.gal-bando-targa > * {
	margin-block: 0;
	max-width: 100%;
}

.gal-bando-targa--in-scadenza {
	border-color: var(--wp--preset--color--ocra);
	background: var(--wp--preset--color--crema);
}

.gal-bando-targa--in-istruttoria,
.gal-bando-targa--chiuso {
	border-top-color: var(--wp--preset--color--salvia);
	background: var(--wp--preset--color--grigio-spento);
}

.gal-bando__voci {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: var(--wp--preset--spacing--20);
	margin: 0;
	align-self: stretch;
}

.gal-bando__voce dt {
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 700;
	letter-spacing: var(--wp--custom--kicker--tracking);
	text-transform: uppercase;
	color: var(--wp--preset--color--salvia);
}

.gal-bando__voce dd {
	margin: 2px 0 0;
	font-weight: 600;
}

/* --- Titoli che non possono uscire dal loro box -------------------------- */

/* I titoli arrivano da chi pubblica, incollati da PDF e da Word: il primo che
   abbiamo visto aveva quattordici spazi non separabili, quindi una riga sola
   di 121 caratteri che usciva dal boxino. Il render normalizza gli `nbsp`
   (inc/bandi-render.php), questa è la seconda rete — vale anche per un codice
   di misura lunghissimo senza spazi, che nessuna normalizzazione spezzerebbe. */
.gal-bando__titolo,
.gal-collegato__titolo,
.gal-graduatoria__titolo,
.gal-documenti__allegati li {
	overflow-wrap: anywhere;
}

/* Senza questo un contenuto larghissimo allarga la cella della griglia invece
   di andare a capo: i box smettono di essere della stessa misura. */
.gal-collegato,
.gal-bando,
.gal-graduatoria {
	min-width: 0;
}

/* --- Pastiglie di stato -------------------------------------------------- */

/* Doppia classe di proposito: `.gal-chip` sta nel foglio del tema e l'ordine
   di caricamento fra i due file non è garantito. Con la specificità più alta
   il colore di stato vince comunque. */
.gal-chip.gal-chip--in-scadenza {
	border-color: var(--wp--preset--color--ocra);
	background: var(--wp--preset--color--ocra);
	color: var(--wp--preset--color--antracite);
}

.gal-chip.gal-chip--aperto {
	border-color: var(--wp--preset--color--verde-bosco);
	background: var(--wp--preset--color--verde-bosco);
	color: var(--wp--preset--color--crema);
}

.gal-chip.gal-chip--sempre-aperto {
	border-color: var(--wp--preset--color--petrolio);
	background: var(--wp--preset--color--petrolio);
	color: var(--wp--preset--color--crema);
}

.gal-chip.gal-chip--in-istruttoria {
	border-color: var(--wp--preset--color--salvia);
	background: transparent;
	color: var(--wp--preset--color--antracite);
}

.gal-chip.gal-chip--chiuso {
	border-color: var(--wp--preset--color--bordo);
	background: var(--wp--preset--color--bordo);
	color: var(--wp--preset--color--antracite);
}

.gal-chip.gal-chip--indeterminato {
	border-color: var(--wp--preset--color--terracotta);
	background: transparent;
	color: var(--wp--preset--color--terracotta);
}

.gal-chip.gal-chip--graduatoria-definitiva {
	border-color: var(--wp--preset--color--verde-bosco);
	background: var(--wp--preset--color--verde-bosco);
	color: var(--wp--preset--color--crema);
}

.gal-chip.gal-chip--graduatoria-provvisoria {
	border-color: var(--wp--preset--color--salvia);
	background: transparent;
	color: var(--wp--preset--color--antracite);
}

/* --- Contenuti collegati al bando ---------------------------------------- */

.gal-collegati,
.gal-graduatorie {
	margin-top: var(--wp--preset--spacing--50);
}

.gal-collegati__griglia {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: var(--wp--preset--spacing--20);
	align-items: start;
}

/* Boxini: una pubblicazione all'albo è un evento datato, quindi la data viene
   prima del titolo — è il modo in cui la gente li distingue fra loro. */
.gal-collegato {
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-top: var(--wp--custom--accent--bar) solid var(--wp--preset--color--salvia);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card-dense);
	background: var(--wp--preset--color--carta-calda);
}

.gal-collegato > * {
	margin-block: 0 var(--wp--preset--spacing--10);
}

.gal-collegato > :last-child {
	margin-bottom: 0;
}

.gal-collegato__titolo {
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h4);
	line-height: 1.2;
}

.gal-collegato__estratto {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--antracite);
}

/* --- Graduatorie in fondo alla pagina del bando -------------------------- */

.gal-graduatoria {
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo-crema);
	border-left: var(--wp--custom--accent--bar) solid var(--wp--preset--color--verde-bosco);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
	background: var(--wp--preset--color--crema);
}

.gal-graduatoria + .gal-graduatoria {
	margin-top: var(--wp--preset--spacing--20);
}

/* La provvisoria è un passaggio, non un esito: sta più indietro. */
.gal-graduatoria--provvisoria {
	border-left-color: var(--wp--preset--color--salvia);
	background: var(--wp--preset--color--grigio-spento);
}

.gal-graduatoria > * {
	margin-block: 0 var(--wp--preset--spacing--20);
}

.gal-graduatoria > :last-child {
	margin-bottom: 0;
}

.gal-graduatoria__titolo {
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h3);
	line-height: 1.15;
}

.gal-graduatoria__data {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--salvia);
}

.gal-graduatoria__documenti {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
}

/* --- Documenti del bando e della voce d'albo ----------------------------- */

.gal-documenti {
	margin-top: var(--wp--preset--spacing--50);
}

/* I due pulsanti principali stanno in fila e vanno a capo su schermo stretto:
   sono l'azione della pagina, non una nota. */
.gal-documenti__principali {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--20);
	margin: 0;
}

/* Larghezza uguale per tutti i pulsanti della stessa riga.
   Prima ognuno era largo quanto la sua etichetta, e «Bando (PDF)» accanto a
   «Modulo di domanda» e «Determina» dava tre misure diverse in fila. Con la
   stessa base e lo stesso fattore di crescita gli elementi su una riga si
   spartiscono lo spazio in parti uguali; la base di 15rem decide anche quando
   si va a capo, e sotto i ~34rem si impilano. */
/* Il tetto serve al caso di un pulsante solo: senza, «Bando (PDF)» da solo si
   stirava per tutta la larghezza del testo, che e' peggio del disallineamento
   di partenza. Con due o tre in riga il tetto non si raggiunge. */
.gal-documenti__principali > * {
	flex: 1 1 15rem;
	max-width: min(22rem, 100%);
}

/* Il pulsante dentro il gruppo della determinazione deve riempire la sua
   cella come gli altri, altrimenti resta della larghezza dell'etichetta e
   l'allineamento si perde proprio dove serve. */
.gal-documenti__principali > .gal-determina {
	align-items: stretch;
}

.gal-documenti__principali .wp-element-button {
	width: 100%;
	text-align: center;
}

.gal-documenti--albo {
	margin-top: var(--wp--preset--spacing--30);
	margin-bottom: var(--wp--preset--spacing--40);
}

.gal-documenti__titolo {
	margin: var(--wp--preset--spacing--40) 0 var(--wp--preset--spacing--20);
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--h4);
}

/* Gli allegati sono un elenco di link, non pulsanti: sono molti e secondari,
   e una fila di dieci pulsanti nasconderebbe i due che contano. */
.gal-documenti__allegati {
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
}

.gal-documenti__allegati li {
	border-bottom: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	padding: var(--wp--preset--spacing--20) 0;
}

/* --- Determinazioni: si chiedono, non si scaricano ----------------------- */

/* Contenuto di frase, non di blocco: questi pulsanti stanno dentro <p> e <li>,
   e un <div> qui spezzerebbe il paragrafo che li contiene. */
.gal-determina {
	display: inline-flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--wp--preset--spacing--10);
}

.gal-determina__estremi {
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--grigio-spento);
}

/* Senza JavaScript il pulsante non aprirebbe niente, quindi resta nascosto e
   il messaggio arriva dal <noscript>. La regola serve perché
   `.wp-element-button` imposta `display` e vincerebbe su `[hidden]`. */
.gal-determina__apri[hidden] {
	display: none;
}

.gal-determina__nota {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
}

.gal-determina__dialogo {
	max-width: 34rem;
	margin: auto;
	padding: var(--wp--custom--pad--card);
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--bianco);
	color: var(--wp--preset--color--antracite);
}

.gal-determina__dialogo::backdrop {
	background: var(--wp--custom--overlay--verde);
}

.gal-determina__chiudi {
	margin-top: var(--wp--preset--spacing--30);
}

/* --- Rimando al bando, dall'albo e dagli atti ---------------------------- */

.gal-collegato-bando {
	border-left: var(--wp--custom--accent--bar) solid var(--wp--preset--color--ocra);
	padding: var(--wp--preset--spacing--20) var(--wp--preset--spacing--30);
	background: var(--wp--preset--color--crema);
	font-family: var(--wp--preset--font-family--condensed);
	font-weight: 600;
}

/* --- Archivio dei bandi del ciclo chiuso --------------------------------- */

/* Riquadro che scorre in verticale, non undici schede srotolate in pagina:
   la pagina che lo ospita ha un prima e un dopo, e cinque schermate di
   archivio li nascondono entrambi. Il `max-height` è in `vh` perché il punto
   è lasciare visibile qualcosa d'altro sullo schermo, non stare in un numero
   fisso di pixel. Sotto le quattro schede non scorre niente e il riquadro non
   si nota. */
.gal-archivio {
	max-height: min(72vh, 760px);
	overflow-y: auto;
	overscroll-behavior-y: contain;
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--preset--spacing--30);
}

/* Come per la fila scorrevole dei bandi vivi: un'area che scorre deve poter
   prendere il fuoco da tastiera, e deve dire quando ce l'ha. */
.gal-archivio:focus-visible {
	outline: 2px solid var(--wp--preset--color--petrolio);
	outline-offset: 4px;
}

.gal-archivio__elenco {
	margin: 0;
	padding: 0;
	list-style: none;
}

/* L'ultima scheda non lascia un vuoto in fondo al riquadro: lì il margine non
   separa da niente, e sembra che l'elenco continui. */
.gal-archivio__elenco > :last-child {
	margin-bottom: 0;
}

/* Dentro una scheda i documenti sono vicini a ciò che descrivono: il margine
   da pagina intera (`.gal-documenti`) qui spezzerebbe il boxino in due. */
.gal-archivio .gal-documenti {
	margin-top: var(--wp--preset--spacing--20);
	align-self: stretch;
}

.gal-archivio .gal-documenti__titolo {
	margin-top: var(--wp--preset--spacing--20);
	font-size: var(--wp--preset--font-size--small);
}

.gal-archivio__data {
	color: var(--wp--preset--color--salvia);
	font-size: var(--wp--preset--font-size--caption);
	white-space: nowrap;
}

/* Un avviso senza documenti lo dichiara. L'alternativa era un pulsante che non
   scarica niente, o una riga «Scadenza: —»: due modi di dire una cosa falsa. */
.gal-archivio__attesa {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	font-style: italic;
	color: var(--wp--preset--color--salvia);
}

/* --- Notizie da Eurodesk ------------------------------------------------- */

/* Due stati, e il primo è quello che si vede sempre. Finché il visitatore non
   chiede il widget c'è il riquadro d'invito; l'iframe lo costruisce lo script
   al clic, e prende il posto del riquadro (assets/js/eurodesk.js). Il perché
   sta in testa a inc/eurodesk.php: la pagina incorporata carica Google
   Analytics, e questo sito non ha un banner da far comparire. */
.gal-eurodesk__invito {
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-left: var(--wp--custom--accent--bar) solid var(--wp--preset--color--ocra);
	border-radius: var(--wp--custom--radius--card);
	padding: var(--wp--custom--pad--card);
	background: var(--wp--preset--color--crema);
}

.gal-eurodesk__spiega {
	margin-top: 0;
	font-size: var(--wp--preset--font-size--small);
}

.gal-eurodesk__azione {
	margin: var(--wp--preset--spacing--30) 0 0;
}

/* Il widget del coordinamento nazionale è responsivo: a larghezza piena ogni
   notizia diventa una riga invece di una colonna alta e stretta. L'altezza la
   calcola il PHP dal numero di notizie (inc/eurodesk.php); qui c'è solo il
   riquadro. Nessun `overflow: hidden`: se un giorno il widget crescesse, una
   barra di scorrimento è meglio di una notizia tagliata. */
.gal-eurodesk__widget {
	display: block;
	width: 100%;
	border: var(--wp--custom--border--width) solid var(--wp--preset--color--bordo);
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--bianco);
}

/* Il rimando fuori resta leggibile anche quando l'iframe non arriva — nessun
   JavaScript, rete lenta, blocco delle terze parti nel browser, servizio giù. */
.gal-eurodesk__fonte {
	margin-top: var(--wp--preset--spacing--20);
	margin-bottom: 0;
	font-size: var(--wp--preset--font-size--small);
}

/* --- Profili social ------------------------------------------------------ */

.gal-social {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--10);
	margin: 0;
	padding: 0;
	list-style: none;
}

/* 44x44 e' il minimo per un bersaglio tattile (WCAG 2.5.8, e 2.5.5 al livello
   AAA). L'icona ne occupa 24: il resto e' area cliccabile intorno, che non si
   vede ma si tocca. Senza, due icone da 24px affiancate sono un bersaglio che
   sul telefono si sbaglia. */
.gal-social__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: var(--wp--custom--radius--card);
	color: currentColor;
	text-decoration: none;
}

/* `currentColor` e non un colore proprio: lo stesso blocco sta nel footer su
   fondo petrolio e in Contatti su fondo chiaro, e in entrambi eredita il
   colore del testo intorno — che il tema ha gia' portato oltre il 3:1. Il
   colore di marca del social qui sarebbe un contrasto da riverificare due
   volte, per un'icona che si riconosce dalla forma. */
.gal-social__icona {
	width: 24px;
	height: 24px;
	flex: none;
}

.gal-social__link:hover .gal-social__icona,
.gal-social__link:focus-visible .gal-social__icona {
	color: var(--wp--preset--color--ocra);
}

.gal-social__link:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* Il singolo allegato reso in linea: nel corpo importato stava dentro un
   paragrafo, come immagine, e li' deve restare inline — una lista spezzerebbe
   il testo attorno. */
.gal-allegati-migrati--inline {
	display: inline;
}

/* --- Notizia in primo piano ---------------------------------------------- */

/* Niente media query, come il resto del foglio: due colonne finche' ci stanno
   e una sola quando non ci stanno piu'. I due `flex-basis` dicono la soglia —
   sotto i ~780px di contenitore la fascia si impila da sola. */
.gal-primo-piano {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--wp--preset--spacing--40);
}

.gal-primo-piano__media {
	flex: 1 1 320px;
	display: block;
	margin-bottom: 0;
}

.gal-primo-piano__testo {
	flex: 1 1 400px;
	min-width: 0;
}

/* L'etichetta non e' un `gal-kicker`: ocra su crema sta a 2,4:1, e qui il
   testo porta informazione — e' la ragione per cui la notizia sta in cima.
   Come targhetta piena il rapporto con l'antracite sale a 5:1. */
.gal-primo-piano__etichetta {
	display: inline-block;
	margin: 0 0 var(--wp--preset--spacing--20);
	border-radius: var(--wp--custom--radius--chip);
	padding: 4px 12px;
	background: var(--wp--preset--color--ocra);
	color: var(--wp--preset--color--antracite);
	font-family: var(--wp--preset--font-family--condensed);
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 700;
	letter-spacing: var(--wp--custom--kicker--tracking);
	text-transform: uppercase;
}

.gal-primo-piano__data {
	margin: 0 0 var(--wp--preset--spacing--10);
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--salvia);
}

.gal-primo-piano__titolo {
	margin: 0 0 var(--wp--preset--spacing--20);
	font-size: var(--wp--preset--font-size--h2);
}

.gal-primo-piano__titolo a {
	color: inherit;
	text-decoration: none;
}

.gal-primo-piano__titolo a:hover,
.gal-primo-piano__titolo a:focus-visible {
	text-decoration: underline;
}

.gal-primo-piano__occhiello {
	margin: 0 0 var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--lead);
}

.gal-primo-piano__azione {
	margin: 0;
}

/* Categoria vuota: il blocco non rende nulla, e la fascia che lo contiene se
   ne va con lui invece di restare una banda crema alta e vuota sotto la hero.
   Dove `:has()` non c'e' resta la banda: un vuoto, non un errore. */
.gal-fascia-primo-piano:not(:has(.gal-primo-piano)) {
	display: none;
}
