/*
 * Line.Up default styles.
 *
 * Everything hangs off CSS custom properties so themes (and the
 * Elementor widgets) can restyle without fighting specificity:
 * override the --lineup-* props on .lineup-list / .lineup-details
 * or any ancestor. Disable the file entirely with the
 * lineup_load_styles filter.
 */

.lineup-list,
.lineup-details,
.lineup-filters,
.lineup-grouped,
.lineup-single {
	--lineup-gap: 1.25rem;
	--lineup-border-color: color-mix(in srgb, currentColor 18%, transparent);
	--lineup-muted: color-mix(in srgb, currentColor 62%, transparent);
	--lineup-radius: 6px;
	--lineup-date-weight: 650;
	/* Type: inherit the theme by default. Set these to lean typographic —
	   e.g. --lineup-title-font: Georgia, serif for a printed-programme feel. */
	--lineup-title-font: inherit;
	--lineup-date-font: inherit;
	/* Hero archive extras */
	--lineup-thumb-size: 3.25rem;
	--lineup-accent: currentColor;
	/* Active filter control: invert against the page background.
	   System colours dodge the currentColor-on-same-element trap and
	   track light/dark automatically; override for a branded look. */
	--lineup-active-bg: CanvasText;
	--lineup-active-fg: Canvas;
	--lineup-badge-cancelled-bg: #fbeaea;
	--lineup-badge-cancelled-fg: #8a1f1f;
	--lineup-badge-postponed-bg: #fdf3e0;
	--lineup-badge-postponed-fg: #8a6116;
	--lineup-badge-sold_out-bg: #e7f0e7;
	--lineup-badge-sold_out-fg: #1f5c2d;
}

@supports not (color: color-mix(in srgb, red 50%, blue)) {
	.lineup-list,
	.lineup-details,
	.lineup-filters,
	.lineup-grouped {
		--lineup-border-color: rgba(128, 128, 128, 0.3);
		--lineup-muted: rgba(128, 128, 128, 0.95);
	}
}

@supports not (color: Canvas) {
	.lineup-list,
	.lineup-details,
	.lineup-filters,
	.lineup-grouped {
		--lineup-active-bg: #2a2825;
		--lineup-active-fg: #fff;
	}
}

@media (prefers-color-scheme: dark) {
	.lineup-list,
	.lineup-details,
	.lineup-filters,
	.lineup-grouped {
		--lineup-badge-cancelled-bg: rgba(190, 60, 60, 0.22);
		--lineup-badge-cancelled-fg: #f2b8b5;
		--lineup-badge-postponed-bg: rgba(200, 150, 40, 0.22);
		--lineup-badge-postponed-fg: #ecd9a0;
		--lineup-badge-sold_out-bg: rgba(70, 150, 90, 0.22);
		--lineup-badge-sold_out-fg: #b7dfc2;
	}
}

/* ------------------------------------------------------------------ *
 *  Row list (default template)
 * ------------------------------------------------------------------ */

.lineup-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--lineup-gap);
}

.lineup-event {
	display: grid;
	grid-template-columns: minmax(9ch, auto) 1fr;
	gap: 0.15rem 1.5rem;
	align-items: baseline;
	padding-block-end: var(--lineup-gap);
	border-block-end: 1px solid var(--lineup-border-color);
}

.lineup-list > .lineup-event:last-child {
	border-block-end: none;
	padding-block-end: 0;
}

.lineup-event__date {
	font-family: var(--lineup-date-font);
	font-variant-numeric: tabular-nums;
	font-weight: var(--lineup-date-weight);
	line-height: 1.4;
}

.lineup-event__body {
	min-width: 0;
}

.lineup-event__title {
	margin: 0;
	font-family: var(--lineup-title-font);
	font-size: 1.1em;
	line-height: 1.35;
}

.lineup-event__title a {
	text-decoration: none;
}

.lineup-event__title a:hover,
.lineup-event__title a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.lineup-event__meta {
	margin: 0.2rem 0 0;
	font-size: 0.9em;
	color: var(--lineup-muted);
}

.lineup-event__meta a {
	color: inherit;
}

.lineup-event__link {
	font-weight: 600;
	white-space: nowrap;
	text-decoration: none;
}

