/**
 * Gestor de Actividades Pro — estilos públicos.
 *
 * Todas las reglas están dentro de .gap (sin estilos globales). Personalizable con variables CSS:
 * --gap-primary, --gap-accent, --gap-radius, --gap-card-ratio, --gap-columns, etc.
 */

/* ==========================================================================
   Variables y base
   ========================================================================== */

.gap {
	--gap-primary: #2457d6;
	--gap-primary-contrast: #fff;
	--gap-accent: #0f766e;
	--gap-accent-text: #0a5049;
	--gap-accent-contrast: #fff;
	--gap-primary-text: #2457d6;
	--gap-primary-soft: #e9eefb;
	--gap-accent-soft: #e7f1f0;
	--gap-radius: 12px;
	--gap-radius-sm: calc(var(--gap-radius) / 2);
	--gap-card-ratio: 16/10;
	--gap-columns: 3;
	--gap-gutter: 1.25rem;
	--gap-text: #1f2937;
	--gap-text-muted: #4b5563;
	--gap-border: #d1d5db;
	--gap-border-strong: #6b7280;
	--gap-surface: #fff;
	--gap-surface-alt: #f3f4f6;
	--gap-focus: var(--gap-primary);
	--gap-shadow: 0 1px 2px rgba(17, 24, 39, 0.06), 0 4px 14px rgba(17, 24, 39, 0.06);
	--gap-error: #b91c1c;
	--gap-error-bg: #fef2f2;
	--gap-success: #166534;
	--gap-success-bg: #f0fdf4;
	--gap-info: #1e40af;
	--gap-info-bg: #eff6ff;
	--gap-transition: 0.15s ease;

	color: var(--gap-text);
	box-sizing: border-box;
	max-width: 100%;
	overflow-wrap: break-word;
}

.gap *,
.gap *::before,
.gap *::after {
	box-sizing: inherit;
}

.gap [hidden] {
	display: none !important;
}

.gap img {
	max-width: 100%;
	height: auto;
}

.gap a:focus-visible,
.gap button:focus-visible,
.gap input:focus-visible,
.gap select:focus-visible,
.gap textarea:focus-visible,
.gap summary:focus-visible,
.gap [tabindex]:focus-visible {
	outline: 2px solid var(--gap-focus);
	outline-offset: 2px;
}

/* Utilidades de accesibilidad */
.gap .gap-sr,
.gap.gap-sr {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* Trampa antispam: fuera de pantalla (no display:none, para que los bots la rellenen). */
.gap .gap-hp {
	position: absolute !important;
	left: -10000px !important;
	top: auto !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}

/* ==========================================================================
   Botones
   ========================================================================== */

.gap .gap-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.4em;
	min-height: 44px;
	padding: 0.6em 1.15em;
	border: 2px solid var(--gap-primary);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
	color: var(--gap-primary-text, var(--gap-primary));
	font: inherit;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--gap-transition), color var(--gap-transition), border-color var(--gap-transition), box-shadow var(--gap-transition);
	-webkit-appearance: none;
	appearance: none;
}

.gap .gap-btn:hover {
	background: var(--gap-primary);
	color: var(--gap-primary-contrast);
	text-decoration: none;
}

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

.gap .gap-btn--primary {
	background: var(--gap-primary);
	color: var(--gap-primary-contrast);
}

