/* ==========================================================================
   Tema Un Plan — hoja de estilos única, sin frameworks ni build.
   Los colores salen de las variables que inyecta functions.php.
   ========================================================================== */

:root {
	--up-primary: #111827;
	--up-accent: #ef4444;
	--up-accent-soft: rgba(239, 68, 68, .12);
	--up-bg: #f7f7f7;
	--up-text: #111827;
	--up-muted: #4b5563;
	--up-line: #e5e7eb;
	--up-card: #ffffff;
	--up-radius: 1rem;
	--up-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);
	--up-shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1);
	--up-max: 80rem;
}

*, *::before, *::after { box-sizing: border-box; }

body {
	margin: 0;
	background: var(--up-bg);
	color: var(--up-text);
	font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-size: 16px;
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
	min-height: 100dvh;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
button { font: inherit; }

.screen-reader-text,
.up-skip {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}
.up-skip:focus {
	position: fixed;
	top: 10px;
	left: 10px;
	width: auto;
	height: auto;
	clip: auto;
	padding: 10px 16px;
	background: #fff;
	border-radius: 8px;
	z-index: 999;
}

.up-i { width: 1rem; height: 1rem; flex: none; }
.up-i--lg { width: 1.5rem; height: 1.5rem; }
.up-i--xl { width: 2.2rem; height: 2.2rem; }
.up-accent { color: var(--up-accent); }

.up-site { padding-bottom: 4.5rem; }

.up-wrap {
	max-width: var(--up-max);
	margin: 0 auto;
	padding: 1.5rem 1rem 5rem;
}
.up-wrap--medium { max-width: 72rem; }
.up-wrap--narrow { max-width: 48rem; }

.up-rule { border: 0; border-top: 1px solid var(--up-line); margin: 1.25rem 0; }

/* ------------------------------------------------------------------ Header */

.up-header { background: var(--up-primary); }

.up-header__inner {
	max-width: var(--up-max);
	margin: 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: .375rem .75rem;
}

.up-header__logo img { width: 8rem; height: auto; }
.up-header__title { color: #fff; font-weight: 700; font-size: 1.1rem; }

.up-header__nav {
	display: none;
	list-style: none;
	margin: 0;
	padding: 0;
	gap: 2rem;
	flex: 1;
	justify-content: center;
}
.up-header__nav a,
.up-header__contact {
	color: #fff;
	font-size: .875rem;
	font-weight: 600;
	padding: .375rem .75rem;
	border-radius: .375rem;
	white-space: nowrap;
}
.up-header__nav a.is-current,
.up-header__contact.is-current { color: var(--up-accent); }

.up-header__contact { display: none; }

.up-header__burger {
	background: none;
	border: 0;
	color: #fff;
	padding: .625rem;
	cursor: pointer;
	display: inline-flex;
}

/* ------------------------------------------------------------------ Drawer */

.up-drawer { position: fixed; inset: 0; z-index: 60; }
.up-drawer[hidden] { display: none; }
.up-drawer::before {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, .35);
}
.up-drawer__panel {
	position: absolute;
	inset: 0 0 0 auto;
	width: 100%;
	max-width: 24rem;
	background: var(--up-primary);
	padding: 1.5rem;
	overflow-y: auto;
	animation: up-slide .18s ease-out;
}
@keyframes up-slide { from { transform: translateX(12%); opacity: .6; } to { transform: none; opacity: 1; } }

.up-drawer__top { display: flex; align-items: center; justify-content: space-between; }
.up-drawer__close { background: none; border: 0; color: #fff; padding: .625rem; cursor: pointer; }

.up-drawer__nav {
	list-style: none;
	margin: 1.5rem 0;
	padding: 1.5rem 0;
	border-top: 1px solid rgba(255, 255, 255, .1);
	border-bottom: 1px solid rgba(255, 255, 255, .1);
	display: flex;
	flex-direction: column;
	gap: .5rem;
}
.up-drawer__nav a {
	display: block;
	color: #fff;
	font-weight: 600;
	font-size: 1rem;
	padding: .5rem .75rem;
	border-radius: .5rem;
}
.up-drawer__nav a.is-current { color: var(--up-accent); }

.up-drawer__contact {
	display: block;
	color: #fff;
	font-weight: 600;
	padding: .625rem .75rem;
	border-radius: .5rem;
}

/* ------------------------------------------------------------------- Pills */

.up-pills { display: block; margin: 0 -1rem .75rem; }
.up-pills ul {
	list-style: none;
	margin: 0;
	padding: .25rem 1rem;
	display: flex;
	gap: .25rem;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	-ms-overflow-style: none;
	scrollbar-width: none;
}
.up-pills ul::-webkit-scrollbar { display: none; }
.up-pills li { scroll-snap-align: start; flex: none; }
.up-pills a {
	display: flex;
	flex-direction: column;
	align-items: center;
	width: 4.5rem;
	font-size: .75rem;
	font-weight: 600;
	color: var(--up-muted);
	text-align: center;
}
.up-pills__icon {
	width: 3rem;
	height: 3rem;
	border-radius: 999px;
	background: #fff;
	box-shadow: var(--up-shadow-sm);
	overflow: hidden;
	display: block;
}
.up-pills__icon img { width: 100%; height: 100%; object-fit: cover; }
.up-pills__label { margin-top: .25rem; }

.up-sidebanner { display: none; }

/* ----------------------------------------------------------------- Filtros */

.up-filters { max-width: 42rem; margin: 0 auto; }

.up-filters__search { position: relative; margin-bottom: .75rem; }
.up-filters__search .up-i {
	position: absolute;
	left: .75rem;
	top: 50%;
	transform: translateY(-50%);
	color: var(--up-muted);
}
.up-filters__search input {
	width: 100%;
	border: 0;
	background: rgba(0, 0, 0, .05);
	border-radius: .5rem;
	padding: .5rem .75rem .5rem 2.25rem;
	font-size: 1rem;
	color: #374151;
}
.up-filters__search input:focus { outline: 2px solid var(--up-accent); outline-offset: 0; }

.up-filters__tabs {
	display: flex;
	gap: .5rem;
	overflow-x: auto;
	padding: .5rem .25rem;
	margin: 0 -.25rem;
	-ms-overflow-style: none;
	scrollbar-width: none;
}
.up-filters__tabs::-webkit-scrollbar { display: none; }

.up-pill {
	flex: none;
	background: transparent;
	border: 0;
	border-radius: 999px;
	padding: .25rem .75rem;
	font-size: .75rem;
	font-weight: 600;
	color: #374151;
	box-shadow: var(--up-shadow-sm);
	cursor: pointer;
	white-space: nowrap;
	transition: background .15s;
}
.up-pill:hover { background: rgba(0, 0, 0, .05); }
.up-pill.is-active { background: rgba(0, 0, 0, .1); }

.up-pill--date { position: relative; display: inline-flex; align-items: center; gap: .375rem; }
.up-pill--date input[type="date"] {
	position: absolute;
	inset: 0;
	opacity: 0;
	width: 100%;
	height: 100%;
	cursor: pointer;
}

/* --------------------------------------------------------------- Contenido */

.up-block { margin-bottom: 1.5rem; }
.up-block__title { font-size: 1.5rem; font-weight: 700; margin: 1.25rem 0 1.5rem; }
.up-block__subtitle { font-size: 1.25rem; font-weight: 600; margin: 1.5rem 0 0; }

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

.up-noresults {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .75rem;
	color: #6b7280;
	font-size: 1.125rem;
	margin: 4rem 0;
}

.up-empty {
	background: var(--up-card);
	border: 1px dashed var(--up-line);
	border-radius: var(--up-radius);
	padding: 3rem 1.25rem;
	text-align: center;
	color: #6b7280;
}

/* ------------------------------------------------------- Tarjeta de evento */

.up-card { display: flex; flex-direction: column; align-items: flex-start; }
.up-card[hidden] { display: none; }

.up-card__media { position: relative; width: 100%; }
.up-card__media img,
.up-card__placeholder {
	width: 100%;
	aspect-ratio: 9 / 10;
	object-fit: cover;
	border-radius: var(--up-radius);
	background: #f3f4f6;
	box-shadow: var(--up-shadow);
}

.up-card__star {
	position: absolute;
	top: .75rem;
	right: .75rem;
	background: #facc15;
	color: #fff;
	border: 2px solid #fff;
	border-radius: 999px;
	padding: .25rem;
	display: inline-flex;
	box-shadow: var(--up-shadow);
}
.up-card__star svg { fill: currentColor; }

.up-card__title {
	font-size: 1rem;
	font-weight: 600;
	margin: .75rem 0 0;
	width: 100%;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.up-card__cats {
	display: flex;
	gap: .25rem;
	margin-top: .5rem;
	overflow-x: auto;
	width: 100%;
	-ms-overflow-style: none;
	scrollbar-width: none;
}
.up-card__cats::-webkit-scrollbar { display: none; }

.up-tag {
	flex: none;
	background: #e5e7eb;
	color: #374151;
	border-radius: 999px;
	padding: .25rem .5rem;
	font-size: .625rem;
	font-weight: 500;
	white-space: nowrap;
}

.up-card__meta {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin: .5rem 0 0;
	font-size: .75rem;
	color: var(--up-muted);
	width: 100%;
	min-width: 0;
}
.up-card__meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.up-card__meta--row { min-height: 1.5rem; }
.up-card__ig { color: #f472b6; display: inline-flex; margin-left: .25rem; }
.up-card__web { color: #2563eb; display: inline-flex; margin-left: .25rem; }

/* --------------------------------------------------------------- Botones */

.up-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .5rem;
	border: 0;
	border-radius: .375rem;
	background: #e5e7eb;
	color: #111827;
	font-weight: 600;
	font-size: .875rem;
	padding: .5rem 1rem;
	cursor: pointer;
	box-shadow: var(--up-shadow-sm);
	transition: filter .2s;
}
.up-btn:hover { filter: brightness(.92); }
.up-btn--primary { background: var(--up-accent); color: #fff; }
.up-btn--block { width: 100%; margin-top: 1rem; }
.up-btn--sm { flex: 1; padding: .5rem .25rem; font-size: .8125rem; border-radius: .5rem; box-shadow: none; }

/* ---------------------------------------------------------------- Banners */

.up-banners {
	display: grid;
	grid-template-columns: 1fr;
	gap: .75rem;
}
.up-banner img { width: 100%; border-radius: .75rem; object-fit: cover; }
.up-banner a:hover img { opacity: .9; }
.up-banner--desktop { display: none; }

.up-onlymobile { margin-top: 1.5rem; }

/* ------------------------------------------------------------ Encabezados */

.up-pagehead {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	margin-bottom: 2rem;
}
.up-pagehead__back {
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	padding: .5rem;
	border-radius: 999px;
	color: #374151;
}
.up-pagehead__back:hover { background: rgba(0, 0, 0, .05); }

.up-pagetitle {
	font-size: 1.875rem;
	font-weight: 700;
	text-align: center;
	margin: 0;
}

.up-backlink {
	display: inline-flex;
	align-items: center;
	gap: .5rem;
	color: var(--up-muted);
	font-size: .875rem;
	margin-bottom: 1rem;
}

/* --------------------------------------------------------------- Lugares */

.up-places {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	justify-content: center;
	margin-top: 1.25rem;
}

.up-place {
	background: #fff;
	border-radius: .5rem;
	box-shadow: var(--up-shadow-sm);
	overflow: hidden;
	width: 20rem;
	max-width: 100%;
	display: flex;
	flex-direction: column;
}
.up-place__media { height: 15rem; background: #e5e7eb; flex: none; position: relative; }
.up-place__media img { width: 100%; height: 100%; object-fit: cover; }
.up-place__noimg {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #9ca3af;
	font-size: .875rem;
}

.up-place__body { padding: 1rem; display: flex; flex-direction: column; flex: 1; }
.up-place__head { display: flex; justify-content: space-between; gap: .75rem; margin-bottom: 1rem; }
.up-place__head h3 { font-size: 1.125rem; font-weight: 600; margin: 0; }
.up-place__social { display: flex; gap: .75rem; }

.up-round {
	width: 2rem;
	height: 2rem;
	border-radius: 999px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
}
.up-round--blue { background: #dbeafe; color: #2563eb; }
.up-round--pink { background: #fce7f3; color: #db2777; }

.up-place__desc {
	color: #4b5563;
	font-size: .875rem;
	margin: 0;
	min-height: 2.5rem;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.up-place__foot { margin-top: auto; }
.up-place__contact { display: flex; justify-content: center; margin: 1rem 0; }
.up-place__contact.is-double { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.up-place__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .25rem;
	padding: .5rem;
	border-radius: .375rem;
	color: #374151;
	font-size: .75rem;
	text-align: center;
}
a.up-place__item:hover { background: #f3f4f6; }
.up-place__actions { display: flex; gap: .5rem; }

/* ------------------------------------------------------------- Info útil */

.up-info { display: grid; grid-template-columns: 1fr; gap: 2rem; }

.up-panelcard {
	background: #fff;
	border-radius: .5rem;
	box-shadow: var(--up-shadow-sm);
	padding: 1.5rem;
}
.up-panelcard h2 {
	font-size: 1.5rem;
	font-weight: 600;
	color: #374151;
	margin: 0 0 1rem;
}

.up-prose { color: #4b5563; }
.up-prose p { margin: 0 0 .75rem; }
.up-prose ul, .up-prose ol { padding-left: 1.25rem; margin: 0 0 .75rem; }
.up-prose a { color: var(--up-accent); text-decoration: underline; }

/* -------------------------------------------------------------- Contacto */

.up-contact__intro { text-align: center; display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.up-contact__claim { font-size: 1.125rem; font-weight: 600; color: #1f2937; margin: 0; }
.up-contact__text { color: #4b5563; font-size: .95rem; margin: 0; max-width: 32rem; }
.up-contact__text a { color: var(--up-accent); }

.up-contact__form { margin-top: 1rem; }
.up-field { display: block; margin-bottom: 1rem; }
.up-field > span { display: block; font-size: .8125rem; font-weight: 600; margin-bottom: .375rem; }
.up-field input,
.up-field textarea {
	width: 100%;
	border: 1px solid var(--up-line);
	border-radius: .5rem;
	padding: .625rem .75rem;
	font: inherit;
	background: #fff;
}
.up-field input:focus,
.up-field textarea:focus { outline: 2px solid var(--up-accent); outline-offset: -1px; }
.up-field__row { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }

/* --------------------------------------------------------- Single evento */

.up-single { background: #fff; border-radius: var(--up-radius); overflow: hidden; box-shadow: var(--up-shadow-sm); }
.up-single__img { width: 100%; max-height: 32rem; object-fit: cover; }
.up-single__body { padding: 1.5rem; }
.up-single__body .up-pagetitle { text-align: left; margin-bottom: 1rem; }

/* ------------------------------------------------------------------ Extra */

.up-totop {
	position: fixed;
	right: 1.5rem;
	bottom: 5rem;
	z-index: 40;
	background: #f9fafb;
	border: 0;
	border-radius: 999px;
	padding: .5rem;
	box-shadow: var(--up-shadow);
	color: var(--up-accent);
	cursor: pointer;
}
.up-totop[hidden] { display: none; }

.up-footer {
	position: fixed;
	bottom: 0;
	left: 0;
	right: 0;
	background: var(--up-primary);
	color: #fff;
	text-align: center;
	padding: .75rem 1rem;
	box-shadow: 0 -1px 3px rgba(0, 0, 0, .1);
	z-index: 30;
	font-size: .75rem;
}
.up-footer__inner { display: flex; align-items: center; justify-content: center; gap: .5rem; flex-wrap: wrap; }
.up-footer__sep { opacity: .5; }
.up-footer a:hover { text-decoration: underline; }

/* ------------------------------------------------------------- Responsive */

@media (min-width: 640px) {
	.up-banners { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.up-card__title { font-size: 1.125rem; }
	.up-card__meta { font-size: .875rem; }
	.up-pill { padding: .5rem 1.5rem; font-size: .875rem; }
	.up-filters__tabs { flex-wrap: wrap; justify-content: center; gap: 1rem; overflow: visible; }
	.up-info { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 768px) {
	.up-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.up-places { justify-content: flex-start; }
	.up-place { width: 18rem; }
}

@media (min-width: 1024px) {
	.up-wrap { padding-left: 2rem; padding-right: 2rem; }
	.up-header__inner { padding: .375rem 2rem; }
	.up-header__nav { display: flex; }
	.up-header__contact { display: inline-flex; }
	.up-header__burger { display: none; }
	.up-pills { display: none; }
	.up-sidebanner { display: block; margin: 0 auto 1rem; width: 300px; border-radius: .75rem; }
	.up-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.up-grid--featured { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.up-banners { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.up-banner--desktop { display: block; }
	.up-block__title { font-size: 1.875rem; }
	.up-onlymobile { display: none; }
	.up-pagehead__back { display: none; }
}

@media (max-width: 1023px) {
	.up-grid--featured { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
	* { animation: none !important; transition: none !important; }
}
