/*
 * EVMG Events — estilos del calendario (vista de mes).
 *
 * Fallback accesible y agnóstico de tema. Cumple WCAG 2.2 AA:
 * contraste >= 4.5:1, foco visible, objetivos >= 24px, reflow a 320px,
 * respeto de prefers-reduced-motion y forced-colors.
 *
 * Las variables permiten al tema reestilizar sin romper la accesibilidad.
 */

.evmg-calendar,
.evmg-agenda,
.evmg-event-card,
.evmg-event-details,
.evmg-addtocal,
.evmg-location,
.evmg-organizers,
.evmg-gallery,
.evmg-faq,
.evmg-related,
.evmg-share,
.evmg-customdata {

	/*
	 * Capa de variables locales (theme-agnóstica). Cuando el tema Andromeda
	 * está activo, se mapean a sus tokens (`--wp--preset--color--*` y
	 * `--wp--custom--focus-color`); el segundo valor es el fallback AA si el
	 * tema no define la variable. Los fallbacks conservan los ratios previos.
	 */
	--evmg-bg: var(--wp--preset--color--surface, #fff);
	--evmg-fg: var(--wp--preset--color--text, #1a1a1a); /* fallback #1a1a1a sobre #fff ~ 17:1. */
	--evmg-muted: var(--wp--preset--color--text-soft, #595959); /* fallback #595959 sobre #fff ~ 7:1. */
	--evmg-border: var(--wp--preset--color--border, #6b6b6b);
	--evmg-today-bg: var(--wp--preset--color--canvas, #e7eefc); /* Fondo sutil; el día de hoy se refuerza con texto + borde. */
	--evmg-accent: var(--wp--preset--color--brand, #0b4fb0); /* fallback #0b4fb0 sobre #fff ~ 7.2:1. */
	--evmg-accent-strong: var(--wp--preset--color--brand-strong, #083a82); /* Hover de elementos de marca. */
	--evmg-urgent: var(--wp--preset--color--accent, #b32d2e); /* Acento de urgencia/estrellas (terracota). */
	--evmg-inverse: var(--wp--preset--color--inverse, #fff); /* Texto sobre fondos de marca/acento. */
	--evmg-focus: var(--wp--custom--focus-color, #0b4fb0);

	color: var(--evmg-fg);
	background: var(--evmg-bg);
	container-type: inline-size;
}

.evmg-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.evmg-month {
	width: 100%;
	border-collapse: collapse;
	table-layout: fixed;
}

.evmg-month__caption {
	font-size: 1.25rem;
	font-weight: 700;
	text-align: start;
	padding: 0.5rem 0;
	color: var(--evmg-fg);
}

.evmg-month th {
	padding: 0.5rem;
	text-align: center;
	font-weight: 700;
	border: 1px solid var(--evmg-border);
	color: var(--evmg-fg);
}

.evmg-month th abbr[title] {
	text-decoration: none;
	cursor: help;
}

.evmg-month__day {
	border: 1px solid var(--evmg-border);
	vertical-align: top;
	padding: 0.25rem;
	min-height: 5rem;
	height: 5rem;
}

.evmg-month__day.is-outside {
	color: var(--evmg-muted);
	background: #f3f3f3;
}

.evmg-month__day.is-today {
	outline: 2px solid var(--evmg-accent);
	outline-offset: -2px;
	background: var(--evmg-today-bg);
}

.evmg-month__day:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: -3px;
}

.evmg-month__weekday {
	font-weight: 700;
}

.evmg-month__daynum {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-month__events {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.evmg-event-link {
	display: block;
	min-height: 24px; /* Objetivo táctil >= 24px (WCAG 2.5.8). */
	padding: 0.25rem 0.4rem;
	color: var(--evmg-accent);
	text-decoration: underline;
	border-radius: 3px;
}

.evmg-event-link:hover {
	text-decoration: none;
}

.evmg-event-link:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 1px;
	text-decoration: none;
}

.evmg-event-link__time {
	display: inline-block;
	color: var(--evmg-muted);
	font-variant-numeric: tabular-nums;
}

/* Vista semanal (rejilla). */
.evmg-week {
	width: 100%;
	border-collapse: collapse;
	table-layout: fixed;
}

.evmg-week__caption {
	font-size: 1.25rem;
	font-weight: 700;
	text-align: start;
	padding: 0.5rem 0;
	color: var(--evmg-fg);
}

.evmg-week th {
	padding: 0.5rem;
	text-align: center;
	font-weight: 700;
	border: 1px solid var(--evmg-border);
	color: var(--evmg-fg);
}

.evmg-week th abbr[title] {
	text-decoration: none;
	cursor: help;
}

.evmg-week__datenum {
	font-variant-numeric: tabular-nums;
}

.evmg-week__day {
	border: 1px solid var(--evmg-border);
	vertical-align: top;
	padding: 0.25rem;
	min-height: 6rem;
	height: 6rem;
}

.evmg-week__day.is-today {
	outline: 2px solid var(--evmg-accent);
	outline-offset: -2px;
	background: var(--evmg-today-bg);
}

.evmg-week__day:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: -3px;
}

.evmg-week__dayname {
	font-weight: 700;
}

.evmg-week__events {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.evmg-weeknav {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1rem;
	margin: 0 0 1rem;
}

.evmg-weeknav__prev,
.evmg-weeknav__next {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 0.75rem;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	text-decoration: underline;
}

.evmg-weeknav__prev:hover,
.evmg-weeknav__next:hover {
	text-decoration: none;
}

.evmg-weeknav__prev:focus-visible,
.evmg-weeknav__next:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
	text-decoration: none;
}

/* Vista anual (12 meses). */
.evmg-year {
	color: var(--evmg-fg);
}

.evmg-year__nav {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 0.5rem;
}

.evmg-year__prev,
.evmg-year__next {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	font-size: 1.4rem;
	line-height: 1;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	text-decoration: none;
}

.evmg-year__prev:focus-visible,
.evmg-year__next:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-year__heading {
	font-size: 1.5rem;
	font-weight: 700;
	margin: 0 0 0.75rem;
}

.evmg-year__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr));
	gap: 0.75rem;
}

.evmg-year__month {
	margin: 0;
}

.evmg-year__link {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 3.5rem;
	padding: 0.5rem;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-border);
	border-radius: 6px;
	text-align: center;
	text-decoration: none;
	font-weight: 700;
}

.evmg-year__link:hover {
	text-decoration: underline;
}

.evmg-year__link[aria-current="page"] {
	outline: 2px solid var(--evmg-accent);
	outline-offset: -2px;
	background: var(--evmg-today-bg);
}

.evmg-year__link:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Código de validación de la entrada (QR + código legible). */
.evmg-ticketcode {
	margin: 1.5rem 0;
	padding: 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 6px;
	color: var(--evmg-fg);
	text-align: center;
}

.evmg-ticketcode__heading {
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-ticketcode__qr {
	display: block;
	margin: 0 auto 0.5rem;
	height: auto;
}

.evmg-ticketcode__code {
	margin: 0;
	font-size: 1.1rem;
}

.evmg-ticketcode__value {
	font-family: monospace;
	font-weight: 700;
	letter-spacing: 0.05em;
}

/* Entrada (ticket) con WooCommerce. */
.evmg-ticket {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-ticket__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-ticket__product {
	margin: 0 0 0.75rem;
}

.evmg-ticket__name {
	font-weight: 700;
}

.evmg-ticket__price {
	color: var(--evmg-accent);
	font-weight: 700;
}

.evmg-ticket__field {
	margin: 0 0 0.75rem;
}

.evmg-ticket__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-ticket__qty {
	width: 6rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-ticket__qty:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-ticket__buy {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1.2rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-ticket__buy:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-ticket__out {
	margin: 0;
	font-weight: 700;
}

/* Reservas (RSVP). */
.evmg-rsvp {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-rsvp__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-rsvp__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-rsvp__message--error {
	border-inline-start-color: #b32d2e;
}

.evmg-rsvp__remaining {
	margin: 0 0 0.75rem;
}

.evmg-rsvp__slots {
	margin: 0 0 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
}

.evmg-rsvp__slots-legend {
	padding: 0 0.4rem;
	font-weight: 700;
}

.evmg-rsvp__slot {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.4rem;
}

.evmg-rsvp__slot-input {
	width: 1.25rem;
	height: 1.25rem;
	accent-color: var(--evmg-accent);
}

.evmg-rsvp__slot-input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-rsvp__slot-remaining {
	color: var(--evmg-muted);
}

.evmg-rsvp__field {
	margin: 0 0 0.75rem;
}

.evmg-rsvp__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-rsvp__input {
	width: 100%;
	max-width: 22rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-rsvp__input[aria-invalid="true"] {
	border-color: #b32d2e;
	border-width: 2px;
}

.evmg-rsvp__input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-rsvp__error {
	display: block;
	margin-top: 0.25rem;
	color: #b32d2e;
	font-weight: 700;
}

.evmg-rsvp__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;

	/* Personalizable (Apariencia → Botón primario/CTA): relleno, borde, radio,
	 * fondo y texto. Fallback al valor de diseño. */
	padding: var(--evmg-button-padding, 0.4rem 1.2rem);
	color: var(--evmg-button-text, var(--evmg-bg));
	background: var(--evmg-button-bg, var(--evmg-accent));
	border-style: solid;
	border-width: var(--evmg-button-border-width, 1px);
	border-color: var(--evmg-button-border-color, var(--evmg-accent));
	border-radius: var(--evmg-button-radius, 4px);
	cursor: pointer;
	font: inherit;
}

.evmg-rsvp__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Carrusel de eventos destacados. */
.evmg-slider {
	color: var(--evmg-fg);
}

.evmg-slider__controls {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 0.75rem;
}

.evmg-slider__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font: inherit;
	color: var(--evmg-accent);
	background: transparent;
	border: 1px solid var(--evmg-accent);
	cursor: pointer;

	/* Rediseño (galería): botón circular 52px sin padding y radio de pill
	 * (consolida; ganaban sobre la base 44px/0.4rem 0.9rem/4px). */
	min-width: 52px;
	min-height: 52px;
	padding: 0;
	border-radius: 9999px;
}

.evmg-slider__btn:hover {

	/* Rediseño (galería): relleno de marca en hover (consolida; sustituye al
	 * subrayado base). */
	color: var(--evmg-inverse);
	background: var(--evmg-accent);
	border-color: var(--evmg-accent);
	text-decoration: none;
}

.evmg-slider__btn:focus-visible {
	outline-offset: 2px;

	/* Rediseño: anillo de foco de 2px (consolida; ganaba sobre el 3px base). */
	outline: 2px solid var(--evmg-focus);
}

/* Sin JS: las diapositivas se ven en una tira desplazable (alternativa al gesto
 * de deslizamiento; WCAG 2.5.7). */
.evmg-slider__track {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	gap: 1rem;
	overflow-x: auto;
}

.evmg-slider__slide {
	margin: 0;
	flex: 0 0 min(20rem, 85%);

	/* Rediseño (galería): tarjetas ~21rem (consolida; flex-basis sustituye al
	 * basis 20rem de la base). */
	flex-basis: min(21rem, 85%);
}

/* Diapositiva oculta por JS (una visible cada vez). */
.evmg-slider__slide[hidden] {
	display: none;
}

/* Eventos en curso (happening now). */
.evmg-now {
	color: var(--evmg-fg);
}

.evmg-now__heading {
	font-size: 1.2rem;
	font-weight: 700;
	margin: 1rem 0 0.5rem;
}

.evmg-now__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}

.evmg-now__item {
	margin: 0;
	padding: 0.4rem 0;
	border-bottom: 1px solid var(--evmg-border);
}

.evmg-now__item--live {
	padding-inline-start: 0.6rem;
	border-inline-start: 4px solid var(--evmg-accent);
}

.evmg-now__live {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin: 0 0 0.2rem;
	font-weight: 700;
	color: var(--evmg-accent);
	text-transform: uppercase;
	font-size: 0.8rem;
	letter-spacing: 0.03em;
}

.evmg-now__live-dot {
	width: 0.6rem;
	height: 0.6rem;
	border-radius: 50%;
	background: var(--evmg-accent);
}

.evmg-now__empty {
	margin: 0;
	color: var(--evmg-fg);
}

/* Vista de horario (schedule). */
.evmg-schedule {
	color: var(--evmg-fg);
}

.evmg-schedule__day {
	margin: 0 0 1.5rem;
}

.evmg-schedule__heading {
	font-size: 1.2rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
	padding-bottom: 0.25rem;
	border-bottom: 2px solid var(--evmg-border);
}

.evmg-schedule__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
}

.evmg-schedule__item {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.25rem 0.75rem;
	margin: 0;
	padding: 0.4rem 0;
	border-bottom: 1px solid var(--evmg-border);
}

.evmg-schedule__item .evmg-event-link {
	font-weight: 700;
}

.evmg-schedule__location,
.evmg-schedule__organizer {
	color: var(--evmg-muted);
}

.evmg-schedule__empty {
	margin: 0;
	color: var(--evmg-fg);
}

/* Vista diaria (tira de día). */
.evmg-day {
	color: var(--evmg-fg);
}

.evmg-day__nav {
	display: flex;
	gap: 0.5rem;
	margin: 0 0 0.5rem;
}

.evmg-day__prev,
.evmg-day__next {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	font-size: 1.4rem;
	line-height: 1;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	text-decoration: none;
}

.evmg-day__prev:focus-visible,
.evmg-day__next:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-day__heading {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.75rem;
	padding-bottom: 0.25rem;
	border-bottom: 2px solid var(--evmg-border);
}

.evmg-day__today {
	display: inline-block;
	margin-inline-start: 0.5rem;
	padding: 0.05rem 0.5rem;
	font-size: 0.85rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border-radius: 999px;
	vertical-align: middle;
}

.evmg-day__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.evmg-day__item {
	margin: 0;
}

.evmg-day__empty {
	margin: 0;
	color: var(--evmg-fg);
}

/* Vista de lista/agenda. */
.evmg-agenda__month {
	margin: 0 0 1.5rem;
}

.evmg-agenda__heading {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
	padding-bottom: 0.25rem;
	border-bottom: 2px solid var(--evmg-border);
	color: var(--evmg-fg);
}

.evmg-agenda__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;

	/* Rediseño (lista): separación entre filas (consolida; 0.75rem ganaba
	 * sobre el 0.25rem base). */
	gap: 0.75rem;
}

.evmg-agenda__item {
	margin: 0;
}

.evmg-agenda .evmg-event-link__title {

	/* Rediseño (lista): título Roboto 600 ~1.125rem; crece para empujar la
	 * fecha al final (consolida; font-weight 600 sustituye al 700 base). */
	flex: 1 1 auto;
	font-family: var(--wp--preset--font-family--source-sans, inherit);
	font-size: var(--wp--preset--font-size--m, 1.125rem);
	font-weight: 600;
	color: var(--evmg-fg);
}

.evmg-agenda__when {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	color: var(--evmg-muted);

	/* Rediseño (lista): alinea el icono decorativo con la línea base. */
	align-items: baseline;
}

.evmg-event-link__date {
	color: var(--evmg-muted);
}

.evmg-agenda__empty {
	margin: 0;
	color: var(--evmg-fg);
}

/* Tarjeta de evento reutilizable. */
.evmg-event-card {
	display: flex;
	flex-direction: column;
	background: var(--evmg-bg);
	color: var(--evmg-fg);
	border: 1px solid var(--evmg-border);
	border-radius: 6px;
	overflow: hidden;
}

.evmg-event-card__media {
	margin: 0;

	/* Contenedor posicionado para el distintivo de categoría superpuesto
	 * (request evmg-list-gallery-fidelity); sin badge no cambia nada. */
	position: relative;
}

.evmg-event-card__image {
	display: block;
	width: 100%;
	height: auto;
	object-fit: cover;
}

/* Personalizable: --evmg-card-padding (Apariencia → Tarjeta). */
.evmg-event-card__body {
	padding: var(--evmg-card-padding, 0.75rem 1rem 1rem);
}

.evmg-event-card__title {
	margin: 0 0 0.5rem;
	line-height: 1.3;

	/* Rediseño (galería): título Roboto 700 ~1.125rem (consolida; el tamaño m
	 * sustituye al 1.15rem base). */
	font-family: var(--wp--preset--font-family--source-sans, inherit);
	font-size: var(--wp--preset--font-size--m, 1.125rem);
	font-weight: 700;
}

.evmg-event-card__link {
	display: inline-block;
	min-height: 24px; /* Objetivo táctil >= 24px (WCAG 2.5.8). */
	padding: 0.1rem 0;
	color: var(--evmg-accent);
	text-decoration: underline;
}

.evmg-event-card__link:hover {
	text-decoration: none;
}

.evmg-event-card__link:focus-visible {
	outline-offset: 2px;
	text-decoration: none;

	/* Rediseño: anillo de foco de 2px (consolida; ganaba sobre el 3px base). */
	outline: 2px solid var(--evmg-focus);
}

.evmg-event-card__meta {
	margin: 0 0 0.25rem;
	color: var(--evmg-muted);
	font-variant-numeric: tabular-nums;
}

.evmg-event-card__location,
.evmg-event-card__organizer {
	margin: 0.25rem 0 0;
	color: var(--evmg-fg);
}

/* Variantes de tarjeta (T4.10). Todas conservan contraste, foco y semántica. */

/* Tile: compacta y centrada. */
.evmg-event-card--tile {
	text-align: center;
}

.evmg-event-card--tile .evmg-event-card__body {
	padding: 1rem;
}

/* Tile con imagen: imagen destacada arriba, cuerpo con acento sólido debajo. */
.evmg-event-card--image-tile .evmg-event-card__image {
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.evmg-event-card--image-tile .evmg-event-card__body {
	background: var(--evmg-today-bg);
}

/* Detalles al lado de la imagen (horizontal). */
@container (min-width: 28rem) {

	.evmg-event-card--side {
		flex-direction: row;
	}

	.evmg-event-card--side .evmg-event-card__media {
		flex: 0 0 40%;
	}

	.evmg-event-card--side .evmg-event-card__image {
		height: 100%;
		object-fit: cover;
	}

	.evmg-event-card--side .evmg-event-card__body {
		flex: 1 1 auto;
	}
}

/* Mínima: solo título y fecha, sin borde de tarjeta. */
.evmg-event-card--minimal {
	border: 0;
	border-radius: 0;
	border-inline-start: 3px solid var(--evmg-accent);
}

.evmg-event-card--minimal .evmg-event-card__body {
	padding: 0.25rem 0.75rem;
}

.evmg-event-card--minimal .evmg-event-card__title {
	font-size: 1rem;
}

/* Burbujas: bordes muy redondeados con acento. */
.evmg-event-card--bubble {
	border-radius: 1.25rem;
	border-color: var(--evmg-accent);
}

.evmg-event-card--bubble .evmg-event-card__image {
	border-start-start-radius: 1.25rem;
	border-start-end-radius: 1.25rem;
}

/* Detalles del evento (single). */
.evmg-event-details {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-event-details__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

/*
 * Rediseño (evmg-event-detail-redesign): los detalles pasan de lista/tabla a un
 * grid de celdas; cada celda lleva un icono decorativo a la izquierda y, a la
 * derecha, la etiqueta (dt) sobre el valor (dd). Se conserva la semántica
 * dl/dt/dd y el <time datetime>. El icono es puramente visual (aria-hidden) y
 * nunca el único portador de información.
 */
.evmg-event-details__list {
	margin: 0;

	/* Desktop: 3 columnas fijas (2 filas de 3 con los 6 campos habituales). */
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1rem 1.5rem;
}

/* Cada fila es una celda: icono (col 1, abarca 2 filas) + dt sobre dd
 * (col 2). */
.evmg-event-details__row {
	display: grid;
	grid-template-columns: auto 1fr;
	grid-template-rows: auto auto;
	align-items: start;
	column-gap: 0.75rem;
	margin: 0;
	padding: 0.25rem 0;
}

.evmg-event-details__icon {
	grid-row: 1 / span 2;
	width: 1.25rem;
	height: 1.25rem;

	/* Alinea el icono con la primera línea de la etiqueta. */
	margin-top: 0.1rem;
	color: var(--evmg-accent);
}

/* Etiqueta (dt) y valor (dd): se declaran ANTES que las reglas de mayor
 * especificidad de abajo (.evmg-event-details__row > …) para respetar el
 * orden ascendente de especificidad. Incluyen ya las propiedades de
 * presentación del rediseño (font-size/font-weight/color), antes repetidas
 * en el bloque del single; al ser de igual especificidad y valores idénticos
 * el resultado computado no cambia. */
.evmg-event-details__label {
	grid-column: 2;
	margin: 0;
	font-size: var(--wp--preset--font-size--xs, 0.875rem);
	font-weight: 500;
	color: var(--evmg-muted);
}

.evmg-event-details__value {
	grid-column: 2;
	margin: 0;
	font-size: var(--wp--preset--font-size--s, 1rem);
	font-weight: 400;
	color: var(--evmg-fg);
}

/* Sin icono (item de tercero sin field): dt/dd ocupan ambas columnas. */
.evmg-event-details__row > .evmg-event-details__label:first-child {
	grid-column: 1 / -1;
}

.evmg-event-details__row > .evmg-event-details__label:first-child + .evmg-event-details__value {
	grid-column: 1 / -1;
}

/* Ancho intermedio: 2 columnas. Móvil estrecho: una sola columna. */
@container (max-width: 38rem) {

	.evmg-event-details__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@container (max-width: 22rem) {

	.evmg-event-details__list {
		grid-template-columns: 1fr;
	}
}

@supports not (container-type: inline-size) {

	@media (max-width: 38rem) {

		.evmg-event-details__list {
			grid-template-columns: repeat(2, minmax(0, 1fr));
		}
	}

	@media (max-width: 22rem) {

		.evmg-event-details__list {
			grid-template-columns: 1fr;
		}
	}
}

/* Activación de eventos: disclosure inline y lightbox. */
.evmg-disclosure__trigger,
.evmg-lightbox__trigger {
	display: inline-block;
	min-height: 24px; /* Objetivo táctil >= 24px (WCAG 2.5.8). */
	padding: 0.1rem 0;
	font: inherit;
	color: var(--evmg-accent);
	background: none;
	border: 0;
	text-align: start;
	text-decoration: underline;
	cursor: pointer;
}

.evmg-disclosure__trigger:hover,
.evmg-lightbox__trigger:hover {
	text-decoration: none;
}

.evmg-disclosure__trigger:focus-visible,
.evmg-lightbox__trigger:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
	text-decoration: none;
}

.evmg-disclosure__panel {
	margin: 0.5rem 0 0;
}

/* Bloqueo de scroll del cuerpo mientras hay un diálogo abierto. */
.evmg-no-scroll {
	overflow: hidden;
}

.evmg-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
}

.evmg-lightbox[hidden] {
	display: none;
}

.evmg-lightbox__overlay {
	position: absolute;
	inset: 0;
	background: rgb(0 0 0 / 60%);
}

.evmg-lightbox__dialog {
	position: relative;
	max-width: 40rem;
	width: 100%;
	max-height: 90vh;
	overflow: auto;
	padding: 1.5rem;
	background: var(--evmg-bg);
	color: var(--evmg-fg);
	border: 1px solid var(--evmg-border);
	border-radius: 6px;
}

.evmg-lightbox__close {
	position: absolute;
	top: 0.5rem;
	inset-inline-end: 0.5rem;
	min-width: 44px;
	min-height: 44px;
	font-size: 1.5rem;
	line-height: 1;
	color: var(--evmg-fg);
	background: none;
	border: 0;
	cursor: pointer;
}

.evmg-lightbox__close:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Añadir a calendario. */
.evmg-addtocal {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-addtocal__title {
	font-size: 1.1rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-addtocal__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;

	/* Rediseño: distribución horizontal explícita (flex-wrap ya es wrap). */
	flex-direction: row;
}

.evmg-addtocal__link {
	display: inline-block;
	padding: 0.4rem 0.75rem;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);

	/* Rediseño: botón >= 44px, centrado, radio de botón y sin subrayado
	 * (consolida los valores que ganaban sobre la base 24px/4px/underline). */
	justify-content: center;
	min-height: 44px;
	border-radius: var(--evmg-radius-btn);
	text-decoration: none;
}

.evmg-addtocal__link:hover {
	text-decoration: none;
}

.evmg-addtocal__link:focus-visible {
	outline-offset: 2px;
	text-decoration: none;

	/* Rediseño: anillo de foco de 2px (consolida; ganaba sobre el 3px base). */
	outline: 2px solid var(--evmg-focus);
}

/* Localización + mapa. */
.evmg-location {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-location__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-location__address {
	font-style: normal;
	margin: 0 0 0.5rem;
}

.evmg-location__name {
	font-weight: 700;
}

.evmg-location__actions {
	margin: 0 0 0.75rem;
}

.evmg-location__directions {
	display: inline-block;
	padding: 0.4rem 0.75rem;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);

	/* Rediseño: botón >= 44px, radio de botón y sin subrayado
	 * (consolida los valores que ganaban sobre la base 24px/4px/underline). */
	min-height: 44px;
	border-radius: var(--evmg-radius-btn);
	text-decoration: none;
}

.evmg-location__directions:hover {

	/* La base quitaba el subrayado; el rediseño lo restaura en hover (gana). */
	text-decoration: underline;
}

.evmg-location__directions:focus-visible {
	outline-offset: 2px;
	text-decoration: none;

	/* Rediseño: anillo de foco de 2px (consolida; ganaba sobre el 3px base). */
	outline: 2px solid var(--evmg-focus);
}

.evmg-location__map {
	max-width: 100%;
	border: 1px solid var(--evmg-border);

	/* Rediseño: contenedor cuadrado a ancho completo, radio de card y sombra
	 * l1 (consolida; height auto y radio de card ganaban sobre 20rem/6px). */
	width: 100%;
	aspect-ratio: 1 / 1; /* Formato cuadrado (DESIGN). */
	min-height: 0;
	height: auto;
	border-radius: var(--evmg-radius-card);
	box-shadow: var(--evmg-shadow-l1);
}

/* Organizadores. */
.evmg-organizers {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-organizers__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-organizers__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.evmg-organizers__item {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	margin: 0;
}

.evmg-organizers__photo {
	width: 64px;
	height: 64px;
	object-fit: cover;
	border-radius: 50%;
}

.evmg-organizers__name {
	font-weight: 700;
}

.evmg-organizers__contact {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 0.75rem;
}

.evmg-organizers__web,
.evmg-organizers__email {
	display: inline-block;
	min-height: 24px; /* Objetivo táctil >= 24px (WCAG 2.5.8). */
	padding: 0.1rem 0;
	color: var(--evmg-accent);
	text-decoration: underline;
}

.evmg-organizers__web:hover,
.evmg-organizers__email:hover {
	text-decoration: none;
}

.evmg-organizers__web:focus-visible,
.evmg-organizers__email:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
	text-decoration: none;
}

/* Galería de imágenes. */
.evmg-gallery {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-gallery__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-gallery__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
	gap: 0.5rem;
}

.evmg-gallery__item {
	margin: 0;
}

.evmg-gallery__thumb {
	display: block;
	width: 100%;
	padding: 0;
	background: none;

	/* Personalizable (Apariencia → Galería): borde y radio de la miniatura. No
	 * expone fondo/texto (es una imagen a sangre). Fallback al diseño. */
	border-style: solid;
	border-width: var(--evmg-gallery-border-width, 1px);
	border-color: var(--evmg-gallery-border-color, var(--evmg-border));
	border-radius: var(--evmg-gallery-radius, 4px);
	cursor: pointer;
	overflow: hidden;
}

.evmg-gallery__thumb img {
	display: block;
	width: 100%;
	height: 8rem;
	object-fit: cover;
}

.evmg-gallery__thumb:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-gallery__lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
}

.evmg-gallery__lightbox[hidden] {
	display: none;
}

.evmg-gallery__overlay {
	position: absolute;
	inset: 0;
	background: rgb(0 0 0 / 70%);
}

.evmg-gallery__dialog {
	position: relative;
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 0.5rem;
	max-width: 60rem;
	width: 100%;
	padding: 3rem 1rem 1rem;
	background: var(--evmg-bg);
	color: var(--evmg-fg);
	border: 1px solid var(--evmg-border);
	border-radius: 6px;
}

.evmg-gallery__figure {
	grid-column: 2;
	margin: 0;
	text-align: center;
}

.evmg-gallery__image {
	max-width: 100%;
	max-height: 70vh;
	height: auto;
}

.evmg-gallery__caption {
	margin-top: 0.5rem;
	color: var(--evmg-muted);
}

.evmg-gallery__counter {
	grid-column: 1 / -1;
	margin: 0.5rem 0 0;
	text-align: center;
	color: var(--evmg-muted);
	font-variant-numeric: tabular-nums;
}

.evmg-gallery__close,
.evmg-gallery__prev,
.evmg-gallery__next {
	min-width: 44px;
	min-height: 44px;
	font-size: 1.5rem;
	line-height: 1;
	color: var(--evmg-fg);
	background: none;
	border: 0;
	cursor: pointer;
}

.evmg-gallery__close {
	position: absolute;
	top: 0.5rem;
	inset-inline-end: 0.5rem;
}

.evmg-gallery__close:focus-visible,
.evmg-gallery__prev:focus-visible,
.evmg-gallery__next:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* FAQs (acordeón). */
.evmg-faq {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-faq__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-faq__item-title {
	margin: 0;
	font-size: 1.05rem;
	border-top: 1px solid var(--evmg-border);
}

.evmg-faq__trigger {
	display: block;
	width: 100%;
	min-height: 44px;
	padding: 0.75rem 0;
	font: inherit;
	font-weight: 700;
	text-align: start;
	color: var(--evmg-fg);
	background: none;
	border: 0;
	cursor: pointer;
}

.evmg-faq__trigger:hover {
	color: var(--evmg-accent);
}

.evmg-faq__trigger:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-faq__trigger::before {
	content: "+";
	display: inline-block;
	width: 1.25em;
	font-weight: 700;
}

.evmg-faq__trigger[aria-expanded="true"]::before {
	content: "\2212"; /* signo menos */
}

.evmg-faq__panel {
	padding: 0 0 0.75rem 1.25rem;
}

.evmg-faq__panel > p {
	margin: 0;
}

/* Eventos relacionados. */
.evmg-related {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-related__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-related__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
	gap: 1rem;
}

.evmg-related__item {
	margin: 0;
}

/* Compartir en redes. */
.evmg-share {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-share__title {
	font-size: 1.1rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
	padding: 0.25rem 0.5rem;
	border-radius: 4px;
}

.evmg-share__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.evmg-share__item {
	margin: 0;
}

.evmg-share__link {
	display: inline-flex;
	align-items: center;
	padding: 0.4rem 0.75rem;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);

	/* Rediseño: botón ghost >= 44px, radio de botón y sin subrayado
	 * (consolida los valores que ganaban sobre la base 24px/4px/underline). */
	min-height: 44px;
	border-radius: var(--evmg-radius-btn);
	text-decoration: none;

	/* Rediseño (icono): botón cuadrado de 44px centrado; padding-inline 0
	 * recorta el padding horizontal base, dejando 0.4rem en bloque. */
	justify-content: center;
	inline-size: 44px;
	padding-inline: 0;
}

.evmg-share__link:hover {

	/* La base quitaba el subrayado; el rediseño lo restaura en hover (gana). */
	text-decoration: underline;
}

.evmg-share__link:focus-visible {
	outline-offset: 2px;
	text-decoration: none;

	/* Rediseño: anillo de foco de 2px (consolida; ganaba sobre el 3px base). */
	outline: 2px solid var(--evmg-focus);
}

/* Datos personalizados (Multi Data Types). */
.evmg-customdata {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-customdata__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-customdata__set-title {
	font-size: 1.05rem;
	font-weight: 700;
	margin: 1rem 0 0.25rem;
}

.evmg-customdata__list {
	margin: 0;
}

.evmg-customdata__row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem 0.75rem;
	padding: 0.4rem 0;
	border-bottom: 1px solid var(--evmg-border);
}

.evmg-customdata__label {
	flex: 0 0 10rem;
	margin: 0;
	font-weight: 700;
}

.evmg-customdata__value {
	flex: 1 1 12rem;
	margin: 0;
}

/* Búsqueda de eventos. */
.evmg-search {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-search__form {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.5rem;
}

.evmg-search__label {
	flex: 1 0 100%;
	font-weight: 700;
}

.evmg-search__input {
	flex: 1 1 16rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-search__input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-search__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-search__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-search__results {
	margin-top: 1rem;
}

.evmg-search__count {
	font-weight: 700;
	margin: 0 0 0.75rem;
}

.evmg-search__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 1rem;
}

.evmg-search__item {
	margin: 0;
}

/* Navegación de meses (salto de mes/año). */
.evmg-monthnav {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.5rem 1rem;
	margin: 0 0 1rem;
	color: var(--evmg-fg);
}

.evmg-monthnav__form {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.5rem;
}

.evmg-monthnav__field {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
}

.evmg-monthnav__label {
	font-weight: 700;
}

.evmg-monthnav__select {
	min-height: 44px;
	padding: 0.3rem 0.5rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-monthnav__prev,
.evmg-monthnav__next {
	display: inline-flex;
	align-items: center;
	gap: 0.25rem;
	min-height: 44px;
	padding: 0.4rem 0.75rem;
	color: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	text-decoration: underline;
}

.evmg-monthnav__prev:hover,
.evmg-monthnav__next:hover {
	text-decoration: none;
}

.evmg-monthnav__go {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-monthnav__prev:focus-visible,
.evmg-monthnav__next:focus-visible,
.evmg-monthnav__select:focus-visible,
.evmg-monthnav__go:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
	text-decoration: none;
}

/* Barra de filtros. */
.evmg-filters {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-filters__group {
	margin: 0 0 1rem;

	/* Personalizable (Apariencia → Barra de filtros): relleno, borde, radio,
	 * fondo y texto del grupo (fieldset). Fallback al valor de diseño. */
	padding: var(--evmg-filters-padding, 1rem);
	border-style: solid;
	border-width: var(--evmg-filters-border-width, 1px);
	border-color: var(--evmg-filters-border-color, var(--evmg-border));
	border-radius: var(--evmg-filters-radius, 4px);
	background: var(--evmg-filters-bg, var(--evmg-bg));
	color: var(--evmg-filters-text, var(--evmg-fg));
}

.evmg-filters__legend {
	padding: 0 0.4rem;
	font-weight: 700;
}

.evmg-filters__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.25rem;
}

.evmg-filters__item {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0;
}

.evmg-filters__control {

	/* Objetivo táctil >= 24px (WCAG 2.5.8). */
	width: 1.5rem;
	height: 1.5rem;
	margin: 0;
	accent-color: var(--evmg-accent);
}

.evmg-filters__control:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-filters__label {
	cursor: pointer;
}

.evmg-filters__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem;
}

.evmg-filters__apply,
.evmg-filters__clear {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1rem;
	border-radius: 4px;
	font: inherit;
	cursor: pointer;
}

.evmg-filters__apply {
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
}

.evmg-filters__clear {
	color: var(--evmg-accent);
	background: transparent;
	border: 1px solid var(--evmg-accent);
	text-decoration: underline;
}

.evmg-filters__clear:hover {
	text-decoration: none;
}

.evmg-filters__apply:focus-visible,
.evmg-filters__clear:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Caja de búsqueda avanzada. */
.evmg-search-box {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-search-box__field {
	margin: 0 0 0.75rem;
}

.evmg-search-box__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-search-box__input,
.evmg-search-box__select,
.evmg-search-box__date {
	width: 100%;
	max-width: 24rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-search-box__filters {
	margin: 0 0 1rem;
	padding: 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
}

.evmg-search-box__legend {
	padding: 0 0.4rem;
	font-weight: 700;
}

.evmg-search-box__field--check {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.evmg-search-box__field--check .evmg-search-box__label {
	display: inline;
	margin-bottom: 0;
}

.evmg-search-box__checkbox {
	width: 1.15rem;
	height: 1.15rem;
}

.evmg-search-box__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-search-box__input:focus-visible,
.evmg-search-box__select:focus-visible,
.evmg-search-box__date:focus-visible,
.evmg-search-box__checkbox:focus-visible,
.evmg-search-box__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Ver en mi hora local. */
.evmg-localtime {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-localtime__zone {
	margin: 0 0 0.25rem;
}

.evmg-localtime__zone-label {
	font-weight: 700;
}

.evmg-localtime__note {
	margin: 0 0 0.5rem;
	font-style: italic;
}

.evmg-localtime__toggle {
	display: inline-flex;
	align-items: center;
	padding: 0.4rem 0.75rem;
	color: var(--evmg-accent);
	background: transparent;
	border: 1px solid var(--evmg-accent);
	cursor: pointer;
	font: inherit;

	/* Rediseño: pill >= 44px (consolida; ganaba sobre la base 24px/4px). */
	min-height: 44px;
	border-radius: 9999px;
}

.evmg-localtime__toggle:hover {
	text-decoration: underline;
}

.evmg-localtime__toggle:focus-visible {
	outline-offset: 2px;

	/* Rediseño: anillo de foco de 2px (consolida; ganaba sobre el 3px base). */
	outline: 2px solid var(--evmg-focus);
}

.evmg-localtime__toggle[aria-pressed="true"] {
	background: var(--evmg-accent);

	/* Rediseño: el estado activo invierte el texto (consolida; --evmg-inverse
	 * ganaba sobre el --evmg-bg base). */
	color: var(--evmg-inverse);
}

/* Reflow: por debajo de ~30rem la tabla colapsa a lista (cada día = bloque). */
@container (max-width: 30rem) {

	.evmg-month,
	.evmg-month thead,
	.evmg-month tbody,
	.evmg-month tr,
	.evmg-month th,
	.evmg-month td {
		display: block;
		width: auto;
	}

	.evmg-month thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
	}

	.evmg-month__day {
		height: auto;
		min-height: 0;
		margin-bottom: 0.5rem;
	}

	/* Los días fuera del mes (relleno) no aportan datos en la lista móvil. */
	.evmg-month__day.is-outside:not(:has(.evmg-month__events)) {
		display: none;
	}

	.evmg-month__weekday {
		position: static;
		width: auto;
		height: auto;
		clip: auto;
		clip-path: none;
		margin: 0 0.35rem 0 0;
	}

	.evmg-month__weekday::after {
		content: " ";
	}

	.evmg-month__daynum {
		display: inline-block;
	}

	.evmg-week,
	.evmg-week thead,
	.evmg-week tbody,
	.evmg-week tr,
	.evmg-week th,
	.evmg-week td {
		display: block;
		width: auto;
	}

	.evmg-week thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
	}

	.evmg-week__day {
		height: auto;
		min-height: 0;
		margin-bottom: 0.5rem;
	}

	.evmg-week__dayname {
		position: static;
		width: auto;
		height: auto;
		clip: auto;
		clip-path: none;
		display: block;
		margin: 0 0 0.25rem;
	}
}

/* Fallback para navegadores sin soporte de container queries. */
@supports not (container-type: inline-size) {

	@media (max-width: 30rem) {

		.evmg-month,
		.evmg-month thead,
		.evmg-month tbody,
		.evmg-month tr,
		.evmg-month th,
		.evmg-month td {
			display: block;
			width: auto;
		}

		.evmg-month thead {
			position: absolute;
			width: 1px;
			height: 1px;
			overflow: hidden;
			clip: rect(0 0 0 0);
			clip-path: inset(50%);
		}

		.evmg-month__day {
			height: auto;
			min-height: 0;
			margin-bottom: 0.5rem;
		}

		.evmg-month__weekday {
			position: static;
			width: auto;
			height: auto;
			clip: auto;
			clip-path: none;
			margin: 0 0.35rem 0 0;
		}

		.evmg-month__daynum {
			display: inline-block;
		}

		.evmg-week,
		.evmg-week thead,
		.evmg-week tbody,
		.evmg-week tr,
		.evmg-week th,
		.evmg-week td {
			display: block;
			width: auto;
		}

		.evmg-week thead {
			position: absolute;
			width: 1px;
			height: 1px;
			overflow: hidden;
			clip: rect(0 0 0 0);
			clip-path: inset(50%);
		}

		.evmg-week__day {
			height: auto;
			min-height: 0;
			margin-bottom: 0.5rem;
		}

		.evmg-week__dayname {
			position: static;
			width: auto;
			height: auto;
			clip: auto;
			clip-path: none;
			display: block;
			margin: 0 0 0.25rem;
		}
	}
}

/* Validación de entradas (check-in en admin). */
.evmg-ticket-checkin {
	margin: 1rem 0;
	color: var(--evmg-fg);
}

.evmg-ticket-checkin__field {
	margin: 0 0 0.75rem;
}

.evmg-ticket-checkin__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-ticket-checkin__input {
	width: 100%;
	max-width: 22rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

.evmg-ticket-checkin__input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-ticket-checkin__submit {
	min-height: 44px;
}

.evmg-ticket-checkin__result {
	margin: 0.75rem 0 0;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-border);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-ticket-checkin__result:empty {
	display: none;
}

.evmg-ticket-checkin__result.is-ok {
	border-inline-start-color: #1a7f37;
}

.evmg-ticket-checkin__result.is-already {
	border-inline-start-color: #bf8700;
}

.evmg-ticket-checkin__result.is-invalid {
	border-inline-start-color: #b32d2e;
}

/* Lista de espera de entradas (cuando el producto está agotado). */
.evmg-waitlist {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-waitlist__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-waitlist__soldout {
	margin: 0 0 0.75rem;
}

.evmg-waitlist__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-waitlist__message--error {
	border-inline-start-color: #b32d2e;
}

.evmg-waitlist__field {
	margin: 0 0 0.75rem;
}

.evmg-waitlist__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-waitlist__input {
	width: 100%;
	max-width: 22rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-waitlist__input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-waitlist__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1.2rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-waitlist__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Selector de asientos (mapa accesible: grupo de radios). */
.evmg-seatmap {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-seatmap__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-seatmap__intro {
	margin: 0 0 0.75rem;
}

.evmg-seatmap__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-seatmap__message--error {
	border-inline-start-color: #b32d2e;
}

.evmg-seatmap__grid {
	margin: 0 0 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
}

.evmg-seatmap__legend {
	padding: 0 0.4rem;
	font-weight: 700;
}

.evmg-seatmap__row {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.4rem;
	flex-wrap: wrap;
}

.evmg-seatmap__rowlabel {
	flex: 0 0 1.5rem;
	font-weight: 700;
}

.evmg-seatmap__seats {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}

.evmg-seatmap__seat {
	position: relative;
}

/* El radio real se superpone (transparente) al asiento: mantiene la
 * semántica nativa y un área de toque de 44px; el aspecto lo da el label. */
.evmg-seatmap__input {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
	opacity: 0;
	cursor: pointer;
}

.evmg-seatmap__seatlabel {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0.2rem;
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	background: var(--evmg-bg);
	color: var(--evmg-fg);
	font-weight: 700;
	cursor: pointer;
}

/* Foco visible: el contorno se dibuja sobre el label al enfocar el radio. */
.evmg-seatmap__input:focus-visible + .evmg-seatmap__seatlabel {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-seatmap__input:checked + .evmg-seatmap__seatlabel {
	background: var(--evmg-accent);
	color: var(--evmg-bg);
}

.evmg-seatmap__seat.is-taken .evmg-seatmap__seatlabel {
	border-style: dashed;
	border-color: var(--evmg-muted);
	color: var(--evmg-muted);
	background: var(--evmg-today-bg);
	cursor: not-allowed;
	text-decoration: line-through;
}

.evmg-seatmap__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1.2rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-seatmap__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Envío de eventos desde el frontend. */
.evmg-submit {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-submit__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-submit__intro {
	margin: 0 0 1rem;
}

.evmg-submit__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-submit__message--error {
	border-inline-start-color: #b32d2e;
}

.evmg-submit__field {
	margin: 0 0 1rem;
}

.evmg-submit__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-submit__req {
	color: #b32d2e;
}

.evmg-submit__input,
.evmg-submit__textarea {
	width: 100%;
	max-width: 32rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-submit__textarea {
	min-height: 6rem;
}

.evmg-submit__input[aria-invalid="true"],
.evmg-submit__textarea[aria-invalid="true"] {
	border-color: #b32d2e;
	border-width: 2px;
}

.evmg-submit__input:focus-visible,
.evmg-submit__textarea:focus-visible,
.evmg-submit__file:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-submit__hint {
	display: block;
	margin-top: 0.25rem;
	color: var(--evmg-muted);
}

.evmg-submit__error {
	display: block;
	margin-top: 0.25rem;
	color: #b32d2e;
	font-weight: 700;
}

/* Honeypot: fuera de pantalla (no display:none, que algunos bots omiten). */
.evmg-submit__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.evmg-submit__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1.2rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-submit__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Cuenta atrás (sin animación: respeta prefers-reduced-motion por defecto). */

/* Cuenta atrás. Las propiedades del rediseño del single (card destacada con
 * borde de acento, sombra l2, dígitos en terracota) y del layout de dos
 * columnas se consolidan AQUÍ en una sola regla por selector para evitar
 * duplicados. El orden de declaración dentro de cada regla preserva el valor
 * efectivo que ganaba por cascada (las propiedades del rediseño van últimas
 * cuando comparten propiedad con la base). */
.evmg-countdown {
	margin: 1.5rem 0;

	/* Personalizable (Apariencia → Cuenta atrás): relleno, radio, fondo y texto
	 * (conserva el borde de acento a la izquierda). Fallback al diseño. */
	color: var(--evmg-countdown-text, var(--evmg-fg));
	padding: var(--evmg-countdown-padding, var(--evmg-card-padding));
	background: var(--evmg-countdown-bg, var(--evmg-bg));
	border-inline-start: 4px solid var(--evmg-urgent);
	border-radius: var(--evmg-countdown-radius, var(--evmg-radius-card));
	box-shadow: var(--evmg-shadow-l2);
}

.evmg-countdown__visual {
	display: flex;
	gap: 1rem;
	margin: 0 0 0.5rem;

	/* Rediseño (layout de dos columnas): la tira no envuelve (consolida; nowrap
	 * ganaba sobre el wrap base). */
	flex-wrap: nowrap;
}

.evmg-countdown__unit {
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 3.5rem;
	padding: 0.5rem 0.75rem;
	border: 1px solid var(--evmg-border);

	/* Rediseño: radio de botón (consolida; ganaba sobre el 4px base) y reparto
	 * flexible. */
	border-radius: var(--evmg-radius-btn);
	flex: 1 1 0;
}

.evmg-countdown__num {
	font-weight: 700;
	font-variant-numeric: tabular-nums;

	/* Rediseño: dígitos grandes en terracota (consolida; tamaño/altura ganaban
	 * sobre 1.75rem/1.1 base). */
	font-size: var(--wp--preset--font-size--2xl, 3rem);
	line-height: 1.08;
	color: var(--evmg-urgent);
}

.evmg-countdown__label {
	color: var(--evmg-muted);

	/* Rediseño: tamaño xs y peso medio (consolida; xs ganaba sobre 0.85rem
	 * base). */
	font-size: var(--wp--preset--font-size--xs, 0.875rem);
	font-weight: 500;
}

.evmg-countdown__status {
	margin: 0;
	font-weight: 700;
}

/* Reseñas y valoraciones. */
.evmg-reviews {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-reviews__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-reviews__summary {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.35rem;
	font-weight: 700;
	margin: 0 0 1rem;
}

.evmg-reviews__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-reviews__message--error {
	border-inline-start-color: #b32d2e;
}

.evmg-reviews__list {
	list-style: none;
	margin: 0 0 1.5rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

/* Personalizable (Apariencia → Reseñas): relleno, borde, radio, fondo y texto
 * de cada tarjeta de reseña. Fallback al valor de diseño. */
.evmg-reviews__item {
	padding: var(--evmg-reviews-padding, 0.75rem 1rem);
	border-style: solid;
	border-width: var(--evmg-reviews-border-width, 1px);
	border-color: var(--evmg-reviews-border-color, var(--evmg-border));
	border-radius: var(--evmg-reviews-radius, var(--evmg-radius-card));
	background: var(--evmg-reviews-bg, var(--evmg-bg));
	color: var(--evmg-reviews-text, var(--evmg-fg));
	box-shadow: var(--evmg-shadow-l1);
}

.evmg-reviews__rating {
	margin: 0 0 0.25rem;
	font-weight: 700;
	color: var(--evmg-accent);

	/* Rediseño: media en acento de urgencia (sustituye al de marca). */
	color: var(--evmg-urgent);
}

.evmg-reviews__author {
	margin: 0 0 0.25rem;
	font-weight: 700;

	/* Rediseño: tamaño m y altura de línea de título de bloque. */
	font-size: var(--wp--preset--font-size--m, 1.125rem);
	line-height: 1.2;
}

.evmg-reviews__comment {
	margin: 0;
}

.evmg-reviews__stars-field {
	margin: 0 0 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;

	/* Rediseño: radio de card (border-color ya es --evmg-border). */
	border-radius: var(--evmg-radius-card);
}

.evmg-reviews__legend {
	padding: 0 0.4rem;
	font-weight: 700;
}

.evmg-reviews__star {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	margin-inline-end: 0.75rem;

	/* Rediseño: objetivo táctil >= 44px. */
	min-height: 44px;
}

.evmg-reviews__star-input {
	width: 1.25rem;
	height: 1.25rem;
	accent-color: var(--evmg-accent);

	/* Rediseño: estrellas en acento de urgencia (sustituye al de marca). */
	accent-color: var(--evmg-urgent);
}

.evmg-reviews__star-input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-reviews__field {
	margin: 0 0 0.75rem;
}

.evmg-reviews__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-reviews__input,
.evmg-reviews__textarea {
	width: 100%;
	max-width: 30rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	font: inherit;

	/* Rediseño: radio de botón (consolida; ganaba sobre el 4px base). */
	border-radius: var(--evmg-radius-btn);
}

.evmg-reviews__error {
	display: block;
	margin-top: 0.25rem;
	color: #b32d2e;
	font-weight: 700;
}

.evmg-reviews__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	cursor: pointer;
	font: inherit;

	/* Personalizable (Apariencia → Botón primario/CTA): relleno, borde, radio,
	 * fondo y texto del botón primario. Fallback al valor de diseño. */
	padding: var(--evmg-button-padding, 0.4rem 1.2rem);
	border-style: solid;
	border-width: var(--evmg-button-border-width, 1px);
	border-color: var(--evmg-button-border-color, var(--evmg-accent));
	background: var(--evmg-button-bg, var(--evmg-accent));

	/* Rediseño: botón primario a ancho completo, centrado, color inverse y
	 * radio de botón (consolida; --evmg-inverse ganaba sobre --evmg-bg y el
	 * radio de botón sobre el 4px base). */
	width: 100%;
	justify-content: center;
	color: var(--evmg-button-text, var(--evmg-inverse));
	border-radius: var(--evmg-button-radius, var(--evmg-radius-btn));
}

.evmg-reviews__submit:hover {
	background: var(--evmg-accent-strong);
	border-color: var(--evmg-accent-strong);
}

.evmg-reviews__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Favoritos (wishlist). */
.evmg-wishlist {
	margin: 1rem 0;
}

.evmg-wishlist__button {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	min-height: 44px;
	padding: 0.4rem 1rem;
	color: var(--evmg-accent);
	background: transparent;
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-wishlist__button[aria-pressed="true"] {
	color: var(--evmg-bg);
	background: var(--evmg-accent);
}

.evmg-wishlist__button:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-wishlist__button[disabled] {
	opacity: 0.6;
	cursor: progress;
}

/* Suscripción a alertas. */
.evmg-subscribe {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-subscribe__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-subscribe__intro {
	margin: 0 0 0.75rem;
}

.evmg-subscribe__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-subscribe__message--error {
	border-inline-start-color: #b32d2e;
}

.evmg-subscribe__field {
	margin: 0 0 0.75rem;
}

.evmg-subscribe__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-subscribe__input {
	width: 100%;
	max-width: 22rem;
	min-height: 44px;
	padding: 0.4rem 0.6rem;
	color: var(--evmg-fg);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	font: inherit;
}

.evmg-subscribe__input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-subscribe__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1.2rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-subscribe__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-subscribe__note {
	margin: 0.75rem 0 0;
	color: var(--evmg-muted);
	font-size: 0.9rem;
}

/* Mapa de todos los eventos. */
.evmg-eventsmap {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-eventsmap__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.5rem;
}

.evmg-eventsmap__map {
	height: 24rem;
	max-height: 70vh;
	margin: 0 0 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
}

.evmg-eventsmap__list-title {
	font-size: 1.1rem;
	font-weight: 700;
	margin: 1rem 0 0.5rem;
}

.evmg-eventsmap__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.evmg-eventsmap__address {
	font-weight: 700;
}

.evmg-eventsmap__events {
	margin: 0.25rem 0 0;
	padding-inline-start: 1.25rem;
}

.evmg-eventsmap__events li {
	margin: 0 0 0.4rem;
}

/* Área de toque suficiente para los enlaces de la lista (WCAG 2.5.8). */
.evmg-eventsmap__events a {
	display: inline-block;
	min-height: 24px;
	line-height: 24px;
}

/* Previsión meteorológica. */
.evmg-weather {
	margin: 1.5rem 0;
	padding: 0.75rem 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	color: var(--evmg-fg);
}

.evmg-weather__title {
	font-size: 1.1rem;
	font-weight: 700;
	margin: 0 0 0.4rem;
}

.evmg-weather__desc {
	margin: 0 0 0.25rem;
	font-weight: 700;
}

.evmg-weather__temps {
	margin: 0;
	color: var(--evmg-muted);
}

/* Encuesta del evento. */
.evmg-poll {
	margin: 1.5rem 0;
	color: var(--evmg-fg);
}

.evmg-poll__title {
	font-size: 1.25rem;
	font-weight: 700;
	margin: 0 0 0.25rem;
}

.evmg-poll__question {
	font-weight: 700;
	margin: 0 0 0.75rem;
}

.evmg-poll__message {
	margin: 0 0 0.75rem;
	padding: 0.6rem 0.8rem;
	border-radius: 4px;
	border-inline-start: 4px solid var(--evmg-accent);
	background: var(--evmg-today-bg);
	font-weight: 700;
}

.evmg-poll__options {
	margin: 0 0 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
}

.evmg-poll__legend {
	padding: 0 0.4rem;
	font-weight: 700;
}

.evmg-poll__option-row {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.4rem;
}

.evmg-poll__input {
	width: 1.25rem;
	height: 1.25rem;
	accent-color: var(--evmg-accent);
}

.evmg-poll__input:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

.evmg-poll__results {
	list-style: none;
	margin: 0 0 0.5rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.evmg-poll__option {
	display: block;
	font-weight: 700;
	margin-bottom: 0.2rem;
}

.evmg-poll__bar {
	display: block;
	height: 0.75rem;
	background: var(--evmg-today-bg);
	border: 1px solid var(--evmg-border);
	border-radius: 4px;
	overflow: hidden;
}

.evmg-poll__bar-fill {
	display: block;
	height: 100%;
	background: var(--evmg-accent);
}

.evmg-poll__total {
	margin: 0;
	color: var(--evmg-muted);
}

.evmg-poll__submit {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.4rem 1.2rem;
	color: var(--evmg-bg);
	background: var(--evmg-accent);
	border: 1px solid var(--evmg-accent);
	border-radius: 4px;
	cursor: pointer;
	font: inherit;
}

.evmg-poll__submit:focus-visible {
	outline: 3px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Edición rápida (modal de administración). */
.evmg-quickedit__overlay {
	position: fixed;
	inset: 0;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding: 3rem 1rem;
	background: rgba(0, 0, 0, 0.5);
	z-index: 100000;
}

.evmg-quickedit__overlay[hidden] {
	display: none;
}

.evmg-quickedit__panel {
	width: 100%;
	max-width: 32rem;
	max-height: 90vh;
	overflow: auto;
	padding: 1.25rem 1.5rem;
	background: #fff;
	border-radius: 4px;
}

.evmg-quickedit__heading {
	margin-top: 0;
}

.evmg-quickedit__field {
	margin: 0 0 0.75rem;
}

.evmg-quickedit__label {
	display: block;
	font-weight: 700;
	margin-bottom: 0.25rem;
}

.evmg-quickedit__req {
	color: #b32d2e;
}

/* Diseñador de tarjeta y cabecera (admin). */
.evmg-carddesign__group {
	margin: 0 0 1.5rem;
	padding: 0.5rem 1rem 1rem;
	border: 1px solid #c3c4c7;
	border-radius: 4px;
}

.evmg-carddesign__legend {
	font-weight: 700;
	padding: 0 0.5rem;
}

.evmg-carddesign__list {
	margin: 0;
	padding: 0;
	list-style: none;
}

.evmg-carddesign__item {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 1rem;
	padding: 0.5rem;
	border-bottom: 1px solid #f0f0f1;
}

.evmg-carddesign__name {
	flex: 1 1 12rem;
	font-weight: 600;
}

.evmg-carddesign__controls {
	display: flex;
	align-items: center;
	gap: 0.5rem;
}

.evmg-carddesign__move {
	min-height: 30px;
	min-width: 30px;
}

/* Personalización de apariencia (admin): aviso de contraste. */
.evmg-appearance__contrast {
	margin: 1.5rem 0;
	padding: 0.75rem 1rem;
	border: 1px solid #c3c4c7;
	border-radius: 4px;
}

.evmg-appearance__contrast-title {
	margin-top: 0;
	font-size: 1rem;
}

.evmg-appearance__pair {
	margin: 0.35rem 0;
	padding-left: 1.5rem;
}

/* El estado se refuerza con un símbolo de texto, no solo con color. */
.evmg-appearance__pair.is-pass::before {
	content: "\2713 "; /* check */
	margin-left: -1.5rem;
}

.evmg-appearance__pair.is-fail::before {
	content: "\26A0 "; /* warning */
	margin-left: -1.5rem;
}

.evmg-appearance__pair.is-fail {
	color: #8a1f11;
	font-weight: 700;
}

/* No depender solo del color: en forced-colors mantenemos bordes/contornos. */
@media (forced-colors: active) {

	.evmg-month__day.is-today {
		outline: 2px solid CanvasText;
	}

	.evmg-event-link:focus-visible,
	.evmg-event-card__link:focus-visible,
	.evmg-disclosure__trigger:focus-visible,
	.evmg-lightbox__trigger:focus-visible,
	.evmg-lightbox__close:focus-visible,
	.evmg-addtocal__link:focus-visible,
	.evmg-location__directions:focus-visible,
	.evmg-organizers__web:focus-visible,
	.evmg-organizers__email:focus-visible,
	.evmg-gallery__thumb:focus-visible,
	.evmg-gallery__close:focus-visible,
	.evmg-gallery__prev:focus-visible,
	.evmg-gallery__next:focus-visible,
	.evmg-faq__trigger:focus-visible,
	.evmg-share__link:focus-visible,
	.evmg-month__day:focus-visible {
		outline: 3px solid CanvasText;
	}

	.evmg-lightbox__dialog {
		border: 2px solid CanvasText;
	}

	/* El asiento elegido no puede depender solo del color de fondo. */
	.evmg-seatmap__input:checked + .evmg-seatmap__seatlabel {
		outline: 3px solid CanvasText;
		outline-offset: 2px;
	}

	.evmg-seatmap__input:focus-visible + .evmg-seatmap__seatlabel {
		outline: 3px solid CanvasText;
	}

	/* El estado "favorito" no puede depender solo del fondo. */
	.evmg-wishlist__button[aria-pressed="true"] {
		outline: 2px solid CanvasText;
		outline-offset: 2px;
	}
}

@media (prefers-reduced-motion: reduce) {

	.evmg-calendar * {
		animation-duration: 0.001ms !important;
		transition-duration: 0.001ms !important;
	}
}

/* ==========================================================================
 * Rediseño visual del single de evento (evmg-event-detail-redesign).
 *
 * SOLO capa de presentación. No altera marcado, ARIA ni comportamiento: cada
 * regla apunta a las clases reales que ya emiten los componentes PHP. Los
 * tokens mapean a Andromeda (sección 7 del DESIGN.md) vía la capa de variables
 * locales de la cabecera (--evmg-bg/-fg/-muted/-border/-accent/-urgent/-focus),
 * con fallbacks AA cuando el tema no está activo.
 *
 * Tokens locales del rediseño:
 *   radio card 0.5rem / botón 0.375rem / pill 9999px
 *   card-padding 1.5rem · sombra l1 sutil · sombra l2 para destacar countdown
 * ======================================================================== */
.evmg-event-details,
.evmg-addtocal,
.evmg-location,
.evmg-organizers,
.evmg-share,
.evmg-reviews,
.evmg-localtime,
.evmg-countdown {
	--evmg-radius-card: 0.5rem;
	--evmg-radius-btn: 0.375rem;
	--evmg-card-padding: 1.5rem;
	--evmg-shadow-l1: 0 1px 4px rgb(20 33 61 / 8%), 0 0 0 1px rgb(188 204 220 / 40%);
	--evmg-shadow-l2: 0 4px 16px rgb(8 76 74 / 14%);

	/*
	 * Capa de variables de color (idénticas a la cabecera del fichero, líneas
	 * 11-38). Necesaria porque .evmg-countdown, .evmg-reviews y .evmg-localtime
	 * NO están en el selector base de variables, por lo que sin esto sus tokens
	 * (--evmg-urgent/-accent/-focus/-inverse/-bg/-muted) no resolverían en su
	 * scope: el countdown perdía el terracota y el borde, el submit de reseñas
	 * quedaba transparente y el toggle de zona horaria perdía el color de marca.
	 */
	--evmg-bg: var(--wp--preset--color--surface, #fff);
	--evmg-fg: var(--wp--preset--color--text, #1a1a1a);
	--evmg-muted: var(--wp--preset--color--text-soft, #595959);
	--evmg-border: var(--wp--preset--color--border, #6b6b6b);
	--evmg-accent: var(--wp--preset--color--brand, #0b4fb0);
	--evmg-accent-strong: var(--wp--preset--color--brand-strong, #083a82);
	--evmg-urgent: var(--wp--preset--color--accent, #b32d2e);
	--evmg-inverse: var(--wp--preset--color--inverse, #fff);
	--evmg-focus: var(--wp--custom--focus-color, #0b4fb0);

	font-family: var(--wp--preset--font-family--source-sans, inherit);
}

/* --- Tarjetas en surface con sombra l1 (detalles, calendario, compartir,
 *     reseñas, localización). Se elevan sobre el lienzo cálido del tema. --- */
.evmg-event-details,
.evmg-addtocal,
.evmg-location,
.evmg-organizers,
.evmg-share,
.evmg-reviews {
	padding: var(--evmg-card-padding);
	background: var(--evmg-bg);
	border-radius: var(--evmg-radius-card);
	box-shadow: var(--evmg-shadow-l1);
}

/* Personalizable (Apariencia → Detalles del evento): relleno, radio, fondo y
 * texto del contenedor de detalles. Override single-selector que gana sobre la
 * regla de grupo anterior (misma especificidad, orden posterior) sin afectar al
 * resto de tarjetas del grupo. Fallback al valor de diseño en cada var(). */
/* stylelint-disable-next-line no-duplicate-selectors */
.evmg-event-details {
	padding: var(--evmg-details-padding, var(--evmg-card-padding));
	background: var(--evmg-details-bg, var(--evmg-bg));
	border-radius: var(--evmg-details-radius, var(--evmg-radius-card));
	color: var(--evmg-details-text, var(--evmg-fg));
}

/* Títulos de sección (H2): headline-md. */
.evmg-event-details__title,
.evmg-location__title,
.evmg-reviews__title {
	font-size: var(--wp--preset--font-size--l, 1.5rem);
	line-height: 1.08;
}

/* Títulos de tarjeta de sidebar (H2 de añadir-a-calendario y compartir):
 * headline-sm. */
.evmg-addtocal__title,
.evmg-share__title {
	font-size: var(--wp--preset--font-size--m, 1.125rem);
	line-height: 1.2;
}

/* --- Lista de detalles (dl): etiquetas suaves, valores en color de texto,
 *     separadores decorativos con el borde del tema. Las propiedades de
 *     .evmg-event-details__label / __value se consolidaron en su regla base
 *     (sección superior del fichero) para evitar selectores duplicados sin
 *     alterar el resultado computado. --- */
.evmg-event-details__row:last-child {
	border-bottom: 0;
}

/* --- Cuenta atrás: card destacada con borde de acento (terracota) a la
 *     izquierda y sombra l2. Los dígitos grandes usan el acento de urgencia
 *     (ratio accent/surface 8.08:1 AAA). NO se altera el marcado: el bloque
 *     visual sigue siendo aria-hidden y el estado role="status".
 *     Sus reglas se consolidaron en la sección base de la cuenta atrás (arriba)
 *     para evitar selectores duplicados; el render no cambia. --- */

/* --- Botones de calendario. El .ics actúa de primario (relleno de marca);
 *     el de Google, de secundario (contorno de marca). Ambos >= 44px y con
 *     anillo de foco terracota. --- */

/* Las propiedades de presentación de .evmg-addtocal__list / __link /
 * __link:focus-visible se consolidaron en sus reglas base (arriba) para
 * evitar selectores duplicados; el render no cambia. Aquí solo quedan los
 * selectores ÚNICOS del rediseño (el primer ítem actúa de botón primario). */
.evmg-addtocal__list > li:first-child .evmg-addtocal__link {
	color: var(--evmg-inverse);
	background: var(--evmg-accent);
	border-color: var(--evmg-accent);
}

.evmg-addtocal__list > li:first-child .evmg-addtocal__link:hover {
	background: var(--evmg-accent-strong);
	border-color: var(--evmg-accent-strong);
}

/* --- Botones de compartir: ghost de marca, >= 44px, radio de botón.
 *     Las reglas .evmg-share__link / :hover / :focus-visible se consolidaron
 *     en su regla base (arriba) para evitar selectores duplicados; el render
 *     no cambia. --- */

/* --- "Cómo llegar" y mapa de localización. El contenedor del mapa pasa a
 *     radio de card, altura mínima holgada y sombra l1. Las reglas
 *     .evmg-location__directions / :hover / :focus-visible y
 *     .evmg-location__map se consolidaron en sus reglas base (arriba) para
 *     evitar selectores duplicados; el render no cambia. --- */

/* --- Reseñas: tarjetas internas en surface con borde decorativo; estrellas y
 *     valoración media en acento de urgencia (terracota); inputs con borde
 *     de marca en foco (sin acumularse) + anillo de foco terracota.
 *     Las reglas de presentación de __summary / __rating / __item / __author /
 *     __stars-field / __star-input / __star / __input,__textarea / __submit y
 *     __submit:hover se consolidaron en sus reglas base (sección superior)
 *     para evitar selectores duplicados; el render no cambia. Aquí solo
 *     quedan los selectores ÚNICOS del rediseño (textarea alta y foco de
 *     campo). --- */
.evmg-reviews__textarea {
	min-height: 120px;
}

/* Borde de marca en foco (sustituye, no se acumula al decorativo) + anillo. */
.evmg-reviews__input:focus-visible,
.evmg-reviews__textarea:focus-visible {
	border-color: var(--evmg-accent);
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* --- Conmutador de zona horaria: el botón toggle pasa a pill; el estado
 *     activo invierte (marca + inverse). Conserva aria-pressed y
 *     comportamiento. Las reglas .evmg-localtime__toggle / :focus-visible /
 *     [aria-pressed="true"] se consolidaron en sus reglas base (arriba) para
 *     evitar selectores duplicados; el render no cambia. --- */

/* --- Cada tarjeta del single ocupa el ancho completo de su columna del grid
 *     (una sola columna por debajo del breakpoint; ver layout de dos columnas
 *     más abajo). El armazón del hero/cabecera sigue siendo del tema. --- */
.evmg-event-details,
.evmg-addtocal,
.evmg-location,
.evmg-share,
.evmg-reviews,
.evmg-countdown {
	width: 100%;
}

/* Las reglas .evmg-countdown__visual (flex-wrap: nowrap) y
 * .evmg-countdown__unit (flex: 1 1 0) del layout de dos columnas se
 * consolidaron en sus reglas base (arriba) para evitar selectores
 * duplicados; el resultado computado es idéntico. */

/* ==========================================================================
 * Layout de dos columnas del single (REDESIGN — evmg-event-detail-redesign).
 *
 * El coordinador PHP (EVMG\Frontend\SingleLayout) reparte las secciones del
 * single en TRES contenedores REALES dentro de
 * `.evmg-single-layout[data-evmg-single]`:
 *
 *   - `.evmg-single__full`  → cuenta atrás (ancho completo, arriba).
 *   - `.evmg-single__main`  → descripción, detalles, reseñas, zona horaria y
 *      cualquier sección desconocida/condicional (galería, FAQs, RSVP, etc.).
 *   - `.evmg-single__aside` → añadir a calendario, ubicación, organizadores y
 *      compartir.
 *
 * Al ser contenedores reales, cada columna fluye de forma INDEPENDIENTE (sus
 * secciones se apilan con un gap vertical propio), de modo que NO hay
 * huecos por acoplamiento de filas como ocurría con un único grid sobre
 * DOM plano.
 *
 *   - Por debajo de 64rem: una sola columna en orden vertical full → main →
 *     aside (orden del DOM).
 *   - A partir de 64rem: dos columnas reales (full a lo ancho; main / aside).
 * ======================================================================== */
.evmg-single-layout {
	display: grid;
	gap: var(--wp--style--block-gap, 1.5rem);
}

/* Cada columna apila sus secciones con su propio gap vertical: fluyen solas. */
.evmg-single__full,
.evmg-single__main,
.evmg-single__aside {
	display: flex;
	flex-direction: column;
	gap: var(--wp--style--block-gap, 1.5rem);
	min-width: 0;
}

@media (min-width: 64rem) {

	.evmg-single-layout {
		grid-template-columns: minmax(0, 1fr) minmax(0, 22rem);
		grid-template-areas:
			"full full"
			"main aside";
		gap: 1.5rem 3rem; /* section-gap vertical, gutter horizontal (DESIGN §3). */
		align-items: start;
	}

	.evmg-single__full {
		grid-area: full;
	}

	.evmg-single__main {
		grid-area: main;
	}

	.evmg-single__aside {
		grid-area: aside;
	}
}

/* --- Iconos SVG de los botones de compartir (decorativos, aria-hidden). El
 *     nombre accesible lo siguen aportando aria-label y el texto visible
 *     `.evmg-share__label`; el icono solo añade refuerzo visual. --- */
.evmg-share__icon {
	flex: 0 0 auto;
	width: 1.5rem;
	height: 1.5rem;
	margin: 0; /* Solo icono: sin separación para texto. */
}

/* Solo se muestra el icono; el nombre permanece en la etiqueta como texto
 * accesible (además del aria-label del enlace), oculto SOLO visualmente. */
.evmg-share__label {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* El botón cuadrado centrado en torno al icono (justify-content/inline-size/
 * padding-inline) se consolidó en la regla base .evmg-share__link (arriba)
 * para evitar el selector duplicado; el render no cambia. */

/* --- Estrellas (★/☆) de las reseñas como refuerzo VISUAL. Los glifos son nodos
 *     DECORATIVOS dentro de un contenedor `aria-hidden` (no los anuncian los
 *     lectores), preservando el texto accesible real («N de 5 estrellas» en
 *     .evmg-sr-only, labels de los radios) y el comportamiento del grupo de
 *     radios. Llena vs. vacía se distingue por la FORMA del glifo (★ vs ☆), no
 *     solo por color (WCAG 1.4.1). --- */
.evmg-reviews__stars {
	display: inline-flex;
	align-items: center;
	gap: 0.1rem;
	margin-inline-end: 0.35rem;
	line-height: 1;
}

.evmg-reviews__star-glyph--full {
	color: var(--evmg-urgent);
}

.evmg-reviews__star-glyph--empty {
	color: var(--evmg-muted);
}

/* Selector de estrellas del formulario: la opción N muestra N glifos llenos (★)
 * y (5−N) vacíos (☆) como refuerzo VISUAL decorativo (contenedor aria-hidden).
 * El texto («1 estrella», «2 estrellas»…) permanece como NOMBRE ACCESIBLE del
 * radio asociado (label[for]) en .evmg-sr-only, de modo que lectores y teclado
 * no cambian. El radio nativo sigue visible, operable y con foco visible. */
.evmg-reviews__star-label {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
}

.evmg-reviews__star-label .evmg-reviews__stars {
	margin-inline-end: 0;
	font-size: 1.5rem;
}

/* ==========================================================================
 * Fix VETO #3 — Target size mínimo 44px (WCAG 2.5.8).
 *
 * El reset de Andromeda (`base.css`:
 * `button,[type=submit]…{min-height:1.5rem}`) gana por orden/especificidad y
 * reducía estos controles a ~40,375px. Se sube la especificidad (selector de
 * contexto) y se añade `padding-block` para garantizar una altura real
 * >= 44px sin depender solo de `min-height`.
 * ======================================================================== */
.evmg-reviews .evmg-reviews__submit {
	min-height: 44px;
	padding-block: 0.625rem; /* refuerza altura real >= 44px sobre el reset del tema. */
}

.evmg-localtime .evmg-localtime__toggle {
	min-height: 44px;
	padding-block: 0.625rem;
}

/* ==========================================================================
 * Rediseño visual de la vista de LISTA y del carrusel/GALERÍA
 * (design system "Andromeda Editorial" — mismo del rediseño del single).
 *
 * SOLO capa de presentación (CSS). NO se altera marcado, ARIA ni
 * comportamiento: cada regla apunta a las clases reales que ya emiten
 * ListView, EventSlider y EventCard. Los iconos decorativos (pin,
 * calendario) se inyectan como
 * pseudo-elementos con una máscara SVG (paths de Font Awesome Free), igual que
 * el ★ de reseñas del single: no añaden nodos al DOM, no los anuncian los
 * lectores y no tocan los tests de estructura.
 *
 * Tokens locales (mismos valores que el bloque del single, líneas ~3219):
 *   radio card 0.5rem / botón 0.375rem · card-padding 1.5rem/0.75rem
 *   sombra l1 sutil · gap de filas 0.75rem.
 *
 * Limitaciones documentadas (la ficha pide piezas SIN marcado donde colgarse;
 * añadirlas sería un cambio grande de comportamiento, así que NO se fuerzan):
 *   - LISTA: el bloque de fecha brand (día grande/mes), el badge de categoría
 *     pill y el CTA "Ver evento" como botón aparte NO existen en ListView (la
 *     fila ENTERA es un único enlace, sin término de categoría ni fecha
 *     desglosada). Se estiliza la fila-card y su contenido reales.
 *   - LISTA: ListView no emite paginación (render_query corta por per_page sin
 *     controles), así que no hay paginación que estilizar.
 *   - GALERÍA: EventCard no tiene campo de categoría ni un <button>/enlace de
 *     acción separado del título; se estiliza la tarjeta, su imagen, título,
 *     fecha y ubicación reales.
 *   - GALERÍA: slider.js NO genera puntos de paginación ni desactiva
 *     prev/next (el carrusel es circular), por lo que no hay dots ni estado
 *     disabled que estilizar; se refuerzan los controles que sí existen.
 * ======================================================================== */
.evmg-agenda,
.evmg-slider,
.evmg-event-card {
	--evmg-radius-card: 0.5rem;
	--evmg-radius-btn: 0.375rem;
	--evmg-shadow-l1: 0 1px 4px rgb(20 33 61 / 8%), 0 0 0 1px rgb(188 204 220 / 40%);

	/*
	 * Capa de variables de color para .evmg-slider, que NO está en el selector
	 * base de variables de la cabecera (líneas 11-22). Sin esto, los controles
	 * del carrusel perderían el color de marca y el anillo de foco. .evmg-agenda
	 * y .evmg-event-card sí heredan los tokens del selector base; repetirlos aquí
	 * es inocuo (mismos valores) y mantiene el bloque autocontenido.
	 */
	--evmg-bg: var(--wp--preset--color--surface, #fff);
	--evmg-fg: var(--wp--preset--color--text, #1a1a1a);
	--evmg-muted: var(--wp--preset--color--text-soft, #595959);
	--evmg-border: var(--wp--preset--color--border, #6b6b6b);
	--evmg-accent: var(--wp--preset--color--brand, #0b4fb0);
	--evmg-accent-strong: var(--wp--preset--color--brand-strong, #083a82);
	--evmg-inverse: var(--wp--preset--color--inverse, #fff);
	--evmg-focus: var(--wp--custom--focus-color, #0b4fb0);

	/* Iconos decorativos (paths de Font Awesome Free; sin dependencias). Se
	 * inyectan como máscara en pseudo-elementos: ningún nodo nuevo en el DOM. */

	/* calendar-day. */
	--evmg-icon-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-96 0z'/%3E%3C/svg%3E");

	/* location-dot. */
	--evmg-icon-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z'/%3E%3C/svg%3E");

	font-family: var(--wp--preset--font-family--source-sans, inherit);
}

/* --- VISTA LISTA: cada evento es una fila-card en surface -----------------
 * El gap de .evmg-agenda__list, el título .evmg-agenda .evmg-event-link__title
 * y el color/alineación de .evmg-agenda__when se consolidaron en sus reglas
 * base (sección superior) para evitar selectores duplicados; el render no
 * cambia. Aquí quedan los selectores ÚNICOS del rediseño de lista. */

/* La fila completa (enlace) se convierte en una card: surface, radio, sombra
 * l1, padding 1.5rem horizontal / 0.75rem vertical. Se conserva que TODA la
 * fila es el enlace (comportamiento intacto). */
.evmg-agenda .evmg-event-link {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.25rem 1rem;

	/* Personalizable (Apariencia → Lista/agenda): relleno, borde, radio, fondo y
	 * texto con fallback al valor de diseño. */
	padding: var(--evmg-agenda-padding, 0.75rem 1.5rem);
	background: var(--evmg-agenda-bg, var(--evmg-bg));
	border-style: solid;
	border-width: var(--evmg-agenda-border-width, 0);
	border-color: var(--evmg-agenda-border-color, var(--evmg-border));
	border-radius: var(--evmg-agenda-radius, var(--evmg-radius-card));
	box-shadow: var(--evmg-shadow-l1);
	text-decoration: none;
	color: var(--evmg-agenda-text, var(--evmg-fg));
}

.evmg-agenda .evmg-event-link:hover {
	box-shadow: var(--evmg-shadow-l1), 0 2px 8px rgb(20 33 61 / 10%);
}

/* Foco visible (ficha): outline 2px de marca, offset 2px. */
.evmg-agenda .evmg-event-link:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
	box-shadow: var(--evmg-shadow-l1);
}

/* Fila de fecha/hora: un icono de calendario decorativo la precede (el color
 * y la alineación se consolidaron en la regla base .evmg-agenda__when). */
.evmg-agenda__when::before {
	content: "";
	flex: 0 0 auto;
	align-self: center;
	width: 1rem;
	height: 1rem;
	margin-inline-end: 0.15rem;
	background-color: var(--evmg-accent);

	/* calendar-day (Font Awesome Free, decorativo). */
	-webkit-mask: var(--evmg-icon-calendar) center / contain no-repeat;
	mask: var(--evmg-icon-calendar) center / contain no-repeat;
}

/* --- VISTA GALERÍA (carrusel): tarjetas y controles -----------------------
 * Las reglas .evmg-slider__slide, .evmg-event-card__title,
 * .evmg-event-card__link y .evmg-event-card__link:focus-visible se
 * consolidaron en sus reglas base (sección superior) para evitar selectores
 * duplicados; el render no cambia.
 * Aquí quedan los selectores ÚNICOS del rediseño de galería (iconos
 * decorativos, controles del carrusel) y el restyle de .evmg-event-card. */

/* Tarjeta: surface, radio de card y sombra l1 (el borde se sustituye por la
 * sombra). Aplica a la tarjeta en cualquier vista que la reutilice.
 *
 * NOTA (no-duplicate-selectors): este .evmg-event-card NO se puede fusionar con
 * la regla base (línea ~861). Las variantes .evmg-event-card--minimal y
 * --bubble tienen la MISMA especificidad (0,1,0) que .evmg-event-card y
 * resuelven su borde/radio por ORDEN de cascada: este bloque debe quedar
 * DESPUÉS de ellas para que `border: 0` y el radio de card ganen (igual que en
 * el original). A la vez, la base debe quedar ANTES de --side (también 0,1,0)
 * para que `flex-direction: column` no pise el `row` de --side. Un único
 * selector no puede cumplir ambas posiciones sin cambiar el render, así que se
 * conserva el duplicado deliberadamente. */

/* Personalizable (Apariencia → Tarjeta): borde, radio, fondo y texto. El borde
 * es 0 por defecto (la card usa sombra); definir un border-width/-color
 * recupera el borde. Fallback al valor de diseño en cada var(). */
/* stylelint-disable-next-line no-duplicate-selectors */
.evmg-event-card {
	border-style: solid;
	border-width: var(--evmg-card-border-width, 0);
	border-color: var(--evmg-card-border-color, var(--evmg-border));
	border-radius: var(--evmg-card-radius, var(--evmg-radius-card));
	box-shadow: var(--evmg-shadow-l1);
	background: var(--evmg-card-bg, var(--evmg-bg));
	color: var(--evmg-card-text, var(--evmg-fg));
}

/* Fecha (icono calendario) y ubicación (icono pin) con icono decorativo que
 * precede al texto. Los iconos son máscaras SVG: ningún nodo nuevo, ningún
 * cambio de ARIA. La etiqueta accesible de la ubicación sigue siendo el
 * .evmg-sr-only que ya emite EventCard. */
.evmg-event-card__meta,
.evmg-event-card__location {
	display: flex;
	align-items: baseline;
	gap: 0.4rem;
}

.evmg-event-card__meta::before,
.evmg-event-card__location::before {
	content: "";
	flex: 0 0 auto;
	align-self: center;
	width: 1rem;
	height: 1rem;
	background-color: var(--evmg-accent);
}

.evmg-event-card__meta::before {
	-webkit-mask: var(--evmg-icon-calendar) center / contain no-repeat;
	mask: var(--evmg-icon-calendar) center / contain no-repeat;
}

.evmg-event-card__location::before {
	-webkit-mask: var(--evmg-icon-pin) center / contain no-repeat;
	mask: var(--evmg-icon-pin) center / contain no-repeat;
}

/* Controles del carrusel: botones circulares >= 44px (objetivo 52px), borde e
 * icono de marca, anillo de foco de 2px. Conservan aria-label/aria-pressed.
 * Las reglas .evmg-slider__btn / :hover / :focus-visible se consolidaron en
 * sus reglas base (sección superior) para evitar selectores duplicados; el
 * render no cambia. */

/* El botón de pausa/reproducir lleva texto, no glifo: se ensancha para no
 * romper el círculo cuando el texto es largo ("Reanudar la rotación…"). */
.evmg-slider__pause {
	min-width: 52px;
	width: auto;
	padding-inline: 1rem;
	border-radius: 9999px;
}

/* Estado disabled defensivo (slider.js no lo usa hoy; ver nota de cabecera). */
.evmg-slider__btn[disabled],
.evmg-slider__btn[aria-disabled="true"] {
	color: var(--evmg-muted);
	border-color: var(--evmg-border);
	cursor: not-allowed;
}

/* Refuerzo de foco en forced-colors (no depender solo del color). */
@media (forced-colors: active) {

	.evmg-agenda .evmg-event-link:focus-visible,
	.evmg-event-card__link:focus-visible,
	.evmg-slider__btn:focus-visible {
		outline: 3px solid CanvasText;
	}
}

/* ==========================================================================
 * FIDELIDAD LISTA + GALERÍA (request evmg-list-gallery-fidelity).
 * Amplía el markup existente: la lista pasa a filas-card planas con bloque de
 * fecha (teal), ubicación, distintivo de categoría y botón "Ver evento"; la
 * galería añade distintivo de categoría sobre el cover, botón "Inscribirse",
 * puntos de paginación e indicador "N / M". Iconos decorativos inline
 * (aria-hidden) heredan currentColor. Tokens Andromeda vía la capa --evmg-*.
 * ======================================================================== */

/* --- VISTA LISTA (fila-card plana, sin enlace envolvente) ----------------- */

/* Cada fila es una card en surface (radio + sombra l1). NO es interactiva: los
 * únicos controles son el título-enlace y el botón "Ver evento". El estilo de
 * card se aplica a la fila (.evmg-agenda__row, selector único) para no duplicar
 * .evmg-agenda__item, que ya existe en la sección base. */
.evmg-agenda__row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.25rem;
	padding: 1rem 1.5rem;
	background: var(--evmg-bg);
	border-radius: var(--evmg-radius-card);
	box-shadow: var(--evmg-shadow-l1);
}

/* Bloque de fecha (teal): día grande + mes abreviado en mayúsculas. Texto
 * inverse sobre brand (ratio 5.82:1, AA). */
.evmg-agenda__date {
	display: flex;
	flex: 0 0 auto;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-width: 3.75rem;
	min-height: 3.75rem;
	padding: 0.5rem;
	background: var(--evmg-accent);
	color: var(--evmg-inverse);
	border-radius: var(--evmg-radius-btn);
	line-height: 1.1;
}

.evmg-agenda__date-day {
	font-family: var(--wp--preset--font-family--condensed-impact, inherit);
	font-size: var(--wp--preset--font-size--l, 1.5rem);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}

.evmg-agenda__date-month {
	font-size: var(--wp--preset--font-size--xs, 0.875rem);
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

/* Bloque principal (título + ubicación) ocupa el espacio flexible. */
.evmg-agenda__main {
	flex: 1 1 14rem;
	min-width: 0;
}

.evmg-agenda__event-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--source-sans, inherit);
	font-size: var(--wp--preset--font-size--m, 1.125rem);
	font-weight: 600;
	line-height: 1.2;
}

.evmg-agenda__link {
	display: inline-block;
	min-height: 24px;
	padding: 0.1rem 0;
	color: var(--evmg-fg);
	text-decoration: none;
}

.evmg-agenda__link:hover {
	text-decoration: underline;
}

.evmg-agenda__link:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
	text-decoration: none;
}

/* Ubicación: icono pin decorativo + término. El nombre accesible lo aporta el
 * .evmg-sr-only "Ubicación:". */
.evmg-agenda__location {
	display: flex;
	align-items: center;
	gap: 0.35rem;
	margin: 0.35rem 0 0;
	color: var(--evmg-muted);
	font-size: var(--wp--preset--font-size--s, 1rem);
}

.evmg-agenda__icon {
	flex: 0 0 auto;
	width: 1rem;
	height: 1rem;
	color: var(--evmg-accent);
}

/* Lateral: distintivo de categoría (pill) + botón "Ver evento". */
.evmg-agenda__aside {
	display: flex;
	flex: 0 0 auto;
	flex-direction: column;
	gap: 0.5rem;
	align-items: flex-end;
	margin-inline-start: auto;
}

/* Distintivo de categoría (pill): texto sobre canvas con borde (ratio
 * text/canvas ~14.66:1). No depende solo del color: es un texto con borde. */
.evmg-agenda__category {
	display: inline-block;
	padding: 0.15rem 0.65rem;
	background: var(--evmg-today-bg);
	color: var(--evmg-fg);
	border: 1px solid var(--evmg-border);
	border-radius: 9999px;
	font-size: var(--wp--preset--font-size--xs, 0.875rem);
	font-weight: 500;
}

/* Botón "Ver evento": estilo outline de marca, objetivo táctil >= 44px. */
.evmg-agenda__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0.5rem 1rem;
	color: var(--evmg-accent);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-accent);
	border-radius: var(--evmg-radius-btn);
	font-size: var(--wp--preset--font-size--xs, 0.875rem);
	font-weight: 500;
	text-decoration: none;
}

.evmg-agenda__cta:hover {
	color: var(--evmg-inverse);
	background: var(--evmg-accent);
}

.evmg-agenda__cta:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Paginación accesible (Anterior / 1 2 3 / Siguiente). paginate_links() emite
 * una <ul>; cada control es un enlace o la página actual (aria-current). */
.evmg-agenda__pagination {
	margin: 1.5rem 0 0;
}

.evmg-agenda__pagination .page-numbers {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	margin: 0;
	padding: 0;
	justify-content: center;
}

.evmg-agenda__pagination a.page-numbers,
.evmg-agenda__pagination span.page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0.25rem 0.75rem;
	border: 1px solid var(--evmg-accent);
	border-radius: var(--evmg-radius-btn);
	color: var(--evmg-accent);
	text-decoration: none;
}

.evmg-agenda__pagination a.page-numbers:hover {
	color: var(--evmg-inverse);
	background: var(--evmg-accent);
}

.evmg-agenda__pagination a.page-numbers:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Página actual: relleno de marca + texto inverse (5.82:1) y aria-current. No
 * solo color: el borde y el relleno la distinguen del resto. */
.evmg-agenda__pagination .page-numbers.current {
	background: var(--evmg-accent);
	color: var(--evmg-inverse);
	border-color: var(--evmg-accent);
}

.evmg-agenda__pagination .page-numbers.dots {
	border-color: transparent;
	color: var(--evmg-fg);
}

/* --- VISTA GALERÍA (carrusel): badge, CTA, dots, indicador --------------- */

/* Distintivo de categoría sobre el cover: pill brand + texto inverse (5.82:1
 * AA, independiente del contenido de la imagen). El contenedor .evmg-event-card
 * __media ya queda posicionado en su regla base. */
.evmg-event-card__category {
	position: absolute;
	top: 0.75rem;
	inset-inline-end: 0.75rem;
	padding: 0.2rem 0.7rem;
	background: var(--evmg-accent);
	color: var(--evmg-inverse);
	border-radius: 9999px;
	font-size: var(--wp--preset--font-size--xs, 0.875rem);
	font-weight: 500;
}

/* Botón "Inscribirse": primario (brand bg, inverse text), >= 44px, full width
 * del cuerpo de la tarjeta. Interactivo independiente del título-enlace. */
.evmg-event-card__actions {
	margin: 1rem 0 0;
}

.evmg-event-card__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 44px;
	padding: 0.5rem 1rem;
	background: var(--evmg-accent);
	color: var(--evmg-inverse);
	border: 1px solid var(--evmg-accent);
	border-radius: var(--evmg-radius-btn);
	font-weight: 500;
	text-decoration: none;
}

.evmg-event-card__cta:hover {
	background: var(--evmg-accent-strong);
	border-color: var(--evmg-accent-strong);
}

.evmg-event-card__cta:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Indicador "N / M" (decorativo, aria-hidden): texto sutil junto a los
 * controles. */
.evmg-slider__status {
	margin: 0;
	align-self: center;
	color: var(--evmg-muted);
	font-variant-numeric: tabular-nums;
}

/* Puntos de paginación: fila centrada de botones circulares >= 44px. */
.evmg-slider__dots {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0.25rem;
	margin: 0 0 0.75rem;
}

.evmg-slider__dot {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0;
	background: transparent;
	border: 0;
	cursor: pointer;
}

/* El glifo del punto: círculo de 0.75rem. El borde (no solo color) y el
 * relleno distinguen el estado activo. */
.evmg-slider__dot > span {
	width: 0.75rem;
	height: 0.75rem;
	border: 2px solid var(--evmg-accent);
	border-radius: 9999px;
}

.evmg-slider__dot:hover > span {
	background: var(--evmg-accent);
}

.evmg-slider__dot.is-current > span {
	background: var(--evmg-accent);
	box-shadow: 0 0 0 2px var(--evmg-bg), 0 0 0 4px var(--evmg-accent);
}

.evmg-slider__dot:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
	border-radius: var(--evmg-radius-btn);
}

/* Refuerzo de foco en forced-colors para los nuevos controles. */
@media (forced-colors: active) {

	.evmg-agenda__link:focus-visible,
	.evmg-agenda__cta:focus-visible,
	.evmg-agenda__pagination a.page-numbers:focus-visible,
	.evmg-event-card__cta:focus-visible,
	.evmg-slider__dot:focus-visible {
		outline: 3px solid CanvasText;
	}

	.evmg-slider__dot.is-current > span {
		background: CanvasText;
	}
}

/* ========================================================================
 * GALERÍA MULTI-TARJETA DE EVENTOS ([evmg_event_gallery] -> EventGallery)
 *
 * Pista horizontal con scroll-snap que muestra VARIAS tarjetas a la vez,
 * desplazable izquierda↔derecha, con controles centrados DEBAJO. Distinta del
 * carrusel .evmg-slider (una diapositiva a la vez). Reutiliza los tokens de
 * surface/sombra/radio del rediseño.
 * ===================================================================== */
.evmg-event-gallery {
	--evmg-radius-card: 0.5rem;
	--evmg-radius-btn: 0.375rem;
	--evmg-shadow-l1: 0 1px 4px rgb(20 33 61 / 8%), 0 0 0 1px rgb(188 204 220 / 40%);

	color: var(--evmg-fg);
}

/* Pista: tira flexible desplazable con anclaje. Sin JS ya es navegable (la
 * alternativa accesible al gesto de deslizamiento; WCAG 2.5.7). El padding
 * inferior deja sitio al anillo de foco de las tarjetas al hacer tab. */
.evmg-event-gallery__track {
	list-style: none;
	margin: 0;
	padding: 0.25rem 0.25rem 0.75rem;
	display: flex;
	gap: 1rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: 0.25rem;

	/* Oculta la barra de scroll SIN perder el desplazamiento (teclado, rueda,
	 * flechas y arrastre siguen funcionando). Firefox y Edge antiguo: */
	scrollbar-width: none;
	-ms-overflow-style: none;
}

/* Chrome/Safari/Edge moderno: oculta la barra de scroll (WebKit/Blink). */
.evmg-event-gallery__track::-webkit-scrollbar {
	display: none;
}

/* Foco visible en la propia pista (es alcanzable por teclado, tabindex="0"). */
.evmg-event-gallery__track:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
	border-radius: var(--evmg-radius-card);
}

/* Cada tarjeta: ~1.2 visibles en móvil (la siguiente "se asoma" e invita a
 * desplazar). Surface + sombra l1 + radio 0.5rem. */
.evmg-event-gallery__item {
	margin: 0;
	flex: 0 0 80%;
	scroll-snap-align: start;
	background: var(--evmg-bg);
	border-radius: var(--evmg-radius-card);
	box-shadow: var(--evmg-shadow-l1);
	overflow: hidden;
}

/* La tarjeta interior ya no necesita su propio borde/radio: lo aporta el item
 * (evita doble borde y respeta el surface elevado del diseño). */
.evmg-event-gallery__item .evmg-event-card {
	height: 100%;
	border: 0;
	border-radius: inherit;
	background: transparent;
}

/* ~2 tarjetas en tablet. */
@media (min-width: 48rem) {

	.evmg-event-gallery__item {
		flex-basis: calc((100% - 1rem) / 2);
	}
}

/* ~3-4 tarjetas en desktop. */
@media (min-width: 64rem) {

	.evmg-event-gallery__item {
		flex-basis: calc((100% - 3rem) / 4);
	}
}

/* Controles centrados DEBAJO de la pista (ocultos sin JS). */
.evmg-event-gallery__controls {
	display: flex;
	justify-content: center;
	gap: 1rem;
	margin: 0.75rem 0 0;
}

/* Botón circular >= 44px, icono SVG centrado. */
.evmg-event-gallery__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0;
	color: var(--evmg-accent);
	background: var(--evmg-bg);
	border: 1px solid var(--evmg-accent);
	border-radius: 9999px;
	cursor: pointer;
}

.evmg-event-gallery__btn:hover {
	color: var(--evmg-inverse);
	background: var(--evmg-accent);
	border-color: var(--evmg-accent);
}

.evmg-event-gallery__btn:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Extremos del scroll: deshabilitado por texto (aria-disabled) y por estilo;
 * no se distingue solo por color (también baja opacidad y quita el puntero). */
.evmg-event-gallery__btn[disabled],
.evmg-event-gallery__btn[aria-disabled="true"] {
	opacity: 0.4;
	cursor: not-allowed;
}

.evmg-event-gallery__btn[disabled]:hover,
.evmg-event-gallery__btn[aria-disabled="true"]:hover {
	color: var(--evmg-accent);
	background: var(--evmg-bg);
}

.evmg-event-gallery__icon {
	display: block;
}

.evmg-event-gallery__empty {
	margin: 0;
	color: var(--evmg-fg);
}

/* Refuerzo de foco en forced-colors. */
@media (forced-colors: active) {

	.evmg-event-gallery__track:focus-visible,
	.evmg-event-gallery__btn:focus-visible {
		outline: 3px solid CanvasText;
	}
}

/* -------------------------------------------------------------------------- *
 * Formulario de filtros (compartido por [evmg_agenda] y [evmg_event_gallery]).
 * Método GET, sin JS: la base accesible. Foco visible y targets >= 44px.
 * -------------------------------------------------------------------------- */
.evmg-event-filters {
	margin: 0 0 1.5rem;
	color: var(--evmg-fg);
}

.evmg-event-filters__fieldset {
	margin: 0;
	padding: 1rem;
	border: 1px solid var(--evmg-border);
	border-radius: var(--evmg-radius-card);
	background: var(--evmg-bg);
}

.evmg-event-filters__legend {
	padding: 0 0.5rem;
	font-weight: 700;
	color: var(--evmg-fg);
}

.evmg-event-filters__fields {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	align-items: flex-end;
}

.evmg-event-filters__field {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	flex: 1 1 12rem;
	min-width: 12rem;
}

.evmg-event-filters__label {
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--evmg-fg);
}

.evmg-event-filters__select,
.evmg-event-filters__date {
	min-height: 44px; /* WCAG 2.5.8: target táctil >= 44px. */
	padding: 0.5rem 0.75rem;
	border: 1px solid var(--evmg-border);
	border-radius: var(--evmg-radius-btn);
	background: var(--evmg-bg);
	color: var(--evmg-fg);
	font-size: 1rem;
}

.evmg-event-filters__select:focus-visible,
.evmg-event-filters__date:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Rango de fechas: fieldset anidado sin caja, alineado con los selects. */
.evmg-event-filters__dates {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	margin: 0;
	padding: 0;
	border: 0;
}

.evmg-event-filters__dates-legend {
	width: 100%;
	padding: 0;
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--evmg-fg);
}

.evmg-event-filters__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	margin-top: 1rem;
}

.evmg-event-filters__apply,
.evmg-event-filters__clear {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	min-width: 44px;
	padding: 0.5rem 1.25rem;
	border-radius: var(--evmg-radius-btn);
	font-size: 1rem;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}

.evmg-event-filters__apply {
	border: 1px solid var(--evmg-accent);
	background: var(--evmg-accent);
	color: var(--evmg-inverse);
}

.evmg-event-filters__apply:hover {
	background: var(--evmg-accent-strong);
	border-color: var(--evmg-accent-strong);
}

.evmg-event-filters__clear {
	border: 1px solid var(--evmg-border);
	background: var(--evmg-bg);
	color: var(--evmg-accent);
}

.evmg-event-filters__clear:hover {
	border-color: var(--evmg-accent);
}

.evmg-event-filters__apply:focus-visible,
.evmg-event-filters__clear:focus-visible {
	outline: 2px solid var(--evmg-focus);
	outline-offset: 2px;
}

/* Refuerzo de foco en forced-colors para el formulario de filtros. */
@media (forced-colors: active) {

	.evmg-event-filters__select:focus-visible,
	.evmg-event-filters__date:focus-visible,
	.evmg-event-filters__apply:focus-visible,
	.evmg-event-filters__clear:focus-visible {
		outline: 3px solid CanvasText;
	}
}

/* ========================================================================
 * Uniformidad de imágenes.
 *  - Galería: todas las tarjetas con la misma relación de aspecto (cover),
 *    independientemente de las dimensiones de la imagen original.
 *  - Hero del single de evento: misma altura (responsiva) para todos los
 *    eventos; la imagen se fuerza al espacio disponible (cover) y nunca es
 *    gigante. Va scopeado a `.single-evmg_event` (no afecta a otros singles).
 * ======================================================================== */
.evmg-event-gallery .evmg-event-card__media {
	aspect-ratio: 16 / 9;
	overflow: hidden;
}

.evmg-event-gallery .evmg-event-card__image {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.single-evmg_event .wp-block-post-featured-image {
	margin-block-end: 1.5rem;
}

.single-evmg_event .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	height: clamp(14rem, 30vw, 24rem);
	object-fit: cover;
	border-radius: var(--evmg-radius-card, 0.5rem);
}