.gap .gap-btn--primary:hover {
	background: color-mix(in srgb, var(--gap-primary) 82%, #000);
	border-color: color-mix(in srgb, var(--gap-primary) 82%, #000);
	color: var(--gap-primary-contrast);
}

.gap .gap-btn--small {
	min-height: 36px;
	padding: 0.4em 0.85em;
	font-size: 0.9em;
}

.gap .gap-btn--block {
	display: flex;
	width: 100%;
}

.gap .gap-btn--ghost {
	border-color: var(--gap-border);
	background: transparent;
	color: var(--gap-text);
}

.gap .gap-btn--ghost:hover {
	border-color: var(--gap-primary);
	background: var(--gap-surface-alt);
	color: var(--gap-primary-text, var(--gap-primary));
}

.gap .gap-btn--ghost[aria-pressed="true"] {
	border-color: var(--gap-primary);
	background: var(--gap-primary);
	color: var(--gap-primary-contrast);
}

.gap .gap-btn--link {
	min-height: 0;
	padding: 0.15em 0.25em;
	border: 0;
	background: transparent;
	color: var(--gap-primary-text, var(--gap-primary));
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 2px;
}

.gap .gap-btn--link:hover {
	background: transparent;
	color: var(--gap-text);
}

.gap .gap-btn--icon {
	width: 44px;
	min-width: 44px;
	padding: 0;
	border-color: var(--gap-border);
	background: var(--gap-surface);
	color: var(--gap-text);
	font-size: 1.5em;
	line-height: 1;
}

.gap .gap-btn--icon:hover {
	border-color: var(--gap-primary);
	background: var(--gap-surface-alt);
	color: var(--gap-primary-text, var(--gap-primary));
}

.gap .gap-btn:disabled,
.gap .gap-btn[aria-disabled="true"],
.gap .gap-btn.is-disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

.gap .gap-btn:disabled:hover,
.gap .gap-btn[aria-disabled="true"]:hover {
	background: var(--gap-surface);
	color: var(--gap-text);
	border-color: var(--gap-border);
}

.gap .gap-btn[aria-busy="true"] {
	cursor: progress;
}

.gap .gap-btn[aria-busy="true"]::after {
	content: "";
	width: 1em;
	height: 1em;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: gap-spin 0.8s linear infinite;
}

@keyframes gap-spin {
	to {
		transform: rotate(360deg);
	}
}

.gap .gap-link {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: underline;
	text-underline-offset: 2px;
}

.gap .gap-link:hover {
	color: var(--gap-text);
}

/* ==========================================================================
   Chips y badges
   ========================================================================== */

.gap .gap-chip {
	--gap-chip: var(--gap-accent);
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	max-width: 100%;
	padding: 0.2em 0.7em;
	border: 1px solid var(--gap-chip);
	border: 1px solid color-mix(in srgb, var(--gap-chip) 45%, transparent);
	border-radius: 999px;
	background: #f8fafc;
	background: color-mix(in srgb, var(--gap-chip) 12%, #fff);
	color: #1f2937;
	color: color-mix(in srgb, var(--gap-chip) 35%, #111827);
	font-size: 0.8em;
	font-weight: 600;
	line-height: 1.5;
	text-decoration: none;
}

.gap .gap-chip::before {
	content: "";
	width: 0.55em;
	height: 0.55em;
	flex: none;
	border-radius: 50%;
	background: var(--gap-chip);
}

.gap a.gap-chip:hover {
	background: color-mix(in srgb, var(--gap-chip) 22%, #fff);
}

.gap .gap-chip.is-active,
.gap .gap-chip[aria-current="true"] {
	border-color: #1f2937;
	border-color: color-mix(in srgb, var(--gap-chip) 35%, #111827);
	background: #1f2937;
	background: color-mix(in srgb, var(--gap-chip) 35%, #111827);
	color: #fff;
}

.gap .gap-chip.is-active::before,
.gap .gap-chip[aria-current="true"]::before {
	background: #fff;
}

.gap .gap-badge {
	--gap-badge-bg: #f1f5f9;
	--gap-badge-fg: #334155;
	--gap-badge-bd: #cbd5e1;
	display: inline-flex;
	align-items: center;
	gap: 0.35em;
	max-width: 100%;
	padding: 0.2em 0.65em;
	border: 1px solid var(--gap-badge-bd);
	border-radius: 999px;
	background: var(--gap-badge-bg);
	color: var(--gap-badge-fg);
	font-size: 0.8em;
	font-weight: 600;
	line-height: 1.4;
	white-space: normal;
}

/* Icono de texto: además del color, cada estado tiene un símbolo distinto. */
.gap .gap-badge::before {
	content: "\2022";
	font-weight: 700;
}

.gap .gap-badge--available,
.gap .gap-badge--open {
	--gap-badge-bg: #dcfce7;
	--gap-badge-fg: #14532d;
	--gap-badge-bd: #86efac;
}

.gap .gap-badge--available::before,
.gap .gap-badge--open::before {
	content: "\2713";
}

.gap .gap-badge--last_seats {
	--gap-badge-bg: #fef3c7;
	--gap-badge-fg: #78350f;
	--gap-badge-bd: #fcd34d;
}

.gap .gap-badge--last_seats::before {
	content: "!";
}

.gap .gap-badge--full,
.gap .gap-badge--cancelled {
	--gap-badge-bg: #fee2e2;
	--gap-badge-fg: #7f1d1d;
	--gap-badge-bd: #fca5a5;
}

.gap .gap-badge--full::before,
.gap .gap-badge--cancelled::before {
	content: "\2715";
}

.gap .gap-badge--waitlist {
	--gap-badge-bg: #ede9fe;
	--gap-badge-fg: #4c1d95;
	--gap-badge-bd: #c4b5fd;
}

.gap .gap-badge--waitlist::before {
	content: "\2261";
}

.gap .gap-badge--in_progress,
.gap .gap-badge--scheduled,
.gap .gap-badge--not_open {
	--gap-badge-bg: #dbeafe;
	--gap-badge-fg: #1e3a8a;
	--gap-badge-bd: #93c5fd;
}

.gap .gap-badge--in_progress::before {
	content: "\25B6";
	font-size: 0.75em;
}

.gap .gap-badge--scheduled::before,
.gap .gap-badge--not_open::before {
	content: "\25F7";
}

.gap .gap-badge--finished,
.gap .gap-badge--closed,
.gap .gap-badge--no_dates {
	--gap-badge-bg: #f1f5f9;
	--gap-badge-fg: #334155;
	--gap-badge-bd: #cbd5e1;
}

.gap .gap-badge--finished::before,
.gap .gap-badge--closed::before,
.gap .gap-badge--no_dates::before {
	content: "\2013";
}

.gap .gap-badge--cancelled {
	text-decoration: line-through;
	text-decoration-thickness: 1px;
}

/* ==========================================================================
   Avisos y estado vacío
   ========================================================================== */

.gap .gap-notice,
.gap.gap-notice {
	margin: 0 0 1rem;
	padding: 0.85rem 1rem 0.85rem 1rem;
	border: 1px solid var(--gap-border);
	border-left-width: 4px;
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface-alt);
	color: var(--gap-text);
}

.gap .gap-notice > :first-child,
.gap.gap-notice > :first-child {
	margin-top: 0;
}

.gap .gap-notice > :last-child,
.gap.gap-notice > :last-child {
	margin-bottom: 0;
}

.gap .gap-notice ul {
	margin: 0.4em 0 0;
	padding-left: 1.2em;
}

.gap .gap-notice--error,
.gap.gap-notice--error {
	border-color: #fca5a5;
	border-left-color: var(--gap-error);
	background: var(--gap-error-bg);
	color: #7f1d1d;
}

.gap .gap-notice--error::before,
.gap.gap-notice--error::before {
	content: "\26A0\FE0E  ";
	font-weight: 700;
	float: left;
	margin-right: 0.4em;
}

.gap .gap-notice--info,
.gap.gap-notice--info {
	border-color: #93c5fd;
	border-left-color: var(--gap-info);
	background: var(--gap-info-bg);
	color: #1e3a8a;
}

.gap .gap-notice--success,
.gap.gap-notice--success {
	border-color: #86efac;
	border-left-color: var(--gap-success);
	background: var(--gap-success-bg);
	color: #14532d;
}

.gap .gap-notice--success::before,
.gap.gap-notice--success::before {
	content: "\2713  ";
	font-weight: 700;
	float: left;
	margin-right: 0.4em;
}

.gap .gap-empty,
.gap.gap-empty {
	padding: 2rem 1rem;
	border: 1px dashed var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface-alt);
	color: var(--gap-text-muted);
	text-align: center;
}

.gap.gap-empty p {
	margin: 0;
}

/* ==========================================================================
   Metadatos (fecha, lugar, precio) con iconos CSS
   ========================================================================== */

.gap .gap-meta {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	margin: 0;
	padding: 0;
	list-style: none;
	color: var(--gap-text-muted);
	font-size: 0.92em;
}

.gap .gap-meta__item {
	position: relative;
	margin: 0;
	padding-left: 1.5em;
	line-height: 1.4;
}

.gap .gap-meta__item::before {
	content: "";
	position: absolute;
	left: 0.1em;
	top: 0.2em;
	width: 0.95em;
	height: 0.95em;
	color: var(--gap-accent);
}

/* Calendario: rectángulo con barra superior */
.gap .gap-meta__item--date::before {
	border: 2px solid currentColor;
	border-top-width: 4px;
	border-radius: 2px;
}

/* Lugar: gota (círculo con una esquina) */
.gap .gap-meta__item--location::before {
	border: 2px solid currentColor;
	border-radius: 50% 50% 50% 0;
	transform: rotate(-45deg) scale(0.9);
}

/* Precio: etiqueta con símbolo */
.gap .gap-meta__item--price::before {
	content: "\20AC";
	top: 0;
	width: auto;
	height: auto;
	font-weight: 700;
	line-height: 1.4;
}

/* ==========================================================================
   Listado de actividades (cuadrícula / lista)
   ========================================================================== */

.gap.gap-activities {
	margin: 0 0 2rem;
}

.gap .gap-activities__items {
	--gap-col-min: max(min(100%, 260px), calc((100% - (var(--gap-columns) - 1) * var(--gap-gutter)) / var(--gap-columns)));
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(var(--gap-col-min), 1fr));
	gap: var(--gap-gutter);
	margin: 0;
	padding: 0;
	list-style: none;
}

.gap .gap-activities__item {
	display: flex;
	min-width: 0;
	margin: 0;
	padding: 0;
}

.gap.gap-activities--list .gap-activities__items {
	grid-template-columns: minmax(0, 1fr);
	gap: 0.85rem;
}

/* Tarjeta */
.gap .gap-card {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	min-width: 0;
	overflow: hidden;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
	box-shadow: var(--gap-shadow);
	transition: box-shadow var(--gap-transition), transform var(--gap-transition);
}

.gap .gap-card:hover {
	box-shadow: 0 2px 4px rgba(17, 24, 39, 0.08), 0 10px 24px rgba(17, 24, 39, 0.1);
}

.gap .gap-card:focus-within {
	box-shadow: 0 0 0 2px var(--gap-focus);
}

.gap .gap-card__media {
	position: relative;
	display: block;
	aspect-ratio: var(--gap-card-ratio);
	overflow: hidden;
	background: var(--gap-surface-alt);
}

.gap .gap-card__img,
.gap .gap-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.3s ease;
}

.gap .gap-card:hover .gap-card__img {
	transform: scale(1.03);
}

.gap .gap-card__placeholder {
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
	/* Sin imagen: el color de la categoría (o el principal) con una trama suave. */
	background:
		repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.14) 0 14px, transparent 14px 28px),
		linear-gradient(135deg, var(--gap-card-tint, var(--gap-primary)), color-mix(in srgb, var(--gap-card-tint, var(--gap-primary)) 55%, #fff));
}

.gap .gap-card__placeholder::after {
	content: attr(data-initial);
	position: absolute;
	right: 1rem;
	bottom: 0.25rem;
	color: rgba(255, 255, 255, 0.85);
	font-size: 4.5rem;
	font-weight: 800;
	line-height: 1;
}

/* Toda la tarjeta es clicable (el enlace del título se extiende); botón y chips quedan por encima. */
.gap .gap-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.gap .gap-card__footer,
.gap .gap-card .gap-chip {
	position: relative;
	z-index: 2;
}

.gap .gap-card {
	transition: box-shadow var(--gap-transition), transform var(--gap-transition);
}

.gap .gap-card:hover {
	transform: translateY(-2px);
}

.gap .gap-card__date {
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 3.2rem;
	padding: 0.35rem 0.5rem;
	border-radius: var(--gap-radius-sm);
	background: #fff;
	color: #111827;
	box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
	line-height: 1;
	text-align: center;
}

.gap .gap-card__day {
	font-size: 1.35rem;
	font-weight: 800;
}

.gap .gap-card__month {
	margin-top: 0.15rem;
	color: var(--gap-primary-text, var(--gap-primary));
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

.gap .gap-card__body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.6rem;
	padding: 1rem 1.1rem 1.1rem;
}

.gap .gap-card__title {
	display: -webkit-box;
	margin: 0;
	overflow: hidden;
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.3;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
}

.gap .gap-card__title a {
	color: inherit;
	text-decoration: none;
}

.gap .gap-card__title a:hover {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: underline;
}

.gap .gap-card__excerpt {
	margin: 0;
	color: var(--gap-text-muted);
	font-size: 0.95em;
	line-height: 1.5;
}

.gap .gap-card__footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	width: 100%;
	margin-top: auto;
	padding-top: 0.5rem;
}

/* Fila de lista */
.gap .gap-row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	grid-template-areas: "date body" "date aside";
	gap: 0.75rem 1rem;
	width: 100%;
	padding: 1rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
}

.gap .gap-row__date {
	grid-area: date;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 3.6rem;
	min-height: 3.6rem;
	border-radius: var(--gap-radius-sm);
	background: color-mix(in srgb, var(--gap-primary) 10%, #fff);
	color: #111827;
	line-height: 1;
	text-align: center;
	align-self: start;
}

.gap .gap-row__day {
	font-size: 1.4rem;
	font-weight: 800;
}

.gap .gap-row__month {
	margin-top: 0.15rem;
	color: var(--gap-primary-text, var(--gap-primary));
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
}

.gap .gap-row__media {
	display: none;
}

.gap .gap-row__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--gap-radius-sm);
}

