/**
 * NC Studio Elements — sistema de diseño
 * Tokens + componentes de los widgets. Editable vía controles de Elementor
 * (los controles generan overrides con {{WRAPPER}}, estos son los defaults).
 */

:root {
	--ncs-black: #0E0E0C;
	--ncs-ink: #181816;
	--ncs-gray: #6E6B64;
	--ncs-cream: #F4F2ED;
	--ncs-border: #E7E4DD;
	--ncs-white: #FFFFFF;
	--ncs-white-70: rgba(255, 255, 255, .72);
	--ncs-white-40: rgba(255, 255, 255, .4);
	--ncs-serif: 'NC Playfair Display', 'Playfair Display', Georgia, serif;
	--ncs-sans: 'NC Inter', 'Inter', system-ui, -apple-system, sans-serif;
	--ncs-radius-card: 10px;
	--ncs-radius-band: 22px;
	--ncs-ease: cubic-bezier(.22, .61, .36, 1);
}

/* Red de seguridad: evita scroll lateral en tablet/mobile si algún
   componente responsive se pasa del 100% de ancho por redondeos o gaps. */
html { max-width: 100%; overflow-x: hidden; }
body { max-width: 100%; overflow-x: hidden; }

/* ---------- Utilidades base ---------- */

.ncs-eyebrow {
	font-family: var(--ncs-sans);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .17em;
	text-transform: uppercase;
	color: var(--ncs-ink);
	margin: 0 0 18px;
}

.ncs-eyebrow--light { color: var(--ncs-white-70); }

/* Eyebrow aplicado a un widget Heading (builder). Especificidad alta para
   ganar al color global Primary que Elementor asigna por defecto al heading. */
.elementor-widget.ncs-eyebrow-wrap .elementor-heading-title {
	font-family: var(--ncs-sans);
	font-size: 11.5px;
	font-weight: 600;
	letter-spacing: .17em;
	text-transform: uppercase;
	color: var(--ncs-ink);
}
.ncs-eyebrow-wrap { margin-bottom: 18px; }
.elementor-widget.ncs-eyebrow-wrap--light .elementor-heading-title { color: var(--ncs-white-70); }

/* Imagen con radio estándar del sistema */
.ncs-img-rounded img {
	border-radius: 14px;
	width: 100%;
	object-fit: cover;
}

/* Overlay de stats sobre foto (hero El Estudio): anclado al fondo del contenedor */
.ncs-stats--overlay {
	background: linear-gradient(180deg, rgba(10, 10, 9, 0), rgba(10, 10, 9, .74));
	border-radius: 0 0 14px 14px;
}
.elementor-widget:has(> .elementor-widget-container > .ncs-stats--overlay),
.elementor-widget-nc_stats_bar:has(.ncs-stats--overlay) { margin-top: auto; }

/* Header sticky con borde al hacer scroll (Elementor Pro sticky) */
.ncs-header { background: #FFFFFF; }
.ncs-header.elementor-sticky--effects {
	border-bottom: 1px solid var(--ncs-border);
	box-shadow: 0 6px 24px -18px rgba(14, 14, 12, .25);
}

/* Hairline entre ítems de listas horizontales */
.ncs-hairline { border-color: var(--ncs-border); }

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

.ncs-btn {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-family: var(--ncs-sans);
	font-size: 14.5px;
	font-weight: 500;
	line-height: 1;
	padding: 16px 26px;
	border-radius: 999px;
	border: 1px solid transparent;
	cursor: pointer;
	text-decoration: none;
	transition: background .35s var(--ncs-ease), color .35s var(--ncs-ease), border-color .35s var(--ncs-ease), transform .35s var(--ncs-ease);
	white-space: nowrap;
}

.ncs-btn svg { width: 15px; height: 15px; transition: transform .35s var(--ncs-ease); }
.ncs-btn:hover svg { transform: translateX(4px); }
.ncs-btn--download:hover svg { transform: translateY(3px); }

/* Dobles clases: ganar especificidad al color de enlaces del Kit (.elementor-kit-X a) */
.ncs-btn.ncs-btn--solid { background: var(--ncs-black); color: var(--ncs-white); }
.ncs-btn.ncs-btn--solid:hover { background: #2A2A27; color: var(--ncs-white); }

.ncs-btn.ncs-btn--outline { background: transparent; color: var(--ncs-ink); border-color: #CFCCC4; }
.ncs-btn.ncs-btn--outline:hover { background: var(--ncs-black); color: var(--ncs-white); border-color: var(--ncs-black); }

.ncs-btn.ncs-btn--light { background: var(--ncs-white); color: var(--ncs-ink); }
.ncs-btn.ncs-btn--light:hover { background: var(--ncs-cream); color: var(--ncs-ink); }

.ncs-btn.ncs-btn--link {
	background: none;
	border: none;
	padding: 0;
	border-radius: 0;
	color: var(--ncs-ink);
	font-weight: 500;
}
.ncs-btn.ncs-btn--link:hover { opacity: .7; }

/* ---------- Indicador scroll ---------- */

.ncs-scroll {
	display: inline-flex;
	align-items: center;
	gap: 16px;
	font-family: var(--ncs-sans);
	font-size: 13px;
	color: var(--ncs-gray);
}
.ncs-scroll__line {
	width: 72px;
	height: 1px;
	background: #C9C6BE;
	display: block;
}
.ncs-scroll__circle {
	width: 34px; height: 34px;
	border: 1px solid #CFCCC4;
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	animation: ncs-bob 2.4s infinite var(--ncs-ease);
}
.ncs-scroll__circle svg { width: 13px; height: 13px; }
@keyframes ncs-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(5px); } }

/* ---------- Stats bar ---------- */

.ncs-stats {
	display: flex;
	list-style: none;
	margin: 0;
	padding: 0;
	width: 100%;
}
.ncs-stats__item {
	flex: 1 1 0;
	display: flex;
	align-items: center;
	gap: 16px;
	padding: 8px 28px;
	min-width: 0;
}
.ncs-stats__item + .ncs-stats__item { border-left: 1px solid var(--ncs-border); }
.ncs-stats__icon {
	flex: 0 0 auto;
	width: 44px; height: 44px;
	border-radius: 50%;
	background: var(--ncs-black);
	color: var(--ncs-white);
	display: flex;
	align-items: center;
	justify-content: center;
}
.ncs-stats__icon svg { width: 19px; height: 19px; }
.ncs-stats__body { display: flex; flex-direction: column; min-width: 0; }
.ncs-stats__num {
	display: block;
	font-family: var(--ncs-sans);
	font-size: 27px;
	font-weight: 600;
	color: var(--ncs-ink);
	line-height: 1.05;
	letter-spacing: -.01em;
}
.ncs-stats__label {
	display: block;
	font-family: var(--ncs-sans);
	font-size: 13px;
	line-height: 1.35;
	color: var(--ncs-gray);
	margin-top: 3px;
	white-space: pre-line;
}

.ncs-stats--dark .ncs-stats__num,
.ncs-stats--overlay .ncs-stats__num { color: var(--ncs-white); }
.ncs-stats--dark .ncs-stats__label,
.ncs-stats--overlay .ncs-stats__label { color: var(--ncs-white-70); }
.ncs-stats--dark .ncs-stats__item + .ncs-stats__item,
.ncs-stats--overlay .ncs-stats__item + .ncs-stats__item { border-left-color: rgba(255, 255, 255, .18); }
.ncs-stats--dark .ncs-stats__icon,
.ncs-stats--overlay .ncs-stats__icon { background: rgba(255, 255, 255, .12); }

.ncs-stats--overlay { padding: 22px 8px; }
.ncs-stats--overlay .ncs-stats__item { padding: 0 24px; }

.ncs-stats--noicons .ncs-stats__icon { display: none; }

/* ---------- Columnas con icono (capacidades / filosofía / por qué) ---------- */

.ncs-icon-cols {
	display: grid;
	grid-template-columns: repeat(var(--ncs-cols, 6), minmax(0, 1fr));
	width: 100%;
}
.ncs-icon-cols__item {
	padding: 6px 26px;
	min-width: 0;
}
.ncs-icon-cols--dividers .ncs-icon-cols__item + .ncs-icon-cols__item { border-left: 1px solid var(--ncs-border); }
.ncs-icon-cols__item:first-child { padding-left: 0; }
.ncs-icon-cols__icon { color: var(--ncs-ink); margin-bottom: 20px; }
.ncs-icon-cols__icon svg { width: 30px; height: 30px; }
.ncs-icon-cols .ncs-icon-cols__title {
	font-family: var(--ncs-sans);
	font-size: 15.5px;
	font-weight: 600;
	color: var(--ncs-ink);
	margin: 0 0 10px;
	line-height: 1.4;
}
.ncs-icon-cols__text {
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	line-height: 1.65;
	color: var(--ncs-gray);
	margin: 0;
}
.ncs-icon-cols--dark .ncs-icon-cols__icon,
.ncs-icon-cols--dark .ncs-icon-cols__title { color: var(--ncs-white); }
.ncs-icon-cols--dark .ncs-icon-cols__text { color: var(--ncs-white-70); }
.ncs-icon-cols--dark.ncs-icon-cols--dividers .ncs-icon-cols__item + .ncs-icon-cols__item { border-left-color: rgba(255, 255, 255, .16); }

/* ---------- Tarjetas de servicio ---------- */

.ncs-cards {
	display: grid;
	grid-template-columns: repeat(var(--ncs-cols, 4), minmax(0, 1fr));
	gap: 22px;
	width: 100%;
}
.ncs-card {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--ncs-white);
	border: 1px solid var(--ncs-border);
	border-radius: var(--ncs-radius-card);
	padding: 30px 28px 26px;
	text-decoration: none;
	transition: border-color .4s var(--ncs-ease), box-shadow .4s var(--ncs-ease), transform .4s var(--ncs-ease);
}
.ncs-card:hover {
	border-color: #B9B5AC;
	box-shadow: 0 18px 44px -18px rgba(14, 14, 12, .18);
	transform: translateY(-3px);
}
.ncs-card__top {
	display: flex;
	justify-content: space-between;
	align-items: flex-start;
	margin-bottom: 34px;
}
.ncs-card__icon { color: var(--ncs-ink); }
.ncs-card__icon svg { width: 30px; height: 30px; }
.ncs-card__arrow { color: var(--ncs-ink); opacity: .8; transition: transform .4s var(--ncs-ease); }
.ncs-card__arrow svg { width: 17px; height: 17px; }
.ncs-card:hover .ncs-card__arrow { transform: translate(3px, -3px); }
.ncs-card .ncs-card__title {
	font-family: var(--ncs-sans);
	font-size: 17px;
	font-weight: 600;
	color: var(--ncs-ink);
	margin: 0 0 10px;
	line-height: 1.4;
}
.ncs-card__text {
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	line-height: 1.65;
	color: var(--ncs-gray);
	margin: 0 0 26px;
}
.ncs-card__more {
	margin-top: auto;
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	font-weight: 500;
	color: var(--ncs-ink);
}
.ncs-card__more svg { width: 14px; height: 14px; transition: transform .35s var(--ncs-ease); }
.ncs-card:hover .ncs-card__more svg { transform: translateX(4px); }

