/* Calendario Eventi – stili frontend.
   Colori e misure arrivano da variabili CSS impostate inline sul contenitore:
   sono quindi sovrascrivibili dal tema, dal CSS personalizzato e dai controlli Elementor. */

.ce-wrap {
	--ce-accent: #8f2f1d;
	--ce-accent-text: #fff;
	--ce-bg: #fff;
	--ce-surface: #f8fafc;
	--ce-text: #1a1a1a;
	--ce-muted: #8a8a8a;
	--ce-border: #e5e5e5;
	--ce-today-bg: #faf6f4;
	--ce-radius: 4px;
	--ce-gap: 8px;
	--ce-cell-h: 96px;
	--ce-font-size: 16px;
	--ce-cols: 3;
	--ce-ratio: 1/1;
	--ce-fit: cover;
	--ce-thumb: 96px;
	--ce-text-align: left;
	--ce-list-align: left;
	--ce-venue-bg: #f4f4f4;
	--ce-venue-text: #1a1a1a;
	--ce-venue-active-bg: #8f2f1d;
	--ce-venue-active-text: #fff;
	--ce-venue-radius: 10px;
	--ce-venue-pad: 18px;
	--ce-venue-gap: 12px;
	--ce-shadow: 0 6px 20px rgba(0, 0, 0, .08);
	--ce-title-tt: uppercase;

	box-sizing: border-box;
	color: var(--ce-text);
	font-size: var(--ce-font-size);
	line-height: 1.45;
}

.ce-wrap *,
.ce-wrap *::before,
.ce-wrap *::after {
	box-sizing: inherit;
}

/* Con un font scelto nelle impostazioni l'override vale anche su titoli e controlli,
   che nei temi hanno quasi sempre una regola propria. Senza font scelto non tocchiamo
   niente e la tipografia resta quella del tema. */
.ce-has-font,
.ce-has-font h2,
.ce-has-font h3,
.ce-has-font h4,
.ce-has-font p,
.ce-has-font a,
.ce-has-font span,
.ce-has-font button,
.ce-has-font select,
.ce-has-font label {
	font-family: var(--ce-font);
}

/* ---------- Selettore sedi ---------- */

.ce-venues {
	margin-bottom: calc(var(--ce-gap) * 2);
}

.ce-venues__list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ce-venue-gap);
}

.ce-venue {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: calc(var(--ce-venue-pad) / 2) 1.2em;
	border: 0;
	border-radius: var(--ce-venue-radius);
	background: var(--ce-venue-bg);
	color: var(--ce-venue-text);
	font-size: .95em;
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;
	transition: background-color .18s ease, color .18s ease;
}

.ce-venue:hover,
.ce-venue:focus-visible {
	background: var(--ce-venue-active-bg);
	color: var(--ce-venue-active-text);
	opacity: .85;
}

.ce-venue.is-active {
	background: var(--ce-venue-active-bg);
	color: var(--ce-venue-active-text);
	opacity: 1;
}

/* Schede a tutta larghezza: una colonna per sede, tutte della stessa misura. */
.ce-venues--tabs .ce-venues__list {
	display: grid;
	grid-auto-columns: minmax(0, 1fr);
	grid-auto-flow: column;
	gap: var(--ce-venue-gap);
}

.ce-venues--tabs .ce-venue {
	padding: var(--ce-venue-pad) 1em;
	font-size: 1.05em;
	font-weight: 500;
}

.ce-venues__form {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: calc(var(--ce-gap) / 1.5);
}

.ce-venues__label {
	color: var(--ce-muted);
	font-size: .85em;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.ce-venues__select {
	padding: .45em .8em;
	border: 1px solid var(--ce-border);
	border-radius: var(--ce-radius);
	background: var(--ce-bg);
	color: var(--ce-text);
	font: inherit;
	font-size: .95em;
}

.ce-venues__go {
	padding: .5em 1em;
	border: 0;
	border-radius: var(--ce-radius);
	background: var(--ce-accent);
	color: var(--ce-accent-text);
	font: inherit;
	font-size: .9em;
	font-weight: 600;
	cursor: pointer;
}

/* Con JavaScript attivo il filtro è immediato: il pulsante di invio non serve. */
.ce-js .ce-venues__go {
	display: none;
}

/* ---------- Impaginazione ---------- */

.ce-split {
	display: grid;
	gap: calc(var(--ce-gap) * 5);
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	align-items: start;
}

.ce-layout--stack .ce-split {
	grid-template-columns: minmax(0, 1fr);
	gap: calc(var(--ce-gap) * 3);
}

/* ---------- Intestazione del mese ---------- */

.ce-cal-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--ce-gap);
	margin-bottom: calc(var(--ce-gap) * 3);
}