.gap .gap-row__body {
	grid-area: body;
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	min-width: 0;
}

.gap .gap-row__title {
	margin: 0;
	font-size: 1.1rem;
	line-height: 1.3;
}

.gap .gap-row__title a {
	color: inherit;
	text-decoration: none;
}

.gap .gap-row__title a:hover {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: underline;
}

.gap .gap-row__excerpt {
	margin: 0;
	color: var(--gap-text-muted);
	font-size: 0.95em;
}

.gap .gap-row__aside {
	grid-area: aside;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

@media (min-width: 640px) {
	.gap .gap-row {
		grid-template-columns: auto auto minmax(0, 1fr) auto;
		grid-template-areas: "date media body aside";
		align-items: center;
	}

	.gap .gap-row__media {
		grid-area: media;
		display: block;
		width: 96px;
		height: 72px;
	}

	.gap .gap-row__aside {
		flex-direction: column;
		align-items: flex-end;
	}
}

/* Paginación */
.gap .gap-pagination {
	margin-top: 1.5rem;
}

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

.gap .gap-pagination ul.page-numbers li {
	margin: 0;
	padding: 0;
	border: 0;
}

.gap .gap-pagination .page-numbers:not(ul) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 0.8em;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
	color: var(--gap-text);
	text-decoration: none;
}

.gap .gap-pagination a.page-numbers:hover {
	border-color: var(--gap-primary);
	color: var(--gap-primary-text, var(--gap-primary));
}

.gap .gap-pagination .page-numbers.current {
	border-color: var(--gap-primary);
	background: var(--gap-primary);
	color: var(--gap-primary-contrast);
	font-weight: 700;
}

.gap .gap-pagination .page-numbers.dots {
	border-color: transparent;
	background: transparent;
}

/* ==========================================================================
   Carrusel
   ========================================================================== */

.gap.gap-carousel {
	position: relative;
	margin: 0 0 2rem;
}

.gap .gap-carousel__controls {
	display: flex;
	justify-content: flex-end;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}

.gap .gap-carousel__track {
	--gap-slide: calc((100% - (var(--gap-columns) - 1) * var(--gap-gutter)) / var(--gap-columns));
	display: flex;
	gap: var(--gap-gutter);
	margin: 0;
	padding: 4px 4px 1rem;
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scroll-padding-inline: 4px;
	list-style: none;
	scrollbar-width: thin;
	scrollbar-color: var(--gap-border-strong) transparent;
	-webkit-overflow-scrolling: touch;
}

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

.gap .gap-carousel__slide {
	display: flex;
	flex: 0 0 max(min(85%, 260px), var(--gap-slide));
	min-width: 0;
	margin: 0;
	padding: 0;
	scroll-snap-align: start;
}

.gap.gap-carousel:not(.is-scrollable) .gap-carousel__controls {
	visibility: hidden;
}

/* ==========================================================================
   Ficha única
   ========================================================================== */

.gap.gap-single {
	margin: 0 0 2rem;
}

/* Respaldo tras una plantilla de Theme Builder: el plugin pinta su propio contenedor centrado. */
.gap.gap-single--after-template {
	box-sizing: border-box;
	width: 100%;
	max-width: 1140px;
	margin: 2rem auto 3rem;
	padding: 0 16px;
}

.gap .gap-single__title {
	margin: 0 0 1rem;
	font-size: clamp(1.75rem, 1.2rem + 2vw, 2.5rem);
	line-height: 1.15;
}

