/* ---- Token de radius para CONTROLES (2026-10-02): botones, pills/chips de filtro, tabs, buscadores, inputs y selects.
   Un solo valor; los componentes del kit lo consumen con var(--bnsc-radius-control) en su regla de origen (sin
   !important de más). Para cambiarlo en todo el sitio, editar solo esta línea. NO aplica a círculos (50%: botón
   de lupa, radio-dots) ni a paneles/tarjetas contenedoras. Los botones nativos de Elementor siguen con el estándar
   de §17 del catálogo (5px). */
:root {
	--bnsc-radius-control: 5px;
}

/* Banesco Kit — comportamiento del navbar (Header). Los colores/tipografía/spacing ya vienen resueltos
   por Elementor (settings del template "Banesco Header"); esto solo agrega posicionamiento + show/hide. */

.bnsc-header {
	position: relative;
}

/* ---- Ancho boxed del navbar (calza con el ancho de las secciones del sitio) ----
   Elementor le pone su propio flex-grow/margin por defecto a este contenedor, lo que lo hace
   "crecer" pegado a la izquierda en vez de centrarse. Forzamos flex-grow:0 (no se estira) +
   margin auto !important (gana el empate de cascada) para que quede centrado de verdad. */
.bnsc-boxed {
	flex-grow: 0 !important;
	width: 100% !important;
	max-width: 1200px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}

.bnsc-boxed-1400 {
	width: 100% !important;
	max-width: 1400px !important;
	margin-inline: auto !important;
}

/* ---- Topbar / Mainbar: barras compactas. Sin esto, el padding por defecto de cada contenedor
   de Elementor (10px arriba/abajo por default, "--container-default-padding-top/bottom" del propio
   .e-con base de Elementor) se acumula en cada nivel anidado y las barras se ven más altas de lo
   diseñado. ---- */
.bnsc-header .bnsc-boxed,
.bnsc-header .bnsc-dd,
.bnsc-header .bnsc-dd-trigger,
.bnsc-header .bnsc-desktop-nav,
.bnsc-header .bnsc-nav-item,
.bnsc-header .bnsc-actions,
.bnsc-header .bnsc-mcompact {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/* Elementor le pone line-height:24px al wrapper de todo widget "icon" (view default) sin importar el
   "size" configurado — acá los chevrons/hamburger/cerrar miden 10-22px reales pero su wrapper medía
   24px igual, inflando la altura de cada fila que los contiene (el trigger del dropdown, Personas/
   Empresas, etc.). Se limita solo dentro del header para no tocar los widgets icon del resto del sitio. */
.bnsc-header .elementor-icon-wrapper {
	line-height: 1 !important;
}

/* padding-top/bottom:6px acá (la barra ya no acumula el padding oculto de .bnsc-dd, ni la altura
   inflada del ícono de arriba, así que esto ya alcanza para un topbar cómodo). */
.bnsc-topbar {
	padding-top: 6px !important;
	padding-bottom: 6px !important;
}

/* Elementor trae el grupo de dropdowns con flex-end por defecto, pero cada .bnsc-dd se estira y
   los separa a lo ancho de toda la barra; forzamos que se agrupen compactos pegados a la derecha. */
.bnsc-topbar .bnsc-boxed {
	display: flex !important;
	justify-content: flex-end !important;
	align-items: center !important;
	gap: 28px !important;
}

.bnsc-topbar .bnsc-dd,
.bnsc-topbar .bnsc-dd-trigger,
.bnsc-actions .bnsc-dd,
.bnsc-actions .bnsc-dd-trigger,
.bnsc-mcompact .bnsc-dd,
.bnsc-mcompact .bnsc-dd-trigger {
	flex: 0 0 auto !important;
	/* Elementor le pone width:100% (var(--width)) a todo .e-con por default; con flex-basis:auto ese
	   width explícito se vuelve la base real del flex (100% = ancho completo de la barra), y como
	   flex-shrink también quedó en 0 arriba, nunca se achica de vuelta. Sin este width:auto los 3
	   dropdowns del topbar (Contáctanos/Sucursales/país) terminan ocupando ~1180px cada uno y se
	   amontonan fuera de pantalla. Mismo patrón ya usado en .bnsc-mainbar más abajo -- también se
	   necesita en .bnsc-actions (2026-09-24: "Banca en Línea" pasó de botón simple a dropdown real
	   con el mismo componente .bnsc-dd, mismo problema si no se acota el ancho). */
	width: auto !important;
}

.bnsc-topbar .elementor-heading-title {
	font-size: 12px;
	line-height: 1.15;
}

.bnsc-topbar .elementor-icon svg {
	width: 9px;
	height: 9px;
}

.bnsc-mainbar {
	padding-top: 5px !important;
	padding-bottom: 7px !important;
}

.bnsc-actions {
	gap: 14px !important;
}

/* 2026-09-18 (ajuste de diseño): los botones del navbar (miA + Banca en Línea) dejan la forma de
   píldora y pasan a compartir el radio 5px del estándar sitewide (ver .elementor-button más abajo) --
   ya no son una excepción de forma, solo de tamaño (siguen siendo chips compactos de navegación, no
   CTAs de contenido, así que mantienen su padding horizontal acotado para no inflar el header).
   padding-top/bottom:10px explícito (antes 7px, calibrado a mano contra miA -- ese calce ya no aplica
   porque miA también cambia de píldora a 5px con el mismo criterio, ver bloque siguiente).
   border-width:0 -- a diferencia del resto de los botones del sitio, ACÁ SÍ se anula el borde de 1px
   reservado por el estándar global: se pidió sacarlo porque ensanchaba el botón dentro del header
   (espacio ya acotado), y este chip no necesita calzar en alto contra un secundario con borde real al
   lado (no es un par primario+secundario como en los heroes). */
.bnsc-banca .elementor-button {
	padding: 10px 22px !important;
	font-size: 14px !important;
	border-radius: 5px !important;
	border-width: 0 !important;
}

/* ---- Botón miA: imagen real (marca "miA" en blanco, pensada para ir sobre fondo de color) montada
   sobre un chip con el azul de marca (mismo #173358 usado en headings/botones en todo el sitio) —
   la imagen sola es invisible sobre blanco porque es blanca con transparencia.
   2026-09-18: radio 100px -> 5px + padding vertical 10px, mismo estándar que el resto de los botones
   del sitio (ver .bnsc-banca arriba). Sin borde (ver nota de border-width:0 en .bnsc-banca arriba --
   mismo motivo, ensanchaba el chip dentro del header). ---- */
.bnsc-mia-logo,
.bnsc-mia-icon {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	flex: 0 0 auto !important;
	width: auto !important;
	background-color: #173358;
	border-radius: 5px;
	box-sizing: border-box;
	border: 0;
}

.bnsc-mia-logo {
	padding: 10px 18px !important;
}

.bnsc-mia-logo img {
	height: 17px;
	width: auto !important;
	object-fit: contain;
	display: block;
}

/* Versión compacta (mobile/hamburger row): más chica para no forzar scroll horizontal —
   la versión desktop (bnsc-mia-logo) es demasiado ancha para la fila compacta con el botón
   "Banca en Línea" + hamburger al lado. */
.bnsc-mia-icon {
	padding: 10px 16px !important;
}

.bnsc-mia-icon img {
	height: 16px;
	width: auto !important;
	object-fit: contain;
	display: block;
}

.bnsc-mcompact {
	gap: 8px !important;
}

/* padding-top/bottom:10px, mismo estándar sitewide -- ver .bnsc-banca arriba (era 9.5px, calibrado
   contra la píldora miA compacta, calce que ya no aplica porque ambas pasan al mismo estándar).
   border-width:0 -- mismo motivo que .bnsc-banca arriba, sin borde para no ensanchar el chip. */
.bnsc-mcompact .elementor-button {
	padding-left: 12px !important;
	padding-right: 12px !important;
	padding-top: 10px !important;
	padding-bottom: 10px !important;
	font-size: 13px !important;
	border-radius: 5px !important;
	border-width: 0 !important;
}

/* ---- Logo Banesco: símbolo chico en mobile en vez del isotipo completo (que fuerza más ancho del
   necesario); el isotipo completo se mantiene igual en tablet/desktop. ---- */
.bnsc-logo-mobile {
	display: none;
	flex: 0 0 auto !important;
	width: auto !important;
}

@media (max-width: 767px) {
	.bnsc-logo-mobile {
		display: flex !important;
		align-items: center !important;
	}

	.bnsc-logo-mobile img {
		height: 34px;
		width: auto !important;
		object-fit: contain;
		display: block;
	}
}

.bnsc-logo img {
	max-height: 38px;
	width: auto !important;
	object-fit: contain;
}

@media (max-width: 1024px) {
	.bnsc-logo img {
		max-height: 34px;
	}
}

/* En mobile "width: auto" de arriba escala el logo por altura y lo deja ~152px de ancho (su relación
   de aspecto real), ignorando el width_mobile:88px ya configurado en el widget de Elementor — eso
   solo era el culpable real del scroll horizontal del navbar en mobile. Se limita el ancho acá para
   que sí respete ese valor. */
@media (max-width: 767px) {
	.bnsc-logo img {
		max-height: none;
		width: 88px !important;
		height: auto;
	}
}

.bnsc-mainbar .bnsc-logo,
.bnsc-mainbar .bnsc-desktop-nav,
.bnsc-mainbar .bnsc-actions,
.bnsc-mainbar .bnsc-mcompact {
	flex: 0 0 auto !important;
	width: auto !important;
}

.bnsc-flag img {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	object-fit: cover;
	display: block;
}

/* ---- Topbar: 3 dropdowns (Contáctanos, Sucursales, selector de país) ---- */
.bnsc-dd {
	position: relative;
}

.bnsc-dd-trigger {
	cursor: pointer;
}

.bnsc-dd-panel {
	position: absolute;
	top: 100%;
	right: 0;
	z-index: 100;
	min-width: 220px;
	margin-top: 8px;
	background: #ffffff;
	border-radius: 8px;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
	padding: 8px 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
}

.bnsc-dd.is-open > .bnsc-dd-panel,
.bnsc-dd:hover > .bnsc-dd-panel {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.bnsc-dd-panel .elementor-icon-list-items {
	margin: 0;
}

.bnsc-dd-panel .elementor-icon-list-item {
	padding: 8px 20px;
	white-space: nowrap;
}

/* ---- Selector de país: filas bandera + nombre dentro del panel (reemplaza el icon-list plano,
   Elementor no permite imagen por ítem dentro de un widget icon-list). ---- */
.bnsc-country-row {
	padding: 8px 20px !important;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.bnsc-country-row:hover {
	background-color: #F6F6F6;
}

.bnsc-flag-item img {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	object-fit: cover;
	display: block;
}

/* ---- Mega menú (Personas / Empresas / Internacional) ---- */
.bnsc-nav-item {
	position: relative;
	cursor: pointer;
	/* Sin esto, Elementor reparte el ancho de los 3 triggers del nav en partes iguales (mismo
	   var(--width):100% + flex-shrink default que ya se documentó para .bnsc-dd más abajo) -- daba
	   exactamente el mismo ancho a "Personas" y a "Internacional" pese a tener textos de largo
	   distinto, y en "Internacional" (el texto más largo) el chevron quedaba encimado sobre la
	   última letra en vez de con el gap de 6px real. Bug real detectado 2026-09-24 al agregarle el
	   chevron a Internacional -- mismo patrón .bnsc-dd que ya se ve más abajo (línea 65 aprox). */
	flex: 0 0 auto !important;
	width: auto !important;
}

/* Internacional ya no es un link plano suelto -- desde 2026-09-24 es un .bnsc-nav-item más (con su
   propio flyout Personas/Empresas). .bnsc-nav-link queda como fallback genérico por si algún trigger
   futuro necesita ser "solo link, sin abrir panel" sin volver a duplicar este bloque. */
.bnsc-header .bnsc-nav-link {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}
.bnsc-nav-link {
	position: relative;
	cursor: pointer;
}
.bnsc-nav-link a,
.bnsc-nav-link a:hover {
	color: #173358;
	text-decoration: none;
}

.bnsc-megamenu {
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	z-index: 90;
	background: #ffffff;
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translateY(8px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
}

.bnsc-megamenu.is-open {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: translateY(0);
}

/* El contenedor del mega menú (bnscMega) trae 10px de padding default de Elementor por lado,
   y cada panel adentro trae otros 20px propios — se acumulan 60px de aire. Compactamos ambos.
   2026-09-24 (ajuste de diseño): ese padding lateral de 10px dejaba un margen de "sangrado" visible en
   los bordes del panel -- el fondo de #bnscMega ya llegaba a los bordes de .bnsc-header (full width),
   pero .bnsc-panel/.bnsc-l3-panel heredaban ese padding y quedaban 10px adentro, dejando ver una
   franja del fondo de la página detrás. padding-left/right:0 acá para que el panel sea realmente
   edge-to-edge; el aire visual para el texto lo sigue dando el padding propio de .bnsc-panel (24px)
   y de .bnsc-l3-panel (28px 48px), que no se tocan. */
.bnsc-megamenu {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
}

.bnsc-panel {
	display: none;
	padding-top: 12px !important;
	padding-bottom: 12px !important;
	/* padding-left/right propio del widget (24px, ver settings de Elementor) es el resto del "margen
	   de sangrado" reportado 2026-09-24 -- .bnsc-l3-panel (abajo) se posiciona absolute contra ESTE
	   contenedor, así que ese padding lateral es justo lo que dejaba la franja de fondo visible en los
	   bordes del flyout. El aire para el texto de la fila de Nivel 2 ya lo da .bnsc-l2-row (centrada) +
	   el padding propio de cada link, no hace falta que también lo dé el contenedor. */
	padding-left: 0 !important;
	padding-right: 0 !important;
}

.bnsc-panel.is-active {
	display: block;
}

/* ---- Contenido del mega menú: horizontal en desktop (Elementor por defecto lo apila vertical) ---- */
.bnsc-megalinks .elementor-icon-list-items {
	display: flex !important;
	flex-wrap: wrap;
	gap: 6px 36px;
	justify-content: center;
	margin: 0;
}

.bnsc-megalinks .elementor-icon-list-item {
	margin: 0 !important;
	padding-block-end: 0 !important;
}

/* ---- Mobile: hamburger / panel off-canvas / tabs ---- */
.bnsc-hamburger,
.bnsc-close {
	cursor: pointer;
}

/* El panel se reorganiza como columna flex (topbar / tabs / lista / footer) para que la lista sea la
   única zona que scrollea y el footer (Contáctanos/Sucursales/país + redes) quede siempre pegado abajo
   en vez de dejar un bloque de espacio en blanco cuando la lista es corta. */
.bnsc-mobile-panel {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	width: 100%;
	z-index: 1000;
	background: #ffffff;
	display: flex !important;
	flex-direction: column !important;
	/* Elementor le pone flex-wrap:wrap por default a todo .e-con en mobile (--flex-wrap-mobile:wrap);
	   sin este override el footer no entra en la "columna" disponible y salta a una segunda línea del
	   wrap — que en un contenedor column-flex se dibuja como una columna aparte a la derecha, fuera
	   del panel (overflow:hidden la esconde). Mismo tipo de bug ya visto con flex-basis en el topbar. */
	flex-wrap: nowrap !important;
	overflow: hidden;
	/* Antes tenía box-shadow con blur negativo (-8px) en vez de borde — su desenfoque se filtraba hacia
	   adentro del viewport incluso con el panel trasladado 100% fuera de pantalla (el blur se dibuja más
	   allá del borde del elemento, y ese margen quedaba dentro de los 375px del viewport). Borde sólido
	   en vez de sombra: no tiene ese problema porque no se dibuja fuera de los límites del elemento. */
	border-left: 1px solid #DDE3EA;
	transform: translateX(100%);
	transition: transform 0.25s ease;
	/* Elementor le pone 10px de padding por default a TODO .e-con — el panel raíz (#bnscMobile) nunca lo
	   había pisado, así que su contenido (tabs/listas/footer) quedaba inset 10px de cada borde en vez de
	   ir a sangre. Ajuste de diseño 2026-09-22: que el panel cubra el 100% del ancho disponible. */
	padding: 0 !important;
}

.bnsc-mobile-panel.is-open {
	transform: translateX(0);
}

body.bnsc-mobile-open {
	overflow: hidden;
}

.bnsc-mobile-search {
	cursor: pointer;
}

/* Topbar/tabs del panel a tamaño fijo (no se achican, flex-grow:0 por default ya alcanza); la lista en
   medio es la única con flex-grow (ver .bnsc-mlists-wrap más abajo) — absorbe el espacio disponible y
   empuja el footer siempre pegado abajo. */
.bnsc-mtabs-row {
	flex: 0 0 auto !important;
	/* Mismo 10px default de Elementor que el panel raíz, apilado encima del suyo -- sin esto la fila de
	   tabs quedaba con doble inset (panel + fila) y no llegaba a los bordes del panel ya a sangre. */
	padding: 0 !important;
}

/* Tabs Personas/Empresas del panel mobile: el ancho fijo (50px) que trae el widget en Elementor no
   distribuye los tabs a lo largo de la barra — se fuerza a repartirse en partes iguales + estado activo
   con texto verde y borde inferior, en vez de solo un cambio de opacidad. Separador vertical fino entre
   tabs para que se lean como celdas de una misma barra, no textos sueltos. */
.bnsc-mtab {
	cursor: pointer;
	width: auto !important;
	flex: 1 1 0 !important;
	flex-direction: column !important;
	padding: 16px 0 14px !important;
	border-bottom: 3px solid transparent;
	border-right: 1px solid #EBF0F5;
	transition: border-color 0.15s ease;
}

.bnsc-mtabs-row > .elementor-element:last-child.bnsc-mtab {
	border-right: 0;
}

.bnsc-mtab .elementor-heading-title {
	color: #8A99A8;
	transition: color 0.15s ease;
}

.bnsc-mtab.is-active {
	border-bottom-color: #08543C;
}

.bnsc-mtab.is-active .elementor-heading-title {
	color: #08543C;
}

/* Zona de lista: única parte que scrollea dentro del panel — flex-grow para ocupar todo el espacio
   libre en vez de dejar un bloque en blanco cuando la lista activa es corta. */
.bnsc-mlists-wrap {
	flex: 1 1 auto !important;
	/* min-height:0 es necesario: los flex items no se encogen por debajo de la altura de su contenido
	   por default (min-height:auto), así que sin esto la lista (8 items, ~540px) empuja el footer fuera
	   del panel en vez de quedar scrolleable dentro del espacio que le sobra. */
	min-height: 0;
	overflow-y: auto;
	padding-top: 4px !important;
	padding-bottom: 4px !important;
}

.bnsc-mlist {
	display: none;
}

.bnsc-mlist.is-active {
	display: block;
}

/* Filas de la lista con más aire + separador, en vez de quedar todas apretadas arriba. */
.bnsc-mlist .elementor-icon-list-item {
	padding: 14px 0 !important;
	border-bottom: 1px solid #EBF0F5;
}

.bnsc-mlist .elementor-icon-list-items > .elementor-icon-list-item:last-child {
	border-bottom: 0;
}

/* Footer del panel (Contáctanos / Sucursales / país) en fila, no apilado — y siempre al fondo por ser
   el último hijo de la columna flex del panel (el flex-grow de .bnsc-mlists-wrap empuja todo lo demás). */
.bnsc-mfoot-list .elementor-icon-list-items {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	justify-content: space-between !important;
	column-gap: 12px;
}

.bnsc-mfoot-list .elementor-icon-list-item {
	flex: 0 0 auto !important;
	white-space: nowrap;
}

/* ---- Imagen a sangre (object-fit:cover) — usado en TODO el sitio, no solo el navbar: Cards Home,
   Servicios, Hero, Banner, Cards de producto (confirmado: 533 apariciones de .bnsc-img-fill en el
   contenido real). Faltaba por completo: el kit se armó scopeado solo al comportamiento del navbar,
   sin saber que el contenido también dependía de este patrón sitewide para el recorte de imágenes. ---- */
.bnsc-img-fill {
	display: flex !important;
	padding: 0 !important;
}

/* Cuando .bnsc-img-fill va directo en el CONTENEDOR que también se oculta por breakpoint (no en el
   widget de imagen adentro, ver el otro caso más abajo), el !important de arriba le gana siempre al
   "display:none" de Elementor (.elementor-hidden-desktop/tablet/mobile no llevan !important) sin
   importar la especificidad — un !important siempre gana contra uno que no lo es. Estas reglas
   restauran el ocultar solo dentro del breakpoint correspondiente, con más especificidad que la de
   arriba (2 clases pegadas, sin espacio) para no depender del orden de carga (bug real detectado
   2026-07-22 en la sección "Realiza tus pagos y consultas donde estés" del Home — bnsc-img-fill
   puesto en el contenedor, no en el widget). Breakpoints iguales a los de Elementor (frontend.min.css). */
@media (max-width: 767px) {
	.bnsc-img-fill.elementor-hidden-mobile { display: none !important; }
}
@media (min-width: 768px) and (max-width: 1024px) {
	.bnsc-img-fill.elementor-hidden-tablet { display: none !important; }
}
@media (min-width: 1025px) {
	.bnsc-img-fill.elementor-hidden-desktop { display: none !important; }
}

.bnsc-img-fill > .e-con-inner {
	width: 100%;
	height: 100%;
	display: flex;
}

/* :where() en .elementor-widget-image resta especificidad a esta regla a propósito: sin esto,
   "display:flex" empata en especificidad con las clases nativas de Elementor
   .elementor-hidden-desktop/tablet/mobile y gana por cargar último en el <head>, dejando SIEMPRE
   visibles pares de imagen desktop/mobile que deberían alternar por breakpoint (bug real detectado
   2026-07-22 en la card "Tenemos la tarjeta de crédito ideal para ti" del Home). Con :where(), esta
   regla pesa lo mismo que .bnsc-img-fill sola y el hide-on-breakpoint de Elementor gana siempre que
   está activo, sin perder el fill normal cuando no lo está. */
.bnsc-img-fill :where(.elementor-widget-image) {
	width: 100%;
	height: 100%;
	margin: 0;
	display: flex;
	/* flex-grow además de height:100% -- un contenedor .bnsc-img-fill con flex_direction:column y
	   solo min-height (nunca height fijo, es el patrón real en toda la plantilla del sitio) deja la
	   propiedad "height" en auto según spec; el porcentaje 100% de arriba entonces no resuelve y el
	   widget colapsa a la altura intrínseca de la imagen -- visible como banda gris del
	   background_color del contenedor debajo de la foto. Bug real detectado 2026-08-17 en el hero de
	   "PYME: Soluciones para todas" en mobile (min_height_mobile), pero afecta a cualquier instancia
	   con un solo widget de imagen sin flex-grow. flex:1 1 auto fuerza el crecimiento por el algoritmo
	   de flexbox (no depende de resolución de porcentaje), sin afectar el comportamiento ya probado
	   en los pares imagen desktop/mobile con hide_desktop/hide_mobile. */
	flex: 1 1 auto;
}

.bnsc-img-fill .elementor-widget-image > .elementor-widget-container {
	width: 100%;
	height: 100%;
}

.bnsc-img-fill img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover;
	display: block;
}

/* Variante para fotos de producto de composición fija (ej. una tarjeta de crédito): "cover" las
   recorta mal (corta el logo/borde). ".bnsc-img-fill--contain" además de ".bnsc-img-fill" (no la
   reemplaza) muestra la imagen completa dentro del contenedor — necesita el fondo propio del
   contenedor (background_color) para no dejar espacio en blanco alrededor. */
.bnsc-img-fill.bnsc-img-fill--contain img {
	object-fit: contain;
}

/* Banners "bonus-*" (cross-sell "Mejora tus viajes con X y Banesco", "¿Por qué es ideal para ti?", etc.):
   SIN reglas CSS por imagen. El PNG viene con la silueta (círculo + arco) cortada por el canvas arriba y
   abajo: el corte plano debe coincidir con los bordes del card, o queda flotando sobre el gris. Se configura
   desde el editor de Elementor, con controles nativos (ver scripts/fix-bonus-object-fit-nativo.php):
     - Card (contenedor padre): Padding = 0 (si no, Elementor deja 10px de franja alrededor de la imagen).
     - Widget Imagen > Estilo: Alto = 100% + Object Fit = Fill en escritorio, Contain en móvil.
       (Object Fit solo aparece si el Alto está definido; "Fill" no recorta, deforma lo que desajuste la
       proporción: ok hasta ~5%; cover recortaría la curva lateral del círculo.)
   Un banner nuevo se arma igual; el selector del widget (.elementor-element-ID img) gana a las reglas
   genéricas de .bnsc-img-fill sin !important. */

/* Home "Somos la solución que estás buscando" — grid de 1 card grande + 2 cards chicas apiladas
   (.bnsc-eqcard, reporte 2026-09-24: "la card grande y las 2 chicas no se ven alineadas").
   Diagnóstico: la columna derecha (contenedor de las 2 cards chicas) SÍ se estira correctamente a la
   misma altura que la card grande (align-items:stretch del grid ya funciona, 669px ambas columnas,
   confirmado midiendo el DOM) -- pero las 2 cards chicas adentro NO crecían para ocupar ese espacio,
   solo se apilaban por su alto de contenido natural (286px + gap 24px + 334px = 644px), dejando 25px
   muertos al fondo de la columna -- de ahí la sensación de desalineación con la card grande. La clase
   .bnsc-eqcard ya existía en el HTML (nombre sugiere "equal card") pero nunca tuvo CSS asociado.
   Fix: flex:1 1 0 reparte el espacio disponible de la columna en partes IGUALES entre las 2 cards --
   quedan del mismo alto entre sí (antes 286 vs 334, una diferencia de 48px por texto de distinta
   longitud) Y la suma exacta llena la columna estirada, alineando el fondo con la card grande. La foto
   de cada card (bnsc-img-fill--cover-abs) absorbe el alto extra sin distorsión (object-fit:cover ya
   está pensado para llenar cualquier caja). min-height:0 evita que el alto de contenido natural le
   gane al flex-basis:0 (bug clásico de flexbox con contenido de texto largo). */
.bnsc-eqcard {
	flex: 1 1 0 !important;
	min-height: 0 !important;
}

/* .bnsc-f-cards — fila de N cards iguales dentro de un .bnsc-boxed (patrón "Elige tu cuenta de ahorro",
   "La cuenta/Niños/Planilla", grids de 2/3/4 del esqueleto "producto", etc.). Reporte
   2026-09-24: comparando con el banner "Plazo Fijo" de abajo (que sí llega a los bordes reales del
   contenedor boxed), el grid de cards se ve angosto/descentrado -- pidió revisar si es un patrón
   repetido en otras landings de producto. Auditado sitewide: 224 contenedores con este patrón exacto
   (título "Cards" en el editor, fila de N hijos "Card" con el MISMO % de ancho cada uno) en 101 páginas
   -- TODOS con el mismo bug doble:
     1. El contenedor de la fila nunca tuvo padding:0 explícito -> cae al default de Elementor (10px),
        igual que el bug ya encontrado hoy en Home y en el CTA "¿Necesitas ayuda?" (mismo patrón de raíz:
        un padding nunca seteado a propósito, no un valor de diseño real).
     2. Cada card tiene un % de ancho fijo que se estimó a ojo para 100%/N sin descontar los gaps
        (ej. 3 cards a 31% = 93%, o 4 cards a 22% = 88%) -- el 7-12% sobrante, con flex-justify-content
        casi siempre "center", se reparte como margen invisible a ambos lados del grupo -- el efecto
        visual es "las cards no llegan a los bordes que sí toca el banner de abajo".
   Fix: mismo patrón que .bnsc-eqcard -- flex:1 1 0 en cada card reparte el 100% del ancho disponible
   (menos los gaps reales, que YA están bien seteados) sin depender de que el % a mano sea exacto, así
   nunca vuelve a desalinearse aunque cambie el gap o se agregue/quite una card. padding:0 en la fila
   mata el default de Elementor. Solo desktop (>=1025px, breakpoint estándar del kit) -- mobile/tablet
   ya apilan a 1 columna vía width_mobile:100% de Elementor, sin este bug (confirmado, no tocar). Clase
   aplicada automáticamente a las 224 instancias vía scripts/apply-bnsc-f-cards-class.php (no se tocó a
   mano el "Cards" de Home -- 2 hijos con % DISTINTO entre sí, 47/53 a propósito, no es este patrón). */
@media (min-width: 1025px) {
	.bnsc-f-cards {
		padding: 0 !important;
	}
	.bnsc-f-cards > .e-con {
		flex: 1 1 0 !important;
	}
}

/* Variante para un solo widget de imagen (sin el par desktop/mobile con hide_desktop/hide_mobile que
   usa el resto del sitio) dentro de un .bnsc-img-fill con flex_direction:column y solo min-height
   (nunca height fijo). En ese caso "height:100%" en cascada (contenedor > widget > img) no resuelve
   -- la propiedad "height" del padre queda en "auto" según spec aunque el flex-grow lo estire
   visualmente, y el img cae a su alto intrínseco (bug real: hero de "PYME: Soluciones para todas" en
   mobile, 2026-08-17). position:absolute + inset:0 rompe la cadena de porcentajes (se resuelve contra
   la caja ya calculada del contenedor posicionado, no contra su propiedad "height"). Opt-in explícito
   -- NO se aplicó a .bnsc-img-fill en general para no arriesgar las 533 apariciones existentes del
   patrón de a pares. */
.bnsc-img-fill--cover-abs {
	position: relative;
}

.bnsc-img-fill--cover-abs img {
	position: absolute !important;
	inset: 0 !important;
}

/* ==== Mejora global 2026-09-07: banners de tope de página (héroes) y banner de pagos/contacto ====
   Auditado con un script sobre las 97 páginas publicadas con .bnsc-hero-bg + las 103 instancias
   sitewide del patrón "Banner pagos" (banda pagos/contacto, ej. post 179/415/427): en AMBOS casos la
   imagen deja un hueco de color de fondo visible entre la foto y el borde del contenedor en mobile
   (reportado en /prestamos/prestamo-hipoteca/, pero reproducible en la mayoría de las 200
   instancias auditadas). Causa raíz confirmada: es exactamente el bug de ".bnsc-img-fill--cover-abs"
   de arriba (min-height sin height fijo + flex_direction:column en mobile → height:100% no resuelve →
   el <img> cae a su alto intrínseco, más chico que el min-height, y el min-height igual fuerza la caja
   del contenedor a ser más alta → el background_color del contenedor de "Imagen" se ve como una franja
   sólida debajo de la foto). En desktop (flex_direction:row) no se nota porque el stretch de flexbox le
   da una altura definida al contenedor y el 100% sí resuelve — por eso pasó desapercibido hasta ahora.

   A diferencia de la nota de arriba (2026-08-17, dejada opt-in por prudencia sobre las 533 apariciones
   sitewide de .bnsc-img-fill sin acotar), acá SÍ se aplica el mismo fix de forma incondicional pero
   ACOTADO a los dos selectores de abajo — auditados 1 por 1, ningún caso con min-height:0 en ninguno de
   los dos grupos (ver auditoría), así que no hay riesgo de que la imagen colapse a 0px. NO se toca
   .bnsc-img-fill en general (esa preocupación original sigue vigente para el resto de apariciones no
   auditadas: cards de producto, carruseles, etc.). ---- */

/* Grupo 1: imagen dentro de cualquier hero de tope de página (.bnsc-hero-bg), sea el patrón de UN
   contenedor con 2 widgets de imagen (desktop/mobile) o el de 2 contenedores .bnsc-img-fill hermanos
   (ver Grupo 2) anidado dentro de un hero — post 591 "Cuentas" usa esta segunda variante en su hero. */
.bnsc-hero-bg .bnsc-img-fill {
	position: relative;
	overflow: hidden;
}
.bnsc-hero-bg .bnsc-img-fill img {
	position: absolute !important;
	inset: 0 !important;
}

/* Grupo 2: banner "Banner pagos" (pagos/contacto/"¿Necesitas ayuda?"). Este patrón arma el par
   desktop/mobile con DOS .bnsc-img-fill hermanos completos (no 2 widgets adentro de 1 solo como el
   hero) -- cada uno se autooculta por breakpoint con las clases nativas de Elementor
   (.elementor-hidden-tablet.elementor-hidden-mobile = versión desktop, .elementor-hidden-desktop =
   versión mobile/tablet). Selector específico a esa combinación de clases para NO alcanzar ningún otro
   uso de .bnsc-img-fill que no sea este patrón exacto. */
.bnsc-img-fill.elementor-hidden-tablet.elementor-hidden-mobile,
.bnsc-img-fill.elementor-hidden-desktop {
	position: relative;
	overflow: hidden;
}
.bnsc-img-fill.elementor-hidden-tablet.elementor-hidden-mobile img,
.bnsc-img-fill.elementor-hidden-desktop img {
	position: absolute !important;
	inset: 0 !important;
}

/* Héroes — ajustes de escritorio (2026-09-08, ajuste de diseño, sitewide sobre .bnsc-hero-bg, cubre las
   97 páginas con hero + cualquiera nueva): columnas fijas 47% contenido / 53% imagen (ambas explícitas
   a propósito -- primer intento fue al revés, 53% contenido / 47% imagen, se confirmó que quería la
   proporción invertida: la imagen más grande que el texto), en vez de depender del % que cada página
   tenga configurado en Elementor (mismo motivo que ya forzó el NIVEL 2 de "imagen junto a contenido"
   más abajo, evitar accidentes de flex-shrink por página). Alto mínimo garantizado (442px -- `max()`
   respeta cualquier `--min-height` mayor ya configurado a propósito, nunca lo reduce) y la imagen con
   `object-fit:fill` (llena la caja exacta sin recortar ni dejar hueco, acepta una leve distorsión si la
   proporción del asset no calza 1:1 -- decisión explícita solo para heroes; el resto del sitio
   sigue con `cover`). Escritorio únicamente (`min-width:1025px`, mismo breakpoint que el resto del
   kit) -- mobile/tablet quedan sin tocar. `.e-con:not(.bnsc-img-fill)` identifica el lado de contenido
   sin depender de que tenga `bnsc-b-content` (el hero de TDC post 776, por ejemplo, no la usa). */
@media (min-width: 1025px) {
	.bnsc-hero-bg > .bnsc-boxed {
		min-height: max(var(--min-height, 0px), 442px) !important;
	}
	.bnsc-hero-bg > .bnsc-boxed > .e-con:not(.bnsc-img-fill) {
		flex: 0 0 47% !important;
		width: 47% !important;
	}
	.bnsc-hero-bg .bnsc-img-fill {
		flex: 0 0 53% !important;
		width: 53% !important;
	}
	.bnsc-hero-bg .bnsc-img-fill img,
	.bnsc-img-fill.elementor-hidden-tablet.elementor-hidden-mobile img {
		object-fit: fill;
	}
}

/* Hero "que respira" — opt-in .bnsc-hero-air (prueba 2026-09-21, ajuste de diseño, arranca en Stevens Onix
   Clásica post 934 antes de escalar sitewide). Problema que resuelve: el bloque de arriba fuerza
   object-fit:fill sobre la imagen del hero, lo que DISTORSIONA la foto de la tarjeta (se ve "presionada")
   y la encierra exacta en el recuadro del 53% de su columna. Como las fotos de cada página tienen
   proporciones distintas, ese recuadro fijo no le sirve a todas por igual.

   Fix (solo desktop, solo donde esté la clase): la imagen se ancla al borde izquierdo de su columna
   (donde arranca) pero se dimensiona por su ALTO real (height:100%, width:auto) y se le permite salir de
   la columna a lo ancho (overflow:visible) hasta un tope prudente (max-width), sin recortar ni deformar
   -- así cada foto usa exactamente el ancho que necesita para verse bien. Mayor especificidad
   (.bnsc-hero-air ... = misma cuenta de clases que las reglas de arriba pero cargada después) + !important
   para ganarle al object-fit:fill / position:absolute / width:100% del bloque global. */
@media (min-width: 1025px) {
	/* Alto mínimo del hero: baja de 442px (regla global de arriba) a 400px -- ajuste de diseño 2026-09-21.
	   3 clases (.bnsc-hero-bg.bnsc-hero-air) para ganarle en especificidad a la regla global de 442px. */
	.bnsc-hero-bg.bnsc-hero-air > .bnsc-boxed {
		min-height: max(var(--min-height, 0px), 400px) !important;
	}
	/* max-height (reporte 2026-09-26, 2da vuelta): el fix de max-width de abajo (122%→160%) resolvió el
	   hueco vacío en la foto, pero de rebote infló el ALTO de la fila entera en páginas donde la foto tiene
	   proporción ancha -- .bnsc-img-fill queda con height:auto (para poder hacer stretch), y el tamaño
	   HIPOTÉTICO (pre-stretch) de un <img> con height:100% sin padre de alto definido cae al tamaño
	   INTRÍNSECO de la foto (capado solo por max-width) -- con el tope en 160% eso podía dar hasta 678px
	   de alto "deseado" por la foto sola, y como .bnsc-img-fill hace stretch dentro de la fila, ESA fila
	   entera crecía a 678px aunque el texto no lo pidiera (confirmado quitando el padding del texto: la
	   fila no bajaba ni 1px -- la foto era la culpable, no el texto). Boletín: 69 de 112 héroes medían más
	   de 410px, muchos 500-680px, la mayoría con la foto como única causa. Fix: max-height tope a la foto en
	   el mismo piso que la fila (max(var(--min-height,0px),400px)) -- ya no puede "pedir" más alto que eso
	   para el cálculo de stretch, así que la fila vuelve a depender SOLO de min-height (piso) y del texto
	   real. Resultado auditado en las 106 páginas .bnsc-hero-air: 82 quedan en ~400px exactas; de las ~24
	   que superan el piso, casi todas por 11-30px (texto real: encabezado 2 líneas + párrafo + botones) y
	   1 outlier real (/tarjetas/baneskin/, párrafo de 5 oraciones, 302px de texto -- candidato a acortar
	   copy, no bug de CSS). En esos ~24 casos la foto queda short e anclada arriba (align-items default,
	   sin gap raro) con el sobrante abajo -- se ve intencional, no roto (verificado visualmente). */
	.bnsc-hero-air .bnsc-img-fill {
		overflow: visible !important;
		justify-content: center;
		max-height: max(var(--min-height, 0px), 400px) !important;
	}
	.bnsc-hero-air .bnsc-img-fill .elementor-widget-image,
	.bnsc-hero-air .bnsc-img-fill .elementor-widget-image > .elementor-widget-container {
		overflow: visible !important;
	}
	/* max-width subido de 122% a 160% (reporte 2026-09-26, 1ra vuelta): con la fila ya anclada a 400px por
	   la regla de arriba, este tope casi nunca se activa (400px de alto solo pide ~640-800px de ancho según
	   la proporción de la foto, bien por debajo del tope) -- se deja en 160% como margen de seguridad para
	   fotos futuras más anchas o páginas con --min-height custom más alto, sin costo para las que ya están
	   bien. */
	.bnsc-hero-air .bnsc-img-fill img {
		position: static !important;
		inset: auto !important;
		width: auto !important;
		height: 100% !important;
		max-width: 160% !important;
		object-fit: contain !important;
		margin: 0 auto !important;
	}
}

/* Hero con foto APAISADA — opt-in .bnsc-hero-wide (2026-10-02; Blog, Promociones y Bienes Reposeídos).
   Problema: el tratamiento .bnsc-hero-air dimensiona la imagen por su ALTO (400px) y la deja desbordar hacia la derecha desde el borde izquierdo
   de su columna. Con un render de tarjeta (proporción ~1.75) eso cabe; con estas fotos (lienzo 1575x800, proporción 1.97, el óvalo + arco ocupan
   casi todo el lienzo) la imagen mide 788px (859 en Promociones) y se CORTABA por el borde derecho de la pantalla: 52/123px a 1440, 132/203px a 1280,
   225/296px a 1100 (a 1920 cabe completa). Fix: se limita el ancho de la foto al espacio que queda hasta el borde derecho de la pantalla. La columna
   de imagen arranca en ≈ 50vw - 16px, así que el tope es 50vw + 16px (medido en 7 anchos entre 1100 y 1920). Con object-fit:contain la foto se reduce
   proporcionalmente (sin deformar ni recortar) y queda centrada en vertical; a partir de ~1600px no se activa y todo queda igual. */
@media (min-width: 1025px) {
	.bnsc-hero-air.bnsc-hero-wide .bnsc-img-fill img {
		max-width: min(160%, calc(50vw + 16px)) !important;
	}
}

/* Hero a sangre completa SITEWIDE (ajuste de diseño 2026-09-21, escalado a desktop 2026-09-26): el hero
   debe ir de borde a borde, sin el margen blanco alrededor ni las esquinas redondeadas. El margen lo genera
   el padding (20/40/24/24) del contenedor EXTERIOR que envuelve al .bnsc-hero-bg; las esquinas, su
   border-radius 24px. `:has(> .bnsc-hero-bg)` alcanza ese contenedor exterior sin depender de un ID de
   Elementor (que se regenera por clon) -- mismo recurso :has() que ya usa el kit para las filas
   imagen+contenido. Selector en `.bnsc-hero-bg` (no `.bnsc-hero-air`) para cubrir también los 7 héroes que
   todavía no tienen el tratamiento "que respira" (Préstamo Goleador, PYME Financiación, Compras a Cuotas,
   Google Pay, Click to Pay, Capital Humano, Somos Banesco Panamá). Antes solo mobile (≤767px); ahora sin
   media query -- desktop/tablet ya no conservan la tarjeta redondeada con margen, igual que mobile desde
   2026-09-21. Home queda afuera (su hero es `.bnsc-hero-carrusel`, un componente distinto, no
   `.bnsc-hero-bg`). */
.e-con:has(> .bnsc-hero-bg) {
	padding: 0 !important;
}
.bnsc-hero-bg {
	border-radius: 0 !important;
	/* Separación mínima con la sección de abajo (reporte 2026-09-27): al quitar el padding del contenedor
	   exterior de arriba, el hero quedó pegado al contenido siguiente sin ningún respiro. margin-bottom en
	   vez de padding-bottom en el wrapper para no reabrir el padding lateral (izquierda/derecha) que
	   justamente se acaba de quitar arriba -- el contexto flex del wrapper no colapsa este margin. */
	margin-bottom: 32px !important;
}

/* CTA de cierre "¿Necesitas ayuda?" (2026-09-08, ajuste de diseño): ancho de columna de contenido a 62%
   en escritorio, SOLO en este componente -- no usa `.bnsc-hero-bg` (confirmado auditando 3 instancias
   reales: no lo tiene en ningún nivel de su cadena de ancestros), así que las reglas de héroe de arriba
   nunca lo tocan y hace falta una regla aparte. Etiquetado por script (scripts/tag-cta-necesitas-ayuda.php,
   detecta por el texto exacto del heading "¿Necesitas ayuda?" — mismo criterio que
   tag-info-portrait.php) porque el widget ID se regenera en cada clon (scripts/sync-cta-necesitas-ayuda.php),
   nunca es estable entre páginas. Solo el ancho de contenido -- no se toca alto mínimo, object-fit, ni
   el lado de imagen (queda con lo que ya tenía). */
@media (min-width: 1025px) {
	/* 2026-09-22: se pidió más espacio para la foto ("se ve apretada a lo ancho") -- reducido de 62%
	   a 42% (imagen pasa de 38% a 58% real). Esta es la regla que de verdad manda el ancho (selector
	   compuesto .bnsc-cta-ayuda > .bnsc-b-content, más específico que cualquier clase suelta) -- los
	   intentos previos de ajustar el ancho vía el control nativo `width` de Elementor o vía una clase
	   simple nueva no tenían ningún efecto visual porque esta regla los pisaba silenciosamente. */
	.bnsc-cta-ayuda > .bnsc-b-content {
		flex: 0 0 42% !important;
		width: 42% !important;
	}
}

/* CTA "¿Necesitas ayuda?" — foto mobile (.bnsc-img-fill--contain) con franjas de fondo verde a los
   costados, "sensación de que está cortada" (reporte 2026-09-24). Sitewide en las 117 páginas
   que usan este componente (incluye Home). Causa raíz: el widget quedó con min_height:195px (config
   original), pero la foto compartida actual (adjunto 1273, Group-2-contact.png, la que se subió en el
   swap de imagen de 2026-08) mide 390x250px real -- proporción 1.56:1. La caja (ancho 100% x 195px) da
   proporción 2:1 a 390px de viewport -- con object-fit:contain esa diferencia de proporción dejaba la
   foto "flotando" más angosta que la caja, con el verde de fondo visible a los costados (no es un
   recorte real, es letterboxing horizontal, pero se lee igual de roto).
   Fix ORIGINAL (390/250 hardcodeado acá mismo) SUPERSEDIDO 2026-09-24 por el mecanismo genérico
   "Aspect ratio real por imagen" (ver bloque más abajo, mu-plugin banesco-image-natural-ratio.php) que
   generalizó este mismo fix a las 408 instancias cover-abs/contain del sitio -- mantener las dos reglas
   en paralelo (misma especificidad, .bnsc-cta-ayuda .bnsc-img-fill--contain = 2 clases = igual peso que
   .elementor .bnsc-img-fill--contain del bloque genérico) hizo que la que cargaba después ganara la
   guerra de cascada, y esa calculaba la proporción de un widget de imagen MUERTO (remanente invisible
   del swap de foto anterior) en vez de la foto real -- rompió las 117 páginas de este componente hasta
   que se corrigió la función que elige la imagen. No duplicar: el bloque genérico ya cubre este caso. */

/* ====================================================================================================
   Imagen junto a contenido (fila con .bnsc-img-fill + .bnsc-b-content hermanos) — DOS NIVELES.
   Historia (todo esta sesión, 2026-09-08, iterando): primero se intentó un tratamiento único
   para TODAS estas filas (align-self + max-height cap, luego clamp, luego aspect-ratio 10/11 global).
   Se descartó ese camino: auditado el árbol real, el selector `:has(> .bnsc-img-fill):has(> .bnsc-b-content)`
   cubre **1392 filas con imágenes de proporciones dispares** (ratios de 0.66 a 2.38) — no es un patrón
   único. Incluye, entre otros, el banner ancho "Realiza tus pagos" (665x280, r=2.38, 522 instancias) y
   banners landscape de producto (795x468, etc.). Forzar una proporción retrato a todos recortaba la
   mayoría. Confirmado además que 0 héroes (.bnsc-hero-bg) matchean este selector.

   NIVEL 1 (baseline, todas las filas MENOS las retrato): solo un tope de altura para que la imagen no
   se estire a lo alto del texto cuando el lado de contenido es muy alto (caso acordeón Beneficios/
   Condiciones abierto). NO toca el ancho: cada imagen conserva el width% que tiene configurado en
   Elementor, y el recorte lo maneja la regla general de .bnsc-img-fill img (object-fit:cover). Esto deja
   los banners anchos/landscape exactamente como estaban.

   NIVEL 2 (opt-in .bnsc-info-portrait): SOLO las filas cuya imagen es realmente vertical (retrato,
   ~500x550 = 10/11 — "Condiciones y características", "¿Cómo obtener...?"). Se etiquetan por script
   (scripts/tag-info-portrait.php, detecta imagen retrato en la fila) porque CSS no puede consultar la
   proporción intrínseca de la imagen para distinguirlas de los banners landscape de una sola imagen.
   A estas se les da el layout del prototipo: imagen ~42% / texto ~58%, con aspect-ratio 10/11 en el
   contenedor (= la proporción real del asset, así object-fit:cover NO recorta) para que el TAMAÑO de la
   imagen dependa de su ancho de columna (predecible) y no de un accidente de flex-shrink por página.
   Ver ESTADO-PROYECTO.md para el diagnóstico completo. ==================================================== */

/* NIVEL 1 — baseline, excluye las retrato (que llevan su propio tratamiento abajo). */
/* align-self:stretch (antes flex-start, 2026-10-02): con flex-start la altura de la columna de imagen es
   INDEFINIDA y el height:100% del <img> (y su object-fit nativo) no se resuelve -- caía a su alto intrínseco y
   dejaba huecos (Home "Promociones y descuentos", "¿Necesitas ayuda?" 195 vs fila 238), lo que obligaba a
   parches por ID de widget. Con stretch la altura es definida y el tope max-height de abajo sigue acotando
   (acordeón abierto: la columna no pasa de ese tope). Medido sitewide: de 157 filas solo 7 cambian en
   escritorio (todas mejoran), 0 en tablet/móvil. Para un card cuyo texto sea más alto que el tope, subir el
   "Alto mínimo" nativo de la columna de imagen: alimenta --min-height de la fórmula. */
.e-con:not(.bnsc-info-portrait):has(> .bnsc-img-fill):has(> .bnsc-b-content) > .bnsc-img-fill {
	align-self: stretch;
	max-height: max(var(--min-height), clamp(380px, 26vw, 550px)) !important;
}

/* NIVEL 2 — info-banner de imagen vertical (opt-in por clase en la fila). */

/* Filo de color expuesto detrás de la imagen (encontrado en el barrido sitewide, 2026-09-08): 39 de las
   75 filas etiquetadas traen su propio `background_color` en la fila (confirmado en el CSS compilado,
   ej. post 896 "Requisitos para tu Visa Corporate ConnectMiles":
   `background-color:var(--e-global-color-surface_soft)`) -- color que ANTES de este tratamiento nunca se
   veía, porque la imagen siempre se estiraba al 100% del alto de la fila y lo tapaba por completo. Ahora
   que la imagen ya NO se estira (para no perder su proporción), ese color queda expuesto como un filo
   visible cuando el lado de texto es más alto que la imagen (ej. una lista larga de "Requisitos"). No es
   un color "muerto" intencional -- es un remanente de un ajuste de Elementor que nunca debía ser visible.
   Se neutraliza para las filas etiquetadas específicamente (no toca el resto del sitio). */
.bnsc-info-portrait {
	background: transparent !important;
}

@media (min-width: 1025px) {
	.bnsc-info-portrait > .bnsc-img-fill {
		flex: 0 0 42% !important;
		width: 42% !important;
		max-width: 500px;
		aspect-ratio: 10 / 11;
		max-height: none !important; /* el aspect-ratio define el alto a partir del ancho de columna */
		align-self: flex-start;
	}
	.bnsc-info-portrait > .bnsc-b-content {
		flex: 1 1 auto !important;
		width: auto !important;
	}
}

/* Fuera del media query para que el fill correcto valga también en el stack mobile.
   object-fit:contain !important (2026-10-02): ajuste del equipo del banco en DEV (CSS adicional del
   Personalizador, incorporado acá en vez de dejarlo suelto). Antes era cover; con contain la imagen
   portrait se ve entera, sin recorte, aunque el asset no calce 10/11 exacto. */
.bnsc-info-portrait > .bnsc-img-fill img {
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
}

/* Padding vertical mínimo GARANTIZADO en las secciones info-portrait (2026-09-08, ajuste de diseño:
   varias secciones traían el padding vertical en 0 -- confirmado por auditoría: préstamo-auto 743 en
   0/0, mientras niños=30, Seguros=60, etc. -- inconsistente). Elementor pinta el padding-block real en
   el .e-con-inner del contenedor boxed (ver `.e-con-full,.e-con>.e-con-inner{padding-block-*}` en
   frontend.css), y --padding-block-start/end se heredan desde la sección. Se pone un PISO con max() que
   NO reduce las que ya traen más (60px de Seguros queda en 60) y sube a 48px las que están por debajo
   (0 y 30 → 48). El selector :has(> .e-con-inner > .bnsc-info-portrait) apunta SOLO a la sección boxed
   que envuelve la fila etiquetada (el combinador > exige la ruta exacta, no matchea ancestros más
   arriba). Desktop-only, igual que el resto del tratamiento portrait; mobile conserva su padding. NO
   aplica a banners (no llevan .bnsc-info-portrait) -- su espaciado ya está resuelto aparte. */
@media (min-width: 1025px) {
	.e-con:has(> .e-con-inner > .bnsc-info-portrait) > .e-con-inner {
		padding-block-start: max(var(--padding-block-start, 0px), 48px) !important;
		padding-block-end: max(var(--padding-block-end, 0px), 48px) !important;
	}
}

/* Orden tablet/móvil de los héroes: es el control NATIVO de la fila del hero (Diseño → Dirección, tablet). Texto primero en el HTML
   (lector de pantalla/SEO); "Columna invertida" = imagen arriba (foto ovalada, 109 héroes) y "Columna" = imagen abajo pegada al borde
   (figura recortada con fondo horneado: /cuentas/, /prestamos/, /tarjetas/, /seguros/, landings de Empresas, etc., 13 páginas).
   2026-10-04: se quitó la regla que forzaba column-reverse !important a todos (impedía elegirlo por página); las 122 filas ya traían
   el valor nativo. Un hero nuevo clonado de uno existente hereda su dirección. */

/* Padding default de Elementor (10px por lado en un container sin "padding" explícito, mismo
   "--container-default-padding" ya documentado arriba para el header) filtrándose en el hero: se
   acumula en DOS niveles anidados (.bnsc-hero-bg Y el .bnsc-boxed de adentro, 10px + 10px = 20px) y deja
   un marco de color visible entre el borde del banner y la imagen/texto -- reportado en
   /prestamos/prestamo-hipoteca/ 2026-09-07. Auditadas las 97 páginas con hero: 69 ya traían
   "padding":0 puesto a mano en ambos niveles (ningún caso con otro valor, cero riesgo de pisar algo
   intencional); las ~28 restantes -- entre ellas prestamo-hipoteca -- simplemente no lo tenían seteado
   y heredaban el default. Mismo criterio que "flex-direction" arriba: en vez de corregir página por
   página, se fuerza acá para las 97 actuales y cualquier hero nuevo. */
.bnsc-hero-bg,
.bnsc-hero-bg > .bnsc-boxed {
	padding: 0 !important;
}

/* ---- Cards de producto: imagen a sangre pegada al fondo de la card ---- */
.bnsc-card-img {
	line-height: 0;
	margin-top: auto;
}

.bnsc-card-img .elementor-widget-container,
.bnsc-card-img img {
	margin: 0;
	padding: 0;
}

/* Fila de 2 botones dentro de una card de producto (hermana de .bnsc-card-img, ej. "Local"/
   "Internacional" en las cards de Cuentas) -- en mobile la card queda angosta pero el design system
   sitewide de botones (36px de padding horizontal + 16px de fuente, ver ".elementor-button" más abajo
   en este archivo) no deja espacio para 2 botones en fila; el resultado es que se solapan (medido con
   Playwright: -7px de gap real entre "Local" e "Internacional" en /cuentas/, en vez de los 12px que
   pide el JSON) en vez de solo "verse apretados". Scopeado con :has() a la card real (no toca botones
   de hero/CTA a todo el ancho, que sí tienen lugar de sobra) -- reportado 2026-09-24. Apilar
   full-width en mobile es más robusto que forzar un padding/fuente más chicos: no depende de qué tan
   largo sea el texto del botón (hay pares bastante más largos que "Local/Internacional" en otras
   páginas, ej. "Canales de atención"/"Ver tarifario internacional"). */
@media (max-width: 767px) {
	.e-con:has(> .bnsc-card-img) .e-con:has(> .elementor-widget-button + .elementor-widget-button) {
		flex-wrap: wrap !important;
	}
	.e-con:has(> .bnsc-card-img) .e-con:has(> .elementor-widget-button + .elementor-widget-button) > .elementor-widget-button {
		flex: 1 1 100% !important;
		width: 100% !important;
	}
	.e-con:has(> .bnsc-card-img) .e-con:has(> .elementor-widget-button + .elementor-widget-button) > .elementor-widget-button .elementor-button {
		width: 100%;
		justify-content: center;
	}
}

.bnsc-card-img img {
	display: block;
	width: 100%;
	height: auto;
}

/* ---- Sección "Otras tarjetas que se pueden adaptar a tus necesidades" (33 páginas /tarjetas/,
   2026-09-18) -- capa ADITIVA sobre .bnsc-card-img (no se toca esa clase, la usan ~350 posts con
   gráficas ya compuestas que sí quieren el sangrado). Acá el asset es una foto cruda de la tarjeta
   física: si es horizontal queda pegada a los bordes, si es vertical se desborda mucho más alta que
   la card vecina. Marco de tamaño fijo + object-fit:contain -- misma caja para ambas orientaciones,
   con aire alrededor en vez de sangrado. scripts/fix-tarjeta-crosssell-image-frame.php agregó esta
   clase (aditiva, junto a bnsc-card-img) a las 67 imágenes de esta sección en las 33 páginas. */
.bnsc-tarj-crosssell-img {
	width: 50% !important;
	height: 210px !important;
	display: flex !important;
	align-items: center;
	justify-content: center;
	padding: 18px !important;
	box-sizing: border-box;
	flex-shrink: 0;
	/* .bnsc-card-img (clase base) trae margin-top:auto -- empuja la imagen al fondo de la card
	   pensado para su uso original (imagen a sangre pegada abajo). Acá se quiere centrada
	   verticalmente contra la columna de texto, más alta -- align-self:center la centra en el
	   cross-axis de la fila sin pelear con ese margin-top:auto heredado. */
	align-self: center !important;
	margin-top: 0 !important;
	margin-bottom: 0 !important;
}

.bnsc-tarj-crosssell-img img {
	width: auto !important;
	height: auto !important;
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

@media (max-width: 767px) {
	.bnsc-tarj-crosssell-img {
		width: 100% !important;
		height: 160px !important;
	}
}

/* ---- Grid de Promociones (shortcode bnsc_promociones_grid) ---- */
.bnsc-promo-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

@media (max-width: 1024px) {
	.bnsc-promo-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.bnsc-promo-grid {
		grid-template-columns: 1fr;
	}
}

/* Card de Promoción (template Elementor 541): mismo criterio de alineación solicitado
   2026-09-24 aplicado a Tarjetas/Blog/Bienes. La imagen (id 6772cc7) usa la clase compartida
   .bnsc-card-img (~350 usos sitewide, pensada para foto "a sangre" al pie de card de producto) --
   se va por ID acá para no tocar esa clase global, solo esta instancia puntual. Fotos reales de
   promoción ya vienen consistentes (~2.7:1 confirmado en las publicadas), pero se fija igual para no
   depender de que la próxima que suba alguien respete esa proporción a ojo. */
.elementor-element-6772cc7 {
	aspect-ratio: 2.7 / 1 !important;
	overflow: hidden !important;
}

.elementor-element-6772cc7 .elementor-widget-container {
	height: 100% !important;
}

.elementor-element-6772cc7 img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
}

/* Root (e45f580): mismo hallazgo que en Blog/Bienes -- el item real estirado por el grid es
   ".e-loop-item", un nivel arriba; sin height:100% acá el estirado no llega adentro de la card. Con las
   promociones publicadas hoy no se nota (títulos de largo similar), pero queda igual de expuesto al bug
   apenas una promoción tenga un título más largo que sus vecinas de fila -- se corrige preventivo. */
.elementor-element-e45f580 {
	height: 100% !important;
}

/* Body (bcc19c4) crece para llenar la card ya estirada por el grid; botón (c7ae0bb) ancla al fondo --
   mismo mecanismo que Tarjetas/Blog/Bienes, ver esas secciones para el detalle completo. */
.elementor-element-bcc19c4 {
	flex: 1 1 auto !important;
	min-height: 0 !important;
}

.elementor-element-c7ae0bb {
	margin-top: auto !important;
}

.bnsc-promo-grid-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin-top: 32px;
}

.bnsc-promo-grid-count {
	color: #5A6B7B;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	margin: 0;
}

.bnsc-promo-grid-load-more {
	display: inline-block;
	background: #F0F2F4;
	color: #33475B;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-promo-grid-load-more:hover {
	background: #E2E9EF;
}

/* ---- Pills de filtro de Promociones (shortcode bnsc_promociones_pills) ---- */
.bnsc-promo-pills {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	padding: 40px 24px 20px;
}

.bnsc-promo-pill {
	display: inline-block;
	background: #F0F2F4;
	color: #33475B;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 14px;
	text-decoration: none;
	padding: 10px 22px;
	border-radius: 5px; /* 2026-10-02: radio 5px del design system (el banco lo ajustó en DEV; antes 100px) */
	transition: background-color 0.15s ease, color 0.15s ease;
}

.bnsc-promo-pill:hover {
	background: #E2E9EF;
}

.bnsc-promo-pill.is-active {
	background: #08543C;
	color: #FFFFFF;
}

.bnsc-promo-pill.is-active:hover {
	background: #0C3A28;
}

/* ---- Badge de categoría dentro de la card de Promoción ----
   Elementor no dejó fijar el ancho "a medida del contenido" de forma confiable por sus propios
   controles (varias combinaciones probadas seguían estirando el pill a 100% del ancho de la card).
   Se fuerza acá, mismo patrón ya usado para el navbar. */
.bnsc-card-badge {
	display: inline-flex !important;
	width: fit-content !important;
	flex: 0 0 auto !important;
	align-self: flex-start !important;
}

/* ---- Blog: buscador, pills, grid (shortcodes bnsc_blog_*) ---- */
.bnsc-blog-search {
	display: flex;
	align-items: center;
	max-width: 700px;
	margin: 0 auto;
	background: #F6F6F6;
	border-radius: var(--bnsc-radius-control);
	padding: 6px 8px 6px 24px;
}

/* El theme trae un selector genérico "input[type=search], input[type=text], ... { border: 1px solid
   #666 }" con más especificidad (elemento+atributo) que una clase sola — border:0 sin !important
   no le ganaba. */
.bnsc-blog-search-input {
	flex: 1 1 auto;
	-webkit-appearance: none;
	appearance: none;
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent;
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	color: #5A6B8A;
	outline: none;
	box-shadow: none;
	padding: 10px 0;
}

.bnsc-blog-search-input:focus,
.bnsc-blog-search-input:focus-visible {
	border: 0 !important;
	outline: none;
	box-shadow: none;
}

.bnsc-blog-search-input::placeholder {
	color: #5A6B8A;
}

/* El navegador dibuja sus propios controles (lupa/tacha) para type="search" — se ocultan para
   quedarnos solo con el ícono propio del botón. */
.bnsc-blog-search-input::-webkit-search-decoration,
.bnsc-blog-search-input::-webkit-search-cancel-button,
.bnsc-blog-search-input::-webkit-search-results-button,
.bnsc-blog-search-input::-webkit-search-results-decoration {
	-webkit-appearance: none;
	appearance: none;
}

.bnsc-blog-search-btn,
.bnsc-blog-search-btn:hover,
.bnsc-blog-search-btn:focus,
.bnsc-blog-search-btn:active,
.bnsc-blog-search-btn:visited {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border: 0;
	background: transparent;
	color: #08543C;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-blog-pills-wrap {
	text-align: center;
	padding: 24px 24px 8px;
}

.bnsc-blog-pills {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
}

.bnsc-blog-pill {
	display: inline-block;
	background: #F6F6F6 !important;
	color: #5A6B8A !important;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 15px;
	text-decoration: none;
	padding: 12px 26px;
	border-radius: var(--bnsc-radius-control);
	border: 1px solid transparent;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.bnsc-blog-pill:hover {
	background: #E6EDEB !important;
	color: #08543C !important;
}

.bnsc-blog-pill.is-active {
	background: #E6EDEB !important;
	color: #08543C !important;
	border-color: #08543C;
}

.bnsc-blog-pill-extra {
	display: none;
}

.bnsc-blog-pills-wrap.is-expanded .bnsc-blog-pill-extra {
	display: inline-block;
}

.bnsc-blog-vermas-row {
	display: flex;
	align-items: center;
	gap: 16px;
	max-width: 720px;
	margin: 20px auto 0;
	padding: 0 24px;
}

.bnsc-blog-vermas-line {
	flex: 1 1 auto;
	height: 1px;
	background: #DDE3EA;
}

/* !important en bg/color: el theme trae un estilo genérico de botón con hover rosado que le ganaba
   por especificidad a estas reglas sin marcar. */
.bnsc-blog-pill-vermas,
.bnsc-blog-pill-vermas:hover,
.bnsc-blog-pill-vermas:focus,
.bnsc-blog-pill-vermas:active,
.bnsc-blog-pill-vermas:visited {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: #F6F6F6 !important;
	border: 0 !important;
	border-radius: var(--bnsc-radius-control);
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 14px;
	padding: 10px 20px;
	cursor: pointer;
	white-space: nowrap;
	outline: none;
	box-shadow: none;
}

.bnsc-blog-pill-vermas:hover {
	background: #E6EDEB !important;
}

.bnsc-blog-vermas-chevron {
	transition: transform 0.2s ease;
}

.bnsc-blog-pill-vermas.is-expanded .bnsc-blog-vermas-chevron {
	transform: rotate(180deg);
}

.bnsc-blog-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	padding: 0 24px;
}

/* "Otros posts que podrían interesarte" (plantilla 559, contenedor f890a61): el gutter lo da el relleno nativo de la sección
   (24px, "En caja"); sin esto se sumaban 24 + 24 por lado y en móvil la tarjeta quedaba en 246px de 390 (2026-10-04). */
.bnsc-blog-related-grid {
	padding: 0;
}

/* Fondo blanco del cuerpo de la card 557: desde 2026-10-04 es el control NATIVO del contenedor b14ad51 (antes se forzaba aquí
   con !important porque el contenedor seguía vinculado al color global surface_base #F6F6F6). El listado /blog/ mantiene su
   variante gris con la regla de contexto .bnsc-blog-main-grid más abajo. */
/* El item REAL de la grilla (align-items:stretch) es ".e-loop-item" (wrapper que genera el Loop Grid
   de Elementor, un nivel arriba de 170a170) -- confirmado midiendo el DOM: los 3 ".e-loop-item" de una
   fila SÍ quedan a la misma altura, pero 170a170 (display:flex de Elementor, sin height propio) no
   heredaba ese estirado y se quedaba en su alto de contenido natural. height:100% acá es lo que
   faltaba para que el estirado del grid llegue hasta adentro de la card. */
.elementor-557 .elementor-element.elementor-element-170a170 {
	height: 100% !important;
}

.elementor-557 .elementor-element.elementor-element-b14ad51 {
	/* 2026-09-24 (ajuste de diseño): alinear imagen/contenedor/botón entre cards de la misma fila --
	   el body (fecha+título+extracto+botón) no crecía para llenar la altura ya estirada por el grid
	   (align-items:stretch de .bnsc-blog-grid), así que el botón "Ir al artículo" quedaba a distinta
	   altura según cuánto texto tuviera el extracto. flex:1 lo hace crecer hasta ocupar el resto de la
	   card; min-height:0 evita que el contenido de texto largo le gane al flex-basis (bug clásico). */
	flex: 1 1 auto !important;
	min-height: 0 !important;
}

/* Botón "Ir al artículo" (c5a39f1): margin-top:auto lo empuja al fondo del body ya crecido de arriba,
   así queda a la misma altura en toda la fila sin importar cuánto texto tenga el extracto de al lado. */
.elementor-557 .elementor-element.elementor-element-c5a39f1 {
	margin-top: auto !important;
}

/* Título (edbee69): tope de 2 líneas -- antes títulos largos desalineaban la altura entre cards
   vecinas de la misma fila (una card con título de 1 línea vs otra de 3). */
.elementor-557 .elementor-element.elementor-element-edbee69 .elementor-heading-title {
	display: -webkit-box !important;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden !important;
}

/* Imagen destacada (179338d): la card fuente solo trae `width:100%` (alto natural según el aspect
   ratio real de cada foto subida). Detectado 2026-09-22 -- dos posts con fotos de distinta relación
   (800x534 vs 550x310) generaban cards de altura distinta en la misma fila del grid. Aspect ratio fijo
   + cover normaliza la altura de la imagen sin importar la foto que suba cada artículo. */
.elementor-557 .elementor-element.elementor-element-179338d img {
	aspect-ratio: 3 / 2 !important;
	object-fit: cover !important;
	height: auto !important;
}

/* Fecha (c2b0db8): verde de marca, peso 400 y sin mayúsculas son controles NATIVOS del widget desde 2026-10-04 (antes forzado aquí). */

/* Acordeón "Nested Accordion" de Elementor (Beneficios/Condiciones/Programa de lealtad en /tarjetas/,
   2026-09-23): además del borde propio del widget (control "content_border", ya desactivado en el JSON
   de las 65 instancias -- ver scripts de la sesión), el CSS nativo de Elementor
   (widget-nested-accordion.min.css) aplica un borde gris de FALLBACK al contenedor de contenido vía un
   selector `:where()` de especificidad cero (`--n-accordion-border-color`, ~#D5D8DC) -- queda expuesto
   igual aunque el control del widget esté vacío. Se quita sitewide, no hace falta !important porque
   :where() ya parte de especificidad 0. */
.e-n-accordion-item > .e-con {
	border: none;
}

/* Botón "Ir al artículo" (agregado 2026-09-18, scripts/add-blog-card-readmore-button.php): link de
   texto + chevron, no el botón "caja" del estándar sitewide -- se anulan radio/padding/borde/fondo
   heredados de la regla global .elementor-button (ver más abajo en el archivo).
   El widget button no tiene control propio `css_classes` (ese es específico del widget imagen) --
   usa el genérico `_css_classes` del tab Advanced, que va al div.elementor-element exterior, NO al
   <a class="elementor-button"> interno. Por eso el selector es descendiente, no compuesto. */
.bnsc-blog-readmore .elementor-button {
	background: transparent !important;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 0 !important;
	color: #08543C !important;
	/* Elementor trae `.elementor-button{fill:#fff}` de fábrica (pensado para ícono blanco sobre
	   botón sólido de color) -- fill es heredable en SVG, así que sin este override el chevron
	   queda blanco e invisible sobre esta card blanca. */
	fill: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	font-weight: 600;
}

.bnsc-blog-readmore .elementor-button-icon {
	color: #08543C;
	font-size: 12px;
}

.bnsc-blog-readmore:hover,
.bnsc-blog-readmore:hover .elementor-button-icon {
	color: #003B2E !important;
	fill: #003B2E !important;
}

@media (max-width: 1024px) {
	.bnsc-blog-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.bnsc-blog-grid {
		grid-template-columns: 1fr;
	}
	/* Listado /blog/: el gutter móvil lo da la sección (pase global móvil); sin esto se sumaban 24+24 (2026-10-04).
	   Solo el grid principal: el teaser del Home (bnsc-blog-latest-grid) no lleva el pase global y conserva su margen. */
	.bnsc-blog-main-grid {
		padding: 0;
	}
}

/* Variante angosta (ej. "Noticias que podrían interesarte" del Home): la grilla vive en una
   columna del ~52% del boxed, no en el ancho completo del listado de blog — 3 columnas ahí
   dejan cada card en ~180px y el texto se amontona. */
.bnsc-blog-latest-grid {
	grid-template-columns: repeat(2, 1fr);
}

/* Teaser del Home: la card completa del blog trae badge de categoría + extracto (correcto en
   /blog/), pero el diseño de "Noticias que podrían interesarte" del Figma es más minimal — solo
   fecha + título, sin badge ni extracto. No tocar la card compartida (557): ocultar acá nomás. */
.bnsc-blog-latest-grid .bnsc-card-badge,
.bnsc-blog-latest-grid .elementor-widget-text-editor {
	/* !important: la card 557 imprime su CSS en un <style> inline tardío (wp_head prio 20) con
	   la misma especificidad — sin esto gana por orden de aparición y el badge vuelve a mostrarse. */
	display: none !important;
}

/* 2026-09-24 (ajuste de diseño): teaser del Home demasiado alto/espaciado -- con badge+extracto ya
   ocultos arriba, quedaba el padding pensado para esa card completa (24/24/28 + 10px del wrapper
   fecha/badge) más el botón "Ir al artículo" (heredado del template 557, sin uso acá ya que el
   Figma de este teaser no lo pide) reservando alto de más. Se achica todo para una card compacta
   fecha+título nomás. */
.bnsc-blog-latest-grid .elementor-element-b14ad51 {
	padding: 16px 20px 16px !important;
}

.bnsc-blog-latest-grid .elementor-element-c5a39f1 {
	display: none !important;
}

/* La imagen (179338d) trae flex-grow:1 de fábrica (default de Elementor para widgets dentro de un
   container flex) y compite por espacio con el body (que también tiene flex:1 1 auto, ver regla
   de arriba para el alineado de fila del listado completo) dentro de la columna estirada a 100%
   por .elementor-element-170a170. Sin esto la imagen se infla por encima de su alto natural
   (aspect-ratio 3/2) robándole espacio al body, que termina con menos alto del que necesita su
   contenido (fecha+título 2 líneas) y el título queda cortado. Fijar la imagen a su alto natural
   deja que el body reciba el resto sin pelear por el espacio. */
/* El culpable real no era flex-grow (ya en 0) sino un height:100% que el widget de imagen de
   Elementor trae de fábrica (para que el object-fit:cover funcione a cualquier alto de
   contenedor) -- relativo al 100% del contenedor estirado por el grid (300px, altura del par
   imagen+body de la card completa /blog/), le robaba alto al body por más que no creciera vía
   flex. auto + aspect-ratio propio evita la dependencia circular con el alto estirado del grid
   (auto solo, sin aspect-ratio, dejaba que <a>/img caigan a su tamaño intrínseco real -- 800x533 --
   en vez de proporcional al ancho de la card). */
.bnsc-blog-latest-grid .elementor-element.elementor-element-179338d {
	height: auto !important;
	aspect-ratio: 3 / 2 !important;
	flex-grow: 0 !important;
	flex-shrink: 0 !important;
	overflow: hidden !important;
}

.bnsc-blog-latest-grid .elementor-element.elementor-element-179338d > a,
.bnsc-blog-latest-grid .elementor-element.elementor-element-179338d img {
	width: 100% !important;
	height: 100% !important;
}

/* 2026-09-24 (ajuste de diseño): en el listado /blog/ (bnsc-blog-main-grid) la card necesita
   distinguirse del fondo blanco de la página -- variante gris (era el default antes del cambio de
   fondo blanco del 2026-09-18, pensado para la card en general pero de paso afectaba también acá).
   Se restaura SOLO para el grid principal del listado; Home (bnsc-blog-latest-grid) y relacionados
   quedan blancos como estaban. Misma especificidad que la regla original (3 clases) -- gana por
   venir después en el archivo. */
.bnsc-blog-main-grid .elementor-element.elementor-element-b14ad51 {
	background-color: #F6F6F6 !important;
}

@media (max-width: 640px) {
	.bnsc-blog-latest-grid {
		grid-template-columns: 1fr;
	}
}

.bnsc-blog-grid-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin: 32px 0;
}

.bnsc-blog-grid-count {
	color: #7C8DB5;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	margin: 0;
}

.bnsc-blog-grid-load-more {
	display: inline-block;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-blog-grid-load-more:hover {
	background: #DCE4DF;
}

/* ---- Blog: categorías del artículo + compartir (shortcodes bnsc_blog_categories/bnsc_blog_share) ---- */
.bnsc-blog-cat-badges {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.bnsc-blog-cat-badge {
	display: inline-block;
	background: #E6EDEB;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 11px;
	letter-spacing: 0.5px;
	text-decoration: none;
	padding: 6px 14px;
	border-radius: 100px;
}

.bnsc-blog-share {
	display: flex;
	align-items: center;
	gap: 10px;
}

.bnsc-blog-share-label {
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #33475B;
}

.bnsc-blog-share-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	padding: 0; /* el <button> "Imprimir" heredaba el padding 8/16 del reset de Hello y el ícono quedaba en 0px (2026-10-04) */
	border: 0;
	border-radius: 50%;
	background: #E6EDEB;
	color: #08543C;
	cursor: pointer;
	text-decoration: none;
}

.bnsc-blog-share-btn:hover {
	background: #08543C;
	color: #FFFFFF;
}

/* ---- Card de Propiedad (Bienes Reposeídos): precio superpuesto sobre la imagen ---- */
.bnsc-prop-media {
	position: relative !important;
}

/* 2026-09-24 (ajuste de diseño): la card (template Elementor 579, id 8942df0) solo trae min-height:220px
   en vez de un height fijo -- un <img> con height:100% dentro de un contenedor con SOLO min-height
   nunca resuelve el porcentaje (spec: la propiedad "height" del padre queda en "auto"), así que cada
   foto cae a su alto intrínseco -- exactamente el bug ya documentado en ".bnsc-img-fill--cover-abs"
   más arriba, acá aplicado puntual por clase (esta card ya tiene clase propia, no hace falta ir por
   ID). position:absolute saca la imagen del flujo -- el contenedor cae limpio a sus 220px de
   min-height y la imagen los llena vía inset, sin importar la relación de aspecto real de la foto. */
.bnsc-prop-media img {
	position: absolute !important;
	inset: 0 !important;
}

.bnsc-prop-price {
	position: absolute !important;
	bottom: 16px !important;
	left: 16px !important;
	background: #E0F8DA !important;
	padding: 8px 18px !important;
	border-radius: 100px !important;
	width: fit-content !important;
	flex: 0 0 auto !important;
	z-index: 2;
}

/* El item REAL de la grilla (align-items:stretch) es ".e-loop-item" (wrapper del Loop Grid de
   Elementor), un nivel arriba de 99b700f -- confirmado midiendo el DOM (mismo hallazgo que en la card
   de blog): los ".e-loop-item" de una fila SÍ quedan iguales, pero 99b700f (display:flex, sin height
   propio) no heredaba ese estirado. height:100% acá es lo que faltaba para que llegue hasta adentro. */
.elementor-element-99b700f {
	height: 100% !important;
}

/* Cuerpo de la card (id 17947df, sin clase bnsc-* propia -- va por ID) y botón "Ver detalles"
   (id 395fc9a): mismo criterio que el body de blog de arriba -- flex:1 lo hace crecer para llenar la
   card ya estirada por .bnsc-bienes-grid (grid, align-items:stretch default), y margin-top:auto en el
   botón lo ancla al fondo sin importar cuánta descripción/cuántos stats (m2/recámaras/baños) tenga
   cada propiedad -- antes el botón quedaba a distinta altura entre las 3 cards de una misma fila. */
.elementor-element-17947df {
	flex: 1 1 auto !important;
	min-height: 0 !important;
}

.elementor-element-395fc9a {
	margin-top: auto !important;
}

/* ---- Bienes Reposeídos: grid del listado ---- */
.bnsc-bienes-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	padding: 0 24px;
}

@media (max-width: 1024px) {
	.bnsc-bienes-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	/* minmax(0,1fr): la columna no puede crecer al min-content de la card (fila de características) y desbordar la pantalla;
	   padding 0: el gutter de 24px ya lo da la sección (pase global móvil) — antes se sumaban 24+24 (2026-10-04). */
	.bnsc-bienes-grid {
		grid-template-columns: minmax(0, 1fr);
		padding: 0;
	}
}

.bnsc-bienes-grid-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin: 32px 0;
}

.bnsc-bienes-grid-count {
	color: #7C8DB5;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	margin: 0;
}

.bnsc-bienes-grid-load-more {
	display: inline-block;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-bienes-grid-load-more:hover {
	background: #DCE4DF;
}

.bnsc-bienes-grid-empty {
	text-align: center;
	color: #5A6B7B;
	font-family: 'Lato', sans-serif;
	padding: 48px 24px;
}

/* ---- Bienes Reposeídos: filtros de búsqueda avanzada ---- */
.bnsc-bienes-filtros {
	max-width: 1400px;
	margin: 0 auto;
	padding: 0 24px;
}

.bnsc-bienes-filtros-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	background: #F6F6F6;
	border-radius: 16px;
	padding: 20px 24px;
}

.bnsc-bienes-select-wrap {
	flex: 1 1 180px;
}

.bnsc-bienes-select {
	width: 100%;
	-webkit-appearance: none !important;
	appearance: none !important;
	border: 0 !important;
	border-radius: 100px !important;
	background: #FFFFFF !important;
	color: #33475B !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	padding: 12px 18px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2308543C' stroke-width='1.5' fill='none' fill-rule='evenodd'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 16px center;
	padding-right: 34px;
}

.bnsc-bienes-price-wrap {
	flex: 2 1 260px;
	display: flex;
	flex-direction: column;
	gap: 6px;
}

.bnsc-bienes-price-label {
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	color: #33475B;
}

.bnsc-bienes-price-range {
	position: relative;
	height: 24px;
}

.bnsc-bienes-price-range input[type="range"] {
	position: absolute;
	top: 8px;
	left: 0;
	width: 100%;
	margin: 0;
	-webkit-appearance: none !important;
	appearance: none !important;
	background: transparent;
	pointer-events: none;
}

.bnsc-bienes-price-range input[type="range"]::-webkit-slider-runnable-track {
	height: 4px;
	background: #DDE3EA;
	border-radius: 4px;
}

.bnsc-bienes-price-range input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none;
	pointer-events: auto;
	width: 16px;
	height: 16px;
	margin-top: -6px;
	border-radius: 50%;
	background: #08543C;
	border: 2px solid #FFFFFF;
	box-shadow: 0 1px 3px rgba(0,0,0,0.2);
	cursor: pointer;
}

.bnsc-bienes-price-range input[type="range"]::-moz-range-track {
	height: 4px;
	background: #DDE3EA;
	border-radius: 4px;
}

.bnsc-bienes-price-range input[type="range"]::-moz-range-thumb {
	pointer-events: auto;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #08543C;
	border: 2px solid #FFFFFF;
	box-shadow: 0 1px 3px rgba(0,0,0,0.2);
	cursor: pointer;
}

.bnsc-bienes-price-values {
	display: flex;
	justify-content: space-between;
	font-family: 'Lato', sans-serif;
	font-size: 12px;
	color: #7C8DB5;
}

.bnsc-bienes-limpiar,
.bnsc-bienes-limpiar:focus,
.bnsc-bienes-limpiar:active,
.bnsc-bienes-limpiar:visited {
	flex: 0 0 auto;
	background: #08543C !important;
	color: #FFFFFF !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	border: 0 !important;
	border-radius: 5px;
	padding: 13px 36px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-bienes-limpiar:hover {
	background: #0C3A28 !important;
}

/* ---- Bienes Reposeídos: galería de imágenes (detalle) ----
   height:100% + flex:1 en la imagen principal para que la galería se estire al mismo alto que la
   columna de info (el padre usa align-items:stretch, pero eso solo iguala el contenedor "Galería";
   el contenido propio del shortcode necesita heredar ese alto explícitamente). */
.bnsc-prop-galeria {
	display: flex;
	flex-direction: column;
	gap: 12px;
	height: 100%;
}

.bnsc-prop-galeria-main {
	position: relative;
	border-radius: 18px;
	overflow: hidden;
	background: #DDE3EA;
	min-height: 320px;
	max-height: 400px;
	flex: 1;
	display: flex;
}

.bnsc-prop-galeria-main-img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.bnsc-prop-galeria-arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: rgba(255,255,255,0.9);
	color: #08543C;
	border: 0;
	font-size: 20px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
}

.bnsc-prop-galeria-prev {
	left: 16px;
}

.bnsc-prop-galeria-next {
	right: 16px;
}

.bnsc-prop-galeria-thumbs {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

.bnsc-prop-galeria-thumb {
	width: 76px;
	height: 76px;
	object-fit: cover;
	border-radius: 10px;
	cursor: pointer;
	opacity: 0.6;
	border: 2px solid transparent;
	transition: opacity 0.15s ease, border-color 0.15s ease;
}

.bnsc-prop-galeria-thumb:hover {
	opacity: 0.85;
}

.bnsc-prop-galeria-thumb.is-active {
	opacity: 1;
	border-color: #08543C;
}

/* ---- Bienes Reposeídos: fila de stats del detalle (fondo #F6F6F6) ---- */
.bnsc-prop-stats-row {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 20px 32px;
	background: #F6F6F6;
	border-radius: 16px;
	padding: 20px 32px;
}

@media (max-width: 640px) {
	.bnsc-prop-stats-row {
		justify-content: flex-start;
		gap: 16px 24px;
		padding: 16px 20px;
	}
}

.bnsc-prop-stat {
	display: flex;
	align-items: center;
	gap: 10px;
}

.bnsc-prop-stat-icon {
	width: 20px;
	height: 20px;
	object-fit: contain;
}

.bnsc-prop-stat-text {
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #33475B;
	white-space: nowrap;
}

/* ---- Bienes Reposeídos: acordeones (Beneficios/Ubicación/Condiciones/Contacto) ---- */
.bnsc-prop-acordeon {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.bnsc-prop-acordeon-item {
	background: #F6F6F6;
	border-radius: 14px;
	overflow: hidden;
}

.bnsc-prop-acordeon-header,
.bnsc-prop-acordeon-header:hover,
.bnsc-prop-acordeon-header:focus,
.bnsc-prop-acordeon-header:active,
.bnsc-prop-acordeon-header:visited {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	background: transparent !important;
	border: 0 !important;
	color: #33475B !important;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 16px;
	padding: 20px 24px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	text-align: left;
}

.bnsc-prop-acordeon-chevron {
	flex: 0 0 auto;
	transition: transform 0.2s ease;
	color: #33475B;
}

.bnsc-prop-acordeon-item.is-open .bnsc-prop-acordeon-chevron {
	transform: rotate(180deg);
}

.bnsc-prop-acordeon-body {
	max-height: 0;
	overflow: hidden;
	transition: max-height 0.25s ease;
}

/* 900px (antes 600px) para que el panel "Ubicación" (texto + dirección + mapa embebido) no quede
   recortado al abrir — el resto de los paneles son solo texto y les sobra margen igual. */
.bnsc-prop-acordeon-item.is-open .bnsc-prop-acordeon-body {
	max-height: 900px;
}

.bnsc-prop-acordeon-body-inner {
	padding: 0 24px 20px;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #5A6B7B;
	line-height: 1.6;
}

.bnsc-prop-direccion {
	margin: 0 0 14px;
}

.bnsc-prop-direccion strong {
	color: #33475B;
}

/* Iframe de OpenStreetMap embebido (sin API key) — a diferencia del embed simple de Google, permite
   mostrar solo el marker del punto sin todos los POI de alrededor encima. Aspect-ratio en vez de alto
   fijo para que se comporte bien en cualquier ancho de columna. */
.bnsc-prop-mapa {
	margin-top: 14px;
	border-radius: 12px;
	overflow: hidden;
	aspect-ratio: 16 / 9;
}

.bnsc-prop-mapa iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.bnsc-prop-mapa-link,
.bnsc-prop-mapa-link:hover,
.bnsc-prop-mapa-link:focus,
.bnsc-prop-mapa-link:visited {
	display: inline-block;
	margin-top: 10px;
	color: #08543C !important;
	font-weight: 700;
	font-size: 14px;
	text-decoration: none !important;
}

.bnsc-prop-mapa-link:hover {
	text-decoration: underline !important;
}

/* ---- Bienes Reposeídos: precio en badge en la ficha de detalle ---- */
.bnsc-prop-detail-price {
	background: #E0F8DA !important;
	width: fit-content !important;
	flex: 0 0 auto !important;
	border-radius: 100px !important;
	padding: 10px 24px !important;
}

.bnsc-prop-detail-price .elementor-shortcode {
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 18px;
	color: #08543C;
}

/* ---- Bienes Reposeídos: borde divisor arriba de los botones (ficha de detalle) ---- */
.bnsc-prop-botones-divider {
	border-top: 1px solid #DDE3EA !important;
	padding-top: 20px !important;
	margin-top: 6px !important;
}

/* ---- Bienes Reposeídos: columna de galería a la misma altura que la columna de info ---- */
.bnsc-prop-galeria-col,
.bnsc-prop-galeria-col .elementor-widget-shortcode,
.bnsc-prop-galeria-col .elementor-widget-shortcode .elementor-widget-container {
	height: 100% !important;
}

/* En tablet/mobile "Galería + info" pasa a column (apilado) — ahí ya no hay una fila que igualar en
   alto, así que se libera para que la galería tome su alto natural. */
@media (max-width: 1024px) {
	.bnsc-prop-galeria-col,
	.bnsc-prop-galeria-col .elementor-widget-shortcode,
	.bnsc-prop-galeria-col .elementor-widget-shortcode .elementor-widget-container {
		height: auto !important;
	}

	.bnsc-prop-info-col {
		justify-content: flex-start !important;
		gap: 20px !important;
	}
}

/* ---- Bienes Reposeídos: fila de stats de la card (m2/recámaras/baños) forzada horizontal ----
   Se fuerza por clase propia porque el flex-direction:row de Elementor no se estaba aplicando de
   forma confiable acá (mismo tipo de problema ya visto con align-self en el badge de Promociones). */
/* flex-wrap:nowrap a propósito: con "wrap", en cards angostas (mobile/columna única) los 3 stats no
   entraban en una sola línea y cada uno terminaba solo en su propia fila — se veía "vertical" aunque
   flex-direction:row estuviera bien aplicado. Con nowrap + textos/íconos más chicos entran los 3
   siempre en una fila; si en una pantalla extrema no entrara, el texto se recorta con "…" (ver abajo)
   en vez de volver a apilarse. */
.bnsc-prop-stat-row {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 8px !important;
	padding: 14px 16px !important;
}

.bnsc-prop-stat-item {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	flex: 1 1 0 !important;
	gap: 5px;
	min-width: 0;
}

.bnsc-prop-stat-item .elementor-widget-image {
	display: block !important;
	width: auto !important;
	max-width: none !important;
	flex: 0 0 auto !important;
}

.bnsc-prop-stat-item .elementor-widget-heading {
	display: block !important;
	width: auto !important;
	max-width: none !important;
	flex: 0 1 auto !important;
	min-width: 0;
}

.bnsc-prop-stat-item .elementor-widget-image .elementor-widget-container,
.bnsc-prop-stat-item .elementor-widget-heading .elementor-widget-container {
	display: block !important;
	width: auto !important;
}

.bnsc-prop-stat-item img {
	display: block !important;
	width: 15px !important;
	height: 15px !important;
	max-width: none !important;
}

.bnsc-prop-stat-item .elementor-heading-title {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	font-size: 12px !important;
}

/* ---- Preguntas Frecuentes: buscador (mismo criterio minimalista del buscador de Blog) ---- */
.bnsc-faq-search {
	display: flex;
	align-items: center;
	gap: 12px;
	background: #F6F6F6 !important;
	border-radius: var(--bnsc-radius-control);
	padding: 6px 8px 6px 20px;
	max-width: 640px;
	margin: 0 auto;
}

.bnsc-faq-search-input,
.bnsc-faq-search-input:focus {
	flex: 1 1 auto;
	border: 0 !important;
	background: transparent !important;
	outline: none;
	box-shadow: none;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #08543C;
	-webkit-appearance: none !important;
}

.bnsc-faq-search-input::-webkit-search-cancel-button,
.bnsc-faq-search-input::-webkit-search-decoration {
	-webkit-appearance: none;
}

.bnsc-faq-search-btn,
.bnsc-faq-search-btn:focus,
.bnsc-faq-search-btn:active,
.bnsc-faq-search-btn:visited {
	flex: 0 0 auto;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	background: #08543C !important;
	color: #FFFFFF !important;
	border: 0 !important;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-faq-search-btn:hover {
	background: #064330 !important;
}

/* ---- Preguntas Frecuentes: pills de categoría ---- */
.bnsc-faq-pills-wrap {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
}

.bnsc-faq-pills {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
}

.bnsc-faq-pill,
.bnsc-faq-pill:hover,
.bnsc-faq-pill:focus,
.bnsc-faq-pill:active,
.bnsc-faq-pill:visited {
	display: inline-block;
	background: #E7ECE9 !important;
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	text-decoration: none !important;
	padding: 10px 20px;
	border-radius: var(--bnsc-radius-control);
	border: 0 !important;
	outline: none;
	box-shadow: none;
}

.bnsc-faq-pill.is-active {
	background: #08543C !important;
	color: #FFFFFF !important;
}

.bnsc-faq-pill-extra {
	display: none;
}

.bnsc-faq-pills-wrap.is-expanded .bnsc-faq-pill-extra {
	display: inline-block;
}

.bnsc-faq-vermas-row {
	display: flex;
	align-items: center;
	gap: 14px;
	width: 100%;
	max-width: 340px;
}

.bnsc-faq-vermas-line {
	flex: 1 1 auto;
	height: 1px;
	background: #D3DED8;
}

.bnsc-faq-pill-vermas,
.bnsc-faq-pill-vermas:hover,
.bnsc-faq-pill-vermas:focus,
.bnsc-faq-pill-vermas:active,
.bnsc-faq-pill-vermas:visited {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 8px;
	background: transparent !important;
	border: 0 !important;
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-faq-pill-vermas.is-expanded .bnsc-faq-vermas-chevron {
	transform: rotate(180deg);
}

/* ---- Preguntas Frecuentes: grid de acordeones (2 columnas) ---- */
.bnsc-faq-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}

@media (max-width: 768px) {
	.bnsc-faq-grid {
		grid-template-columns: 1fr;
	}
}

.bnsc-faq-item {
	background: #E7ECE9;
	border-radius: 14px;
	overflow: hidden;
	align-self: start;
}

.bnsc-faq-item-header,
.bnsc-faq-item-header:hover,
.bnsc-faq-item-header:focus,
.bnsc-faq-item-header:active,
.bnsc-faq-item-header:visited {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	background: transparent !important;
	border: 0 !important;
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 15px;
	line-height: 1.4;
	padding: 18px 20px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	text-align: left;
}

.bnsc-faq-item-chevron {
	flex: 0 0 auto;
	transition: transform 0.2s ease;
	color: #08543C;
}

.bnsc-faq-item.is-open .bnsc-faq-item-chevron {
	transform: rotate(180deg);
}

.bnsc-faq-item-body {
	max-height: 0;
	overflow: hidden;
	transition: max-height 0.25s ease;
}

.bnsc-faq-item.is-open .bnsc-faq-item-body {
	max-height: 2500px;
}

.bnsc-faq-item-body-inner {
	padding: 0 20px 20px;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #5A6B7B;
	line-height: 1.6;
}

.bnsc-faq-grid-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin: 32px 0;
}

.bnsc-faq-grid-count {
	color: #5E7D71;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	margin: 0;
}

.bnsc-faq-grid-load-more {
	display: inline-block;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-faq-grid-load-more:hover {
	background: #D3DED8;
}

.bnsc-faq-grid-empty {
	text-align: center;
	color: #5A6B7B;
	font-family: 'Lato', sans-serif;
	padding: 48px 24px;
}

/* Toggle de FAQ del Home (widget "toggle" de Elementor, clase bnsc-faq) -- ese widget no tiene
   control propio de border-radius (no genera CSS), y por defecto le queda un borde/sombra en la
   parte inferior de la caja -- se fuerza a limpio + esquinas 5px redondeadas acá. */
.bnsc-faq .elementor-tab-title {
	border: none !important;
	box-shadow: none !important;
	border-radius: 5px;
	overflow: hidden;
}

.bnsc-faq .elementor-tab-content {
	border: none !important;
	box-shadow: none !important;
	border-radius: 0 0 5px 5px;
}

/* Menos espaciado entre las píldoras del grid de FAQ del Home (2x2). Estructura de Elementor:
   cada toggle está envuelto en su propio .e-con con padding 10px, y esos 4 wrappers viven en un
   contenedor grid con gap 24px -> entre dos píldoras quedaban 10 + 24 + 10 = 44px. Quitamos el
   padding del wrapper y bajamos el gap del grid para juntarlas. */
.e-con:has(> .bnsc-faq.elementor-widget-toggle) {
	padding: 0 !important;
	gap: 0 !important;
}
.e-con:has(> .e-con > .bnsc-faq.elementor-widget-toggle) {
	gap: 16px !important;
}
.bnsc-faq.elementor-widget-toggle,
.bnsc-faq.elementor-widget-toggle .elementor-toggle-item {
	margin-bottom: 0 !important;
}

/* ---- Sucursales: filtros (buscador + 3 selects + limpiar) ---- */
.bnsc-suc-filtros {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	background: #F6F6F6;
	border-radius: 16px;
	padding: 20px 24px;
}

.bnsc-suc-filtros-label {
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 14px;
	color: #33475B;
	flex: 0 0 auto;
}

.bnsc-suc-search-wrap {
	position: relative;
	flex: 1 1 220px;
}

.bnsc-suc-search-input.bnsc-suc-search-input {
	width: 100%;
	border: 0 !important;
	border-radius: var(--bnsc-radius-control);
	background: #FFFFFF !important;
	color: #33475B !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	padding: 12px 40px 12px 18px;
	outline: none;
	box-shadow: none;
	-webkit-appearance: none !important;
}

.bnsc-suc-search-input::-webkit-search-cancel-button {
	-webkit-appearance: none;
}

.bnsc-suc-search-icon {
	position: absolute;
	right: 16px;
	top: 50%;
	transform: translateY(-50%);
	color: #08543C;
	pointer-events: none;
}

.bnsc-suc-select {
	flex: 1 1 170px;
	-webkit-appearance: none !important;
	appearance: none !important;
	border: 0 !important;
	border-radius: var(--bnsc-radius-control);
	background: #FFFFFF !important;
	color: #33475B !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	padding: 12px 34px 12px 18px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2308543C' stroke-width='1.5' fill='none' fill-rule='evenodd'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 16px center;
}

.bnsc-suc-limpiar,
.bnsc-suc-limpiar:focus,
.bnsc-suc-limpiar:active,
.bnsc-suc-limpiar:visited {
	flex: 0 0 auto;
	background: #08543C !important;
	color: #FFFFFF !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	border: 0 !important;
	border-radius: 5px;
	padding: 13px 36px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-suc-limpiar:hover {
	background: #0C3A28 !important;
}

/* ---- Sucursales: grid de cards ---- */
.bnsc-suc-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

@media (max-width: 1024px) {
	.bnsc-suc-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
	.bnsc-suc-grid { grid-template-columns: 1fr; }
}

.bnsc-suc-card {
	display: flex;
	flex-direction: column;
	gap: 10px;
	background: #F6F6F6;
	border-radius: 16px;
	padding: 24px;
}

.bnsc-suc-badge {
	display: inline-block;
	width: fit-content;
	background: #FFFFFF;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 11px;
	letter-spacing: 0.02em;
	padding: 5px 14px;
	border-radius: 100px;
	border: 1px solid transparent; /* reservado: iguala alto entre variantes con/sin borde real */
}

/* Color del badge según el tipo de punto de atención (clase inyectada por el shortcode). */
.bnsc-suc-badge--xperience {
	background: #FFFFFF;
	color: #0A4B36;
	border-color: #E2EAE8;
}

.bnsc-suc-badge--sucursal {
	background: #D3DDF4;
	color: #122945;
}

.bnsc-suc-badge--cajero {
	background: #DCF8D7;
	color: #0A4B36;
}

.bnsc-suc-title {
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 22px;
	color: #08543C;
	margin: 0;
	line-height: 1.25;
}

.bnsc-suc-region {
	display: flex;
	align-items: center;
	gap: 6px;
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	color: #5A6B7B;
	margin: 0;
}

.bnsc-suc-region svg {
	color: #08543C;
	flex: 0 0 auto;
}

.bnsc-suc-direccion {
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	color: #5A6B7B;
	line-height: 1.5;
	margin: 0;
}

.bnsc-suc-servicios {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.bnsc-suc-servicio-tag {
	background: #FFFFFF;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-size: 12px;
	font-weight: 700;
	padding: 5px 12px;
	border-radius: 100px;
	border: 1px solid #DCE6E0;
}

.bnsc-suc-horarios {
	display: flex;
	gap: 32px;
	padding-top: 4px;
}

.bnsc-suc-horario-item {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.bnsc-suc-horario-label {
	font-family: 'Lato', sans-serif;
	font-size: 10px;
	font-weight: 700;
	color: #8A99A8;
	letter-spacing: 0.03em;
}

.bnsc-suc-horario-valor {
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	font-weight: 700;
	color: #33475B;
}

.bnsc-suc-mapa-btn,
.bnsc-suc-mapa-btn:hover,
.bnsc-suc-mapa-btn:focus,
.bnsc-suc-mapa-btn:visited {
	display: inline-block;
	width: fit-content;
	background: #08543C !important;
	color: #FFFFFF !important;
	text-decoration: none !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	padding: 13px 36px;
	border-radius: 5px;
	/* auto: empuja el botón al fondo de la card. Con el grid estirando todas las cards de la fila a
	   la misma altura, esto deja el "Ver en mapa" alineado a la misma altura en todas. */
	margin-top: auto;
}

.bnsc-suc-mapa-btn:hover {
	background: #0C3A28 !important;
}

.bnsc-suc-grid-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin: 32px 0;
}

.bnsc-suc-grid-count {
	color: #7C8DB5;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	margin: 0;
}

.bnsc-suc-grid-load-more {
	display: inline-block;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-suc-grid-load-more:hover {
	background: #DCE4DF;
}

.bnsc-suc-grid-empty {
	text-align: center;
	color: #5A6B7B;
	font-family: 'Lato', sans-serif;
	padding: 48px 24px;
}

/* ---- Fila de Contacto (Visítanos / Chatea con DANI / Por teléfono) — reutilizable ----
   Forzado por clase propia desde el inicio: ya nos pasó más de una vez que flex-direction:row de
   Elementor no se aplica de forma confiable dentro de containers anidados. */
/* nowrap a propósito: con "wrap", en viewports angostos (pero no-mobile) los 3 items no entraban
   en una sola línea y cada uno terminaba en su propia fila — mismo problema ya visto y resuelto en
   la fila de stats de Bienes Raíces. Con nowrap siempre quedan en una fila; el texto se recorta con
   "…" si hiciera falta en vez de volver a apilarse. Solo en mobile (<560px) se libera a columna. */
.bnsc-fc-row {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 20px !important;
	margin-top: 40px !important;
}

@media (max-width: 560px) {
	.bnsc-fc-row {
		flex-direction: column !important;
		align-items: flex-start !important;
		gap: 24px !important;
	}
}

.bnsc-fc-item {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: nowrap !important;
	align-items: center !important;
	flex: 1 1 0 !important;
	min-width: 0;
	gap: 12px !important;
}

.bnsc-fc-item .elementor-widget-image {
	flex: 0 0 auto !important;
}

.bnsc-fc-icon img {
	width: 44px !important;
	height: 44px !important;
	display: block !important;
}

@media (max-width: 560px) {
	.bnsc-fc-icon img {
		width: 32px !important;
		height: 32px !important;
	}
}

.bnsc-fc-textos {
	display: flex !important;
	flex-direction: column !important;
	gap: 2px !important;
	min-width: 0;
}

.bnsc-fc-textos .elementor-heading-title {
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* ---- MóvilTap / Requisitos: toggle "Ver más / Ver menos" — botón sentado sobre la línea divisoria.
   Componente COMPARTIDO (banesco-shortcode-moviltap.php, -requisitos-extra.php, -requisitos.php) —
   un solo lugar de estilo, se refleja en las 3 páginas/módulos que lo usan. */
.bnsc-mt-extra-wrap {
	width: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
}

/* fila botón+línea: la línea queda centrada verticalmente DETRÁS del botón (patrón "divisor con texto encima") */
.bnsc-mt-extra-toggle-row {
	position: relative;
	width: 100%;
	display: flex;
	justify-content: center;
	align-items: center;
	margin-bottom: 28px;
}

.bnsc-mt-extra-toggle,
.bnsc-mt-extra-toggle:focus,
.bnsc-mt-extra-toggle:active,
.bnsc-mt-extra-toggle:visited {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: 8px;
	background: var(--bnsc-req-color, #0C3A28) !important;
	color: #FFFFFF !important;
	border: 1px solid rgba(255, 255, 255, 0.55) !important;
	border-radius: var(--bnsc-radius-control);
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 14px;
	padding: 9px 22px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-mt-extra-toggle:hover {
	background: var(--bnsc-req-color-dark, #092D1F) !important;
}

.bnsc-mt-extra-toggle .bnsc-mt-extra-chevron {
	transition: transform 0.2s ease;
}

.bnsc-mt-extra-toggle.is-open .bnsc-mt-extra-chevron {
	transform: rotate(180deg);
}

.bnsc-mt-extra-divider {
	position: absolute;
	top: 50%;
	left: 0;
	right: 0;
	transform: translateY(-50%);
	max-width: 700px;
	margin: 0 auto;
	height: 1px;
	background: rgba(255,255,255,0.2);
	z-index: 0;
}

.bnsc-mt-extra-body {
	max-height: 700px;
	overflow: hidden;
	transition: max-height 0.25s ease;
	width: 100%;
}

.bnsc-mt-extra-wrap.is-collapsed .bnsc-mt-extra-toggle-row {
	margin-bottom: 0;
}

.bnsc-mt-extra-wrap.is-collapsed .bnsc-mt-extra-body {
	max-height: 0;
}

.bnsc-mt-extra-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
	text-align: center;
}

.bnsc-mt-extra-list li {
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #C7D6CE;
	position: relative;
	padding-left: 0;
}

.bnsc-mt-extra-list li::before {
	content: "• ";
}

/* ---- Videoteca: buscador ---- */
.bnsc-vt-search {
	display: flex;
	align-items: center;
	gap: 12px;
	background: #F6F6F6 !important;
	border-radius: var(--bnsc-radius-control);
	padding: 6px 8px 6px 20px;
	max-width: 640px;
	margin: 0 auto;
}

.bnsc-vt-search-input,
.bnsc-vt-search-input:focus {
	flex: 1 1 auto;
	border: 0 !important;
	background: transparent !important;
	outline: none;
	box-shadow: none;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #08543C;
	-webkit-appearance: none !important;
}

.bnsc-vt-search-input::-webkit-search-cancel-button {
	-webkit-appearance: none;
}

.bnsc-vt-search-btn,
.bnsc-vt-search-btn:focus,
.bnsc-vt-search-btn:active,
.bnsc-vt-search-btn:visited {
	flex: 0 0 auto;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	background: #08543C !important;
	color: #FFFFFF !important;
	border: 0 !important;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	outline: none;
	box-shadow: none;
}

.bnsc-vt-search-btn:hover {
	background: #0C3A28 !important;
}

/* ---- Videoteca: pills estilo radio (círculo + label) ---- */
.bnsc-vt-pills {
	display: flex !important;
	flex-direction: row !important;
	flex-wrap: wrap !important;
	justify-content: center !important;
	gap: 10px !important;
}

.bnsc-vt-pill,
.bnsc-vt-pill:hover,
.bnsc-vt-pill:focus,
.bnsc-vt-pill:active,
.bnsc-vt-pill:visited {
	display: flex !important;
	align-items: center;
	gap: 8px;
	background: #F6F6F6 !important;
	color: #33475B !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	text-decoration: none !important;
	padding: 9px 18px;
	border-radius: var(--bnsc-radius-control);
	border: 0 !important;
	outline: none;
	box-shadow: none;
}

.bnsc-vt-pill-radio {
	flex: 0 0 auto;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 1.5px solid #B7C2CE;
	background: #FFFFFF;
	position: relative;
}

.bnsc-vt-pill.is-active {
	background: #E7ECE9 !important;
	color: #08543C !important;
}

.bnsc-vt-pill.is-active .bnsc-vt-pill-radio {
	border-color: #08543C;
	background: #08543C;
}

.bnsc-vt-pill.is-active .bnsc-vt-pill-radio::after {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #FFFFFF;
}

/* ---- Videoteca: grid de cards de video ---- */
.bnsc-vt-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

@media (max-width: 1024px) {
	.bnsc-vt-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 640px) {
	.bnsc-vt-grid { grid-template-columns: 1fr; }
}

.bnsc-vt-card {
	display: flex;
	flex-direction: column;
	background: #F6F6F6;
	border-radius: 16px;
	overflow: hidden;
}

.bnsc-vt-thumb-wrap {
	position: relative;
	display: block;
	background: #D7DEE4;
	aspect-ratio: 16 / 10;
	overflow: hidden;
}

.bnsc-vt-thumb {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.bnsc-vt-play {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: rgba(255,255,255,0.92);
	color: #08543C;
	display: flex;
	align-items: center;
	justify-content: center;
	padding-left: 3px;
}

.bnsc-vt-duracion {
	position: absolute;
	top: 12px;
	left: 12px;
	display: flex;
	align-items: center;
	gap: 5px;
	background: rgba(0,0,0,0.55);
	color: #FFFFFF;
	font-family: 'Lato', sans-serif;
	font-size: 11px;
	padding: 4px 10px;
	border-radius: 100px;
}

.bnsc-vt-body {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
	padding: 18px 20px 20px;
}

.bnsc-vt-badge {
	display: inline-block;
	width: fit-content;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 10px;
	letter-spacing: 0.02em;
	padding: 5px 12px;
	border-radius: 100px;
}

.bnsc-vt-title {
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 17px;
	color: #08543C;
	margin: 0;
	line-height: 1.3;
}

.bnsc-vt-youtube-btn,
.bnsc-vt-youtube-btn:hover,
.bnsc-vt-youtube-btn:focus,
.bnsc-vt-youtube-btn:visited {
	display: flex;
	align-items: center;
	gap: 8px;
	width: fit-content;
	background: #08543C !important;
	color: #FFFFFF !important;
	text-decoration: none !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	padding: 13px 36px;
	border-radius: 5px;
	margin-top: 4px;
}

.bnsc-vt-youtube-btn:hover {
	background: #0C3A28 !important;
}

.bnsc-vt-grid-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin: 32px 0;
}

.bnsc-vt-grid-count {
	color: #7C8DB5;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	margin: 0;
}

.bnsc-vt-grid-load-more {
	display: inline-block;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-vt-grid-load-more:hover {
	background: #DCE4DF;
}

.bnsc-vt-grid-empty {
	text-align: center;
	color: #5A6B7B;
	font-family: 'Lato', sans-serif;
	padding: 48px 24px;
}

/* ---- Queremos Escucharte: acordeones de ancho completo ---- */
.bnsc-qe-acordeon {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
}

.bnsc-qe-item {
	background: #E7ECE9;
	border-radius: 14px;
	overflow: hidden;
}

.bnsc-qe-item-header,
.bnsc-qe-item-header:hover,
.bnsc-qe-item-header:focus,
.bnsc-qe-item-header:active,
.bnsc-qe-item-header:visited {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	background: transparent !important;
	border: 0 !important;
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 16px;
	padding: 22px 28px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	text-align: left;
}

.bnsc-qe-item-chevron {
	flex: 0 0 auto;
	transition: transform 0.2s ease;
	color: #08543C;
}

.bnsc-qe-item.is-open .bnsc-qe-item-chevron {
	transform: rotate(180deg);
}

.bnsc-qe-item-body {
	max-height: 0;
	overflow: hidden;
	transition: max-height 0.25s ease;
}

.bnsc-qe-item.is-open .bnsc-qe-item-body {
	max-height: 2500px;
}

.bnsc-qe-item-body-inner {
	padding: 0 28px 24px;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #5A6B7B;
	line-height: 1.6;
}

.bnsc-qe-item-body-inner p {
	margin: 0;
}

/* Padding vertical mínimo GARANTIZADO en la sección que envuelve el acordeón FAQ compartido (reporte
   2026-09-27, mismo criterio ya usado para .bnsc-info-portrait más arriba): auditadas las 10 páginas que
   usan este componente (shortcodes bnsc_acordeon / bnsc_faq_verde) -- 6 no tenían ningún padding vertical
   seteado en la sección que lo envuelve (Cuenta Simplificada Internacional, Cuenta Ahorros Internacional,
   Préstamo Goleador, Canje de Puntos, Capital Humano, Somos Banesco Panamá), quedando pegado al contenido
   de arriba/abajo. max() no reduce el padding de las otras 4 que ya traen uno decente (56-64px), solo sube
   a 48px las 6 que están en 0. */
.e-con:has(.bnsc-faqg-acordeon) > .e-con-inner {
	padding-block-start: max(var(--padding-block-start, 0px), 48px) !important;
	padding-block-end: max(var(--padding-block-end, 0px), 48px) !important;
}

/* ---- FAQ verde: mismo layout/padding que bnsc-qe-*, fondo verde claro del sitio (#E7ECE9) ---- */
.bnsc-faqg-acordeon {
	display: flex;
	flex-direction: column;
	gap: 16px;
	width: 100%;
}

.bnsc-faqg-item {
	background: #E7ECE9;
	border-radius: 14px;
	overflow: hidden;
}

.bnsc-faqg-item-header,
.bnsc-faqg-item-header:hover,
.bnsc-faqg-item-header:focus,
.bnsc-faqg-item-header:active,
.bnsc-faqg-item-header:visited {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	background: transparent !important;
	border: 0 !important;
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 16px;
	padding: 22px 28px;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	text-align: left;
}

.bnsc-faqg-item-chevron {
	flex: 0 0 auto;
	transition: transform 0.2s ease;
	color: #08543C;
}

.bnsc-faqg-item.is-open .bnsc-faqg-item-chevron {
	transform: rotate(180deg);
}

.bnsc-faqg-item-body {
	max-height: 0;
	overflow: hidden;
	transition: max-height 0.25s ease;
}

.bnsc-faqg-item.is-open .bnsc-faqg-item-body {
	max-height: 2500px;
}

.bnsc-faqg-item-body-inner {
	padding: 0 28px 24px;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #5A6B7B;
	line-height: 1.6;
}

.bnsc-faqg-item-body-inner p {
	margin: 0;
}

/* ---- Preguntas que se cortaban (2026-10-02): los encabezados de los 3 módulos de preguntas son <button> y el
   reset.css de Hello Elementor les pone white-space:nowrap a todos los botones -- la pregunta no podía bajar de
   línea y se cortaba contra el borde (en móvil 44 preguntas en 11 páginas; la flecha quedaba fuera de la vista).
   Se permite el salto de línea, se parten palabras muy largas solo si no entran, y se reserva un espacio fijo
   entre texto y flecha (la flecha no se encoge). */
.bnsc-faq-item-header,
.bnsc-faqg-item-header,
.bnsc-qe-item-header {
	white-space: normal !important;
	overflow-wrap: anywhere;
	gap: 16px;
}

.bnsc-faq-item-chevron,
.bnsc-faqg-item-chevron,
.bnsc-qe-item-chevron {
	flex-shrink: 0 !important;
}

/* ---- Variante azul (§15 paleta navy) -- opt-in, no toca el default verde de arriba ---- */
.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item {
	background: #E7EBEF;
}

.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item-header,
.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item-header:hover,
.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item-header:focus,
.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item-header:active,
.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item-header:visited,
.bnsc-faqg-acordeon.is-azul .bnsc-faqg-item-chevron {
	color: #173358;
}

/* ---- Formulario Pre-aprobado (widget nativo e-form de Elementor) — estilo del sitio ---- */
.e-form-label {
	display: block;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	font-weight: 700;
	color: #33475B;
	margin-bottom: 6px;
}

.e-form-input-base.e-form-input-base,
.e-form-textarea-base.e-form-textarea-base {
	width: 100%;
	border: 1px solid #DDE3EA !important;
	border-radius: var(--bnsc-radius-control);
	padding: 14px 16px !important;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #33475B;
	margin-bottom: 22px;
	box-sizing: border-box;
}

.e-form-input-base:focus,
.e-form-textarea-base:focus {
	outline: none;
	border-color: #08543C !important;
}

.e-form-submit-button-base {
	background: #08543C !important;
	color: #FFFFFF !important;
	border: 0 !important;
	border-radius: 5px !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	padding: 13px 36px !important;
	cursor: pointer;
}

.e-form-success-message-base,
.e-form-error-message-base {
	display: none;
}

/* ---- Requisitos (CPT bnsc_requisito): módulo full-bleed con tabs + features + toggle ---- */
.bnsc-req-wrap {
	width: 100%;
	padding: 60px 0;
}

.bnsc-req-heading {
	color: #FFFFFF;
	text-align: center;
	font-family: 'Poppins', sans-serif;
	font-size: 34px;
	font-style: normal;
	font-weight: 300;
	line-height: 1.1;
	margin: 0 0 56px;
}

/* bajada opcional debajo del título (bnsc_req_intro) — margin-top negativo para compensar el
   margin-bottom:56px del heading sin tener que tocar esa regla (la usan ~50 módulos sin bajada). */
.bnsc-req-intro {
	color: #C7D6CE;
	text-align: center;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	line-height: 1.6;
	max-width: 700px;
	margin: -36px auto 40px;
}

.bnsc-req-tabs {
	display: flex;
	flex-direction: row;
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 40px;
}

.bnsc-req-tabs .bnsc-req-tab {
	background: transparent;
	color: #FFFFFF;
	border: 1px solid #FFFFFF !important;
	border-radius: var(--bnsc-radius-control);
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 14px;
	padding: 12px 26px;
	cursor: pointer;
	outline: none;
	/* 2026-10-05: es un <button> y el reset.css de Hello pone white-space:nowrap a todo botón — en móvil las
	   etiquetas largas ("Empresa privada, extranjero y gobierno a…", "Requisitos para empresa panameña sin aviso
	   de operaciones") desbordaban la pantalla (página de 392-417px con franja y scroll horizontal). */
	white-space: normal !important;
	max-width: 100%;
	overflow-wrap: anywhere;
}

/* activo = verde oscuro con texto blanco (los inactivos quedan transparentes con borde blanco) */
.bnsc-req-tabs .bnsc-req-tab.is-active {
	background: var(--bnsc-req-color-dark, #003B2E);
	color: #FFFFFF;
	border-color: var(--bnsc-req-color-dark, #003B2E) !important;
}

.bnsc-req-panel {
	display: none;
}

.bnsc-req-panel.is-active {
	display: block;
}

/* ---- Grid de features: cantidad de columnas fija según data-count (ver
   banesco-shortcode-requisitos.php), no flex con ancho-al-contenido — así los items quedan
   distribuidos en columnas parejas usando todo el ancho del .bnsc-boxed (1200px). Reglas
   (2026-08-16): 3 en una fila, 4 en una fila, 5 = 3 arriba + 2 centradas abajo, 6 = 3+3. Con 5/6
   se arma un grid interno de 6 columnas y cada card ocupa 2 (span 2) para poder centrar la fila
   suelta de 2 corriendo sus columnas +1 — con solo 3 columnas base no hay forma de centrar 2
   items sueltos sin dejarlos pegados a la izquierda. */
.bnsc-req-features {
	display: grid !important;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	column-gap: 40px;
	row-gap: 48px;
	align-items: start;
	margin-top: 20px;
	margin-bottom: 44px;
}

.bnsc-req-features[data-count="1"] {
	grid-template-columns: minmax(0, 1fr);
	max-width: 400px;
	margin-inline: auto;
}

.bnsc-req-features[data-count="2"] {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 64px;
}

/* 4 en una sola fila (antes quedaban 2+2) */
.bnsc-req-features[data-count="4"] {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* 5 y 6: grid de 6 columnas, cada card ocupa 2 -> 3 por fila. Con 6 cae justo 3+3; con 5, la
   4ta y 5ta card se corren +1 columna para quedar centradas debajo de las 3 de arriba (3+2). */
.bnsc-req-features[data-count="5"],
.bnsc-req-features[data-count="6"] {
	grid-template-columns: repeat(6, minmax(0, 1fr));
}

/* selector por posición de hijo directo (no por clase): cada feature puede ser
   .bnsc-req-feature (simple) o .bnsc-req-feature-card (con lista) segun tenga contenido, y una
   misma fila de 5/6 puede mezclar ambas variantes -- acoplar el nth-child a una sola clase hacía
   que no matcheara si el 4to/5to item era de la otra variante. */
.bnsc-req-features[data-count="5"] > *,
.bnsc-req-features[data-count="6"] > * {
	grid-column: span 2;
}

.bnsc-req-features[data-count="5"] > *:nth-child(4) {
	grid-column: 2 / span 2;
}

.bnsc-req-features[data-count="5"] > *:nth-child(5) {
	grid-column: 4 / span 2;
}

@media (max-width: 700px) {
	.bnsc-req-features,
	.bnsc-req-features[data-count="1"],
	.bnsc-req-features[data-count="2"],
	.bnsc-req-features[data-count="4"],
	.bnsc-req-features[data-count="5"],
	.bnsc-req-features[data-count="6"] {
		grid-template-columns: minmax(0, 1fr);
		max-width: none;
		row-gap: 32px;
	}

	.bnsc-req-features[data-count="5"] > *,
	.bnsc-req-features[data-count="6"] > * {
		grid-column: auto;
	}
}

/* Variante "simple" (icono + título + subtítulo). Grid con áreas nombradas para poder cambiar entre
   apilado-centrado (desktop) e icono-al-costado (mobile) sin tocar el markup: en mobile el área
   "icon" se repite en las dos filas, así el ícono ocupa la columna izquierda a lo alto del texto. */
.bnsc-req-feature {
	display: grid;
	grid-template-areas: "icon" "title" "sub";
	justify-items: center;
	text-align: center;
	gap: 8px;
	max-width: 280px;
	margin-inline: auto;
}
.bnsc-req-feature .bnsc-req-feature-icon { grid-area: icon; margin-bottom: 6px; }
.bnsc-req-feature .bnsc-req-feature-title { grid-area: title; }
.bnsc-req-feature .bnsc-req-feature-sub { grid-area: sub; }

.bnsc-req-feature-icon {
	width: 42px;
	height: 42px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.bnsc-req-feature-icon img {
	max-width: 100%;
	max-height: 100%;
	object-fit: contain;
}

/* 2026-09-28 (ajuste de diseño, reporte): título de feature (ícono+título corto, patrón "Requisitos" y
   similares) traía 24px/700/1.25 -- inconsistente con el estándar pedido para este tipo de título en
   todos los módulos que lo usan. Tamaño/peso/interlineado normalizados; el color NO se toca acá porque
   depende del fondo de cada sección/vertical (blanco sobre navy, blanco sobre verde, etc.). */
.bnsc-req-feature-title {
	color: #FFFFFF;
	font-family: 'Lato', sans-serif;
	font-size: 21px;
	font-weight: 400;
	line-height: 1.2em;
}

/* valor/párrafo del feature (2da línea del título, ej. "$550.00") — 16px, centrado */
.bnsc-req-feature-sub {
	color: #FFFFFF;
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.4;
	text-align: center;
}

/* variante "card": título + viñetas. En DESKTOP se presenta centrada igual que la variante simple
   (ícono grande arriba, título centrado, lista como bloque centrado) para que una fila que mezcla
   ambas variantes se vea homogénea; en mobile pasa a ícono+título en fila con la lista debajo
   (ver media query más abajo). */
.bnsc-req-feature-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 10px;
	width: 100%;
	max-width: 280px;
	margin-inline: auto;
}

.bnsc-req-feature-card-head {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
}

.bnsc-req-feature-card-icon {
	width: 42px;
	height: 42px;
	object-fit: contain;
	margin-bottom: 6px;
}

.bnsc-req-feature-card-title {
	color: #FFFFFF;
	font-family: 'Lato', sans-serif;
	font-size: 21px;
	font-weight: 400;
	line-height: 1.2em;
}

.bnsc-req-feature-card-list {
	list-style: disc;
	margin: 0;
	padding-left: 20px;
	color: #C7D6CE;
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	line-height: 1.6;
}

/* .bnsc-req-body trae "max-width:900px;margin:0 auto" pensado para el bloque del toggle "Ver más"
   (centrado en el panel completo) — reusado acá para el contenido de la card (bnsc-req-feature-
   card-rich), donde esa regla lo encogía a su ancho de contenido y lo centraba dentro de la
   columna, generando una indentación fantasma respecto al título de arriba. Se anula solo en este
   contexto para que ocupe el ancho completo de la columna, alineado con el título. */
.bnsc-req-feature-card-rich.bnsc-req-body {
	max-width: none;
	margin: 0;
	text-align: center;
}

/* la lista se centra como bloque pero sus ítems quedan alineados a la izquierda (viñetas legibles) */
.bnsc-req-feature-card-rich.bnsc-req-body ul,
.bnsc-req-feature-card-rich.bnsc-req-body ol {
	display: inline-block;
	text-align: left;
	padding-left: 18px;
	margin: 0 auto;
}

/* MOBILE: ambas variantes pasan a "ícono al costado + información al lado" (icono en la columna
   izquierda, título/subtítulo/lista a la derecha), alineado a la izquierda. */
@media (max-width: 700px) {
	.bnsc-req-feature {
		grid-template-areas: "icon title" "icon sub";
		grid-template-columns: auto minmax(0, 1fr);
		justify-items: start;
		align-items: start;
		text-align: left;
		column-gap: 14px;
		row-gap: 2px;
		max-width: none;
	}
	.bnsc-req-feature .bnsc-req-feature-icon { margin-bottom: 0; align-self: start; }
	.bnsc-req-feature .bnsc-req-feature-sub { text-align: left; }

	.bnsc-req-feature-card { align-items: flex-start; text-align: left; max-width: none; }
	.bnsc-req-feature-card-head { flex-direction: row; align-items: center; gap: 10px; }
	.bnsc-req-feature-card-icon { width: 32px; height: 32px; margin-bottom: 0; }
	.bnsc-req-feature-card-title { font-size: 16px; }
	.bnsc-req-feature-card-rich.bnsc-req-body { text-align: left; }
	.bnsc-req-feature-card-rich.bnsc-req-body ul,
	.bnsc-req-feature-card-rich.bnsc-req-body ol { display: block; }
}

.bnsc-req-boton-row {
	display: flex;
	justify-content: center;
	margin-top: 30px;
}

.bnsc-req-boton,
.bnsc-req-boton:hover,
.bnsc-req-boton:visited {
	display: inline-block;
	background: #FFFFFF;
	color: var(--bnsc-req-color, #08543C);
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	border-radius: 5px;
	padding: 13px 36px;
	text-decoration: none;
}

/* contenido enriquecido dentro del toggle — headings/listas/párrafos del WYSIWYG */
.bnsc-req-body {
	max-width: 900px;
	margin: 0 auto;
	text-align: left;
	color: #FFFFFF;
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	line-height: 1.7;
}

.bnsc-req-body h1, .bnsc-req-body h2, .bnsc-req-body h3,
.bnsc-req-body h4, .bnsc-req-body h5, .bnsc-req-body h6 {
	color: #FFFFFF;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	font-size: 13px;
	font-weight: 700;
	margin: 20px 0 8px;
}

.bnsc-req-body h1:first-child, .bnsc-req-body h2:first-child, .bnsc-req-body h3:first-child,
.bnsc-req-body h4:first-child, .bnsc-req-body h5:first-child, .bnsc-req-body h6:first-child {
	margin-top: 0;
}

.bnsc-req-body p {
	margin: 0 0 14px;
}

.bnsc-req-body strong {
	color: #FFFFFF;
}

.bnsc-req-body ul, .bnsc-req-body ol {
	margin: 0 0 14px;
	padding-left: 20px;
}

.bnsc-req-body li {
	margin-bottom: 4px;
}

/* ---- Variante "verde claro" (menta) — módulos tipo Cuenta Simplificada (2026-09-24) --------------
   Todo el resto del módulo asume texto blanco sobre fondo saturado (verde/azul). Esta variante usa
   fondo pastel (#E6EDEB, ver $bg en el shortcode) con el mismo acento verde institucional como texto
   -- por eso el texto/subtítulo/tabs pasan de blanco a var(--bnsc-req-color), y el botón CTA se
   INVIERTE (antes blanco con texto de color, acá fondo de color con texto blanco) para no quedar
   invisible sobre el fondo pastel. */
.bnsc-req-wrap--light .bnsc-req-heading,
.bnsc-req-wrap--light .bnsc-req-feature-title,
.bnsc-req-wrap--light .bnsc-req-feature-sub,
.bnsc-req-wrap--light .bnsc-req-feature-card-title,
.bnsc-req-wrap--light .bnsc-req-body,
.bnsc-req-wrap--light .bnsc-req-body h1, .bnsc-req-wrap--light .bnsc-req-body h2,
.bnsc-req-wrap--light .bnsc-req-body h3, .bnsc-req-wrap--light .bnsc-req-body h4,
.bnsc-req-wrap--light .bnsc-req-body h5, .bnsc-req-wrap--light .bnsc-req-body h6,
.bnsc-req-wrap--light .bnsc-req-body strong,
.bnsc-req-wrap--light .bnsc-req-tabs .bnsc-req-tab {
	color: var(--bnsc-req-color, #08543C);
}

.bnsc-req-wrap--light .bnsc-req-intro,
.bnsc-req-wrap--light .bnsc-req-feature-card-list {
	color: var(--bnsc-req-color, #08543C);
	opacity: 0.8;
}

.bnsc-req-wrap--light .bnsc-req-tabs .bnsc-req-tab {
	border-color: var(--bnsc-req-color, #08543C) !important;
}

.bnsc-req-wrap--light .bnsc-req-tabs .bnsc-req-tab.is-active {
	color: #FFFFFF;
}

.bnsc-req-wrap--light .bnsc-req-boton,
.bnsc-req-wrap--light .bnsc-req-boton:visited {
	background: var(--bnsc-req-color, #08543C);
	color: #FFFFFF;
}

.bnsc-req-wrap--light .bnsc-req-boton:hover {
	background: var(--bnsc-req-color-dark, #0C3A28);
}

/* ---- Actualización de Datos: tabs "Desde la web / Desde la APP" ---- */
.bnsc-ad-tabs {
	display: flex !important;
	flex-direction: row !important;
	justify-content: center !important;
	gap: 10px !important;
}

.bnsc-ad-tab {
	width: fit-content !important;
	flex: 0 0 auto !important;
}

.bnsc-ad-tab-inactive {
	background: transparent !important;
}

/* ---- Actualización de Datos: carrusel de pasos ---- */
.bnsc-ad-carrusel {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 20px;
	width: 100%;
}

.bnsc-ad-carrusel-track {
	position: relative;
	width: 100%;
	min-height: 220px;
}

.bnsc-ad-carrusel-slide {
	display: none;
	align-items: center;
	gap: 40px;
	background: #FFFFFF;
	border-radius: 18px;
	padding: 32px;
	position: relative;
}

.bnsc-ad-carrusel-slide.is-active {
	display: flex;
}

@media (max-width: 768px) {
	.bnsc-ad-carrusel-slide {
		flex-direction: column;
		text-align: center;
	}
}

.bnsc-ad-carrusel-numero {
	position: absolute;
	top: 24px;
	left: 32px;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 13px;
	padding: 5px 14px;
	border-radius: 100px;
}

.bnsc-ad-carrusel-texto {
	flex: 1 1 40%;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 22px;
	color: #08543C;
	line-height: 1.4;
	padding-top: 32px;
}

.bnsc-ad-carrusel-texto strong {
	font-weight: 700;
}

.bnsc-ad-carrusel-img {
	flex: 1 1 50%;
	border-radius: 14px;
	overflow: hidden;
	background: #D7DEE4;
}

.bnsc-ad-carrusel-img img {
	width: 100%;
	height: 100%;
	max-height: 260px;
	object-fit: cover;
	display: block;
}

.bnsc-ad-carrusel-nav {
	display: flex;
	align-items: center;
	gap: 16px;
}

.bnsc-ad-carrusel-arrow,
.bnsc-ad-carrusel-arrow:hover,
.bnsc-ad-carrusel-arrow:focus,
.bnsc-ad-carrusel-arrow:active {
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: #FFFFFF !important;
	color: #08543C !important;
	border: 1px solid #DDE3EA !important;
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	outline: none;
	box-shadow: none;
	display: flex;
	align-items: center;
	justify-content: center;
}

.bnsc-ad-carrusel-dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.bnsc-ad-carrusel-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #DDE3EA;
	border: 0;
	padding: 0;
	cursor: pointer;
}

.bnsc-ad-carrusel-dot.is-active {
	width: 22px;
	border-radius: 100px;
	background: #08543C;
}

/* ---- Actualización de Datos: numerados circulares (¿Qué pasa después?) ---- */
.bnsc-ad-numero-circulo {
	width: 44px !important;
	height: 44px !important;
	border-radius: 100px !important;
	background: #08543C !important;
}

.bnsc-ad-numero-circulo .elementor-heading-title {
	color: #FFFFFF;
	font-weight: 700;
}

/* ---- Selector de Variantes de Tarjeta (shortcode bnsc_tarjeta_variantes) ----
   Fila de N cards (misma familia de producto: Clásica/Gold/Platinum, etc.). La card de la variante que
   se está viendo va "activa" (fondo verde, CTA "Detalles" sin link) — el resto son links reales a la
   página de esa otra variante ("Ver detalles"). El estado activo lo calcula el shortcode en PHP
   comparando el ID de la página actual, nunca se marca a mano por CSS/HTML.

   2 orientaciones de imagen, mutuamente excluyentes vía --tv-item--horizontal / --tv-item--vertical:
   - horizontal (Visa/Mastercard, ratio ~1.6:1): la imagen se centra arriba del box y se hunde hacia
     abajo (overlap descendente). No sobresale del ancho del box.
   - vertical (ratio ~0.6:1, más alta que ancha): la imagen se ancla a la derecha del box y sobresale
     hacia arriba Y hacia afuera del borde derecho — el box necesita overflow visible (nunca hidden) y
     la fila necesita padding-top para no clipear contra la sección de arriba. */
.bnsc-tv-row {
	display: flex !important;
	flex-wrap: wrap;
	gap: 24px;
	align-items: flex-start;
	padding-top: 80px; /* cubre el "rise" de 73px medido en las referencias — la imagen sobresale
	                       dentro del padding de la fila, nunca se clipea aunque overflow-x pase a
	                       "auto" en mobile (ver media query abajo) */
}

.bnsc-tv-item {
	position: relative;
	flex: 1 1 280px;
	border-radius: 16px;
	overflow: visible;
	transition: background-color .2s ease;
}

/* 2026-09-18 (ajuste de diseño): fondo activa/inactiva alineado al design system sitewide -- antes
   #003B2E/#F0F3F1 (tonos propios del módulo), ahora el verde primario #08543C y el gris estándar
   #F6F6F6 usados en el resto del sitio. */
.bnsc-tv-item.is-active {
	background: #08543C;
}

.bnsc-tv-item.is-inactive {
	background: #F6F6F6;
}

/* -- variante horizontal: imagen centrada arriba, hundida en el box --
   Medidas sacadas a pixel de las 2 referencias (fila de 3 y fila de 2 cards): la imagen mide ~190×119
   (ratio real de tarjeta, 1.586:1), sobresale 73px arriba del box y se hunde 46px dentro — ambos valores
   IDÉNTICOS en las 2 referencias pese a que el box mide distinto ancho (390px vs 596px), o sea el tamaño
   de la imagen es fijo, no proporcional al ancho de la card. */
.bnsc-tv-item--horizontal {
	padding: 70px 28px 28px;
}

.bnsc-tv-item--horizontal .bnsc-tv-item-image {
	position: absolute;
	top: -73px;
	left: 32px;
	width: 190px;
	aspect-ratio: 1.586;
	z-index: 2;
}

/* -- variante vertical: imagen a la derecha --
   2026-09-18 (ajuste de diseño, referencia real de Multicashback): activa e inactiva YA NO comparten
   la misma posición de imagen -- antes ambas sobresalían arriba/afuera del box por igual. En la
   referencia, la card ACTIVA sí sobresale arriba-derecha (se mantiene igual, ver .is-active abajo),
   pero la INACTIVA queda contenida adentro del box, más chica, sin desbordar ningún borde.

   min-height subido de 170px a 220px (reporte 2026-09-27): la imagen se posiciona con offsets FIJOS en
   píxeles (no proporcionales al alto del box -- ver comentario de la fila arriba), y esos offsets fijos
   necesitan un piso real de ~199px para no desbordar por ABAJO (inactiva: top:24 + alto:174.6px = 198.6;
   activa: top:-60 + alto:257px = 197, ambos ya intencionalmente por encima del borde superior). Con
   min-height:170px ese piso quedaba por debajo de lo que la imagen necesita, así que en familias de 2
   tarjetas (columnas más anchas → mismo texto entra en menos líneas → el box cae justo en el piso) la
   imagen se salía por abajo en AMBOS estados -- confirmado midiendo en vivo: Connect Miles (box en el
   piso de 170px) desbordaba 27-28px abajo en activa E inactiva; familias de 3 tarjetas (columnas más
   angostas → más líneas de texto → box crece solo, nunca toca el piso, ej. Stevens Onix a 261px) nunca
   lo mostraban. 220px dale margen a ambos estados sin desbordar, y no afecta ninguna familia de 3
   tarjetas (ya están todas por encima de ese valor por contenido real). */
.bnsc-tv-item--vertical {
	padding: 28px 150px 28px 28px;
	min-height: 220px;
}

.bnsc-tv-item--vertical .bnsc-tv-item-image {
	position: absolute;
	width: 150px;
	aspect-ratio: .63;
	z-index: 2;
}

.bnsc-tv-item--vertical.is-active .bnsc-tv-item-image {
	top: -60px;
	right: -16px;
}

.bnsc-tv-item--vertical.is-inactive .bnsc-tv-item-image {
	top: 24px;
	right: 24px;
	width: 110px;
}

.bnsc-tv-item-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	filter: drop-shadow(0 8px 16px rgba(0, 0, 0, .18));
}

/* Card activa: imagen levemente más grande. transform-origin fijado al punto de anclaje de cada
   orientación (ver arriba) para que crezca sin desplazarse del top/left o top/right ya posicionado. */
.bnsc-tv-item--horizontal.is-active .bnsc-tv-item-image {
	transform: scale(1.08);
	transform-origin: top left;
}

.bnsc-tv-item--vertical.is-active .bnsc-tv-item-image {
	transform: scale(1.08);
	transform-origin: top right;
}

.bnsc-tv-item-titulo {
	font-size: 22px;
	font-weight: 600;
	line-height: 1.25;
	margin: 0 0 12px;
}

.bnsc-tv-item.is-active .bnsc-tv-item-titulo {
	color: #FFFFFF;
}

.bnsc-tv-item.is-inactive .bnsc-tv-item-titulo {
	color: #16324A;
}

.bnsc-tv-item-texto {
	font-size: 15px;
	line-height: 1.5;
	margin: 0 0 20px;
}

.bnsc-tv-item.is-active .bnsc-tv-item-texto {
	color: #D9E4DF;
}

.bnsc-tv-item.is-inactive .bnsc-tv-item-texto {
	color: #5B6B76;
}

.bnsc-tv-item-cta {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
}

.bnsc-tv-item.is-active .bnsc-tv-item-cta {
	color: #FFFFFF;
}

.bnsc-tv-item.is-inactive .bnsc-tv-item-cta {
	color: #16324A;
}

/* 2026-09-18: círculo (radio 100px) -> radio 5px, mismo criterio del estándar sitewide de botones.
   Activa: verde brillante #52B339 (antes overlay blanco translúcido sobre el fondo #003B2E anterior,
   que ya no contrastaba igual contra el nuevo fondo #08543C). */
.bnsc-tv-item-cta-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 5px;
	flex-shrink: 0;
}

.bnsc-tv-item.is-active .bnsc-tv-item-cta-icon {
	background: #52B339;
	color: #FFFFFF;
}

.bnsc-tv-item.is-inactive .bnsc-tv-item-cta-icon {
	background: #FFFFFF;
	color: #16324A;
}

/* ---- Mobile: carrusel horizontal con scroll nativo (swipe), no columna apilada ----
   overflow-x:auto en un flex nowrap + scroll-snap. Ojo: al fijar overflow-x a algo distinto de
   "visible", el navegador fuerza overflow-y a "auto" también (no puede quedar "visible" en un solo
   eje) — por eso el padding-top de 80px de .bnsc-tv-row (arriba) es lo que evita que la imagen
   sobresaliente se clipee acá; el padding SIEMPRE cuenta como parte de la caja, nunca se recorta. */
@media (max-width: 767px) {
	.bnsc-tv-row {
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scroll-snap-type: x mandatory;
		gap: 14px;
		padding-left: 20px;
		padding-right: 20px;
		margin-left: -20px;
		margin-right: -20px;
		scrollbar-width: none; /* Firefox */
	}

	.bnsc-tv-row::-webkit-scrollbar {
		display: none; /* Chrome/Safari */
	}

	.bnsc-tv-item {
		flex: 0 0 86%;
		max-width: 86%;
		scroll-snap-align: center;
		box-sizing: border-box;
	}

	.bnsc-tv-item--vertical {
		padding-right: 28px;
	}

	.bnsc-tv-item--vertical .bnsc-tv-item-image {
		position: static;
		width: 110px;
		aspect-ratio: .63;
		margin: 0 auto 16px;
	}
}

/* ---- Beneficios (shortcode bnsc_beneficios) ----
   Fila de checkmarks (círculo + título + texto opcional), mismo lenguaje visual que el patrón
   "Requisitos/Beneficios" nativo de Elementor (bnsc_checks_item en engine.php, clase
   bnsc-check-circle) pero portable como HTML/CSS plano para usar en páginas armadas a mano.
   2 temas, igual criterio que bnsc_checks_theme(): claro (ícono/texto verde sobre fondo claro/página)
   u oscuro (blanco sobre verde #08543C, full-bleed por defecto). */
.bnsc-benef {
	padding: 56px 0;
}

.bnsc-benef--oscuro.bnsc-benef--full {
	background: #08543C;
}

.bnsc-benef-inner {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 24px;
	box-sizing: border-box;
}

.bnsc-benef-heading {
	text-align: center;
	font-size: 30px;
	font-weight: 600;
	margin: 0 0 12px;
}

.bnsc-benef--claro .bnsc-benef-heading {
	color: #16324A;
}

.bnsc-benef--oscuro .bnsc-benef-heading {
	color: #FFFFFF;
}

.bnsc-benef-intro {
	text-align: center;
	font-size: 16px;
	line-height: 1.5;
	max-width: 640px;
	margin: 0 auto 32px;
}

.bnsc-benef--claro .bnsc-benef-intro {
	color: #5B6B76;
}

.bnsc-benef--oscuro .bnsc-benef-intro {
	color: #C7D6CE;
}

.bnsc-benef-row {
	display: flex !important;
	flex-wrap: nowrap; /* gotcha ya documentado: wrap hace que la fila se vea "vertical" en viewports
	                       angostos-pero-no-mobile — el wrap real solo se habilita en la media query */
	justify-content: center;
	gap: 36px;
	margin-top: 24px;
}

.bnsc-benef-item {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 10px;
	flex: 1 1 0;
	max-width: 260px;
}

.bnsc-benef-circle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	border-radius: 100px;
	border: 1px solid;
	flex-shrink: 0;
}

.bnsc-benef--claro .bnsc-benef-circle {
	border-color: #08543C;
	color: #08543C;
}

.bnsc-benef--oscuro .bnsc-benef-circle {
	border-color: #FFFFFF;
	color: #FFFFFF;
}

.bnsc-benef-item-titulo {
	font-size: 18px;
	font-weight: 600;
	margin: 0;
}

.bnsc-benef--claro .bnsc-benef-item-titulo {
	color: #33475B;
}

.bnsc-benef--oscuro .bnsc-benef-item-titulo {
	color: #FFFFFF;
}

.bnsc-benef-item-texto {
	font-size: 14px;
	line-height: 1.5;
	margin: 0;
}

.bnsc-benef--claro .bnsc-benef-item-texto {
	color: #5A6B7B;
}

.bnsc-benef--oscuro .bnsc-benef-item-texto {
	color: #C7D6CE;
}

@media (max-width: 767px) {
	.bnsc-benef-row {
		flex-wrap: wrap;
	}

	.bnsc-benef-item {
		flex: 1 1 45%;
	}
}

/* ---- Contrato de Servicios: badge de versión del documento ---- */
.bnsc-contrato-badge {
	display: inline-block;
	background: #E7ECE9;
	color: #08543C;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.02em;
	padding: 8px 20px;
	border-radius: 100px;
}

/* ---- Aviso de Privacidad: grid de documentos descargables ---- */
.bnsc-doc-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
	width: 100%;
}

.bnsc-doc-card,
.bnsc-doc-card:hover,
.bnsc-doc-card:visited {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	background: #EDF0F5;
	border-radius: 14px;
	padding: 22px 28px;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 16px;
	color: #08543C !important;
	text-decoration: none !important;
}

.bnsc-doc-card-icon {
	flex: 0 0 auto;
	color: #08543C;
}

@media (max-width: 767px) {
	.bnsc-doc-grid {
		grid-template-columns: 1fr;
	}
}

/* ---- Vida en Banesco: fila de videos circulares con botón play ---- */
.bnsc-vida-videos-row {
	display: flex;
	justify-content: center;
	align-items: flex-start;
	gap: 48px;
	flex-wrap: wrap;
	width: 100%;
}

.bnsc-vida-video-circle {
	position: relative;
	width: 400px;
	max-width: 100%;
	display: block;
	flex: 0 0 auto;
	line-height: 0;
}

/* Las imágenes ya vienen recortadas en círculo + anillo + botón de play (composición completa de
   Figma). Se muestran a su aspecto natural, sin re-enmascarar en un círculo duro (eso las cortaba). */
.bnsc-vida-video-circle img {
	width: 100%;
	height: auto;
	display: block;
}

.bnsc-vida-video-play {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background: #FFFFFF;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}

.bnsc-vida-video-play svg {
	color: #08543C;
	margin-left: 4px;
}

@media (max-width: 767px) {
	.bnsc-vida-video-circle {
		width: 280px;
	}
}

/* ---- Carrusel Hero (Home) — shortcode bnsc_hero_carousel. Reemplaza el widget "Nested Carousel" de
   Elementor Pro (post 231): declaraba 5 slides pero solo tenía 4 contenedores reales, todos vacíos —
   el carrusel medía 0px de alto y no se veía nada, solo los puntos. ---- */
/* Una sola tarjeta redondeada: imagen arriba + franja navy delgada con los puntos pegada justo debajo
   (sin marco blanco ni separación) — el overflow:hidden + radio de acá afuera es lo que redondea tanto
   la imagen (arriba) como la franja (abajo) en un solo golpe, sin duplicar radios adentro. */
.bnsc-hero-carrusel {
	position: relative;
	width: 100%;
	border-radius: 0;
	overflow: hidden;
}

.bnsc-hero-carrusel-track {
	position: relative;
	width: 100%;
	overflow: hidden;
}

.bnsc-hero-carrusel-slide {
	display: none;
	position: relative;
	width: 100%;
}

.bnsc-hero-carrusel-slide.is-active {
	display: block;
}

.bnsc-hero-carrusel-slide picture,
.bnsc-hero-carrusel-slide img {
	display: block;
	width: 100%;
	height: auto;
}

.bnsc-hero-carrusel-dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	background: #E6EDEB;
	padding: 16px 0;
}

/* Barra verde claro con elementos verde oscuro/blanco: inactivo = punto blanco chico, activo = píldora
   verde oscuro ancha. */
.bnsc-hero-carrusel-dot {
	width: 8px;
	height: 8px;
	border-radius: 3px;
	background: #FFFFFF;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease, border-radius 0.2s ease;
}

.bnsc-hero-carrusel-dot.is-active {
	width: 26px;
	border-radius: 100px;
	background: #08543C;
}

/* ---- Card Banner (carrusel tipo tarjeta entre contenido) — shortcode bnsc_card_carousel. ---- */
.bnsc-cardcar {
	position: relative;
	width: 100%;
}

/* Separación del párrafo de arriba cuando el carrusel vive dentro de una sección con gap chico
   (ej. "Conoce nuestros servicios" en el Home, gap:4px pensado solo para título→texto). */
.bnsc-servicios-carousel {
	margin-top: 44px;
}

.bnsc-cardcar-track {
	position: relative;
	width: 100%;
}

.bnsc-cardcar-slide {
	display: none;
	align-items: stretch;
	gap: 40px;
	background: #FFFFFF;
	border-radius: 24px;
	position: relative;
	overflow: hidden;
	/* Alto fijo (no min-height) — con solo min-height la imagen a sangre (height:100%) no tenía un
	   alto de referencia definido y terminaba estirándose a su alto intrínseco (~800px). 350px es la
	   medida real del carrusel en el prototipo. */
	height: 350px;
	/* Borde interno sutil, pegado al radio de la card (referencia de Figma). */
	box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);
}

.bnsc-cardcar-slide.is-active {
	display: flex;
}

/* Franja de acento a la izquierda — ancha a propósito (72px) para que las flechas queden "adentro"
   de la franja como en la referencia, no flotando sobre el fondo claro. Bordes redondeados solo del
   lado izquierdo (24px, igual al radio de la card) — el derecho queda recto porque sigue de largo
   hacia el contenido. */
/* Navy bar lateral + flechas removidos por pedido de diseño (2026-09-22): solo card blanco + dots. */
.bnsc-cardcar-slide::before {
	display: none;
}
.bnsc-cardcar-arrows {
	display: none;
}

.bnsc-cardcar-texto {
	flex: 1 1 40%;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 16px;
	z-index: 1;
	padding: 40px 24px 40px 56px;
}

.bnsc-cardcar-titulo {
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 34px;
	color: #08543C;
	margin: 0;
	line-height: 1.25;
}

.bnsc-cardcar-desc {
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	color: #5A6B7B;
	line-height: 1.5;
	margin: 0;
	max-width: 420px;
}

.bnsc-cardcar-btn,
.bnsc-cardcar-btn:hover,
.bnsc-cardcar-btn:focus,
.bnsc-cardcar-btn:visited {
	display: inline-flex;
	align-items: center;
	width: fit-content;
	background: #08543C !important;
	color: #FFFFFF !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none !important;
	padding: 13px 36px;
	border-radius: 5px;
	margin-top: 8px;
}

.bnsc-cardcar-btn:hover {
	background: #0C3A28 !important;
}

/* Una sola imagen a sangre, pegada al borde izquierdo de su mitad (sin blob decorativo ni floating —
   mismo criterio "a sangre" que el resto de banners del sitio, ver bnsc-img-fill). */
.bnsc-cardcar-media {
	flex: 1 1 48%;
	position: relative;
	overflow: hidden;
}

.bnsc-cardcar-media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: left center;
}

.bnsc-cardcar-arrows {
	display: none !important;
}

/* Botones de flecha — imagen real (óvalo suave + chevron ya integrados en el PNG), no dibujados en
   CSS. cardcar-arrow-next.png es el asset original; cardcar-arrow-prev.png es su espejo horizontal
   (ver banesco-kit/, referencia de Figma solo traía el asset de la derecha con el ícono). */
/* OJO: usar "background-color", nunca el shorthand "background" acá — el shorthand resetea
   background-image a "none" si no se lo repite en la misma regla, y con :hover/:focus/:active
   pesando más que .bnsc-cardcar-prev/-next (misma especificidad de clase + pseudo-clase encima)
   eso borraba el ícono al pasar el mouse o hacer foco (bug real: "los botones desaparecen"). */
.bnsc-cardcar-arrow {
	width: 36px;
	height: 36px;
	background-color: transparent;
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center;
	border: 0;
	cursor: pointer;
	outline: none;
	-webkit-appearance: none;
	appearance: none;
}

.bnsc-cardcar-prev {
	background-image: url("cardcar-arrow-prev.png");
}

.bnsc-cardcar-next {
	background-image: url("cardcar-arrow-next.png");
}

.bnsc-cardcar-dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	margin-top: 20px;
}

/* Puntos inactivos cuadrados (radio chico), no círculos — la referencia usa un cuadrado redondeado
   chico y una píldora ancha para el activo, no el estilo circular usado en otros carruseles del sitio. */
.bnsc-cardcar-dot {
	width: 8px;
	height: 8px;
	border-radius: 3px;
	background: #DDE3EA;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease, border-radius 0.2s ease;
}

.bnsc-cardcar-dot.is-active {
	width: 26px;
	border-radius: 100px;
	background: #173358;
}

@media (max-width: 767px) {
	/* Orden visual en mobile: imagen arriba, contenido, flechas + dots abajo del todo (no en la
	   franja lateral, que en este ancho no tiene lugar para alojarlas). */
	.bnsc-cardcar {
		display: flex;
		flex-direction: column;
	}

	.bnsc-cardcar-track {
		order: 1;
	}

	.bnsc-cardcar-dots {
		order: 3;
	}

	/* Orden normal (no column-reverse): texto arriba, imagen abajo — la franja de acento pasa de
	   vertical (izquierda, layout lado a lado de desktop) a horizontal navy pegada abajo de la card,
	   con las flechas adentro (mismo criterio "una sola tarjeta" ya usado en el carrusel hero). */
	.bnsc-cardcar-slide {
		flex-direction: column;
		gap: 20px;
		height: auto;
		border-bottom-left-radius: 0;
		border-bottom-right-radius: 0;
	}

	.bnsc-cardcar-texto {
		padding: 24px 20px 0;
	}

	/* La franja vertical de desktop no tiene sentido en el layout apilado — se apaga acá; la franja
	   propia de mobile es .bnsc-cardcar-arrows, ver abajo. */
	.bnsc-cardcar-slide::before {
		display: none;
	}

	.bnsc-cardcar-titulo {
		font-size: 22px;
	}

	.bnsc-cardcar-media {
		height: 200px;
	}

	/* Centrada, no "pegada a la izquierda" — ese criterio es para el layout lado a lado de desktop;
	   acá la imagen ocupa el ancho completo de la card y centrar evita cortes raros del encuadre. */
	.bnsc-cardcar-media img {
		object-position: center;
	}

	.bnsc-cardcar-arrows {
		order: 2;
		position: static;
		width: auto;
		flex-direction: row;
		justify-content: center;
		gap: 16px;
		transform: none;
		margin-top: 0;
		background: #173358;
		padding: 14px 0;
		border-radius: 0 0 24px 24px;
	}

	.bnsc-cardcar-arrow {
		width: 32px;
		height: 32px;
	}
}

/* ---- Catálogo de Tarjetas (shortcode bnsc_tarjetas_catalogo) — /tarjetas/, /tarjetas/pre-aprobada/,
   /empresas/tarjetas/. Mismo criterio de grid ya usado en Promociones/Blog/Sucursales. ---- */
.bnsc-tcard-grid {
	max-width: 1200px;
	margin: 0 auto;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	padding: 0 24px;
}

@media (max-width: 1024px) {
	.bnsc-tcard-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.bnsc-tcard-grid {
		grid-template-columns: 1fr;
	}
}

/* 2026-09-26: el padding:0 24px de arriba metía las tarjetas 24px hacia adentro respecto de las
   secciones hermanas full-bleed (medido en /tarjetas/: cards a 144→1296 vs. la fila "También te podría
   interesar" a 120→1320; a 1200px de viewport, cards a 48→1152 vs. hermana a 24→1176). El box del grid
   ya recibe el aire lateral correcto de su contenedor padre a todo ancho desktop, así que ese 24px propio
   es un inset sobrante (mismo patrón que el bug .bnsc-cardgrid). Se elimina SOLO en desktop (>1024px);
   en tablet/mobile el 24px se mantiene como margen lateral necesario. Fix de componente compartido:
   alinea /tarjetas/, /tarjetas/pre-aprobada/ y /empresas/tarjetas/ de una vez. */
@media (min-width: 1025px) {
	.bnsc-tcard-grid {
		padding-left: 0;
		padding-right: 0;
	}
}

.bnsc-tcard {
	display: flex;
	flex-direction: column;
	/* 2026-09-28 (pedido Jean): fondo de las cards de presentación de /tarjetas/ a #F6F6F6 (antes
	   #E6EDEB verde) -- queda igual que la variante empresas (.bnsc-tcard-grid--empresas ya usaba #F6F6F6). */
	background: #F6F6F6;
	border-radius: 16px;
	overflow: hidden;
}

/* 2026-09-24 (ajuste de diseño): las fotos de producto no comparten relación de aspecto (712x371 vs
   380x167 real, confirmado) -- con solo height:auto cada card quedaba con una imagen de alto distinto,
   desalineando el resto de la fila. aspect-ratio fija + object-fit:cover normaliza el alto sin importar
   la foto que suba cada tarjeta (mismo criterio ya usado en la card de blog, template 557). */
.bnsc-tcard-img {
	padding: 0 0 0 18px;
	line-height: 0;
	/* 2026-09-28: slot un poco más alto y con object-fit:contain para mostrar la tarjeta COMPLETA
	   sin recortar, manteniendo su escala tanto si es horizontal como vertical (mockups "preview").
	   Ajuste Jean 2026-09-28: la tarjeta va a la IZQUIERDA (flex-start) y más pequeña. Slot más BAJO
	   (2.3/1 ≈ 167px vs 202px) para reducir el aire entre la tarjeta vertical (135px) y el título. */
	aspect-ratio: 2.3 / 1;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: flex-start;
}

.bnsc-tcard-img img {
	/* Caja de restricción CUADRADA (max-width == max-height): con object-fit/contain el borde LARGO de
	   la tarjeta topa siempre con el mismo límite, así una tarjeta horizontal y una vertical quedan a la
	   MISMA escala (proporción pareja, pedido Jean). Antes width/height:100% las alineaba por alto y las
	   horizontales salían más anchas/grandes. */
	width: auto;
	height: auto;
	/* max-width limita a las HORIZONTALES (topan por ancho) y max-height a las VERTICALES (topan por
	   alto). Ajuste Jean 2026-09-28: verticales un poco más chicas (max-height 135) dejando las
	   horizontales igual (max-width sigue 150). */
	max-width: 150px;
	max-height: 135px;
	display: block;
	margin: 0;
	object-fit: contain;
	box-sizing: border-box;
}

/* TEMPORAL (2026-09-28): la imagen placeholder única (mientras llegan las reales) se muestra COMPLETA
   (contain) centrada sobre el #F6F6F6 de la card, en vez de recortada a sangre (cover) -- así se ve la
   tarjeta entera en la previsualización. Se aplica solo al <img class="bnsc-tcard-img-ph"> que imprime
   el override temporal del shortcode; las imágenes reales vuelven a cover solas. */
.bnsc-tcard-img-ph {
	object-fit: contain !important;
}

.bnsc-tcard-body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 12px 26px 28px;
	/* .bnsc-tcard (grid item de .bnsc-tcard-grid) ya se estira parejo por el align-items:stretch
	   default del grid -- pero sin flex:1 acá, el body se quedaba en su alto de contenido natural y el
	   espacio de sobra quedaba invisible DESPUÉS del botón en vez de empujarlo al fondo real de la card.
	   min-height:0 evita que la descripción larga le gane al flex-basis (bug clásico de flexbox). */
	flex: 1 1 auto;
	min-height: 0;
}

.bnsc-tcard-titulo {
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 19px;
	color: #08543C;
	margin: 0;
	line-height: 1.3;
}

.bnsc-tcard-desc {
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #5A6B7B;
	line-height: 1.5;
	margin: 0;
}

.bnsc-tcard-btn,
.bnsc-tcard-btn:hover,
.bnsc-tcard-btn:focus,
.bnsc-tcard-btn:visited {
	display: inline-block;
	width: fit-content;
	background: #08543C !important;
	color: #FFFFFF !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none !important;
	padding: 13px 36px;
	border-radius: 5px;
	/* auto (antes 6px fijo) -- con .bnsc-tcard-body ahora flex:1, este margen consume el espacio
	   sobrante y ancla el botón al fondo de la card, igual en toda la fila del grid. */
	margin-top: auto;
}

.bnsc-tcard-btn:hover {
	background: #0C3A28 !important;
}

.bnsc-tcard-grid-footer {
	display: flex;
	justify-content: center;
	margin-top: 32px;
}

.bnsc-tcard-load-more,
.bnsc-tcard-load-more:hover,
.bnsc-tcard-load-more:visited {
	display: inline-block;
	background: #F0F2F4;
	color: #33475B;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	text-decoration: none !important;
	padding: 13px 36px;
	border-radius: 5px;
}

.bnsc-tcard-load-more:hover {
	background: #E2E9EF;
}

/* Tema azul (empresas): mismo grid/card, solo cambia el acento de título/botón + fondo de card. */
.bnsc-tcard-grid--empresas .bnsc-tcard {
	background: #F6F6F6;
}

.bnsc-tcard-grid--empresas .bnsc-tcard-titulo {
	color: #173358;
}

.bnsc-tcard-grid--empresas .bnsc-tcard-btn,
.bnsc-tcard-grid--empresas .bnsc-tcard-btn:hover,
.bnsc-tcard-grid--empresas .bnsc-tcard-btn:visited {
	background: #173358 !important;
}

.bnsc-tcard-grid--empresas .bnsc-tcard-btn:hover {
	background: #0F2440 !important;
}

/* ---- Filtro de Tarjetas (shortcode bnsc_tarjetas_filtro) — /tarjetas/, /tarjetas/pre-aprobada/.
   Los dropdowns reusan el mecanismo .bnsc-dd ya cableado en navbar.js (hover/click/outside-click),
   estas reglas solo cambian su aspecto acá (el del topbar es texto chico en barra verde). ---- */
.bnsc-tfiltro {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 4px;
	max-width: fit-content;
	margin: 0 auto;
	background: #F0F2F4;
	border-radius: var(--bnsc-radius-control);
	padding: 8px 10px;
}

.bnsc-tfiltro-label {
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #5A6B7B;
	padding: 0 10px 0 12px;
	white-space: nowrap;
}

.bnsc-tfiltro-dd {
	position: relative;
}

.bnsc-tfiltro-trigger {
	display: flex !important;
	align-items: center;
	gap: 8px;
	background: #FFFFFF;
	border-radius: var(--bnsc-radius-control);
	padding: 10px 18px;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #33475B;
	cursor: pointer;
	white-space: nowrap;
}

.bnsc-tfiltro-trigger svg {
	flex: 0 0 auto;
	color: #5A6B7B;
}

.bnsc-tfiltro-panel {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 50;
	min-width: 200px;
	margin-top: 8px;
	background: #FFFFFF;
	border-radius: var(--bnsc-radius-control);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
	padding: 12px 0;
	opacity: 0;
	visibility: hidden;
	transform: translateY(6px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
}

.bnsc-tfiltro-dd.is-open > .bnsc-tfiltro-panel,
.bnsc-tfiltro-dd:hover > .bnsc-tfiltro-panel {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}

.bnsc-tfiltro-opcion {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 8px 20px;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	color: #33475B;
	cursor: pointer;
	white-space: nowrap;
}

.bnsc-tfiltro-btn {
	background: #08543C !important;
	color: #FFFFFF !important;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	border: 0 !important;
	border-radius: 5px;
	padding: 13px 36px;
	margin-left: 6px;
	cursor: not-allowed;
	opacity: 0.85;
}

@media (max-width: 767px) {
	.bnsc-tfiltro {
		max-width: 100%;
		padding: 14px;
		justify-content: flex-start;
	}

	.bnsc-tfiltro-label {
		width: 100%;
		padding: 0 0 6px 4px;
	}

	.bnsc-tfiltro-trigger,
	.bnsc-tfiltro-btn {
		flex: 1 1 auto;
		justify-content: center;
	}
}

/* ---- Calculadoras (shortcode bnsc_calc_hipoteca, banesco-shortcode-calculadoras.php) ----
   2026-09-23: la sección "Calcula tu hipoteca" (página Préstamos, post 1215) ya existía como mockup
   -- ver el historial de este bloque -- ahora con la fórmula real (23SEP/calculadoras-banesco/) el
   mockup se reemplazó por el shortcode. .bnsc-calc-field pasa de decorar un <div> a estilar el
   <select>/<input> real; mismos valores exactos (bg/borde/radius/padding) que ya tenía el mockup de
   cero cambio visual en ese punto. */
/* !important necesario: el reset.css de Hello Elementor trae
   `input[type="text"], input[type="number"], ... { border: 1px solid #666 }` -- un selector con
   atributo por cada tipo de input, misma especificidad que una clase, y gana contra `.bnsc-calc-field`
   por ir DESPUÉS en el orden de aparición. Nunca afecta a <select> (el reset solo pone `select` a secas,
   especificidad de elemento, más baja) -- por eso el borde/alto se veía distinto entre inputs y selects
   sin este !important (inputs con borde #666 y padding-top pisado a 8px en vez de 12px). */
.bnsc-calc-field {
	width: 100%;
	background: #FFFFFF;
	border: 1px solid #E1E5EA !important;
	border-radius: var(--bnsc-radius-control);
	padding: 12px 16px !important;
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	color: #33475B;
	box-sizing: border-box;
}

/* Radius de los <input> de la calculadora: el reset del tema (input[type="text"|"number"...], 0,1,1) le ganaba a
   .bnsc-calc-field (0,1,0) y los inputs salían con 3px mientras los <select> tomaban el valor del token. La clase
   repetida sube la especificidad a 0,2,0 sin necesitar !important. */
.bnsc-calc-field.bnsc-calc-field {
	border-radius: var(--bnsc-radius-control);
}

.bnsc-calc-field:focus {
	outline: none;
	border-color: #08543C !important;
	box-shadow: 0 0 0 3px rgba(8, 84, 60, 0.12);
}

.bnsc-calc-field p {
	margin: 0;
}

.bnsc-calc-select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%235A6B7B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 16px center;
	padding-right: 40px;
	cursor: pointer;
}

/* Prefijo "$" persistente en campos de dinero (mejora 2026-09-23: antes era solo placeholder
   "$ 0.00" que desaparecía al escribir; con el prefijo el signo queda siempre visible). */
.bnsc-calc-money {
	position: relative;
}

.bnsc-calc-money .bnsc-calc-field {
	padding-left: 32px !important;
}

.bnsc-calc-money-prefix {
	position: absolute;
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	color: #5A6B7B;
	pointer-events: none;
}

.bnsc-calc-row {
	display: flex;
	gap: 24px;
}

.bnsc-calc-row + .bnsc-calc-row {
	margin-top: 24px;
}

.bnsc-calc-group {
	flex: 1 1 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
	min-width: 0;
}

.bnsc-calc-label {
	font-family: 'Poppins', sans-serif;
	font-size: 13px;
	font-weight: 600;
	color: #5A6B7B;
}

.bnsc-calc-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.bnsc-calc-chip {
	flex: 1 1 calc(25% - 6px);
	min-width: 0;
	background: #FFFFFF;
	border: 1px solid #E1E5EA;
	border-radius: 5px;
	padding: 11px 4px;
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	color: #33475B;
	text-align: center;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
/* móvil: los 4 chips en 2x2 para no comprimir demasiado */
@media (max-width: 600px) {
	.bnsc-calc-chip { flex: 1 1 calc(50% - 4px); font-size: 14px; }
}

.bnsc-calc-chip[hidden] {
	display: none;
}

.bnsc-calc-chip.is-active {
	background: #08543C;
	border-color: #08543C;
	color: #FFFFFF;
}

.bnsc-calc-chip:not(.is-active):hover {
	border-color: #08543C;
	transform: translateY(-1px);
	box-shadow: 0 2px 6px rgba(8, 84, 60, 0.12);
}

.bnsc-calc-error {
	display: none;
	color: #C0392B;
	font-family: 'Lato', sans-serif;
	font-size: 13px;
}

.bnsc-calc-error.is-visible {
	display: block;
}

.bnsc-calc-form-errors {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: 16px;
}

.bnsc-calc-group.has-error .bnsc-calc-field {
	border-color: #C0392B;
}

.bnsc-calc-submit {
	margin-top: 24px;
	background: #08543C;
	color: #FFFFFF;
	border: 1px solid transparent;
	border-radius: 5px;
	padding: 13px 36px;
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	cursor: pointer;
	transition: background-color .15s ease;
}

.bnsc-calc-submit:hover {
	background: #06402F;
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(8, 84, 60, 0.25);
}

@keyframes bnscCalcResultIn {
	from {
		opacity: 0;
		transform: translateY(8px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.bnsc-calc-result {
	margin-top: 28px;
	background: #08543C;
	border-radius: 16px;
	padding: 32px 40px;
	text-align: center;
	animation: bnscCalcResultIn .35s ease;
}

.bnsc-calc-result-label {
	font-family: 'Poppins', sans-serif;
	font-size: 16px;
	font-weight: 300;
	color: #FFFFFF;
	margin: 0;
}

.bnsc-calc-result-value {
	font-family: 'Poppins', sans-serif;
	font-size: 40px;
	font-weight: 300;
	color: #FFFFFF;
	margin: 8px 0;
}

.bnsc-calc-result-disclaimer {
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	color: #C7D6CE;
	margin: 8px 0 0;
}

@media (max-width: 767px) {
	.bnsc-calc-row {
		flex-direction: column;
		gap: 20px;
	}

	.bnsc-calc-row + .bnsc-calc-row {
		margin-top: 20px;
	}

	.bnsc-calc-result {
		padding: 24px;
	}

	.bnsc-calc-result-value {
		font-size: 32px;
	}
}

/* ---- "¿Cómo activar tu Kuara?" (Banca Digital landing, post 608) — en mobile las 3 cards de paso
   pasan de apilarse/wrapear (comportamiento default de Elementor) a un carrusel horizontal swipeable
   con scroll-snap nativo — sin JS: más liviano y sin riesgo de pelear con la especificidad de los
   contenedores nativos de Elementor. ---- */
@media (max-width: 767px) {
	.bnsc-kuara-steps-row {
		display: flex !important;
		flex-wrap: nowrap !important;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		gap: 16px !important;
		padding-bottom: 8px;
		/* Oculta la scrollbar nativa (el swipe ya comunica que es deslizable) — mismo criterio que el
		   resto de los carruseles del sitio, que usan flechas/dots en vez de scrollbar visible. */
		scrollbar-width: none;
	}

	.bnsc-kuara-steps-row::-webkit-scrollbar {
		display: none;
	}

	.bnsc-kuara-steps-row > .e-con {
		flex: 0 0 82%;
		scroll-snap-align: center;
	}
}

/* ---- Tarifario (tabla de tarifas/comisiones con tabs) — shortcode bnsc_tarifario. Mismo mecanismo
   de tabs que bnsc_requisitos, pero cada panel es HTML de tabla puro (ver
   banesco-shortcode-tarifario.php) — el CSS de acá abajo aplica el diseño a CUALQUIER <table> dentro
   del panel automáticamente, así quien edite el contenido no necesita agregar clases. ---- */
/* El título ya NO se renderiza acá — pasa a ser un heading widget nativo de Elementor en cada página
   (banner propio, editable visualmente), igual que el resto del sitio. Este shortcode arranca directo
   en el párrafo introductorio + tabs + tabla(s). */
.bnsc-tarifa-wrap .bnsc-boxed {
	padding-top: 56px;
	padding-bottom: 60px;
}

.bnsc-tarifa-intro {
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	line-height: 1.6;
	color: #5A7592;
	text-align: center;
	max-width: 900px;
	margin: 0 auto 32px;
}

.bnsc-tarifa-tabs {
	display: flex;
	flex-direction: row;
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-bottom: 32px;
}

.bnsc-tarifa-tab {
	background: #F6F6F6;
	color: #5A7592;
	border: 0;
	border-radius: var(--bnsc-radius-control);
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 14px;
	padding: 12px 24px;
	cursor: pointer;
	outline: none;
}

.bnsc-tarifa-tab.is-active {
	background: #E6EDEB;
	color: #064330;
}

.bnsc-tarifa-panel {
	display: none;
}

.bnsc-tarifa-panel.is-active {
	display: block;
}

/* Sub-tabs (nivel 2, dentro de una categoría — ej. "Cuentas en Balboas"/"Cuentas en Euros" adentro de
   "Cuenta de ahorro"). Más chicos y sólidos que los tabs de categoría para que se note la jerarquía a
   simple vista. Ocupan el 100% del ancho del contenedor (flex:1 en cada botón), pedido explícito de
   2026-08-18 — antes quedaban angostos, del ancho de su propio texto. */
.bnsc-tarifa-subtabs {
	display: flex;
	flex-direction: row;
	width: 100%;
	gap: 8px;
	margin-bottom: 20px;
}

.bnsc-tarifa-subtab {
	flex: 1 1 0;
	background: #F6F6F6;
	color: #5A7592;
	border: 0;
	border-radius: var(--bnsc-radius-control);
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 13px;
	padding: 8px 18px;
	text-align: center;
	cursor: pointer;
	outline: none;
}

.bnsc-tarifa-subtab.is-active {
	background: #08543C;
	color: #FFFFFF;
}

.bnsc-tarifa-subpanel {
	display: none;
}

.bnsc-tarifa-subpanel.is-active {
	display: block;
}

/* Scroll horizontal en vez de "cards apiladas" — con HTML de tabla arbitrario pegado por un editor no
   hay columnas fijas conocidas de antemano para armar el patrón de card+data-label; el scroll nativo
   funciona con cualquier tabla sin pedirle nada extra a quien la carga. */
.bnsc-tarifa-scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border-radius: 12px;
}

.bnsc-tarifa-scroll table {
	width: 100%;
	min-width: 640px;
	border-collapse: collapse;
	border: 1px solid transparent;
	font-family: 'Lato', sans-serif;
	font-size: 14px;
}

/* Tabla con headers en 3 niveles:
   1) 1ra fila de <thead> = franja verde institucional (título de la tabla / grupos tipo "Persona
      Natural" con colspan) — #08543C, texto blanco.
   2) 2da fila de <thead> = etiquetas reales de columna — SIEMPRE #064330 (verde más oscuro), texto
      blanco. No confundir con el nivel 3.
   3) Fila con <th> (no <td>) que puede repetirse en cualquier punto del <tbody>, a modo de divisor de
      sección — ej. "Rango de saldo / Tasas de interés" separando el bloque de montos del de tasas —
      #E6EDEB, texto #08543C. Así no hace falta que quien edite sepa de antemano cuántos niveles de
      header va a necesitar: un <tr><th>...</th></tr> en cualquier punto del tbody ya se ve como header
      de sección, distinto del header de columna real. */
.bnsc-tarifa-scroll thead tr:first-child th {
	background: #08543C;
	color: #FFFFFF;
	font-weight: 700;
	text-align: center;
	padding: 14px 16px;
}

.bnsc-tarifa-scroll thead tr:nth-child(n+2) th,
.bnsc-tarifa-scroll tbody tr.bnsc-tarifa-colhead > th {
	background: #064330;
	color: #FFFFFF;
	font-weight: 700;
	text-align: center;
	padding: 12px 16px;
}

.bnsc-tarifa-scroll tbody tr th {
	background: #F6F6F6;
	color: #08543C;
	font-weight: 700;
	text-align: center;
	padding: 12px 16px;
}

.bnsc-tarifa-scroll thead tr th:first-child,
.bnsc-tarifa-scroll tbody tr th:first-child {
	text-align: left;
}

/* Bordes solo horizontales (separan fila de fila) — nunca verticales entre columnas, así la tabla no
   se ve como una grilla encajonada. */
.bnsc-tarifa-scroll th,
.bnsc-tarifa-scroll td {
	border-left: 0;
	border-right: 0;
	border-top: 0;
	border-bottom: 1px solid #CDDCD8;
}

/* El theme "Hello Elementor" trae un reset.css propio con rayado de tabla genérico
   (table tbody > tr:nth-child(2n+1) > td, especificidad (0,1,4)) que le pintaba un gris sutil a las
   filas impares de ESTA tabla también, aunque no es nuestro — ajuste de diseño 2026-08-18: todas las
   celdas en blanco, sin excepción. Se repite la clase para tener más especificidad real que el reset
   del theme, mismo criterio ya usado con Gravity Forms (ver navbar.css sección GF), no !important. */
.bnsc-tarifa-scroll.bnsc-tarifa-scroll table tbody tr > td {
	background: #FFFFFF;
}

.bnsc-tarifa-scroll tbody td {
	padding: 12px 16px;
	text-align: center;
	color: #5A7592;
	white-space: nowrap;
}

.bnsc-tarifa-scroll tbody td:first-child {
	text-align: left;
	color: #08543C;
	font-weight: 700;
	white-space: normal;
}

/* Normalización al renderizar (2026-10-02, bnsc_tarifa_normalize_html en banesco-shortcode-tarifario.php):
   - td.bnsc-tarifa-cont: 1ra celda de una fila cuya columna 0 está ocupada por una etiqueta con rowspan de
     arriba (ej. 2da línea de "Membresía anual" en Tarjetas de crédito) — es un DATO, no una etiqueta.
   - td.bnsc-tarifa-long: texto largo (>45 car.) — puede bajar de línea en vez de estirar la tabla. */
/* El rayado del reset.css de Hello (table tbody>tr:nth-child(2n+1)>th, especificidad 0,1,4) también pinta las
   <th> de filas impares: las bandas de sección salían una gris y otra verde según la posición. Clase repetida
   (0,2,4) para que todas las bandas usen el mismo gris claro de la tabla de referencia, y la fila de títulos de
   columna detectada en el cuerpo siga en verde oscuro. */
.bnsc-tarifa-scroll.bnsc-tarifa-scroll tbody tr > th {
	background: #F6F6F6;
}

.bnsc-tarifa-scroll.bnsc-tarifa-scroll tbody tr.bnsc-tarifa-colhead > th {
	background: #064330;
	color: #FFFFFF;
}

.bnsc-tarifa-scroll tbody td.bnsc-tarifa-cont {
	text-align: center;
	color: #5A7592;
	font-weight: 400;
}

.bnsc-tarifa-scroll tbody td.bnsc-tarifa-long {
	white-space: normal;
	min-width: 220px;
}

.bnsc-tarifa-scroll table + table {
	margin-top: 32px;
}

.bnsc-tarifa-scroll caption {
	caption-side: top;
	text-align: left;
	font-weight: 700;
	color: #08543C;
	padding: 12px 16px;
}

@media (max-width: 767px) {
	.bnsc-tarifa-wrap .bnsc-boxed {
		padding-top: 32px;
		padding-bottom: 40px;
	}
}

/* ---- Carrusel Categorías de Partner (Directorio de Partners) — shortcode bnsc_partner_carousel.
   Mismo mecanismo de JS que bnsc_card_carousel (track + slide.is-active + flechas + puntos, sin
   dependencias) con un estilo visual propio: pastilla "eyebrow" + título grande + descripción a la
   izquierda, foto redondeada a la derecha (no la franja de acento navy que usa bnsc-cardcar). ---- */
.bnsc-ptc {
	width: 100%;
}

.bnsc-ptc-track {
	position: relative;
	width: 100%;
}

/* El padding de la tarjeta envuelve solo el texto -- la foto va pegada a los bordes derecho/superior/
   inferior del contenedor (mismo criterio que el media query de mobile de acá abajo, pedido
   explícitamente 2026-08-18). overflow:hidden para que la foto respete border-radius en las
   esquinas en vez de sobresalir en ángulo recto. */
.bnsc-ptc-slide {
	display: none;
	align-items: center;
	gap: 56px;
	background: #F6F6F6;
	border-radius: 24px;
	overflow: hidden;
}

.bnsc-ptc-slide.is-active {
	display: flex;
}

.bnsc-ptc-texto {
	flex: 1 1 46%;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
	padding: 48px 0 48px 56px;
}

.bnsc-ptc-eyebrow {
	display: inline-block;
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #173358;
	background: #E4E9F1;
	border-radius: 100px;
	padding: 6px 16px;
}

.bnsc-ptc-titulo {
	font-family: 'Poppins', sans-serif;
	font-weight: 300;
	font-size: 34px;
	line-height: 1.15;
	color: #08543C;
	margin: 0;
}

.bnsc-ptc-desc {
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	line-height: 1.6;
	color: #5A6B7B;
	margin: 0;
	max-width: 460px;
}

/* La foto viene recortada en Figma con su propia máscara orgánica + el arco navy decorativo ya
   compuestos en el PNG (transparente alrededor) -- por eso ya no se fuerza un marco rectangular
   (border-radius/overflow/aspect-ratio) como antes, que le recortaba el arco. Las categorías que
   todavía no tienen foto real (caen al placeholder de Elementor) se ven más chicas/centradas mientras
   tanto -- gap de contenido conocido, no un bug de este fix. */
.bnsc-ptc-media {
	flex: 1 1 54%;
}

.bnsc-ptc-media img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 420px;
	object-fit: contain;
}

.bnsc-ptc-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 24px;
	margin-top: 32px;
}

.bnsc-ptc-arrows {
	display: flex;
	gap: 10px;
}

/* mismos assets de flecha que bnsc-cardcar (cardcar-arrow-*.png) -- ver el gotcha ya documentado
   ahí: usar background-color, nunca el shorthand "background", o :hover/:focus le borran el ícono. */
.bnsc-ptc-arrow {
	width: 36px;
	height: 36px;
	background-color: transparent;
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center;
	border: 0;
	cursor: pointer;
	outline: none;
	-webkit-appearance: none;
	appearance: none;
}

.bnsc-ptc-prev {
	background-image: url("cardcar-arrow-prev.png");
}

.bnsc-ptc-next {
	background-image: url("cardcar-arrow-next.png");
}

.bnsc-ptc-dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.bnsc-ptc-dot {
	width: 8px;
	height: 8px;
	border-radius: 3px;
	background: #DDE3EA;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease, border-radius 0.2s ease;
}

.bnsc-ptc-dot.is-active {
	width: 26px;
	border-radius: 100px;
	background: #173358;
}

@media (max-width: 767px) {
	/* El padding de la tarjeta pasa a envolver solo el texto -- la foto va pegada a los bordes
	   izquierdo/derecho/inferior del contenedor (sin padding), por eso el padding se saca de acá y
	   se mueve a .bnsc-ptc-texto; overflow:hidden acá para que la foto respete el border-radius de la
	   tarjeta en vez de sobresalir en las esquinas. */
	.bnsc-ptc-slide.is-active {
		flex-direction: column;
		align-items: stretch;
		gap: 24px;
		padding: 0;
		overflow: hidden;
	}

	.bnsc-ptc-texto {
		padding: 28px 24px 0;
	}

	.bnsc-ptc-media img {
		max-height: 260px;
	}

	.bnsc-ptc-titulo {
		font-size: 26px;
	}
}

/* ---- Carrusel "peek" de Productos PYME (familia "PYME: Soluciones de...", 2026-08-17) — a
   diferencia de bnsc-ptc/bnsc-cardcar/bnsc-hc (un slide a la vez), acá se ven ~2 tarjetas completas +
   un adelanto de la siguiente, con scroll-snap nativo (swipe táctil gratis, sin JS de touch). ---- */
.bnsc-pymc-track {
	display: flex;
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.bnsc-pymc-track::-webkit-scrollbar {
	display: none;
}

.bnsc-pymc-card {
	flex: 0 0 auto;
	scroll-snap-align: start;
	width: calc(50% - 12px);
	display: flex;
	align-items: center;
	gap: 24px;
	background: #F5F6F7;
	border-radius: 18px;
	padding: 24px;
}

.bnsc-pymc-icono {
	flex: 0 0 auto;
	width: 90px;
	height: 90px;
}

.bnsc-pymc-icono img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.bnsc-pymc-texto {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
}

.bnsc-pymc-titulo {
	font-family: 'Poppins';
	font-weight: 300;
	font-size: 21px;
	color: #08543C;
	line-height: 1.2;
}

.bnsc-pymc-desc {
	font-family: 'Lato';
	font-weight: 400;
	font-size: 15px;
	line-height: 1.5;
	color: #5A6B7B;
}

.bnsc-pymc-btn {
	display: inline-block;
	margin-top: 4px;
	background: #08543C;
	color: #FFFFFF !important;
	font-family: 'Lato';
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	border-radius: 5px;
	padding: 13px 36px;
}

.bnsc-pymc-btn:hover {
	background: #0B3625;
}

/* ---- Variante "tarjeta única" (ej. módulo de Seguros, sin carrusel real detrás) -- ancho completo,
   sin scroll-snap ni controles (el shortcode ya los omite si hay 1 sola tarjeta). ---- */
.bnsc-pymc--single .bnsc-pymc-track {
	overflow: visible;
}

.bnsc-pymc--single .bnsc-pymc-card {
	width: 100%;
	align-items: flex-start;
}

.bnsc-pymc--single .bnsc-pymc-icono {
	margin-top: 4px;
}

.bnsc-pymc-subtitulo {
	font-family: 'Lato';
	font-weight: 700;
	font-size: 15px;
	line-height: 1.5;
	color: #516986;
}

.bnsc-pymc-lista {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 4px 32px;
	width: 100%;
	margin-top: 4px;
}

.bnsc-pymc-lista ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.bnsc-pymc-lista li {
	position: relative;
	padding-left: 14px;
	font-family: 'Lato';
	font-weight: 400;
	font-size: 14px;
	line-height: 1.9;
	color: #516986;
}

.bnsc-pymc-lista li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.85em;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: #516986;
}

@media (max-width: 767px) {
	.bnsc-pymc-lista {
		grid-template-columns: 1fr;
	}
}

.bnsc-pymc-controls {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin-top: 24px;
}

.bnsc-pymc-arrows {
	display: flex;
	gap: 8px;
}

.bnsc-pymc-arrow {
	width: 44px;
	height: 44px;
	border-radius: 0;
	border: 0;
	background: center center no-repeat;
	background-size: contain;
	cursor: pointer;
	background-image: url('cardcar-arrow-prev.png');
}

.bnsc-pymc-next {
	background-image: url('cardcar-arrow-next.png');
}

.bnsc-pymc-dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.bnsc-pymc-dot {
	width: 8px;
	height: 8px;
	border-radius: 3px;
	background: #DDE3EA;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease, border-radius 0.2s ease;
}

.bnsc-pymc-dot.is-active {
	width: 26px;
	border-radius: 100px;
	background: #08543C;
}

@media (max-width: 1024px) {
	.bnsc-pymc-card {
		width: 100%; /* 2026-10-05: 1 completa en tablet (antes 70% + adelanto) */
	}
}

@media (max-width: 767px) {
	.bnsc-pymc-card {
		width: 100%;
		flex-direction: column;
		align-items: flex-start;
		text-align: left;
	}
}

/* ---- Carrusel "peek" de Equipo (foto+nombre+cargo+contacto, familia Capital Humano, 2026-09-09) --
   misma mecánica de scroll-snap de .bnsc-pymc-* (JS gemelo en banesco-shortcode-team-carousel.php).
   Tarjeta HORIZONTAL: foto circular grande a la izquierda + texto a la derecha, fondo blanco sobre la
   sección gris, 2 tarjetas visibles + adelanto de la 3ra (fiel a la referencia de Figma 2026-09-09). ---- */
.bnsc-teamcar-track {
	display: flex;
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.bnsc-teamcar-track::-webkit-scrollbar {
	display: none;
}

.bnsc-teamcar-card {
	flex: 0 0 auto;
	scroll-snap-align: start;
	width: calc((100% - 24px) / 2); /* 2026-10-05: sin tarjeta cortada — las visibles llenan exactamente el área (antes quedaba un "adelanto" de la siguiente). */
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 32px;
	background: #FFFFFF;
	border-radius: 24px;
	padding: 40px;
}

.bnsc-teamcar-foto {
	flex: 0 0 auto;
	width: 180px;
	height: 180px;
	border-radius: 50%;
	overflow: hidden;
}

.bnsc-teamcar-foto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Círculo vacío mientras no hay foto real todavía (ver banesco-shortcode-team-carousel.php) --
   nunca una imagen inventada, solo un placeholder neutro. */
.bnsc-teamcar-foto--vacia {
	background: #E2E6E4;
}

.bnsc-teamcar-texto {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 12px;
}

.bnsc-teamcar-nombre {
	font-family: 'Poppins';
	font-weight: 300;
	font-size: 28px;
	color: #08543C;
	line-height: 1.2;
	margin: 0;
}

.bnsc-teamcar-cargo {
	font-family: 'Lato';
	font-weight: 400;
	font-size: 16px;
	line-height: 1.4;
	color: #5A7592;
	margin: 0;
}

.bnsc-teamcar-btn {
	display: inline-block;
	margin-top: 8px;
	background: #08543C;
	color: #FFFFFF !important;
	font-family: 'Lato';
	font-weight: 400;
	font-size: 16px;
	text-decoration: none;
	border-radius: 5px;
	padding: 13px 36px;
}

.bnsc-teamcar-btn:hover {
	background: #064330;
}

.bnsc-teamcar--single .bnsc-teamcar-track {
	overflow: visible;
}

.bnsc-teamcar--single .bnsc-teamcar-card {
	width: 100%;
}

.bnsc-teamcar-controls {
	display: flex;
	align-items: center;
	gap: 24px;
	margin-top: 32px;
}

.bnsc-teamcar-arrows {
	display: flex;
	gap: 12px;
}

/* Flechas = mismo PNG del kit que usan bnsc-pymc/bnsc-cardcar (óvalo suave + chevron ya integrados
   en el PNG), no dibujadas en CSS. background-color (no el shorthand) para no pisar el
   background-image al pasar el mouse/foco. */
.bnsc-teamcar-arrow {
	width: 48px;
	height: 48px;
	border: 0;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	cursor: pointer;
}

.bnsc-teamcar-prev {
	background-image: url('cardcar-arrow-prev.png');
}

.bnsc-teamcar-next {
	background-image: url('cardcar-arrow-next.png');
}

.bnsc-teamcar-dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.bnsc-teamcar-dot {
	width: 28px;
	height: 8px;
	border-radius: 100px;
	background: #CDDCD8;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease;
}

.bnsc-teamcar-dot.is-active {
	width: 40px;
	background: #08543C;
}

@media (max-width: 1024px) {
	.bnsc-teamcar-card {
		width: 100%; /* 2026-10-05: 1 completa en tablet (antes 80% + adelanto) */
	}
}

@media (max-width: 767px) {
	.bnsc-teamcar-card {
		width: 100%; /* 2026-10-05: 1 completa en móvil (antes 85% + adelanto) */
		flex-direction: column;
		text-align: center;
		gap: 20px;
		padding: 32px 24px;
	}
	.bnsc-teamcar-texto {
		align-items: center;
	}
}

/* Variante "perfil" -- Junta Directiva de Somos Banesco (Figma 11518:5, 2026-10-02):
   [bnsc_team_carousel grupo="junta-directiva" variante="perfil"]. La foto ya trae su forma (óvalo
   inclinado) recortada en el PNG con alfa, así que no lleva el círculo CSS; tarjeta alineada arriba,
   cargo en azul medium y reseña (campo bnsc_tm_bio). */
.bnsc-teamcar--perfil .bnsc-teamcar-card {
	align-items: flex-start;
	gap: 24px;
	border-radius: 16px;
	padding: 34px 24px;
}

.bnsc-teamcar--perfil .bnsc-teamcar-foto {
	height: auto;
	border-radius: 0;
	overflow: visible;
}

.bnsc-teamcar--perfil .bnsc-teamcar-foto img {
	height: auto;
	object-fit: contain;
}

.bnsc-teamcar--perfil .bnsc-teamcar-texto {
	gap: 16px;
}

.bnsc-teamcar--perfil .bnsc-teamcar-cargo {
	color: #143B64;
	font-weight: 700;
}

.bnsc-teamcar-bio {
	font-family: 'Lato';
	font-size: 16px;
	line-height: 1.4;
	color: #5A7592;
	margin: 0;
}

@media (max-width: 767px) {
	.bnsc-teamcar--perfil .bnsc-teamcar-card {
		align-items: center;
	}
	/* Con 7+ personas (Junta Directiva) flechas + puntos de 28/40px medían ~412px y desbordaban la página a 390px:
	   puntos más cortos en móvil y, si aun así no entran, bajan a otra línea en vez de empujar el ancho. */
	.bnsc-teamcar-controls {
		flex-wrap: wrap;
		gap: 16px;
	}
	.bnsc-teamcar-dots {
		flex-wrap: wrap;
		min-width: 0;
	}
	.bnsc-teamcar-dot {
		width: 16px;
	}
	.bnsc-teamcar-dot.is-active {
		width: 28px;
	}
}

/* ---- Carrusel "Un poco de nuestra historia" (imagen circular izq + título + texto der, familia
   Capital Humano / Cooltura, 2026-09-11) -- misma mecánica scroll-snap de .bnsc-teamcar-* (JS gemelo
   en banesco-shortcode-historia-carousel.php). 1 tarjeta visible + adelanto de la siguiente. ---- */
.bnsc-histcar-track {
	display: flex;
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.bnsc-histcar-track::-webkit-scrollbar {
	display: none;
}

.bnsc-histcar-card {
	flex: 0 0 auto;
	scroll-snap-align: start;
	width: 100%; /* 2026-10-05: sin tarjeta cortada — las visibles llenan exactamente el área (antes quedaba un "adelanto" de la siguiente). */
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 48px;
	background: #FFFFFF;
	border-radius: 24px;
	padding: 40px 48px;
}

.bnsc-histcar-foto {
	flex: 0 0 auto;
	width: 300px;
	height: 300px;
	border-radius: 50%;
	overflow: hidden;
}

.bnsc-histcar-foto img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.bnsc-histcar-foto--vacia {
	background: #E2E6E4;
}

.bnsc-histcar-texto {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.bnsc-histcar-titulo {
	font-family: 'Poppins';
	font-weight: 300;
	font-size: 32px;
	color: #08543C;
	line-height: 1.2;
	margin: 0;
}

.bnsc-histcar-desc {
	font-family: 'Lato';
	font-weight: 400;
	font-size: 16px;
	line-height: 1.55;
	color: #5A7592;
}

.bnsc-histcar-desc p {
	margin: 0 0 12px;
}

.bnsc-histcar--single .bnsc-histcar-track {
	overflow: visible;
}

.bnsc-histcar--single .bnsc-histcar-card {
	width: 100%;
}

.bnsc-histcar-controls {
	display: flex;
	align-items: center;
	gap: 24px;
	margin-top: 28px;
}

.bnsc-histcar-arrows {
	display: flex;
	gap: 12px;
}

.bnsc-histcar-arrow {
	width: 48px;
	height: 48px;
	border: 0;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	cursor: pointer;
}

.bnsc-histcar-prev {
	background-image: url('cardcar-arrow-prev.png');
}

.bnsc-histcar-next {
	background-image: url('cardcar-arrow-next.png');
}

.bnsc-histcar-dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.bnsc-histcar-dot {
	width: 28px;
	height: 8px;
	border-radius: 100px;
	background: #CDDCD8;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease;
}

.bnsc-histcar-dot.is-active {
	width: 40px;
	background: #08543C;
}

@media (max-width: 900px) {
	.bnsc-histcar-card {
		width: 100%;
		flex-direction: column;
		text-align: center;
		gap: 24px;
		padding: 32px 24px;
	}
	.bnsc-histcar-foto {
		width: 220px;
		height: 220px;
	}
	.bnsc-histcar-texto {
		align-items: center;
	}
}

/* ---- Carrusel "Nuestros Valores" (arte tipográfico izq + título + bullets der, Cooltura, 2026-09-11)
   -- misma mecánica scroll-snap; 2 tarjetas visibles + peek (a diferencia de historia, que es 1). ---- */
.bnsc-valcar-track {
	display: flex;
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	-ms-overflow-style: none;
}

.bnsc-valcar-track::-webkit-scrollbar {
	display: none;
}

.bnsc-valcar-card {
	flex: 0 0 auto;
	scroll-snap-align: start;
	width: calc((100% - 24px) / 2); /* 2026-10-05: sin tarjeta cortada — las visibles llenan exactamente el área (antes quedaba un "adelanto" de la siguiente). */
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	gap: 24px;
	padding: 8px;
}

.bnsc-valcar-art {
	flex: 0 0 auto;
	width: 140px;
	height: 170px;
}

.bnsc-valcar-art img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.bnsc-valcar-art--vacia {
	background: #E2E6E4;
	border-radius: 12px;
}

.bnsc-valcar-texto {
	flex: 1 1 auto;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.bnsc-valcar-titulo {
	font-family: 'Poppins';
	font-weight: 300;
	font-size: 24px;
	color: #08543C;
	line-height: 1.2;
	margin: 0;
}

.bnsc-valcar-desc {
	font-family: 'Lato';
	font-weight: 400;
	font-size: 15px;
	line-height: 1.5;
	color: #5A7592;
}

.bnsc-valcar-desc ul {
	margin: 0;
	padding-left: 18px;
}

.bnsc-valcar-desc li {
	margin: 0 0 8px;
}

.bnsc-valcar-controls {
	display: flex;
	align-items: center;
	gap: 24px;
	margin-top: 28px;
}

.bnsc-valcar-arrows {
	display: flex;
	gap: 12px;
}

.bnsc-valcar-arrow {
	width: 48px;
	height: 48px;
	border: 0;
	background-color: transparent;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	cursor: pointer;
}

.bnsc-valcar-prev {
	background-image: url('cardcar-arrow-prev.png');
}

.bnsc-valcar-next {
	background-image: url('cardcar-arrow-next.png');
}

.bnsc-valcar-dots {
	display: flex;
	align-items: center;
	gap: 8px;
}

.bnsc-valcar-dot {
	width: 28px;
	height: 8px;
	border-radius: 100px;
	background: #CDDCD8;
	border: 0;
	padding: 0;
	cursor: pointer;
	transition: width 0.2s ease, background-color 0.2s ease;
}

.bnsc-valcar-dot.is-active {
	width: 40px;
	background: #08543C;
}

@media (max-width: 900px) {
	.bnsc-valcar-card {
		width: 100%; /* 2026-10-05: 1 completa (antes 90% + adelanto) */
	}
}

/* ---- Grid "Rituales y actividades coolturales" (foto + título + texto, 3 col + "Cargar más",
   Cooltura, 2026-09-11). ---- */
.bnsc-rit-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 28px;
}

.bnsc-rit-card {
	display: flex;
	flex-direction: column;
	background: #FFFFFF;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 2px 16px rgba(17, 74, 52, 0.06);
}

.bnsc-rit-card.bnsc-rit-hidden {
	display: none;
}

.bnsc-rit-foto {
	width: 100%;
	aspect-ratio: 16 / 10;
	overflow: hidden;
}

.bnsc-rit-foto img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.bnsc-rit-foto--vacia {
	background: #E2E6E4;
}

.bnsc-rit-titulo {
	font-family: 'Poppins';
	font-weight: 300;
	font-size: 22px;
	color: #08543C;
	line-height: 1.2;
	margin: 24px 24px 8px;
}

.bnsc-rit-desc {
	font-family: 'Lato';
	font-weight: 400;
	font-size: 15px;
	line-height: 1.5;
	color: #5A7592;
	margin: 0 24px 28px;
}

.bnsc-rit-footer {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	margin-top: 40px;
}

.bnsc-rit-count {
	font-family: 'Lato';
	font-size: 14px;
	color: #5A7592;
	margin: 0;
}

.bnsc-rit-more {
	background: #08543C;
	color: #FFFFFF;
	font-family: 'Lato';
	font-weight: 400;
	font-size: 16px;
	border: 0;
	border-radius: 5px;
	padding: 13px 36px;
	cursor: pointer;
}

.bnsc-rit-more:hover {
	background: #0B3625;
}

@media (max-width: 900px) {
	.bnsc-rit-grid {
		grid-template-columns: 1fr;
	}
}

/* ---- Gravity Forms - estilo base del sitio (piloto Pago DGI, 2026-08-17) ----
   El tema propio de Gravity Forms (gravity-theme.min.css) no está cargando en este sandbox
   (renderiza con la clase "gform-theme--no-framework" -- probablemente por no haber pasado el wizard
   de configuración inicial, que requiere licencia activa). Igual carga su propio `basic.min.css` base
   con selectores de 3 clases (ej. ".gform_wrapper.gravity-theme .gform_fields { display:grid }") que
   le ganan en especificidad a un selector nuestro de solo 2 clases sin importar el orden de carga --
   por eso varias reglas de acá repiten ".gform_wrapper" a propósito (no es un error de tipeo, es para
   igualar/superar esa especificidad real, más robusto que pelear por orden de carga). Se estiliza acá
   directo con la identidad del sitio -- aplica a CUALQUIER formulario de Gravity Forms que se agregue
   de ahora en más, no solo a Pago DGI. */
.gform_wrapper {
	font-family: 'Lato', sans-serif;
}

.gform_wrapper.gform_wrapper.gravity-theme .gform_fields {
	display: flex;
	flex-flow: row wrap;
	gap: 24px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.gform_wrapper .gfield {
	flex: 1 1 100%;
	min-width: 0;
}

.gform_wrapper .gfield_label,
.gform_wrapper .gform-field-label {
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 15px;
	color: #173358;
	margin: 0 0 8px;
	display: inline-block;
}

.gform_wrapper .gfield_required_text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
}

/* GF (requiredIndicator=asterisk) ya imprime su propio asterisco nativo en .gfield_required_asterisk.
   Antes el kit agregaba OTRO vía .gfield_required::before, pero como el label anida dos spans
   .gfield_required (y la leyenda comparte ambas clases), el ::before se aplicaba de más y salían
   asteriscos duplicados (* **). Se elimina el ::before y se estiliza en rojo el asterisco nativo:
   queda un único * por campo y "*" en la leyenda, igual que el sitio en vivo. */
.gform_wrapper .gfield_required_asterisk {
	color: #D1453B;
	text-decoration: none;
}

.gform_wrapper input[type="text"],
.gform_wrapper input[type="email"],
.gform_wrapper input[type="tel"],
.gform_wrapper input[type="number"],
.gform_wrapper input[type="url"],
.gform_wrapper select,
.gform_wrapper textarea {
	width: 100%;
	border: 1px solid #D9E0E6;
	border-radius: var(--bnsc-radius-control);
	padding: 13px 16px;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	color: #33475B;
	background: #FFFFFF;
	box-sizing: border-box;
	transition: border-color 0.15s ease;
}

.gform_wrapper input:focus,
.gform_wrapper select:focus,
.gform_wrapper textarea:focus {
	outline: none;
	border-color: #08543C;
}

.gform_wrapper select {
	appearance: none;
	-webkit-appearance: none;
	background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="14" height="8" viewBox="0 0 14 8"><path d="M1 1L7 7L13 1" stroke="%23516986" stroke-width="1.6" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>');
	background-repeat: no-repeat;
	background-position: right 16px center;
	padding-right: 42px;
}

.gform_wrapper .ginput_counter,
.gform_wrapper .gfield_description {
	font-size: 13px;
	color: #8A97A3;
	margin-top: 6px;
}

.gform_wrapper .validation_message {
	color: #D1453B;
	font-size: 13px;
	margin-top: 6px;
}

.gform_wrapper input.gfield_error,
.gform_wrapper select.gfield_error {
	border-color: #D1453B;
}

.gform_wrapper .gform_validation_errors {
	background: #FBEAE9;
	border: 1px solid #D1453B;
	border-radius: 8px;
	padding: 16px 20px;
	color: #B33228;
	font-size: 14px;
	margin-bottom: 24px;
}

/* Checkboxes tipo "tarjeta" (consentimientos con descripción larga, ej. Pago DGI). Especificidad
   igual a la regla propia de Gravity Forms ".gform_wrapper.gravity-theme fieldset" que resetea el
   fondo a "initial" -- se repite ".gform_wrapper" para ganar por especificidad real, no por orden de
   carga (más robusto ante cambios futuros de qué CSS de GF esté cargando). */
.gform_wrapper.gform_wrapper fieldset.gfield--type-checkbox {
	background: #F5F6F7;
	border-radius: 12px;
	padding: 20px 24px;
	border: 0;
	margin: 0;
}

.gform_wrapper fieldset.gfield--type-checkbox .gfield_label {
	font-size: 16px;
}

.gform_wrapper fieldset.gfield--type-checkbox .gfield_description {
	color: #5A6B7B;
	font-size: 14px;
	line-height: 1.6;
	margin: 8px 0 16px;
}

.gform_wrapper .gchoice {
	display: flex;
	align-items: flex-start;
	gap: 10px;
}

.gform_wrapper .gchoice input[type="checkbox"] {
	width: 18px;
	height: 18px;
	min-width: 18px;
	margin-top: 2px;
	accent-color: #08543C;
	cursor: pointer;
}

.gform_wrapper .gchoice label {
	font-size: 14px;
	color: #33475B;
	cursor: pointer;
}

/* Radios en 2 columnas tipo "pill" (ej. ¿Asistirá al evento? en Confirmación de Asistencia) */
.gform_wrapper .gfield_radio {
	display: flex;
	flex-flow: row wrap;
	gap: 16px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.gform_wrapper .gfield_radio .gchoice {
	flex: 1 1 calc(50% - 8px);
	border: 1px solid #D9E0E6;
	border-radius: 8px;
	padding: 13px 16px;
	align-items: center;
}

.gform_wrapper .gfield_radio input[type="radio"] {
	width: 18px;
	height: 18px;
	min-width: 18px;
	accent-color: #08543C;
	cursor: pointer;
}

.gform_wrapper .gfield_radio label {
	font-size: 15px;
	color: #33475B;
	cursor: pointer;
	margin: 0;
}

@media (max-width: 480px) {
	.gform_wrapper .gfield_radio .gchoice {
		flex: 1 1 100%;
	}
}

.gform_wrapper .gform_footer {
	margin-top: 8px;
}

.gform_wrapper .gform_button {
	background: #08543C;
	color: #FFFFFF;
	border: 0;
	border-radius: 5px;
	padding: 13px 36px;
	font-family: 'Lato', sans-serif;
	font-weight: 400;
	font-size: 16px;
	cursor: pointer;
	transition: background 0.15s ease;
}

.gform_wrapper .gform_button:hover {
	background: #0B3625;
}

.gform_wrapper .gform_confirmation_message {
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	color: #173358;
	background: #E7EBEF;
	border-radius: 12px;
	padding: 24px;
}

/* Columna angosta para formularios (ej. Pago DGI, Confirmación de Asistencia) -- max-width fijo en px
   centrado. Los controles "_element_width"/"_element_custom_width" (el patrón que sí funciona para
   WIDGETS, ej. headings) no generan ningún CSS cuando se ponen en un CONTENEDOR -- Elementor los
   ignora en silencio ahí y el contenedor queda al 100% (--container-widget-width:100%, confirmado en
   el CSS generado). En vez de pelear con eso, se fuerza directo con esta clase. */
.bnsc-form-narrow {
	max-width: 600px;
	width: 100% !important;
	margin-left: auto;
	margin-right: auto;
}

/* Pastilla "* señala los campos obligatorios" -- widget de texto aparte en Elementor, no es de GF */
.bnsc-gform-required-note {
	display: inline-block;
	background: #F5F6F7;
	border-radius: 100px;
	padding: 10px 24px;
	font-family: 'Lato', sans-serif;
	font-size: 13px;
	color: #8A97A3;
}

.bnsc-gform-required-note b {
	color: #D1453B;
	font-weight: 700;
}

/* Nombres/Apellidos en 2 columnas -- Pago DGI específicamente (IDs del formulario 1). El padre
   .gform_fields ya es flex-wrap con gap, así que alcanza con achicar el flex-basis a ~50% -- un
   .gfield "blockifica" cualquier display:inline-block propio por ser flex-item (spec real, no bug). */
#gform_1 #field_1_1,
#gform_1 #field_1_2 {
	flex: 1 1 calc(50% - 12px);
}

@media (max-width: 640px) {
	#gform_1 #field_1_1,
	#gform_1 #field_1_2 {
		flex: 1 1 100%;
	}
}

/* ---- Fila de botones del Hero con 2 CTAs (2026-09-08) ---- 35 instancias sitewide, todas con el
   mismo patrón exacto (flex_direction:row + flex_wrap:wrap, sin override de mobile/tablet) -- en
   desktop ya se ven uno al lado del otro (correcto), pero en mobile angosto el wrap los dejaba
   envueltos a su ancho de texto en vez de ocupar el 100% cada uno, apilados prolijos. */
@media (max-width: 767px) {
	.bnsc-hero-btns {
		flex-direction: column !important;
	}
	.bnsc-hero-btns > .elementor-widget-button {
		width: 100% !important;
	}
	.bnsc-hero-btns .elementor-button {
		width: 100%;
		text-align: center;
	}
}

/* ---- Foto redondeada con anillo decorativo (Empresas / Soluciones PYME, 2026-08-17) ----
   Repite 4 veces en esa página, cada bloque de solución con su propia foto. El anillo es un div
   decorativo posicionado detrás y desplazado arriba-izquierda de la foto, no un asset SVG -- más
   fácil de mantener/reusar que hornear el anillo en cada imagen. */
.bnsc-round-photo {
	position: relative;
	width: 300px;
	height: 300px;
	flex: 0 0 auto;
}

.bnsc-round-photo::before {
	content: '';
	position: absolute;
	top: -30px;
	left: -40px;
	width: 340px;
	height: 340px;
	border-radius: 50%;
	border: 1.5px solid #08543C;
	z-index: 0;
}

.bnsc-round-photo img {
	position: relative;
	z-index: 1;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	object-fit: cover;
	display: block;
}

@media (max-width: 767px) {
	.bnsc-round-photo {
		width: 220px;
		height: 220px;
		margin: 0 auto;
	}
	.bnsc-round-photo::before {
		top: -20px;
		left: -28px;
		width: 250px;
		height: 250px;
	}
}

/* ---- Foto "recortada tipo blob" con arco decorativo detrás (Préstamos personas, 2026-09-08) ----
   Mismo problema que resolvió .bnsc-round-photo (arriba): no tenemos fotos ya compuestas con el arco de
   marca "horneado" (como sí trae el Hero) para las secciones imagen+contenido (bnsc-img-fill dentro de
   "Banner pagos"), y las fotos planas a sangre llenando todo el rectángulo se ven pesadas/grandes.
   Mismo enfoque: recorte asimétrico (border-radius) en vez de sangre completa + arco como ::before
   detrás, en vez de tratar de hornear la decoración en cada imagen nueva. Opt-in vía clase adicional
   sumada a .bnsc-img-fill -- no se aplica a ninguna instancia existente sin agregar la clase. */
.bnsc-img-fill.bnsc-blob-photo {
	position: relative;
}

.bnsc-img-fill.bnsc-blob-photo::before {
	content: '';
	position: absolute;
	top: 10%;
	left: -12%;
	width: 60%;
	height: 60%;
	border: 2px solid #08543C;
	border-radius: 50%;
	z-index: 0;
}

.bnsc-img-fill.bnsc-blob-photo img {
	position: relative;
	z-index: 1;
	border-radius: 160px 32px 32px 32px !important;
}

@media (max-width: 767px) {
	.bnsc-img-fill.bnsc-blob-photo::before {
		width: 45%;
		height: 45%;
	}
	.bnsc-img-fill.bnsc-blob-photo img {
		border-radius: 90px 24px 24px 24px !important;
	}
}

/* ---- Formulario tipo wizard/pasos (ej. Banesco Partners "Completa tu solicitud", 2026-08-18) ----
   Barra de progreso propia (no la de Gravity Forms) porque solo se construye 1 paso a la vez -- cuando
   existan los 3 pasos reales se puede reconectar a page breaks de GF y sincronizar vía JS
   (gform_page_loaded). Por ahora los segmentos son estáticos, el activo se marca a mano con
   .is-active/.is-done. Reusable para cualquier página nueva con este mismo patrón. */
.bnsc-wizard-progress {
	width: 100%;
}

.bnsc-wizard-label {
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	font-weight: 700;
	color: #173358;
	margin: 0 0 10px;
}

.bnsc-wizard-bar {
	display: flex;
	gap: 12px;
}

.bnsc-wizard-seg {
	flex: 1 1 0;
	height: 6px;
	border-radius: 100px;
	background: #E3E7EA;
}

.bnsc-wizard-seg.is-active,
.bnsc-wizard-seg.is-done {
	background: #173358;
}

/* Botón "Siguiente" en navy en vez del verde default de GF -- específico de este formulario wizard */
.bnsc-wizard-form .gform_button {
	background: #173358;
}

.bnsc-wizard-form .gform_button:hover {
	background: #102340;
}

/* Par de campos en 2 columnas -- clase genérica (vs. selector por ID de #gform_1) para poder
   reusarse en cualquier formulario nuevo sin acordarse del ID numérico. */
.gform_wrapper.gform_wrapper.gravity-theme .bnsc-2col {
	flex: 1 1 calc(50% - 12px);
}

@media (max-width: 640px) {
	.gform_wrapper.gform_wrapper.gravity-theme .bnsc-2col {
		flex: 1 1 100%;
	}
}

/* Prefijo de bandera de país en el campo de teléfono (Panamá por default, decorativo -- no hay
   selector de código de país funcional todavía, ver ESTADO-PROYECTO.md). La bandera va embebida como
   data URI (no una URL a wp-content/uploads/) a propósito -- CSS no puede resolver la URL de un
   attachment dinámicamente como sí hace PHP (wp_get_attachment_url), así que una referencia directa al
   path local se rompería si algún día se activa un plugin de offload a S3 que borre el archivo del
   servidor después de subirlo (2026-08-19, ver ESTADO-PROYECTO.md). Embebida, no depende de la
   biblioteca de medios en absoluto. */
.gform_wrapper .bnsc-phone-flag .ginput_container_phone {
	position: relative;
}

.gform_wrapper.gform_wrapper .bnsc-phone-flag .ginput_container_phone input {
	padding-left: 52px;
}

.gform_wrapper .bnsc-phone-flag .ginput_container_phone::before {
	content: '';
	position: absolute;
	left: 16px;
	top: 50%;
	transform: translateY(-50%);
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAABYCAYAAABxlTA0AAAJ0ElEQVR4nO1ce4xUVxn/nXPPzOxjdqHFVrI8rNSs7R+aNLQRCysiLC4UEPqH7xCjqTEaNTGaFGOk2vQhamzVqql9BQtK08qjItUUthRagbQUsLaUbLUKXcpr2ZnZedyZe88x37n3bvc1uzOzM7tz7+yPXGb2nu+cufvb3/3O9333nGGoQiil1OCfAcaAeCqHuZ/ZiljCBBdcnx9kt+82hiqDQBUSWirYJ36vqo1w4WdC/UC4CCKxYxE+kUSLWiB2MokWtUTsZBAtapHYiSSa1zq5o02KVUUwEeuRS/9J6U+eieRyEs0roVq6zzif9BB0XCgXybwSLiGZzuGf/+nR7/2q5HKRzMtJrm07P3Ye68Y3fnHQ1+SWi2Q+Xn87+GqAnCWxadsJHHi5Gz1UM+BsWM2glvwyL1eUQGcNznRB5uVTFyGyFrY826XbLFsiCCiF5LJFEbYtYUuFX2//F8zLGVgRgb8ePq0V7fcJbzwoimApHf2OdBgG0wQ/sPM12GEDLCLQ+YrrJhiDlCP385v7KFbFBRNM1FJNNv/BcPi184hdSsIIcYQEh4xl8Kd9b7rtKm9fv6EYknmh5Eql8E5PCol0Th/ka/WRzKG3z8TFWAY/eOQlZE0bjDOQvS04dh86rdtiScfW6+eNQ2OSbVBJZgWRKxVytsRXfvo8dux9E+GGEJjB9eSlB9AuQCERz4CFxbv3PQOUaaNpWp12E5TjUYswOJQtkU3lsHbptXj4ex9DyOB5fXWhTzQmA2PVLwoq9tDtTwRs3vBx7Gp7P9ZteAbI2mDNESjLixAYjLAYrEYFGBGBRF/WTaABRsTETSBsYPs9HViz6H26iT4jiOCFhGT0u3vqWtt2DZ791Rq0f3QuVCKLuvoQuDDAheMWhkIqpdvIhmypD/WlMWgsfRGc+dIXF+IqeDHxLt3mlq2w9IYWPHPfatyyZB4yb8chpXT1mWcsUAQitS31ob40Bo3luA5/YzSSi46DheGQTILecfcnccd3FmF6YxiwnShh2IczCpKVtiFb6kN9aQwaK+jgpdR0iRhtoRQ2fmk+brvlOqi+rJ68htty3UY2ZEt9qG/QyM2n4nFlcgbnyGRt/GFvF9Ag+lNios6jz6JzDULbkC31qSXwUp9I0ORFt3/nsbO4dJ6SC8MNpxiIZhrEcJVObWRDttTHj3FvqSouWU5eafLI6+eRi5sQwtDFHmlaWr3EoRU3EQpx3UY2ZDuwby2Al/o8jXwoFXKOnDwP1hjSdQgrncOMxjD+tmkFnr9/FdpvmoPsuT4dQRjRsLalPkHzv6OpuMR6sBO7UiFn39FuKM5gJUysXjwPbzz5ebTPn4W2D83Enl+uxh3fXgglATtj4bnj76AnkQ1EjbhQ8FLU601m2zr/jczZBK6aVoenf7YSu+5ajhnRiFYzHcyNMvb8pAMdbdcg9cYFbOsMVo14LBWLUtWbNm08sa8L7cuuxRN3LtdxrvcnIl/sIWdJLJs/Sx8bPjADe46cwZdXfBD1EdFfYwgySlp4QgSaWQvf/+INWLlgrj5Hih1IrIeQ4I6aAdzz9QX4+0tnNOnR+tpwE0UT7CluelOkn1zvcVE+GG4buYXlN84eNlbgfXApq3GoAymzGKKE4ai5BoTb74dLXptGnI6m2nwwauz5XG3lrZOAKYIrDO7n1ZB+8MNTCq4wpgiuMKYIrjCcfLXaobxXH1zrEAg/pFPMu0QhwDh31lDQoyhUP4RM9qHaobx1LJkcsskUcj1ZQNCqFlQ9WNeN1/ngMgHFDUT6LuOFRetxcuHnwKUJxQxUO4Qdj8EP4EIgce4C1t00E5H1H4ZfIJioiv3gY0MI8FAIsbSFKywJZVtgRvVfuz+iCIK7mJiKRVRjVuB6nVu1o/qv0OeYIrjCmCK4wuCtr5+p/kzDp2CMsSkFexMo7dKpAKo/zpkIVHA3zpSCAchUCuapk/q9KrOSNcG16oeVbevX9JEXcX7j7WV1E+R/6bW2FcwYlGXh8sO/RerQQdjxXl2tK2fyVbsEK6XJlH0JmK8eh8pkkHj6z4OUXQ7ULMGKSJQ2erc8CqunB7y+Hsn9nVrRKOMq/P6RAumHVZ7N0aRew9ATWmzrZrBIGKwugvShFyBjvc6evXFsrvb8b/AVzEbdXI3M8aOwzp0FC4XBRAhWz0XEd+8Ys1/JcTCp+NT1s31SXhsDSsK+dBGsodH5mdbRuXsbFL2XFi7dtwkqa2r3QO1EdGr/XjSvuRWMC9oY6BBKjLhLvlQqCWPGe4A8OdpA9QY30ZBOvfjCpjuR+MsO8MZGrVDtXwmuC7Bjl8Gbp/VPajwaRfK5vXhr2c2OH3bdAdXMlZWDTCbRtGot3nvXz51adAG+ehjBgVAxY5rQmffej2j7CnR/dT1k1oQx/QqoXE4rmdG/SN3g2Jd8c309ZCLubFsn0YdCsHsvg4cjaHlwM6JLO/K6iaHqDa4PZu/6y2j7Ssz+4040LmnXE5inZnpCMmJiQefo6bUIaVvqQ31pDBqrWF88IsGBiSgY07d/w4KFmPP4U4iu/BRy/32rsIxNSm1LfagvjaFdSRHqDa6CB0CHY9rHMrT87jFc/aN7waNN+cly/yhkQ7bUh/rSORqrWOQlODAqhkOyE8MCM775XTR/+guQsdiIhNE5aiMbstURhBs35x1/lC+7GFXBQSKZQKkxhWWUElPEMFJK7Kg3qm3IVtcmRsFo5NaEi+iHu2csdfhFWGe7wcJhb0/aMKVTG9mQrRMHlx5UjUlwUFSsXLVmTryiwy6KbbV/TqddA+WcD4V0m93bo20H9i1WvQUrOAgkMyLTspA5cUxPYEQorcuj97Me2orZFCm0LUHu7TM6gjCap2tb6jOiry7wS4YKdhG+Jlk5roBi2vShg2DCgB3rRbRjFeYdOIqGm9tQP/8jmLNlO67eeDdta4PKpJE+8g/IeO+grK4Ycov2wX4lWbm3eGLPTuRO/w/G9Csx69FtaPnNYzpV1nGxWz2jyGHWg4+jcdkKmK92IbF756AxiiE3uLWIEdSrzAwSu3ehafU6tDzwSL+b0Bgw0VEqTYqmI3L9j5E80InmWz+rU+hSJruiCfZjrYKRezBNXPm1b6Fx8VJ9Ll/iQJMcFeIpubjq9h8idXC/LvRw3li0ektWsOcqfEE0czghV+CRO1biAO600QTXsGhxScT2D4VxwHc+Wbo1iAL50qHcOL+ScNyJhq9I5sX9uuMlV38kygBfkTyB5JY1ivCVX54AYitWi/CzmlkFvgK2InGw39TMKvjduhVNNFqrnOhKEjuhmVxrlRE9EcROSqrcOslETySxk1qLaB0yEVaK8MkgtCqLPa1lIrwaCB2K/wPO8hQPahwpFAAAAABJRU5ErkJggg==');
	background-size: cover;
	z-index: 1;
}

.gform_wrapper .bnsc-phone-flag .ginput_container_phone::after {
	content: '';
	position: absolute;
	left: 38px;
	top: 50%;
	transform: translateY(-50%);
	width: 0;
	height: 0;
	border-left: 4px solid transparent;
	border-right: 4px solid transparent;
	border-top: 4px solid #8A97A3;
	z-index: 1;
}

/* 3 tarjetas en fila (ej. Préstamo Goleador, "Vive la experiencia a tu manera") -- mismo gotcha que
   .bnsc-form-narrow: el control "width" de Elementor no genera CSS en un CONTENEDOR, cae siempre a
   --container-widget-width:100% aunque el campo tenga un valor guardado. Se fuerza acá en vez de
   depender del control. El padre debe ser flex row + wrap + gap ~24px. */
.bnsc-col-3 {
	width: calc(33.333% - 16px) !important;
}

@media (max-width: 1024px) {
	.bnsc-col-3 {
		width: 100% !important;
	}
}

/* ---- Grid "Elige tu cuenta" (plantilla 605) → carrusel táctil solo en mobile (2026-08-18) ----
   En desktop no se toca nada (sigue siendo el grid/fila de siempre). En mobile, .bnsc-cardgrid-row
   pasa a display:contents para "disolver" el contenedor de fila y que sus Cards se acomoden directo
   en la columna del padre (.bnsc-cardgrid, que ya es flex_direction:column) -- de ahí en más es el
   mismo patrón probado de .bnsc-ptc/.bnsc-cardcar: slide oculto por default, .is-active lo muestra,
   navbar.js arma los dots. Sin flechas acá, solo dots + swipe (así se definió, ver imagen ref). */
.bnsc-cardgrid-dots {
	display: none;
}

/* .bnsc-cardgrid — padding izquierdo/derecho desalineado contra secciones hermanas full-bleed (reporte
   2026-09-24, ej. /prestamos/: el grid 2x2 de préstamos queda angosto comparado con el banner
   "¿Buscas una propiedad?" de abajo, que sí llega a los bordes reales del boxed). Auditado sitewide: 32
   instancias en 25 páginas, TODAS con padding left/right=24px -- top/bottom varía a propósito por
   instancia (60/60, 32/48, 16/16, espaciado vertical entre secciones, legítimo, NO se toca). El 24px
   horizontal es el mismo bug de siempre: nadie lo puso a propósito, es sobrante de cuando se armó la
   plantilla. Fix: cero en desktop -- mobile ya lo resuelve el PASE GLOBAL MÓVIL existente (este
   contenedor ya carga bnsc-boxed, que esa regla ya zerea en mobile). */
@media (min-width: 1025px) {
	.bnsc-cardgrid {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* Mismo bug, un nivel más adentro: .bnsc-cardgrid-row (la fila) nunca tuvo padding:0 explícito ->
	   default de Elementor (10px) -- y cada .bnsc-cardgrid-slide (card) tiene un % fijo (ej. 48.5%x2=97%)
	   que no suma 100% descontando el gap real, dejando el grupo con un hueco a la derecha (sin
	   justify-content:center en la fila, el sobrante no se centra, se acumula todo de un lado). */
	.bnsc-cardgrid-row {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* 2026-09-25 (bug real encontrado, reportado en /empresas/prestamos/): el fix de arriba
	   (flex:1 1 0, "reparte el ancho real disponible entre las cards") se aplicaba a TODAS las filas
	   por igual -- para filas de 2 o 3 cards está bien (llenan una sola fila, se reparten 50/50 o
	   33/33/33 sin problema), pero las filas de 4 cards ("Cards fila 1", ej. Empresas/Préstamos,
	   Seguros, Préstamos Personas, Internacional, Personas landing) están diseñadas para ENVOLVER
	   2x2 -- cada card ya trae width:48.5% + la fila trae flex_wrap:wrap en el JSON. flex:1 1 0
	   (flex-basis:0, grow:1) hace que las 4 compitan por el ancho TOTAL de la fila en una sola línea
	   en vez de wrappear, aplastándolas a 4 columnas angostas -- ahí es donde el texto largo
	   ("Banca Agropecuaria", "Préstamos comerciales") no entra y se corta contra la foto.
	   Acotado con :has(:nth-child(4)) para no tocar las filas de 2/3 cards, que sí necesitan el
	   flex:1 1 0 original. flex-basis:calc(50% - 12px) (12px = mitad del gap de 24px) hace que
	   exactamente 2 cards llenen el 100% de la fila -- la 3ra y 4ta wrappean solas a la fila
	   siguiente, como pide el diseño (ver Figma: 2 filas de 2 cards, no 1 fila de 4). */
	.bnsc-cardgrid-row:not(:has(> .bnsc-cardgrid-slide:nth-child(4))) .bnsc-cardgrid-slide {
		flex: 1 1 0 !important;
	}
	.bnsc-cardgrid-row:has(> .bnsc-cardgrid-slide:nth-child(4)) > .bnsc-cardgrid-slide {
		flex: 1 1 calc(50% - 12px) !important;
	}
}

@media (max-width: 767px) {
	.bnsc-cardgrid-row {
		display: contents;
	}

	.bnsc-cardgrid-slide {
		display: none;
	}

	.bnsc-cardgrid-slide.is-active {
		display: flex;
	}

	.bnsc-cardgrid-dots {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 8px;
		margin-bottom: 20px;
	}

	.bnsc-cardgrid-dot {
		width: 8px;
		height: 8px;
		border-radius: 3px;
		background: #DDE3EA;
		border: 0;
		padding: 0;
		cursor: pointer;
		transition: width 0.2s ease, background-color 0.2s ease, border-radius 0.2s ease;
	}

	.bnsc-cardgrid-dot.is-active {
		width: 26px;
		border-radius: 100px;
		background: #173358;
	}
}

/* ---- Limpieza sitewide: rosa/magenta de tema (#c36) filtrándose en botones/tabs (2026-08-18) ----
   El theme "Hello Elementor" trae en reset.css un default para CUALQUIER <button>/[type=button]/
   [type=submit] fuera de nuestra marca: borde rosa en reposo (#c36) y fondo rosa sólido + texto blanco
   en :hover/:focus (#c36 también; #336 en el color de <a>:hover). Se filtraba en cualquier botón/tab
   propio que no tuviera su propio :hover explícito -- confirmado inspeccionando reset.css directo (el
   grep por "cc3366" no lo encuentra porque el archivo usa la forma corta "#c36", no el hex expandido).

   Empate de especificidad real con el reset del theme en varios casos (ambos ~(0,1,1)) -- se resuelve
   acá con selectores genuinamente más específicos (prefijo "body", o el propio atributo de clase
   repetido), no con !important ni apostando al orden de carga. */

/* Caso general (tabs, botones sueltos sin :hover propio) -> reemplazo por verde menta suave + texto
   verde oscuro, ajuste de diseño explícito. :not(.is-active) para no pelear con el estado activo real de
   cada componente (ya tiene su propio color intencional, más específico por diseño).

   OJO: acá solo se cubre el elemento <button> -- NO [type="button"]/[type="submit"] (ej. <input
   type=submit>). Un intento anterior de esta misma regla los incluía con el mismo prefijo "body", y
   como esos son selectores de atributo (mismo nivel de especificidad que una clase), esa combinación
   terminaba empatando/ganándole por accidente a reglas reales de un componente con 2 clases propias
   (ej. ".bnsc-wizard-form .gform_button:hover" — confirmado, era un bug real, el botón del wizard se
   pintaba de verde menta en vez de su navy propio). El botón (elemento <button>) es especificidad más
   baja aposta, así que no compite con ningún componente real con clase propia. */
body button:not(.is-active) {
	border-color: transparent;
}

body button:not(.is-active):hover,
body button:not(.is-active):focus {
	background-color: #E6EDEB;
	color: #08543C;
}

/* Caso carruseles/sliders (dots, flechas, prev/next) -> se ELIMINA el color en vez de reemplazarlo por
   verde, ya tienen su propio diseño (dot activo en color de marca, flecha con ícono propio). Selector
   por substring de clase (cualquier prefijo bnsc-*, actual o futuro: bnsc-ptc-*, bnsc-cardcar-*,
   bnsc-pymc-*, bnsc-ad-carrusel-*, bnsc-hero-carrusel-*, bnsc-cardgrid-*) para no tener que listar cada
   carrusel a mano ni repetir esto la próxima vez que se arme uno nuevo. Prefijo "body" + atributo de
   clase repetido a propósito -- tiene que ganarle en especificidad real tanto al reset del theme COMO
   a la regla genérica de acá arriba (que si no, terminaba pintando de verde menta las flechas también,
   confirmado con un bug real en la primera pasada de este fix). */
/* border-color/color acá SIN el :not(.is-active) -- el dot activo no define su propio border/color
   (solo background), así que sin esto seguía heredando el rosa del theme ahí también (invisible hoy,
   border:0 + sin texto, pero mejor no dejarlo agazapado). No toca su background intencional. */
body button[class*="-dot"][class*="-dot"],
body button[class*="-arrow"][class*="-arrow"],
body button[class*="-prev"][class*="-prev"],
body button[class*="-next"][class*="-next"] {
	border-color: transparent;
	color: inherit;
}

body button[class*="-dot"][class*="-dot"]:not(.is-active):hover,
body button[class*="-dot"][class*="-dot"]:not(.is-active):focus,
body button[class*="-arrow"][class*="-arrow"]:hover,
body button[class*="-arrow"][class*="-arrow"]:focus,
body button[class*="-prev"][class*="-prev"]:hover,
body button[class*="-prev"][class*="-prev"]:focus,
body button[class*="-next"][class*="-next"]:hover,
body button[class*="-next"][class*="-next"]:focus {
	background-color: transparent;
	border-color: transparent;
	color: inherit;
}

/* ---- Detalle de Promoción (post 542, plantilla compartida vía Theme Builder) ---- */
/* "Contenido destacado (caja gris)" (id fijo 13c7a2a, mismo en las 7 promociones publicadas) es un
   campo ACF opcional (bnsc_contenido_destacado) atado por dynamic tag -- ninguna de las 7 promociones
   migradas lo tiene cargado hoy, así que el widget de texto no imprime nada y el contenedor gris queda
   vacío salvo por su padding de 48px, dejando una caja fantasma entre el subtítulo y "Términos y
   condiciones". :has(*) detecta cuando SÍ hay contenido real adentro (el día que alguna promoción cargue
   este campo) para no ocultarlo también en ese caso. */
.elementor-element-13c7a2a:not(:has(*)) {
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
}

/* ============================================================================
   Sidebar Forms (bnsc-sidebar-*) — drawer off-canvas de "Solicitar producto".
   Calcado del theme en vivo (banescocontigo): overlay full-screen + panel blanco
   de 600px que entra desde la derecha. El markup lo imprime banesco-sidebar-forms.php
   en el footer; el JS (navbar.js) togglea .is-open. Cierre: overlay, botón ✕, Escape.
   ============================================================================ */
.bnsc-sidebars { position: relative; z-index: 100000; }

.bnsc-sidebar {
	position: fixed;
	inset: 0;
	width: 100%;
	height: 100%;
	background-color: rgba(0, 0, 0, .3);
	opacity: 0;
	visibility: hidden;
	overflow-y: auto;
	overflow-x: hidden;
	z-index: 100000;
	transition: opacity .25s ease, visibility .25s ease;
}
.bnsc-sidebar.is-open { opacity: 1; visibility: visible; }

/* Overlay clickeable (cierra el drawer) */
.bnsc-sidebar__area { position: absolute; inset: 0; width: 100%; height: 100%; }

.bnsc-sidebar__body {
	position: relative;
	display: flex;
	width: 100%;
	min-height: 100%;
	pointer-events: none; /* solo el panel captura clicks; el resto pasa al overlay */
}

/* Panel blanco a la derecha */
.bnsc-sidebar__content {
	position: relative;
	width: 100%;
	max-width: 600px;
	min-height: 100vh;
	margin-left: auto;
	background: #fff;
	padding: 56px 48px 48px;
	pointer-events: auto;
	transform: translateX(100%);
	transition: transform .3s ease;
}
.bnsc-sidebar.is-open .bnsc-sidebar__content { transform: translateX(0); }

/* Botón de cierre (✕ dibujado con pseudo-elementos, sin depender de un asset) */
.bnsc-sidebar__close {
	position: absolute;
	right: 16px;
	top: 18px;
	width: 36px;
	height: 36px;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	z-index: 2;
}
.bnsc-sidebar__close::before,
.bnsc-sidebar__close::after {
	content: "";
	position: absolute;
	left: 50%;
	top: 50%;
	width: 22px;
	height: 2px;
	background: #556176;
}
.bnsc-sidebar__close::before { transform: translate(-50%, -50%) rotate(45deg); }
.bnsc-sidebar__close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

/* Encabezado propio del drawer (solo si el form no trae su description) */
.bnsc-sidebar__title {
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	font-size: 35px;
	line-height: 1.1;
	color: #3a4454;
	margin: 0 0 24px;
}

/* Bloquea el scroll del fondo cuando hay un drawer abierto */
body.bnsc-sidebar-open { overflow: hidden; }

@media (max-width: 768px) {
	.bnsc-sidebar__content { max-width: 100%; padding: 48px 20px 32px; }
	.bnsc-sidebar__title { font-size: 30px; margin-bottom: 16px; }
}

/* ====================================================================================================
   Design system 2026-09-18 (ajuste de diseño) — estándar sitewide de botones: radio 5px, padding
   14px arriba/abajo · 36px izquierda/derecha. Vía CSS (no hay un default de botón a nivel de Kit
   en este sitio -- cada botón trae su propio border_radius/text_padding en el JSON de Elementor) --
   más seguro y reversible en un solo lugar que reescribir el JSON de cada botón del sitio.
   `!important` porque el CSS que compila Elementor por-elemento no usa `!important`, así que esto
   gana por cascada sin necesitar más especificidad.
   EXCEPCIÓN: el botón "Conversemos" del CTA de cierre "¿Necesitas ayuda?" (`.bnsc-cta-ayuda`) ya
   tenía una forma de píldora (radio 100px) antes de este cambio -- se preserva a propósito
   pidió recolorearlo (ver bloque siguiente) pero no cambiar su forma.
   2026-09-18: border-width/style forzado a 1px solid en TODOS los botones (antes algunos pares
   primario+secundario en un mismo hero se veían desalineados en alto porque solo el secundario
   tenía borde real -- 1px de borde suma 2px extra de alto/ancho que el primario sin borde no tenía).
   border-color se deja SIN !important a propósito: es el fallback ("transparent", invisible porque
   el propio background-color del botón pinta por debajo del borde en box-sizing:border-box) para
   botones que no traen su color de borde en el JSON. Un botón que SÍ trae border_color en su JSON
   (ver bloque de CTA ayuda abajo, o los botones secundarios de hero con fondo verde/azul) lo pisa
   con normalidad porque ese selector generado por Elementor es más específico -- así el borde real
   sigue viéndose y el hueco de 1px queda reservado por igual en TODOS los botones, alineados en alto. */
.elementor-button {
	border-radius: 5px !important;
	padding: 13px 36px !important;
	font-size: 16px !important;
	font-weight: 400 !important;
	box-sizing: border-box !important;
	border-style: solid !important;
	border-width: 1px !important;
	border-color: transparent;
}

/* Sección informativa "¿Cómo puedo solicitar / abrir / obtener..." (páginas hijas de producto:
   seguros, préstamos, cuentas, etc.) -- el texto trae teléfono/correo/sucursales/PDF como <a> planos
   SIN color propio en el JSON -> heredan el rosa oculto del reset.css del theme Hello Elementor
   (#c36 / #CC3366, ver memoria "theme_reset_pink_and_specificity"), no un color pensado a propósito.

   Pedido 2026-09-28 (Jean): que estos links vayan del MISMO color que el párrafo, no rosa.
   La regla vieja .bnsc-solicita-links (2026-09-24) dependía de una clase aditiva en el widget que en
   la práctica NUNCA quedó aplicada a los 5 text-editor de seguros (confirmado: _css_classes vacío) ->
   los links seguían renderizando #c36 en vivo. Se reemplaza por una regla robusta que NO depende de
   tocar cada widget: cualquier <a> de contenido sin clase ni color inline propio hereda el color de su
   párrafo (+ subrayado para que siga siendo reconocible como link). Los <a> con clase Elementor o color
   inline propio siguen ganando por especificidad/inline -- no se tocan. Sobrevive regeneraciones de
   página (a diferencia del enfoque por clase). */
.elementor-widget-text-editor a:not([class]),
.elementor-widget-text-editor a:not([class]):hover,
.elementor-widget-text-editor a:not([class]):focus {
	color: inherit;
	text-decoration: underline;
}
/* Legacy: se deja la clase por si algún widget la trae, ahora también al color del párrafo (inherit). */
.bnsc-solicita-links a {
	color: inherit !important;
}

/* CTA de cierre "¿Necesitas ayuda?" — botón "Conversemos": fondo transparente + borde blanco
   (ajuste de diseño, mismo cambio de design system). El JSON de cada instancia (121 páginas, ver
   scripts/fix-cta-necesitas-ayuda-colores.php) ya trae estos valores seteados -- esta regla es un
   respaldo por si algún clon futuro pierde el setting o cachea una versión vieja.
   2026-09: se retira la excepción de radio píldora (100px) -- se pidió que este botón, pese a
   estar en casi todas las páginas, siga el mismo radio de 5px que el resto (hereda de .elementor-button
   arriba). 2026-09-18: el borde vuelve a 1px (bajó de 2.5px) para quedar en línea con el estándar
   de "borde 1px en todos los botones con borde" del resto del sitio. */
.bnsc-cta-ayuda .elementor-button {
	background-color: transparent !important;
	border: 1px solid #FFFFFF !important;
	color: #FFFFFF !important;
}
.bnsc-cta-ayuda .elementor-button:hover {
	background-color: rgba(255, 255, 255, 0.15) !important;
	color: #FFFFFF !important;
}

/* ====================================================================================================
   Menú de 3 niveles (2026-09, pedido del cliente) — Nivel 1 = Personas/Empresas (trigger existente,
   sin cambios). Nivel 2 = la fila de categorías (Cuentas/Préstamos/Tarjetas/Seguros/...) que antes
   eran links directos planos (widget icon-list, ver header 349). Nivel 3 = panel flotante con los
   productos reales de esa categoría, agrupados en columnas — SOLO 4 categorías lo tienen
   (Cuentas/Préstamos/Tarjetas/Seguros), las demás (Banca Digital/Canales de Atención/Promociones/
   Sucursales) siguen siendo link directo sin submenú, no tienen suficientes hijos para justificarlo.
   Reemplaza el widget icon-list original por un widget HTML con esta estructura -- Elementor no
   soporta submenús anidados en icon-list. Mapeo de links armado a partir del árbol REAL de páginas
   (scripts/build-nav-l2l3-personas.php), no inventado -- ver ese script para el detalle exacto de
   qué página va en qué columna. */
.bnsc-l2-row {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 24px; /* antes 12px -- más aire entre ítems, ajuste de diseño 2026-09-24 */
}
.bnsc-l2-item > a {
	display: inline-block;
	padding: 6px 2px;
	color: #5A6B7B;
	font-family: 'Lato', sans-serif;
	font-size: 15px;
	font-weight: 400;
	text-decoration: none;
	transition: color 0.2s ease, text-shadow 0.2s ease, transform 0.2s ease;
}
/* 2026-09-24 (ajuste de diseño): se quita el subrayado/border-bottom verde de hover -- en su lugar, un
   "bold sutil" al pasar el mouse (o cuando esa opción tiene su flyout de Nivel 3 abierto). Duplicar el
   trazo con text-shadow en vez de cambiar font-weight real evita el reflow que causaría un bold de
   verdad (el texto más ancho empujaría a los ítems vecinos de la fila) -- mismo truco que ya usa el
   header de referencia de producción para su date-picker/country-picker. transform:scale (en vez de
   subir font-size) agranda el texto un poco al hover sin reflow por el mismo motivo -- scale no mueve
   a los hermanos de la fila, solo agranda visualmente el propio ítem sobre su centro. */
.bnsc-l2-item > a:hover,
.bnsc-l2-item.is-active > a {
	color: #08543C;
	transform: scale(1.08);
	text-shadow: 0 0 0.4px currentColor, 0 0 0.4px currentColor;
}

/* Panel de Nivel 3: flotante, ancho completo del panel Personas/Empresas, oculto hasta hover.
   position:relative en .bnsc-panel (no en .bnsc-l2l3-wrap) para que el panel se posicione respecto
   al panel COMPLETO del megamenú, no solo respecto a la fila angosta y centrada de nivel 2. */
.bnsc-panel {
	position: relative;
}
/* 2026-09-24 (ajuste de diseño): el swap entre columnas de Nivel 3 (Cuentas -> Préstamos -> Tarjetas al
   pasar el mouse) usaba display:none/flex -- un corte seco, sin transición (display no es animable).
   Se pasa al mismo patrón opacity+transform+visibility que ya usa .bnsc-megamenu arriba (mismo timing,
   0.15s, mismo translateY sutil de 8px) para que el cambio de panel se sienta como un fundido suave en
   vez de un parpadeo. display:flex queda fijo (antes solo en .is-active) -- los paneles inactivos no
   se ven ni son clickeables gracias a opacity:0 + visibility:hidden + pointer-events:none, así que no
   hace falta seguir togglando display para ocultarlos. */
.bnsc-l3-panel {
	display: flex;
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	background: #FFFFFF;
	box-shadow: 0 16px 32px rgba(23, 51, 88, 0.12);
	padding: 28px 48px;
	gap: 48px;
	z-index: 95;
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transform: translateY(8px);
	transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
}
.bnsc-l3-panel.is-active {
	opacity: 1;
	visibility: visible;
	pointer-events: auto;
	transform: translateY(0);
}
.bnsc-l3-col {
	flex: 1 1 0;
	min-width: 180px;
	display: flex;
	flex-direction: column;
	gap: 9px;
}
/* Ocultar TEMPORALMENTE (pedido equipo 2026-09-28) la tarjeta "Copa Mundial FIFA 2026" del mega-menú
   (panel L3 — desktop y mobile comparten este markup). Reversible: borrar esta regla. La página de
   detalle sigue viva; el catálogo /tarjetas/ ya la excluye vía opción bnsc_tarjetas_catalogo_excluir. */
.bnsc-l3-col a[href*="copa-mundial-de-la-fifa"] {
	display: none !important;
}
.bnsc-l3-col-title {
	font-family: 'Lato', sans-serif;
	font-weight: 700;
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	color: #173358;
	margin-bottom: 4px;
}
.bnsc-l3-col-title-mt {
	margin-top: 14px;
}
.bnsc-l3-col a {
	font-family: 'Lato', sans-serif;
	font-size: 14px;
	font-weight: 400;
	color: #33475B;
	text-decoration: none;
	line-height: 1.4;
}
.bnsc-l3-col a:hover {
	color: #08543C;
	text-decoration: underline;
}

/* ===== Módulo Videotutoriales (Transferencia Int 728) — grid 2x2 compacto, icon-box fijo =====
   Se targetea por ID de Elementor (las clases _css_classes no renderizan en estos containers). */
.elementor-element-381e8d5 > .e-con-inner {
	display: grid !important;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
	max-width: 940px;
	margin: 0 auto;
}
.elementor-element-381e8d5 > .e-con-inner > .e-con { width: auto !important; max-width: none !important; }
/* icon-box verde -> cuadrado compacto (no estirar por flex-grow) */
.elementor-element-c815ea0,
.elementor-element-589d992,
.elementor-element-f886797,
.elementor-element-8edff05 {
	flex: 0 0 52px !important;
	width: 52px !important;
	max-width: 52px !important;
	height: 52px !important;
	min-height: 0 !important;
	align-self: center !important;
}
@media (max-width: 767px) {
	.elementor-element-381e8d5 > .e-con-inner { grid-template-columns: 1fr; }
}
/* videotutoriales: textos más chicos (títulos verdes + subtítulos gris) por ID */
.elementor-element-40308ee .elementor-heading-title,
.elementor-element-5ac9abb .elementor-heading-title,
.elementor-element-615fe02 .elementor-heading-title,
.elementor-element-ea835f2 .elementor-heading-title { font-size: 17px !important; line-height: 1.25 !important; }
.elementor-element-51205ef .elementor-heading-title,
.elementor-element-8754847 .elementor-heading-title,
.elementor-element-9d88a3e .elementor-heading-title,
.elementor-element-9f4f3e4 .elementor-heading-title { font-size: 13px !important; line-height: 1.3 !important; }
/* Transferencia 728: menta full-bleed en flujo + videotutoriales (bnsc-boxed capaba a 1200; el .e-con-inner ya es boxed y centra el contenido) */
.elementor-element-4bd0ee1.bnsc-boxed,
.elementor-element-21a7744.bnsc-boxed {
	max-width: none !important;
	width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* ================= Sostenibilidad (landing corporativo, post 1016) ================= */
/* Alianzas, pactos e iniciativas (§23): cards blancas dentro de la banda gris */
.bnsc-sos-alianzas-wrap {
	max-width: 1000px;
	margin: 24px auto 0;
	display: flex;
	flex-direction: column;
	gap: 20px;
	text-align: left;
}
.bnsc-sos-alianza {
	background: #ffffff;
	border-radius: 16px;
	padding: 28px 32px;
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
}
.bnsc-sos-alianza-tag {
	display: inline-block;
	background: #E6EDEB;
	color: #08543C;
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .04em;
	padding: 4px 12px;
	border-radius: 999px;
	margin-bottom: 10px;
}
.bnsc-sos-alianza h4 {
	color: #08543C;
	font-size: 20px;
	margin: 0 0 12px;
}
.bnsc-sos-alianza p { margin: 4px 0; font-size: 15px; line-height: 1.5; }
.bnsc-sos-alianza p strong { color: #143B64; }

/* Historias que Inspiran (§20): fila de miniaturas de video */
.bnsc-sos-historias-row { max-width: 1120px; margin: 24px auto 0; }
.bnsc-sos-historia-card img { border-radius: 16px; width: 100%; height: auto; display: block; }

@media (max-width: 767px) {
	.bnsc-sos-alianza { padding: 20px; }
}

/* Sostenibilidad §02: pills de navegación */
.bnsc-sos-navpills {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
	max-width: 960px;
	margin: 28px auto 0;
}
.bnsc-sos-pill {
	display: inline-block;
	background: #F6F6F6;
	color: #143B64;
	font-size: 15px;
	padding: 12px 22px;
	border-radius: var(--bnsc-radius-control);
	text-decoration: none;
	transition: background .2s, color .2s;
}
.bnsc-sos-pill:hover { background: #08543C; color: #fff; }

/* Sostenibilidad §08: Informes (tabs ES/EN + grilla de cards con PDF) */
.bnsc-inf { max-width: 1040px; margin: 28px auto 0; }
.bnsc-inf-tabs { display: flex; justify-content: center; gap: 12px; margin-bottom: 28px; flex-wrap: wrap; }
.bnsc-inf-tab {
	background: #F6F6F6; color: #143B64; border: 0; cursor: pointer;
	font-size: 15px; padding: 12px 22px; border-radius: var(--bnsc-radius-control); transition: background .2s, color .2s;
	font-family: inherit;
}
.bnsc-inf-tab.is-active { background: #E6EDEB; color: #08543C; font-weight: 600; }
.bnsc-inf-tab:hover { background: #E6EDEB; }
.bnsc-inf-panel { display: none; }
.bnsc-inf-panel.is-active { display: block; }
.bnsc-inf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.bnsc-inf-card {
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	background: #F6F6F6; border-radius: 12px; padding: 22px 26px; text-decoration: none;
	transition: background .2s, box-shadow .2s;
}
.bnsc-inf-card:hover { background: #eef1f0; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.bnsc-inf-card-title { color: #143B64; font-size: 16px; line-height: 1.4; }
.bnsc-inf-card-icon { display: flex; flex-direction: column; align-items: center; color: #08543C; font-size: 10px; font-weight: 700; flex: 0 0 auto; }
.bnsc-inf-empty { text-align: center; color: #6b7280; }
@media (max-width: 767px) { .bnsc-inf-grid { grid-template-columns: 1fr; } }

/* Somos Banesco §07/08: Informes Financieros Anuales/Trimestrales -- [bnsc_informes_fin], misma UI
   .bnsc-inf-* con los valores del Figma (11530:3405 / 11531:3808): pestañas de año 48px de alto,
   tarjetas radio 16 / padding 24 / título 18 verde. */
.bnsc-inf--fin { max-width: none; margin: 0; } /* el espacio con el título lo da el gap del contenedor de Elementor */
.bnsc-inf--fin .bnsc-inf-tabs { gap: 18px; margin-bottom: 44px; }
.bnsc-inf--fin .bnsc-inf-tab { height: 48px; padding: 10px 16px; color: #5A7592; font-size: 16px; }
.bnsc-inf--fin .bnsc-inf-tab.is-active { color: #064330; font-weight: 400; }
.bnsc-inf--fin .bnsc-inf-grid { gap: 24px; }
.bnsc-inf--fin .bnsc-inf-card { border-radius: 16px; padding: 24px; gap: 24px; min-height: 90px; }
.bnsc-inf--fin .bnsc-inf-card-title { color: #08543C; font-family: 'Poppins', sans-serif; font-size: 18px; line-height: 1.1; } /* = tarjetas nativas de Gobierno/Formularios */
.bnsc-inf--fin .bnsc-inf-card--sin-pdf:hover { background: #F6F6F6; box-shadow: none; }
@media (max-width: 767px) {
	.bnsc-inf--fin .bnsc-inf-tabs { gap: 10px; margin-bottom: 28px; }
	.bnsc-inf--fin .bnsc-inf-card-title { font-size: 16px; line-height: 1.3; }
}

/* Sostenibilidad §16: carrusel de Reconocimientos */
.bnsc-recon { max-width: 1120px; margin: 28px auto 0; }
.bnsc-recon-viewport { overflow: hidden; }
.bnsc-recon-track { display: flex; gap: 24px; transition: transform .4s ease; }
.bnsc-recon-card {
	flex: 0 0 100%; /* 2026-10-05: sin tarjeta cortada — las visibles llenan exactamente el área (antes quedaba un "adelanto" de la siguiente). */ box-sizing: border-box; background: #fff; border-radius: 16px;
	padding: 40px 48px; min-height: 220px; box-shadow: 0 2px 12px rgba(0,0,0,.05); text-align: left;
}
.bnsc-recon-card h3 { color: #08543C; font-size: 40px; margin: 0 0 18px; font-weight: 300; }
.bnsc-recon-card ul { margin: 0; padding-left: 20px; }
.bnsc-recon-card li { color: #143B64; font-size: 16px; line-height: 1.6; margin-bottom: 8px; }
.bnsc-recon-nav { display: flex; align-items: center; gap: 12px; margin-top: 24px; }
.bnsc-recon-arrow {
	width: 40px; height: 40px; border-radius: 50%; border: 1px solid #08543C; background: transparent;
	color: #08543C; font-size: 20px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center;
	transition: background .2s, color .2s;
}
.bnsc-recon-arrow:hover { background: #08543C; color: #fff; }
.bnsc-recon-dots { display: flex; gap: 8px; margin-left: 8px; }
.bnsc-recon-dot { width: 28px; height: 6px; border-radius: 999px; border: 0; background: #cddcd8; cursor: pointer; padding: 0; }
.bnsc-recon-dot.is-active { background: #08543C; }
@media (max-width: 767px) { .bnsc-recon-card { flex-basis: 100%; padding: 28px 24px; } .bnsc-recon-card h3 { font-size: 32px; } }

/* Sostenibilidad §20: Historias que Inspiran (blog-cards) */
.bnsc-hist-grid { max-width: 1120px; margin: 28px auto 0; display: grid; grid-template-columns: repeat(3,1fr); gap: 28px; }
.bnsc-hist-card { display: flex; flex-direction: column; background: #fff; border-radius: 16px; overflow: hidden; box-shadow: 0 2px 12px rgba(0,0,0,.06); text-decoration: none; transition: box-shadow .2s, transform .2s; }
.bnsc-hist-card:hover { box-shadow: 0 6px 20px rgba(0,0,0,.10); transform: translateY(-2px); }
.bnsc-hist-img { display: block; }
.bnsc-hist-img img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.bnsc-hist-body { padding: 18px 22px 24px; display: flex; flex-direction: column; gap: 10px; }
.bnsc-hist-dur { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #4b5563; }
.bnsc-hist-title { color: #08543C; font-size: 18px; line-height: 1.4; font-weight: 500; }
@media (max-width: 900px) { .bnsc-hist-grid { grid-template-columns: 1fr; } }

/* Sostenibilidad §21: carrusel Nuestros proyectos */
.bnsc-proy { max-width: 1120px; margin: 28px auto 0; }
.bnsc-proy-viewport { overflow: hidden; }
.bnsc-proy-track { display: flex; gap: 24px; transition: transform .4s ease; }
.bnsc-proy-card { flex: 0 0 100%; box-sizing: border-box; background: #F6F6F6; border-radius: 20px; padding: 48px; display: flex; align-items: center; gap: 40px; }
.bnsc-proy-text { flex: 1 1 55%; text-align: left; }
.bnsc-proy-text h3 { color: #08543C; font-size: 30px; font-weight: 300; margin: 0 0 16px; }
.bnsc-proy-text p { color: #143B64; font-size: 16px; line-height: 1.6; margin: 0 0 24px; }
.bnsc-proy-btns { display: flex; gap: 14px; flex-wrap: wrap; }
.bnsc-proy-btn { display: inline-block; padding: 12px 26px; border-radius: var(--bnsc-radius-control); font-size: 15px; text-decoration: none; box-sizing: border-box; border: 1px solid transparent; }
.bnsc-proy-btn--primary { background: #08543C; color: #fff; }
.bnsc-proy-btn--primary:hover { background: #064330; }
.bnsc-proy-btn--ghost { background: #fff; color: #08543C; border-color: #cddcd8; }
.bnsc-proy-btn--ghost:hover { background: #E6EDEB; }
.bnsc-proy-img { flex: 0 0 40%; }
.bnsc-proy-img img { width: 100%; aspect-ratio: 1/1; object-fit: cover; border-radius: 50%; display: block; }
.bnsc-proy-nav { display: flex; align-items: center; gap: 12px; margin-top: 24px; }
.bnsc-proy-arrow { width: 40px; height: 40px; border-radius: 50%; border: 1px solid #08543C; background: transparent; color: #08543C; font-size: 20px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background .2s, color .2s; }
.bnsc-proy-arrow:hover { background: #08543C; color: #fff; }
.bnsc-proy-dots { display: flex; gap: 8px; margin-left: 8px; }
.bnsc-proy-dot { width: 28px; height: 6px; border-radius: 999px; border: 0; background: #cddcd8; cursor: pointer; padding: 0; }
.bnsc-proy-dot.is-active { background: #08543C; }
@media (max-width: 900px) { .bnsc-proy-card { flex-direction: column-reverse; padding: 28px; gap: 24px; } .bnsc-proy-img { flex-basis: auto; width: 70%; } .bnsc-proy-text { text-align: center; } .bnsc-proy-btns { justify-content: center; } }

/* Sostenibilidad: botones "Ver más / Ver gráfico" como barra full-width gris con chevron (Figma) */
.bnsc-sos-vermas { width: 100%; }
.bnsc-sos-vermas .elementor-button,
.bnsc-sos-vermas a.elementor-button {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	background-color: #F6F6F6 !important;
	color: #08543C !important;
	padding: 18px 26px;
	border-radius: 10px;
	font-weight: 500;
	text-align: left;
	box-shadow: none;
}
.bnsc-sos-vermas .elementor-button .elementor-button-text { color: #08543C !important; }
.bnsc-sos-vermas .elementor-button:hover { background-color: #E6EDEB !important; color: #08543C !important; }
.bnsc-sos-vermas .elementor-button::after {
	content: "";
	width: 10px; height: 10px;
	border-right: 2px solid #08543C;
	border-bottom: 2px solid #08543C;
	transform: rotate(45deg);
	margin-left: 12px;
	flex: 0 0 auto;
	transition: transform .2s;
}

/* Sostenibilidad §17: banner "Nuestros compromisos" como card gris */
.bnsc-sos-compromisos-card {
	background-color: #F6F6F6 !important;
	border-radius: 24px;
	max-width: 1160px;
	margin-left: auto; margin-right: auto;
	overflow: hidden;
	align-items: center !important;
}
.bnsc-sos-compromisos-card > .e-con-inner { align-items: center; padding: 0; }
.bnsc-sos-compromisos-card > .e-con-inner > .e-con:first-child,
.bnsc-sos-compromisos-card > .e-con:first-child { padding: 56px 20px 56px 56px !important; }

/* Sostenibilidad §18: acordeón de compromisos (barras verde claro + chevron) */
.bnsc-acc { max-width: 1160px; margin: 28px auto 0; display: flex; flex-direction: column; gap: 18px; }
.bnsc-acc-item { background: #E6EDEB; border-radius: 12px; overflow: hidden; }
.bnsc-acc-head {
	width: 100%; display: flex; align-items: center; justify-content: space-between;
	background: transparent; border: 0; cursor: pointer; font-family: inherit;
	padding: 22px 28px; text-align: left; color: #08543C; font-size: 17px; font-weight: 600;
}
.bnsc-acc-chev { width: 11px; height: 11px; border-right: 2px solid #08543C; border-bottom: 2px solid #08543C; transform: rotate(45deg); transition: transform .25s; flex: 0 0 auto; margin-top: -4px; }
.bnsc-acc-item.is-open .bnsc-acc-chev { transform: rotate(-135deg); margin-top: 4px; }
.bnsc-acc-panel { max-height: 0; overflow: hidden; transition: max-height .3s ease; }
.bnsc-acc-panel-inner { padding: 0 28px 24px; color: #143B64; font-size: 16px; line-height: 1.6; }

/* §17 card por element-id (la clase programática en contenedores no renderiza — ver memoria) */
.elementor-element-497787f {
	background-color: #F6F6F6 !important;
	border-radius: 24px !important;
	overflow: hidden;
	max-width: 1160px;
	margin-left: auto !important;
	margin-right: auto !important;
}
.elementor-element-497787f > .e-con-inner > .e-con:first-child,
.elementor-element-497787f > .e-con:first-child { padding: 40px 20px 40px 56px !important; }

/* §01 Hero Sostenibilidad: fondo verde oscuro + texto blanco (override de la clase bnsc-hero-bg) */
.elementor-element-ef0943b { background-color: #003B2E !important; }
.elementor-element-7e37fe8,
.elementor-element-7e37fe8 .elementor-heading-title { color: #FFFFFF !important; }
.elementor-element-b2cb72f,
.elementor-element-b2cb72f * { color: #FFFFFF !important; }

/* Clase estándar WP para contenido accesible-solo-lector-de-pantalla (WCAG) -- Hello Elementor no la
   trae. Usada por el H1 oculto de Home (banesco-seo-config.php) y disponible para cualquier otro caso
   similar (hero 100% imagen sin heading propio). */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0; border: 0;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

/* §17 limitar alto de imagen para que el card no salga tan alto */
.elementor-element-497787f img { max-height: 340px; width: auto; margin-left: auto; }

/* Sostenibilidad §23: Alianzas — cards con tabla (label izq / valor der + separadores) */
.bnsc-ali { max-width: 1040px; margin: 24px auto 0; display: flex; flex-direction: column; gap: 22px; }
.bnsc-ali-card { background: #fff; border-radius: 16px; padding: 30px 36px; box-shadow: 0 2px 12px rgba(0,0,0,.05); text-align: left; }
.bnsc-ali-tag { display: inline-block; background: #E6EDEB; color: #08543C; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; padding: 5px 14px; border-radius: 999px; margin-bottom: 12px; }
.bnsc-ali-title { color: #08543C; font-size: 21px; margin: 0 0 18px; }
.bnsc-ali-table { display: flex; flex-direction: column; }
.bnsc-ali-row { display: flex; gap: 28px; padding: 14px 0; border-top: 1px solid #eef0ef; }
.bnsc-ali-row:first-child { border-top: 0; }
.bnsc-ali-lbl { flex: 0 0 30%; text-transform: uppercase; font-size: 12px; font-weight: 700; color: #143B64; letter-spacing: .03em; }
.bnsc-ali-val { flex: 1; color: #4b5563; font-size: 15px; line-height: 1.55; }
.bnsc-ali-more { text-align: center; margin-top: 30px; }
.bnsc-ali-morebtn { background: #F6F6F6; border: 0; color: #143B64; padding: 14px 34px; border-radius: var(--bnsc-radius-control); cursor: pointer; font-family: inherit; font-size: 15px; transition: background .2s; }
.bnsc-ali-morebtn:hover { background: #E6EDEB; }
@media (max-width: 767px) { .bnsc-ali-row { flex-direction: column; gap: 4px; } .bnsc-ali-lbl { flex-basis: auto; } }

/* Sostenibilidad §24: artículos culturales (blog-cards) */
.bnsc-art-grid { max-width: 1120px; margin: 28px auto 0; display: grid; grid-template-columns: repeat(3,1fr); gap: 28px; }
.bnsc-art-card { display: flex; flex-direction: column; background: #F6F6F6; border-radius: 16px; overflow: hidden; }
.bnsc-art-img img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.bnsc-art-body { padding: 22px 24px 26px; display: flex; flex-direction: column; gap: 12px; }
.bnsc-art-title { color: #08543C; font-size: 20px; font-weight: 500; line-height: 1.3; }
.bnsc-art-excerpt { color: #4b5563; font-size: 15px; line-height: 1.55; }
.bnsc-art-btn { display: inline-block; align-self: flex-start; margin-top: 6px; background: #08543C; color: #fff; text-decoration: none; padding: 12px 28px; border-radius: var(--bnsc-radius-control); font-size: 15px; }
.bnsc-art-btn:hover { background: #064330; }
.bnsc-art-more { text-align: center; margin-top: 32px; }
.bnsc-art-morebtn { background: #F6F6F6; border: 0; color: #143B64; padding: 14px 34px; border-radius: var(--bnsc-radius-control); cursor: pointer; font-family: inherit; font-size: 15px; transition: background .2s; }
.bnsc-art-morebtn:hover { background: #E6EDEB; }
@media (max-width: 900px) { .bnsc-art-grid { grid-template-columns: 1fr; } }

/* Hero carrusel Home: full-bleed real (100vw) para que vaya "a lo largo" y escale bien en pantallas
   grandes rompiendo el ancho boxed de Elementor. La imagen escala con width:100% height:auto
   (mantiene la composición desktop). */
.bnsc-hero-carrusel-wrap {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}
.bnsc-hero-carrusel-slide img,
.bnsc-hero-carrusel-slide picture {
	width: 100%;
	height: auto;
	display: block;
}

/* Requisitos — ajustes responsive (móvil): título 34px -> 24px, feature title algo menor */
@media (max-width: 767px) {
	.bnsc-req-heading { font-size: 24px; margin-bottom: 32px; }
	.bnsc-req-intro { margin-top: -20px; }
	.bnsc-req-feature-title { font-size: 20px; }
	.bnsc-req-feature-sub { font-size: 15px; }
	.bnsc-req-tab { font-size: 13px; padding: 10px 18px; }
}

/* Hero verde oscuro reutilizable (clase en css_classes, que SÍ renderiza en containers V4) */
.bnsc-hero-verde-oscuro { background-color: #003B2E !important; }
.bnsc-hero-verde-oscuro .elementor-heading-title { color: #FFFFFF !important; }
.bnsc-hero-verde-oscuro .elementor-widget-text-editor,
.bnsc-hero-verde-oscuro .elementor-widget-text-editor * { color: #FFFFFF !important; }

/* Somos §06: Junta Directiva (grid de miembros) */
.bnsc-junta { max-width: 1200px; margin: 0 auto; }
.bnsc-junta-sub { color: #08543C; font-size: 26px; font-weight: 300; text-align: center; margin: 36px 0 20px; }
.bnsc-junta-intro { text-align: center; color: #5A6B7B; max-width: 760px; margin: 0 auto 28px; font-size: 15px; line-height: 1.6; }
.bnsc-junta-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.bnsc-junta-grid--pres { grid-template-columns: minmax(0, 440px); justify-content: center; margin-bottom: 8px; }
.bnsc-junta-card { background: #F6F6F6; border-radius: 16px; overflow: hidden; display: flex; flex-direction: column; }
.bnsc-junta-foto img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; }
.bnsc-junta-body { padding: 20px 24px 26px; display: flex; flex-direction: column; gap: 4px; }
.bnsc-junta-nombre { color: #08543C; font-size: 19px; font-weight: 600; }
.bnsc-junta-cargo { color: #143B64; font-size: 14px; font-weight: 600; }
.bnsc-junta-bio { color: #5A6B7B; font-size: 14px; line-height: 1.55; margin-top: 8px; }
@media (max-width: 900px) { .bnsc-junta-grid { grid-template-columns: 1fr; } }

.bnsc-req-feature-sub p { margin: 0; }

/* ============================================================================
   PASE GLOBAL MÓVIL (≤767px) — 2026-09-23, ajuste de diseño. SOLO móvil, EXCLUYE Home (.home).
   Modelo: UN solo gutter de 12px en el borde de cada sección top-level; las columnas/wrappers
   internos sin padding horizontal (para no duplicar el inset); imágenes a su aspecto natural sin
   alto forzado. Los fondos full-width de las secciones se mantienen (el padding vive dentro del bg).
   Va al final para ganar por orden a las reglas globales previas.
   ============================================================================ */
@media (max-width: 767px) {
	/* 1) Gutter de 24px SOLO en las secciones top-level (contenedores .e-parent / hijos directos de
	   .elementor). Los fondos de color siguen full-width; solo su contenido queda a 24px (a 12px
	   quedaba muy pegado a los costados — ajuste solicitado 2026-09-23). */
	/* Excluye las plantillas Loop Item (cards de blog 557, promociones 541, bienes 579): su contenedor raíz también es
	   ".elementor > .e-con"/".e-parent" y recibía estos 24px POR DENTRO de la card → imagen y cuerpo más angostos que la card,
	   esquinas redondeadas perdidas y, en Bienes, la card desbordaba la pantalla (2026-10-04). */
	/* Tampoco al contenedor que envuelve al HERO (:has(> .bnsc-hero-bg)) ni al del CTA "¿Necesitas ayuda?" (:has(> .bnsc-cta-ayuda)):
	   en móvil van de borde a borde (pedido de Jean 2026-10-04/05); su texto conserva el margen por el relleno de su propia columna.
	   El contenedor del CTA ya trae relleno móvil 0 nativo en sus 126 copias; es "En caja", por eso el card cuelga de .e-con-inner. */
	body:not(.home) .elementor:not([data-elementor-type="loop-item"]) > .e-con:not(:has(> .bnsc-hero-bg)):not(:has(> .bnsc-cta-ayuda, > .e-con-inner > .bnsc-cta-ayuda)),
	body:not(.home) .elementor .e-con.e-parent:not([data-elementor-type="loop-item"] > .e-con):not(:has(> .bnsc-hero-bg)):not(:has(> .bnsc-cta-ayuda, > .e-con-inner > .bnsc-cta-ayuda)) {
		padding-left: 24px !important;
		padding-right: 24px !important;
	}

	/* 2) Wrappers/columnas internas: sin padding horizontal (el gutter de la sección ya da los 12px;
	   evita insets de 24/48/60px acumulados). NO se tocan paneles de tarjeta (cards de shortcodes son
	   <div> HTML, no .e-con) ni el padding vertical. */
	body:not(.home) .elementor .bnsc-boxed,
	body:not(.home) .elementor .bnsc-b-content,
	body:not(.home) .elementor .bnsc-img-fill {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* 3) Imágenes (heroes, banners y cualquier .bnsc-img-fill): aspecto natural, sin alto fijo ni
	   recorte por object-fit:cover/position:absolute. Las fotos ya vienen pensadas para móvil. */
	body:not(.home) .elementor .bnsc-img-fill {
		min-height: 0 !important;
		height: auto !important;
		overflow: visible !important;
	}
	body:not(.home) .elementor .bnsc-img-fill img {
		position: static !important;
		inset: auto !important;
		width: 100% !important;
		height: auto !important;
		max-width: 100% !important;
		object-fit: contain !important;
	}
	body:not(.home) .bnsc-hero-bg > .bnsc-boxed { min-height: 0 !important; }
	body:not(.home) .bnsc-hero-air { border-radius: 0 !important; }

	/* 4) Anti-overflow: widgets con ancho fijo en px no deben pasar del viewport. */
	body:not(.home) .elementor .elementor-element { max-width: 100% !important; }
}

/* ---- Banner-hero de una sola imagen (texto ya horneado, sin overlay en vivo) --------------------
   Empresas/Banca Digital (post 608): el contenedor de la imagen quedó como único hijo de la fila del
   hero (se sacó la columna de texto separada, redundante con el nuevo banner). Elementor 4.1.4 calcula
   flex-grow:0 para ese contenedor pase lo que pase con el setting "width" (bug ya documentado del
   proyecto: "width" en containers es no-op) -- se fuerza acá en vez de seguir peleando con el panel. */
.elementor-element-3669adfa {
	background: transparent !important;
}
.elementor-element-3669adfa > .elementor-element-31050dff {
	flex-grow: 1 !important;
	flex-basis: 100% !important;
	max-width: 100% !important;
	width: 100% !important;
}
.elementor-element-31050dff > .elementor-element-306c6e9f,
.elementor-element-31050dff > .elementor-element-82a2198 {
	width: 100% !important;
	max-width: 100% !important;
}
.elementor-element-31050dff img {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	height: auto !important;
}

/* Excepción móvil: el módulo de Requisitos tiene el fondo (verde/navy) en un div interno
   (.bnsc-req-wrap), no en la sección. Aplicarle el gutter a la sección deja franjas blancas a los
   costados. Solución: la banda va a sangre completa y los 12px van DENTRO (en su .bnsc-boxed).
   2026-10-05: la regla 1 del PASE GLOBAL (gutter de 24px) sumó exclusiones :not(...) para Loop Items, hero y CTA
   "¿Necesitas ayuda?", y eso subió su especificidad a (0,9,1) — por encima de esta excepción (0,5,1): las 62 páginas
   con Requisitos volvieron a mostrar la franja blanca de 24px por lado en móvil. :not(#bnsc-req-gutter) suma
   especificidad de ID (1,x,x) para que esta excepción gane siempre, sin depender de cuántos :not() de clase tenga la
   regla general. */
@media (max-width: 767px) {
	body:not(.home) .elementor .e-con.e-parent:has(.bnsc-req-wrap):not(#bnsc-req-gutter) {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
	body:not(.home) .bnsc-req-wrap .bnsc-boxed {
		padding-left: 24px !important;
		padding-right: 24px !important;
	}
}

/* Excepción móvil 2026-09-24: la excepción "(2)" de abajo YA ASUME que la card "Banner pagos" vive
   pegada a los bordes de su sección ("la card en sí no recibe gutter, vive pegada a los bordes de la
   sección adrede") -- pero nunca se le había quitado el gutter de 24px de la regla 1 del PASE GLOBAL a
   la SECCIÓN que la envuelve, así que en la práctica seguía inset 24px de cada lado en todas las páginas
   no-Home (Home no tiene el bug porque la regla 1 la excluye por completo). Reporte 2026-09-24:
   en el CTA "¿Necesitas ayuda?" la foto se veía con franjas verdes a los costados, dando sensación de
   estar cortada -- causa real doble: (1) la foto compartida no calzaba en su caja de alto fijo (arreglado
   arriba con aspect-ratio) y (2) esta inconsistencia de gutter que haría que la card entera, no solo la
   foto, quedara angosta en cualquier página que no sea Home. Mismo fix que el de Requisitos arriba: la
   sección va a sangre completa; el padding interno del texto ya lo restaura la excepción "(2)". */
@media (max-width: 767px) {
	body:not(.home) .elementor .e-con.e-parent:has(.bnsc-cta-ayuda) {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
}

/* Excepción móvil 2026-09-23 (2): el patrón "Banner pagos (card)" (fila con .bnsc-img-fill +
   .bnsc-b-content hermanos, dentro de una card redondeada con SU PROPIO fondo de color -- CTA
   "¿Necesitas ayuda?", Plazo Fijo, y ~decenas de banners iguales) quedó con texto pegado a los bordes:
   la regla 2 del PASE GLOBAL le puso padding-left/right:0 al bnsc-b-content asumiendo que es un wrapper
   de sección duplicando el gutter -- pero acá es el padding INTERNO de una card con fondo propio, no
   duplica nada (la card en sí no recibe gutter, vive pegada a los bordes de la sección adrede). Se
   restaura el padding que cada instancia ya trae en su propio padding_mobile (var --padding-left/right
   ya compilada por Elementor, no hardcodeada) SOLO cuando bnsc-b-content es hijo directo de una fila
   con un .bnsc-img-fill hermano -- no toca los demás usos de bnsc-b-content como wrapper de sección. */
@media (max-width: 767px) {
	body:not(.home) .elementor .e-con:has(> .bnsc-img-fill) > .bnsc-b-content {
		padding-left: var(--padding-left, 24px) !important;
		padding-right: var(--padding-right, 24px) !important;
	}

	/* Excepción móvil 2026-09-23 (3): la regla 3 del PASE GLOBAL fuerza aspecto natural (height:auto,
	   position:static) en TODA .bnsc-img-fill, pensada para heroes/banners con foto ya recortada para
	   móvil -- pero .bnsc-img-fill--cover-abs y --contain son variantes opt-in que dependen de llenar
	   una caja de altura fija (min-height propio), no de su aspecto natural:
	     - --cover-abs recorta (cover) para llenar una silueta decorativa (arco del CTA "¿Necesitas
	       ayuda?", ~104 páginas, ver apply-cover-abs.php).
	     - --contain no recorta pero SÍ necesita height:100% de su caja para no verse chica/flotando
	       con el fondo de color alrededor (confirmado: la foto mobile del mismo CTA en /cuentas/ usa
	       esta variante, y con height:auto queda con el padding de color reportado -- la
	       versión desktop de la misma card, no tocada por este pase por ser >767px, se ve perfecta).
	   Con aspecto natural ambas quedan "flotando" con el fondo de color visible alrededor como si
	   tuvieran padding. Se restaura la caja de altura fija SOLO para estas 2 variantes opt-in; el
	   resto de .bnsc-img-fill (heroes/banners con foto ya pensada para móvil) sigue con aspecto
	   natural como se definió. */
	body:not(.home) .elementor .bnsc-img-fill--cover-abs {
		min-height: var(--bnsc-nat-minh, var(--min-height, 149px)) !important;
		height: auto !important;
		overflow: hidden !important;
	}
	body:not(.home) .elementor .bnsc-img-fill--cover-abs img {
		position: absolute !important;
		inset: 0 !important;
		width: 100% !important;
		height: 100% !important;
		max-width: none !important;
		object-fit: cover !important;
	}
	body:not(.home) .elementor .bnsc-img-fill--contain {
		position: relative !important;
		min-height: var(--bnsc-nat-minh, var(--min-height, 149px)) !important;
		height: auto !important;
	}
	body:not(.home) .elementor .bnsc-img-fill--contain img {
		/* Igual truco que --cover-abs: con el contenedor en height:auto, un height:100% en el <img>
		   no resuelve contra nada (porcentaje inválido sobre alto automático) y el <img> cae a su
		   alto intrínseco -- position:absolute + inset:0 resuelve contra la caja ya calculada
		   (min-height) en vez de la propiedad height del padre. */
		position: absolute !important;
		inset: 0 !important;
		width: 100% !important;
		height: 100% !important;
		max-width: none !important;
		object-fit: contain !important;
	}
}

/* Aspect-ratio real por imagen (2026-09-24, reporte: "las imágenes no deberían tener un alto
   mínimo para móvil"). Las 2 variantes opt-in de arriba (cover-abs/contain) dependían de un min-height
   genérico (149px fallback, o el valor que cada instancia trajera de Elementor) sin relación con la
   proporción real de la foto que hay adentro. Auditado sitewide: 408 instancias cover-abs/contain, solo
   9 calzaban bien con su caja; 136 con desajuste GRAVE (ej. fotos 500x550 retrato -- ratio 0.91 -- en una
   caja 390x149 -- ratio 2.62 --: en cover-abs eso recorta la mayor parte de la foto; en contain deja
   franjas de fondo enormes a los costados, el mismo bug ya encontrado y resuelto puntualmente en el CTA
   "¿Necesitas ayuda?" hoy mismo, acá generalizado a las 408 instancias).
   --bnsc-nat-ratio es una variable CSS inyectada POR PÁGINA (ver mu-plugin
   banesco-image-natural-ratio.php, hook en wp_head) con el ancho/alto REAL del adjunto de cada instancia
   -- aspect-ratio la usa para que la caja SIEMPRE calce exacto con la foto que hay, sin recorte (cover) y
   sin franjas (contain), cualquiera sea su proporción. --bnsc-nat-minh:0 (inyectado junto a
   --bnsc-nat-ratio) apaga el min-height genérico SOLO cuando la proporción real sí se resolvió -- si no
   se toca, un min-height viejo más alto que lo que pide el aspect-ratio real (ej. 195px vs 164px
   calculado) seguía ganando como piso y dejaba una franja residual a pesar de que aspect-ratio ya
   estuviera bien puesto (encontrado auditando post 609 después del primer intento de este fix). Cuando
   la variable NO se inyectó (imagen borrada, estructura no reconocida, etc.), el fallback `auto`/
   `var(--min-height,149px)` reproduce exactamente el comportamiento anterior -- nunca colapsa a 0. Sin
   :not(.home): el bug es idéntico en Home (el min-height genérico lo pone Elementor mismo al compilar
   el container, no depende de ninguna regla nuestra scoped a home). Repite también position/inset/
   object-fit del <img> (mismos valores que la Excepción móvil (3) de arriba) en vez de depender de esa
   regla porque está scoped a "body:not(.home)" y este mecanismo nuevo cubre Home también -- una sola
   fuente de verdad para las 408 instancias, evita el tipo de conflicto de especificidad que rompió el
   CTA "¿Necesitas ayuda?" en el primer intento de este fix (ver git log / reporte). */
@media (max-width: 767px) {
	.elementor .bnsc-img-fill--cover-abs,
	.elementor .bnsc-img-fill--contain {
		position: relative !important;
		aspect-ratio: var(--bnsc-nat-ratio, auto) !important;
		min-height: var(--bnsc-nat-minh, var(--min-height, 149px)) !important;
		height: auto !important;
	}
	.elementor .bnsc-img-fill--cover-abs img {
		position: absolute !important;
		inset: 0 !important;
		width: 100% !important;
		height: 100% !important;
		max-width: none !important;
		object-fit: cover !important;
	}
	.elementor .bnsc-img-fill--contain img {
		position: absolute !important;
		inset: 0 !important;
		width: 100% !important;
		height: 100% !important;
		max-width: none !important;
		object-fit: contain !important;
	}
}

/* ---- Banner-hero de una sola imagen, sin columna de contenido (Banca Digital, post 608) --------
   Causa raiz real (encontrada tras varios intentos fallidos): la regla sitewide de arriba
   ".bnsc-hero-bg > .bnsc-boxed > .e-con:not(.bnsc-img-fill) { width:47% }" clasifica CUALQUIER
   hijo directo de .bnsc-boxed sin la clase bnsc-img-fill como "lado de contenido" -- al sacar la
   columna de texto de este hero, el contenedor de la imagen (unico hijo que queda) NO tenia esa
   clase y quedaba atrapado en el 47%. Restaurar bnsc-img-fill evita el 47%, pero entonces cae en
   la OTRA regla sitewide (".bnsc-hero-bg .bnsc-img-fill { width:53% }", pensada para la mitad
   imagen del patron de 2 columnas) -- tampoco sirve para un banner que debe ser 100%. Override con
   la MISMA especificidad (2 clases) + !important, cargado despues en la cascada, más "body" para
   no depender del orden de carga. */
body .bnsc-hero-bg .elementor-element-31050dff.bnsc-img-fill {
	--flex-grow: 1 !important;
	--flex-basis: 100% !important;
	--width: 100% !important;
	flex: 1 1 100% !important;
	width: 100% !important;
	max-width: 100% !important;
}
/* 2026-10-05: este banner horneado (texto + "Descárgala en" dentro de la imagen) ahora vive en Banca Digital
   Empresas (post 4933; los IDs 3669adfa/31050dff/306c6e9f/82a2198 ya no existen en otra página viva). La versión
   anterior (cover dentro de una caja de 400px de alto, pensada para el PNG 1912x504 de 608) recortaba los
   costados del banner nuevo 1440x360 (4:1): a 1440px la imagen medía 1600x400 y se cortaban "Descárgala en" y
   Google Play. Ahora el alto lo define la proporción de la imagen: ancho completo, alto automático, sin recorte
   -- y se anulan el piso de 400/442px del hero (.bnsc-hero-air / regla global) y el tope de alto de la columna. */
body .elementor-element-76ee94f6.bnsc-hero-bg > .elementor-element-3669adfa {
	min-height: 0 !important;
}
body .elementor-element-31050dff.bnsc-img-fill {
	max-height: none !important;
	min-height: 0 !important;
}
body .elementor-element-31050dff.bnsc-img-fill .elementor-widget-image img {
	display: block !important;
	position: static !important;
	width: 100% !important;
	height: auto !important;
	max-width: 100% !important;
	max-height: none !important;
	object-fit: initial !important;
	margin: 0 !important;
}
/* Franja blanca residual alrededor de la tarjeta: "3669adfa" (bnsc-boxed, fila del hero) queda con
   align-items:center heredado en vez de stretch dentro de "76ee94f6" -- se ve fondo blanco de pagina
   en el margen entre el verde a sangre y la tarjeta redondeada de 1200px. Forzar stretch + ancho. */
.elementor-element-608 .elementor-element-3669adfa,
body .elementor-element-3669adfa {
	align-self: stretch !important;
	width: 100% !important;
	/* 2026-09-23 (fix real, pieza que faltaba): "width:100%" solo no alcanza -- .bnsc-boxed
	   (línea ~12) ya trae "max-width:1200px !important", que sigue topeando este elemento pase lo
	   que pase con su width mientras no se anule también el max-width acá. Confirmado en vivo: sin
	   esta línea, 3669adfa medía exactos 1200px dentro de un fondo verde de 1872px (el bug real que
	   se reportó -- "el background solo cubre una parte del banner"). */
	max-width: 100% !important;
}

/* ============================================================================================
   PASE MÓVIL POR TIPO DE SECCIÓN — 2026-09-23 (empezando por HERO).
   Cambio de estrategia solicitado: las reglas 100% globales no sirven (no todo el contenido
   se puede tratar igual). Se van escribiendo reglas específicas por TIPO de sección; esta es la
   primera: HERO.

   Estado actual medido en /cuentas/ (390px):
     .e-parent            pl:24  -> el fondo de color del hero arranca en x=24 (FRANJA blanca lateral)
      .bnsc-hero-air/bg   pl:0
       .bnsc-boxed        pl:0
        (contenedor cont) pl:54 pr:50  <- padding propio de Elementor -> texto en x=78

   Objetivo: (1) el hero es una SECCIÓN DE ANCHO COMPLETO (el fondo/tarjeta toca ambos bordes,
   sin franja) y (2) el contenido a 24px (hoy ~54/50/60). Solución: el gutter de 24px lo lleva la
   propia tarjeta hero; el .e-parent que la envuelve va a 0 (full-bleed); y se cancela el padding de
   los wrappers internos para que los 54/50 no se apilen encima de los 24. */
@media (max-width: 767px) {
	/* 1) El .e-parent que envuelve un hero NO lleva gutter -> el fondo/tarjeta de color va a sangre. */
	body:not(.home) .elementor .e-con.e-parent:has(.bnsc-hero-air),
	body:not(.home) .elementor .e-con.e-parent:has(.bnsc-hero-bg) {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* 2) La tarjeta/fondo del hero lleva el gutter de 24px (una sola vez). */
	body:not(.home) .bnsc-hero-air,
	body:not(.home) .bnsc-hero-bg {
		padding-left: 24px !important;
		padding-right: 24px !important;
	}

	/* 3) Wrappers internos del hero (bnsc-boxed + los contenedores de contenido que traen 54/50px
	   propios de Elementor): sin padding horizontal, para no acumular sobre los 24px de la tarjeta.
	   El contenido queda exactamente a 24px del borde de la sección, que ya es full-width. */
	body:not(.home) .bnsc-hero-air .e-con,
	body:not(.home) .bnsc-hero-bg .e-con {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* 4) La FOTO del hero va SIEMPRE a sangre completa (borde a borde), solo el texto queda a 24px.
	   La imagen vive en .bnsc-img-fill, que hereda los 24px de la tarjeta (inset L24-R366). Pedido por
	   2026-09-23: todas las fotos de hero quedaban con borde/franja, deben sangrar completas.
	   Se usa el truco robusto de full-bleed (100vw + margin:calc(-50vw + 50%)) en vez de -24px/calc(100%
	   +48px): ese calc dependía del ancho del padre (342 en unas páginas, 390 en otras) y sobrepasaba
	   el viewport. El truco vw se autocorrige para cualquier ancho de padre siempre que el padre esté
	   centrado/full-width (que es el caso de los hero). */
	body:not(.home) .bnsc-hero-air .bnsc-img-fill,
	body:not(.home) .bnsc-hero-bg .bnsc-img-fill {
		width: 100vw !important;
		max-width: 100vw !important;
		margin-left: calc(-50vw + 50%) !important;
		margin-right: calc(-50vw + 50%) !important;
	}
}

/* ============================================================================
   Páginas de métodos de pago (Apple/Google/Click to Pay, Compras a cuotas) — bnsc-ap-*
   2026-09-24: contenido reconstruido desde Figma (las páginas eran clones rotos de 656).
   Componente compartido por las 4 páginas de pago. Secciones de 2 columnas (imagen en
   card verde + texto/pasos), pasos numerados y listas. Un solo prefijo bnsc-ap-*.
   ============================================================================ */
.bnsc-ap-row { display: flex; gap: 48px; align-items: center; }
.bnsc-ap-row--rev { flex-direction: row-reverse; }
.bnsc-ap-imgcol { flex: 0 0 45%; max-width: 45%; }
.bnsc-ap-txtcol { flex: 1 1 55%; min-width: 0; }
@media (max-width: 900px) {
	.bnsc-ap-row, .bnsc-ap-row--rev { flex-direction: column; gap: 28px; }
	.bnsc-ap-imgcol, .bnsc-ap-txtcol { flex: 1 1 100%; max-width: 100%; width: 100%; }
}
.bnsc-ap-card { background: #0B6E4E; border-radius: 24px; overflow: hidden; position: relative; display: flex; align-items: center; justify-content: center; }
/* contain: teléfono transparente, tamaño natural capado por max-height DEFINIDA (no %; el % no resuelve
   contra min-height del padre — bug clásico del kit). La card envuelve la imagen con padding. */
.bnsc-ap-card--contain { padding: 32px; min-height: 420px; }
.bnsc-ap-card--contain img { display: block; width: auto; max-width: 100%; height: auto; max-height: 460px; }
/* cover: foto rectangular llenando una caja de alto fijo — position:absolute resuelve contra la caja. */
.bnsc-ap-card--cover { min-height: 480px; }
.bnsc-ap-card--cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 900px) {
	.bnsc-ap-card--contain { min-height: 320px; }
	.bnsc-ap-card--contain img { max-height: 340px; }
	.bnsc-ap-card--cover { min-height: 360px; }
}
.bnsc-ap-txtcol h2, .bnsc-ap-h2 { color: #173358; font-family: "Poppins", sans-serif; font-weight: 300; font-size: 40px; line-height: 1.15; margin: 0 0 18px; }
@media (max-width: 900px) { .bnsc-ap-txtcol h2, .bnsc-ap-h2 { font-size: 30px; } }
.bnsc-ap-lead { color: #173358; font-weight: 700; font-size: 18px; margin: 0 0 18px; font-family: "Lato", sans-serif; }
.bnsc-ap-steps { list-style: none; counter-reset: apstep; margin: 0; padding: 0; }
.bnsc-ap-steps li { counter-increment: apstep; position: relative; padding-left: 44px; margin-bottom: 16px; color: #5A6B7B; font-family: "Lato", sans-serif; font-size: 16px; line-height: 1.5; }
.bnsc-ap-steps li::before { content: counter(apstep); position: absolute; left: 0; top: -1px; width: 26px; height: 26px; border: 1.5px solid #08543C; color: #08543C; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; font-family: "Lato", sans-serif; }
.bnsc-ap-steps li strong { color: #173358; font-weight: 700; }
.bnsc-ap-list { margin: 0 0 22px; padding-left: 20px; color: #5A6B7B; font-family: "Lato", sans-serif; font-size: 16px; line-height: 1.6; }
.bnsc-ap-list li { margin-bottom: 6px; }
.bnsc-ap-sublead { color: #173358; font-weight: 700; font-size: 16px; margin: 0 0 10px; font-family: "Lato", sans-serif; }
/* Lockup "Banesco | G Pay" debajo del texto del hero de Google Pay. */
.elementor-widget-image.bnsc-gpay-logo { margin-top: 24px; }
.elementor-widget-image.bnsc-gpay-logo img { display: block; border-radius: 8px; }
/* Hero con FOTO lifestyle cover (Google Pay): reemplaza bnsc-hero-air (que hace contain/floating) por
   object-fit:cover, para que la foto llene la columna de imagen del hero sin distorsión. */
.bnsc-ap-hero-cover .bnsc-img-fill img { object-fit: cover !important; }

/* Fila de 4 "checks" (Compras a cuotas — sección "cómo funciona"): ícono círculo verde arriba + texto
   centrado. 4 col en desktop, 2 en tablet, 1 en mobile. */
.bnsc-ap-checks { display: flex; gap: 32px; justify-content: center; margin: 44px 0 0; flex-wrap: wrap; }
.bnsc-ap-check { flex: 1 1 0; min-width: 180px; max-width: 250px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.bnsc-ap-check-ico { width: 56px; height: 56px; border-radius: 50%; border: 2px solid #08543C; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.bnsc-ap-check-ico svg { width: 28px; height: 28px; fill: none; stroke: #08543C; stroke-width: 3; }
.bnsc-ap-check p { margin: 0; color: #5A6B7B; font-family: "Lato", sans-serif; font-size: 16px; line-height: 1.45; }
@media (max-width: 900px) {
	.bnsc-ap-checks { gap: 28px 20px; }
	.bnsc-ap-check { flex: 0 0 42%; max-width: 42%; }
}
@media (max-width: 560px) { .bnsc-ap-check { flex: 0 0 100%; max-width: 100%; } }

/* Banner "Para mayor información" (Compras a cuotas): card gris claro redondeada, texto izq + foto der. */
.bnsc-ap-banner { background: #E7ECE9; border-radius: 24px; overflow: hidden; }
/* Separadores punteados estilo "ticket" (arriba de la caja y arriba de los botones), como el
   prototipo de Figma — cada uno es el widget HTML envuelto en este div desde PHP. */
.bnsc-ap-dashed-top { border-top: 1px dashed #B9CBE0; padding-top: 32px; }
.bnsc-ap-dashed-top--btns { padding-top: 24px; margin-top: 8px; }
.bnsc-ap-banner .bnsc-ap-row { gap: 0; align-items: stretch; }
.bnsc-ap-banner .bnsc-ap-txtcol { padding: 56px 48px; align-self: center; }
.bnsc-ap-banner .bnsc-ap-imgcol { flex: 0 0 46%; max-width: 46%; }
.bnsc-ap-banner .bnsc-ap-card--cover { min-height: 360px; border-radius: 0; }
.bnsc-ap-banner-list { list-style: none; margin: 8px 0 0; padding: 0; }
.bnsc-ap-banner-list li { margin-bottom: 8px; color: #5A6B7B; font-family: "Lato", sans-serif; font-size: 17px; }
.bnsc-ap-banner-list a { color: #08543C; font-weight: 700; text-decoration: none; }
@media (max-width: 900px) {
	.bnsc-ap-banner .bnsc-ap-row { flex-direction: column; }
	.bnsc-ap-banner .bnsc-ap-txtcol { padding: 36px 28px; }
	.bnsc-ap-banner .bnsc-ap-imgcol { flex: 1 1 100%; max-width: 100%; order: -1; }
}

/* Botones (Compras a cuotas — "Ver comercios" / "Solicita tu tarjeta"). */
.bnsc-ap-btns { display: flex; gap: 20px; justify-content: center; flex-wrap: wrap; margin: 8px 0 0; }
.bnsc-ap-btn { display: inline-block; padding: 13px 30px; border-radius: 5px; font-family: "Lato", sans-serif; font-size: 15px; font-weight: 700; text-decoration: none; border: 1px solid transparent; box-sizing: border-box; cursor: pointer; }
.bnsc-ap-btn--primary { background: #08543C; color: #fff; border-color: #08543C; }
.bnsc-ap-btn--outline { background: transparent; color: #08543C; border-color: #08543C; }

/* ===========================================================================
   /cuentas/ (page 438) — alinear las 2 filas de tarjetas al ancho completo
   -----------------------------------------------------------------------------
   Diagnóstico (CDP, viewport 1440): las 6 tarjetas ya median igual (366px c/u)
   pero la fila estaba centrada con ~27px de espacio muerto a cada lado (contenido
   147→1293) mientras la fila de iconos de arriba y las secciones (hero/encabezado/
   banner navy) llegan a 120→1320. Resultado: las tarjetas no llegaban a los bordes.
   Fix: quitar el padding horizontal de la fila y hacer que las 3 tarjetas crezcan
   iguales (flex 1 1 0) llenando 120→1320 con gap parejo de 24px. Solo desktop
   (>1024px) para no romper el wrap a 2/1 columnas en tablet/mobile.
   Filas: 93811ae (Ahorro/Ahorro Simpl./Corriente) y 0549491 (La cuenta/Niños/Planilla).
   =========================================================================== */
@media (min-width: 1025px) {
  body.page-id-438 .elementor-element-93811ae,
  body.page-id-438 .elementor-element-0549491 {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  body.page-id-438 .elementor-element-93811ae > .e-con,
  body.page-id-438 .elementor-element-0549491 > .e-con {
    flex: 1 1 0 !important;
    max-width: none !important;
  }
}

/* ===========================================================================
   /prestamos/ (page 1215) — calculadora "Calcula tu hipoteca" al ancho completo
   -----------------------------------------------------------------------------
   Mismo bug del 24px de padding horizontal sobrante que documenta .bnsc-cardgrid
   arriba: el contenedor 4f27925 (wrapper del heading + caja gris del simulador)
   trae padding left/right=24px, dejando la caja gris a 144→1296 (1152px) mientras
   las tarjetas de abajo y las demás secciones llegan a 120→1320 (1200px). La
   calculadora no es un .bnsc-cardgrid, así que aquel fix no la alcanza.
   Fix: cero padding horizontal solo en desktop (>1024px). El padding vertical
   (top 60 / bottom 20) se mantiene, y en mobile se conserva el 24px como aire
   lateral de la caja (la estructura mobile ya se ve bien, no se toca).
   =========================================================================== */
@media (min-width: 1025px) {
  body.page-id-1215 .elementor-element-4f27925,
  body.page-id-1215 .elementor-element-4f27925 > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===========================================================================
   /empresas/servicios/ (page 607) — cuadrar las cards de servicios al ancho completo
   -----------------------------------------------------------------------------
   Medido (CDP 1440): las cards anchas (E-Commerce bb8e947, Tus Finanzas a8c5354)
   traían el 24px de padding horizontal sobrante → card a 144→1296 en vez de 120→1320.
   Las filas de 2 cards (Puntos/MovilPay 95d95dd, Cargo/Cash ff15d19) tenían las cards
   a 48.5%×2 → llenaban solo hasta 120→1308 (12px libres a la derecha). Fix desktop-only:
   cero padding horizontal en los 4 wrappers + flex:1 1 0 en las cards de las filas de 2
   para que lleguen exactas a 120→1320. Mobile/tablet apilan a 1 columna, no se tocan. */
@media (min-width: 1025px) {
  body.page-id-607 .elementor-element-95d95dd,
  body.page-id-607 .elementor-element-ff15d19,
  body.page-id-607 .elementor-element-bb8e947,
  body.page-id-607 .elementor-element-a8c5354,
  body.page-id-607 .elementor-element-73f0aef {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  body.page-id-607 .elementor-element-95d95dd > .e-con,
  body.page-id-607 .elementor-element-ff15d19 > .e-con {
    flex: 1 1 0 !important;
    max-width: none !important;
  }
  /* E-Commerce (80f7525): su imagen (#7) es retrato (318×355) y en el slot ancho 50% se estiraba a
     658px de alto arrastrando la card. La card hermana Tus Finanzas (imagen landscape) queda en ~378px.
     Capamos la imagen de E-Commerce a 378px con cover para igualar la altura. Solo desktop; en mobile
     el retrato apilado se ve bien y no se toca. */
  body.page-id-607 .elementor-element-37345b4 img {
    height: 378px !important;
    width: 100% !important;
    object-fit: cover !important;
  }
}

/* /empresas/servicios/ecommerce/ (865) y /empresas/prestamos/sobregiro/ (845): SIN regla propia de hero (2026-10-05). Se probó encuadrar la foto en
   la columna con cover + object-position y Jean la descartó: corta el arco azul por la izquierda (~65px) y el hero "se ve cortado". Ambos usan el
   tratamiento estándar de .bnsc-hero-air, igual que /cuentas/ahorro-local/ (referencia aprobada). Lo que sí se mantiene es nativo: relleno 0 del
   contenedor del botón (y en 865 relleno 32 de la columna de texto) para que el hero mida 400 y la foto toque arriba y abajo. */

/* ===========================================================================
   /empresas/ (page 590) — sección Tarjetas: cross-sell cards al ancho completo
   -----------------------------------------------------------------------------
   Las 4 cards del cross-sell (fila 1dcfc48) rendean a 45% y centradas, quedando
   a 177→1263 (57px muertos a cada lado) mientras las cards de Cuentas/Préstamos/
   Servicios llegan a 120→1320. Fix desktop-only: que cada card llene calc(50%-12px)
   (12px = mitad del gap de 24px) → 2 por fila llenan 120→1320, wrap 2x2. Mobile
   apila a 1 columna (no se toca). Scopeado a esta página + esta fila. */
@media (min-width: 1025px) {
  body.page-id-590 .elementor-element-1dcfc48 {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  body.page-id-590 .elementor-element-1dcfc48 > .e-con {
    flex: 1 1 calc(50% - 12px) !important;
    width: calc(50% - 12px) !important;
    max-width: none !important;
  }
}

/* /empresas/ (590) — banner PYME: en desktop llega a 120→1320 (padding wrapper 0), pero en mobile
   la regla global que zerea el padding de .bnsc-boxed dejaba la card pegada al borde de pantalla.
   Se le da margen lateral a la card (fd7a548) en mobile para igualar el aire de las demás cards. */
@media (max-width: 767px) {
  body:not(.home).page-id-590 .elementor .bnsc-boxed.elementor-element-3932d3e {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
}

/* /personas/ (page 4653) — sección Tarjetas: cross-sell cards al ancho completo (mismo fix que Empresas) */
@media (min-width: 1025px) {
  body.page-id-4653 .elementor-element-9514f98 {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  body.page-id-4653 .elementor-element-9514f98 > .e-con {
    flex: 1 1 calc(50% - 12px) !important;
    width: calc(50% - 12px) !important;
    max-width: none !important;
  }
}

/* ===========================================================================
   .bnsc-f-cards + .bnsc-cardgrid-row juntas — patrón "Otras X también vieron"
   (9 instancias sitewide: 455, 483, 656, 657, 1023, 2279, 2289, 3798, 4653)
   -----------------------------------------------------------------------------
   Reporte 2026-09-27: las 3 cards ya tienen la misma altura entre sí (el row
   hace align-items:stretch correctamente), pero el botón "Conoce más" queda en
   distinta posición vertical según el largo del texto de cada card — el
   contenedor de texto (hijo directo de la card, hermano de .bnsc-card-img) no
   crece para llenar el alto disponible, se queda en su tamaño natural y deja
   el resto de la card como espacio muerto DEBAJO del botón en vez de repartirlo,
   dando la sensación de cards "incompletas" cuando el texto es corto.
   Fix: el contenedor de texto (segundo hijo, :not(.bnsc-card-img)) crece a
   flex:1 y se vuelve columna; su último hijo (el wrapper del botón) se ancla
   al fondo con margin-top:auto. Resultado: título/texto arriba, botón siempre
   al mismo nivel en las 3 cards sin importar cuánto texto tenga cada una. */
.bnsc-f-cards.bnsc-cardgrid-row .bnsc-cardgrid-slide > div:not(.bnsc-card-img) {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
}
.bnsc-f-cards.bnsc-cardgrid-row .bnsc-cardgrid-slide > div:not(.bnsc-card-img) > *:last-child {
	margin-top: auto;
}

/* ===========================================================================
   /internacional/ (page 3798) — hero full-bleed (imagen única con texto integrado)
   -----------------------------------------------------------------------------
   El hero pasó de "texto widget + imagen circular" a una sola imagen de fondo
   completa (banner con el texto ya renderizado adentro, diseño pasado 2026-09-27).
   La imagen fue diseñada a sangre completa (edge-to-edge, sin bordes redondeados
   ni gutter) — pero el PASE GLOBAL MÓVIL (arriba) fuerza 24px de padding lateral
   en todo top-level .e-con, y los 3 contenedores internos heredan el 10px default
   de Elementor sin cero explícito. Se anula ambos SOLO para este hero. */
@media (max-width: 767px) {
  body.page-id-3798 .elementor-element-679e286,
  body.page-id-3798 .elementor-element-debed6a,
  body.page-id-3798 .elementor-element-52f3f8b,
  body.page-id-3798 .elementor-element-3428a8b {
    padding: 0 !important;
  }
}

/* /internacional/ (page 3798) — hero a sangre completa, pegado al menú, sin márgenes (referencia
   visual 2026-09-27, imagen única con el texto ya integrado). Coincide con el patrón sitewide
   "hero a sangre completa" (.e-con:has(>.bnsc-hero-bg){padding:0} + .bnsc-hero-bg{border-radius:0}),
   así que no hace falta ninguna excepción — se deja así a propósito, no se toca. */

/* /empresas/tarjetas/ (post 1167) — grid modificador ".bnsc-tcard-grid--empresas" (5 tarjetas): son
   renders de producto (91x143 portrait, sin foto de persona), no las fotos landscape reales que usa
   el resto del catálogo (/tarjetas/, /tarjetas/pre-aprobada/). El tratamiento panorámico compartido
   (aspect-ratio:2.25/1 + object-fit:cover, pensado para esas fotos landscape) estira el render con
   zoom exagerado y lo recorta, viéndose distorsionado (reporte 2026-09-27). Fix v1 (width:140px fijo)
   escalaba el PNG nativo (91x143) a ~140x220 -- un upscale de ~54% que emborronaba/pixelaba la imagen
   chica, percibido igual como "distorsión" (reporte 2026-09-27, 2da vuelta). Fix v2: height tope al
   alto NATIVO real (142px, el más chico de las 5 fuentes) y width:auto -- nunca escala hacia arriba,
   se muestra a su resolución real o más chica, nunca más grande. Acotado al modificador --empresas
   (ya lo genera el shortcode para este grupo, confirmado 5/5 cards son renders de producto). */
.bnsc-tcard-grid--empresas .bnsc-tcard-img {
	aspect-ratio: auto;
	width: auto;
	height: auto;
	margin: 24px 0 0 24px;
	padding: 0;
	align-self: flex-start;
}
.bnsc-tcard-grid--empresas .bnsc-tcard-img img {
	width: auto;
	height: auto;
	max-height: 142px;
	max-width: 100%;
	object-fit: contain;
}

/* /personas/ (page 4653) — card "Mastercard Steven's Onix Clásica" (Otras personas también vieron,
   widget b0a378a): usa el patrón base .bnsc-card-img (sangre completa, height:auto sin cap), pensado
   para fotos landscape -- con el render de tarjeta (más cuadrado/vertical) se estira demasiado alto
   comparado con las 2 cards hermanas (foto de niño+papá, foto de campo). Reporte 2026-09-28: tope a
   250px con cover para igualar visualmente a las hermanas sin recortar el logo/nombre de la tarjeta
   (el render ya viene centrado). Acotado a este widget ID, no toca las ~350 instancias de .bnsc-card-img
   sitewide. */
body.page-id-4653 .elementor-element-b0a378a img {
	max-height: 250px !important;
	object-fit: cover;
	object-position: center;
}

/* ============================================================================
   /landing-rebranding/ — página de comunicación del cambio de marca. 2026-09-28:
   reconstruida desde cero replicando el HTML de referencia de dev.banesco.com.pa
   (post 4790, sin equivalente local). Prefijo bnsc-rb-*.
   ============================================================================ */

/* 1) Hero: la ILUSTRACIÓN (mujer + verde) es el FONDO del hero y el texto "El camino siempre has
   sido tú" va ENCIMA para hacer contraste. Alto máx 400px en desktop. Texto blanco con sombra
   sutil (la imagen tiene zona clara a la izq y verde oscuro a la der) y corrido levemente a la izq. */
.bnsc-rb-hero {
	color: #FFFFFF;
	padding: 0 !important;
	min-height: 400px;
	max-height: 400px;
	background-size: cover !important;
	background-position: center center !important;
	background-repeat: no-repeat !important;
	display: flex;
	align-items: center;
	/* El contenedor es flex-direction:column (default Elementor) -> justify-content centra en VERTICAL.
	   Pedido Jean 2026-09-28: texto "en el medio" (antes quedaba pegado arriba). */
	justify-content: center;
	overflow: hidden;
}
.bnsc-rb-hero > .bnsc-boxed {
	padding: 0 !important;
	width: 100%;
}
.bnsc-rb-hero .elementor-heading-title {
	color: #FFFFFF !important;
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	font-size: 50px;
	line-height: 1.15;
	text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5), 0 2px 22px rgba(0, 20, 12, 0.45);
}
/* Correr las letras MÁS a la derecha (pedido Jean 2026-09-28) agrandando la columna-espaciador
   izquierda del hero -> el texto queda sobre la franja verde de la derecha, no sobre la cara.
   2026-09-28 (2da pasada): un poco más a la derecha (68%). */
.bnsc-rb-hero > .bnsc-boxed > .e-con-inner > .e-con:first-child {
	flex: 0 0 68% !important;
	max-width: 68% !important;
}
/* La columna de texto se estira a la altura del hero (400px); justify-content:center centra el texto
   verticalmente (antes quedaba pegado arriba). Pedido Jean 2026-09-28: "en el medio". */
.bnsc-rb-hero > .bnsc-boxed > .e-con-inner > .e-con:last-child {
	flex: 1 1 auto !important;
	justify-content: center !important;
}
@media (max-width: 900px) {
	.bnsc-rb-hero {
		min-height: 0;
		max-height: none;
		aspect-ratio: 1600 / 1212;
		align-items: flex-start;
		justify-content: flex-start;
		position: relative;
	}
	/* scrim oscuro arriba (detrás del texto) para que las letras blancas se lean sobre la zona gris
	   clara de la imagen en mobile. */
	.bnsc-rb-hero::before {
		content: "";
		position: absolute;
		left: 0; right: 0; top: 0;
		height: 60%;
		background: linear-gradient(180deg, rgba(0, 26, 17, 0.55), rgba(0, 26, 17, 0));
		z-index: 0;
		pointer-events: none;
	}
	.bnsc-rb-hero > .bnsc-boxed { position: relative; z-index: 1; flex-direction: column; padding: 40px 24px !important; }
	.bnsc-rb-hero .elementor-heading-title { font-size: 34px; }
}

/* 2+3) Sección unificada "Evolución de nuestra marca": video arriba + heading + texto, TODO en una
   sola sección de fondo blanco (antes eran 2 secciones separadas). Tipografía y espaciado de marca. */
.bnsc-rb-evo {
	background: #FFFFFF;
	padding: 8px 0 16px;
}
.bnsc-rb-evo > .e-con-inner {
	align-items: center;
}
/* Video centrado tipo card. */
.bnsc-rb-evo .bnsc-rb-video {
	background: transparent;
	width: 100%;
	max-width: 900px;
	margin: 0 auto 44px;
	border-radius: 16px;
	overflow: hidden;
}
.bnsc-rb-evo .bnsc-rb-video .elementor-widget-video,
.bnsc-rb-evo .bnsc-rb-video .elementor-wrapper {
	border-radius: 16px;
	overflow: hidden;
}
/* Título de marca centrado. */
.bnsc-rb-evo .elementor-heading-title {
	color: #08543C;
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	font-size: 42px;
	line-height: 1.15;
	text-align: center;
	margin: 0 auto 26px;
}
/* Texto de marca: alineado al ANCHO DEL VIDEO (900px, pedido Jean 2026-09-28) para que la columna de
   texto no sea más ancha que el video de arriba; justificado, con buen espaciado; negritas en navy.
   !important: Elementor fija max-width:100% al widget con igual especificidad y carga después. */
.bnsc-rb-evo .elementor-widget-text-editor {
	max-width: 900px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}
.bnsc-rb-evo .elementor-widget-text-editor p {
	color: #5A6B7B;
	font-family: "Lato", sans-serif;
	font-size: 16px;
	line-height: 1.85;
	text-align: justify;
	margin: 0 0 18px;
}
.bnsc-rb-evo .elementor-widget-text-editor strong,
.bnsc-rb-evo .elementor-widget-text-editor b {
	color: #173358;
	font-weight: 700;
}
@media (max-width: 900px) {
	.bnsc-rb-evo .elementor-heading-title { font-size: 30px; }
	.bnsc-rb-evo .elementor-widget-text-editor p { text-align: left; }
}

/* 4) Banda de GIF de evolución de logos: banda clara con el GIF centrado (no full-bleed).
   !important: Elementor fija el color de fondo (desde el data) y el ancho del widget con igual
   especificidad y carga después. */
.bnsc-rb-gifband {
	background: #E9ECEE !important;
	padding: 40px 24px;
	justify-content: center !important;
	align-items: center !important;
}
.bnsc-rb-gifband .elementor-widget-image {
	width: 100% !important;
	max-width: 1000px !important;
	margin-left: auto !important;
	margin-right: auto !important;
	align-self: center !important;
}
.bnsc-rb-gifband .elementor-widget-image img {
	display: block;
	width: 100%;
	height: auto;
	margin: 0 auto;
}

/* Header banner (mujer + verde) full-width, alto máx 400px en desktop; imagen de fondo cover
   (desktop + mobile via Elementor). Va antes de "Nueva imagen de nuestra Banca Digital". */
.bnsc-rb-headerbanner {
	width: 100%;
	min-height: 400px;
	height: 400px;
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
}
@media (max-width: 900px) {
	/* la imagen mobile es más vertical (1600x1212): dejamos que se vea completa por aspect-ratio. */
	.bnsc-rb-headerbanner { height: auto; min-height: 0; aspect-ratio: 1600 / 1212; }
}

/* 5) Nueva imagen Banca Digital: columna de texto (izquierda) + celular grande flotando a la
   derecha que "pasa por encima" del borde superior de la sección (asoma sobre la banda gris del
   gifband) para dar profundidad. Tipografía de marca (título verde Poppins) + estructura. */
.bnsc-rb-phone {
	position: relative;
	flex: 0 0 46%;
	max-width: 46%;
	min-height: 470px;
	z-index: 3;
}
/* !important: Elementor genera su propio CSS de offset para elementos con posición absoluta
   (clase .elementor-absolute, top/left:0) que empata en especificidad y carga después; hay que
   ganarle explícitamente para centrar y hacer que el celular asome por arriba. */
.bnsc-rb-phone .elementor-widget-image {
	position: absolute !important;
	left: 50% !important;
	transform: translateX(-50%) !important;
	top: -60px !important; /* asoma un poco por encima del tope (bajado 2026-09-28: antes -140px estaba muy arriba) */
	width: 460px; /* celular más grande */
	max-width: 100%;
	z-index: 3;
}
.bnsc-rb-phone img {
	display: block;
	width: 100%;
	height: auto;
}
/* Sección: no recortar el celular que sobresale y quedar por encima del gifband gris anterior.
   OJO: los containers "boxed" de Elementor envuelven a sus hijos en un .e-con-inner, así que el
   celular es .bnsc-boxed > .e-con-inner > .bnsc-rb-phone (NO hijo directo del boxed). Por eso el
   scope se hace con :has(.bnsc-rb-phone) (descendiente) y el layout se aplica al .e-con-inner. */
.bnsc-boxed:has(.bnsc-rb-phone),
.bnsc-boxed:has(.bnsc-rb-phone) > .e-con-inner {
	overflow: visible !important;
	position: relative;
	z-index: 3;
}
.bnsc-boxed:has(.bnsc-rb-phone) > .e-con-inner {
	align-items: center;
	gap: 48px;
}
/* Columna de texto (la que no es el celular): estructura + ancho de lectura. */
.bnsc-boxed:has(.bnsc-rb-phone) > .e-con-inner > .e-con:not(.bnsc-rb-phone) {
	flex: 1 1 auto;
	max-width: 560px;
}
/* Letras de la marca: título en verde Banesco, Poppins, con la palabra "Banca" en semibold. */
.bnsc-boxed:has(.bnsc-rb-phone) .elementor-heading-title {
	color: #08543C !important;
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	font-size: 44px;
	line-height: 1.12;
	margin-bottom: 22px;
}
.bnsc-boxed:has(.bnsc-rb-phone) .elementor-heading-title b,
.bnsc-boxed:has(.bnsc-rb-phone) .elementor-heading-title strong {
	font-weight: 600;
	color: #08543C;
}
.bnsc-boxed:has(.bnsc-rb-phone) .elementor-widget-text-editor,
.bnsc-boxed:has(.bnsc-rb-phone) .elementor-widget-text-editor p {
	color: #4A5B6B !important;
	font-size: 16px;
	line-height: 1.7;
}
@media (max-width: 900px) {
	.bnsc-boxed:has(.bnsc-rb-phone) > .e-con-inner { gap: 8px; }
	.bnsc-boxed:has(.bnsc-rb-phone) > .e-con-inner > .e-con:not(.bnsc-rb-phone) { max-width: 100%; }
	.bnsc-boxed:has(.bnsc-rb-phone) .elementor-heading-title { font-size: 30px; }
	.bnsc-rb-phone { max-width: 100%; flex: 1 1 100%; min-height: 460px; }
	.bnsc-rb-phone .elementor-widget-image { width: 300px !important; top: -30px !important; }
}

/* 6) Banda CTA "Descubre la nueva imagen de nuestras tarjetas": la imagen de fondo (mano +
   tarjetas) la aplica Elementor en el container (background_image desktop + _mobile). Acá solo
   layout + colores. Desktop: la mano/tarjetas ocupan la mitad izquierda de la imagen, así que
   el texto va a la DERECHA, en verde oscuro sobre el fondo claro. Mobile: la imagen es vertical
   (tarjetas abajo) y el texto va arriba, centrado. */
/* El banner usa el ancho ESTÁNDAR de los contenedores del sitio (~1200px, .bnsc-boxed) para alinear
   visualmente con la sección "Banca Digital" de arriba y el resto de la página (pedido Jean 2026-09-28:
   "los contenedores deben estar alrededor de 1200px"). Se retiró un override previo a 1320px que lo
   dejaba más ancho que las demás secciones. */
.bnsc-rb-cards {
	/* La imagen (1920x1094) trae el rectángulo claro redondeado + la tarjeta flotando en la zona
	   transparente de arriba (confirmado: rect claro y=280-1000, tarjeta y=120-280). Mostramos la
	   imagen COMPLETA fijando el aspect-ratio al del asset -> con cover no recorta nada y la tarjeta
	   asoma por encima del rectángulo de forma natural (margen transparente = fondo blanco de la página). */
	aspect-ratio: 1920 / 1094;
	min-height: 0;
	border-radius: 0;
	overflow: visible;
	/* padding-top ~10% (del ancho): el rectángulo claro del asset ocupa la mitad inferior del canvas
	   (y 280-1000 de 1094); con align-items:center el texto quedaba centrado en TODO el canvas y se
	   salía por arriba del rectángulo. Este padding-top baja el centro del texto para que caiga dentro
	   del rectángulo (escala con el ancho porque el % de padding es relativo al width).
	   2026-09-28 (Jean): subido de 9% a 14% para bajar el texto un poco más y que el título deje de
	   asomar por encima del borde superior del rectángulo claro (quepa dentro del banner). */
	padding: 14% 9% 3% 0;
	display: flex !important;
	flex-direction: row !important;
	align-items: center;
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
}
.bnsc-rb-cards-txt {
	margin-left: auto !important;
	width: 42% !important;
	max-width: 42% !important;
	text-align: right;
	/* un poco más de aire vertical entre los elementos de la columna */
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 6px;
}
/* Estilos y pesos de la marca (igual que Banca Digital): título verde Poppins, palabra en <b> semibold. */
.bnsc-rb-cards .elementor-heading-title {
	color: #08543C !important;
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	font-size: 40px;
	line-height: 1.12;
	margin-bottom: 18px;
}
.bnsc-rb-cards .elementor-heading-title b,
.bnsc-rb-cards .elementor-heading-title strong {
	font-weight: 600;
	color: #08543C;
}
.bnsc-rb-cards .elementor-widget-text-editor,
.bnsc-rb-cards .elementor-widget-text-editor p {
	color: #4A5B6B !important;
	font-size: 16px;
	line-height: 1.7;
}
.bnsc-rb-cards .elementor-button {
	background: #08543C !important;
	color: #FFFFFF !important;
	font-weight: 600;
}
@media (max-width: 900px) {
	.bnsc-rb-cards {
		aspect-ratio: auto;
		flex-direction: column !important;
		justify-content: flex-start;
		padding: 28px 18px;
		min-height: 640px;
		border-radius: 24px;
		overflow: hidden;
		background-position: center bottom;
	}
	/* panel translúcido para que el texto se lea sobre la zona clara superior de la imagen */
	.bnsc-rb-cards-txt {
		margin-left: 0 !important;
		width: 100% !important;
		max-width: 100% !important;
		text-align: center;
		background: rgba(246, 248, 247, 0.55);
		border-radius: 16px;
		padding: 22px 16px;
	}
	/* título más compacto en mobile para que el panel no invada la zona de las tarjetas */
	.bnsc-rb-cards .elementor-heading-title { font-size: 26px !important; line-height: 1.2 !important; }
	.bnsc-rb-cards .elementor-widget-text-editor,
	.bnsc-rb-cards .elementor-widget-text-editor p { font-size: 14px !important; }
}

/* 7) Banda de video firma (autoplay/loop/muted). El video (1200x1080, casi cuadrado) va CENTRADO
   dentro del contenedor, no full-bleed. Banda clara con padding. */
.bnsc-rb-signband {
	/* Franja GRIS de sección (pedido Jean 2026-09-28) — igual gris que la banda de logos (gifband)
	   de esta misma página, para que el video de firma quede dentro de una franja y no sobre blanco. */
	background: #E9ECEE !important;
	/* Sin padding vertical (pedido Jean 2026-09-28): el video queda PEGADO al margen alto y bajo de la
	   sección, cubriendo todo su alto. Solo padding horizontal para respiro en los lados. */
	padding: 0 24px;
	justify-content: center !important;
	align-items: center !important;
}
.bnsc-rb-signband .elementor-widget-video {
	width: 100% !important;
	max-width: 900px !important;
	margin-left: auto !important;
	margin-right: auto !important;
	align-self: center !important;
}
.bnsc-rb-signband .e-hosted-video,
.bnsc-rb-signband .elementor-wrapper {
	border-radius: 0;
	overflow: hidden;
}
.bnsc-rb-signband video {
	display: block;
	width: 100%;
	height: auto;
	max-width: 900px;
	margin: 0 auto;
	border-radius: 0;
}

/* 8) FAQ — nombres de clase iguales a los de bnsc_faq (CPT) por pedido explícito de
   replicar el HTML tal cual; escopeados bajo .bnsc-rb-page para no chocar con las reglas
   ya existentes de ese componente en otras páginas del sitio. */
.bnsc-rb-page.bnsc-faq {
	padding: 56px 0 64px;
}
.bnsc-rb-page .elementor-heading-title {
	color: #08543C;
	font-family: "Poppins", sans-serif;
	font-weight: 300;
	text-align: center;
	margin-bottom: 36px;
}
/* Grid compacto de 2 columnas de píldoras (icono + categoría + chevron).
   OJO: .bnsc-faq-grid es un container "boxed" de Elementor -> las tarjetas viven dentro de su
   .e-con-inner, así que el grid se aplica a ese wrapper, no al .bnsc-faq-grid. */
/* El .bnsc-faq-grid es e-flex; su hijo .e-con-inner (grid) se encogía a su contenido (~582px)
   por la interacción flex-item + grid. Lo pasamos a block para que el inner ocupe el 100%. */
.bnsc-rb-page .bnsc-faq-grid {
	display: block !important;
}
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner {
	display: grid !important;
	grid-template-columns: repeat(2, 1fr);
	gap: 16px 24px;
	width: 100% !important;
	max-width: 1080px;
	margin: 0 auto !important;
	align-items: start;
}
/* Forzado explícito por nth-child: el auto-placement de los containers de Elementor mete todo
   en la columna 1 (auditado 2026-09-28). */
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(odd)  { grid-column: 1 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(even) { grid-column: 2 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(1) { grid-row: 1 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(2) { grid-row: 1 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(3) { grid-row: 2 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(4) { grid-row: 2 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(5) { grid-row: 3 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(6) { grid-row: 3 !important; }
.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card {
	width: 100% !important;
	align-self: start;
}
/* La tarjeta ya NO es un bloque gris grande: es solo el contenedor de la píldora. */
.bnsc-rb-page .bnsc-faq-card {
	background: transparent !important;
	border-radius: 0 !important;
	padding: 0 !important;
	min-height: 0 !important;
}
.bnsc-rb-page .bnsc-faq-card > .e-con-inner {
	position: relative;
	padding: 0 !important;
	display: block !important;
}
/* Icono pequeño superpuesto a la izquierda de la píldora. */
.bnsc-rb-page .bnsc-faq-card > .e-con-inner > .elementor-widget-image {
	position: absolute !important;
	left: 16px !important;
	top: 13px !important;
	width: 30px !important;
	margin: 0 !important;
	z-index: 2;
	pointer-events: none;
}
.bnsc-rb-page .bnsc-faq-card .elementor-widget-image img {
	display: block;
	width: 100%;
	height: auto;
}
/* Píldora = summary del acordeón EXTERNO (categoría). Blanca, borde fino, redondeada, compacta. */
.bnsc-rb-page .bnsc-faq-card > .e-con-inner > .elementor-widget-n-accordion > .e-n-accordion > .e-n-accordion-item > summary.e-n-accordion-item-title {
	background: #FFFFFF !important;
	border: 1px solid #E3E8E5 !important;
	border-radius: 10px !important;
	padding: 15px 18px 15px 56px !important;
	min-height: 0 !important;
	margin: 0 !important;
	align-items: center;
}
.bnsc-rb-page .bnsc-faq-card > .e-con-inner > .elementor-widget-n-accordion > .e-n-accordion > .e-n-accordion-item[open] > summary.e-n-accordion-item-title {
	border-bottom-left-radius: 0 !important;
	border-bottom-right-radius: 0 !important;
}
.bnsc-rb-page .bnsc-faq-card .e-n-accordion-item-title-text {
	font-family: "Lato", sans-serif;
	font-weight: 700;
	color: #08543C;
	font-size: 15px;
}
/* Chevron de la categoría en verde. */
.bnsc-rb-page .bnsc-faq-card > .e-con-inner > .elementor-widget-n-accordion > .e-n-accordion > .e-n-accordion-item > summary .e-n-accordion-item-title-icon {
	color: #08543C;
}
/* Acordeón interno (preguntas) — se muestra al abrir la categoría; encuadrado bajo la píldora. */
.bnsc-rb-page .bnsc-faq-card .e-n-accordion .e-n-accordion .e-n-accordion-item-title-text {
	font-weight: 400;
	font-size: 14px;
	color: #33475B;
}
@media (max-width: 760px) {
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner { grid-template-columns: 1fr; max-width: 480px; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(odd),
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(even) { grid-column: 1 !important; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(1) { grid-row: 1 !important; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(2) { grid-row: 2 !important; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(3) { grid-row: 3 !important; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(4) { grid-row: 4 !important; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(5) { grid-row: 5 !important; }
	.bnsc-rb-page .bnsc-faq-grid > .e-con-inner > .bnsc-faq-card:nth-child(6) { grid-row: 6 !important; }
}

/* ====================================================================================================
   FAQ "Preguntas frecuentes" de /tarjetas/tarjeta-garantizada-internacional/ (post 1002, sección
   6856bad). Pedido Jean 2026-09-28: centrar el contenedor y mejorar el UI. Estaba full-width con las
   filas en flex-direction:column, así que las 2 columnas (48%) se apilaban pegadas a la izquierda y el
   lado derecho quedaba vacío. Fix: filas en flex-direction:row (grid de 2 columnas lado a lado) y
   centradas (max-width ~1040px). Por element-id porque las clases en containers de Elementor no siempre
   renderizan (ver memoria container_css_classes_use_element_id). ==================================== */
@media (min-width: 1025px) {
	.elementor-element-5f24fca,
	.elementor-element-12668ab {
		flex-direction: row !important;
		justify-content: center !important;
		align-items: flex-start !important;
		gap: 24px !important;
		max-width: 1040px !important;
		margin-left: auto !important;
		margin-right: auto !important;
	}
}

/* ============================================================================================
   ACORDEONES DE TARJETAS — estilo Figma (2026-10-02)
   Alcance: SOLO el acordeón anidado de Elementor (.e-n-accordion) dentro de las páginas hijas de /tarjetas/
   (body.parent-pageid-946: Beneficios / Condiciones / Programa de lealtad y las preguntas tipo FAQ de esas fichas).
   NO toca los otros acordeones del sitio (bnsc-faqg, bnsc-qe, bnsc-prop-acordeon, bnsc-acc, toggle del Home) ni el
   FAQ de la landing de rebranding (/landing-rebranding/ no lleva esa clase de body).
   Referencia (medida sobre el diseño, 2x): título Poppins 18px; abierto #08543C, cerrado #5A7592; ícono de círculo con
   − / + de 24px a la DERECHA (antes: "+" de Font Awesome pegado al texto); línea fina #5A7592 de 1px bajo el título
   abierto; contenido Poppins 300 16px / interlineado 22px en #5A7592, viñetas con sangría de 24px y 22px entre ítems.
   Los fondos/tarjetas de cada acordeón (contenedores de Elementor) no se modifican.
   OJO tipografía: el contenido va en Poppins 300 porque así lo muestra la referencia; si se quisiera Lato (regla general
   de párrafos), basta cambiar --bnsc-tacc-body-font. Elementor fija tipografía/color por widget, de ahí los !important.
   ============================================================================================ */
body.parent-pageid-946 .e-n-accordion {
	--bnsc-tacc-open: #08543C;
	--bnsc-tacc-muted: #5A7592;
	--bnsc-tacc-title-font: 'Poppins', sans-serif;
	--bnsc-tacc-body-font: 'Poppins', sans-serif;
}

body.parent-pageid-946 .e-n-accordion .e-n-accordion-item > summary.e-n-accordion-item-title {
	justify-content: space-between !important;
	gap: 16px !important;
	padding: 14px 0 !important;
	margin: 0 4px !important; /* el divisor (border-bottom) nace alineado con el texto del título, como en la referencia */
	border-bottom: 1px solid transparent !important; /* reservado: el divisor aparece sin mover el layout */
}
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item[open] > summary.e-n-accordion-item-title {
	padding-bottom: 20px !important;
	border-bottom-color: var(--bnsc-tacc-muted) !important;
}

body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-text {
	font-family: var(--bnsc-tacc-title-font) !important;
	font-weight: 400 !important;
	font-size: 18px !important;
	line-height: 1.35 !important;
	color: var(--bnsc-tacc-muted) !important;
}
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-text,
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title:hover .e-n-accordion-item-title-text {
	color: var(--bnsc-tacc-open) !important;
}

/* Ícono: círculo con − (abierto) / + (cerrado), 24px, a la derecha. Se oculta el SVG de Font Awesome.
   Se dibuja con MÁSCARA (no con background-image): Elementor aplica `background-image: none !important` a todo lo que hay dentro
   de contenedores que aún no entraron en pantalla (lazy-load de fondos) y eso ocultaría un ícono hecho con imagen de fondo.
   El color sale de background-color (= var --bnsc-tacc-open); la forma, de la máscara. */
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-icon {
	flex: 0 0 24px;
	width: 24px !important;
	height: 24px !important;
}
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-icon > span {
	width: 24px !important;
	height: 24px !important;
	background-color: var(--bnsc-tacc-open);
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: 24px 24px;
	mask-size: 24px 24px;
}
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-icon .e-opened {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='10 10 48 48'%3E%3Ccircle cx='34' cy='34' r='21.5' fill='none' stroke='%23000' stroke-width='3'/%3E%3Cpath d='M22 34H46' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='10 10 48 48'%3E%3Ccircle cx='34' cy='34' r='21.5' fill='none' stroke='%23000' stroke-width='3'/%3E%3Cpath d='M22 34H46' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E");
}
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-icon .e-closed {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='10 10 48 48'%3E%3Ccircle cx='34' cy='34' r='21.5' fill='none' stroke='%23000' stroke-width='3'/%3E%3Cpath d='M22 34H46M34 22V46' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='10 10 48 48'%3E%3Ccircle cx='34' cy='34' r='21.5' fill='none' stroke='%23000' stroke-width='3'/%3E%3Cpath d='M22 34H46M34 22V46' stroke='%23000' stroke-width='2.4'/%3E%3C/svg%3E");
}
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-icon svg {
	display: none !important;
}

/* Contenido desplegado */
body.parent-pageid-946 .e-n-accordion .e-n-accordion-item > [role="region"] {
	padding: 24px 4px 12px !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor,
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor p,
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor li {
	font-family: var(--bnsc-tacc-body-font) !important;
	font-weight: 300 !important;
	font-size: 16px !important;
	line-height: 22px !important;
	color: var(--bnsc-tacc-muted) !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor strong,
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor b {
	font-weight: 500 !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor ul,
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor ol {
	margin: 0 !important;
	padding-left: 24px !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor li {
	margin: 0 0 22px !important;
	padding: 0 !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor li:last-child {
	margin-bottom: 0 !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor li::marker {
	color: var(--bnsc-tacc-muted);
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor p {
	margin: 0 0 16px !important;
}
body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor p:last-child {
	margin-bottom: 0 !important;
}

@media (max-width: 767px) {
	body.parent-pageid-946 .e-n-accordion .e-n-accordion-item-title-text {
		font-size: 16px !important;
	}
	body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor,
	body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor p,
	body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor li {
		font-size: 15px !important;
		line-height: 21px !important;
	}
	body.parent-pageid-946 .e-n-accordion [role="region"] .elementor-widget-text-editor li {
		margin-bottom: 16px !important;
	}
}

/* ---- "Cargar más" progresivo (JS en navbar.js, 2026-10-02): estado mientras se piden las cards nuevas ----
   Sin cambio visual en reposo: cada botón conserva su estilo propio (.bnsc-*-load-more). Solo se atenúa y se
   bloquea el click mientras carga, para evitar doble pedido. */
.bnsc-faq-grid-load-more.is-loading,
.bnsc-suc-grid-load-more.is-loading,
.bnsc-vt-grid-load-more.is-loading,
.bnsc-promo-grid-load-more.is-loading,
.bnsc-blog-grid-load-more.is-loading,
.bnsc-bienes-grid-load-more.is-loading,
.bnsc-tcard-load-more.is-loading {
	opacity: .6;
	pointer-events: none;
	cursor: progress;
}

/* ============================================================================================
   CALCULADORA DE PUNTOS — [bnsc_calc_puntos] (banesco-shortcode-calc-puntos.php), prefijo bnsc-pts-*  (2026-10-02; estilo de marca 2026-10-05)
   Se muestra dentro del drawer lateral (#calculadora-de-puntos); el encabezado grande "Calculadora de Puntos" lo pone el
   drawer (.bnsc-sidebar__title). Mismo lenguaje que las calculadoras de hipoteca/autos (.bnsc-calc-*): verde de marca #08543C
   (hover #06402F), neutros #33475B / #5A6B7B / #E1E5EA, tarjetas #F6F6F6 de radio 16, SIN degradé, y botones/campo con radio
   5px (botones del design system §17; campo con var(--bnsc-radius-control)). Antes era la réplica del sitio legado
   (#007953/#219963, botones píldora de 24px y resultados en degradé verde→azul).
   OJO reset.css de Hello Elementor: `button`/`input[type=text]` traen rosa #c36 y borde propios (ver "Rosa oculto del tema")
   -> clases repetidas para subir especificidad y !important solo donde el reset define el mismo atributo.
   ============================================================================================ */
/* Título del drawer de esta calculadora en verde de marca (el título compartido del resto de drawers de formularios sigue en su gris) */
.bnsc-sidebar[data-sidebar="#calculadora-de-puntos"] .bnsc-sidebar__title { color: #08543C; }

.bnsc-pts { color: #33475B; font-family: 'Lato', sans-serif; }
.bnsc-pts *, .bnsc-pts *::before, .bnsc-pts *::after { box-sizing: border-box; }

.bnsc-pts-heading { font-family: 'Poppins', sans-serif; font-weight: 300; font-size: 35px; line-height: 1.1; color: #08543C; margin: 0 0 24px; }

.bnsc-pts-card { border: 1px solid #E1E5EA; border-radius: 16px; padding: 32px; background: #fff; }

.bnsc-pts-title { font-family: 'Poppins', sans-serif; font-weight: 300; font-size: 24px; line-height: 1.1; color: #08543C; margin: 0 0 24px; }

.bnsc-pts-label { display: block; font-family: 'Poppins', sans-serif; font-size: 13px; line-height: 1.25; font-weight: 600; color: #5A6B7B; margin: 0 0 8px; }

.bnsc-pts-input.bnsc-pts-input {
	display: block;
	width: 100%;
	height: 48px;
	padding: 0 16px;
	background: #fff;
	border: 1px solid #E1E5EA;
	border-radius: var(--bnsc-radius-control);
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	line-height: 1.5;
	color: #33475B;
	appearance: none;
	-webkit-appearance: none;
}
.bnsc-pts-input.bnsc-pts-input:focus { outline: none; border-color: #08543C; box-shadow: 0 0 0 3px rgba(8, 84, 60, .12); }
.bnsc-pts-input::placeholder { color: #6B7280; opacity: 1; }

.bnsc-pts-error { margin: 8px 0 0; font-size: 13px; line-height: 1.3; color: #C0392B; }
.bnsc-pts-error[hidden] { display: none; }

.bnsc-pts-terms { margin: 20px 0 24px; font-size: 15px; line-height: 1.4; font-weight: 400; color: #33475B; }
.bnsc-pts-terms b { font-weight: 700; }
.bnsc-pts-terms a, .bnsc-pts-tip a { color: #08543C; font-weight: 700; text-decoration: underline; }
.bnsc-pts-terms a:hover, .bnsc-pts-tip a:hover { color: #06402F; }

.bnsc-pts-buttons { display: flex; flex-wrap: wrap; gap: 12px; }

.bnsc-pts-btn.bnsc-pts-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 13px 36px;
	border: 1px solid #08543C !important;
	border-radius: 5px;
	background: transparent !important;
	color: #08543C !important;
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}
.bnsc-pts-btn.bnsc-pts-btn:hover,
.bnsc-pts-btn.bnsc-pts-btn:focus-visible { background: #E6EDEB !important; border-color: #08543C !important; color: #08543C !important; }
.bnsc-pts-btn.bnsc-pts-btn:focus-visible { outline: 2px solid #08543C; outline-offset: 2px; }
.bnsc-pts-btn.bnsc-pts-btn--solid { background: #08543C !important; color: #fff !important; }
.bnsc-pts-btn.bnsc-pts-btn--solid:hover,
.bnsc-pts-btn.bnsc-pts-btn--solid:focus-visible { background: #06402F !important; border-color: #06402F !important; color: #fff !important; }

.bnsc-pts-more { margin-top: 28px; }
.bnsc-pts-more[hidden] { display: none; }

.bnsc-pts-results { list-style: none; margin: 0 0 28px; padding: 28px 32px; border-radius: 16px; background: #08543C; }
.bnsc-pts-results li { margin: 0; font-family: 'Poppins', sans-serif; font-size: 20px; font-weight: 300; line-height: 1.6; color: #fff; }
.bnsc-pts-results .bnsc-pts-results-note { margin-top: 8px; font-family: 'Lato', sans-serif; font-size: 13px; font-weight: 400; line-height: 1.4; color: #C7D6CE; }

.bnsc-pts-tips-title { font-family: 'Poppins', sans-serif; font-weight: 300; font-size: 24px; line-height: 1.1; color: #08543C; margin: 0 0 20px; }
.bnsc-pts-tips { display: grid; grid-template-columns: 1fr; gap: 16px; }
.bnsc-pts-tip { border-radius: 16px; padding: 24px; background: #F6F6F6; }
.bnsc-pts-tip > * { color: #33475B; margin: 12px 0; }
.bnsc-pts-tip > :first-child { margin-top: 0; }
.bnsc-pts-tip > :last-child { margin-bottom: 0; }
/* Ícono: los SVG del shortcode pintan con currentColor -> verde de marca desde acá */
.bnsc-pts-tip-icon { color: #08543C; line-height: 0; }
.bnsc-pts-tip h4 { font-family: 'Poppins', sans-serif; font-weight: 400; font-size: 20px; line-height: 1.2; color: #08543C; }
.bnsc-pts-tip p { font-size: 16px; line-height: 1.5; font-weight: 400; }

@media (max-width: 600px) {
	.bnsc-pts-card { padding: 24px 18px; }
	.bnsc-pts-results { padding: 24px 22px; }
	.bnsc-pts-results li { font-size: 18px; }
	.bnsc-pts-btn.bnsc-pts-btn { padding: 13px 24px; }
	.bnsc-pts-tip { padding: 20px; }
}

/* ============================================================================
   Catálogo de tarjetas con fichas elegidas a mano — [bnsc_tarjetas_catalogo ids="…"] (2026-10-05)
   /internacional/tarjeta-internacional/ (Figma 14481:10824) muestra solo 2 tarjetas (Garantizada y Prepagada),
   centradas y de 380px de ancho, no la grilla de 3 columnas del catálogo completo. Aditivo: solo aplica con el
   modificador --ids que pone el shortcode cuando recibe ids=""; el resto del catálogo no cambia. */
.bnsc-tcard-grid--ids {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 34px;
}
.bnsc-tcard-grid--ids .bnsc-tcard {
	flex: 0 1 380px;
	width: 380px;
	max-width: 100%;
}

/* ============================================================================
   Banner de ancho completo en móvil — clase .bnsc-banner-full (2026-10-05)
   Landing Mastercard (post 5682) y sus hermanas tdc-promo: la sección de primer nivel es SOLO un banner (2 imágenes escritorio/móvil, sin
   texto) y debe ir de borde a borde en móvil. El PASE GLOBAL MÓVIL (arriba) le pone 24px por lado a toda sección de primer nivel salvo héroes y
   CTA, dejando una franja blanca a cada lado del banner. Opt-in por clase (control nativo "Clases CSS" del contenedor); :not(#…) sube la
   especificidad para ganarle a la regla 1 sin tocarla (mismo recurso que .bnsc-req-wrap). */
@media (max-width: 767px) {
	body:not(.home) .elementor .e-con.e-parent.bnsc-banner-full:not(#bnsc-banner-full) {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
}

/* ============================================================================
   Landing Mastercard — filtro de tarjetas (.ftb-*) con el lenguaje del catálogo de tarjetas (2026-10-05)
   El widget HTML del banco (post 5682 y landings tdc-promo-1…5) trae su propio <style> con prefijo .ftb- y NO define tipografía: todo se pintaba con la fuente
   del sistema, cards casi cuadradas con un hueco enorme entre el título y los botones, la imagen pegada a la esquina superior derecha (las verticales ocupaban
   casi todo el alto y las horizontales quedaban chicas) y el título del nombre pisado por la imagen. Se alinea con .bnsc-tcard (/tarjetas/, /empresas/tarjetas/):
   Poppins 300 en el H2, Lato en el resto, card #F6F6F6 radio 16, imagen arriba a la izquierda dentro de una caja fija con object-fit:contain (horizontal y vertical a la
   MISMA escala), título, y botones al fondo. Los selectores llevan ".ftb " delante para ganarle por especificidad al <style> inline del widget (que carga después);
   así, si el banco pega otra versión de su widget, este tratamiento se mantiene. El comportamiento (filtro y panel de beneficios con checkbox + label) no se toca. */
/* section.ftb (no solo .ftb): el <style> del widget también define .ftb{max-width;padding} y, a igual especificidad, gana por cargar después. */
section.ftb {
	max-width: 1248px;
	padding: 0 24px 70px;
	font-family: 'Lato', sans-serif;
}
.ftb .ftb__titulo {
	font-family: 'Poppins', sans-serif;
	font-weight: 300;
	font-size: 44px;
	line-height: 1.1;
	margin-bottom: 32px;
}
.ftb .ftb__controles { margin-bottom: 36px; }
.ftb .ftb__chip {
	font-family: 'Lato', sans-serif;
	border-radius: var(--bnsc-radius-control);
}
.ftb .ftb__grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}
.ftb .ftb-card {
	aspect-ratio: auto;
	min-height: 350px;
	border-radius: 16px;
}
.ftb .ftb-card:hover { transform: none; box-shadow: 0 8px 24px rgb(0 0 0 / .08); }
.ftb .ftb-card__face {
	justify-content: flex-start;
	gap: 14px;
	padding: 20px 24px 24px;
}
/* imagen: arriba a la izquierda, en flujo (ya no absoluta), caja fija 220×170 → horizontal y vertical a la misma escala */
.ftb .ftb-card__art {
	position: static;
	order: 0;
	width: 220px;
	height: 170px;
	max-width: 100%;
	max-height: none;
	object-fit: contain;
	object-position: left center;
	align-self: flex-start;
}
.ftb .ftb-card__titulo { order: 1; max-width: none; }
.ftb .ftb-card__acciones { order: 2; margin-top: auto; gap: 12px; }
.ftb .ftb-card__marca,
.ftb .ftb-card__nombre {
	font-family: 'Lato', sans-serif;
	font-size: 19px;
	font-weight: 400;
	line-height: 1.3;
}
.ftb .ftb-card__marca { color: #5A6B7B; font-size: 14px; }
.ftb .ftb-card__nombre { color: #08543C; }
/* botones: sistema de botones del sitio (radio 5, Lato 400 16px, borde 1px reservado; secundario blanco sólido sobre la card gris) */
.ftb .ftb-btn {
	font-family: 'Lato', sans-serif;
	font-size: 16px;
	font-weight: 400;
	min-height: 46px;
	padding: 12px 14px;
	border: 1px solid transparent;
	border-radius: var(--bnsc-radius-control);
}
.ftb .ftb-btn--ghost { border-color: transparent; background: #fff; color: #08543C; }
.ftb .ftb-btn--ghost:hover { background: #EEF1F0; }
/* panel de beneficios */
.ftb .ftb-card__beneficios { border-radius: 16px; padding: 20px 22px; }
.ftb .ftb-beneficios__head { margin-bottom: 14px; }
.ftb .ftb-beneficios__marca { font-size: 14px; }
.ftb .ftb-beneficios__nombre { font-size: 19px; font-weight: 400; }
.ftb .ftb-beneficios__lista li { font-size: 13px; line-height: 1.4; margin-bottom: 7px; }
.ftb .ftb-beneficios__cerrar { border-radius: var(--bnsc-radius-control); }

@media (max-width: 1024px) {
	.ftb .ftb__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
	/* el gutter de 24px lo da la sección (pase global móvil): sin relleno propio para no sumar 24+24 */
	section.ftb { padding-left: 0; padding-right: 0; padding-bottom: 50px; }
	.ftb .ftb__titulo { font-size: 34px; margin-bottom: 26px; }
	.ftb .ftb__grid { grid-template-columns: 1fr; gap: 20px; }
	.ftb .ftb-card { width: 100%; max-width: none; min-height: 350px; }
	.ftb .ftb-btn { padding: 12px 10px; font-size: 15px; }
}
@media (max-width: 380px) {
	.ftb .ftb-card__face { padding: 18px 18px 20px; }
	.ftb .ftb-card__beneficios { padding: 18px; }
}

/* Texto legal de las landings de promo Mastercard (tdc-promo-1…5): puede traer una URL larga sin espacios (PDF de comercios afiliados en la promo 5) que desbordaba
   la página en móvil (390px → 651px de scroll). overflow-wrap:anywhere la parte solo cuando no cabe; no afecta al resto del texto. */
.bnsc-promo-terminos { overflow-wrap: anywhere; }