.ce-cal-title {
	flex: 1;
	margin: 0;
	color: var(--ce-text);
	font-size: 1.7em;
	font-weight: 700;
	letter-spacing: .01em;
	text-align: center;
	text-transform: uppercase;
}

.ce-nav {
	display: inline-flex;
	align-items: center;
	gap: .4em;
	flex: none;
	padding: .55em .9em;
	border: 1px solid var(--ce-border);
	border-radius: var(--ce-radius);
	background: var(--ce-bg);
	color: var(--ce-muted);
	font-size: .8em;
	font-weight: 500;
	letter-spacing: .08em;
	line-height: 1;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.ce-nav:hover,
.ce-nav:focus-visible {
	border-color: var(--ce-accent);
	color: var(--ce-accent);
}

.ce-nav__icon {
	font-size: 1.3em;
	line-height: 1;
}

.ce-nav--disabled {
	opacity: .35;
	cursor: default;
}

/* ---------- Griglia del mese ---------- */

.ce-grid {
	display: flex;
	flex-direction: column;
}

.ce-row {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.ce-row--dow {
	margin-bottom: calc(var(--ce-gap) * 1.5);
	padding-bottom: calc(var(--ce-gap) * 1.5);
	border-bottom: 1px solid var(--ce-border);
}

.ce-dow {
	color: var(--ce-muted);
	font-size: .85em;
	font-weight: 500;
	letter-spacing: .18em;
	text-align: center;
	text-transform: uppercase;
}

/* Le linee della griglia nascono dai bordi delle celle: una sola linea per lato. */
.ce-grid .ce-row:not(.ce-row--dow) {
	border-left: 1px solid var(--ce-border);
}

.ce-grid .ce-row:not(.ce-row--dow):first-of-type {
	border-top: 1px solid var(--ce-border);
}

.ce-cell {
	position: relative;
	min-height: var(--ce-cell-h);
	border-right: 1px solid var(--ce-border);
	border-bottom: 1px solid var(--ce-border);
	background: var(--ce-bg);
}

.ce-cell--out {
	color: var(--ce-muted);
	opacity: .45;
}

.ce-day__static {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .45em;
	width: 100%;
	height: 100%;
	min-height: var(--ce-cell-h);
	padding: .4em;
}

.ce-cell--today {
	background: var(--ce-today-bg);
}

.ce-day__toggle {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: .45em;
	width: 100%;
	height: 100%;
	min-height: var(--ce-cell-h);
	padding: .4em;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease;
}

.ce-day__toggle:hover {
	background: var(--ce-surface);
}

.ce-day__toggle:focus-visible {
	outline: 2px solid var(--ce-accent);
	outline-offset: -2px;
}

.ce-day__num {
	font-size: 1em;
	font-weight: 400;
	line-height: 1;
}

.ce-cell--past .ce-day__num {
	color: var(--ce-muted);
}

.ce-cell--today .ce-day__num {
	font-weight: 700;
}

/* Giorno selezionato: la cella si riempie col colore principale. */
.ce-cell.is-selected .ce-day__toggle {
	background: var(--ce-accent);
	color: var(--ce-accent-text);
}

.ce-cell.is-selected .ce-day__num {
	color: var(--ce-accent-text);
	font-weight: 700;
}

.ce-day__dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 4px;
	min-height: 8px;
}

.ce-dot {
	display: block;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--ce-dot, var(--ce-accent));
}

.ce-cell.is-selected .ce-dot {
	background: var(--ce-accent-text);
}