.gap .gap-single__image {
	margin: 0 0 1.5rem;
}

.gap .gap-single__image img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 460px;
	object-fit: cover;
	border-radius: var(--gap-radius);
}

.gap .gap-single__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 2rem;
}

.gap .gap-single__main {
	min-width: 0;
}

.gap .gap-single__content {
	margin-top: 1.5rem;
}

@media (min-width: 960px) {
	.gap .gap-single__layout {
		grid-template-columns: minmax(0, 1fr) 320px;
		align-items: start;
	}

	.gap .gap-single__aside {
		position: sticky;
		top: calc(1.5rem + var(--wp-admin--admin-bar--height, 0px));
	}
}

/* Ficha de información */
.gap.gap-details {
	margin: 0 0 1.5rem;
}

.gap .gap-details__title {
	margin: 0 0 0.75rem;
	font-size: 1.25rem;
}

.gap .gap-details__list {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
	gap: 0;
	margin: 0;
	padding: 0;
	overflow: hidden;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
}

/* Móvil: dos columnas (una sola columna resultaba muy larga). */
@media (max-width: 599.98px) {
	.gap .gap-details__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gap .gap-details__row {
		padding: 0.65rem 0.75rem;
	}
}

.gap .gap-details__row {
	margin: 0;
	padding: 0.8rem 1rem;
	border-bottom: 1px solid var(--gap-surface-alt);
	box-shadow: inset -1px 0 0 var(--gap-surface-alt);
}

.gap .gap-details__row dt {
	margin: 0 0 0.15rem;
	color: var(--gap-text-muted);
	font-size: 0.8em;
	font-weight: 600;
	letter-spacing: 0.03em;
	text-transform: uppercase;
}

.gap .gap-details__row dd {
	margin: 0;
	font-weight: 500;
}

/* Panel de inscripción */
.gap.gap-panel {
	display: flex;
	flex-direction: column;
	gap: 1rem;
	padding: 1.25rem;
	border: 1px solid var(--gap-border);
	border-top: 4px solid var(--gap-primary);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
	box-shadow: var(--gap-shadow);
}

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

.gap .gap-panel__label {
	color: var(--gap-text-muted);
	font-size: 0.8em;
	font-weight: 600;
	letter-spacing: 0.03em;
	text-transform: uppercase;
}

.gap .gap-panel__value {
	font-size: 1.1rem;
	font-weight: 700;
}

.gap .gap-panel__price {
	/* Acento oscurecido como color de texto: mantiene el tono y asegura contraste AA con acentos claros. */
	color: var(--gap-accent-text, #0b5a53);
	font-size: 1.4rem;
}

.gap .gap-panel__sub {
	color: var(--gap-text-muted);
}

.gap .gap-panel__ics {
	display: inline-block;
	margin-top: .35rem;
	font-size: .875em;
}

.gap .gap-panel__closed {
	margin: 0;
	padding: 0.75rem;
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface-alt);
	color: var(--gap-text-muted);
	font-weight: 600;
	text-align: center;
}

/* Fechas y horarios */
.gap.gap-sessions {
	margin: 2rem 0;
}

.gap .gap-sessions__title {
	margin: 0 0 1rem;
	font-size: 1.35rem;
}

.gap .gap-sessions__list {
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gap .gap-session {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 1rem;
	margin: 0;
	padding: 0.9rem 1rem;
	border: 1px solid var(--gap-border);
	border-left: 4px solid var(--gap-accent);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
}

.gap .gap-session.gap-state--full,
.gap .gap-session.gap-state--closed,
.gap .gap-session.gap-state--finished,
.gap .gap-session.gap-state--cancelled {
	border-left-color: var(--gap-border-strong);
	background: var(--gap-surface-alt);
}

.gap .gap-session.gap-state--waitlist {
	border-left-color: #6d28d9;
}

.gap .gap-session.gap-state--last_seats {
	border-left-color: #b45309;
}

.gap .gap-session__when {
	display: flex;
	flex-direction: column;
	gap: 0.1rem;
	min-width: 0;
}

.gap .gap-session__date {
	font-weight: 700;
}

.gap .gap-session__time,
.gap .gap-session__where,
.gap .gap-session__label {
	color: var(--gap-text-muted);
	font-size: 0.92em;
}

.gap .gap-session__aside {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6rem 0.9rem;
}

/* Disponibilidad */
.gap.gap-availability {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
}

.gap .gap-meter {
	position: relative;
	flex: 1 1 140px;
	min-width: 100px;
	height: 0.6rem;
	overflow: hidden;
	border: 1px solid var(--gap-border-strong);
	border-radius: 999px;
	background: var(--gap-surface-alt);
}

.gap .gap-meter__bar {
	display: block;
	height: 100%;
	border-radius: inherit;
	background: var(--gap-accent);
	transition: width 0.4s ease;
}

.gap.gap-state--last_seats .gap-meter__bar {
	background: #b45309;
}

.gap.gap-state--full .gap-meter__bar,
.gap.gap-state--waitlist .gap-meter__bar {
	background: #b91c1c;
}

.gap .gap-availability__count {
	color: var(--gap-text-muted);
	font-size: 0.9em;
}

/* Cuenta atrás */
.gap.gap-countdown {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6rem 1rem;
	padding: 1rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
}

.gap .gap-countdown__label {
	font-weight: 700;
}

.gap .gap-countdown__units {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.gap .gap-countdown__unit {
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 3.4rem;
	padding: 0.45rem 0.4rem;
	border-radius: var(--gap-radius-sm);
	background: color-mix(in srgb, var(--gap-primary) 10%, #fff);
	line-height: 1.1;
}

.gap .gap-countdown__unit strong {
	color: #111827;
	font-size: 1.45rem;
	font-variant-numeric: tabular-nums;
}

.gap .gap-countdown__unit small {
	color: var(--gap-text-muted);
	font-size: 0.72rem;
	text-transform: uppercase;
}

.gap.gap-countdown.is-finished .gap-countdown__unit {
	background: var(--gap-surface-alt);
}

/* Estado de la actividad */
.gap.gap-status {
	display: inline-flex;
}

/* ==========================================================================
   Buscador, filtros y próximas sesiones
   ========================================================================== */

.gap.gap-search {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 0.75rem 1rem;
	margin: 0 0 1.5rem;
	padding: 1rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface-alt);
}

.gap .gap-search__field {
	display: flex;
	flex: 1 1 160px;
	flex-direction: column;
	gap: 0.3rem;
	min-width: 0;
}

.gap .gap-search__field--text {
	flex: 2 1 240px;
}

.gap .gap-search__field .gap-label {
	margin: 0;
}

.gap .gap-search__actions {
	display: flex;
	flex: 0 0 auto;
}

@media (max-width: 639.98px) {
	.gap .gap-search__actions,
	.gap .gap-search__actions .gap-btn {
		flex: 1 1 100%;
		width: 100%;
	}
}

.gap.gap-filters {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin: 0 0 1.5rem;
}

.gap .gap-filters__group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
}

.gap .gap-filters__label {
	font-weight: 700;
}

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

.gap .gap-filters__list li {
	margin: 0;
	padding: 0;
}

.gap .gap-filters__list .gap-chip {
	min-height: 36px;
	padding: 0.3em 0.9em;
	font-size: 0.88em;
}

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

.gap .gap-upcoming__item {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	margin: 0;
	padding: 0.7rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
}

.gap .gap-upcoming__date {
	display: flex;
	flex: none;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 3.2rem;
	height: 3.2rem;
	border-radius: var(--gap-radius-sm);
	background: color-mix(in srgb, var(--gap-primary) 10%, #fff);
	color: #111827;
	line-height: 1;
}

.gap .gap-upcoming__day {
	font-size: 1.2rem;
	font-weight: 800;
}

.gap .gap-upcoming__month {
	color: var(--gap-primary-text, var(--gap-primary));
	font-size: 0.7rem;
	font-weight: 700;
	text-transform: uppercase;
}

.gap .gap-upcoming__media {
	flex: none;
	width: 56px;
	height: 56px;
}

.gap .gap-upcoming__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--gap-radius-sm);
}

