/**
 * Stile frontend blocchi "Apriti Cielo!".
 * Palette: arancione #ff731d, nero #030304, blu navy #323951.
 * Font: Bricolage Grotesque.
 */

.aci-block {
	--aci-orange: #ff731d;
	--aci-black: #030304;
	--aci-navy: #323951;
	--aci-off-white: #faf7f2;
	--aci-border: rgba(3, 3, 4, 0.12);

	font-family: 'Bricolage Grotesque', system-ui, -apple-system, sans-serif;
	color: var(--aci-black);
	box-sizing: border-box;
}

.aci-block *,
.aci-block *::before,
.aci-block *::after {
	box-sizing: inherit;
}

/* ---------- Griglia card (Eventi / Attività / News) ---------- */

.aci-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 28px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.aci-card {
	position: relative;
	background: #fff;
	border: 1px solid var(--aci-border);
	border-radius: 0;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.aci-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 10px 24px rgba(3, 3, 4, 0.1);
}

.aci-card__image {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--aci-navy);
}

.aci-card__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0 !important; /* vedi commento su .aci-carousel__image img più sotto */
}

.aci-card__body {
	padding: 18px 20px 22px;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.aci-badge {
	display: inline-flex;
	align-items: center;
	font-weight: 700;
	font-size: 11px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: #fff;
	background: var(--aci-orange);
	padding: 4px 10px;
	border-radius: 0;
	align-self: flex-start;
	margin-bottom: 10px;
}

.aci-card__title {
	font-weight: 800;
	font-size: 20px;
	line-height: 1.2;
	margin: 0 0 8px;
}

.aci-card__title a {
	color: var(--aci-black);
	text-decoration: none;
}

.aci-card__title a:hover {
	color: var(--aci-orange);
}

.aci-card__meta {
	font-size: 14px;
	color: var(--aci-navy);
	margin: 0 0 4px;
	display: flex;
	align-items: baseline;
	gap: 6px;
}

.aci-card__meta strong {
	color: var(--aci-black);
}

.aci-card__excerpt {
	font-size: 14px;
	line-height: 1.55;
	color: #45464b;
	margin: 10px 0 0;
}

.aci-card__footer {
	margin-top: auto;
	padding-top: 14px;
}

.aci-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 700;
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--aci-black);
	text-decoration: none;
	border-bottom: 2px solid var(--aci-orange);
	padding-bottom: 2px;
}

.aci-btn:hover {
	color: var(--aci-orange);
}

.aci-empty {
	font-size: 15px;
	color: var(--aci-navy);
	font-style: italic;
}

/* ---------- Titolo con barra arancione (in stile volantino) ---------- */

.aci-highlight-title {
	font-weight: 800;
	font-size: clamp(26px, 4vw, 40px);
	line-height: 1.1;
	margin: 0 0 30px;
}

/* Barra arancione dietro al testo. Un background con
   box-decoration-break: clone (anziché uno pseudo-elemento posizionato
   sull'intero blocco) si ripete correttamente sotto OGNI riga quando il
   titolo va a capo su più righe (tipico su mobile), invece di formare
   un unico rettangolo calcolato sulla riga più larga. */
.aci-highlight-title span {
	display: inline;
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
	background-image: linear-gradient(var(--aci-orange), var(--aci-orange));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 100% 34%;
	padding: 0 4px;
	margin: 0 -4px;
}

/* ---------- Cornice ad angoli (decorazione ispirata al volantino) ---------- */

.aci-framed {
	position: relative;
	margin: 14px 0 0 14px;
	border: 2px solid var(--aci-orange);
	border-radius: 0;
	padding: 32px clamp(20px, 4vw, 48px) 36px;
}

.aci-framed::before {
	content: '';
	position: absolute;
	top: -14px;
	left: -14px;
	right: 14px;
	bottom: 14px;
	border: 2px solid var(--aci-orange);
	border-radius: 0;
	pointer-events: none;
	z-index: -1;
}

.aci-corner-rule {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 22px;
}

.aci-corner-rule::before,
.aci-corner-rule::after {
	content: '';
	width: 8px;
	height: 8px;
	border: 2px solid var(--aci-black);
	flex: 0 0 auto;
}

.aci-corner-rule__line {
	flex: 1;
	height: 2px;
	background: var(--aci-black);
}

