/*
 * Cabo Events — front-end CSS for the plugin's own fallback templates.
 *
 * Minimal on purpose. Every value is a var() that falls back to the Cabo
 * palette, so when the theme defines --terracotta, --plaster, --ink and
 * friends these rules follow it. Light and warm; the espresso ground is
 * for the theme's own night sections, not for this.
 *
 * Cards, rows, tiles and prices are set in the sans (Jost). No display
 * serif at card size.
 */

.cy-event,
.cy-archive {
	--cy-terracotta:      var(--terracotta, #C2492D);
	--cy-terracotta-deep: var(--terracotta-deep, #94331E);
	--cy-terracotta-wash: var(--terracotta-wash, #F6E3DB);
	--cy-plaster:         var(--plaster, #F7F1E9);
	--cy-plaster-2:       var(--plaster-2, #EFE6DA);
	--cy-sand:            var(--sand, #E2D5C3);
	--cy-ink:             var(--ink, #2A201B);
	--cy-ink-soft:        var(--ink-soft, #7C6B60);
	--cy-bone:            var(--bone, #FFF8F2);
	--cy-sans:            var(--body, 'Jost', system-ui, sans-serif);
	color: var(--cy-ink);
	font-family: var(--cy-sans);
	background: var(--cy-plaster);
}

.cy-event .c-container,
.cy-archive .c-container {
	max-width: 1120px;
	margin: 0 auto;
	padding: 0 40px;
}
@media (max-width: 768px) {
	.cy-event .c-container,
	.cy-archive .c-container { padding: 0 20px; }
}

/* ── Buttons ───────────────────────────────────────────────── */

.cy-event .c-btn,
.cy-archive .c-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	letter-spacing: 0.02em;
	padding: 13px 22px;
	border: 1px solid var(--cy-ink);
	background: transparent;
	color: var(--cy-ink);
	border-radius: 4px;
	cursor: pointer;
	text-decoration: none;
	transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}
.cy-event .c-btn--primary,
.cy-archive .c-btn--primary {
	background: var(--cy-terracotta);
	border-color: var(--cy-terracotta);
	color: var(--cy-bone);
}
.cy-event .c-btn--primary:hover,
.cy-event .c-btn--primary:focus-visible,
.cy-archive .c-btn--primary:hover,
.cy-archive .c-btn--primary:focus-visible {
	background: var(--cy-terracotta-deep);
	border-color: var(--cy-terracotta-deep);
	color: var(--cy-bone);
}

/* ── Archive ───────────────────────────────────────────────── */

.cy-archive { padding: 56px 0 72px; }
.cy-archive__head {
	max-width: 1120px;
	margin: 0 auto 36px;
	padding: 0 40px;
}
.cy-archive__eyebrow {
	margin: 0 0 10px;
	font-size: 12px;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--cy-terracotta);
}
.cy-archive__title {
	margin: 0 0 10px;
	font-size: clamp(30px, 5vw, 44px);
	font-weight: 500;
	line-height: 1.1;
	color: var(--cy-ink);
}
.cy-archive__lede {
	margin: 0;
	max-width: 56ch;
	font-size: 17px;
	color: var(--cy-ink-soft);
}

.cy-archive__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
	gap: 26px;
	max-width: 1120px;
	margin: 0 auto;
	padding: 0 40px;
}
@media (max-width: 768px) {
	.cy-archive__head,
	.cy-archive__grid { padding: 0 20px; }
}

.cy-card {
	display: flex;
	flex-direction: column;
	background: #FFF;
	border: 1px solid var(--cy-sand);
	border-radius: 10px;
	overflow: hidden;
}
.cy-card__cover {
	display: block;
	aspect-ratio: 4 / 3;
	background-size: cover;
	background-position: center;
	background-color: var(--cy-plaster-2);
}
.cy-card__cover--placeholder {
	background: linear-gradient(135deg, var(--cy-plaster), var(--cy-plaster-2));
}
.cy-card__body {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 20px 22px 24px;
}
.cy-card__eyebrow {
	margin: 0;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--cy-terracotta);
}
.cy-card__date {
	margin: 0;
	font-size: 15px;
	color: var(--cy-ink-soft);
}
.cy-card__date strong { color: var(--cy-ink); font-weight: 500; }
.cy-card__title {
	margin: 2px 0 0;
	font-family: inherit;
	font-size: 21px;
	font-weight: 500;
	line-height: 1.2;
}
.cy-card__title a { color: var(--cy-ink); text-decoration: none; }
.cy-card__title a:hover,
.cy-card__title a:focus-visible { color: var(--cy-terracotta-deep); }
.cy-card__sub { margin: 0; font-size: 15px; color: var(--cy-ink-soft); }
.cy-card__excerpt { margin: 4px 0 0; font-size: 15px; line-height: 1.55; color: var(--cy-ink-soft); }
.cy-card__cta {
	margin-top: 10px;
	align-self: flex-start;
	font-size: 15px;
	font-weight: 500;
	color: var(--cy-terracotta);
	text-decoration: none;
	border-bottom: 1px solid currentColor;
}
.cy-card__cta:hover,
.cy-card__cta:focus-visible { color: var(--cy-terracotta-deep); }

.cy-archive__nav {
	max-width: 1120px;
	margin: 36px auto 0;
	padding: 0 40px;
	font-size: 15px;
}
.cy-archive__nav a { color: var(--cy-terracotta); }
.cy-archive__empty {
	max-width: 1120px;
	margin: 0 auto;
	padding: 28px 40px;
	color: var(--cy-ink-soft);
	font-size: 17px;
}

/* ── Single event ──────────────────────────────────────────── */

.cy-event { padding-bottom: 72px; }
.cy-event__hero {
	height: clamp(220px, 38vw, 420px);
	background-size: cover;
	background-position: center;
	background-color: var(--cy-plaster-2);
}
.cy-event__header { padding: 36px 0 8px; }
.cy-event__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	font-size: 15px;
	color: var(--cy-ink-soft);
	margin-bottom: 10px;
}
.cy-event__title {
	margin: 0;
	font-size: clamp(28px, 5vw, 42px);
	font-weight: 500;
	line-height: 1.1;
	color: var(--cy-ink);
}

.cy-event__body {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 340px);
	gap: 40px;
	align-items: start;
	padding-top: 28px;
}
@media (max-width: 900px) {
	.cy-event__body { grid-template-columns: 1fr; gap: 28px; }
}
.cy-event__content { font-size: 17px; line-height: 1.65; }
.cy-event__content p { margin: 0 0 1em; }

.cy-event__tickets {
	background: #FFF;
	border: 1px solid var(--cy-sand);
	border-radius: 10px;
	padding: 22px 24px;
}
.cy-event__tickets-title {
	margin: 0 0 14px;
	font-family: inherit;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--cy-terracotta);
}
.cy-event__tickets-empty { margin: 0; color: var(--cy-ink-soft); font-size: 15px; }

.cy-tiers { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.cy-tier { border-top: 1px solid var(--cy-sand); padding-top: 14px; }
.cy-tier:first-child { border-top: 0; padding-top: 0; }
.cy-tier__head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.cy-tier__name { margin: 0; font-family: inherit; font-size: 17px; font-weight: 500; }
.cy-tier__price { font-size: 15px; font-weight: 500; color: var(--cy-terracotta); white-space: nowrap; }
.cy-tier__desc,
.cy-tier__minspend { margin: 6px 0 0; font-size: 15px; color: var(--cy-ink-soft); }
.cy-tier__actions { margin-top: 12px; }
.cy-tier.is-soldout { opacity: 0.6; }
.cy-tier__soldout {
	font-size: 12px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--cy-ink-soft);
}

/* ── Seat map (only used when ticketing is on) ─────────────── */

.cy-seatmap-wrap { margin: 32px 0; }
.cy-seatmap-title { margin: 0 0 12px; font-family: inherit; font-size: 19px; font-weight: 500; }
.cy-seatmap { background: var(--cy-plaster-2); border: 1px solid var(--cy-sand); border-radius: 8px; padding: 12px; }
.cy-seatmap svg { width: 100%; height: auto; display: block; }
.cy-seatmap-seat rect { fill: #FFF; stroke: var(--cy-terracotta); stroke-width: 2; cursor: pointer; }
.cy-seatmap-seat text { font-size: 22px; fill: var(--cy-ink); pointer-events: none; }
.cy-seatmap-seat.is-unavailable rect { fill: var(--cy-sand); stroke: var(--cy-sand); cursor: not-allowed; }
.cy-seatmap-note { margin: 10px 0 0; font-size: 15px; color: var(--cy-ink-soft); }
