/*
 * Lega dei Comuni - Calendar.
 *
 * Neutral defaults only: restyle by overriding the --ldc-cal-* custom properties on .ldc-cal
 * (or any ancestor). The month grid becomes an agenda list when the calendar itself is narrower
 * than 40rem (container query, so it follows the column width, not the viewport).
 */

.ldc-cal {
	--ldc-cal-text: inherit;
	--ldc-cal-muted: #595959;
	--ldc-cal-border: #d0d0d0;
	--ldc-cal-background: transparent;
	--ldc-cal-day-background: #ffffff;
	--ldc-cal-outside-background: #f6f6f6;
	--ldc-cal-today-background: #f0f0f0;
	--ldc-cal-today-border: #1e1e1e;
	--ldc-cal-link: inherit;
	--ldc-cal-link-hover: inherit;
	--ldc-cal-focus: #1e1e1e;
	--ldc-cal-badge-background: #ececec;
	--ldc-cal-badge-text: #1e1e1e;
	--ldc-cal-mode-presenza: var(--ldc-cal-badge-background);
	--ldc-cal-mode-online: var(--ldc-cal-badge-background);
	--ldc-cal-mode-partner: var(--ldc-cal-badge-background);
	--ldc-cal-switch-current-background: #1e1e1e;
	--ldc-cal-switch-current-text: #ffffff;
	--ldc-cal-button-background: transparent;
	--ldc-cal-button-text: inherit;
	--ldc-cal-button-border: #1e1e1e;
	--ldc-cal-radius: 4px;
	--ldc-cal-gap: 0.5rem;
	--ldc-cal-font-size: 1rem;
	--ldc-cal-event-font-size: 0.875em;
	--ldc-cal-caption-font-size: 1.375em;
	--ldc-cal-heading-font-size: 1.25em;
	--ldc-cal-cell-min-height: 6rem;
	--ldc-cal-title-lines: 5;
	--ldc-cal-transition: 150ms ease-in-out;

	color: var(--ldc-cal-text);
	background: var(--ldc-cal-background);
	font-size: var(--ldc-cal-font-size);
}

.ldc-cal--month {
	container: ldc-cal / inline-size;
}

.ldc-cal *,
.ldc-cal *::before,
.ldc-cal *::after {
	box-sizing: border-box;
}

.ldc-cal a {
	color: var(--ldc-cal-link);
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.ldc-cal a:hover {
	color: var(--ldc-cal-link-hover);
	text-decoration-thickness: 2px;
}

.ldc-cal a:focus-visible,
.ldc-cal [tabindex="-1"]:focus-visible {
	outline: 2px solid var(--ldc-cal-focus);
	outline-offset: 2px;
	border-radius: 2px;
}

.ldc-cal ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.ldc-cal__status,
.ldc-cal__daylabel {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* Month view: navigation. */

.ldc-cal__nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var(--ldc-cal-gap);
	margin-bottom: var(--ldc-cal-gap);
}

.ldc-cal__nav-link {
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	min-height: 44px;
	padding: 0.25em 0.5em;
}

.ldc-cal__nav-link--next {
	margin-inline-start: auto;
}

/* Legend and view switch. */

.ldc-cal__controls {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: var(--ldc-cal-gap) calc(var(--ldc-cal-gap) * 2);
	margin-bottom: var(--ldc-cal-gap);
}

.ldc-cal__legend {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ldc-cal-gap);
}

.ldc-cal__legend .ldc-cal__mode {
	margin-top: 0;
}

.ldc-cal__mode--presenza {
	background: var(--ldc-cal-mode-presenza);
}

.ldc-cal__mode--online {
	background: var(--ldc-cal-mode-online);
}

.ldc-cal__switch {
	display: inline-flex;
	border: 1px solid var(--ldc-cal-border);
	border-radius: var(--ldc-cal-radius);
	overflow: hidden;
}

.ldc-cal .ldc-cal__switch-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.25em 1em;
	text-decoration: none;
}

.ldc-cal .ldc-cal__switch-link--current {
	color: var(--ldc-cal-switch-current-text);
	background: var(--ldc-cal-switch-current-background);
	font-weight: 600;
}

/* Subscribe block. */

.ldc-cal__subscribe {
	margin-top: calc(var(--ldc-cal-gap) * 2);
}

.ldc-cal__subscribe-intro {
	margin: 0 0 var(--ldc-cal-gap);
}

.ldc-cal__subscribe-options {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: calc(var(--ldc-cal-gap) * 2);
}

.ldc-cal__subscribe-option {
	display: flex;
	flex-direction: column;
	gap: calc(var(--ldc-cal-gap) / 2);
	max-width: 320px;
}

.ldc-cal .ldc-cal__subscribe-button {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.25em 1em;
	color: var(--ldc-cal-button-text);
	background: var(--ldc-cal-button-background);
	border: 1px solid var(--ldc-cal-button-border);
	border-radius: var(--ldc-cal-radius);
	font-weight: 600;
	text-decoration: none;
}

.ldc-cal__subscribe-caption {
	margin: 0;
	color: var(--ldc-cal-muted);
	font-size: 0.875em;
}

/* Month view: grid. */

.ldc-cal__grid {
	width: 100%;
	margin: 0;
	border-collapse: collapse;
	table-layout: fixed;
}