.gap .gap-upcoming__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.2rem;
	min-width: 0;
}

.gap .gap-upcoming__title {
	color: var(--gap-text);
	font-weight: 700;
	text-decoration: none;
}

.gap .gap-upcoming__title:hover {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: underline;
}

.gap .gap-upcoming__meta {
	color: var(--gap-text-muted);
	font-size: 0.9em;
}

/* ==========================================================================
   Formulario
   ========================================================================== */

.gap.gap-form-wrap {
	margin: 2rem 0;
	padding: clamp(1rem, 4vw, 2rem);
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
	scroll-margin-top: calc(1rem + var(--wp-admin--admin-bar--height, 0px));
}

.gap .gap-form__title {
	margin: 0 0 1rem;
	font-size: 1.5rem;
}

.gap .gap-form__intro {
	margin-bottom: 1.25rem;
	color: var(--gap-text-muted);
}

.gap .gap-form {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
	margin: 0;
}

.gap .gap-form[aria-busy="true"] .gap-form__fields {
	opacity: 0.7;
}

.gap .gap-form__fields {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem 1.25rem;
	transition: opacity var(--gap-transition);
}

.gap .gap-form__fields > * {
	flex: 1 1 100%;
	min-width: 0;
}

.gap .gap-field {
	display: flex;
	flex: 1 1 100%;
	flex-direction: column;
	gap: 0.35rem;
	min-width: 0;
	margin: 0;
}

@media (min-width: 640px) {
	.gap .gap-form__fields > .gap-field--half,
	.gap .gap-participant__fields > .gap-field--half {
		flex: 1 1 calc(50% - 0.625rem);
		max-width: calc(50% - 0.625rem);
	}
}

.gap .gap-fieldset {
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.gap .gap-fieldset > legend {
	float: left;
	width: 100%;
	margin: 0 0 0.5rem;
	padding: 0;
}

.gap .gap-fieldset > legend + * {
	clear: both;
}

.gap .gap-label {
	display: block;
	margin: 0;
	color: var(--gap-text);
	font-size: 0.95em;
	font-weight: 600;
	line-height: 1.35;
}

.gap .gap-req {
	color: var(--gap-error);
	font-weight: 700;
}

.gap .gap-input {
	display: block;
	width: 100%;
	max-width: 100%;
	min-height: 44px;
	margin: 0;
	padding: 0.6em 0.8em;
	border: 1px solid var(--gap-border-strong);
	border-radius: var(--gap-radius-sm);
	background-color: var(--gap-surface);
	color: var(--gap-text);
	font: inherit;
	font-size: max(16px, 1em); /* Evita el zoom automático de iOS. */
	line-height: 1.4;
	box-shadow: none;
	transition: border-color var(--gap-transition), box-shadow var(--gap-transition);
}

.gap select.gap-input:not([multiple]) {
	padding-right: 2.2em;
	background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
	background-position: calc(100% - 1.15em) 55%, calc(100% - 0.8em) 55%;
	background-size: 0.35em 0.35em;
	background-repeat: no-repeat;
	-webkit-appearance: none;
	appearance: none;
}

.gap textarea.gap-input {
	min-height: 6.5em;
	resize: vertical;
}

.gap input[type="file"].gap-input {
	padding: 0.45em;
}

.gap .gap-input::placeholder {
	color: #6b7280;
	opacity: 1;
}

.gap .gap-input:hover {
	border-color: var(--gap-text);
}

.gap .gap-input:focus,
.gap .gap-input:focus-visible {
	border-color: var(--gap-primary);
	outline: 2px solid var(--gap-focus);
	outline-offset: 1px;
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--gap-primary) 18%, transparent);
}

.gap .gap-input:disabled {
	background-color: var(--gap-surface-alt);
	cursor: not-allowed;
}

.gap .gap-input[aria-invalid="true"],
.gap [aria-invalid="true"] .gap-input {
	border-color: var(--gap-error);
	border-width: 2px;
	background-color: var(--gap-error-bg);
}

.gap .gap-input--qty {
	width: 6.5rem;
	flex: none;
	text-align: center;
}

.gap .gap-help {
	margin: 0;
	color: var(--gap-text-muted);
	font-size: 0.88em;
	line-height: 1.45;
}

.gap .gap-error {
	display: flex;
	align-items: flex-start;
	gap: 0.35em;
	margin: 0;
	color: var(--gap-error);
	font-size: 0.9em;
	font-weight: 600;
	line-height: 1.4;
}

.gap .gap-error::before {
	content: "\26A0\FE0E";
	flex: none;
}

/* Opciones (radio / casilla) */
.gap .gap-choice {
	display: flex;
	align-items: flex-start;
	gap: 0.6em;
	margin: 0 0 0.35rem;
	padding: 0.35rem 0;
	font-weight: 400;
	line-height: 1.45;
	cursor: pointer;
}

.gap .gap-choice input {
	flex: none;
	width: 1.25em;
	height: 1.25em;
	margin: 0.1em 0 0;
	accent-color: var(--gap-primary);
	cursor: pointer;
}

.gap .gap-choice input:focus-visible {
	outline: 2px solid var(--gap-focus);
	outline-offset: 2px;
}

.gap .gap-choice input[aria-invalid="true"] {
	outline: 2px solid var(--gap-error);
	outline-offset: 1px;
}

/* Opciones de radio y casillas múltiples: rejilla de opciones pulsables. */
.gap .gap-choices {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr));
	gap: 0.5rem;
}

.gap .gap-choices .gap-choice {
	align-items: center;
	margin: 0;
	padding: 0.6rem 0.75rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
	transition: border-color var(--gap-transition), background-color var(--gap-transition);
}

.gap .gap-choices .gap-choice:hover {
	border-color: var(--gap-border-strong);
}

.gap .gap-choices .gap-choice:has(input:checked) {
	border-color: var(--gap-primary);
	background: var(--gap-primary-soft, var(--gap-surface-alt));
	box-shadow: inset 0 0 0 1px var(--gap-primary);
}

