/* Shell */
.turismo33-public--events {
	--events-dark: #526100;
	--events-light: #a7c01a;
	--events-soft: #f4f6e8;
	--events-text: #253025;
	color: var(--events-text);
	font-family: "DM Sans", sans-serif;
}

.turismo33-events__inner,
.turismo33-event-detail {
	margin: auto;
	max-width: 76rem;
	padding: clamp(1rem, 4vw, 3rem);
}

.turismo33-public--events h1,
.turismo33-public--events h2,
.turismo33-public--events h3,
.turismo33-public--events h4 {
	font-family: Outfit, sans-serif;
	line-height: 1.12;
}

.turismo33-events__header {
	margin-bottom: clamp(1.2rem, 2.4vw, 1.8rem);
	max-width: 52rem;
}

.turismo33-events__eyebrow {
	color: var(--events-dark);
	font-size: .8rem;
	font-weight: 800;
	letter-spacing: .14em;
	margin: 0 0 .5rem;
}

.turismo33-events__header h2 {
	font-size: clamp(2rem, 4vw, 3.25rem);
	margin: 0 0 .75rem;
}

.turismo33-events__intro {
	font-size: clamp(1rem, 2vw, 1.2rem);
	line-height: 1.6;
	margin: 0;
}

/* Filters */
.turismo33-events__periods,
.turismo33-events__pagination {
	display: flex;
	flex-wrap: wrap;
	gap: .65rem;
	margin-bottom: 1.5rem;
}

.turismo33-events__periods {
	margin-bottom: 1.2rem;
}

.turismo33-events__periods a,
.turismo33-events__pagination a,
.turismo33-event-card__link,
.turismo33-public--events button,
.turismo33-event-action {
	background: #fff;
	border: 2px solid var(--events-dark);
	border-radius: 2rem;
	color: var(--events-dark);
	font-weight: 700;
	padding: .55rem 1rem;
	text-decoration: none;
}

.turismo33-events__periods [aria-current],
.turismo33-events__pagination [aria-current],
.turismo33-public--events button {
	background: var(--events-dark);
	color: #fff;
}

.turismo33-events__periods [aria-current] {
	box-shadow: inset 0 0 0 2px #fff;
	text-decoration: underline;
	text-underline-offset: .2em;
}

.turismo33-events__archive-link {
	margin-inline-start: auto;
}

.turismo33-events__periods a:focus-visible,
.turismo33-events__pagination a:focus-visible,
.turismo33-event-card__link:focus-visible {
	outline: 3px solid #1d4ed8;
	outline-offset: 3px;
}

.turismo33-events__filters {
	align-items: end;
	background: var(--events-soft);
	border-radius: .85rem;
	display: flex;
	gap: .75rem;
	margin-bottom: 2rem;
	padding: 1rem;
}

.turismo33-events__filter-field {
	display: grid;
	gap: .35rem;
	min-width: min(100%, 18rem);
}

.turismo33-events__filter-field label {
	font-weight: 700;
}

.turismo33-events__filter-field select {
	background: #fff;
	border: 1px solid #697260;
	border-radius: .4rem;
	min-height: 2.75rem;
	padding: .6rem;
}

/* Cards */
.turismo33-events__grid {
	display: grid;
	gap: 1.5rem;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 17.5rem), 22.5rem));
	inline-size: 100%;
	justify-content: start;
}

.turismo33-event-card {
	background: #fff;
	border-radius: 1rem;
	box-shadow: 0 .4rem 1.5rem #52610020;
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.turismo33-event-card__image,
.turismo33-event-card__fallback {
	aspect-ratio: 16 / 9;
	inline-size: 100%;
	object-fit: cover;
}

.turismo33-event-card__fallback {
	background: linear-gradient(135deg, var(--events-dark), var(--events-light));
}

.turismo33-event-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: 1.35rem;
}

.turismo33-event-states {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	order: -1;
}

.turismo33-event-state {
	background: #edf2d4;
	border-radius: 1rem;
	color: var(--events-dark);
	font-size: .875rem;
	font-weight: 700;
	padding: .25rem .65rem;
}

.turismo33-event-state--cancelled {
	background: #8c2020;
	color: #fff;
}

@media (max-width: 48rem) {
	.turismo33-events__archive-link {
		flex-basis: 100%;
		margin-inline-start: 0;
		text-align: center;
	}
}

.turismo33-event-card__date,
.turismo33-event-detail__date {
	color: var(--events-dark);
	font-size: 1.25rem;
	font-weight: 800;
}

.turismo33-event-card h2 {
	font-size: clamp(1.55rem, 2.2vw, 2rem);
	margin: 0 0 .75rem;
}

.turismo33-event-card__summary {
	font-size: 1rem;
	line-height: 1.55;
}

.turismo33-event-card__meta {
	color: #5c6558;
	font-size: .9rem;
	margin-bottom: 1.25rem;
}

.turismo33-event-card__meta p {
	margin: .2rem 0;
}