.ce-day__titles {
	display: flex;
	flex-direction: column;
	gap: 3px;
	width: 100%;
}

.ce-chip {
	display: block;
	max-width: 100%;
	padding: .2em .45em;
	border-radius: calc(var(--ce-radius) / 2);
	background: var(--ce-accent);
	color: var(--ce-accent-text);
	font-size: .7em;
	line-height: 1.3;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.ce-chip--more {
	background: transparent;
	color: var(--ce-muted);
	font-weight: 700;
}

.ce-cell.is-selected .ce-chip {
	background: var(--ce-accent-text);
	color: var(--ce-accent);
}

/* ---------- Colonna eventi ---------- */

.ce-list-title {
	margin: 0 0 calc(var(--ce-gap) * 2);
	color: var(--ce-muted);
	font-size: .95em;
	font-weight: 500;
	letter-spacing: .18em;
	text-align: center;
	text-transform: uppercase;
}

.ce-day-group + .ce-day-group {
	margin-top: calc(var(--ce-gap) * 3);
}

.ce-day-badge {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 3.4em;
	height: 3.4em;
	margin: 0 auto calc(var(--ce-gap) * 2);
	border: 1px solid var(--ce-accent);
	border-radius: var(--ce-radius);
	color: var(--ce-accent);
	font-size: 1em;
	font-weight: 500;
}

.ce-day-group__items {
	display: flex;
	flex-direction: column;
	gap: calc(var(--ce-gap) * 2.5);
	padding-top: calc(var(--ce-gap) * 2.5);
	border-top: 1px solid var(--ce-border);
}

.ce-event {
	display: flex;
	align-items: flex-start;
	gap: calc(var(--ce-gap) * 2);
}

.ce-event__media {
	display: block;
	flex: none;
	width: var(--ce-thumb);
	line-height: 0;
	text-decoration: none;
}

.ce-event__img {
	display: block;
	width: 100%;
	height: var(--ce-thumb);
	border-radius: calc(var(--ce-radius) / 1.5);
	object-fit: cover;
	object-position: center;
}

.ce-event__body {
	flex: 1;
	min-width: 0;
	text-align: var(--ce-list-align, left);
}

.ce-event__body > *:first-child {
	margin-top: 0;
}

.ce-event__time {
	display: inline-flex;
	align-items: center;
	gap: .4em;
	margin: 0;
	color: var(--ce-accent);
	font-size: .88em;
	font-weight: 500;
	text-align: left;
}

.ce-icon {
	flex: none;
}

.ce-event__title {
	margin: .35em 0 0;
	font-size: 1.05em;
	font-weight: 700;
	line-height: 1.3;
	text-transform: var(--ce-title-tt);
}

.ce-event__title a {
	color: inherit;
	text-decoration: none;
}

.ce-event__title a:hover,
.ce-event__title a:focus-visible {
	color: var(--ce-accent);
}

.ce-event__venue {
	margin: .3em 0 0;
	color: var(--ce-muted);
	font-size: .85em;
}

.ce-list-empty {
	margin: calc(var(--ce-gap) * 2) 0 0;
	color: var(--ce-muted);
	text-align: center;
}

/* ---------- Griglia locandine ---------- */

.ce-posters__grid {
	display: grid;
	gap: calc(var(--ce-gap) * 2);
	grid-template-columns: repeat(var(--ce-cols), minmax(0, 1fr));
}

.ce-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--ce-border);
	border-radius: var(--ce-radius);
	background: var(--ce-bg);
	box-shadow: var(--ce-shadow);
}

.ce-card__media {
	display: block;
	overflow: hidden;
	background: var(--ce-surface);
	line-height: 0;
	text-decoration: none;
}

.ce-card__media .ce-card__img {
	transition: transform .35s ease;
}

.ce-card__media:hover .ce-card__img,
.ce-card__media:focus-visible .ce-card__img {
	transform: scale(1.03);
}

.ce-card__img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: var(--ce-ratio);
	object-fit: var(--ce-fit);
	object-position: center;
}

.ce-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	align-items: stretch;
	gap: .4em;
	padding: calc(var(--ce-gap) * 1.5);
	text-align: var(--ce-text-align, left);
}