/* ---------- Box contatto scuro (in stile volantino "Per info e prenotazioni") ---------- */

.aci-contact-box {
	background: var(--aci-navy);
	color: #fff;
	border-radius: 0;
	padding: 28px clamp(20px, 4vw, 40px);
}

.aci-contact-box .aci-highlight-title {
	color: #fff;
}

.aci-contact-box a {
	color: #fff;
}

.aci-contact-box__intro {
	font-size: 18px;
	font-weight: 700;
	margin: 0 0 14px;
}

.aci-contact-box__details {
	border-top: 4px solid var(--aci-orange);
	border-bottom: 4px solid var(--aci-orange);
	padding: 16px 0;
	font-size: 18px;
	font-weight: 700;
}

.aci-contact-box__details a {
	color: #fff;
	text-decoration: none;
}

.aci-contact-box__chiusura {
	margin: 20px 0 0;
	font-size: 15px;
	opacity: 0.9;
}

/* ---------- Intestazione / Logo ---------- */

.aci-intestazione {
	display: flex;
	align-items: center;
	gap: 18px;
}

.aci-intestazione--center {
	justify-content: center;
	text-align: center;
	flex-direction: column;
}

.aci-logo {
	display: inline-flex;
	flex: 0 0 auto;
	line-height: 0;
}

.aci-logo__img {
	display: block;
	width: 72px;
	height: 72px;
	max-width: 72px;
	max-height: 72px;
	object-fit: contain;
}

.aci-logo__svg {
	display: block;
	width: 72px;
	height: 72px;
}

.aci-intestazione__testo {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.aci-intestazione__nome {
	margin: 0;
	font-weight: 800;
	font-size: 22px;
	line-height: 1.1;
	letter-spacing: -0.01em;
}

.aci-intestazione__sottotitolo {
	margin: 0;
	font-weight: 600;
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--aci-navy);
}

/* ---------- Hero (homepage) ---------- */

.aci-hero {
	position: relative;
	display: block; /* necessario quando è un <a> (collegamento impostato): di default un link è "inline" e romperebbe il posizionamento dei figli qui sotto */
	text-decoration: none;
	color: inherit;
}

.aci-hero__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--aci-navy);
}

/* Stesso ragionamento del Carosello Articoli: su schermi larghi un 4:3
   renderebbe l'hero spropositato in altezza. Qui però l'immagine è scelta
   apposta per questo blocco (non riciclata da un articolo), quindi un
   crop pieno (niente sfocatura/bande) è la scelta giusta su entrambi. */
@media (min-width: 601px) {
	.aci-hero__media {
		aspect-ratio: 21 / 9;
	}
}

.aci-hero__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0 !important; /* vedi commento su .aci-card__image img più sopra */
}

.aci-hero__overlay {
	position: absolute;
	inset: 0;
	background: rgba(3, 3, 4, 0.45);
}

.aci-hero__caption {
	position: absolute;
	inset: 0;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: clamp(24px, 5vw, 60px);
}

.aci-hero__text {
	max-width: 780px;
	text-align: center;
}

/* Stessa barra "a evidenziatore" del Carosello/pagina articolo: un blocco
   di colore dietro la parte bassa del testo, clonato su ogni riga
   (box-decoration-break: clone) se il titolo va a capo — per questo deve
   restare "inline". ".aci-hero__text" (il suo genitore) non è un
   contenitore flex proprio per non "blockizzarlo" forzatamente. */
.aci-hero__title {
	display: inline;
	margin: 0;
	font-weight: 800;
	font-size: clamp(32px, 6vw, 64px);
	line-height: 1.4;
	color: #fff;
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
	background-image: linear-gradient(var(--aci-orange), var(--aci-orange));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 100% 34%;
	padding: 0 8px;
}

.aci-hero__subtitle {
	/* Margine SOPRA, non sotto: il titolo è "inline" (vedi sopra) e un
	   margine verticale su un elemento inline non ha alcun effetto sul
	   layout — lo spazio fra titolo e sottotitolo va quindi creato qui. */
	margin: 18px 0 0;
	font-size: clamp(15px, 2vw, 20px);
	font-weight: 600;
	color: #fff;
}

/* ---------- Carosello Articoli ---------- */

