/* =========================================================================
 * DISEÑO GLOBAL DEL TEMA — placeholder (slot de UX/UI).
 *
 * Asset GLOBAL del tema: vive en la RAÍZ del tema (`assets/`), no bajo
 * `elementor-widgets/`, porque estila TODO el sitio (header/footer + todos los
 * widgets). Lo REEMPLAZARÁ el CSS único que entregue el equipo de UX/UI. Se encola
 * site-wide desde functions.php (junto a style.css), no por widget.
 *
 * Lo FUNCIONAL de los widgets (ocultar estados con [hidden]) vive en
 * `elementor-widgets/assets/tv-widgets.css`, que NO se reemplaza. Ver
 * `elementor-widgets/CONVENTIONS.md` (modelo de dos vías).
 * ========================================================================= */

.tv-widget {
	margin: 0 0 1rem;
}

/* --- Widgets de API: cabecera (título + bajada) arriba, botón al FINAL --- */
.tv-widget__header { margin: 0 0 1rem; }
.tv-widget__title { font-size: 1.4rem; margin: 0 0 .35rem; color: var(--tv-theme-color, #6eb92b); }
.tv-widget__bajada { margin: 0 0 .6rem; color: #666; }
.tv-widget__footer { margin: 1rem 0 0; }
.tv-widget__button {
	display: inline-block;
	padding: .5rem 1rem;
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
	border-radius: 6px;
	text-decoration: none;
}

.tv-status {
	margin: 0 0 .5rem;
	color: #666;
	font-size: .9rem;
}

.tv-status[data-state="error"] {
	color: #b00020;
}

/* --- Widget Sectores (diseño de ejemplo, se reemplaza con el de UX/UI) --- */

.tv-sectores__title {
	color: var(--tv-theme-color, #6eb92b);
	margin: 0 0 .5rem;
	font-size: 1.1rem;
}

.tv-sectores__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
}

.tv-sectores__item {
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
	border-radius: 999px;
	padding: .25rem .75rem;
	font-size: .9rem;
	line-height: 1.4;
	animation: tv-fade-in .25s ease both;
}

@keyframes tv-fade-in {
	from { opacity: 0; transform: translateY(4px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* --- Noticias (archivo + últimas + single). Diseño de ejemplo; UX/UI lo reemplaza. --- */

.tv-noticias__title {
	font-size: 1.4rem;
	margin: 0 0 1rem;
}

.tv-noticias__filter {
	display: flex;
	flex-wrap: wrap;
	gap: .5rem;
	margin: 0 0 1rem;
}

.tv-noticias__filter-item {
	text-decoration: none;
	padding: .2rem .7rem;
	border-radius: 999px;
	border: 1px solid var(--tv-theme-color, #6eb92b);
	color: var(--tv-theme-color, #6eb92b);
	font-size: .85rem;
}

.tv-noticias__filter-item.is-active {
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
}

.tv-noticias__list {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 1rem;
}

.tv-noticia {
	border: 1px solid #eee;
	border-radius: 8px;
	overflow: hidden;
	background: #fff;
}

.tv-noticia__link {
	display: block;
	text-decoration: none;
	color: inherit;
}

.tv-noticia__media img {
	width: 100%;
	height: auto;
	display: block;
}

.tv-noticia__body {
	padding: .75rem;
}

.tv-noticia__date {
	display: block;
	color: #888;
	font-size: .8rem;
	margin: 0 0 .25rem;
}

.tv-noticia__title {
	font-size: 1.05rem;
	margin: 0 0 .35rem;
	color: var(--tv-theme-color, #6eb92b);
}

.tv-noticia__excerpt {
	margin: 0;
	color: #555;
	font-size: .9rem;
}

.tv-noticias__more {
	display: inline-block;
	margin: 1rem 0 0;
	padding: .5rem 1rem;
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
	border-radius: 6px;
	text-decoration: none;
}

.tv-noticias__pagination {
	display: flex;
	flex-wrap: wrap;
	gap: .35rem;
	margin: 1.25rem 0 0;
}

.tv-noticias__pagination .page-numbers {
	padding: .25rem .6rem;
	border: 1px solid #ddd;
	border-radius: 6px;
	text-decoration: none;
	color: inherit;
}

.tv-noticias__pagination .page-numbers.current {
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
	border-color: var(--tv-theme-color, #6eb92b);
}

/* Single (entrada) */
.tv-single__title { color: var(--tv-theme-color, #6eb92b); }
.tv-single__meta { color: #888; font-size: .85rem; }
.tv-single__media img { max-width: 100%; height: auto; }

/* --- Comercios (placeholder; UX/UI lo reemplaza) --- */
.tv-comercios__title { font-size: 1.4rem; margin: 0 0 1rem; }

/* Filtro de cabecera (bullets Lucide, filtrado client-side) */
.tv-comercios__filter { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1rem; }
.tv-cat {
	display: inline-flex;
	align-items: center;
	gap: .35rem;
	padding: .3rem .7rem;
	border: 1px solid var(--tv-theme-color, #6eb92b);
	border-radius: 999px;
	background: #fff;
	color: var(--tv-theme-color, #6eb92b);
	font: inherit;
	font-size: .85rem;
	line-height: 1.2;
	cursor: pointer;
}
.tv-cat.is-active { background: var(--tv-theme-color, #6eb92b); color: #fff; }
.tv-cat__ico { width: 1em; height: 1em; display: inline-flex; }
.tv-cat__ico svg { width: 1em; height: 1em; }

.tv-comercios__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 1rem;
}

.tv-comercio {
	border: 1px solid #eee;
	border-radius: 8px;
	padding: .85rem;
	background: #fff;
}

/* Paginación (números + Ant/Sig), armada por JS. AJAX: no recarga la página. */
.tv-comercios__pagination,
.tv-beneficios__pagination {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .35rem;
	margin: 1.25rem 0 0;
}
.tv-page {
	padding: .3rem .5rem;
	background: none;
	border: 0;
	color: inherit;
	font: inherit;
	font-size: .9rem;
	line-height: 1.2;
	cursor: default;
}
.tv-page:hover:not(:disabled):not(.is-active) { color: var(--tv-theme-color, #6eb92b); }
.tv-page.is-active { color: var(--tv-theme-color, #6eb92b); font-weight: 700; }
.tv-page:disabled { opacity: .45; }
.tv-page--gap { padding: .3rem .2rem; }

.tv-comercio__img { width: 100%; height: auto; display: block; margin: 0 0 .5rem; border-radius: 6px; }
.tv-comercio__logo { max-width: 64px; height: auto; margin: 0 0 .5rem; }
.tv-comercio__nombre { font-size: 1.05rem; margin: 0 0 .25rem; color: var(--tv-theme-color, #6eb92b); }
.tv-comercio__meta { margin: 0 0 .35rem; color: #888; font-size: .8rem; }
.tv-comercio__benef { margin: 0 0 .35rem; color: var(--tv-theme-color, #6eb92b); font-size: .82rem; font-weight: 600; }
.tv-comercio__desc { margin: 0 0 .35rem; color: #555; font-size: .9rem; }
.tv-comercio__dir { margin: 0; color: #777; font-size: .82rem; }

/* --- Beneficios (placeholder; UX/UI lo reemplaza) --- */
.tv-beneficios__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1rem;
}
.tv-beneficio { border: 1px solid #eee; border-radius: 8px; padding: .85rem; background: #fff; }
.tv-beneficio__valor {
	display: inline-block;
	margin: 0 0 .4rem;
	padding: .2rem .6rem;
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
	border-radius: 999px;
	font-weight: 700;
	font-size: .9rem;
}
.tv-beneficio__nombre { font-size: 1.05rem; margin: 0 0 .3rem; color: var(--tv-theme-color, #6eb92b); }
.tv-beneficio__desc { margin: 0; color: #555; font-size: .9rem; }
/* Comercio del beneficio: secundario (logo ~50px + nombre), bajo el descuento y el nombre. */
.tv-beneficio__comercio { display: flex; align-items: center; gap: .5rem; margin: .65rem 0 0; padding-top: .55rem; border-top: 1px solid #f0f0f0; }
.tv-beneficio__comercio-logo { width: 50px; height: 50px; object-fit: contain; border-radius: 6px; flex: 0 0 auto; }
.tv-beneficio__comercio-nombre { font-size: .82rem; color: #888; }

/* Cards clickeables (comercio / beneficio) → página de detalle */
.tv-comercio__link,
.tv-beneficio__link { display: block; color: inherit; text-decoration: none; }

/* --- Hero informativo (placeholder; UX/UI lo reemplaza) --- */
.tv-hero { text-align: center; padding: 1.5rem 0; }
.tv-hero__logo { max-height: 72px; width: auto; margin: 0 0 1rem; }
.tv-hero__title { font-size: 1.8rem; margin: 0 0 .5rem; color: var(--tv-theme-color, #6eb92b); }
.tv-hero__text { margin: 0 auto 1rem; max-width: 640px; color: #555; }
.tv-hero__image { max-width: 100%; height: auto; border-radius: 8px; margin: 0 0 1rem; }
.tv-hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: center; }
.tv-hero__btn {
	display: inline-block;
	padding: .6rem 1.2rem;
	border-radius: 6px;
	text-decoration: none;
	border: 1px solid var(--tv-theme-color, #6eb92b);
	color: var(--tv-theme-color, #6eb92b);
}
.tv-hero__btn--primary { background: var(--tv-theme-color, #6eb92b); color: #fff; border-color: var(--tv-theme-color, #6eb92b); }

/* --- Comercio (single/detalle). Placeholder; UX/UI lo reemplaza. --- */

/* Botón «volver a todos los comercios» (URL fija, siempre visible). */
.tv-cs__back {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	margin: 0 0 1rem;
	padding: .45rem .9rem;
	border: 1px solid #ddd;
	border-radius: 8px;
	text-decoration: none;
	color: inherit;
	font-size: .9rem;
}
.tv-cs__back:hover,
.tv-cs__back:focus {
	border-color: var(--tv-theme-color, #6eb92b);
	color: var(--tv-theme-color, #6eb92b);
}
.tv-cs__back-ico { font-size: 1.1em; line-height: 1; }

/* Hero: carrusel de fondo (atenuado) + caja blanca con el contenido encima. */
.tv-cs__hero {
	position: relative;
	overflow: hidden;
	border-radius: 12px;
	min-height: 340px;
	display: flex;
	align-items: flex-end;
	padding: 1.5rem;
}
.tv-cs__carousel { position: absolute; inset: 0; z-index: 0; }
.tv-cs__slide {
	position: absolute; inset: 0;
	background-size: cover;
	background-position: center;
	opacity: 0;
	transition: opacity 1s ease;
}
.tv-cs__slide.is-active { opacity: 1; }
/* Atenúa el carrusel para que destaque la caja/contenido. */
.tv-cs__hero-overlay {
	position: absolute; inset: 0; z-index: 1;
	background: linear-gradient(180deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .55));
}
.tv-cs__card {
	position: relative; z-index: 2;
	background: #fff;
	border-radius: 12px;
	padding: 1.25rem;
	max-width: 540px;
	box-shadow: 0 10px 34px rgba(0, 0, 0, .22);
}
.tv-cs__logo { max-height: 64px; width: auto; margin: 0 0 .75rem; }
.tv-cs__cat {
	display: inline-flex; align-items: center; gap: .35rem;
	margin: 0 0 .5rem; padding: .2rem .7rem;
	border-radius: 999px;
	background: var(--tv-theme-color, #6eb92b); color: #fff;
	font-size: .8rem;
}
.tv-cs__cat-ico { width: 1em; height: 1em; display: inline-flex; }
.tv-cs__cat-ico svg { width: 1em; height: 1em; }
.tv-cs__title { margin: 0 0 .5rem; font-size: 1.6rem; color: #1a1a1a; }
.tv-cs__desc { margin: 0; color: #555; }

/* Location: bullet de sector (contorno, distinto al de categoría) + dirección + rutas. */
.tv-cs__location { margin: 1.5rem 0; }
.tv-cs__sector {
	display: inline-flex; align-items: center; gap: .35rem;
	margin: 0 0 .5rem; padding: .25rem .7rem;
	border: 1px solid var(--tv-theme-color, #6eb92b);
	border-radius: 8px;
	color: var(--tv-theme-color, #6eb92b);
	font-size: .85rem;
}
.tv-cs__sector svg { width: 1em; height: 1em; }
.tv-cs__dir { margin: 0 0 .75rem; color: #555; }
.tv-cs__routes { display: flex; flex-wrap: wrap; gap: .5rem; }
.tv-cs__route {
	display: inline-block; padding: .5rem 1rem;
	border-radius: 8px; text-decoration: none;
	color: #fff; font-size: .9rem;
}
.tv-cs__route--gmaps { background: #1a73e8; }
.tv-cs__route--waze { background: #33ccff; color: #05203c; }

/* Mapa embebido (iframe Google Maps): ancho del contenedor (hasta 1400px), alto modesto. */
.tv-cs__map { margin: 1rem 0 0; }
.tv-cs__map iframe { width: 100%; display: block; border: 0; border-radius: 10px; }

/* Beneficios activos: misma card que el widget de beneficios (.tv-beneficios__list / .tv-beneficio). */
.tv-cs__beneficios { margin: 1.5rem 0 0; }
.tv-cs__beneficios-title { font-size: 1.25rem; margin: 0 0 1rem; color: var(--tv-theme-color, #6eb92b); }

/* --- Beneficio (single). Prioriza el descuento (hero marketing). UX/UI lo reemplaza. --- */

/* Hero marketing: banner con degradado + badge grande del descuento. */
.tv-bs__hero {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 1.25rem;
	padding: 1.75rem 1.5rem;
	border-radius: 16px;
	background: linear-gradient(135deg, var(--tv-theme-color, #6eb92b), #4d8f1f);
	color: #fff;
}
.tv-bs__badge {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 4.5rem;
	padding: 1rem 1.25rem;
	background: #fff;
	color: var(--tv-theme-color, #6eb92b);
	border-radius: 999px;
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
	text-align: center;
	box-shadow: 0 8px 24px rgba(0, 0, 0, .18);
}
.tv-bs__head { flex: 1 1 240px; min-width: 0; }
.tv-bs__title { margin: 0 0 .4rem; font-size: 1.6rem; color: #fff; }
.tv-bs__desc { margin: 0; color: rgba(255, 255, 255, .92); }

/* Comercios adheridos (info heredada, secundaria). */
.tv-bs__comercios { margin: 1.75rem 0 0; }
.tv-bs__comercios-title { font-size: 1.25rem; margin: 0 0 1rem; color: var(--tv-theme-color, #6eb92b); }
.tv-bs__comercios-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 1rem;
}
.tv-bs__comercio { border: 1px solid #eee; border-radius: 10px; background: #fff; overflow: hidden; }
.tv-bs__comercio-link { display: flex; gap: .85rem; padding: .85rem; color: inherit; text-decoration: none; }
.tv-bs__comercio-logo { width: 56px; height: 56px; object-fit: contain; border-radius: 8px; flex: 0 0 auto; }
.tv-bs__comercio-body { min-width: 0; }
.tv-bs__comercio-cat {
	display: inline-flex;
	align-items: center;
	gap: .3rem;
	margin: 0 0 .3rem;
	padding: .15rem .55rem;
	border-radius: 999px;
	background: var(--tv-theme-color, #6eb92b);
	color: #fff;
	font-size: .72rem;
}
.tv-bs__comercio-ico { width: 1em; height: 1em; display: inline-flex; }
.tv-bs__comercio-ico svg { width: 1em; height: 1em; }
.tv-bs__comercio-nombre { margin: 0 0 .25rem; font-size: 1.05rem; color: #1a1a1a; }
.tv-bs__comercio-loc { display: inline-flex; align-items: center; gap: .3rem; margin: 0 0 .2rem; color: #888; font-size: .82rem; }
.tv-bs__comercio-loc svg { width: 1em; height: 1em; }
.tv-bs__comercio-dir { margin: 0; color: #888; font-size: .82rem; }
/* Botón "añadir a favoritos" — compartido por las cards del listado de comercios y el single de
   comercio. Oculto por defecto; el JS lo revela solo si hay un vecino con sesión iniciada. */
.tv-fav-btn {
	display: block; width: 100%;
	padding: .6rem .85rem;
	border: 0; border-top: 1px solid #f0f0f0;
	background: #fafafa;
	color: var(--tv-theme-color, #6eb92b);
	font: inherit; font-weight: 600; font-size: .9rem;
	text-align: center; cursor: pointer;
}
.tv-fav-btn:hover { background: #f2f7ec; }
.tv-fav-btn:disabled { cursor: default; }
.tv-fav-btn.is-fav { color: #3d6b12; background: #eef6e3; }
/* En el single del comercio: pill compacto dentro de la tarjeta blanca (no ocupa todo el ancho). */
.tv-cs__fav {
	width: auto; display: inline-block;
	margin-top: .85rem;
	padding: .45rem 1.1rem;
	border: 1px solid var(--tv-theme-color, #6eb92b); border-radius: 999px;
	background: transparent;
}
.tv-cs__fav:hover { background: rgba(110, 185, 43, .1); }
.tv-cs__fav.is-fav { border-color: #3d6b12; }

/* --- Vecino: Ingresar + Mi Cuenta (provisional; UX/UI reskinea en M7). --- */
.tv-vecino-auth { max-width: 420px; margin: 2rem auto; padding: 0 1.25rem; }
.tv-status--ok { color: #2e7d32; }
.tv-corregir__motivo {
	margin: 0 0 1.25rem;
	padding: .75rem 1rem;
	background: #fff8e1;
	border-left: 3px solid #f0ad4e;
	border-radius: 6px;
	color: #664d03;
	font-size: .9rem;
}
.tv-vecino-links { margin: 1rem 0 0; font-size: .9rem; }
.tv-vecino-links a { color: var(--tv-theme-color, #6eb92b); }

.tv-mi-cuenta { max-width: 560px; margin: 1.5rem auto; padding: 0 1.25rem; }
.tv-mc__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.tv-mc__saludo { margin: 0; font-size: 1.4rem; color: var(--tv-theme-color, #6eb92b); }
.tv-mc__tarjeta { margin: 1.25rem 0; text-align: center; }
.tv-mc__tarjeta-img { max-width: 100%; height: auto; border-radius: 12px; box-shadow: 0 8px 24px rgba(0, 0, 0, .15); }
.tv-mc__nav {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: .75rem;
	margin: 1.5rem 0;
}
.tv-mc__nav-item {
	display: block;
	padding: 1rem;
	text-align: center;
	border: 1px solid #eee;
	border-radius: 10px;
	background: #fff;
	color: #555;
}
.tv-mc__nav-item.is-soon { opacity: .5; cursor: default; }
button.tv-mc__nav-item { width: 100%; font: inherit; cursor: pointer; }
.tv-mc__nav-item.is-active { border-color: var(--tv-theme-color, #6eb92b); color: var(--tv-theme-color, #6eb92b); font-weight: 600; }

/* --- Mi cuenta · paneles Favoritos / Transacciones (iter 3a; provisional, UX/UI reskinea en M7). --- */
.tv-mc__panels { margin: 1rem 0 2rem; }
.tv-mc__panel-title { font-size: 1.15rem; margin: 0 0 .75rem; }
.tv-status--err { color: #b32d2e; }
.tv-mc__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .6rem; }

.tv-fav { display: flex; align-items: center; gap: .8rem; padding: .7rem .8rem; border: 1px solid #eee; border-radius: 10px; }
.tv-fav__logo { width: 44px; height: 44px; object-fit: cover; border-radius: 8px; flex: 0 0 auto; }
.tv-fav__body { display: flex; flex-direction: column; gap: .1rem; min-width: 0; flex: 1 1 auto; }
.tv-fav__nombre { font-weight: 600; }
.tv-fav__cat, .tv-fav__dir { font-size: .85rem; color: #777; }
.tv-fav__del { flex: 0 0 auto; }

.tv-tx { display: flex; align-items: center; gap: .8rem; padding: .6rem .8rem; border: 1px solid #eee; border-radius: 10px; }
.tv-tx__fecha { flex: 0 0 auto; color: #777; font-size: .85rem; }
.tv-tx__comercio { flex: 1 1 auto; min-width: 0; font-weight: 600; }
.tv-tx__estado { flex: 0 0 auto; font-size: .78rem; padding: .15rem .5rem; border-radius: 999px; background: #eee; color: #555; }
.tv-tx__estado[data-estado="APROBADA"] { background: #e6f4d9; color: #3d6b12; }
.tv-tx__estado[data-estado="RECHAZADA"] { background: #fbe0e0; color: #b32d2e; }

.tv-mc__pager { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-top: 1rem; }
.tv-mc__pager-info { font-size: .9rem; color: #555; }
.tv-mc__pager .tv-btn-link:disabled { opacity: .4; cursor: default; }

/* --- Mi cuenta · Datos (iter 3b; provisional, UX/UI reskinea en M7). --- */
.tv-mi-datos { max-width: 560px; }
.tv-md__back { display: inline-block; margin-bottom: .5rem; }
.tv-md__subtitulo { font-size: 1.1rem; margin: 1.5rem 0 .5rem; }
.tv-md__list { margin: 0; }
.tv-md__row { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 0; border-bottom: 1px solid #f0f0f0; }
.tv-md__row dt { margin: 0; color: #777; font-size: .9rem; }
.tv-md__row dd { margin: 0; font-weight: 600; text-align: right; word-break: break-word; }
.tv-md__nota { margin-top: 1.25rem; }

/* --- Mi cuenta · Solicitudes (iter 3c; provisional, UX/UI reskinea en M7). --- */
.tv-mis-solic { max-width: 560px; }
.tv-solic__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .6rem; }
.tv-solic { padding: .7rem .85rem; border: 1px solid #eee; border-radius: 10px; }
.tv-solic__row { display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.tv-solic__estado { font-size: .78rem; padding: .15rem .5rem; border-radius: 999px; background: #eee; color: #555; }
.tv-solic__estado[data-estado="APROBADA"] { background: #e6f4d9; color: #3d6b12; }
.tv-solic__estado[data-estado="RECHAZADA"] { background: #fbe0e0; color: #b32d2e; }
.tv-solic__estado[data-estado="OBSERVADA"] { background: #fdf0d5; color: #8a6d1c; }
.tv-solic__fecha { color: #777; font-size: .85rem; }
.tv-solic__motivo { margin: .5rem 0 0; font-size: .9rem; }
.tv-solic__obs-nota { margin: .4rem 0 0; font-size: .85rem; color: #8a6d1c; }
.tv-solic__reno { margin-top: 1.75rem; padding-top: 1.25rem; border-top: 1px solid #eee; }

/* --- Mi comercio (M6; provisional, UX/UI reskinea en M7). --- */
.tv-comercio-panel { max-width: 560px; margin: 2rem auto; padding: 0 1.25rem; }
.tv-mic__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.tv-mic__nombre { margin: 0; font-size: 1.3rem; color: var(--tv-theme-color, #6eb92b); }
.tv-mic__scan { margin: 1rem 0 1.5rem; }
.tv-mic__logo { max-width: 120px; height: auto; border-radius: 8px; margin-bottom: .75rem; }
.tv-mic__benef-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.tv-mic__benef-item { display: flex; align-items: baseline; gap: .6rem; padding: .5rem .7rem; border: 1px solid #eee; border-radius: 10px; }
.tv-mic__benef-valor { font-weight: 700; color: var(--tv-theme-color, #6eb92b); }
.tv-mic__benef-nombre { font-weight: 600; }
.tv-mic__benef-vig { margin-left: auto; color: #888; font-size: .8rem; }
.tv-mic__hist-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.tv-tx__benef { color: #555; font-size: .85rem; }

/* --- Perfil del comercio (mi-comercio rework; provisional, UX/UI reskinea en M7). --- */
.tv-mic__id { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
.tv-mic__estado { font-size: .72rem; padding: .12rem .5rem; border-radius: 999px; background: #fbe0e0; color: #b32d2e; }
.tv-mic__estado[data-estado="ACTIVO"] { background: #e6f4d9; color: #3d6b12; }
.tv-mic__kpis { display: flex; gap: 1rem; margin: 1.25rem 0; }
.tv-mic__kpi { flex: 1; text-align: center; padding: 1rem; border: 1px solid #eee; border-radius: 12px; background: #fafafa; }
.tv-mic__kpi-num { display: block; font-size: 1.8rem; font-weight: 800; line-height: 1; color: var(--tv-theme-color, #6eb92b); }
.tv-mic__kpi-lbl { display: block; margin-top: .3rem; font-size: .82rem; color: #555; }
.tv-mic__desc { color: #444; margin: 0 0 1rem; }
.tv-mic__galeria { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: .5rem; }
.tv-mic__galeria-item img { width: 100%; height: 90px; object-fit: cover; border-radius: 8px; display: block; }

/* --- Mis beneficios (home comercio; M6 pág. 1; provisional, UX/UI reskinea en M7). --- */
.tv-misb { max-width: 560px; margin: 2rem auto; padding: 0 1.25rem; }
.tv-misb__topbar { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.tv-misb__filtros { display: flex; gap: .5rem; margin: 1rem 0; flex-wrap: wrap; }
.tv-misb__filtro { padding: .4rem .9rem; border: 1px solid #ddd; border-radius: 999px; background: #fff; color: #555; font: inherit; cursor: pointer; }
.tv-misb__filtro.is-active { border-color: var(--tv-theme-color, #6eb92b); color: var(--tv-theme-color, #6eb92b); font-weight: 600; }
.tv-misb__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .6rem; }
.tv-misb__card-btn { display: flex; flex-direction: column; gap: .2rem; width: 100%; text-align: left; padding: .8rem .9rem; border: 1px solid #eee; border-radius: 10px; background: #fff; font: inherit; cursor: pointer; }
.tv-misb__card-btn:hover { border-color: var(--tv-theme-color, #6eb92b); }
.tv-misb__card[data-vencido] .tv-misb__card-btn { opacity: .6; }
.tv-misb__card-nombre { font-weight: 700; }
.tv-misb__card-desc { color: #666; font-size: .9rem; }
.tv-misb__card-validez { color: #888; font-size: .82rem; }
.tv-misb__card-canjes { color: #3d6b12; font-size: .82rem; font-weight: 600; }
.tv-misb__det-estado { display: inline-block; font-size: .78rem; padding: .15rem .6rem; border-radius: 999px; background: #e6f4d9; color: #3d6b12; }
.tv-misb__det-estado[data-estado="VENCIDO"] { background: #fbe0e0; color: #b32d2e; }
.tv-misb__det-estado[data-estado="FUTURO"] { background: #e6eefb; color: #1e4fb3; }
.tv-misb__det-nombre { margin: .6rem 0 1rem; }
.tv-misb__scan { margin-top: 1rem; }
.tv-misb__nav { display: flex; gap: 1rem; flex-wrap: wrap; }

/* --- Actividad (comercio, pág. 2; provisional, UX/UI reskinea en M7). --- */
.tv-actividad { max-width: 560px; margin: 2rem auto; padding: 0 1.25rem; }
.tv-act__filtro { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: 1rem 0; }
.tv-act__filtro input[type="date"] { padding: .4rem .6rem; border: 1px solid #c3c4c7; border-radius: 6px; font: inherit; }
.tv-act__stats { display: flex; gap: 1rem; margin: 1rem 0 1.5rem; }
.tv-act__stat { flex: 1; text-align: center; padding: 1rem; border: 1px solid #eee; border-radius: 12px; }
.tv-act__stat--ok { background: #eef6e3; }
.tv-act__stat--err { background: #fbe0e0; }
.tv-act__num { display: block; font-size: 1.8rem; font-weight: 800; line-height: 1; }
.tv-act__stat--ok .tv-act__num { color: #3d6b12; }
.tv-act__stat--err .tv-act__num { color: #b32d2e; }
.tv-act__lbl { display: block; margin-top: .3rem; font-size: .82rem; color: #555; }
.tv-act__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.tv-act__row { display: flex; align-items: center; gap: .7rem; padding: .6rem .8rem; border: 1px solid #eee; border-radius: 10px; }
.tv-act__icon { flex: 0 0 auto; width: 1.6rem; height: 1.6rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; font-weight: 700; background: #eee; color: #555; }
.tv-act__icon[data-estado="APROBADA"] { background: #e6f4d9; color: #3d6b12; }
.tv-act__icon[data-estado="RECHAZADA"] { background: #fbe0e0; color: #b32d2e; }
.tv-act__rowbody { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.tv-act__vecino { font-weight: 600; }
.tv-act__benef { color: #666; font-size: .85rem; }
.tv-act__fecha { flex: 0 0 auto; color: #888; font-size: .8rem; text-align: right; }

/* --- Registro del vecino (wizard 4 pasos; provisional, UX/UI reskinea en M7). --- */
.tv-registro { max-width: 480px; margin: 2rem auto; padding: 0 1.25rem; }
.tv-reg__steps { display: flex; gap: .5rem; justify-content: center; list-style: none; margin: 0 0 1.5rem; padding: 0; }
.tv-reg__steps li {
	width: 2rem; height: 2rem; border-radius: 50%;
	display: flex; align-items: center; justify-content: center;
	border: 1px solid #ddd; color: #999; font-size: .85rem; background: #fff;
}
.tv-reg__steps li.is-active { border-color: var(--tv-theme-color, #6eb92b); color: var(--tv-theme-color, #6eb92b); font-weight: 700; }
.tv-reg__steps li.is-done { background: var(--tv-theme-color, #6eb92b); border-color: var(--tv-theme-color, #6eb92b); color: #fff; }
.tv-reg__step { border: 0; margin: 0; padding: 0; }
.tv-reg__step legend { font-size: 1.15rem; font-weight: 600; margin: 0 0 1rem; color: var(--tv-theme-color, #6eb92b); }
.tv-reg__radio, .tv-reg__check { display: flex; align-items: center; gap: .5rem; margin: .5rem 0; }
.tv-reg__nav { display: flex; gap: .75rem; margin-top: 1.5rem; }
.tv-reg__nav .tv-btn { width: auto; flex: 1; }
.tv-btn--ghost { background: #fff; color: var(--tv-theme-color, #6eb92b); border: 1px solid var(--tv-theme-color, #6eb92b); }
.tv-reg__done { text-align: center; }
.tv-reg__done-msg { margin: 0 0 1.25rem; color: #555; }