.lineup-event__link:hover,
.lineup-event__link:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

/* Status treatments */
.lineup-badge {
	display: inline-block;
	padding: 0.15em 0.6em;
	border-radius: 999px;
	font-size: 0.72em;
	font-weight: 650;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	vertical-align: 0.1em;
}

.lineup-badge--cancelled {
	background: var(--lineup-badge-cancelled-bg);
	color: var(--lineup-badge-cancelled-fg);
}

.lineup-badge--postponed {
	background: var(--lineup-badge-postponed-bg);
	color: var(--lineup-badge-postponed-fg);
}

.lineup-badge--sold_out {
	background: var(--lineup-badge-sold_out-bg);
	color: var(--lineup-badge-sold_out-fg);
}

.lineup-event--cancelled .lineup-event__title {
	text-decoration: line-through;
	opacity: 0.65;
}

.lineup-event--past .lineup-event__date {
	font-weight: 400;
	color: var(--lineup-muted);
}

/* Row with a small thumbnail (hero past archive, thumbnails="1"). */
.lineup-event--thumb {
	grid-template-columns: var(--lineup-thumb-size) minmax(7ch, auto) 1fr;
	align-items: start;
	column-gap: 1.1rem;
}

.lineup-event__thumb {
	grid-row: span 2;
	display: block;
	width: var(--lineup-thumb-size);
	height: var(--lineup-thumb-size);
	border-radius: var(--lineup-radius);
	overflow: hidden;
	background: var(--lineup-border-color);
}

.lineup-event__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

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

	.lineup-event__date {
		font-size: 0.85em;
	}

	/* Keep the thumbnail alongside a stacked date + body. */
	.lineup-event--thumb {
		grid-template-columns: 2.5rem 1fr;
		column-gap: 0.9rem;
	}
}

/* ------------------------------------------------------------------ *
 *  Card grid (list-cards.php template)
 * ------------------------------------------------------------------ */

.lineup-list--cards {
	--lineup-card-min: 16rem;
	grid-template-columns: repeat(auto-fill, minmax(min(var(--lineup-card-min), 100%), 1fr));
	align-items: stretch;
}

.lineup-card {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--lineup-border-color);
	border-radius: var(--lineup-radius);
	overflow: hidden;
	transition: translate 120ms ease, box-shadow 120ms ease;
}

.lineup-card:hover,
.lineup-card:focus-within {
	translate: 0 -2px;
	box-shadow: 0 6px 18px -8px rgba(0, 0, 0, 0.35);
}

.lineup-card__media {
	margin: 0;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: var(--lineup-border-color);
}

.lineup-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.lineup-card__body {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	padding: 1rem 1.1rem 1.15rem;
	flex-grow: 1;
}

.lineup-card__date {
	font-family: var(--lineup-date-font);
	font-size: 0.82em;
	font-weight: var(--lineup-date-weight);
	font-variant-numeric: tabular-nums;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.lineup-card__title {
	margin: 0;
	font-family: var(--lineup-title-font);
	font-size: 1.05em;
	line-height: 1.35;
}

.lineup-card__title a {
	text-decoration: none;
}

.lineup-card__title a:hover,
.lineup-card__title a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.15em;
}

.lineup-card__meta {
	margin: 0;
	font-size: 0.88em;
	color: var(--lineup-muted);
}

.lineup-card__footer {
	margin-block-start: auto;
	padding-block-start: 0.5rem;
	font-size: 0.9em;
}

.lineup-card--past {
	opacity: 0.85;
}

.lineup-card--cancelled .lineup-card__title {
	text-decoration: line-through;
	opacity: 0.65;
}

/* ------------------------------------------------------------------ *
 *  Single event details block
 * ------------------------------------------------------------------ */

.lineup-details {
	margin-block-end: 1.5rem;
	padding: 1.1rem 1.3rem;
	border: 1px solid var(--lineup-border-color);
	border-radius: var(--lineup-radius);
	display: grid;
	gap: 0.4rem;
}

.lineup-details__row {
	display: flex;
	gap: 0.65rem;
	margin: 0;
	align-items: baseline;
}

.lineup-details__label {
	font-weight: 650;
	min-width: 5.5rem;
	font-size: 0.85em;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--lineup-muted);
}