/* Card semplice — immagine (stesso 4:3 di .aci-card__image qui sopra) e
   sotto titolo + data, niente più testo in overlay sopra la foto. Niente
   trucchi di "rapporto d'aspetto a scatola" per decidere l'altezza: ogni
   slide è normale flusso di documento, e tutte le slide acquisiscono
   automaticamente la stessa altezza di quella più alta (comportamento di
   default di un contenitore flex) — nessun JavaScript necessario anche
   quando un titolo va su due righe e un altro no. */

.aci-carousel {
	position: relative;
}

.aci-carousel__viewport {
	position: relative;
	overflow: hidden;
}

.aci-carousel__track {
	display: flex;
	transition: transform 0.5s ease;
}

.aci-carousel__slide {
	flex: 0 0 100%;
	width: 100%;
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
	/* Bordo + leggera ombra: senza, l'immagine e il blocco testo sotto
	   sembrano due elementi slegati invece di un'unica card coerente (lo
	   stesso identico trattamento di .aci-card qui sopra). */
	background: #fff;
	border: 1px solid var(--aci-border);
	box-shadow: 0 10px 24px rgba(3, 3, 4, 0.08);
}

.aci-carousel__image {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--aci-navy);
}

/* Su schermi larghi il carosello occupa tutta la larghezza della pagina:
   lo stesso 4:3 che su una card stretta (o su mobile) va benissimo,
   qui renderebbe l'immagine (e quindi l'intero carosello) spropositata in
   altezza. Il valore di base resta 4:3 (mobile-first); da qui in su passa
   a un formato più basso e panoramico. */
@media (min-width: 601px) {
	.aci-carousel__image {
		aspect-ratio: 21 / 9;
	}
}

/* Sfondo sfocato (stesso trucco di Spotify/Apple Music per le copertine):
   clona via "background: inherit" lo stesso "background-image" impostato
   inline in PHP su .aci-carousel__image, ingrandito per non mostrare mai un
   bordo trasparente ai margini quando sfocato. Riempie tutta la card,
   qualunque sia il suo rapporto (4:3 mobile, 21:9 desktop). */
.aci-carousel__image::before {
	content: '';
	position: absolute;
	inset: 0;
	background: inherit;
	filter: blur(18px);
	transform: scale(1.15);
}

/* La foto mantiene il SUO rapporto naturale (mai forzata a un 16:9 fisso:
   niente "aspect-ratio" qui) e sta per intero nel box ("object-fit:
   contain", mai tagliata). "position: absolute" + "inset: 0" la fa
   combaciare esattamente coi bordi della card sul lato in cui il suo
   rapporto coincide con quello del box — zero bande lì — mentre
   "object-fit: contain" centra automaticamente l'eventuale spazio residuo
   (dove compare lo sfondo sfocato) sull'altro lato. */
.aci-carousel__image img {
	position: absolute;
	inset: 0;
	z-index: 1;
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
	margin: 0 !important; /* vedi commento su .aci-card__image img più sopra */
}

/* Tutte le slide hanno la stessa altezza (quella della più alta, per il
   normale comportamento di un contenitore flex su .aci-carousel__track):
   quando QUESTA slide ha meno testo, ".aci-carousel__caption" cresce
   ("flex: 1 1 auto") per assorbire lo spazio in più invece di lasciarlo
   vuoto in fondo alla card, e centra verticalmente il suo contenuto. Il
   titolo deve però restare un elemento "inline" per la sottolineatura
   multi-riga qui sotto — un contenitore flex "blockizza" forzatamente i
   suoi figli DIRETTI, quindi a essere flex è questo contenitore, mentre il
   titolo sta dentro ".aci-carousel__caption-inner", un div normale. */
.aci-carousel__caption {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	justify-content: center;
	padding: 12px 16px 14px;
}

/* Stessa identica barra "a evidenziatore" usata per l'h1 del tema (vedi
   .page-title-bar) e per le altre card del plugin: un blocco di colore
   dietro la parte bassa del testo, con box-decoration-break: clone perché
   si ripeta identica sotto OGNI riga se il titolo va a capo su più righe
   (richiede che l'elemento resti "inline" — per questo .aci-carousel__caption-inner
   non è un contenitore flex, altrimenti lo "blockizzerebbe" forzatamente e
   la barra comparirebbe una sola volta invece che su ogni riga). */