.ldc-cal__caption {
	margin-bottom: var(--ldc-cal-gap);
	font-size: var(--ldc-cal-caption-font-size);
	font-weight: 700;
	text-align: center;
}

.ldc-cal__weekday {
	padding: 0.35em;
	color: var(--ldc-cal-muted);
	font-weight: 600;
	text-align: center;
	border-bottom: 1px solid var(--ldc-cal-border);
}

.ldc-cal__weekday abbr {
	text-decoration: none;
	cursor: default;
}

.ldc-cal__day {
	height: var(--ldc-cal-cell-min-height);
	padding: 0.35em;
	vertical-align: top;
	background: var(--ldc-cal-day-background);
	border: 1px solid var(--ldc-cal-border);
}

.ldc-cal__day--outside {
	background: var(--ldc-cal-outside-background);
}

.ldc-cal__day--today {
	background: var(--ldc-cal-today-background);
	box-shadow: inset 0 0 0 2px var(--ldc-cal-today-border);
}

.ldc-cal__date {
	display: block;
	margin-bottom: 0.25em;
}

.ldc-cal__daynum {
	font-weight: 600;
}

.ldc-cal__day--today .ldc-cal__daynum {
	font-weight: 800;
}

.ldc-cal__events {
	display: grid;
	gap: var(--ldc-cal-gap);
	font-size: var(--ldc-cal-event-font-size);
	line-height: 1.35;
}

.ldc-cal__event {
	overflow-wrap: anywhere;
	hyphens: auto;
}

.ldc-cal__time {
	display: block;
	color: var(--ldc-cal-muted);
	font-variant-numeric: tabular-nums;
}

.ldc-cal__grid .ldc-cal__link {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: var(--ldc-cal-title-lines);
	line-clamp: var(--ldc-cal-title-lines);
	overflow: hidden;
}

.ldc-cal__mode {
	display: inline-block;
	margin-top: 0.25em;
	padding: 0.1em 0.45em;
	color: var(--ldc-cal-badge-text);
	background: var(--ldc-cal-badge-background);
	border-radius: var(--ldc-cal-radius);
	font-size: 0.875em;
}

.ldc-cal__event--presenza .ldc-cal__mode,
.ldc-cal__item--presenza .ldc-cal__mode {
	background: var(--ldc-cal-mode-presenza);
}

.ldc-cal__event--online .ldc-cal__mode,
.ldc-cal__item--online .ldc-cal__mode {
	background: var(--ldc-cal-mode-online);
}

.ldc-cal__mode--partner {
	background: var(--ldc-cal-mode-partner);
}

.ldc-cal__empty {
	margin: var(--ldc-cal-gap) 0 0;
	color: var(--ldc-cal-muted);
}

.ldc-cal[aria-busy="true"] .ldc-cal__body {
	opacity: 0.6;
}

@media (prefers-reduced-motion: no-preference) {
	.ldc-cal__body {
		transition: opacity var(--ldc-cal-transition);
	}
}

/* Month view on a narrow column: agenda of the days that have seminars. */

@container ldc-cal (max-width: 40rem) {
	.ldc-cal__grid,
	.ldc-cal__grid tbody,
	.ldc-cal__grid tr,
	.ldc-cal__grid td {
		display: block;
		width: auto;
		height: auto;
	}

	.ldc-cal__grid thead,
	.ldc-cal__grid td.ldc-cal__day--outside,
	.ldc-cal__grid td.ldc-cal__day--empty,
	.ldc-cal__daynum {
		display: none;
	}

	.ldc-cal__caption {
		display: block;
	}

	.ldc-cal__day {
		margin-bottom: var(--ldc-cal-gap);
		padding: 0.75em;
		border-radius: var(--ldc-cal-radius);
	}

	.ldc-cal__daylabel {
		display: block;
		position: static;
		width: auto;
		height: auto;
		margin: 0;
		overflow: visible;
		clip: auto;
		white-space: normal;
		font-weight: 700;
	}

	.ldc-cal__daylabel::first-letter {
		text-transform: uppercase;
	}

	.ldc-cal__grid .ldc-cal__link {
		display: inline;
		-webkit-line-clamp: none;
		line-clamp: none;
	}

	.ldc-cal__events {
		font-size: 1em;
	}
}

/* List view. */

.ldc-cal__group + .ldc-cal__group {
	margin-top: calc(var(--ldc-cal-gap) * 4);
}

.ldc-cal__group-title {
	margin: 0 0 var(--ldc-cal-gap);
	font-size: var(--ldc-cal-heading-font-size);
}

.ldc-cal__items {
	display: grid;
	gap: calc(var(--ldc-cal-gap) * 2);
}

.ldc-cal__item {
	padding-bottom: calc(var(--ldc-cal-gap) * 2);
	border-bottom: 1px solid var(--ldc-cal-border);
}

.ldc-cal__item-title {
	margin: 0 0 0.25em;
	font-weight: 700;
}

.ldc-cal__sessions {
	color: var(--ldc-cal-muted);
}

.ldc-cal__sessions .ldc-cal__time {
	display: inline;
}

.ldc-cal__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.25em 1em;
	margin: 0.35em 0 0;
}

.ldc-cal__meta .ldc-cal__mode {
	margin-top: 0;
}

.ldc-cal__meta-label {
	font-weight: 600;
}