/* ---------- Tarjeta de proyecto ---------- */

.ncs-proj {
	position: relative;
	display: block;
	border-radius: var(--ncs-radius-card);
	overflow: hidden;
	background: var(--ncs-black);
	text-decoration: none;
	aspect-ratio: var(--ncs-ratio, 4 / 5);
	min-height: var(--ncs-min-h, 0px);
	isolation: isolate;
	container-type: inline-size;
	transition: transform .45s var(--ncs-ease), box-shadow .45s var(--ncs-ease);
}
.ncs-proj:hover { transform: translateY(var(--ncs-card-lift, -6px)); }
@media (prefers-reduced-motion: reduce) {
	.ncs-proj, .ncs-proj:hover { transition: none; transform: none; }
}

/* El contenedor de imagen es transparente al layout en modo "overlay":
   con display:contents la <img> se comporta igual que antes. */
.ncs-proj__media { display: contents; }

.ncs-proj__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: var(--ncs-img-fit, cover);
	object-position: var(--ncs-img-pos, center top);
	transition: transform 1s var(--ncs-ease);
	z-index: -1;
}
.ncs-proj:hover .ncs-proj__img { transform: scale(1.05); }
.ncs-no-zoom .ncs-proj:hover .ncs-proj__img { transform: none; }

/* Capturas de página completa: al pasar el mouse la imagen recorre el sitio
   de arriba abajo (sustituye al zoom). Vuelve arriba más rápido al salir. */
.ncs-scroll-shot .ncs-proj__img { transition: object-position 1.1s var(--ncs-ease); }
.ncs-scroll-shot .ncs-proj:hover .ncs-proj__img {
	transform: none;
	object-position: center bottom;
	transition: object-position var(--ncs-scroll-dur, 6s) cubic-bezier(.45, .05, .55, .95);
}
@media (prefers-reduced-motion: reduce) {
	.ncs-scroll-shot .ncs-proj:hover .ncs-proj__img { object-position: var(--ncs-img-pos, center top); }
}

/* Degradado sólo en la franja inferior: la captura se ve limpia arriba y el
   título sigue siendo legible aunque el sitio sea blanco. */
.ncs-proj::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(10, 10, 9, 0) 0%, rgba(10, 10, 9, 0) 34%, rgba(10, 10, 9, .62) 62%, rgba(10, 10, 9, .92) 100%);
	z-index: 0;
}
.ncs-proj--overlay .ncs-proj__title,
.ncs-proj--overlay .ncs-proj__subtitle { text-shadow: 0 1px 14px rgba(10, 10, 9, .55); }
.ncs-proj__inner {
	position: absolute;
	inset: 0;
	z-index: 1;
	display: flex;
	flex-direction: column;
	justify-content: var(--ncs-text-justify, flex-end);
	text-align: var(--ncs-text-align, start);
	padding: 24px;
}
.ncs-proj__chip {
	position: absolute;
	top: 18px;
	left: 18px;
	background: rgba(255, 255, 255, .92);
	color: var(--ncs-ink);
	font-family: var(--ncs-sans);
	font-size: 11.5px;
	font-weight: 500;
	padding: 7px 13px;
	border-radius: 999px;
	backdrop-filter: blur(4px);
}
.ncs-proj__title {
	font-family: var(--ncs-sans);
	font-size: 23px;
	/* Se encoge en tarjetas angostas (carrusel de 6) para no partir el nombre. */
	font-size: clamp(16px, 7.4cqi, 23px);
	line-height: 1.2;
	font-weight: 600;
	letter-spacing: .01em;
	color: var(--ncs-white);
	margin: 0 0 4px;
}
.ncs-proj__subtitle {
	font-family: var(--ncs-sans);
	font-size: 13px;
	color: var(--ncs-white-70);
	margin: 0;
}
.ncs-proj__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 14px;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid rgba(255, 255, 255, .22);
	font-family: var(--ncs-sans);
	font-size: 13px;
	font-weight: 500;
	color: var(--ncs-white);
}
.ncs-proj__foot svg { width: 14px; height: 14px; transition: transform .35s var(--ncs-ease); }
.ncs-proj:hover .ncs-proj__foot svg { transform: translateX(4px); }