.gap .gap-choices .gap-choice input {
	margin: 0;
}

@media (max-width: 599.98px) {
	.gap .gap-form [type="submit"] {
		width: 100%;
	}
}

.gap .gap-choice a {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: underline;
}

.gap .gap-form__heading {
	flex: 1 1 100%;
	margin: 0.5rem 0 0;
	padding-bottom: 0.35rem;
	border-bottom: 1px solid var(--gap-border);
	font-size: 1.15rem;
}

.gap .gap-form__text {
	color: var(--gap-text-muted);
}

.gap .gap-form__text > :first-child {
	margin-top: 0;
}

.gap .gap-form__text > :last-child {
	margin-bottom: 0;
}

.gap .gap-form__sep {
	flex: 1 1 100%;
	height: 0;
	margin: 0.25rem 0;
	border: 0;
	border-top: 1px solid var(--gap-border);
}

/* Selector de sesiones */
.gap .gap-session-picker {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
	gap: 0.6rem;
}

.gap .gap-session-option {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: 0.65rem;
	margin: 0;
	padding: 0.85rem 0.9rem;
	border: 2px solid var(--gap-border);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
	cursor: pointer;
	transition: border-color var(--gap-transition), background-color var(--gap-transition), box-shadow var(--gap-transition);
}

.gap .gap-session-option:hover {
	border-color: var(--gap-primary);
}

.gap .gap-session-option input {
	flex: none;
	width: 1.2em;
	height: 1.2em;
	margin: 0.15em 0 0;
	accent-color: var(--gap-primary);
}

.gap .gap-session-option input:focus-visible {
	outline: 2px solid var(--gap-focus);
	outline-offset: 2px;
}

.gap .gap-session-option.is-checked,
.gap .gap-session-option:has(input:checked) {
	border-color: var(--gap-primary);
	background: color-mix(in srgb, var(--gap-primary) 7%, #fff);
	box-shadow: 0 0 0 1px var(--gap-primary);
}

.gap .gap-session-option:has(input:focus-visible) {
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--gap-primary) 35%, transparent);
}

.gap .gap-session-option__body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 0.25rem;
	min-width: 0;
}

.gap .gap-session-option__date {
	font-weight: 700;
}

.gap .gap-session-option__time {
	color: var(--gap-text-muted);
	font-size: 0.92em;
}

.gap .gap-form__sessions [aria-invalid="true"] {
	outline: 2px solid var(--gap-error);
	outline-offset: 2px;
}

.gap .gap-form__session-summary {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem 0.6rem;
	margin: 0;
	padding: 0.85rem 1rem;
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface-alt);
}

/* Participantes */
.gap .gap-participants {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.gap .gap-participants__list {
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gap .gap-participant {
	margin: 0;
	padding: 1rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface-alt);
}

.gap .gap-participant__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	margin-bottom: 0.75rem;
}

.gap .gap-participant__title {
	font-weight: 700;
}

.gap .gap-participant__fields {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem 1.25rem;
}

.gap .gap-participant__fields .gap-input {
	background-color: var(--gap-surface);
}

.gap .gap-participants > .gap-btn {
	align-self: flex-start;
}

/* Extras y cantidades */
.gap .gap-extra {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem 1rem;
	padding: 0.6rem 0;
	border-bottom: 1px solid var(--gap-surface-alt);
}

.gap .gap-extra:last-child {
	border-bottom: 0;
}

.gap .gap-extra label {
	display: flex;
	flex: 1 1 200px;
	flex-direction: column;
	gap: 0.1rem;
	min-width: 0;
	font-weight: 600;
}

.gap .gap-extra__price {
	color: var(--gap-text-muted);
	font-size: 0.9em;
	font-weight: 400;
}

/* Total */
.gap .gap-total {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.25rem 1rem;
	padding: 1rem 1.1rem;
	border: 1px solid color-mix(in srgb, var(--gap-accent) 40%, #fff);
	border-radius: var(--gap-radius-sm);
	background: color-mix(in srgb, var(--gap-accent) 8%, #fff);
}

.gap .gap-total > span {
	font-weight: 600;
}

.gap .gap-total strong {
	color: #111827;
	font-size: 1.5rem;
	font-variant-numeric: tabular-nums;
}

.gap .gap-total small {
	flex: 1 1 100%;
	color: var(--gap-text-muted);
	font-size: 0.85em;
}

.gap .gap-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
}

.gap .gap-form__actions .gap-btn {
	min-width: min(100%, 240px);
}

@media (max-width: 639.98px) {
	.gap .gap-form__actions .gap-btn {
		width: 100%;
	}
}

.gap .gap-form__status:empty {
	display: none;
}

.gap .gap-form__status {
	margin: 0;
}

.gap .gap-form__status:focus {
	outline: none;
}

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

/* ==========================================================================
   Calendario
   ========================================================================== */

.gap.gap-calendar {
	--gap-dot-available: #15803d;
	--gap-dot-last_seats: #b45309;
	--gap-dot-waitlist: #6d28d9;
	--gap-dot-full: #b91c1c;
	--gap-dot-other: #64748b;
	margin: 0 0 2rem;
}

.gap .gap-calendar__toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin-bottom: 1rem;
}

.gap .gap-calendar__nav {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	min-width: 0;
}

.gap .gap-calendar__title {
	margin: 0 0 0 0.5rem;
	font-size: 1.3rem;
	line-height: 1.2;
}

.gap .gap-calendar__views {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 0.3rem;
}

.gap .gap-calendar__filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin-bottom: 1rem;
}

.gap .gap-calendar__filters .gap-input {
	flex: 1 1 200px;
	width: auto;
}

.gap .gap-calendar__body {
	position: relative;
	min-height: 6rem;
}

.gap .gap-calendar__body[aria-busy="true"] .gap-calendar__content {
	opacity: 0.6;
	transition: opacity var(--gap-transition);
}

.gap .gap-calendar__msg:empty {
	display: none;
}

.gap .gap-calendar__msg {
	margin-bottom: 0.75rem;
	color: var(--gap-text-muted);
}

/* Mes */
.gap .gap-cal-grid {
	width: 100%;
	margin: 0;
	border: 1px solid var(--gap-border);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: var(--gap-radius);
	overflow: hidden;
	background: var(--gap-surface);
	table-layout: fixed;
}

.gap .gap-cal-grid th,
.gap .gap-cal-grid td {
	border: 0;
	border-right: 1px solid var(--gap-surface-alt);
	border-bottom: 1px solid var(--gap-surface-alt);
}

.gap .gap-cal-grid tr > :last-child {
	border-right: 0;
}

.gap .gap-cal-grid tbody tr:last-child td {
	border-bottom: 0;
}

.gap .gap-cal-grid__wd {
	padding: 0.55rem 0.25rem;
	background: var(--gap-surface-alt);
	color: var(--gap-text-muted);
	font-size: 0.78rem;
	font-weight: 700;
	text-align: center;
	text-transform: uppercase;
}

.gap .gap-cal-grid__wd abbr {
	border: 0;
	text-decoration: none;
	cursor: default;
}