/* Series archive header extras */
.lineup-series__image {
	max-width: 100%;
	height: auto;
	border-radius: var(--lineup-radius, 6px);
	margin-block-end: 0.75rem;
}

.lineup-series__blurb {
	margin-block: 0 0.5rem;
}

.lineup-series__stat {
	margin-block: 0 1.1rem;
	font-size: 0.85em;
	color: var(--lineup-muted);
	font-variant-numeric: tabular-nums;
}

.lineup-empty {
	font-style: italic;
	opacity: 0.8;
}

/* ------------------------------------------------------------------ *
 *  Filter controls (filters="1" segmented | filters="chips")
 * ------------------------------------------------------------------ */

.lineup-filters {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.5rem 0.9rem;
	margin-block-end: var(--lineup-gap);
	padding-block-end: 1rem;
	border-block-end: 1px solid var(--lineup-border-color);
}

.lineup-filters__label {
	font-size: 0.8em;
	color: var(--lineup-muted);
}

.lineup-filters__toggle {
	display: inline-flex;
}

.lineup-filters--segmented .lineup-filters__toggle {
	border: 1px solid var(--lineup-border-color);
	border-radius: var(--lineup-radius);
	overflow: hidden;
}

.lineup-filters--chips .lineup-filters__toggle {
	gap: 0.4rem;
}

.lineup-filters__seg {
	padding: 0.32em 0.85em;
	font-size: 0.82em;
	line-height: 1.3;
	text-decoration: none;
	color: var(--lineup-muted);
}

.lineup-filters--segmented .lineup-filters__seg {
	border-inline-end: 1px solid var(--lineup-border-color);
}

.lineup-filters--segmented .lineup-filters__seg:last-child {
	border-inline-end: 0;
}

.lineup-filters--chips .lineup-filters__seg {
	border: 1px solid var(--lineup-border-color);
	border-radius: 999px;
}

.lineup-filters__seg:hover,
.lineup-filters__seg:focus-visible {
	color: inherit;
}

.lineup-filters__seg.is-current {
	background: var(--lineup-active-bg);
	color: var(--lineup-active-fg);
	border-color: var(--lineup-active-bg);
}

.lineup-filters__seg.is-current:hover,
.lineup-filters__seg.is-current:focus-visible {
	color: var(--lineup-active-fg);
}

.lineup-filters__form {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
}

.lineup-filters__select,
.lineup-filters__apply {
	font: inherit;
	font-size: 0.85em;
	color: inherit;
	border: 1px solid var(--lineup-border-color);
	border-radius: var(--lineup-radius);
	background: transparent;
	padding: 0.32em 0.7em;
}

.lineup-filters__apply {
	cursor: pointer;
}

/* ------------------------------------------------------------------ *
 *  Year-sectioned hero archive (list-grouped / list-cards-grouped)
 * ------------------------------------------------------------------ */

.lineup-year {
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
	margin: 1.75rem 0 0.5rem;
	padding-block-end: 0.4rem;
	border-block-end: 2px solid var(--lineup-accent);
}

.lineup-grouped > .lineup-year:first-child {
	margin-top: 0;
}

.lineup-year__num {
	font-family: var(--lineup-title-font);
	font-size: 1.2em;
	font-weight: 650;
}

.lineup-year__count {
	font-size: 0.8em;
	color: var(--lineup-muted);
	font-variant-numeric: tabular-nums;
}

/* ------------------------------------------------------------------ *
 *  Gallery single (lineup_single_layout = 'gallery')
 * ------------------------------------------------------------------ */

.lineup-single__hero {
	margin: 0 0 1.5rem;
}

.lineup-single__hero img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--lineup-radius);
}

.lineup-single__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
}

/* Details first on narrow screens, sidebar on the right on wide ones. */
.lineup-single__aside {
	order: -1;
}

.lineup-single__aside .lineup-details {
	margin-block-end: 0;
}

@media (min-width: 720px) {
	.lineup-single__grid {
		grid-template-columns: 1fr minmax(200px, 16rem);
		align-items: start;
	}

	.lineup-single__main,
	.lineup-single__aside {
		order: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lineup-card {
		transition: none;
	}

	.lineup-card:hover,
	.lineup-card:focus-within {
		translate: none;
	}
}