.turismo33-event-card__access {
	display: grid;
	gap: .2rem;
	margin-top: .2rem;
}

.turismo33-event-entry-meta {
	color: var(--events-dark);
	font-weight: 700;
}

.turismo33-event-card__link {
	align-self: start;
	margin-top: auto;
}

/* Detail */
.turismo33-event-detail__back {
	align-items: center;
	color: var(--events-dark);
	display: inline-flex;
	font-weight: 700;
	margin-bottom: 1.25rem;
	text-decoration: none;
}

.turismo33-event-detail__header {
	display: grid;
	gap: 2rem;
}

.turismo33-event-detail__hero {
	aspect-ratio: 16 / 7;
	background: var(--events-soft);
	border-radius: 1rem;
	inline-size: 100%;
	max-height: min(26rem, 50vh);
	object-fit: contain;
}

.turismo33-event-detail__intro {
	max-width: 68rem;
}

.turismo33-event-detail__intro h1 {
	font-size: clamp(2rem, 5vw, 3rem);
	letter-spacing: -.035em;
	margin: .8rem 0;
	text-wrap: balance;
}

.turismo33-event-detail__summary {
	font-size: clamp(1.15rem, 2vw, 1.4rem);
	line-height: 1.5;
	max-width: 58rem;
}

.turismo33-event-detail__meta {
	color: #596255;
	font-weight: 600;
}

.turismo33-event-detail section {
	margin-block: 2rem;
}

.turismo33-event-detail section > h2 {
	font-size: 1.5rem;
	margin-bottom: 1rem;
}

/* Editorial content has no wrapper in the shared detail markup. */
.turismo33-event-detail > section:not([class]) > :not(h2):not(.turismo33-event-occurrences) {
	font-size: 1rem;
	line-height: 1.6;
	max-width: 70ch;
}

.turismo33-event-detail__access {
	border-inline-start: .25rem solid var(--events-dark);
	padding-inline-start: 1.25rem;
}

.turismo33-event-detail__access-cost > strong {
	color: var(--events-dark);
	font-size: 1.25rem;
	font-weight: 800;
}

.turismo33-event-entry {
	background: var(--events-soft);
	border-radius: .75rem;
	max-width: 58rem;
	padding: 1.25rem 1.5rem;
}

.turismo33-event-detail .turismo33-event-entry > h2 {
	font-size: 1rem;
	margin: 0 0 .35rem;
	text-transform: uppercase;
}

.turismo33-event-entry__price {
	color: var(--events-dark);
	font-size: 1.25rem;
	font-weight: 800;
	margin: 0;
}

.turismo33-event-entry__information {
	line-height: 1.55;
	margin: .65rem 0 0;
}

/* Occurrences */
.turismo33-event-occurrences {
	display: grid;
	gap: 1rem;
}

.turismo33-event-occurrence {
	background: var(--events-soft);
	border-radius: .65rem;
	padding: 1rem 1.25rem;
}

.turismo33-event-occurrence__heading {
	display: flex;
	flex-wrap: wrap;
	font-weight: 800;
	gap: .75rem;
}

.turismo33-event-occurrence__heading strong {
	color: #8c2020;
}

.turismo33-event-occurrence__meta p {
	margin: .25rem 0;
}