.ce-card__cta {
	margin: auto 0 0;
	padding-top: .4em;
}

.ce-event__cta {
	margin: .5em 0 0;
}

.ce-card__date {
	margin: 0;
	color: var(--ce-accent);
	font-size: .82em;
	font-weight: 700;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.ce-card__title {
	margin: 0;
	font-size: 1.05em;
	font-weight: 700;
	line-height: 1.25;
	text-transform: var(--ce-title-tt);
}

.ce-card__title a {
	color: inherit;
	text-decoration: none;
}

.ce-card__title a:hover,
.ce-card__title a:focus-visible {
	color: var(--ce-accent);
}

.ce-card__venue {
	margin: 0;
	color: var(--ce-muted);
	font-size: .85em;
	font-weight: 600;
}

.ce-btn {
	display: inline-block;
	padding: .6em 1.1em;
	border-radius: var(--ce-radius);
	background: var(--ce-accent);
	color: var(--ce-accent-text);
	font-size: .9em;
	font-weight: 600;
	text-decoration: none;
	transition: filter .15s ease;
}

.ce-btn--small {
	padding: .4em .9em;
	font-size: .8em;
}

.ce-btn:hover,
.ce-btn:focus-visible {
	color: var(--ce-accent-text);
	filter: brightness(.9);
}

.ce-empty-msg {
	margin: calc(var(--ce-gap) * 2) 0 0;
	color: var(--ce-muted);
	text-align: center;
}

/* ---------- Pagina del singolo evento ---------- */

.ce-single {
	margin: 0 0 calc(var(--ce-gap) * 2);
	padding: calc(var(--ce-gap) * 1.5);
	border-left: 4px solid var(--ce-accent);
	border-radius: var(--ce-radius);
	background: var(--ce-surface);
}

.ce-single__label {
	margin: 0 0 .5em;
	color: var(--ce-muted);
	font-size: .82em;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.ce-single__dates {
	margin: 0;
	padding: 0;
	list-style: none;
}

.ce-single__date {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: .2em .7em;
	margin: 0;
}

.ce-single__date + .ce-single__date {
	margin-top: .45em;
	padding-top: .45em;
	border-top: 1px solid var(--ce-border);
}

.ce-single__when {
	color: var(--ce-accent);
	font-size: 1.05em;
	font-weight: 700;
	letter-spacing: .03em;
	text-transform: uppercase;
}

.ce-single__venue {
	color: var(--ce-muted);
	font-size: .95em;
}

.ce-single__cta {
	margin: calc(var(--ce-gap) * 2) 0 0;
}

/* ---------- Stati ---------- */

.ce-wrap.is-loading {
	opacity: .5;
	pointer-events: none;
}

.ce-error {
	margin: var(--ce-gap) 0 0;
	color: #b32d2e;
}

.ce-wrap .screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	overflow: hidden;
	white-space: nowrap;
}

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

@media (max-width: 1024px) {
	.ce-split {
		grid-template-columns: minmax(0, 1fr);
		gap: calc(var(--ce-gap) * 3);
	}
}

@media (max-width: 900px) {
	.ce-posters__grid {
		grid-template-columns: repeat(min(var(--ce-cols), 2), minmax(0, 1fr));
	}
}

@media (max-width: 782px) {
	.ce-venues--tabs .ce-venues__list {
		grid-auto-flow: row;
	}

	/* Le variabili arrivano inline sul contenitore e batterebbero qualsiasi regola del
	   foglio di stile: qui vanno sovrascritte le proprietà, non le variabili. */
	.ce-cell,
	.ce-day__toggle,
	.ce-day__static {
		min-height: 54px;
	}

	.ce-cal-title {
		font-size: 1.25em;
	}

	.ce-nav__label {
		display: none;
	}

	.ce-nav {
		padding: .5em .7em;
	}

	.ce-chip {
		height: 6px;
		padding: 0;
		border-radius: 3px;
		font-size: 0;
	}

	.ce-chip--more {
		display: none;
	}
}

@media (max-width: 600px) {
	.ce-posters__grid {
		grid-template-columns: minmax(0, 1fr);
	}
}