.aci-carousel__title {
	display: inline;
	margin: 0 -4px;
	font-weight: 800;
	font-size: clamp(17px, 2vw, 22px);
	line-height: 1.5;
	color: var(--aci-black);
	box-decoration-break: clone;
	-webkit-box-decoration-break: clone;
	background-image: linear-gradient(var(--aci-orange), var(--aci-orange));
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 100% 34%;
	padding: 0 4px;
}

.aci-carousel__meta {
	/* Margine SOPRA, non sotto: il titolo è "inline" (vedi sopra) e un
	   margine verticale su un elemento inline non ha alcun effetto sul
	   layout — lo spazio fra titolo e data va quindi creato qui, non lì. */
	margin: 16px 0 0;
	font-size: 13.5px;
	color: var(--aci-navy);
}

.aci-carousel__arrow {
	position: absolute;
	top: 38%; /* non più il centro esatto: sotto l'immagine ora c'è anche il blocco titolo+data */
	transform: translateY(-50%);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 0;
	border-radius: 50%;
	background: rgba(3, 3, 4, 0.45);
	color: #fff;
	font-size: 22px;
	line-height: 1;
	cursor: pointer;
}

.aci-carousel__arrow:hover {
	background: var(--aci-orange);
}

.aci-carousel__arrow--prev { left: 14px; }
.aci-carousel__arrow--next { right: 14px; }

.aci-carousel__dots {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin-top: 14px;
}

.aci-carousel__dot {
	width: 9px;
	height: 9px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--aci-border);
	cursor: pointer;
}

.aci-carousel__dot.is-active {
	background: var(--aci-orange);
}

/* ---------- Elenco Pagine (card minimali, 3 per riga) ---------- */

.aci-pagine-grid {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 28px;
}

.aci-pagine-card {
	flex: 1 1 300px;
	max-width: 340px;
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: var(--aci-black);
	background: #fff;
	border: 1px solid var(--aci-border);
	overflow: hidden;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.aci-pagine-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 10px 24px rgba(3, 3, 4, 0.1);
}

.aci-pagine-card__image {
	aspect-ratio: 4 / 3;
	overflow: hidden;
}

.aci-pagine-card__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	margin: 0 !important; /* vedi commento su .aci-carousel__image img più sopra */
}

.aci-pagine-card__body {
	padding: 18px 20px 22px;
}

.aci-pagine-card__title {
	margin: 0 0 8px;
	font-weight: 800;
	font-size: 18px;
	line-height: 1.3;
	color: var(--aci-black);
}

.aci-pagine-card__excerpt {
	margin: 0;
	font-size: 14px;
	line-height: 1.55;
	color: #45464b;
}

/* ---------- Elenco Articoli: paginazione ---------- */

.aci-pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 6px;
	margin-top: 32px;
}

.aci-pagination__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	padding: 0 10px;
	border: 1px solid var(--aci-border);
	color: var(--aci-black);
	font-weight: 600;
	font-size: 14px;
	text-decoration: none;
}

.aci-pagination__link:hover {
	border-color: var(--aci-orange);
	color: var(--aci-orange);
}

.aci-pagination__link.is-active {
	background: var(--aci-orange);
	border-color: var(--aci-orange);
	color: #fff;
}

.aci-pagination__link--prev,
.aci-pagination__link--next {
	font-weight: 700;
	text-transform: uppercase;
	font-size: 12px;
	letter-spacing: 0.04em;
}

.aci-pagination__ellipsis {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	color: var(--aci-black);
	font-weight: 700;
}

/* ---------- Responsive ---------- */

@media (max-width: 600px) {
	.aci-grid {
		grid-template-columns: 1fr;
	}

	.aci-pagine-card {
		flex-basis: 100%;
		max-width: 100%;
	}

	.aci-carousel__arrow {
		width: 34px;
		height: 34px;
		font-size: 18px;
	}

	.aci-framed {
		margin-left: 10px;
		padding: 22px 16px 26px;
	}

	.aci-framed::before {
		top: -10px;
		left: -10px;
		right: 10px;
		bottom: 10px;
	}

	.aci-logo__img,
	.aci-logo__svg {
		width: 56px;
		height: 56px;
	}
}