/* Chronological program */
.turismo33-event-schedule__title { color: var(--events-dark); font-size: 1.35rem; margin: -.75rem 0 .5rem; }
.turismo33-event-schedule__intro { max-width: 60rem; }
.turismo33-event-detail .turismo33-event-schedule__day { margin-block: 1.5rem 2rem; }
.turismo33-event-schedule__day-heading { background: var(--events-soft); border-inline-start: .35rem solid var(--events-light); color: var(--events-dark); font-size: clamp(1.15rem, 2.2vw, 1.45rem); margin: 0; padding: .7rem 1rem; }
.turismo33-public--events .turismo33-event-schedule__items,
.turismo33-public--events .turismo33-event-schedule__subitems { list-style: none; margin: 0; padding: 0; padding-inline-start: 0; }
.turismo33-public--events .turismo33-event-schedule__item,
.turismo33-public--events .turismo33-event-schedule__subitems > li { list-style: none; }
.turismo33-public--events .turismo33-event-schedule__item::marker,
.turismo33-public--events .turismo33-event-schedule__subitems > li::marker { content: ""; }
.turismo33-event-schedule__item { border-bottom: 1px solid #d8ddca; padding: .15rem 0; }
.turismo33-event-schedule__item--cancelled .turismo33-event-schedule__row { opacity: .78; }
.turismo33-event-schedule__row, .turismo33-event-schedule__subitem { display: grid; gap: 1rem; grid-template-columns: 7.25rem minmax(0, 1fr); padding: .8rem 1rem; }
.turismo33-event-schedule__time { color: var(--events-dark); display: flex; flex-direction: column; font-weight: 800; line-height: 1.25; }
.turismo33-event-schedule__time small { color: #687260; font-size: .78rem; font-weight: 600; margin-top: .15rem; }
.turismo33-event-schedule__content h4, .turismo33-event-schedule__content h5 { font-size: 1.08rem; margin: 0; }
.turismo33-event-schedule__place, .turismo33-event-schedule__range, .turismo33-event-schedule__description p { color: #5c6558; font-size: .9rem; margin: .2rem 0 0; }
.turismo33-event-schedule details > summary { cursor: pointer; list-style: none; position: relative; }
.turismo33-event-schedule details > summary::-webkit-details-marker { display: none; }
.turismo33-event-schedule details > summary::after { align-items: center; border: 2px solid var(--events-dark); border-radius: 50%; color: var(--events-dark); content: "›"; display: flex; font-weight: 800; height: 1.5rem; justify-content: center; position: absolute; right: 1rem; top: 50%; transform: translateY(-50%) rotate(90deg); transition: transform .2s ease; width: 1.5rem; }
.turismo33-event-schedule details[open] > summary::after { transform: translateY(-50%) rotate(-90deg); }
.turismo33-event-schedule__details { background: #fafbf5; font-size: .92rem; margin: 0 1rem .75rem 8.25rem; padding: .65rem 1rem; }
.turismo33-event-schedule__details p { margin: .25rem 0; }
.turismo33-event-schedule__subitems { border-inline-start: 2px solid #dbe3a6; margin: 0 1rem .5rem 8.25rem; }
.turismo33-event-schedule__subitems > li + li { border-top: 1px solid #e7eadc; }
.turismo33-event-schedule__subitem { grid-template-columns: 5.5rem minmax(0, 1fr); padding: .55rem .75rem; }

/* Actions */
.turismo33-event-actions {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	margin-top: .9rem;
}

.turismo33-event-action {
	display: inline-block;
	margin-top: .75rem;
}

.turismo33-public--events a:focus-visible,
.turismo33-public--events button:focus-visible,
.turismo33-public--events select:focus-visible,
.turismo33-public--events summary:focus-visible {
	outline: 3px solid var(--events-light);
	outline-offset: 3px;
}

.turismo33-event-occurrence__attributes {
	display: grid;
	gap: .25rem;
	margin: .45rem 0 0;
}

.turismo33-event-occurrence__attributes > div {
	display: flex;
	flex-wrap: wrap;
	gap: .25rem;
}

.turismo33-event-occurrence__attributes dt {
	font-weight: 700;
}

.turismo33-event-occurrence__attributes dt::after {
	content: ":";
}

.turismo33-event-occurrence__attributes dd {
	margin: 0;
}

/* Responsive */
@media (max-width: 540px) {
	.turismo33-event-detail {
		padding-inline: 1rem;
	}

	.turismo33-events__filters {
		align-items: stretch;
		flex-direction: column;
	}

	.turismo33-events__filters button {
		align-self: start;
	}

	.turismo33-events__grid {
		grid-template-columns: 1fr;
	}

	.turismo33-event-detail__hero {
		aspect-ratio: 4 / 3;
	}

	.turismo33-event-detail .turismo33-event-detail__program {
		inline-size: 100%;
		max-inline-size: none;
	}

	.turismo33-event-detail__program > h2 {
		margin-bottom: 1rem;
	}

	.turismo33-event-detail .turismo33-event-schedule__day {
		margin-block: 1rem 1.5rem;
	}

	.turismo33-event-schedule__day-heading {
		padding: .65rem .7rem;
	}

	.turismo33-event-schedule__item {
		padding-block: .1rem;
	}

	.turismo33-event-schedule__row,
	.turismo33-event-schedule__subitem {
		gap: .25rem;
		grid-template-columns: 1fr;
		padding: .65rem .25rem;
	}

	.turismo33-event-schedule details > summary {
		min-height: 2.75rem;
	}

	.turismo33-event-schedule details > summary .turismo33-event-schedule__row {
		padding-inline-end: 2.75rem;
	}

	.turismo33-event-schedule details > summary::after {
		height: 1.75rem;
		right: .25rem;
		top: .65rem;
		transform: rotate(90deg);
		width: 1.75rem;
	}

	.turismo33-event-schedule details[open] > summary::after {
		transform: rotate(-90deg);
	}

	.turismo33-event-schedule__time {
		align-items: baseline;
		flex-direction: row;
		gap: .3rem;
		white-space: nowrap;
	}

	.turismo33-event-schedule__time small::before { content: "– "; }

	.turismo33-event-schedule__place,
	.turismo33-event-schedule__range,
	.turismo33-event-schedule__description p {
		margin-top: .15rem;
	}

	.turismo33-event-schedule__details,
	.turismo33-event-schedule__subitems {
		margin-inline: 0 .25rem;
	}

	.turismo33-event-schedule__details {
		margin-block-end: .65rem;
		padding: .6rem .7rem;
	}
}