.gap .gap-cal-day {
	position: relative;
	height: 6.5rem;
	padding: 0.35rem;
	overflow: hidden;
	vertical-align: top;
	cursor: pointer;
	transition: background-color var(--gap-transition);
}

.gap .gap-cal-day:hover {
	background: color-mix(in srgb, var(--gap-primary) 5%, #fff);
}

.gap .gap-cal-day:focus {
	outline: none;
}

.gap .gap-cal-day:focus-visible {
	outline: 2px solid var(--gap-focus);
	outline-offset: -3px;
	z-index: 1;
}

.gap .gap-cal-day.is-outside {
	background: #fafafa;
}

.gap .gap-cal-day.is-outside .gap-cal-day__num {
	color: #6b7280;
}

.gap .gap-cal-day__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 1.9rem;
	height: 1.9rem;
	border-radius: 50%;
	font-size: 0.9rem;
	font-weight: 600;
}

.gap .gap-cal-day.is-today .gap-cal-day__num {
	background: var(--gap-primary);
	color: var(--gap-primary-contrast);
}

.gap .gap-cal-day.is-today::after {
	content: "";
	position: absolute;
	inset: 0;
	border-top: 3px solid var(--gap-primary);
	pointer-events: none;
}

.gap .gap-cal-day.is-selected,
.gap .gap-cal-day[aria-selected="true"] {
	background: color-mix(in srgb, var(--gap-primary) 12%, #fff);
	box-shadow: inset 0 0 0 2px var(--gap-primary);
}

.gap .gap-cal-day__events {
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	margin-top: 0.2rem;
	min-width: 0;
}

.gap .gap-cal-ev {
	display: flex;
	align-items: center;
	gap: 0.3rem;
	min-width: 0;
	font-size: 0.74rem;
	line-height: 1.25;
}

.gap .gap-cal-ev__label {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.gap .gap-cal-ev--more {
	color: var(--gap-text-muted);
	font-weight: 700;
}

/* Puntos de estado: color + forma (no sólo color). */
.gap .gap-dot {
	display: inline-block;
	flex: none;
	width: 0.6rem;
	height: 0.6rem;
	border: 2px solid var(--gap-dot-other, #64748b);
	border-radius: 50%;
	background: var(--gap-dot-other, #64748b);
	vertical-align: middle;
}

.gap .gap-dot--available {
	border-color: var(--gap-dot-available, #15803d);
	background: var(--gap-dot-available, #15803d);
}

/* Últimas plazas: rombo */
.gap .gap-dot--last_seats {
	border-color: var(--gap-dot-last_seats, #b45309);
	border-radius: 1px;
	background: var(--gap-dot-last_seats, #b45309);
	transform: rotate(45deg) scale(0.9);
}

/* Lista de espera: anillo */
.gap .gap-dot--waitlist {
	border-color: var(--gap-dot-waitlist, #6d28d9);
	background: transparent;
}

/* Completa / cerrada: cuadrado */
.gap .gap-dot--full,
.gap .gap-dot--closed,
.gap .gap-dot--cancelled,
.gap .gap-dot--finished,
.gap .gap-dot--not_open,
.gap .gap-dot--in_progress {
	border-radius: 1px;
}

.gap .gap-dot--full {
	border-color: var(--gap-dot-full, #b91c1c);
	background: var(--gap-dot-full, #b91c1c);
}

.gap .gap-calendar__legend {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 1.25rem;
	margin: 1rem 0 0;
	padding: 0;
	color: var(--gap-text-muted);
	font-size: 0.88em;
	list-style: none;
}

.gap .gap-calendar__legend li {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	margin: 0;
}

/* Detalle del día */
.gap .gap-calendar__detail:empty {
	display: none;
}

.gap .gap-calendar__detail {
	margin-top: 1rem;
	padding: 1rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
}

.gap .gap-calendar__detail-title {
	margin: 0 0 0.75rem;
	font-size: 1.1rem;
}

.gap .gap-calendar__none {
	margin: 0;
	color: var(--gap-text-muted);
}

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

.gap .gap-cal-item {
	--gap-ev-color: var(--gap-accent);
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem 0.85rem;
	margin: 0;
	padding: 0.65rem 0.8rem;
	border: 1px solid var(--gap-border);
	border-left: 4px solid var(--gap-ev-color);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
}

.gap .gap-cal-item__time {
	flex: none;
	min-width: 3.5rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}

.gap .gap-cal-item__body {
	display: flex;
	flex: 1 1 180px;
	flex-direction: column;
	gap: 0.1rem;
	min-width: 0;
}

.gap .gap-cal-item__title {
	color: var(--gap-text);
	font-weight: 700;
	text-decoration: none;
}

.gap a.gap-cal-item__title:hover {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: underline;
}

.gap .gap-cal-item__sub,
.gap .gap-cal-item__meta {
	color: var(--gap-text-muted);
	font-size: 0.88em;
}

/* Semana */
.gap .gap-cal-week {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
	gap: 0.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.gap .gap-cal-week__day {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 0;
	margin: 0;
	padding: 0.5rem;
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius-sm);
	background: var(--gap-surface);
}

.gap .gap-cal-week__day.is-today {
	border-color: var(--gap-primary);
	box-shadow: inset 0 3px 0 var(--gap-primary);
}

.gap .gap-cal-week__head {
	display: flex;
	align-items: baseline;
	gap: 0.35rem;
	margin: 0;
	font-size: 0.95rem;
}

.gap .gap-cal-week__wd {
	color: var(--gap-text-muted);
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
}

.gap .gap-cal-week__num {
	font-size: 1.15rem;
	font-weight: 800;
}

.gap .gap-cal-week__none {
	margin: 0;
	color: var(--gap-text-muted);
	font-size: 0.82em;
}

.gap .gap-cal-items--compact .gap-cal-item {
	flex-direction: column;
	align-items: flex-start;
	padding: 0.45rem 0.5rem;
	font-size: 0.85em;
}

.gap .gap-cal-items--compact .gap-cal-item__body {
	flex: 0 1 auto;
	width: 100%;
}

.gap .gap-cal-items--compact .gap-badge {
	font-size: 0.75em;
	white-space: normal;
}

@media (max-width: 959.98px) {
	.gap .gap-cal-week {
		grid-template-columns: minmax(0, 1fr);
	}

	.gap .gap-cal-week__day {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: flex-start;
	}

	.gap .gap-cal-week__head {
		flex-direction: column;
		align-items: center;
		width: 3rem;
		flex: none;
	}

	.gap .gap-cal-week__day > :not(.gap-cal-week__head) {
		flex: 1 1 200px;
		min-width: 0;
	}

	.gap .gap-cal-items--compact .gap-cal-item {
		flex-direction: row;
		align-items: center;
	}
}

/* Lista */
.gap .gap-cal-list {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
}

.gap .gap-cal-list__head {
	margin: 0 0 0.5rem;
	padding-bottom: 0.3rem;
	border-bottom: 2px solid var(--gap-surface-alt);
	font-size: 1rem;
}

.gap .gap-cal-list__day.is-today .gap-cal-list__head {
	border-bottom-color: var(--gap-primary);
	color: var(--gap-primary-text, var(--gap-primary));
}

/* Calendario en móvil: sólo puntos en el mes y el detalle debajo. */
@media (max-width: 639.98px) {
	.gap .gap-calendar__toolbar {
		flex-direction: column;
		align-items: stretch;
	}

	.gap .gap-calendar__nav {
		justify-content: space-between;
	}

	.gap .gap-calendar__title {
		order: -1;
		flex: 1 1 100%;
		margin: 0 0 0.25rem;
		font-size: 1.15rem;
	}

	.gap .gap-calendar__views {
		display: flex;
	}

	.gap .gap-calendar__views .gap-btn {
		flex: 1 1 0;
	}

	.gap .gap-cal-grid__wd {
		padding: 0.4rem 0;
		font-size: 0.68rem;
	}

	.gap .gap-cal-day {
		height: 3.3rem;
		padding: 0.15rem;
		text-align: center;
	}

	.gap .gap-cal-day__num {
		width: 1.7rem;
		height: 1.7rem;
		font-size: 0.82rem;
	}

	.gap .gap-cal-day__events {
		flex-direction: row;
		flex-wrap: wrap;
		justify-content: center;
		gap: 0.15rem;
		margin-top: 0.1rem;
	}

	.gap .gap-cal-ev__label {
		display: none;
	}

	.gap .gap-cal-ev--more {
		font-size: 0.62rem;
	}

	.gap .gap-dot {
		width: 0.5rem;
		height: 0.5rem;
	}
}

/* ==========================================================================
   Página de gestión de la inscripción
   ========================================================================== */

.gap.gap-manage,
.gap .gap-manage {
	max-width: 760px;
	margin: 2rem auto;
	padding: clamp(1rem, 4vw, 2rem);
	border: 1px solid var(--gap-border);
	border-radius: var(--gap-radius);
	background: var(--gap-surface);
}

.gap .gap-manage h2,
.gap.gap-manage h2 {
	margin-top: 0;
}

.gap .gap-manage dl,
.gap.gap-manage dl {
	display: grid;
	grid-template-columns: minmax(0, max-content) minmax(0, 1fr);
	gap: 0.4rem 1rem;
	margin: 1rem 0;
}

.gap .gap-manage dt,
.gap.gap-manage dt {
	color: var(--gap-text-muted);
	font-weight: 600;
}

.gap .gap-manage dd,
.gap.gap-manage dd {
	margin: 0;
}

@media (max-width: 479.98px) {
	.gap .gap-manage dl,
	.gap.gap-manage dl {
		grid-template-columns: minmax(0, 1fr);
	}

	.gap .gap-manage dd,
	.gap.gap-manage dd {
		margin-bottom: 0.5rem;
	}
}

.gap .gap-ticket {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem 1.5rem;
	margin: 1.5rem 0;
	padding: 1.25rem;
	border: 2px dashed var(--gap-border-strong);
	border-radius: var(--gap-radius);
	background: var(--gap-surface-alt);
}

.gap .gap-ticket svg,
.gap .gap-ticket img {
	display: block;
	flex: none;
	width: min(200px, 100%);
	height: auto;
	padding: 0.5rem;
	border-radius: var(--gap-radius-sm);
	background: #fff;
}

.gap .gap-ticket__ref,
.gap .gap-ticket strong {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 1.3rem;
	letter-spacing: 0.06em;
}

/* ==========================================================================
   Archivo
   ========================================================================== */

.gap.gap-archive {
	padding-left: 16px;
	padding-right: 16px;
	max-width: 1200px;
	margin-left: auto;
	margin-right: auto;
}

.gap .gap-archive__header {
	margin: 1.5rem 0;
}

.gap .gap-archive__title {
	margin: 0 0 0.5rem;
}

.gap .gap-archive__description {
	color: var(--gap-text-muted);
}

/* ==========================================================================
   Plantillas y páginas creadas por el plugin (Herramientas > Páginas y plantillas)
   Estilos neutros: heredan la tipografía y los colores del tema.
   ========================================================================== */

.gap-tpl-eyebrow,
.gap-tpl-eyebrow p {
	margin: 0;
	color: var(--gap-accent-text, currentColor);
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}

.gap-tpl-intro,
.gap-tpl-intro p {
	max-width: 46rem;
	font-size: 1.125rem;
	line-height: 1.6;
	opacity: 0.85;
}

.gap-tpl-cover img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 21 / 9;
	object-fit: cover;
	border-radius: var(--gap-radius, 12px);
}

.gap-tpl-band {
	background: rgba(0, 0, 0, 0.035);
}

.gap-tpl-grid > .gap-tpl-card {
	flex: 1 1 260px;
}

.gap-tpl-card {
	padding: 24px !important;
	border: 1px solid rgba(0, 0, 0, 0.1);
	border-radius: var(--gap-radius, 12px);
	background: #fff;
}

@media (max-width: 767px) {
	.gap-tpl-cover img {
		aspect-ratio: 16 / 9;
	}
}

/* ==========================================================================
   Recuperar mi inscripción
   ========================================================================== */

.gap.gap-lookup {
	max-width: 520px;
	scroll-margin-top: 120px;
}

.gap .gap-lookup__form {
	margin: 0;
}

.gap .gap-lookup__form .gap-field {
	margin: 0 0 1rem;
}

/* ==========================================================================
   Compatibilidad con temas
   Muchos temas colorean todos los enlaces de su contenido (p. ej. ".seccion a:not(.boton)").
   Estos selectores (0,3,0) ganan a esas reglas y empatan con los de los widgets de Elementor,
   que se cargan después: la personalización desde Elementor sigue mandando.
   ========================================================================== */

.gap .gap-btn:not(.elementor-button) {
	color: var(--gap-primary-text, var(--gap-primary));
	text-decoration: none;
}

.gap .gap-btn:not(.elementor-button):hover,
.gap .gap-btn--primary:not(.elementor-button),
.gap .gap-btn--ghost[aria-pressed="true"]:not(.elementor-button) {
	color: var(--gap-primary-contrast);
}

.gap .gap-btn--ghost:not(.elementor-button) {
	color: var(--gap-text);
}

.gap .gap-btn--ghost:not(.elementor-button):hover {
	color: var(--gap-primary-text, var(--gap-primary));
}

/* ==========================================================================
   Movimiento reducido
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
	.gap,
	.gap *,
	.gap *::before,
	.gap *::after {
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
	}

	.gap .gap-card:hover .gap-card__img {
		transform: none;
	}

	.gap .gap-btn[aria-busy="true"]::after {
		animation: none;
		border-right-color: currentColor;
		border-style: dotted;
	}
}

/* Alto contraste forzado (Windows) */
@media (forced-colors: active) {
	.gap .gap-badge,
	.gap .gap-chip,
	.gap .gap-dot,
	.gap .gap-cal-day.is-selected {
		border: 1px solid CanvasText;
	}

	.gap .gap-cal-day.is-selected,
	.gap .gap-cal-day[aria-selected="true"] {
		outline: 2px solid Highlight;
		outline-offset: -2px;
	}
}