/* Botón circular flotante "Ver proyecto" (alternativa al pie de texto) */
.ncs-proj__media { position: relative; }
.ncs-proj__corner {
	position: absolute;
	z-index: 3;
	right: 20px;
	bottom: 0;
	width: 44px;
	height: 44px;
	transform: translateY(50%);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	color: var(--ncs-ink, #181816);
	box-shadow: 0 6px 18px -4px rgba(10, 10, 9, .28);
	transition: transform .4s var(--ncs-ease), background-color .35s, color .35s;
}
.ncs-proj__corner svg { width: 40%; height: 40%; }
.ncs-proj:hover .ncs-proj__corner { transform: translateY(50%) scale(1.08) rotate(45deg); }
@media (prefers-reduced-motion: reduce) {
	.ncs-proj:hover .ncs-proj__corner { transform: translateY(50%) scale(1.08); }
}
/* En "Texto encima de la imagen" no hay borde entre imagen y texto:
   el botón va dentro de la tarjeta, en la esquina superior derecha. */
.ncs-proj--overlay .ncs-proj__corner { top: 18px; bottom: auto; transform: none; }
.ncs-proj--overlay:hover .ncs-proj__corner { transform: scale(1.08) rotate(45deg); }
@media (prefers-reduced-motion: reduce) {
	.ncs-proj--overlay:hover .ncs-proj__corner { transform: scale(1.08); }
}
.ncs-proj--chip-bottom .ncs-proj__chip {
	position: static;
	align-self: var(--ncs-text-align, start);
	margin-top: var(--ncs-text-gap, 14px);
}

/* ---------- Tarjeta de proyecto · mitad imagen / mitad texto ---------- */

.ncs-proj--split {
	display: flex;
	flex-direction: column;
}
/* Sin degradado: el texto vive en su propia mitad. */
.ncs-proj--split::after { display: none; }

.ncs-proj--split .ncs-proj__media {
	display: block;
	position: relative;
	flex: 0 0 var(--ncs-split, 50%);
	min-height: 0;
	overflow: hidden;
	background: var(--ncs-media-bg, #171714);
}
.ncs-proj--split .ncs-proj__img {
	z-index: 0;
}
.ncs-proj--split .ncs-proj__inner {
	position: static;
	flex: 1 1 auto;
	min-height: 0;
	background: var(--ncs-text-bg, transparent);
	padding: 22px 24px;
}
/* En "mitad y mitad" la etiqueta nunca flota: fluye con el texto. */
.ncs-proj--split .ncs-proj__chip {
	position: static;
	align-self: var(--ncs-text-align, start);
	backdrop-filter: none;
}
.ncs-proj--split:not(.ncs-proj--chip-bottom) .ncs-proj__chip {
	margin: 0 0 var(--ncs-text-gap, 10px);
}
.ncs-proj--split.ncs-proj--chip-bottom .ncs-proj__chip {
	margin: var(--ncs-text-gap, 12px) 0 0;
}
/* Tarjetas sin imagen: conservan la misma altura para no romper la fila. */
.ncs-proj--split .ncs-proj__media--empty { background: var(--ncs-media-bg, #171714); }

@media (max-width: 767px) {
	.ncs-proj--split .ncs-proj__inner { padding: 18px 18px; }
}

/* ---------- Carrusel de proyectos ---------- */

.ncs-carousel { position: relative; width: 100%; }
.ncs-carousel__track {
	display: flex;
	gap: 22px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding-bottom: 4px;
}
.ncs-carousel__track::-webkit-scrollbar { display: none; }
.ncs-carousel__slide {
	flex: 0 0 calc((100% - 110px) / 6);
	min-width: 205px;
	scroll-snap-align: start;
}
.ncs-carousel__nav,
.ncs-carousel__nav--side {
	position: absolute;
	top: 50%;
	right: 14px;
	transform: translateY(-50%);
	display: flex;
	flex-direction: row;
	gap: 10px;
	z-index: 3;
}
.ncs-carousel__nav--below {
	position: static;
	transform: none;
	margin-top: 32px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
}
.ncs-carousel__dots {
	display: flex;
	align-items: center;
	gap: 9px;
}
.ncs-carousel__dot {
	appearance: none;
	-webkit-appearance: none;
	width: 8px;
	height: 8px;
	padding: 0;
	margin: 0;
	border: 0;
	border-radius: 50%;
	background: #DAD7CE;
	cursor: pointer;
	transition: background-color .3s, transform .3s;
}
.ncs-carousel__dot.is-active { background: var(--ncs-ink, #181816); transform: scale(1.35); }
.ncs-carousel button.ncs-carousel__btn {
	appearance: none;
	-webkit-appearance: none;
	box-sizing: border-box;
	width: 46px;
	height: 46px;
	min-width: 46px;
	padding: 0;
	margin: 0;
	line-height: 0;
	border-radius: 999px;
	border: 1px solid var(--ncs-border, #E7E4DD);
	background: var(--ncs-white, #fff);
	color: var(--ncs-ink, #181816);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	box-shadow: 0 12px 28px -14px rgba(14, 14, 12, .4);
	outline: none;
	transition: background .3s, color .3s, opacity .3s;
}
.ncs-carousel button.ncs-carousel__btn:hover { background: var(--ncs-black, #0E0E0C); color: #fff; border-color: var(--ncs-black, #0E0E0C); }
.ncs-carousel button.ncs-carousel__btn:focus { outline: none; }
.ncs-carousel button.ncs-carousel__btn:focus-visible { outline: 2px solid var(--ncs-ink, #181816); outline-offset: 2px; }
.ncs-carousel button.ncs-carousel__btn[disabled] { opacity: .35; pointer-events: none; box-shadow: none; }
.ncs-carousel button.ncs-carousel__btn svg { width: 17px; height: 17px; display: block; }

/* ---------- Grid filtrable de proyectos ---------- */

.ncs-grid { width: 100%; }
.ncs-grid__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	flex-wrap: wrap;
	margin-bottom: 34px;
}
.ncs-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	list-style: none;
	margin: 0;
	padding: 0;
}
.ncs-filters button.ncs-filters__btn {
	appearance: none;
	-webkit-appearance: none;
	font-family: var(--ncs-sans);
	font-size: 13px;
	font-weight: 500;
	color: var(--ncs-ink);
	background: transparent;
	border: 1px solid transparent;
	border-radius: 999px;
	padding: 9px 18px;
	margin: 0;
	line-height: 1.2;
	cursor: pointer;
	transition: all .3s var(--ncs-ease);
}
.ncs-filters button.ncs-filters__btn:hover { border-color: #CFCCC4; background: transparent; color: var(--ncs-ink); }
.ncs-filters button.ncs-filters__btn.is-active { background: var(--ncs-black); color: var(--ncs-white); border-color: var(--ncs-black); }
.ncs-grid__sort {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--ncs-sans);
	font-size: 13px;
	color: var(--ncs-gray);
}
.ncs-grid__sort select {
	appearance: auto;
	font-family: var(--ncs-sans);
	font-size: 13px;
	font-weight: 500;
	color: var(--ncs-ink);
	border: none;
	border-radius: 0;
	background: transparent;
	cursor: pointer;
	padding: 4px 2px;
}
.ncs-grid__items {
	display: grid;
	grid-template-columns: repeat(var(--ncs-cols, 4), minmax(0, 1fr));
	gap: 22px;
}
.ncs-grid__items .ncs-proj.is-hidden { display: none; }

/* ---------- Marquesina de logos ---------- */

.ncs-marquee {
	display: flex;
	align-items: center;
	gap: 40px;
	width: 100%;
	min-width: 0;
}
.ncs-marquee__label {
	flex: 0 0 auto;
	font-family: var(--ncs-sans);
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ncs-gray);
	max-width: 150px;
	line-height: 1.6;
}
.ncs-marquee__viewport {
	flex: 1 1 auto;
	overflow: hidden;
	min-width: 0;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
.ncs-marquee__track {
	display: inline-flex;
	align-items: center;
	gap: 64px;
	padding-right: 64px;
	white-space: nowrap;
	animation: ncs-marquee var(--ncs-marquee-speed, 34s) linear infinite;
	will-change: transform;
}
.ncs-marquee--static .ncs-marquee__track { animation: none; flex-wrap: wrap; white-space: normal; justify-content: space-between; width: 100%; padding-right: 0; }
.ncs-marquee:hover .ncs-marquee__track { animation-play-state: paused; }
@keyframes ncs-marquee { to { transform: translateX(-50%); } }
.ncs-marquee__item {
	font-family: var(--ncs-sans);
	font-size: 17px;
	font-weight: 600;
	letter-spacing: .12em;
	color: var(--ncs-ink);
	opacity: .82;
	transition: opacity .3s;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	flex: 0 0 auto; /* evita que los logos-imagen se colapsen a 0px dentro de la marquesina infinita */
}
.ncs-marquee__item:hover { opacity: 1; }
.ncs-marquee__item--serif { font-family: var(--ncs-serif); font-weight: 500; letter-spacing: .18em; }
.ncs-marquee__item--soft { font-weight: 400; letter-spacing: .28em; color: var(--ncs-gray); }
.ncs-marquee__item--lower { text-transform: lowercase; font-weight: 600; letter-spacing: .02em; font-size: 19px; }
.ncs-marquee__item img { height: 42px; width: auto; max-width: 180px; object-fit: contain; flex-shrink: 0; }

/* ---------- Timeline de proceso ---------- */

.ncs-timeline {
	display: grid;
	grid-template-columns: repeat(var(--ncs-cols, 6), minmax(0, 1fr));
	width: 100%;
	position: relative;
}
.ncs-timeline__item { position: relative; padding: 0 22px 0 0; min-width: 0; }
.ncs-timeline__marker {
	position: relative;
	display: flex;
	align-items: center;
	margin-bottom: 26px;
}
.ncs-timeline__num {
	width: 46px; height: 46px;
	flex: 0 0 auto;
	border: 1px solid rgba(255, 255, 255, .35);
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--ncs-sans);
	font-size: 12.5px;
	font-weight: 500;
	color: var(--ncs-white);
	background: transparent;
	z-index: 1;
}
.ncs-timeline__item:not(:last-child) .ncs-timeline__marker::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: rgba(255, 255, 255, .22);
	margin-left: 6px;
	margin-right: -22px;
}
.ncs-timeline .ncs-timeline__title {
	font-family: var(--ncs-sans);
	font-size: 15.5px;
	font-weight: 600;
	color: var(--ncs-white);
	margin: 0 0 8px;
	line-height: 1.4;
}
.ncs-timeline__text {
	font-family: var(--ncs-sans);
	font-size: 13px;
	line-height: 1.6;
	color: var(--ncs-white-70);
	margin: 0;
}
.ncs-timeline--light .ncs-timeline__num { border-color: #C9C6BE; color: var(--ncs-ink); }
.ncs-timeline--light .ncs-timeline__item:not(:last-child) .ncs-timeline__marker::after { background: #D8D5CD; }
.ncs-timeline.ncs-timeline--light .ncs-timeline__title { color: var(--ncs-ink); }
.ncs-timeline--light .ncs-timeline__text { color: var(--ncs-gray); }

/* ---------- Equipo ---------- */

.ncs-team {
	display: grid;
	grid-template-columns: repeat(var(--ncs-cols, 6), minmax(0, 1fr));
	gap: 18px;
	width: 100%;
}
.ncs-team__card {
	position: relative;
	border-radius: var(--ncs-radius-card);
	overflow: hidden;
	aspect-ratio: 4 / 5;
	background: var(--ncs-black);
	isolation: isolate;
}
.ncs-team__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: -1;
	transition: transform 1s var(--ncs-ease);
}
.ncs-team__card:hover .ncs-team__img { transform: scale(1.05); }
.ncs-team__card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(10, 10, 9, 0) 45%, rgba(10, 10, 9, .82) 100%);
}
.ncs-team__info {
	position: absolute;
	inset: auto 0 0 0;
	z-index: 1;
	padding: 18px;
}
.ncs-team__card .ncs-team__name {
	font-family: var(--ncs-sans);
	font-size: 15px;
	font-weight: 600;
	color: var(--ncs-white);
	margin: 0 0 3px;
	line-height: 1.3;
}
.ncs-team__role {
	font-family: var(--ncs-sans);
	font-size: 11.5px;
	line-height: 1.45;
	color: var(--ncs-white-70);
	margin: 0 0 10px;
	white-space: pre-line;
}
.ncs-team__social {
	display: flex;
	gap: 10px;
}
.ncs-team__social a { color: var(--ncs-white); opacity: .85; transition: opacity .3s; display: inline-flex; }
.ncs-team__social a:hover { opacity: 1; }
.ncs-team__social svg { width: 15px; height: 15px; }

/* ---------- Journal ---------- */

.ncs-journal { width: 100%; }
.ncs-journal__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	margin-bottom: 38px;
	border-bottom: 1px solid var(--ncs-border);
}
.ncs-journal__tabs {
	display: flex;
	gap: 26px;
	list-style: none;
	margin: 0;
	padding: 0;
	flex-wrap: wrap;
}
.ncs-journal button.ncs-journal__tab {
	appearance: none;
	-webkit-appearance: none;
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	font-weight: 500;
	color: var(--ncs-gray);
	background: none;
	border: none;
	border-radius: 0;
	border-bottom: 2px solid transparent;
	padding: 0 2px 14px;
	margin: 0;
	line-height: 1.4;
	cursor: pointer;
	transition: color .3s;
}
.ncs-journal button.ncs-journal__tab:hover { color: var(--ncs-ink); background: none; }
.ncs-journal button.ncs-journal__tab.is-active { color: var(--ncs-ink); border-bottom-color: var(--ncs-ink); background: none; }
.ncs-journal__search {
	position: relative;
	margin-bottom: 12px;
}
.ncs-journal .ncs-journal__search input[type="search"] {
	font-family: var(--ncs-sans);
	font-size: 13px;
	color: var(--ncs-ink);
	background: transparent;
	border: none;
	border-bottom: 1px solid #CFCCC4;
	border-radius: 0;
	box-shadow: none;
	padding: 8px 30px 8px 2px;
	width: 210px;
	outline: none;
	transition: border-color .3s;
}
.ncs-journal .ncs-journal__search input[type="search"]:focus { border-bottom-color: var(--ncs-ink); }
.ncs-journal__search svg {
	position: absolute;
	right: 2px;
	top: 50%;
	transform: translateY(-50%);
	width: 15px; height: 15px;
	color: var(--ncs-gray);
	pointer-events: none;
}
.ncs-journal__items {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 26px;
}
/* Layout destacado (captura): 1 tarjeta grande izquierda + 4 en 2x2 a la derecha */
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) { grid-template-columns: 1.28fr 1fr 1fr; }
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:first-child {
	grid-column: 1;
	grid-row: 1 / span 2;
}
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:first-child .ncs-post__img { aspect-ratio: 16 / 11; }
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:first-child .ncs-post__title { font-size: 26px; }
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:nth-child(n+2) .ncs-post__img { aspect-ratio: 16 / 8; }
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:nth-child(n+2) .ncs-post__title { font-size: 17.5px; }
.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:nth-child(n+2) .ncs-post__excerpt { font-size: 12.5px; }

.ncs-post {
	background: var(--ncs-white);
	border: 1px solid var(--ncs-border);
	border-radius: var(--ncs-radius-card);
	overflow: hidden;
	display: flex;
	flex-direction: column;
	text-decoration: none;
	transition: box-shadow .4s var(--ncs-ease), transform .4s var(--ncs-ease), border-color .4s;
}
.ncs-post:hover { box-shadow: 0 20px 46px -20px rgba(14, 14, 12, .2); transform: translateY(-3px); border-color: #CFCCC4; }
.ncs-post.is-hidden { display: none; }
.ncs-post__imgwrap { position: relative; overflow: hidden; display: block; }
.ncs-post__img {
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	display: block;
	transition: transform 1s var(--ncs-ease);
}
.ncs-post:hover .ncs-post__img { transform: scale(1.04); }
.ncs-post__badge {
	position: absolute;
	top: 16px;
	left: 16px;
	background: var(--ncs-black);
	color: var(--ncs-white);
	font-family: var(--ncs-sans);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: .14em;
	text-transform: uppercase;
	padding: 7px 14px;
	border-radius: 999px;
}
.ncs-post__body { padding: 22px 24px 24px; display: flex; flex-direction: column; flex: 1; }
.ncs-post__meta {
	display: block;
	font-family: var(--ncs-sans);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--ncs-gray);
	margin-bottom: 12px;
}
.ncs-post__title {
	display: block;
	font-family: var(--ncs-serif);
	font-size: 21px;
	font-weight: 500;
	line-height: 1.3;
	color: var(--ncs-ink);
	margin: 0 0 10px;
}
.ncs-post__excerpt {
	display: block;
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	line-height: 1.65;
	color: var(--ncs-gray);
	margin: 0 0 18px;
}
.ncs-post__more {
	margin-top: auto;
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	font-weight: 500;
	color: var(--ncs-ink);
}
.ncs-post__more svg { width: 14px; height: 14px; transition: transform .35s var(--ncs-ease); }
.ncs-post:hover .ncs-post__more svg { transform: translateX(4px); }
.ncs-journal__empty {
	font-family: var(--ncs-sans);
	font-size: 14px;
	color: var(--ncs-gray);
	padding: 40px 0;
	text-align: center;
	display: none;
}

/* ---------- Tiles de categorías ---------- */

.ncs-cat-tiles {
	display: grid;
	grid-template-columns: repeat(var(--ncs-cols, 6), minmax(0, 1fr));
	gap: 14px;
	width: 100%;
}
.ncs-cat-tile {
	display: flex;
	align-items: center;
	gap: 14px;
	border: 1px solid var(--ncs-border);
	border-radius: var(--ncs-radius-card);
	background: var(--ncs-white);
	padding: 20px;
	text-decoration: none;
	transition: border-color .35s, box-shadow .35s, transform .35s var(--ncs-ease);
}
.ncs-cat-tile:hover { border-color: #B9B5AC; box-shadow: 0 14px 30px -16px rgba(14, 14, 12, .16); transform: translateY(-2px); }
.ncs-cat-tile__icon { color: var(--ncs-ink); flex: 0 0 auto; display: flex; }
.ncs-cat-tile__icon svg { width: 24px; height: 24px; }
.ncs-cat-tile__name {
	display: block;
	font-family: var(--ncs-sans);
	font-size: 14px;
	font-weight: 600;
	color: var(--ncs-ink);
	margin: 0 0 2px;
}
.ncs-cat-tile__count {
	display: block;
	font-family: var(--ncs-sans);
	font-size: 12px;
	color: var(--ncs-gray);
	margin: 0;
}

/* ---------- Banda CTA ---------- */

.ncs-cta {
	position: relative;
	width: 100%;
	background: var(--ncs-black);
	color: var(--ncs-white);
	overflow: hidden;
	padding: 58px 64px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 36px;
	flex-wrap: wrap;
}
.ncs-cta--rounded { border-radius: var(--ncs-radius-band); }
/* Variante full-width: alinear contenido con el ancho del sitio */
.ncs-cta:not(.ncs-cta--rounded) {
	padding-left: max(64px, calc((100% - 1240px) / 2 + 24px));
	padding-right: max(64px, calc((100% - 1240px) / 2 + 24px));
}
.ncs-cta--center {
	flex-direction: column;
	text-align: center;
	justify-content: center;
	padding: 86px 64px;
}
.ncs-cta__pattern {
	position: absolute;
	inset: 0 0 0 auto;
	width: 46%;
	opacity: .16;
	pointer-events: none;
	background-image: url("../img/topo.svg");
	background-repeat: no-repeat;
	background-position: right center;
	background-size: cover;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 55%);
	mask-image: linear-gradient(90deg, transparent, #000 55%);
}
.ncs-cta__content { position: relative; z-index: 1; max-width: 640px; }
.ncs-cta--center .ncs-cta__content { max-width: 760px; }
.ncs-cta .ncs-cta__title {
	font-family: var(--ncs-serif);
	font-size: 34px;
	font-weight: 500;
	line-height: 1.2;
	margin: 0 0 10px;
	color: var(--ncs-white);
}
.ncs-cta__title em { font-style: italic; }
.ncs-cta__text {
	font-family: var(--ncs-sans);
	font-size: 14.5px;
	line-height: 1.6;
	color: var(--ncs-white-70);
	margin: 0;
}
.ncs-cta__action { position: relative; z-index: 1; flex: 0 0 auto; }
.ncs-cta--center .ncs-cta__action { margin-top: 30px; }

/* ---------- Header / Footer helpers ---------- */

.ncs-logo {
	display: flex;
	align-items: center;
	gap: 12px;
	text-decoration: none;
}
.ncs-logo__mono {
	font-family: var(--ncs-serif);
	font-size: 34px;
	font-weight: 500;
	letter-spacing: -.04em;
	color: var(--ncs-ink);
	line-height: 1;
}
.ncs-logo__text {
	font-family: var(--ncs-sans);
	font-size: 10px;
	font-weight: 600;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: var(--ncs-ink);
	line-height: 1.5;
}
.ncs-logo__text span { display: block; font-weight: 400; letter-spacing: .34em; color: var(--ncs-gray); }
.ncs-logo--light .ncs-logo__mono,
.ncs-logo--light .ncs-logo__text { color: var(--ncs-white); }
.ncs-logo--light .ncs-logo__text span { color: var(--ncs-white-70); }

.ncs-footer-heading {
	font-family: var(--ncs-sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ncs-ink);
	margin: 0 0 18px;
}
.ncs-footer-links { list-style: none; margin: 0; padding: 0; }
.ncs-footer-links li { margin: 0 0 11px; }
.ncs-footer-links a {
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	color: var(--ncs-gray);
	text-decoration: none;
	transition: color .3s;
}
.ncs-footer-links a:hover { color: var(--ncs-ink); }
.ncs-social { display: flex; gap: 12px; }
.ncs-social a {
	width: 36px; height: 36px;
	border: 1px solid var(--ncs-border);
	border-radius: 50%;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--ncs-ink);
	transition: all .3s;
}
.ncs-social a:hover { background: var(--ncs-black); color: var(--ncs-white); border-color: var(--ncs-black); }
.ncs-social svg { width: 15px; height: 15px; }

/* Footer construido con widgets nativos (builder) */
.ncs-footer-heading-w .elementor-heading-title {
	font-family: var(--ncs-sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--ncs-ink);
}
.ncs-footer-heading-w { margin-bottom: 16px; }
.ncs-footer-links-w .elementor-icon-list-text,
.ncs-footer-links-w a {
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	color: var(--ncs-gray);
	transition: color .3s;
}
.ncs-footer-links-w a:hover .elementor-icon-list-text { color: var(--ncs-ink); }
.ncs-footer-desc p {
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	line-height: 1.7;
	color: var(--ncs-gray);
	max-width: 250px;
}
.ncs-footer-legal p {
	font-family: var(--ncs-sans);
	font-size: 12.5px;
	color: var(--ncs-gray);
	margin: 0;
}
.ncs-footer-legal--links a { color: var(--ncs-gray); text-decoration: none; }
.ncs-footer-legal--links a:hover { color: var(--ncs-ink); }
.ncs-footer-map { margin-top: 10px; }
.ncs-footer-map img { max-width: 230px; }
.ncs-contact-list .elementor-icon-list-text { font-size: 15px; color: var(--ncs-ink); }

/* Nav Menu de Elementor Pro dentro del header NC (compacto: 7 ítems en una línea) */
.ncs-header-menu .elementor-nav-menu a.elementor-item {
	font-family: var(--ncs-sans);
	font-size: 13px;
	font-weight: 500;
	color: var(--ncs-ink);
	padding: 10px 11px;
}
.ncs-header-menu .elementor-nav-menu a.elementor-item:after { background: var(--ncs-ink) !important; }
.ncs-header-menu .elementor-nav-menu a.elementor-item.elementor-item-active,
.ncs-header-menu .elementor-nav-menu a.elementor-item:hover { color: var(--ncs-ink); }
.ncs-header-menu .elementor-nav-menu { white-space: nowrap; }

/* Focus sobrio en controles interactivos */
.ncs-carousel__btn:focus-visible,
.ncs-filters__btn:focus-visible,
.ncs-journal__tab:focus-visible {
	outline: 2px solid var(--ncs-ink);
	outline-offset: 2px;
}
.ncs-carousel__btn:focus:not(:focus-visible) { outline: none; }

/* ---------- Formularios (Elementor Pro Form skin NC) ---------- */

.ncs-form .elementor-field-group .elementor-field {
	font-family: var(--ncs-sans);
	border-radius: 10px;
	border: 1px solid var(--ncs-border);
	background: var(--ncs-white);
	color: var(--ncs-ink);
	font-size: 14px;
	padding: 14px 16px;
}
.ncs-form .elementor-field-group .elementor-field:focus { border-color: var(--ncs-ink); box-shadow: none; }
.ncs-form .elementor-field-label { font-family: var(--ncs-sans); font-size: 12.5px; font-weight: 500; color: var(--ncs-ink); }
.elementor-widget.ncs-form .elementor-button {
	font-family: var(--ncs-sans);
	font-weight: 500;
	border-radius: 999px;
	background: var(--ncs-black) !important;
	color: var(--ncs-white) !important;
	padding: 16px 28px;
}
.elementor-widget.ncs-form .elementor-button:hover { background: #2A2A27 !important; color: var(--ncs-white) !important; }

/* Newsletter en banda oscura */
.ncs-form--dark .elementor-field-group .elementor-field {
	background: rgba(255, 255, 255, .06);
	border-color: rgba(255, 255, 255, .25);
	color: var(--ncs-white);
	border-radius: 999px;
	padding: 15px 22px;
}
.ncs-form--dark .elementor-field-group .elementor-field::placeholder { color: var(--ncs-white-40); }
.elementor-widget.ncs-form--dark .elementor-button { background: var(--ncs-white) !important; color: var(--ncs-ink) !important; }
.elementor-widget.ncs-form--dark .elementor-button:hover { background: var(--ncs-cream) !important; color: var(--ncs-ink) !important; }

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

@media (max-width: 1024px) {
	.ncs-icon-cols { grid-template-columns: repeat(min(var(--ncs-cols, 6), 3), minmax(0, 1fr)); row-gap: 34px; }
	.ncs-icon-cols--dividers .ncs-icon-cols__item + .ncs-icon-cols__item { border-left: none; }
	.ncs-icon-cols__item { padding: 0 14px 0 0; }
	.ncs-cards { grid-template-columns: repeat(min(var(--ncs-cols, 4), 2), minmax(0, 1fr)); }
	.ncs-grid__items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ncs-team { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ncs-timeline { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 40px; }
	.ncs-timeline__item:nth-child(3n) .ncs-timeline__marker::after { display: none; }
	.ncs-cat-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.ncs-carousel__slide { flex-basis: calc((100% - 44px) / 3); }
	.ncs-journal__items,
	.ncs-journal--featured .ncs-journal__items:not(.is-filtered) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ncs-stats { flex-wrap: wrap; }
	.ncs-stats__item { flex: 1 1 50%; padding: 14px 20px; box-sizing: border-box; }
	.ncs-stats__item + .ncs-stats__item { border-left: none; }

	/* ---- Header: logo + toggle siempre en línea, nunca apilados ----
	   Red de seguridad a nivel de CSS puro (no depende de que Elementor
	   haya guardado bien los controles responsive del contenedor): fuerza
	   fila horizontal sin salto de línea sin importar qué haya quedado
	   guardado en _elementor_data. */
	.ncs-header-row {
		display: flex !important;
		flex-direction: row !important;
		flex-wrap: nowrap !important;
		align-items: center !important;
	}
	.ncs-header img,
	.ncs-header svg { max-width: 100%; height: auto; }
	.ncs-logo { flex-shrink: 1; min-width: 0; }
	.ncs-header .elementor-widget-image,
	.ncs-header .elementor-widget-image .elementor-widget-container { min-width: 0; }

	/* ---- Header: menú que sale como panel lateral desde la izquierda,
	   en vez del dropdown que se expande debajo del toggle. El open/close
	   lo sigue manejando Elementor Pro (clase "elementor-active" sobre el
	   propio <nav>); acá solo cambiamos cómo se ve ese estado. ---- */
	/* Selector doblemente calificado (widget + clase propia) a propósito:
	   Elementor Pro imprime su propio CSS por-página (ancho, fondo, etc.
	   del "Dropdown" del widget Nav Menu) y puede cargar después del CSS
	   del plugin; todo aquí lleva !important y va también con prioridad
	   de carga más alta (ver enqueue_frontend en class-plugin.php) para
	   ganar siempre esa pulseada, sin importar el orden de carga. */
	.elementor-widget-nav-menu.ncs-header-menu .elementor-nav-menu--dropdown,
	.ncs-header-menu .elementor-nav-menu--dropdown {
		display: flex !important;
		flex-direction: column !important;
		align-items: flex-start !important;
		position: fixed !important;
		top: 0 !important;
		left: 0 !important;
		right: auto !important;
		width: min(82vw, 320px) !important;
		max-width: 320px !important;
		height: 100vh !important;
		height: 100dvh !important;
		margin: 0 !important;
		padding: 104px 30px 40px !important;
		background: var(--ncs-white) !important;
		box-shadow: 0 0 48px rgba(14, 14, 12, .22) !important;
		transform: translateX(-100%) !important;
		visibility: hidden !important;
		transition: transform .35s var(--ncs-ease), visibility 0s linear .35s !important;
		z-index: 10000 !important;
		overflow-y: auto !important;
	}
	.elementor-widget-nav-menu.ncs-header-menu .elementor-nav-menu--dropdown.elementor-active,
	.ncs-header-menu .elementor-nav-menu--dropdown.elementor-active {
		transform: translateX(0) !important;
		visibility: visible !important;
		transition: transform .35s var(--ncs-ease), visibility 0s linear 0s !important;
	}
	.ncs-header-menu .elementor-nav-menu--dropdown .elementor-nav-menu {
		display: flex !important;
		flex-direction: column !important;
		align-items: flex-start !important;
		gap: 24px !important;
		white-space: normal !important;
		width: 100% !important;
	}
	.ncs-header-menu .elementor-nav-menu--dropdown .elementor-item {
		font-size: 17px !important;
		padding: 0 !important;
	}
	.ncs-header-menu .elementor-menu-toggle { position: relative; z-index: 10001; }

	/* Fondo oscuro detrás del panel; lo activa nc-studio.js con la clase
	   "ncs-menu-open" en <body> cuando el dropdown queda "elementor-active". */
	body.ncs-menu-open { overflow: hidden; }
	body.ncs-menu-open::after {
		content: "";
		position: fixed;
		inset: 0;
		background: rgba(14, 14, 12, .45);
		z-index: 9999;
		animation: ncsHeaderFade .25s ease;
	}
	@keyframes ncsHeaderFade { from { opacity: 0; } to { opacity: 1; } }
}

@media (max-width: 767px) {
	.ncs-stats { flex-wrap: wrap; }
	.ncs-stats__item { flex: 1 1 50%; padding: 12px 4px; box-sizing: border-box; }
	.ncs-icon-cols { grid-template-columns: 1fr; }
	.ncs-cards { grid-template-columns: 1fr; }
	.ncs-grid__items { grid-template-columns: 1fr; }
	.ncs-team { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
	.ncs-timeline { grid-template-columns: 1fr; row-gap: 30px; }
	.ncs-timeline__item { padding-right: 0; }
	.ncs-timeline__item .ncs-timeline__marker::after { display: none; }
	.ncs-timeline__marker { margin-bottom: 14px; }
	.ncs-cat-tiles { grid-template-columns: 1fr 1fr; }
	.ncs-carousel__slide { flex-basis: 78%; }
	.ncs-carousel__nav.ncs-carousel__nav--side { position: static; transform: none; flex-direction: row; margin-top: 18px; justify-content: flex-end; }
	.ncs-journal__items,
	.ncs-journal--featured .ncs-journal__items:not(.is-filtered) { grid-template-columns: 1fr; }
	.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:first-child { grid-row: auto; grid-column: auto; }
	.ncs-journal--featured .ncs-journal__items:not(.is-filtered) > .ncs-post:nth-child(n+2) { grid-column: auto; }
	.ncs-cta { padding: 44px 28px; }
	.ncs-cta--center { padding: 60px 28px; }
	.ncs-cta__title { font-size: 27px; }
	.ncs-marquee { flex-direction: column; align-items: flex-start; gap: 22px; }
	.ncs-journal__search input { width: 100%; }
	.ncs-journal__bar { border-bottom: none; }
}

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.ncs-marquee__track { animation: none; }
	.ncs-scroll__circle { animation: none; }
	.ncs-proj__img, .ncs-team__img, .ncs-post__img,
	.ncs-btn, .ncs-card, .ncs-post { transition: none; }
}

/* ================================================================== *
 * CASO DE ESTUDIO (single de proyecto)
 * Bloques nuevos — no modifican ninguna regla anterior.
 * ================================================================== */

/* ---------- Portada: volver / título / subtítulo / intro ---------- */

.ncs-case-title {
	display: flex;
	flex-direction: column;
	gap: 14px;
	align-items: flex-start;
}
.ncs-case-back {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	font-family: var(--ncs-sans);
	font-size: 13px;
	font-weight: 500;
	color: var(--ncs-gray);
	text-decoration: none;
	transition: color .3s var(--ncs-ease);
}
.ncs-case-back svg { width: 16px; height: 16px; transition: transform .35s var(--ncs-ease); }
.ncs-case-back:hover { color: var(--ncs-ink); }
.ncs-case-back:hover svg { transform: translateX(-4px); }
.ncs-case-title__h {
	font-family: var(--ncs-serif);
	font-size: clamp(44px, 5.2vw, 74px);
	font-weight: 500;
	line-height: 1.02;
	letter-spacing: -.015em;
	color: var(--ncs-ink);
	margin: 6px 0 0;
}
.ncs-case-title__sub {
	font-family: var(--ncs-serif);
	font-size: clamp(20px, 2.1vw, 28px);
	font-weight: 400;
	line-height: 1.2;
	color: var(--ncs-ink);
	margin: -6px 0 0;
}
.ncs-case-title__intro {
	font-family: var(--ncs-sans);
	font-size: 15px;
	line-height: 1.72;
	color: var(--ncs-gray);
	max-width: 420px;
	margin: 8px 0 0;
}

/* ---------- Ficha técnica (Cliente / Servicios / Año) ---------- */

.ncs-case-meta {
	--ncs-rule: var(--ncs-border);
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	width: 100%;
	padding-top: 26px;
}
.ncs-case-meta--rule { border-top: 1px solid var(--ncs-rule); }
.ncs-case-meta__col { padding: 0 22px; }
.ncs-case-meta__col:first-child { padding-left: 0; }
.ncs-case-meta--dividers .ncs-case-meta__col + .ncs-case-meta__col { border-left: 1px solid var(--ncs-rule); }
.ncs-case-meta__label {
	font-family: var(--ncs-sans);
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--ncs-gray);
	margin-bottom: 12px;
}
.ncs-case-meta__val {
	font-family: var(--ncs-sans);
	font-size: 14px;
	line-height: 1.65;
	color: var(--ncs-ink);
}
@media (max-width: 767px) {
	.ncs-case-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 0; }
	.ncs-case-meta__col { padding: 0 16px; }
	.ncs-case-meta--dividers .ncs-case-meta__col + .ncs-case-meta__col { border-left: 0; }
}

/* ---------- Galería en fila ---------- */

.ncs-cgal {
	display: flex;
	align-items: center;
	gap: 18px;
	width: 100%;
}
.ncs-cgal__item {
	position: relative;
	display: block;
	min-width: 0;
	overflow: hidden;
	border-radius: 10px;
	background: var(--ncs-cream);
	text-decoration: none;
}
.ncs-cgal__item img {
	display: block;
	width: 100%;
	height: auto;
	transition: transform .8s var(--ncs-ease);
}
.ncs-cgal--fixed .ncs-cgal__item { aspect-ratio: var(--ncs-cgal-ratio, 4 / 3); }
.ncs-cgal--fixed .ncs-cgal__item img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: var(--ncs-cgal-fit, cover);
}
.ncs-cgal--shadow .ncs-cgal__item { box-shadow: 0 18px 40px -26px rgba(14, 14, 12, .45); }
.ncs-cgal--zoom .ncs-cgal__item:hover img { transform: scale(1.04); }
@media (max-width: 767px) {
	.ncs-cgal--stack { flex-wrap: wrap; }
	.ncs-cgal--stack .ncs-cgal__item { flex: 1 1 100% !important; }
}

/* ---------- Pestañas de diseño ---------- */

.ncs-dtabs { width: 100%; }
.ncs-dtabs__nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin-bottom: 34px;
}
.ncs-dtabs button.ncs-dtabs__btn {
	appearance: none;
	-webkit-appearance: none;
	font-family: var(--ncs-sans);
	font-size: 12.5px;
	font-weight: 500;
	line-height: 1;
	color: var(--ncs-ink);
	background: transparent;
	border: 1px solid var(--ncs-border);
	border-radius: 999px;
	padding: 10px 18px;
	cursor: pointer;
	transition: background .3s var(--ncs-ease), color .3s var(--ncs-ease), border-color .3s var(--ncs-ease);
}
.ncs-dtabs button.ncs-dtabs__btn:hover { border-color: var(--ncs-ink); }
.ncs-dtabs button.ncs-dtabs__btn.is-active {
	background: var(--ncs-black);
	border-color: var(--ncs-black);
	color: #fff;
}
.ncs-dtabs button.ncs-dtabs__btn:focus { outline: none; }
.ncs-dtabs button.ncs-dtabs__btn:focus-visible { outline: 2px solid var(--ncs-ink); outline-offset: 2px; }
.ncs-dtabs__panel { display: none; }
.ncs-dtabs__panel.is-active { display: block; animation: ncsFadeIn .45s var(--ncs-ease); }
@keyframes ncsFadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
	.ncs-dtabs__panel.is-active { animation: none; }
}

/* ---------- Testimonio ---------- */

.ncs-quote { width: 100%; }
.ncs-quote__head {
	display: flex;
	align-items: baseline;
	gap: 14px;
	margin-bottom: 22px;
}
.ncs-quote__num,
.ncs-quote__eyebrow {
	font-family: var(--ncs-sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--ncs-gray);
}
.ncs-quote__body {
	display: flex;
	align-items: flex-start;
	gap: 28px;
}
.ncs-quote--column .ncs-quote__body { flex-direction: column; }
.ncs-quote__avatar {
	flex: 0 0 auto;
	width: 96px;
	height: 96px;
	object-fit: cover;
	border-radius: 50%;
}
.ncs-quote__content { min-width: 0; }
.ncs-quote__text {
	font-family: var(--ncs-sans);
	font-size: clamp(16px, 1.5vw, 19px);
	line-height: 1.62;
	color: var(--ncs-ink);
	margin: 0 0 18px;
	padding: 0;
	border: 0;
	quotes: none;
}
.ncs-quote__author {
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	font-weight: 600;
	color: var(--ncs-ink);
}
.ncs-quote__role {
	font-family: var(--ncs-sans);
	font-size: 12.5px;
	color: var(--ncs-gray);
	margin-top: 2px;
}
@media (max-width: 767px) {
	.ncs-quote__body { flex-direction: column; gap: 18px; }
}

/* ---------- Tecnologías ---------- */

.ncs-tech {
	display: grid;
	grid-template-columns: repeat(8, minmax(0, 1fr));
	gap: 28px;
	width: 100%;
}
.ncs-tech__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 12px;
	text-align: center;
	min-width: 0;
}
.ncs-tech__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	color: var(--ncs-ink);
}
.ncs-tech__icon svg { width: 100%; height: 100%; stroke-width: 1.3; }
.ncs-tech__icon img { width: 100%; height: 100%; object-fit: contain; }
.ncs-tech__name {
	font-family: var(--ncs-sans);
	font-size: 12px;
	font-weight: 500;
	color: var(--ncs-gray);
	line-height: 1.35;
	word-break: break-word;
}
@media (max-width: 1024px) {
	.ncs-tech { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
	.ncs-tech { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ---------- Siguiente caso ---------- */

.ncs-next {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 28px;
	width: 100%;
	padding: 44px 48px;
	border-radius: 22px;
	background: var(--ncs-black);
	text-decoration: none;
	overflow: hidden;
	isolation: isolate;
}
.ncs-next__bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .22;
	z-index: -1;
	transition: transform 1.2s var(--ncs-ease);
}
.ncs-next:hover .ncs-next__bg { transform: scale(1.05); }
.ncs-next__text { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ncs-next__eyebrow {
	font-family: var(--ncs-sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--ncs-white-70);
}
.ncs-next__title {
	font-family: var(--ncs-serif);
	font-size: clamp(28px, 3.4vw, 44px);
	font-weight: 500;
	line-height: 1.06;
	color: var(--ncs-white);
}
.ncs-next__arrow {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 62px;
	height: 62px;
	border-radius: 999px;
	border: 1px solid var(--ncs-white-40);
	color: var(--ncs-white);
	transition: background .35s var(--ncs-ease), color .35s var(--ncs-ease), border-color .35s var(--ncs-ease);
}
.ncs-next__arrow svg { width: 20px; height: 20px; transition: transform .35s var(--ncs-ease); }
.ncs-next:hover .ncs-next__arrow { background: var(--ncs-white); color: var(--ncs-black); border-color: var(--ncs-white); }
.ncs-next:hover .ncs-next__arrow svg { transform: translateX(4px); }
@media (max-width: 767px) {
	.ncs-next { padding: 32px 26px; gap: 20px; }
	.ncs-next__arrow { width: 50px; height: 50px; }
}

/* ---------- Timeline con iconos (variante aditiva) ---------- */

.ncs-timeline--icons .ncs-timeline__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 20px;
}
.ncs-timeline--icons .ncs-timeline__icon svg { width: 100%; height: 100%; stroke-width: 1.4; }

/* ---------- Título de sección del caso (número + título + texto) ---------- */

.ncs-chead {
	display: flex;
	flex-direction: column;
	align-items: start;
	gap: 14px;
	width: 100%;
}
.ncs-chead__num {
	font-family: var(--ncs-sans);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: .14em;
	color: var(--ncs-gray);
}
.ncs-chead .ncs-chead__title {
	font-family: var(--ncs-serif);
	font-size: clamp(26px, 2.9vw, 40px);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: -.01em;
	color: var(--ncs-ink);
	margin: 0;
}
.ncs-chead__text {
	font-family: var(--ncs-sans);
	font-size: 14.5px;
	line-height: 1.75;
	color: var(--ncs-gray);
	max-width: 420px;
	margin: 4px 0 0;
}

/* ---------- Portada del caso: columna de texto + imagen a sangre ---------- */

/* --ncs-sb-offset: ancho que ocupa el menú lateral fijo (0 si no hay). */
.e-con.ncs-case-hero__left {
	padding: 104px 56px 104px max(24px, calc((100vw - var(--ncs-sb-offset, 0px) - 1240px) / 2));
	justify-content: center;
}
.e-con.ncs-case-hero__media { align-self: stretch; padding: 0; }
.ncs-case-hero__media .elementor-widget-container,
.ncs-case-hero__media .elementor-image,
.ncs-case-hero__media figure { height: 100%; margin: 0; }
.ncs-case-hero__media img {
	width: 100%;
	height: 100%;
	min-height: 420px;
	object-fit: cover;
	border-radius: 0;
	display: block;
}
@media (max-width: 1024px) {
	.e-con.ncs-case-hero__left { padding: 64px 24px 48px; }
	.ncs-case-hero__media img { min-height: 320px; }
}

/* ---------- Imagen del caso ---------- */

.ncs-cimg {
	position: relative;
	display: block;
	width: 100%;
	overflow: hidden;
	line-height: 0;
}
.ncs-cimg img { display: block; width: 100%; height: auto; object-fit: cover; }
.ncs-cimg--fixed { aspect-ratio: var(--ncs-cimg-ratio, 16 / 9); }
.ncs-cimg--fixed img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: var(--ncs-cimg-fit, cover);
}
.ncs-cimg--fill { height: 100%; }
.ncs-cimg--fill img { height: 100%; object-fit: cover; }
.elementor-widget-nc_case_image:has(.ncs-cimg--fill),
.elementor-widget-nc_case_image:has(.ncs-cimg--fill) .elementor-widget-container { height: 100%; }

/* ---------- Stats apiladas (icono encima), para columnas estrechas ---------- */

.ncs-stats--stack .ncs-stats__item {
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 12px;
	padding: 6px 14px;
}
.ncs-stats--stack .ncs-stats__icon { width: 38px; height: 38px; }
.ncs-stats--stack .ncs-stats__icon svg { width: 17px; height: 17px; }
.ncs-stats--stack .ncs-stats__body { align-items: center; }
.ncs-stats--stack .ncs-stats__num { font-size: 24px; }
.ncs-stats--stack .ncs-stats__label { font-size: 12px; }

/* Nombres de tecnología: no partir las palabras a la mitad */
.ncs-tech__name { font-size: 11.5px; word-break: normal; overflow-wrap: normal; hyphens: none; }

/* Defensivo: los bloques del caso siempre miden con border-box, sin depender del tema */
.ncs-next,
.ncs-case-meta,
.ncs-case-meta__col,
.ncs-chead,
.ncs-quote,
.ncs-tech,
.ncs-cgal,
.ncs-cgal__item,
.ncs-dtabs,
.ncs-dtabs__btn { box-sizing: border-box; }

/* ================================================================== *
 * MENÚ LATERAL (widget "NC · Menú lateral")
 * Base (móvil primero): barra superior con botón ☰ + panel deslizante.
 * Con "Barra lateral fija", a partir del ancho elegido el panel queda
 * siempre visible y el contenido de la página se desplaza (bloques
 * @media al final de esta sección).
 * Los controles del widget escriben estas variables en {{WRAPPER}} .ncs-sb
 * (y --ncs-sb-w en <body>), por eso aquí sólo están los valores por defecto.
 * ================================================================== */

.ncs-sb {
	--ncs-sb-bar-h: 68px;
	--ncs-sb-drawer-w: 320px;
	--ncs-sb-border: var(--ncs-border);
	--ncs-sb-border-w: 1px;
	--ncs-sb-pill: var(--ncs-cream);
	--ncs-sb-link: #55534C;
	--ncs-sb-link-hover: var(--ncs-ink);
	--ncs-sb-link-active: var(--ncs-ink);
	--ncs-sb-num: var(--ncs-gray);
	--ncs-sb-sub: var(--ncs-gray);
	--ncs-sb-sub-hover: var(--ncs-ink);
	--ncs-sb-top: var(--wp-admin--admin-bar--height, 0px);
	position: relative;
	min-height: var(--ncs-sb-bar-h);
	font-family: var(--ncs-sans);
}
.ncs-sb *,
.ncs-sb *::before,
.ncs-sb *::after { box-sizing: border-box; }

/* Contenedor del header que aloja el menú: sin relleno propio. */
.e-con.ncs-sb-host {
	--padding-top: 0px;
	--padding-right: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
}

/* ---------- Barra superior (modo ☰) ---------- */

.ncs-sb__bar {
	position: relative;
	z-index: 990;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: var(--ncs-sb-bar-h);
	padding: 0 20px;
	background: var(--ncs-white);
	border-bottom: 1px solid var(--ncs-border);
}
/* Fija arriba; .ncs-sb conserva su alto (min-height) como hueco en el flujo. */
.ncs-sb--sticky .ncs-sb__bar {
	position: fixed;
	top: var(--ncs-sb-top);
	left: 0;
	right: 0;
}
@media (min-width: 1025px) {
	.ncs-sb__bar { padding: 0 32px; }
}
.ncs-sb__bar .ncs-logo__mono { font-size: 28px; }
.ncs-sb__bar .ncs-sb__logo img { max-height: calc(var(--ncs-sb-bar-h) - 24px); }

/* Botones ☰ / ✕ / submenú. Doble clase: ganar a los estilos de <button>
   del tema Hello y del Kit de Elementor. */
.ncs-sb button.ncs-sb__toggle,
.ncs-sb button.ncs-sb__close,
.ncs-sb button.ncs-sb__subtoggle {
	appearance: none;
	-webkit-appearance: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
	width: 44px;
	height: 44px;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: var(--ncs-ink);
	line-height: 0;
	box-shadow: none;
	cursor: pointer;
	transition: background-color .3s var(--ncs-ease), color .3s var(--ncs-ease);
}
.ncs-sb button.ncs-sb__toggle:hover,
.ncs-sb button.ncs-sb__close:hover,
.ncs-sb button.ncs-sb__subtoggle:hover { background: var(--ncs-cream); color: var(--ncs-ink); }
.ncs-sb button.ncs-sb__toggle:focus,
.ncs-sb button.ncs-sb__close:focus,
.ncs-sb button.ncs-sb__subtoggle:focus { outline: none; }
.ncs-sb button.ncs-sb__toggle:focus-visible,
.ncs-sb button.ncs-sb__close:focus-visible,
.ncs-sb button.ncs-sb__subtoggle:focus-visible { outline: 2px solid var(--ncs-ink); outline-offset: 2px; }

.ncs-sb__burger { display: flex; flex-direction: column; gap: 5px; width: 22px; }
.ncs-sb__burger span { display: block; height: 1.5px; border-radius: 2px; background: currentColor; }
.ncs-sb__burger span:nth-child(2) { width: 70%; margin-left: auto; }
.ncs-sb__close svg { width: 20px; height: 20px; }

/* ---------- Panel ---------- */

.ncs-sb__panel {
	position: fixed;
	top: var(--ncs-sb-top);
	bottom: 0;
	left: 0;
	z-index: 10000;
	display: flex;
	flex-direction: column;
	width: var(--ncs-sb-drawer-w);
	max-width: 88vw;
	padding: 24px 30px 30px;
	background: var(--ncs-white);
	border-right: var(--ncs-sb-border-w) solid var(--ncs-sb-border);
	box-shadow: 0 0 48px rgba(14, 14, 12, .22);
	overflow-x: hidden;
	overflow-y: auto;
	overscroll-behavior: contain;
	transform: translateX(-100%);
	visibility: hidden;
	transition: transform .4s var(--ncs-ease), visibility 0s linear .4s;
}
.ncs-sb--right .ncs-sb__panel {
	left: auto;
	right: 0;
	border-right: 0;
	border-left: var(--ncs-sb-border-w) solid var(--ncs-sb-border);
	transform: translateX(100%);
}
.ncs-sb.is-open .ncs-sb__panel {
	transform: none;
	visibility: visible;
	transition: transform .4s var(--ncs-ease), visibility 0s;
}

.ncs-sb__overlay {
	position: fixed;
	inset: 0;
	z-index: 9999;
	background: rgba(14, 14, 12, .45);
	opacity: 0;
	visibility: hidden;
	transition: opacity .35s var(--ncs-ease), visibility 0s linear .35s;
}
.ncs-sb.is-open .ncs-sb__overlay {
	opacity: 1;
	visibility: visible;
	transition: opacity .35s var(--ncs-ease), visibility 0s;
}
/* Bloquea el scroll de la página con el panel ☰ abierto (en <html>: en
   <body> no basta porque html ya tiene overflow-x propio). */
html.ncs-sb-open { overflow: hidden; }

.ncs-sb__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex: 0 0 auto;
	margin-bottom: 40px;
}
.ncs-sb__head .ncs-sb__close { margin-right: -10px; }

.ncs-sb__logo { display: inline-flex; align-items: center; min-width: 0; text-decoration: none; }
.ncs-sb__logo img { display: block; width: 150px; max-width: 100%; height: auto; object-fit: contain; }
.ncs-sb__logo--text .ncs-logo__text { font-size: 12px; }

/* ---------- Enlaces ---------- */

.ncs-sb__nav { display: flex; flex-direction: column; flex: 1 0 auto; }
/* margin auto en vez de justify-content: si no caben, se hace scroll sin recortar. */
.ncs-sb__nav > .ncs-sb__menu { margin-top: auto; margin-bottom: auto; }
.ncs-sb__menu,
.ncs-sb__menu .sub-menu { list-style: none; margin: 0; padding: 0; }
.ncs-sb__menu { display: flex; flex-direction: column; gap: 2px; counter-reset: ncs-sb; }
.ncs-sb__menu > li { counter-increment: ncs-sb; margin: 0; padding: 0; }

.ncs-sb .ncs-sb__menu > li > a {
	display: flex;
	align-items: baseline;
	gap: 14px;
	padding: 9px 0;
	font-family: var(--ncs-sans);
	font-size: 15px;
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: 0;
	color: var(--ncs-sb-link);
	text-decoration: none;
	border-radius: 10px;
	transition: color .3s var(--ncs-ease), background-color .3s var(--ncs-ease);
}
.ncs-sb .ncs-sb__menu > li > a:hover,
.ncs-sb .ncs-sb__menu > li > a:focus-visible { color: var(--ncs-sb-link-hover); }
.ncs-sb .ncs-sb__menu > li.current-menu-item > a,
.ncs-sb .ncs-sb__menu > li.current-menu-ancestor > a { color: var(--ncs-sb-link-active); }
.ncs-sb .ncs-sb__menu a:focus-visible { outline: 2px solid var(--ncs-ink); outline-offset: 3px; }
.ncs-sb__text { min-width: 0; padding-bottom: 3px; }

.ncs-sb--numbers .ncs-sb__menu > li > a::before {
	content: counter(ncs-sb, decimal-leading-zero);
	flex: 0 0 auto;
	min-width: 20px;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .12em;
	line-height: 1;
	color: var(--ncs-sb-num);
	font-variant-numeric: tabular-nums;
}

/* Indicador: subrayado que crece */
.ncs-sb--ind-underline .ncs-sb__menu .ncs-sb__text {
	background-image: linear-gradient(currentColor, currentColor);
	background-repeat: no-repeat;
	background-position: 0 100%;
	background-size: 0 1px;
	transition: background-size .35s var(--ncs-ease);
}
.ncs-sb--ind-underline .ncs-sb__menu li > a:hover .ncs-sb__text,
.ncs-sb--ind-underline .ncs-sb__menu li > a:focus-visible .ncs-sb__text,
.ncs-sb--ind-underline .ncs-sb__menu li.current-menu-item > a .ncs-sb__text,
.ncs-sb--ind-underline .ncs-sb__menu > li.current-menu-ancestor > a .ncs-sb__text { background-size: 100% 1px; }

/* Indicador: fondo redondeado */
.ncs-sb--ind-pill .ncs-sb__menu > li > a { padding: 10px 14px; margin: 0 -14px; }
.ncs-sb--ind-pill .ncs-sb__menu > li > a:hover,
.ncs-sb--ind-pill .ncs-sb__menu > li.current-menu-item > a,
.ncs-sb--ind-pill .ncs-sb__menu > li.current-menu-ancestor > a { background: var(--ncs-sb-pill); }

/* Indicador: punto a la derecha */
.ncs-sb--ind-dot .ncs-sb__menu > li > a::after {
	content: "";
	flex: 0 0 auto;
	align-self: center;
	width: 6px;
	height: 6px;
	margin-left: auto;
	border-radius: 50%;
	background: currentColor;
	opacity: 0;
	transform: scale(.3);
	transition: opacity .3s var(--ncs-ease), transform .3s var(--ncs-ease);
}
.ncs-sb--ind-dot .ncs-sb__menu > li.current-menu-item > a::after,
.ncs-sb--ind-dot .ncs-sb__menu > li.current-menu-ancestor > a::after { opacity: 1; transform: none; }

/* Submenús (acordeón; el botón lo inserta nc-studio.js) */
.ncs-sb__menu > li.menu-item-has-children { display: flex; flex-wrap: wrap; align-items: center; }
.ncs-sb__menu > li.menu-item-has-children > a { flex: 1 1 0; min-width: 0; }
.ncs-sb__menu .sub-menu { display: none; flex: 1 0 100%; padding: 2px 0 10px; }
.ncs-sb--numbers .ncs-sb__menu .sub-menu { padding-left: 34px; }
.ncs-sb__menu li.is-expanded > .sub-menu,
.ncs-sb:not(.is-ready) .ncs-sb__menu .current-menu-ancestor > .sub-menu { display: block; }
.ncs-sb .ncs-sb__menu .sub-menu a {
	display: block;
	padding: 6px 0;
	font-family: var(--ncs-sans);
	font-size: 13.5px;
	line-height: 1.4;
	color: var(--ncs-sb-sub);
	text-decoration: none;
	transition: color .3s var(--ncs-ease);
}
.ncs-sb .ncs-sb__menu .sub-menu a:hover,
.ncs-sb .ncs-sb__menu .sub-menu .current-menu-item > a { color: var(--ncs-sb-sub-hover); }
.ncs-sb button.ncs-sb__subtoggle { width: 32px; height: 32px; }
.ncs-sb__subtoggle svg { width: 16px; height: 16px; transition: transform .3s var(--ncs-ease); }
.ncs-sb__menu li.is-expanded > .ncs-sb__subtoggle svg { transform: rotate(180deg); }

/* ---------- Pie ---------- */

.ncs-sb__foot {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 18px;
	flex: 0 0 auto;
	margin-top: 32px;
	padding-top: 26px;
}
.ncs-sb--foot-rule .ncs-sb__foot { border-top: 1px solid var(--ncs-sb-border); }
.ncs-sb__cta { width: 100%; }
.ncs-sb__cta .ncs-btn:not(.ncs-btn--link) { width: 100%; justify-content: space-between; }
.ncs-sb__social { flex-wrap: wrap; gap: 8px; }
.ncs-sb__note {
	margin: 0;
	font-family: var(--ncs-sans);
	font-size: 12.5px;
	line-height: 1.6;
	color: var(--ncs-gray);
	overflow-wrap: anywhere;
}
.ncs-sb .ncs-sb__note a { color: inherit; text-decoration: none; transition: color .3s var(--ncs-ease); }
.ncs-sb .ncs-sb__note a:hover { color: var(--ncs-ink); }
.ncs-sb__empty {
	margin: 0;
	padding: 12px 14px;
	border: 1px dashed #CFCCC4;
	border-radius: 8px;
	font-size: 13px;
	line-height: 1.5;
	color: var(--ncs-gray);
}

/* ---------- Barra lateral fija (escritorio) ----------
   Un bloque por cada opción de "Pasar a botón ☰ desde". Los tres son
   idénticos salvo el ancho mínimo y la clase --collapse-*. */

@media (min-width: 1281px) {
	.ncs-sb--fixed.ncs-sb--collapse-laptop { min-height: 0; }
	.ncs-sb--fixed.ncs-sb--collapse-laptop .ncs-sb__bar,
	.ncs-sb--fixed.ncs-sb--collapse-laptop .ncs-sb__close,
	.ncs-sb--fixed.ncs-sb--collapse-laptop .ncs-sb__overlay { display: none; }
	.ncs-sb--fixed.ncs-sb--collapse-laptop .ncs-sb__panel {
		z-index: 100;
		width: var(--ncs-sb-w, 280px);
		max-width: none;
		padding: 36px 32px 32px;
		box-shadow: none;
		transform: none;
		visibility: visible;
		transition: none;
	}
	body:has(.ncs-sb--push.ncs-sb--collapse-laptop.ncs-sb--left) { --ncs-sb-offset: var(--ncs-sb-w, 280px); padding-left: var(--ncs-sb-offset); }
	body:has(.ncs-sb--push.ncs-sb--collapse-laptop.ncs-sb--right) { --ncs-sb-offset: var(--ncs-sb-w, 280px); padding-right: var(--ncs-sb-offset); }
}

@media (min-width: 1025px) {
	.ncs-sb--fixed.ncs-sb--collapse-tablet { min-height: 0; }
	.ncs-sb--fixed.ncs-sb--collapse-tablet .ncs-sb__bar,
	.ncs-sb--fixed.ncs-sb--collapse-tablet .ncs-sb__close,
	.ncs-sb--fixed.ncs-sb--collapse-tablet .ncs-sb__overlay { display: none; }
	.ncs-sb--fixed.ncs-sb--collapse-tablet .ncs-sb__panel {
		z-index: 100;
		width: var(--ncs-sb-w, 280px);
		max-width: none;
		padding: 36px 32px 32px;
		box-shadow: none;
		transform: none;
		visibility: visible;
		transition: none;
	}
	body:has(.ncs-sb--push.ncs-sb--collapse-tablet.ncs-sb--left) { --ncs-sb-offset: var(--ncs-sb-w, 280px); padding-left: var(--ncs-sb-offset); }
	body:has(.ncs-sb--push.ncs-sb--collapse-tablet.ncs-sb--right) { --ncs-sb-offset: var(--ncs-sb-w, 280px); padding-right: var(--ncs-sb-offset); }
}

@media (min-width: 768px) {
	.ncs-sb--fixed.ncs-sb--collapse-mobile { min-height: 0; }
	.ncs-sb--fixed.ncs-sb--collapse-mobile .ncs-sb__bar,
	.ncs-sb--fixed.ncs-sb--collapse-mobile .ncs-sb__close,
	.ncs-sb--fixed.ncs-sb--collapse-mobile .ncs-sb__overlay { display: none; }
	.ncs-sb--fixed.ncs-sb--collapse-mobile .ncs-sb__panel {
		z-index: 100;
		width: var(--ncs-sb-w, 280px);
		max-width: none;
		padding: 36px 32px 32px;
		box-shadow: none;
		transform: none;
		visibility: visible;
		transition: none;
	}
	body:has(.ncs-sb--push.ncs-sb--collapse-mobile.ncs-sb--left) { --ncs-sb-offset: var(--ncs-sb-w, 280px); padding-left: var(--ncs-sb-offset); }
	body:has(.ncs-sb--push.ncs-sb--collapse-mobile.ncs-sb--right) { --ncs-sb-offset: var(--ncs-sb-w, 280px); padding-right: var(--ncs-sb-offset); }
}

/* Sin Elementor Pro el menú se imprime como plantilla global al abrir
   <body>: se oculta la cabecera propia del tema para no duplicarla. */
.ncs-sb-global ~ #site-header,
.ncs-sb-global ~ .site-header { display: none !important; }

/* Botón "Editar menú": sólo dentro del editor de Elementor, donde el menú
   es otra plantilla y no se puede seleccionar. Va en la esquina inferior
   del lado del menú; al pasar el mouse por el menú, éste se marca. */
.ncs-sb-edit {
	position: fixed;
	bottom: 16px;
	left: 16px;
	z-index: 100001;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 16px 9px 13px;
	border-radius: 999px;
	background: #93003c;
	color: #fff !important;
	font: 600 13px/1 system-ui, -apple-system, "Segoe UI", sans-serif;
	text-decoration: none !important;
	box-shadow: 0 6px 20px rgba(0, 0, 0, .22);
	cursor: pointer;
	transition: background-color .2s, transform .2s;
}
body:has(.ncs-sb--right) .ncs-sb-edit { left: auto; right: 16px; }
.ncs-sb-edit:hover { background: #6d002c; transform: translateY(-1px); }
.ncs-sb-edit svg { width: 15px; height: 15px; flex: none; }
.ncs-sb-global:has(.ncs-sb-edit:hover) .ncs-sb__panel,
.ncs-sb-global:has(.ncs-sb-edit) .ncs-sb__panel:hover { outline: 2px solid #93003c; outline-offset: -2px; }

@media (prefers-reduced-motion: reduce) {
	.ncs-sb__panel,
	.ncs-sb__overlay,
	.ncs-sb__text,
	.ncs-sb__subtoggle svg { transition: none !important; }
}

@media print {
	.ncs-sb { display: none !important; }
	body:has(.ncs-sb) { padding-left: 0 !important; padding-right: 0 !important; }
}
