/* ==========================================================================
   Notos Widgets 2.0 — sistema visual «editorial cinematográfico»
   Paleta Notos: azul noche, dorado y papel.
   Tipos: Instrument Serif (nombres y destacados) · Inter Tight (texto) · Barlow Condensed (etiquetas).
   ========================================================================== */

:root {
	/* Paleta y tipos enlazados a Elementor → Ajustes del sitio → Colores y Tipografía globales.
	   Si allí no hay nada, se usan los valores de Notos. */
	--nw-navy: var(--e-global-color-primary, #051525);
	--nw-deep: #071A2D;
	--nw-panel: #0A2036;
	--nw-ink: var(--e-global-color-secondary, #030D18);
	--nw-gold: var(--e-global-color-accent, #C5A065);
	--nw-paper: var(--e-global-color-text, #F3F0EB);
	--nw-sand: #ECE7DF;
	--nw-fg-rgb: 243, 240, 235;
	--nw-serif: var(--e-global-typography-primary-font-family, 'Instrument Serif'), Georgia, 'Times New Roman', serif;
	--nw-sans: var(--e-global-typography-text-font-family, 'Inter Tight'), system-ui, -apple-system, 'Segoe UI', sans-serif;
	--nw-mono: var(--nw-sans);
	--nw-cond: var(--e-global-typography-secondary-font-family, 'Barlow Condensed'), 'Arial Narrow', sans-serif;
	--nw-ease: cubic-bezier(.2, .7, .1, 1);
	--nw-wrap: 1320px;
	--nw-gutter: clamp(20px, 4vw, 56px);
}

body.nw-has-header { background: var(--nw-navy); }

/* ---------- Esquemas de color ---------- */
.nw,
.nw-s-dark,
.nwf,
.nwh-mobile {
	--bg: var(--nw-navy);
	--fg: var(--nw-paper);
	--tx: rgba(var(--nw-fg-rgb), .74);
	--mut: rgba(var(--nw-fg-rgb), .5);
	--acc: var(--nw-gold);
	--line: rgba(var(--nw-fg-rgb), .14);
	--line2: rgba(var(--nw-fg-rgb), .32);
	--card: var(--nw-panel);
}
.nw-s-deep { --bg: var(--nw-deep); --card: #0C2742; }
.nw-s-ink  { --bg: var(--nw-ink); --card: #0A1B2E; }
.nw-s-light,
.nw-s-sand {
	--bg: var(--nw-paper);
	--fg: var(--nw-navy);
	--tx: rgba(5, 21, 37, .76);
	--mut: rgba(5, 21, 37, .52);
	--acc: #9A7641;
	--line: rgba(5, 21, 37, .14);
	--line2: rgba(5, 21, 37, .34);
	--card: #FFFFFF;
}
.nw-s-sand { --bg: var(--nw-sand); --card: var(--nw-paper); }

/* ---------- Base ---------- */
.nw {
	position: relative;
	background: var(--bg);
	color: var(--tx);
	font: 400 17px/1.6 var(--nw-sans);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
.nw *, .nw *::before, .nw *::after { box-sizing: border-box; }
:where(.nw, .nwf, .nwh, .nwh-mobile) :where(p, figure, blockquote, h1, h2, h3, h4, ul, ol, dl, dd) { margin: 0; }
.nw img { display: block; max-width: 100%; }
.nw a { transition: color .3s, border-color .3s, background-color .3s, transform .3s; }

.nw-wrap { max-width: var(--nw-wrap); margin: 0 auto; padding: 0 var(--nw-gutter); }
.nw-w-narrow .nw-wrap { max-width: 960px; }
.nw-w-wide .nw-wrap { max-width: 1600px; }
.nw-w-full .nw-wrap { max-width: none; padding: 0 12px; }

.nw-p-none { padding: 0; }
.nw-p-s  { padding: 64px 0; }
.nw-p-m  { padding: 112px 0; }
.nw-p-l  { padding: 160px 0; }
.nw-p-xl { padding: 208px 0; }

:is(.nw, .nwh, .nwf, .nwh-mobile) :is(a, button, summary, input, select, textarea, label):focus-visible { outline: 2px solid var(--nw-gold); outline-offset: 3px; }
.nw-skip { position: absolute; left: -9999px; top: 12px; z-index: 10001; padding: 12px 18px; background: var(--nw-paper); color: var(--nw-navy); font: 500 14px var(--nw-sans); }
.nw-skip:focus { left: 12px; }

/* ---------- Tipografía ---------- */
.nw-eyebrow {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 22px;
	font: 500 12px/1.4 var(--nw-mono);
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--mut);
}
.nw-eyebrow::before { content: ''; flex: 0 0 6px; width: 6px; height: 6px; border-radius: 50%; background: var(--nw-gold); }
.nw-display {
	font-family: var(--nw-serif);
	font-weight: 400;
	color: var(--fg);
	font-size: clamp(56px, 9.6vw, 168px);
	line-height: .92;
	letter-spacing: -.02em;
}
.nw-title {
	font-family: var(--nw-serif);
	font-weight: 400;
	color: var(--fg);
	font-size: clamp(42px, 6vw, 96px);
	line-height: .96;
	letter-spacing: -.015em;
}
.nw-h3 {
	display: block;
	font-family: var(--nw-serif);
	font-weight: 400;
	color: var(--fg);
	font-size: clamp(30px, 2.8vw, 42px);
	line-height: 1.02;
	letter-spacing: -.01em;
}
.nw-h4 { font: 500 19px/1.3 var(--nw-sans); color: var(--fg); }
.nw em { font-style: italic; color: var(--acc); }
.nw-lead { font-size: clamp(18px, 1.45vw, 21px); line-height: 1.55; color: var(--tx); max-width: 620px; font-weight: 300; }
.nw-small { font-size: 15.5px; line-height: 1.6; color: var(--tx); }
.nw-statement { font-family: var(--nw-serif); color: var(--fg); font-size: clamp(30px, 3.4vw, 54px); line-height: 1.08; letter-spacing: -.01em; }
.nw-pull { font-family: var(--nw-serif); font-style: italic; color: var(--fg); font-size: clamp(26px, 2.3vw, 34px); line-height: 1.2; border-left: 1px solid var(--acc); padding-left: 24px; }
.nw-label { font: 500 11.5px/1.4 var(--nw-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--mut); margin-bottom: 8px; }
.nw-tags { font: 400 13px/1.5 var(--nw-mono); color: var(--mut); }
.nw-body { color: var(--tx); }
.nw-body p { margin: 0 0 1.1em; }
.nw-body p:last-child { margin-bottom: 0; }
.nw-body a { color: var(--acc); }

/* ---------- Cabeceras de sección ---------- */
.nw-head { margin-bottom: clamp(56px, 6.5vw, 104px); }
.nw-head--center { text-align: center; }
.nw-head--center .nw-eyebrow { justify-content: center; }
.nw-head--center .nw-lead { margin: 26px auto 0; }
.nw-head--left .nw-head__a { display: grid; grid-template-columns: minmax(180px, 3fr) 9fr; column-gap: 32px; align-items: start; }
.nw-head--left .nw-eyebrow { margin: .95em 0 0; }
.nw-head--left .nw-head__b { margin: 28px 0 0 calc(25% + 8px); }
.nw-head--split { display: grid; grid-template-columns: 7fr 5fr; gap: 64px; align-items: end; }
.nw-heading .nw-head { margin-bottom: 0; }

/* ---------- Botones y enlaces ---------- */
.nw-btns { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 40px; }
.nw-btns--center, .nw-head--center ~ .nw-btns { justify-content: center; }
:is(.nw, .nwh-mobile, .nwf) .nw-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	height: 52px;
	padding: 0 28px;
	border: 1px solid transparent;
	border-radius: 999px;
	font: 500 15px/1 var(--nw-sans);
	letter-spacing: 0;
	text-transform: none;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .35s var(--nw-ease), color .35s, border-color .35s, transform .35s var(--nw-ease);
}
:is(.nw, .nwh-mobile, .nwf) :is(a, button).nw-btn--solid { background: var(--nw-gold); border-color: var(--nw-gold); color: var(--nw-navy); }
:is(.nw, .nwh-mobile, .nwf) :is(a, button).nw-btn--solid:hover { background: var(--nw-paper); border-color: var(--nw-paper); color: var(--nw-navy); }
.nw:is(.nw-s-light, .nw-s-sand) :is(a, button).nw-btn--solid:hover { background: var(--nw-navy); border-color: var(--nw-navy); color: var(--nw-paper); }
:is(.nw, .nwf) a.nw-btn--outline { background: transparent; border-color: var(--line2); color: var(--fg); }
:is(.nw, .nwf) a.nw-btn--outline:hover { background: var(--fg); border-color: var(--fg); color: var(--bg); }
.nw a.nw-arrow,
.nw a.nw-arrow:hover {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding-bottom: 4px;
	font: 500 15px/1.2 var(--nw-sans);
	color: var(--fg);
	text-decoration: none;
	background: linear-gradient(var(--acc), var(--acc)) left bottom / 0 1px no-repeat, linear-gradient(var(--line2), var(--line2)) left bottom / 100% 1px no-repeat;
	transition: background-size .5s var(--nw-ease), color .3s;
}
.nw a.nw-arrow::after { content: '↗'; font-size: 14px; transition: transform .35s var(--nw-ease); }
.nw a.nw-arrow:hover { background-size: 100% 1px, 100% 1px; color: var(--acc); }
.nw a.nw-arrow:hover::after { transform: translate(2px, -2px); }

.nw-list { list-style: none; padding: 0; margin: 8px 0 0; }
.nw-list li { position: relative; padding: 10px 0 10px 26px; border-top: 1px solid var(--line); font-size: 15.5px; line-height: 1.45; color: var(--fg); }
.nw-list li:last-child { border-bottom: 1px solid var(--line); }
.nw-list li::before { content: ''; position: absolute; left: 0; top: 50%; width: 12px; height: 1px; background: var(--acc); }
.nw-checks { list-style: none; padding: 0; margin: 32px 0 0; display: grid; gap: 12px; }
.nw-checks li { position: relative; padding-left: 32px; color: var(--fg); font-size: 16px; }
.nw-checks li::before { content: '✓'; position: absolute; left: 0; top: 1px; width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--acc); color: var(--acc); font-size: 11px; line-height: 19px; text-align: center; }

.nw-grid { display: grid; gap: 32px; }
.nw-cols-1 { grid-template-columns: 1fr; }
.nw-cols-2 { grid-template-columns: repeat(2, 1fr); }
.nw-cols-3 { grid-template-columns: repeat(3, 1fr); }
.nw-cols-4 { grid-template-columns: repeat(4, 1fr); }

/* ---------- Animaciones ---------- */
@keyframes nwUp { from { opacity: 0; transform: translateY(36px); } to { opacity: 1; transform: none; } }
@keyframes nwZoom { from { transform: scale(1.03); } to { transform: scale(1.1); } }
@keyframes nwBlink { 50% { opacity: 0; } }
@keyframes nwLine { 0% { transform: scaleY(0); transform-origin: top; } 50% { transform: scaleY(1); transform-origin: top; } 51% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }
@keyframes nwMarq { to { transform: translateX(-50%); } }

.nw-anim .nw-r { opacity: 0; transform: translateY(40px); transition: opacity 1.2s var(--nw-ease), transform 1.2s var(--nw-ease); }
.nw-anim .nw-r.is-in { opacity: 1; transform: none; }
.nw-in { animation: nwUp 1.4s var(--nw-ease) both; }
.nw-hero__content > .nw-in:nth-child(1) { animation-delay: .2s; }
.nw-hero__content > .nw-in:nth-child(2) { animation-delay: .35s; }
.nw-hero__content > .nw-in:nth-child(3) { animation-delay: .6s; }
.nw-hero__bar.nw-in { animation-delay: .85s; }
.nw-intro .nw-in:nth-child(2) { animation-delay: .15s; }
.nw-intro .nw-in:nth-child(3) { animation-delay: .3s; }
.nw-intro .nw-in:nth-child(4) { animation-delay: .45s; }
.elementor-editor-active .nw-anim .nw-r { opacity: 1; transform: none; }

/* ---------- Hero ---------- */
.nw-hero { --nw-h: 100vh; --nw-shade: 45; background: var(--nw-navy); }
.nw-hero__frame { position: relative; min-height: var(--nw-h); display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; }
.nw-hero--framed { padding: 96px 16px 16px; }
.nw-hero--framed .nw-hero__frame { min-height: calc(var(--nw-h) - 112px); }
.nw-hero__media { position: absolute; inset: 0; }
.nw-hero__poster,
.nw-hero__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.nw-hero__poster { animation: nwZoom 30s ease-in-out infinite alternate; }
.nw-hero__video { opacity: 0; transition: opacity 1.2s var(--nw-ease); }
.nw-hero__video.is-playing { opacity: 1; }
.nw-hero__shade {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg,
		rgb(5 21 37 / .45) 0%,
		rgb(5 21 37 / calc(var(--nw-shade) / 100 * .6)) 38%,
		rgb(5 21 37 / calc(var(--nw-shade) / 100 + .3)) 78%,
		rgb(5 21 37 / .96) 100%);
}
.nw-hero__content { position: relative; z-index: 2; width: 100%; max-width: var(--nw-wrap); margin: 0 auto; padding: 160px var(--nw-gutter) 0; }
.nw-hero .nw-eyebrow { color: rgba(var(--nw-fg-rgb), .72); }
.nw-hero .nw-display { font-size: clamp(56px, 10.4vw, 184px); margin: 0 0 44px; }
.nw-hero__foot { display: grid; grid-template-columns: minmax(0, 560px) auto; justify-content: space-between; align-items: end; gap: 32px; }
.nw-hero__foot .nw-lead { color: rgba(var(--nw-fg-rgb), .82); }
.nw-hero__foot .nw-btns { margin-top: 0; }
.nw-hero__bar {
	position: relative;
	z-index: 2;
	width: 100%;
	max-width: var(--nw-wrap);
	margin: 64px auto 0;
	padding: 20px var(--nw-gutter) 28px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 24px;
}
.nw-hero__bar::before { content: ''; position: absolute; top: 0; left: var(--nw-gutter); right: var(--nw-gutter); height: 1px; background: rgba(var(--nw-fg-rgb), .2); }
.nw-hero__proof { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 28px; font: 500 12px/1.4 var(--nw-mono); letter-spacing: .05em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .7); }
.nw-hero__proof li { display: flex; align-items: center; gap: 10px; }
.nw-hero__proof li::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--nw-gold); }
.nw-hero--center .nw-hero__content { text-align: center; }
.nw-hero--center .nw-eyebrow { justify-content: center; }
.nw-hero--center .nw-hero__foot { grid-template-columns: 1fr; justify-items: center; }
.nw-hero--center .nw-hero__foot .nw-lead { margin: 0 auto; }
.nw-tw { white-space: nowrap; }
.nw-tw::after { content: ''; display: inline-block; width: .05em; height: .72em; margin-left: .08em; vertical-align: -.02em; background: var(--nw-gold); animation: nwBlink 1s steps(1) infinite; }
.nw .nw-scroll,
.nw .nw-scroll:hover,
.nw .nw-scroll:focus {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 4px 0;
	background: none;
	border: 0;
	border-radius: 0;
	box-shadow: none;
	color: rgba(var(--nw-fg-rgb), .72);
	cursor: pointer;
	font: 500 12px/1 var(--nw-mono);
	letter-spacing: .06em;
	text-transform: uppercase;
}
.nw .nw-scroll:hover { color: var(--nw-paper); }
.nw-scroll i { display: block; width: 1px; height: 36px; background: linear-gradient(var(--nw-gold), transparent); animation: nwLine 2.4s infinite; }

/* ---------- Entradas de página ---------- */
.nw-intro { --nw-h: 74vh; --nw-shade: 35; }
.nw-intro--rule .nw-wrap::after { content: ''; display: block; height: 1px; background: var(--line); margin-top: 64px; }
.nw-intro--framed .nw-wrap, .nw-intro--full .nw-wrap { max-width: none; }
.nw-intro--framed .nw-wrap { padding: 96px 16px 0; }
.nw-intro--full .nw-wrap { padding: 0; }
.nw-intro--full.nw-intro--rule .nw-wrap::after { display: none; }
.nw-intro__frame { position: relative; min-height: var(--nw-h); display: flex; align-items: center; justify-content: center; text-align: center; background-color: var(--nw-panel); background-size: cover; background-position: center; overflow: hidden; }
.nw-intro__shade { position: absolute; inset: 0; background: rgb(5 21 37 / calc(var(--nw-shade) / 100)); }
.nw-intro__frame .nw-intro__content { position: relative; z-index: 2; max-width: 1180px; padding: 56px 24px; }
.nw-intro__frame .nw-display { color: var(--nw-paper); font-size: clamp(52px, 8vw, 136px); }
.nw-intro__frame .nw-eyebrow { justify-content: center; color: rgba(var(--nw-fg-rgb), .78); }
.nw-intro__frame em { color: var(--nw-gold); }
.nw-intro__dash { display: block; width: 32px; height: 1px; background: var(--nw-paper); margin: 28px auto; }
.nw-display--sub { font-size: clamp(32px, 4.6vw, 72px) !important; line-height: 1 !important; }
.nw-intro__frame .nw-statement { color: rgba(var(--nw-fg-rgb), .86); font: 300 clamp(17px, 1.4vw, 20px)/1.55 var(--nw-sans); max-width: 620px; margin: 28px auto 0; }
.nw-intro__frame .nw-btns { justify-content: center; }
.nw-intro__frame a.nw-btn--outline { color: var(--nw-paper); border-color: rgba(var(--nw-fg-rgb), .5); }
.nw-intro--full .nw-intro__frame { align-items: flex-end; justify-content: flex-start; text-align: left; }
.nw-intro--full .nw-intro__shade { background: linear-gradient(180deg, rgb(5 21 37 / calc(var(--nw-shade) / 100)) 0%, rgb(5 21 37 / .2) 38%, rgba(5, 21, 37, .95) 100%); }
.nw-intro--full .nw-intro__content { width: 100%; max-width: var(--nw-wrap); margin: 0 auto; padding: 0 var(--nw-gutter) 80px; }
.nw-intro--full .nw-eyebrow { justify-content: flex-start; }
.nw-intro--full .nw-statement { margin-left: 0; }
.nw-intro--full .nw-btns { justify-content: flex-start; }
.nw-intro--split .nw-wrap { padding-top: 168px; }
.nw-intro__top { margin-bottom: 56px; }
.nw-intro--split .nw-display { font-size: clamp(52px, 7.4vw, 128px); max-width: 1100px; }
.nw-intro__grid { display: grid; grid-template-columns: 7fr 5fr; gap: clamp(40px, 6vw, 96px); align-items: end; }
.nw-intro--flip .nw-intro__img { order: 2; }
.nw-intro__img img { width: 100%; aspect-ratio: 16 / 11; object-fit: cover; }
.nw-intro--split .nw-statement { font-size: clamp(26px, 2.6vw, 40px); }
.nw-intro--type .nw-wrap { padding-top: 200px; }
.nw-intro--type .nw-display { font-size: clamp(64px, 12vw, 208px); }
.nw-intro--type .nw-intro__content .nw-statement { font: 300 clamp(18px, 1.5vw, 22px)/1.55 var(--nw-sans); color: var(--tx); max-width: 620px; margin: 40px 0 0 auto; }

/* ---------- Imagen y texto ---------- */
.nw-split .nw-wrap { display: grid; grid-template-columns: 6fr 5fr; column-gap: 8%; align-items: center; }
.nw-split--right .nw-wrap { grid-template-columns: 5fr 6fr; }
.nw-split--right .nw-split__img { order: 2; }
.nw-split__img { overflow: hidden; }
.nw-split__img img { width: 100%; object-fit: cover; }
.nw-ratio--portrait .nw-split__img img { aspect-ratio: 4 / 5; }
.nw-ratio--tall .nw-split__img img { aspect-ratio: 2 / 3; }
.nw-ratio--landscape .nw-split__img img { aspect-ratio: 3 / 2; }
.nw-ratio--square .nw-split__img img { aspect-ratio: 1; }
.nw-split__text .nw-title { font-size: clamp(40px, 4.6vw, 72px); margin-bottom: 32px; }
.nw-split__text .nw-pull { margin-bottom: 28px; }
.nw-split__text .nw-btns { margin-top: 36px; }

/* ---------- Cifras ---------- */
.nw-stat { border-top: 1px solid var(--line); padding-top: 28px; }
.nw-stat__key { font-family: var(--nw-serif); font-style: italic; color: var(--acc); font-size: clamp(52px, 5.4vw, 88px); line-height: .95; margin-bottom: 16px; }
.nw-stat .nw-small { max-width: 340px; }

/* ---------- Lista de servicios ---------- */
.nw-svc { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.nw a.nw-svc__row,
.nw .nw-svc__row {
	display: grid;
	grid-template-columns: 56px minmax(0, 5fr) minmax(0, 4fr) 52px;
	gap: 28px;
	align-items: center;
	padding: 36px 0;
	border-bottom: 1px solid var(--line);
	color: inherit;
	text-decoration: none;
}
.nw-svc__n { font: 500 13px/1 var(--nw-mono); color: var(--mut); }
.nw-svc__t { font-family: var(--nw-serif); font-size: clamp(38px, 4.6vw, 72px); line-height: 1; letter-spacing: -.015em; color: var(--fg); transition: color .4s, transform .6s var(--nw-ease); }
.nw-svc__d { font-size: 15.5px; line-height: 1.55; color: var(--tx); }
.nw-svc__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.nw-svc__tags span { padding: 5px 11px; border: 1px solid var(--line2); border-radius: 999px; font: 400 11.5px/1.2 var(--nw-mono); color: var(--mut); }
.nw-svc__go { width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--line2); display: grid; place-items: center; color: var(--fg); transition: background-color .4s, color .4s, border-color .4s, transform .5s var(--nw-ease); }
.nw-svc__row:hover .nw-svc__t { color: var(--acc); transform: translateX(14px); font-style: italic; }
.nw-svc__row:hover .nw-svc__go { background: var(--nw-gold); border-color: var(--nw-gold); color: var(--nw-navy); transform: rotate(45deg); }
.nw-svc__float {
	position: fixed;
	left: 0;
	top: 0;
	z-index: 60;
	width: 300px;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	pointer-events: none;
	opacity: 0;
	transform: translate3d(var(--x, 0), var(--y, 0), 0) translate(-50%, -50%) scale(.85) rotate(-4deg);
	transition: opacity .35s, transform .55s var(--nw-ease);
}
.nw-svc__float.is-on { opacity: 1; transform: translate3d(var(--x, 0), var(--y, 0), 0) translate(-50%, -50%) scale(1) rotate(-2deg); }
.nw-svc__float img { width: 100%; height: 100%; object-fit: cover; }
.nw-services .nw-btns { margin-top: 56px; }

/* ---------- Tarjetas ---------- */
.nw-card { display: flex; flex-direction: column; background: var(--card); overflow: hidden; }
.nw-card__img { overflow: hidden; }
.nw-card__img img { width: 100%; object-fit: cover; transition: transform 1.6s var(--nw-ease); }
.nw-card:hover .nw-card__img img { transform: scale(1.05); }
.nw-ratio--landscape .nw-card__img img { aspect-ratio: 3 / 2; }
.nw-ratio--portrait .nw-card__img img { aspect-ratio: 4 / 5; }
.nw-ratio--square .nw-card__img img { aspect-ratio: 1; }
.nw-card__body { display: flex; flex-direction: column; gap: 14px; padding: 36px 36px 40px; flex: 1; }
.nw-card__body .nw-eyebrow { margin: 0; }
.nw-card__body .nw-arrow { margin-top: auto; align-self: flex-start; }
.nw-cards--minimal .nw-card { background: none; }
.nw-cards--minimal .nw-card__body { padding: 28px 0 0; }
.nw-cards .nw-btns { margin-top: 64px; }

/* ---------- Mosaico de sectores ---------- */
.nw-tiles__grid { display: grid; gap: 12px; }
.nw-tiles--auto .nw-tiles__grid { grid-template-columns: repeat(6, 1fr); }
.nw-tiles--auto .nw-tile { grid-column: span 2; }
.nw-tiles--auto .nw-tile:nth-child(5n+4), .nw-tiles--auto .nw-tile:nth-child(5n+5) { grid-column: span 3; }
.nw-tiles--g3 .nw-tiles__grid { grid-template-columns: repeat(3, 1fr); }
.nw-tiles--g2 .nw-tiles__grid { grid-template-columns: repeat(2, 1fr); }
.nw a.nw-tile, .nw .nw-tile { position: relative; display: flex; align-items: flex-end; min-height: 460px; overflow: hidden; color: inherit; text-decoration: none; }
.nw-tile__bg { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform 1.8s var(--nw-ease); }
.nw-tile:hover .nw-tile__bg { transform: scale(1.06); }
.nw-tile::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(3, 13, 24, 0) 40%, rgba(3, 13, 24, .9) 100%); }
.nw-tile__body { position: relative; z-index: 2; display: flex; flex-direction: column; gap: 10px; padding: 32px; }
.nw-tile__body .nw-eyebrow { margin: 0; color: rgba(var(--nw-fg-rgb), .72); }
.nw-tile .nw-h3 { color: var(--nw-paper); }
.nw-tile .nw-small { color: rgba(var(--nw-fg-rgb), .78); max-width: 340px; }

/* ---------- Proceso ---------- */
.nw-steps ol { list-style: none; margin: 0; padding: 0; }
.nw-step { border-top: 1px solid var(--line); padding-top: 24px; transition: border-color .4s; }
.nw-step:hover { border-top-color: var(--acc); }
.nw-step__n { display: block; font: 500 13px/1 var(--nw-mono); color: var(--acc); margin-bottom: 56px; }
.nw-step .nw-h4 { margin-bottom: 10px; }

/* ---------- Casos ---------- */
.nw-case { display: flex; flex-direction: column; overflow: hidden; }
.nw-case__img { overflow: hidden; }
.nw-case__img img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform 1.6s var(--nw-ease); }
.nw-case:hover .nw-case__img img { transform: scale(1.04); }
.nw-case__body { display: flex; flex-direction: column; gap: 14px; padding: 28px 0 0; }
.nw-case__body .nw-eyebrow { margin: 0; }
.nw-cases--cards .nw-grid { row-gap: 72px; }
.nw-cases--rows .nw-cases__list { display: flex; flex-direction: column; gap: clamp(88px, 10vw, 160px); }
.nw-cases--rows .nw-case { display: grid; grid-template-columns: 6fr 5fr; column-gap: 8%; align-items: center; overflow: visible; }
.nw-cases--rows .nw-case:nth-child(even) { grid-template-columns: 5fr 6fr; }
.nw-cases--rows .nw-case:nth-child(even) .nw-case__img { order: 2; }
.nw-cases--rows .nw-case__img img { aspect-ratio: 4 / 5; }
.nw-cases--rows .nw-case__body { padding: 0; }
.nw-cases--rows .nw-h3 { font-size: clamp(40px, 4vw, 64px); margin-bottom: 8px; }
.nw-case__block { border-top: 1px solid var(--line); padding-top: 16px; margin-top: 6px; }

/* ---------- Ficha del proyecto ---------- */
.nw-meta .nw-wrap { display: grid; grid-template-columns: 7fr 5fr; column-gap: 8%; align-items: start; }
.nw-meta__list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; }
.nw-meta__list div { border-top: 1px solid var(--line); padding: 16px 0 22px; }
.nw-meta__list dt { font: 500 11.5px/1.4 var(--nw-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--mut); margin-bottom: 8px; }
.nw-meta__list dd { margin: 0; color: var(--fg); font-size: 16px; line-height: 1.45; }

/* ---------- Siguiente proyecto ---------- */
.nw-next { padding: 120px 0 104px; }
.nw-next__top { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 32px; }
.nw-next__top .nw-eyebrow { margin: 0; }
.nw a.nw-next__link { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 24px; color: inherit; text-decoration: none; }
.nw-next__img { grid-column: 1 / -1; display: block; aspect-ratio: 21 / 8; background-size: cover; background-position: center; filter: brightness(.7) saturate(.9); transition: filter .8s var(--nw-ease); }
.nw-next__link:hover .nw-next__img { filter: brightness(1) saturate(1); }
.nw-next__title { display: block; font-family: var(--nw-serif); font-size: clamp(56px, 9vw, 160px); line-height: .9; letter-spacing: -.02em; color: var(--fg); transition: color .4s; }
.nw-next__link:hover .nw-next__title { color: var(--acc); }
.nw-next__meta { display: block; margin-top: 16px; font: 500 12px/1.4 var(--nw-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--mut); }
.nw-next__go { width: 88px; height: 88px; border-radius: 50%; border: 1px solid var(--line2); display: grid; place-items: center; color: var(--fg); transition: background-color .4s, color .4s, border-color .4s, transform .6s var(--nw-ease); }
.nw-next__go svg { width: 24px; height: 24px; }
.nw-next__link:hover .nw-next__go { background: var(--nw-gold); border-color: var(--nw-gold); color: var(--nw-navy); transform: rotate(45deg); }

/* ---------- Testimonios ---------- */
.nw-tslider__stage { display: grid; }
.nw-tslide { grid-area: 1 / 1; opacity: 0; visibility: hidden; transform: translateY(20px); transition: opacity .8s var(--nw-ease), transform .8s var(--nw-ease), visibility .8s; }
.nw-tslide.is-on { opacity: 1; visibility: visible; transform: none; }
.nw-tslide blockquote { font-family: var(--nw-serif); color: var(--fg); font-size: clamp(34px, 4.4vw, 72px); line-height: 1.06; letter-spacing: -.01em; max-width: 1180px; }
.nw-tslide blockquote::before { content: '“'; color: var(--acc); }
.nw-tslide blockquote::after { content: '”'; color: var(--acc); }
.nw-tslide figcaption, .nw-quote-card figcaption { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: baseline; margin-top: 36px; }
.nw-tslide figcaption strong, .nw-quote-card figcaption strong { font: 500 13px/1.4 var(--nw-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--acc); }
.nw-tslide figcaption span, .nw-quote-card figcaption span { font-size: 15px; color: var(--mut); }
.nw-tslider__nav { display: flex; align-items: center; gap: 12px; margin-top: 56px; padding-top: 24px; border-top: 1px solid var(--line); }
.nw-tslider__count { flex: 1; font: 500 13px/1 var(--nw-mono); color: var(--mut); }
.nw-tslider__count b { color: var(--fg); font-weight: 500; }
.nw .nw-tslider__btn,
.nw .nw-tslider__btn:hover,
.nw .nw-tslider__btn:focus { width: 52px; height: 52px; padding: 0; border-radius: 50%; border: 1px solid var(--line2); background: transparent; color: var(--fg); font: 400 18px/1 var(--nw-sans); cursor: pointer; transition: background-color .35s, color .35s, border-color .35s; }
.nw .nw-tslider__btn:hover { background: var(--nw-gold); border-color: var(--nw-gold); color: var(--nw-navy); }
.nw-quote-card { display: flex; flex-direction: column; gap: 0; padding: 40px 36px; border: 1px solid var(--line); }
.nw-quote-card blockquote { font-family: var(--nw-serif); color: var(--fg); font-size: 26px; line-height: 1.2; flex: 1; }

/* ---------- Cita destacada ---------- */
.nw-quote--center { text-align: center; }
.nw-quote__iso { width: 48px; height: auto; margin: 0 auto 40px; opacity: .9; }
.nw-quote__text { font-family: var(--nw-serif); color: var(--fg); font-size: clamp(36px, 4.8vw, 76px); line-height: 1.04; letter-spacing: -.01em; margin-bottom: 36px; }
.nw-quote .nw-body { margin-bottom: 28px; font-size: 18px; }
.nw-quote--center .nw-body { max-width: 620px; margin-left: auto; margin-right: auto; }
.nw-quote figcaption { margin: 0; }
.nw-quote--center figcaption { justify-content: center; }
.nw-quote--center .nw-btns { justify-content: center; }
.nw-quote--editorial figure { border-left: 1px solid var(--acc); padding-left: clamp(24px, 4vw, 56px); }
.nw-quote--editorial .nw-quote__text { font-size: clamp(32px, 3.6vw, 56px); }

/* ---------- Galería ---------- */
.nw-gallery__grid { display: grid; gap: 16px; }
.nw-gallery__item { overflow: hidden; }
.nw-gallery__item a { display: block; overflow: hidden; }
.nw-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.6s var(--nw-ease); }
.nw-gallery__item:hover img { transform: scale(1.04); }
.nw-gallery--portrait2 .nw-gallery__grid { grid-template-columns: repeat(2, 1fr); gap: 24px; }
.nw-gallery--portrait2 .nw-gallery__item img { aspect-ratio: 4 / 5; }
.nw-gallery--row3 .nw-gallery__grid { grid-template-columns: repeat(3, 1fr); }
.nw-gallery--row3 .nw-gallery__item img { aspect-ratio: 4 / 3; }
.nw-gallery--stagger .nw-gallery__grid { grid-template-columns: repeat(3, 1fr); gap: 24px; align-items: start; }
.nw-gallery--stagger .nw-gallery__item img { aspect-ratio: 3 / 4; }
.nw-gallery--stagger .nw-gallery__item:nth-child(3n+2) { margin-top: 96px; }
.nw-gallery--stagger .nw-gallery__item:nth-child(3n+3) { margin-top: 40px; }
.nw-gallery--masonry .nw-gallery__grid { display: block; columns: 3 260px; column-gap: 16px; }
.nw-gallery--masonry .nw-gallery__item { break-inside: avoid; margin-bottom: 16px; }
.nw-gallery--masonry .nw-gallery__item img { height: auto; }

/* ---------- Mosaico editorial ---------- */
.nw-mosaic__fig { margin: 0; overflow: hidden; background: var(--card); }
.nw-mosaic__fig a { display: block; height: 100%; }
.nw-mosaic__fig img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.6s var(--nw-ease); }
.nw-mosaic__fig:hover img { transform: scale(1.04); }
.nw-mosaic__title { font-size: clamp(30px, 2.8vw, 44px); line-height: 1.06; margin-bottom: 22px; }
.nw-mosaic__text .nw-eyebrow { margin-bottom: 18px; }
.nw-mosaic__top { display: grid; grid-template-columns: 1fr 1.2fr; gap: clamp(32px, 5vw, 80px); align-items: start; }
.nw-mosaic__thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.nw-mosaic__fig.is-thumb { aspect-ratio: 3 / 4; }
.nw-mosaic__big { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(12px, 2vw, 24px); margin-top: clamp(24px, 4vw, 56px); }
.nw-mosaic__fig.is-big { aspect-ratio: 4 / 5; }
.nw-mosaic--flip .nw-mosaic__top { grid-template-columns: 1.2fr 1fr; }
.nw-mosaic--flip .nw-mosaic__thumbs { order: -1; }
.nw-mosaic__row { display: grid; grid-template-columns: 1.1fr .9fr 1.1fr; gap: clamp(24px, 4vw, 64px); align-items: center; }
.nw-mosaic__cluster { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.nw-mosaic__fig.is-sq { aspect-ratio: 1; }
.nw-mosaic__fig.is-wide { grid-column: span 2; aspect-ratio: 16 / 10; }
.nw-mosaic__fig.is-tall { aspect-ratio: 3 / 4; }
.nw-mosaic--flip .nw-mosaic__row .is-tall { order: -1; }
.nw-mosaic--flip .nw-mosaic__cluster { order: 3; }

/* ---------- Preguntas frecuentes ---------- */
.nw-faq__list { margin-left: calc(25% + 8px); border-top: 1px solid var(--line); }
.nw-faq__item { border-bottom: 1px solid var(--line); }
.nw-faq__item summary { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 28px 0; cursor: pointer; list-style: none; font-family: var(--nw-serif); font-size: clamp(24px, 2.2vw, 34px); line-height: 1.15; color: var(--fg); transition: color .3s; }
.nw-faq__item summary::-webkit-details-marker { display: none; }
.nw-faq__item summary:hover { color: var(--acc); }
.nw-faq__item summary i { position: relative; flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line2); transition: transform .5s var(--nw-ease), background-color .3s, border-color .3s; }
.nw-faq__item summary i::before, .nw-faq__item summary i::after { content: ''; position: absolute; left: 50%; top: 50%; width: 12px; height: 1px; background: var(--fg); transform: translate(-50%, -50%); }
.nw-faq__item summary i::after { transform: translate(-50%, -50%) rotate(90deg); }
.nw-faq__item[open] summary i { transform: rotate(45deg); border-color: var(--acc); }
.nw-faq__a { padding: 0 64px 32px 0; }
.nw-faq__a p { max-width: 760px; color: var(--tx); font-size: 17px; line-height: 1.65; }

/* ---------- Llamada a la acción ---------- */
.nw-cta { --nw-shade: 72; --fg: var(--nw-paper); --tx: rgba(var(--nw-fg-rgb), .82); --acc: var(--nw-gold); --line2: rgba(var(--nw-fg-rgb), .5); background: var(--nw-navy); }
.nw-cta--framed { padding: 0 16px 16px; }
.nw-cta__frame { position: relative; min-height: 76vh; display: flex; align-items: center; justify-content: center; padding: 140px 24px; text-align: center; background-color: var(--nw-panel); background-size: cover; background-position: center; }
.nw-cta__shade { position: absolute; inset: 0; background: rgb(5 21 37 / calc(var(--nw-shade) / 100)); }
.nw-cta__content { position: relative; z-index: 2; max-width: 1100px; display: flex; flex-direction: column; align-items: center; }
.nw-cta .nw-eyebrow { color: rgba(var(--nw-fg-rgb), .75); }
.nw-cta .nw-title { font-size: clamp(48px, 7vw, 120px); margin-bottom: 28px; }
.nw-cta .nw-lead { margin: 0 auto; }

/* ---------- Contacto ---------- */
.nw-contact .nw-wrap { display: grid; grid-template-columns: 5fr 6fr; column-gap: 8%; align-items: start; }
.nw-contact__info .nw-title { font-size: clamp(56px, 7.6vw, 128px); margin-bottom: 28px; }
.nw-contact__direct { margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--line); }
.nw-contact__direct .nw-eyebrow { margin-bottom: 12px; }
.nw a.nw-contact__mail { display: inline-block; font-family: var(--nw-serif); font-size: clamp(30px, 3vw, 44px); line-height: 1.1; color: var(--fg); text-decoration: none; border-bottom: 1px solid var(--line2); }
.nw a.nw-contact__mail:hover { color: var(--acc); border-color: var(--acc); }
.nw-contact__meta { display: flex; flex-wrap: wrap; gap: 8px 24px; margin-top: 24px; font: 500 12.5px/1.4 var(--nw-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--mut); }
.nw .nw-contact__meta a { color: var(--fg); text-decoration: none; }
.nw .nw-contact__meta a:hover { color: var(--acc); }
.nw-form { display: flex; flex-direction: column; gap: 28px; background: var(--card); padding: clamp(28px, 4vw, 56px); }
.nw-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.nw-form label { display: flex; flex-direction: column; gap: 8px; }
.nw-form label > span, .nw-chips legend { font: 500 11.5px/1.4 var(--nw-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--mut); }
.nw-form label > span em { font-style: normal; color: var(--mut); opacity: .7; text-transform: none; }
.nw .nw-form input:not([type=radio]):not([type=checkbox]),
.nw .nw-form textarea {
	width: 100%;
	padding: 10px 0 12px;
	border: 0;
	border-bottom: 1px solid var(--line2);
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	color: var(--fg);
	font: 400 17px/1.5 var(--nw-sans);
	letter-spacing: normal;
	text-transform: none;
	transition: border-color .3s;
}
.nw .nw-form textarea { resize: vertical; min-height: 112px; }
.nw .nw-form input::placeholder, .nw .nw-form textarea::placeholder { color: var(--mut); opacity: .7; }
.nw .nw-form input:focus, .nw .nw-form textarea:focus { outline: 0; border-bottom-color: var(--acc); }
.nw-chips { border: 0; padding: 0; margin: 0; min-width: 0; }
.nw-chips legend { padding: 0; margin-bottom: 14px; }
.nw-chips__list { display: flex; flex-wrap: wrap; gap: 8px; }
.nw-chips input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.nw-chips label { display: inline-flex; flex-direction: row; padding: 10px 18px; border: 1px solid var(--line2); border-radius: 999px; font: 400 14.5px/1.2 var(--nw-sans); color: var(--fg); cursor: pointer; transition: background-color .3s, color .3s, border-color .3s; }
.nw-chips label:hover { border-color: var(--acc); }
.nw-chips input:checked + label { background: var(--nw-gold); border-color: var(--nw-gold); color: var(--nw-navy); }
.nw-chips input:focus-visible + label { outline: 2px solid var(--nw-gold); outline-offset: 3px; }
.nw-form__end { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; }
.nw-form .nw-form__check { flex-direction: row; align-items: flex-start; gap: 12px; font-size: 14.5px; line-height: 1.5; color: var(--tx); cursor: pointer; }
.nw .nw-form .nw-form__check input { flex: 0 0 18px; width: 18px; height: 18px; margin: 2px 0 0; padding: 0; accent-color: var(--nw-gold); }
.nw .nw-form__check a { color: var(--fg); }
.nw-form__hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.nw-form .nw-btn:disabled { opacity: .6; cursor: wait; }
.nw-form__msg { font-size: 15px; min-height: 1.5em; }
.nw-form__msg.is-ok { color: var(--acc); font-family: var(--nw-serif); font-size: 26px; line-height: 1.2; }
.nw-form__msg.is-err { color: #E8A391; }

/* ---------- Cinta de texto ---------- */
.nw-marquee { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.nw-marquee .nw-wrap { max-width: none; padding: 0; }
.nw-marquee__viewport { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.nw-marquee__track { display: inline-flex; align-items: center; white-space: nowrap; animation: nwMarq 40s linear infinite; }
.nw-marquee__track span { font-family: var(--nw-serif); font-style: italic; color: var(--fg); font-size: clamp(36px, 5vw, 80px); line-height: 1.2; }
.nw-marquee__track i { font-style: normal; color: var(--acc); margin: 0 .6em; font-size: clamp(20px, 2.4vw, 36px); }
.nw-marquee--outline .nw-marquee__track span { font-style: normal; color: transparent; -webkit-text-stroke: 1px var(--fg); }
.nw-marquee--caps .nw-marquee__track span { font: 500 14px/2 var(--nw-mono); letter-spacing: .12em; text-transform: uppercase; }
.nw-marquee--caps .nw-marquee__track i { font-size: 14px; }
.nw-marquee:hover .nw-marquee__track { animation-play-state: paused; }

/* ---------- Showreel ---------- */
.nw-reel { --nw-shade: 35; --nw-step: 80vh; height: calc(100vh + (var(--n) - 1) * var(--nw-step)); background: var(--nw-ink); }
.nw-reel__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.elementor-editor-active .nw-reel { height: auto; }
.elementor-editor-active .nw-reel__sticky { position: relative; }
.nw-reel__label { position: absolute; z-index: 3; top: 112px; left: var(--nw-gutter); margin: 0; color: rgba(var(--nw-fg-rgb), .78); }
.nw-reel__layer { position: absolute; inset: 0; clip-path: inset(100% 0 0 0); transition: clip-path 1.4s var(--nw-ease); }
.nw-reel__layer.is-on { clip-path: inset(0 0 0 0); }
.nw-reel__layer video, .nw-reel__layer img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.1); transition: transform 2.6s var(--nw-ease); }
.nw-reel__layer.is-on video, .nw-reel__layer.is-on img { transform: scale(1); }
.nw-reel__shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgb(3 13 24 / .5) 0%, rgb(3 13 24 / calc(var(--nw-shade) / 100 * .5)) 45%, rgb(3 13 24 / calc(var(--nw-shade) / 100 + .35)) 100%); }
.nw-reel__meta { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; padding: 0 var(--nw-gutter) 120px; pointer-events: none; }
.nw-reel__row { width: 100%; max-width: 1800px; display: grid; grid-template-columns: 1fr 3fr 1.6fr 1fr; gap: clamp(12px, 2vw, 28px); align-items: end; }
.nw-reel__cell { display: block; padding-bottom: 16px; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .5); color: var(--nw-paper); font: 400 14px/1.3 var(--nw-sans); overflow: hidden; opacity: 0; transform: translateY(24px); transition: opacity .9s var(--nw-ease), transform .9s var(--nw-ease); }
.nw-reel__count { font: 500 13px/1 var(--nw-mono); }
.nw-reel__title { font-family: var(--nw-serif); font-size: clamp(40px, 5vw, 88px); line-height: .95; letter-spacing: -.015em; }
.nw .nw-reel__title a { color: inherit; text-decoration: none; pointer-events: auto; }
.nw-reel__meta.is-on .nw-reel__cell { opacity: 1; transform: none; }
.nw-reel__meta.is-on .nw-reel__cell:nth-child(2) { transition-delay: .08s; }
.nw-reel__meta.is-on .nw-reel__cell:nth-child(3) { transition-delay: .16s; }
.nw-reel__meta.is-on .nw-reel__cell:nth-child(4) { transition-delay: .24s; }
.nw a.nw-reel__btn { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%) translateY(16px); height: 44px; display: inline-flex; align-items: center; padding: 0 22px; border-radius: 999px; background: var(--nw-paper); color: var(--nw-navy); font: 500 14px/1 var(--nw-sans); text-decoration: none; opacity: 0; pointer-events: none; transition: opacity .6s, transform .6s var(--nw-ease), background-color .3s; }
.nw-reel__meta.is-on a.nw-reel__btn { opacity: 1; transform: translateX(-50%); pointer-events: auto; }
.nw a.nw-reel__btn:hover { background: var(--nw-gold); }
.nw-reel__hint { position: absolute; left: var(--nw-gutter); bottom: 34px; margin: 0; color: rgba(var(--nw-fg-rgb), .6); font: 500 12px/1 var(--nw-mono); letter-spacing: .05em; text-transform: uppercase; }
.nw-reel__progress { position: absolute; right: var(--nw-gutter); bottom: 40px; width: 140px; height: 1px; background: rgba(var(--nw-fg-rgb), .25); }
.nw-reel__progress i { display: block; height: 100%; width: 0; background: var(--nw-gold); transition: width .3s linear; }

/* ==========================================================================
   Cabecera global
   ========================================================================== */
.nwh { position: fixed; top: 0; left: 0; right: 0; z-index: 9990; height: 108px; transition: height .7s var(--nw-ease); font-family: var(--nw-sans); }
.admin-bar .nwh { top: 32px; }
.elementor-editor-active .nwh { position: absolute; }
.nwh.is-compact { height: 72px; }
.nwh-bg {
	position: absolute;
	inset: 0 0 -32px 0;
	pointer-events: none;
	opacity: 0;
	visibility: hidden;
	-webkit-backdrop-filter: blur(24px);
	backdrop-filter: blur(24px);
	background: linear-gradient(to bottom, rgba(5, 21, 37, .96) 0%, rgba(5, 21, 37, .8) 55%, rgba(5, 21, 37, 0) 100%);
	-webkit-mask-image: linear-gradient(to bottom, #000 0%, #000 45%, rgba(0, 0, 0, .4) 78%, transparent 100%);
	mask-image: linear-gradient(to bottom, #000 0%, #000 45%, rgba(0, 0, 0, .4) 78%, transparent 100%);
	transition: opacity 1s var(--nw-ease), visibility 1s;
}
.nwh.is-compact .nwh-bg { opacity: 1; visibility: visible; }
.nwh-inner { position: relative; z-index: 2; height: 100%; max-width: 1800px; margin: 0 auto; padding: 0 var(--nw-gutter); display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; }
.nwh-left { grid-column: 1; justify-self: start; }
.nwh-logo { grid-column: 2; position: relative; display: flex; align-items: center; justify-content: center; height: 100%; text-decoration: none; }
.nwh-right { grid-column: 3; justify-self: end; display: flex; align-items: center; gap: 32px; }
.nwh-menu { list-style: none; margin: 0; padding: 0; display: flex; gap: 32px; }
.nwh .nwh-menu a { position: relative; font: 500 13px/1 var(--nw-cond); letter-spacing: .1em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .8); text-decoration: none; transition: color .3s; }
.nwh .nwh-menu a:hover { color: var(--nw-paper); }
.nwh .nwh-menu .current-menu-item > a,
.nwh .nwh-menu .current-page-ancestor > a { color: var(--nw-paper); }
.nwh .nwh-menu .current-menu-item > a::after,
.nwh .nwh-menu .current-page-ancestor > a::after { content: ''; position: absolute; left: 50%; bottom: -10px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--nw-gold); }
.nwh a.nwh-cta { display: inline-flex; align-items: center; height: 42px; padding: 0 20px; border: 1px solid rgba(var(--nw-fg-rgb), .34); border-radius: 999px; font: 500 14px/1 var(--nw-sans); color: var(--nw-paper); text-decoration: none; transition: background-color .35s, color .35s, border-color .35s; }
.nwh a.nwh-cta:hover, .nwh.is-compact a.nwh-cta { background: var(--nw-gold); border-color: var(--nw-gold); color: var(--nw-navy); }
.nwh-logo img { display: block; width: auto; }
.nwh-full { height: clamp(30px, 3.4vw, 50px); transition: opacity .7s var(--nw-ease), transform .7s var(--nw-ease); }
.nwh-iso { position: absolute; left: 50%; top: 50%; height: 34px; opacity: 0; transform: translate(-50%, -50%) translateY(14px) scale(1.1); pointer-events: none; transition: opacity .7s var(--nw-ease), transform .7s var(--nw-ease); }
.nwh.is-compact .nwh-full { opacity: 0; transform: translateY(-14px) scale(.9); pointer-events: none; }
.nwh.is-compact .nwh-iso { opacity: 1; transform: translate(-50%, -50%); }
.nwh-name { font-family: var(--nw-serif); font-size: 28px; color: var(--nw-paper); }
.nwh-logo .nwh-dark { display: none; }
.nwh.on-light:not(.is-compact) .nwh-logo .nwh-light { display: none; }
.nwh.on-light:not(.is-compact) .nwh-logo .nwh-dark { display: block; }
.nwh.on-light:not(.is-compact) .nwh-menu a { color: rgba(5, 21, 37, .75); }
.nwh.on-light:not(.is-compact) a.nwh-cta { color: var(--nw-navy); border-color: rgba(5, 21, 37, .3); }
.nwh.on-light:not(.is-compact) .nwh-burger span { background: var(--nw-navy); }
.nwh .nwh-burger,
.nwh .nwh-burger:hover,
.nwh .nwh-burger:focus { display: none; grid-column: 3; justify-self: end; flex-direction: column; align-items: flex-end; gap: 7px; width: 44px; height: 44px; padding: 0 4px; justify-content: center; background: none; border: 0; border-radius: 0; box-shadow: none; cursor: pointer; }
.nwh-burger span { display: block; width: 26px; height: 1.5px; background: var(--nw-paper); transition: transform .4s var(--nw-ease), width .4s var(--nw-ease); }
.nwh-burger span:nth-child(2) { width: 18px; }
.nwh.is-open .nwh-burger span:nth-child(1) { transform: translateY(4.25px) rotate(45deg); }
.nwh.is-open .nwh-burger span:nth-child(2) { width: 26px; transform: translateY(-4.25px) rotate(-45deg); }
.nwh .nwh-menu a > .nwh-roll { position: relative; display: inline-block; overflow: hidden; vertical-align: top; line-height: 1.2; }
.nwh-roll > span { display: inline-block; transition: transform .5s var(--nw-ease); }
.nwh-roll > span::after { content: attr(data-t); position: absolute; left: 0; top: 100%; }
.nwh .nwh-menu a:hover .nwh-roll > span { transform: translateY(-100%); }

.nwh-mobile { position: fixed; inset: 0; z-index: 9989; display: flex; flex-direction: column; justify-content: space-between; gap: 40px; padding: 120px var(--nw-gutter) 40px; background: var(--nw-navy); overflow-y: auto; opacity: 0; visibility: hidden; clip-path: inset(0 0 100% 0); transition: clip-path .7s var(--nw-ease), opacity .4s, visibility .7s; }
.nwh-mobile.is-open { opacity: 1; visibility: visible; clip-path: inset(0 0 0 0); }
.nwh-mnav { display: flex; flex-direction: column; border-top: 1px solid rgba(var(--nw-fg-rgb), .14); }
.nwh-mobile a.nwh-mlink { display: flex; align-items: baseline; gap: 16px; padding: 18px 0; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .14); font-family: var(--nw-serif); font-size: clamp(40px, 9vw, 64px); line-height: 1; color: var(--nw-paper); text-decoration: none; }
.nwh-mobile a.nwh-mlink:hover, .nwh-mobile a.nwh-mlink.is-current { color: var(--nw-gold); }
.nwh-mnum { font: 500 12px/1 var(--nw-mono); color: var(--nw-gold); }
.nwh-mfoot { display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.nwh-mcontact { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.nwh-mobile .nwh-mcontact a { font: 500 13px/1.4 var(--nw-mono); letter-spacing: .04em; color: rgba(var(--nw-fg-rgb), .75); text-decoration: none; }

/* Páginas que no usan Elementor (política de privacidad, etc.) */
body.nw-has-header:not(.elementor-page) .site-main { max-width: 820px; margin: 0 auto; padding: 170px 24px 120px; color: rgba(var(--nw-fg-rgb), .78); font: 400 17px/1.7 var(--nw-sans); }
body.nw-has-header:not(.elementor-page) .site-main h1,
body.nw-has-header:not(.elementor-page) .site-main h2 { font-family: var(--nw-serif); font-weight: 400; color: var(--nw-paper); line-height: 1.05; }
body.nw-has-header:not(.elementor-page) .site-main h1 { font-size: clamp(48px, 7vw, 96px); margin-bottom: 40px; }
body.nw-has-header:not(.elementor-page) .site-main h2 { font-size: 32px; margin: 48px 0 12px; }
body.nw-has-header:not(.elementor-page) .site-main a { color: var(--nw-gold); }

/* ==========================================================================
   Pie global
   ========================================================================== */
.nwf { background: var(--nw-ink); color: rgba(var(--nw-fg-rgb), .6); font: 400 15px/1.6 var(--nw-sans); }
.nwf-top { max-width: 1600px; margin: 0 auto; padding: clamp(120px, 14vw, 200px) var(--nw-gutter) clamp(80px, 9vw, 140px); }
.nwf-title { font: 400 clamp(22px, 2.1vw, 32px)/1.25 var(--nw-sans); letter-spacing: -.02em; color: rgba(var(--nw-fg-rgb), .8); max-width: 900px; }
.nwf-title em { font-family: var(--nw-serif); font-style: normal; font-size: 1.14em; letter-spacing: 0; color: var(--nw-gold); }
.nwf a.nwf-mail { display: inline-block; margin-top: 18px; font: 400 clamp(40px, 5.6vw, 96px)/1.04 var(--nw-sans); letter-spacing: -.03em; color: var(--nw-paper); text-decoration: none; background: linear-gradient(var(--nw-gold), var(--nw-gold)) left 100% / 0 2px no-repeat; transition: color .4s, background-size .8s var(--nw-ease); word-break: break-word; }
.nwf a.nwf-mail:hover { color: var(--nw-gold); background-size: 100% 2px; }
.nwf-inner { max-width: var(--nw-wrap); margin: 0 auto; padding: 64px var(--nw-gutter) 56px; display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 48px; border-top: 1px solid rgba(var(--nw-fg-rgb), .08); }
.nwf-brand img { display: block; height: 34px; width: auto; margin-bottom: 24px; }
.nwf-brand p { max-width: 360px; margin: 0; }
.nwf-h { font: 500 11.5px/1.4 var(--nw-mono); letter-spacing: .06em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .45); margin: 0 0 18px; }
.nwf-col { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.nwf .nwf-inner a, .nwf .nwf-menu a { display: inline-flex; align-items: center; gap: 10px; color: rgba(var(--nw-fg-rgb), .85); text-decoration: none; transition: color .3s; }
.nwf .nwf-inner a:hover, .nwf .nwf-menu a:hover { color: var(--nw-gold); }
.nwf-menu { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.nwf-bottom { max-width: var(--nw-wrap); margin: 0 auto; padding: 24px var(--nw-gutter) 32px; border-top: 1px solid rgba(var(--nw-fg-rgb), .08); display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; font: 500 12.5px/1.4 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .45); }
.nwf-legal { display: flex; flex-wrap: wrap; gap: 24px; }
.nwf .nwf-legal a { color: rgba(var(--nw-fg-rgb), .6); text-decoration: none; }
.nwf .nwf-legal a:hover { color: var(--nw-gold); }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1200px) {
	.nwh-menu { gap: 24px; }
	.nwh-right { gap: 24px; }
}

@media (max-width: 1024px) {
	.nw-p-l { padding: 120px 0; }
	.nw-p-xl { padding: 150px 0; }
	.nw-cols-3, .nw-cols-4 { grid-template-columns: repeat(2, 1fr); }
	.nw-stats .nw-cols-3 { grid-template-columns: repeat(3, 1fr); }
	.nw-head--split { grid-template-columns: 1fr; gap: 24px; }
	.nw-head--left .nw-head__a { grid-template-columns: 1fr; }
	.nw-head--left .nw-eyebrow { margin: 0 0 22px; }
	.nw-head--left .nw-head__b, .nw-faq__list { margin-left: 0; }
	.nw .nw-svc__row { grid-template-columns: 40px 1fr 44px; }
	.nw-svc__d { grid-column: 2 / 3; }
	.nw-svc__go { grid-row: 1; grid-column: 3; width: 44px; height: 44px; }
	.nw-svc__float { display: none; }
	.nw-tiles--auto .nw-tiles__grid, .nw-tiles--g3 .nw-tiles__grid { grid-template-columns: repeat(2, 1fr); }
	.nw-tiles--auto .nw-tile, .nw-tiles--auto .nw-tile:nth-child(5n+4), .nw-tiles--auto .nw-tile:nth-child(5n+5) { grid-column: span 1; }
	.nw-tiles--auto .nw-tile:last-child:nth-child(odd), .nw-tiles--g3 .nw-tile:last-child:nth-child(odd) { grid-column: span 2; }
	.nw-mosaic__row { grid-template-columns: 1fr 1fr; }
	.nw-mosaic__row .nw-mosaic__text { grid-column: span 2; order: -1; }
	.nw-meta .nw-wrap { grid-template-columns: 1fr; row-gap: 48px; }
	.nwh-side { display: none; }
	.nwh .nwh-burger, .nwh .nwh-burger:hover, .nwh .nwh-burger:focus, .nwh .nwh-burger:active { display: flex; }
	.nwh { height: 88px; }
	.nwh.is-compact { height: 64px; }
	.nwh-full { height: 34px; }
	.nwh-iso { height: 30px; }
	.nwf-inner { grid-template-columns: 1fr 1fr; }
	.nwf-brand { grid-column: span 2; }
}

@media (max-width: 782px) {
	.admin-bar .nwh { top: 46px; }
}

@media (max-width: 767px) {
	.nw { font-size: 16px; }
	.nw-p-s { padding: 48px 0; }
	.nw-p-m { padding: 76px 0; }
	.nw-p-l { padding: 96px 0; }
	.nw-p-xl { padding: 120px 0; }
	.nw-cols-2, .nw-cols-3, .nw-cols-4, .nw-stats .nw-cols-3 { grid-template-columns: 1fr; }
	.nw-btns { flex-direction: column; align-items: stretch; }
	:is(.nw, .nwh-mobile, .nwf) .nw-btn { width: 100%; }
	.nwh-mfoot .nw-btn { width: auto; }
	.nw-hero__content { padding-top: 130px; }
	.nw-hero .nw-display { margin-bottom: 32px; }
	.nw-hero__foot { grid-template-columns: 1fr; gap: 28px; }
	.nw-hero__bar { margin-top: 40px; flex-direction: column; align-items: flex-start; }
	.nw-hero__proof { flex-direction: column; gap: 10px; }
	.nw-hero--framed { padding: 80px 8px 8px; }
	.nw-hero--framed .nw-hero__frame { min-height: calc(var(--nw-h) - 88px); }
	.nw-intro--framed .nw-wrap { padding: 80px 8px 0; }
	.nw-intro--split .nw-wrap { padding-top: 128px; }
	.nw-intro--type .nw-wrap { padding-top: 150px; }
	.nw-intro--type .nw-intro__content .nw-statement { margin-left: 0; }
	.nw-intro__grid, .nw-split .nw-wrap, .nw-split--right .nw-wrap, .nw-contact .nw-wrap, .nw-mosaic__top, .nw-mosaic--flip .nw-mosaic__top, .nw-cases--rows .nw-case, .nw-cases--rows .nw-case:nth-child(even) { grid-template-columns: 1fr; row-gap: 40px; }
	.nw-intro--flip .nw-intro__img, .nw-split--right .nw-split__img, .nw-cases--rows .nw-case:nth-child(even) .nw-case__img { order: 0; }
	.nw .nw-svc__row { grid-template-columns: 1fr 44px; gap: 16px; padding: 28px 0; }
	.nw-svc__n { display: none; }
	.nw-svc__d { grid-column: 1 / -1; }
	.nw-svc__go { grid-column: 2; }
	.nw-tiles--auto .nw-tiles__grid, .nw-tiles--g3 .nw-tiles__grid, .nw-tiles--g2 .nw-tiles__grid { grid-template-columns: 1fr; }
	.nw-tiles--auto .nw-tile:last-child:nth-child(odd), .nw-tiles--g3 .nw-tile:last-child:nth-child(odd) { grid-column: span 1; }
	.nw .nw-tile { min-height: 360px !important; }
	.nw-step__n { margin-bottom: 24px; }
	.nw-meta__list { grid-template-columns: 1fr; }
	.nw a.nw-next__link { grid-template-columns: 1fr; }
	.nw-next__go { width: 64px; height: 64px; }
	.nw-gallery--row3 .nw-gallery__grid { grid-template-columns: 1fr 1fr; }
	.nw-gallery--portrait2 .nw-gallery__grid { gap: 10px; }
	.nw-gallery--stagger .nw-gallery__grid { grid-template-columns: 1fr 1fr; gap: 10px; }
	.nw-gallery--stagger .nw-gallery__item:nth-child(n) { margin-top: 0; }
	.nw-gallery--stagger .nw-gallery__item:nth-child(even) { margin-top: 40px; }
	.nw-mosaic__big, .nw-mosaic__row { grid-template-columns: 1fr; }
	.nw-mosaic__row .nw-mosaic__text { grid-column: auto; }
	.nw-card__body { padding: 28px 24px 32px; }
	.nw-faq__a { padding-right: 0; }
	.nw-form__row { grid-template-columns: 1fr; }
	.nw-form__end { flex-direction: column; align-items: stretch; }
	.nw-cta__frame { min-height: 560px; padding: 104px 20px; }
	.nw-cta--framed { padding: 0 8px 8px; }
	.nw-reel__row { grid-template-columns: 1fr; row-gap: 10px; }
	.nw-reel__cell { padding-bottom: 10px; }
	.nw-reel__count { border-bottom: 0; }
	.nw-reel__meta { padding-bottom: 104px; }
	.nw-reel__progress { display: none; }
	.nwf-top { padding: 96px var(--nw-gutter) 72px; }
	.nwf-reach { flex-direction: column; align-items: flex-start; }
	.nwf-inner { grid-template-columns: 1fr; gap: 36px; }
	.nwf-brand { grid-column: auto; }
	.nwf-bottom { flex-direction: column; }
}

/* «Reducir movimiento» (solo si se activa en Ajustes → Notos Studio) */
html.nx-reduce .nw-anim .nw-r, html.nx-reduce .nw-in { opacity: 1 !important; transform: none !important; animation: none !important; transition: none !important; }
html.nx-reduce .nw-hero__poster, html.nx-reduce .nw-marquee__track, html.nx-reduce .nw-scroll i { animation: none !important; }
html.nx-reduce .nw-reel__layer, html.nx-reduce .nw-reel__layer img, html.nx-reduce .nw-reel__layer video { transition: none !important; }

/* ==========================================================================
   v3 · Estudio visual — la imagen manda
   ========================================================================== */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

.nx-cap { font: 500 12.5px/1.4 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .62); }
/* Grotesca neutra; lo destacado solo cambia a dorado. La serif cursiva queda para la frase del showreel. */
.nw :is(h1, h2, h3, p, li) em { font-family: var(--nw-serif); font-style: normal; font-weight: 400; font-size: 1.14em; line-height: 1; letter-spacing: 0; color: var(--nw-gold); }
.nw .nx-reel__line em { font-family: var(--nw-serif); font-style: italic; font-weight: 400; font-size: 1.1em; line-height: 1; letter-spacing: 0; }
.nw-s-light .nx-cap, .nw-s-sand .nx-cap { color: rgba(5, 21, 37, .6); }
.nx-cover { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
video.nx-lazyvideo { opacity: 0; transition: opacity 1.4s var(--nw-ease); }
video.nx-lazyvideo.is-playing { opacity: 1; }

@keyframes nxRise { from { opacity: 0; transform: translateY(44px); } to { opacity: 1; transform: none; } }
.nx-lines, .nx-in { animation: nxRise 1.6s var(--nw-ease) .35s both; }
.nx-clip { clip-path: inset(0 0 100% 0); transition: clip-path 1.6s var(--nw-ease); }
.nx-clip.is-in { clip-path: inset(0 0 0 0); }
.elementor-editor-active .nx-clip { clip-path: none; }

/* Showreel */
.nx-reel { position: relative; height: 100vh; min-height: 560px; overflow: hidden; background: var(--nw-ink); }
.nx-reel__media { position: absolute; inset: 0; }
.nx-reel__media img.nx-cover { animation: nwZoom 30s ease-in-out infinite alternate; }
.nx-reel__shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 24, .4) 0%, rgba(3, 13, 24, 0) 26%, rgba(3, 13, 24, 0) 52%, rgba(3, 13, 24, .78) 100%); }
.nx-reel__line { position: absolute; z-index: 2; left: var(--nw-gutter); bottom: clamp(88px, 11vh, 120px); max-width: min(620px, 84vw); margin: 0; font: 400 clamp(26px, 2.3vw, 42px)/1.12 var(--nw-sans); letter-spacing: -.015em; will-change: transform, opacity, filter; color: var(--nw-paper); pointer-events: none; text-shadow: 0 4px 30px rgba(0, 0, 0, .4); }
.nx-reel__foot { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 26px var(--nw-gutter); }
.nw .nx-reel__play,
.nw .nx-reel__play:hover,
.nw .nx-reel__play:focus { display: inline-flex; align-items: center; gap: 14px; padding: 6px 0; background: none; border: 0; border-radius: 0; box-shadow: none; color: var(--nw-paper); cursor: pointer; font: 500 12.5px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; }
.nx-reel__dot { position: relative; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(var(--nw-fg-rgb), .6); transition: background-color .4s, border-color .4s; }
.nx-reel__dot::after { content: ''; position: absolute; left: 50%; top: 50%; margin: -5px 0 0 -3px; border-style: solid; border-width: 5px 0 5px 8px; border-color: transparent transparent transparent var(--nw-paper); }
.nx-reel__play:hover .nx-reel__dot { background: var(--nw-gold); border-color: var(--nw-gold); }
.nx-reel__scroll { position: relative; padding-right: 22px; }
.nx-reel__scroll::after { content: ''; position: absolute; right: 0; top: 50%; width: 12px; height: 1px; background: var(--nw-gold); animation: nxScroll 2s ease-in-out infinite; }
@keyframes nxScroll { 0%, 100% { transform: translateX(0); opacity: 1; } 50% { transform: translateX(6px); opacity: .4; } }

/* Proyectos apilados */
.nx-stack { position: relative; background: var(--nw-ink); }
.nw a.nx-stack__item, .nx-stack__item { position: sticky; top: 0; display: block; height: 100vh; min-height: 520px; overflow: hidden; color: var(--nw-paper); text-decoration: none; transform-origin: 50% 20%; will-change: transform; }
.nx-stack__media { position: absolute; inset: 0; overflow: hidden; }
.nx-stack__media .nx-cover { transform: scale(1.06); transition: transform 2s var(--nw-ease); }
.nx-stack__item:hover .nx-stack__media .nx-cover { transform: scale(1.01); }
.nx-stack__item::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 24, .4) 0%, rgba(3, 13, 24, .22) 30%, rgba(3, 13, 24, .3) 60%, rgba(3, 13, 24, .66) 100%); }
.nx-stack__shadow { position: absolute; inset: 0; z-index: 3; background: var(--nw-ink); opacity: 0; pointer-events: none; }
.nx-stack__row { position: absolute; z-index: 2; text-shadow: 0 1px 22px rgba(0, 0, 0, .35); left: var(--nw-gutter); right: var(--nw-gutter); top: 44%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr); column-gap: 32px; align-items: end; }
.nx-stack__col { display: block; min-height: 1em; margin: 0; padding-bottom: 18px; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .7); color: var(--nw-paper); }
.nx-stack__n, .nx-stack__title { font: 400 clamp(34px, 3.3vw, 60px)/.95 var(--nw-serif); letter-spacing: -.01em; }
.nx-stack__kind, .nx-stack__meta { font: 400 15px/1.3 var(--nw-sans); padding-bottom: 20px; }
.nx-stack__title { transition: color .6s; }
.nx-stack__item:hover .nx-stack__title { color: var(--nw-gold); }
.nx-stack__btn { position: absolute; z-index: 2; left: 50%; bottom: clamp(32px, 6vh, 64px); transform: translateX(-50%); padding: 12px 20px; border-radius: 3px; background: var(--nw-paper); color: var(--nw-navy); font: 400 14px/1 var(--nw-sans); white-space: nowrap; transition: background-color .4s; }
.nx-stack__item:hover .nx-stack__btn { background: var(--nw-gold); }

/* Texto: frase que se enfoca + ficha pequeña */
.nx-words .nw-wrap { max-width: 1180px; }
.nx-words__text { max-width: 24em; margin: 0; font: 400 clamp(26px, 2.4vw, 44px)/1.12 var(--nw-sans); letter-spacing: -.015em; color: var(--nw-paper); }
.nx-words--l .nx-words__text { max-width: 19em; font-size: clamp(28px, 3.5vw, 56px); line-height: 1.08; letter-spacing: -.03em; }
.nx-words [data-focus] { will-change: filter, opacity; }
.nx-words__foot { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, .8fr); column-gap: clamp(24px, 4vw, 64px); align-items: start; margin-top: clamp(56px, 7vw, 112px); }
.nx-words__foot:not(:has(.nx-words__img)) { grid-template-columns: minmax(0, 1fr) minmax(0, 2.3fr); }
.nx-words__body { max-width: 460px; }
.nx-words__small { margin: 0; font: 400 14.5px/1.6 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .78); }
.nx-words__sign { margin: 20px 0 0; font: 400 15px/1.3 var(--nw-sans); color: var(--nw-gold); }
.nx-words__body .nx-btn { margin-top: 32px; }
.nx-words__img { overflow: hidden; justify-self: end; width: 100%; max-width: 220px; }
.nx-words__img img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.nw-s-light .nx-words__text, .nw-s-sand .nx-words__text { color: var(--nw-navy); }
.nw-s-light .nx-words__small, .nw-s-sand .nx-words__small { color: rgba(5, 21, 37, .72); }
.nw:is(.nw-s-light, .nw-s-sand) .nx-btn { color: var(--nw-navy); border-bottom-color: rgba(5, 21, 37, .4); }

/* Imagen que se abre */
.nx-zoom { position: relative; height: 240vh; background: var(--nw-ink); --i: 1; }
.elementor-editor-active .nx-zoom { height: 100vh; --i: 0; }
.nx-zoom__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; align-items: center; justify-content: center; }
.nx-zoom__media { position: absolute; inset: 0; overflow: hidden; clip-path: inset(calc(var(--i) * 24vh) calc(var(--i) * 32vw)); }
.nx-zoom__media .nx-cover { transform: scale(calc(1 + var(--i) * .3)); }
.nx-zoom__media::after { content: ''; position: absolute; inset: 0; background: rgba(3, 13, 24, .45); opacity: calc(1 - var(--i) * 2); }
.nx-zoom__line { position: relative; z-index: 2; max-width: 760px; margin: 0; padding: 0 24px; text-align: center; font: italic 400 clamp(26px, 2.7vw, 44px)/1.2 var(--nw-serif); color: var(--nw-paper); opacity: calc(1 - var(--i) * 4); transform: translateY(calc(var(--i) * 40px)); }
.nx-zoom__line em { font-style: italic; color: var(--nw-gold); }

/* Galería horizontal */
.nx-hs { position: relative; background: var(--bg); }
.nx-hs__sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; display: flex; align-items: center; }
.nx-hs__track { display: flex; align-items: center; gap: clamp(24px, 3vw, 56px); padding: 0 var(--nw-gutter); will-change: transform; }
.nx-hs__intro { flex: 0 0 min(380px, 76vw); margin: 0 3vw 0 0; font: 400 clamp(20px, 1.6vw, 26px)/1.35 var(--nw-sans); letter-spacing: -.015em; color: var(--fg); }
.nw a.nx-hs__item, .nx-hs__item { flex: 0 0 auto; margin: 0; display: flex; flex-direction: column; gap: 14px; color: inherit; text-decoration: none; }
.nx-hs__frame { position: relative; display: block; overflow: hidden; height: 62vh; aspect-ratio: 4 / 5; }
.nx-hs__item--l .nx-hs__frame { height: 78vh; }
.nx-hs__item--s .nx-hs__frame { height: 42vh; aspect-ratio: 3 / 4; }
.nx-hs__item--w .nx-hs__frame { height: 56vh; aspect-ratio: 3 / 2; }
.nx-hs__item:nth-child(3n+2) { margin-top: 14vh; }
.nx-hs__item:nth-child(3n+3) { margin-bottom: 12vh; }
.nx-hs__frame .nx-cover { transform: scale(1.08); transition: transform 1.8s var(--nw-ease); }
.nx-hs__item:hover .nx-hs__frame .nx-cover { transform: scale(1.02); }
.elementor-editor-active .nx-hs__sticky { position: relative; overflow-x: auto; }

/* Cinta de imágenes */
.nx-strip .nw-wrap { max-width: none; padding: 0; }
.nx-strip__viewport { overflow: hidden; }
.nx-strip__track { display: inline-flex; gap: 14px; animation: nwMarq 70s linear infinite; }
.nx-strip--rev .nx-strip__track { animation-direction: reverse; }
.nx-strip__track img { display: block; height: var(--h, 38vh); width: auto; max-width: none; object-fit: cover; }
.nx-strip:hover .nx-strip__track { animation-play-state: paused; }

/* Índice de proyectos */
.nx-index__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(var(--nw-fg-rgb), .14); }
.nw a.nx-index__row, .nx-index__row { display: grid; grid-template-columns: 1fr 240px 80px; align-items: baseline; gap: 24px; padding: 28px 0; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .14); color: var(--nw-paper); text-decoration: none; transition: opacity .5s; }
.nx-index__title { font: 400 clamp(24px, 2.6vw, 42px)/1.15 var(--nw-sans); letter-spacing: -.02em; transition: transform .8s var(--nw-ease), color .5s; }
.nx-index__year { text-align: right; }
.nx-index__list:hover .nx-index__row { opacity: .3; }
.nx-index__list .nx-index__row:hover { opacity: 1; }
.nx-index__row:hover .nx-index__title { color: var(--nw-gold); transform: translateX(10px); }
.nx-index__thumb { display: none; }
.nx-float { position: fixed; left: 0; top: 0; z-index: 70; width: min(340px, 26vw); aspect-ratio: 4 / 5; overflow: hidden; pointer-events: none; opacity: 0; transform: translate3d(var(--x, 0), var(--y, 0), 0) translate(-50%, -50%) scale(.8); transition: opacity .35s, transform .6s var(--nw-ease); }
.nx-float.is-on { opacity: 1; transform: translate3d(var(--x, 0), var(--y, 0), 0) translate(-50%, -50%) scale(1); }
.nx-float img { width: 100%; height: 100%; object-fit: cover; }

/* Portada de proyecto */
.nx-cover-sec { position: relative; height: 100vh; min-height: 560px; overflow: hidden; background: var(--nw-ink); }
.nx-cover-sec--tall { height: 80vh; }
.nx-cover-sec__media { position: absolute; left: 0; right: 0; top: -8%; bottom: -8%; will-change: transform; }
.nx-cover-sec__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(3, 13, 24, .45) 0%, rgba(3, 13, 24, 0) 30%, rgba(3, 13, 24, .1) 55%, rgba(3, 13, 24, .8) 100%); }
.nx-cover-sec__text { position: absolute; z-index: 2; left: var(--nw-gutter); right: var(--nw-gutter); bottom: clamp(40px, 8vh, 80px); display: flex; flex-direction: column; gap: 18px; }
.nx-cover-sec__title { margin: 0; font: 400 clamp(30px, 3.4vw, 54px)/1.08 var(--nw-sans); letter-spacing: -.025em; color: var(--nw-paper); }

/* Vídeo destacado */
.nx-video__box { position: relative; margin: 0; overflow: hidden; background: #000; cursor: pointer; }
.nx-video__box--16-9 { aspect-ratio: 16 / 9; }
.nx-video__box--21-9 { aspect-ratio: 21 / 9; }
.nx-video__box--4-5 { aspect-ratio: 4 / 5; max-height: 90vh; margin: 0 auto; }
.nx-video__btn { position: absolute; left: 50%; top: 50%; z-index: 2; width: 104px; height: 104px; margin: -52px 0 0 -52px; border-radius: 50%; border: 1px solid rgba(var(--nw-fg-rgb), .7); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); transition: transform .6s var(--nw-ease), background-color .4s; }
.nx-video__btn::after { content: ''; position: absolute; left: 50%; top: 50%; margin: -9px 0 0 -5px; border-style: solid; border-width: 9px 0 9px 15px; border-color: transparent transparent transparent var(--nw-paper); }
.nx-video__box:hover .nx-video__btn { transform: scale(1.08); background: rgba(197, 160, 101, .85); }
.nx-video__cap { margin-top: 16px; }

/* Contacto */
.nx-contact .nw-wrap { display: grid; grid-template-columns: 1.1fr 1fr; column-gap: clamp(40px, 8vw, 140px); row-gap: 56px; align-items: end; }
.nx-contact__title { margin: 0 0 24px; font: 400 clamp(36px, 4.4vw, 68px)/1.02 var(--nw-sans); letter-spacing: -.03em; color: var(--nw-paper); }
.nx-contact__text { max-width: 520px; margin: 0 0 36px; font: 300 clamp(18px, 1.5vw, 22px)/1.55 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .8); }
.nw a.nx-contact__mail { display: inline-block; margin-bottom: 18px; font: 400 clamp(26px, 2.6vw, 42px)/1.2 var(--nw-sans); letter-spacing: -.02em; color: var(--nw-paper); text-decoration: none; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .3); transition: color .4s, border-color .4s; }
.nw a.nx-contact__mail:hover { color: var(--nw-gold); border-color: var(--nw-gold); }
.nx-contact .nx-cap a { color: inherit; }
.nx-contact__img img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.nx-form { display: flex; flex-direction: column; gap: 26px; grid-column: 1 / -1; max-width: 760px; }
.nx-form label > span { font: 500 12.5px/1.4 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .6); }
.nx-form label { display: flex; flex-direction: column; gap: 10px; }
.nw .nx-form input:not([type=checkbox]), .nw .nx-form textarea { width: 100%; padding: 10px 0 12px; border: 0; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .3); border-radius: 0; background: transparent; box-shadow: none; color: var(--nw-paper); font: 300 20px/1.5 var(--nw-sans); }
.nw .nx-form input:focus, .nw .nx-form textarea:focus { outline: 0; border-bottom-color: var(--nw-gold); }
.nw .nx-form textarea { resize: vertical; min-height: 110px; }
.nx-form__end { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 20px; }
.nx-form .nx-form__check { flex-direction: row; align-items: flex-start; gap: 12px; font-size: 14.5px; color: rgba(var(--nw-fg-rgb), .75); cursor: pointer; }
.nw .nx-form .nx-form__check input { width: 18px; height: 18px; flex: 0 0 18px; margin: 2px 0 0; accent-color: var(--nw-gold); }
.nw .nx-form__check a { color: var(--nw-paper); }
.nw .nx-btn,
.nw .nx-btn:hover,
.nw .nx-btn:focus { display: inline-flex; align-items: center; height: auto; padding: 0 0 8px; border: 0; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .5); border-radius: 0; background: none; box-shadow: none; color: var(--nw-paper); font: 500 13px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; transition: color .4s, border-color .4s; }
.nw .nx-btn:hover { color: var(--nw-gold); border-bottom-color: var(--nw-gold); }
.nx-form .nw-form__msg.is-ok { color: var(--nw-gold); font: 400 24px/1.3 var(--nw-sans); letter-spacing: -.01em; }

/* Siguiente proyecto (a sangre) */
.nw-next { padding: 0; background: var(--nw-ink); }
.nw-next .nw-wrap { max-width: none; padding: 0; }
.nw-next__top { position: absolute; z-index: 3; left: var(--nw-gutter); right: var(--nw-gutter); top: 32px; margin: 0; }
.nw-next { position: relative; }
.nw-next .nw-eyebrow { color: rgba(var(--nw-fg-rgb), .8); font: 500 12.5px/1.5 var(--nw-cond); letter-spacing: .08em; }
.nw-next .nw-eyebrow::before { display: none; }
.nw a.nw-next__link { position: relative; display: block; height: 90vh; min-height: 480px; overflow: hidden; }
.nw-next__img { position: absolute; inset: 0; aspect-ratio: auto; filter: brightness(.55); transition: filter 1s var(--nw-ease), transform 2s var(--nw-ease); }
.nw-next__link:hover .nw-next__img { filter: brightness(.85); transform: scale(1.03); }
.nw-next__text { position: absolute; z-index: 2; left: var(--nw-gutter); bottom: 56px; }
.nw-next__title { font: 400 clamp(30px, 3.4vw, 54px)/1.08 var(--nw-sans); letter-spacing: -.025em; color: var(--nw-paper); }
.nw-next__meta { font: 500 12.5px/1.5 var(--nw-cond); letter-spacing: .08em; color: rgba(var(--nw-fg-rgb), .75); }
.nw-next__go { position: absolute; z-index: 2; right: var(--nw-gutter); bottom: 56px; border-color: rgba(var(--nw-fg-rgb), .5); color: var(--nw-paper); }

/* Reproductor a pantalla completa */
.nx-modal { position: fixed; inset: 0; z-index: 10050; display: flex; align-items: center; justify-content: center; background: rgba(3, 13, 24, .97); opacity: 0; visibility: hidden; transition: opacity .6s var(--nw-ease), visibility .6s; }
.nx-modal.is-open { opacity: 1; visibility: visible; }
.nx-modal video { width: min(92vw, 158vh); max-height: 86vh; background: #000; }
.nx-modal__close,
.nx-modal__close:hover,
.nx-modal__close:focus { position: absolute; top: 24px; right: var(--nw-gutter); padding: 8px 0; background: none; border: 0; color: var(--nw-paper); cursor: pointer; font: 500 12.5px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; }

/* Cursor con etiqueta (solo ratón) */
.nx-cursor { position: fixed; left: 0; top: 0; z-index: 10060; pointer-events: none; transform: translate3d(var(--x, -200px), var(--y, -200px), 0); }
.nx-cursor__label { position: absolute; left: 18px; top: 14px; white-space: nowrap; color: var(--nw-paper); font: 500 12px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; text-shadow: 0 1px 12px rgba(0, 0, 0, .5); opacity: 0; transform: translateX(-6px); transition: opacity .4s, transform .5s var(--nw-ease); }
.nx-cursor.has-label .nx-cursor__label { opacity: 1; transform: none; }

/* Transición entre páginas */
.nx-curtain { position: fixed; inset: 0; z-index: 10080; background: var(--nw-navy); pointer-events: none; opacity: 1; transition: opacity .7s ease; }
.nx-curtain.is-gone { opacity: 0; }
.nx-curtain.is-leaving { opacity: 1; transition-duration: .45s; }
.nx-curtain.is-before { opacity: 0; transition: none; }

/* Texto sobre foto a pantalla completa */
.nx-words--photo { position: relative; min-height: 100vh; display: flex; align-items: center; overflow: hidden; background: var(--nw-ink); }
.nx-words--photo .nw-wrap { position: static; width: 100%; }
.nx-words__bg { position: absolute; left: 0; right: 0; top: -10%; bottom: -10%; will-change: transform; }
.nx-words__bg .nx-cover { transform: scale(1.06); }
.nx-cover.nx-pos-top { object-position: 50% 18%; }
.nx-cover.nx-pos-bottom { object-position: 50% 85%; }
.nx-words__veil { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 24, .55) 0%, rgba(3, 13, 24, .35) 40%, rgba(3, 13, 24, .45) 70%, rgba(3, 13, 24, .82) 100%); }
.nx-words--photo :is(.nx-words__text, .nx-words__foot) { position: relative; z-index: 2; }
.nx-words--photo .nx-words__text { text-shadow: 0 2px 30px rgba(0, 0, 0, .25); }
.nx-words--photo .nx-words__foot { grid-template-columns: minmax(0, 1fr) minmax(0, 2.3fr); }
.nx-words--photo .nx-words__small { color: rgba(var(--nw-fg-rgb), .88); }
.nx-words--right .nx-words__text { max-width: min(14em, 40vw); margin-left: auto; }
.nx-words--right .nx-words__foot { max-width: min(600px, 40vw); margin-left: auto; grid-template-columns: 1fr; row-gap: 14px; }
.nx-words--right .nx-words__veil { background: linear-gradient(90deg, rgba(3, 13, 24, .2) 0%, rgba(3, 13, 24, .3) 45%, rgba(3, 13, 24, .6) 100%), linear-gradient(180deg, rgba(3, 13, 24, .3) 0%, rgba(3, 13, 24, 0) 30%, rgba(3, 13, 24, .6) 100%); }
/* Palabras que aparecen una a una (se encienden con el scroll) */
.nx-w { display: inline-block; opacity: .06; filter: blur(10px); transform: translateY(.35em); transition: opacity .8s var(--nw-ease), filter .9s var(--nw-ease), transform 1s var(--nw-ease); }
.nx-w.on { opacity: 1; filter: none; transform: none; }

/* Mosaico a pantalla completa */
.nx-fm { position: relative; overflow: hidden; background: var(--nw-navy); }
.nx-fm__grid { display: grid; height: 100vh; min-height: 620px; transform-origin: 50% 50%; will-change: transform; }
.nx-fm--fine .nx-fm__grid { gap: 5px; }
.nx-fm--eight .nx-fm__grid { grid-template-columns: repeat(6, minmax(0, 1fr)); grid-template-rows: repeat(4, minmax(0, 1fr)); grid-template-areas: "i1 i1 i2 i3 i3 i4" "i1 i1 i2 i3 i3 i4" "tx tx i5 i6 i7 i7" "i8 i8 i5 i6 i7 i7"; }
.nx-fm--eight .nx-fm__tile--text { grid-area: tx; }
.nx-fm--eight .nx-fm__tile--1 { grid-area: i1; }
.nx-fm--eight .nx-fm__tile--2 { grid-area: i2; }
.nx-fm--eight .nx-fm__tile--3 { grid-area: i3; }
.nx-fm--eight .nx-fm__tile--4 { grid-area: i4; }
.nx-fm--eight .nx-fm__tile--5 { grid-area: i5; }
.nx-fm--eight .nx-fm__tile--6 { grid-area: i6; }
.nx-fm--eight .nx-fm__tile--7 { grid-area: i7; }
.nx-fm--eight .nx-fm__tile--8 { grid-area: i8; }
.nx-fm--grid .nx-fm__grid { height: auto; min-height: 0; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 42vh; }
.nx-fm__tile { position: relative; display: block; margin: 0; overflow: hidden; background: var(--nw-panel); color: var(--nw-paper); text-decoration: none; }
.nx-fm__tile .nx-cover { transform: scale(1.12); transition: transform 1.8s var(--nw-ease), filter .8s; }
.nx-fm__tile.is-in .nx-cover { transform: scale(1); }
.nx-fm__tile:hover .nx-cover { transform: scale(1.04); }
.nx-fm__tile:nth-child(3n+2) { transition-delay: .12s; }
.nx-fm__tile:nth-child(3n) { transition-delay: .24s; }
.nx-fm__cap { position: absolute; left: 14px; bottom: 12px; z-index: 2; color: var(--nw-paper); opacity: 0; transform: translateY(6px); transition: opacity .5s, transform .6s var(--nw-ease); text-shadow: 0 1px 12px rgba(0, 0, 0, .5); }
.nx-fm__tile:hover .nx-fm__cap { opacity: 1; transform: none; }
.nx-fm__tile--text { display: flex; align-items: flex-end; background: var(--nw-navy); }
.nx-fm__text { padding: clamp(20px, 2.4vw, 40px); }
.nx-fm__title { margin: 0; font: 400 clamp(24px, 2.2vw, 40px)/1.08 var(--nw-sans); letter-spacing: -.015em; color: var(--nw-paper); }
.nx-fm__lead { max-width: 360px; margin: 16px 0 0; font: 400 14px/1.6 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .78); }
.nx-fm__text .nx-btn { margin-top: 22px; }

/* Servicios con imagen */
.nx-offer { position: relative; height: calc(100vh + (var(--n) - 1) * 60vh); background: var(--nw-ink); color: var(--nw-paper); }
.nx-offer__sticky { position: sticky; top: 0; height: 100vh; min-height: 640px; overflow: hidden; }
.nx-offer__bgs, .nx-offer__bg { position: absolute; inset: 0; }
.nx-offer__bg { opacity: 0; transition: opacity 1.2s var(--nw-ease); }
.nx-offer__bg .nx-cover { transform: scale(1.08); transition: transform 6s var(--nw-ease); }
.nx-offer__bg.is-on { opacity: 1; }
.nx-offer__bg.is-on .nx-cover { transform: scale(1); }
.nx-offer__veil { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(3, 13, 24, .72) 0%, rgba(3, 13, 24, .45) 50%, rgba(3, 13, 24, .55) 100%); }
.nx-offer__inner { position: relative; z-index: 2; height: 100%; max-width: var(--nw-wrap); margin: 0 auto; padding: clamp(96px, 14vh, 140px) var(--nw-gutter) clamp(32px, 6vh, 56px); display: flex; flex-direction: column; }
.nx-offer__top { display: flex; flex-direction: column; gap: 14px; max-width: 520px; }
.nx-offer__title { margin: 0; font: 400 clamp(20px, 1.6vw, 28px)/1.2 var(--nw-sans); letter-spacing: -.012em; color: var(--nw-paper); }
.nx-offer__list { list-style: none; margin: auto 0; padding: 0; counter-reset: none; }
.nx-offer__item { display: flex; align-items: baseline; gap: 18px; }
.nx-offer .nx-offer__thumb { display: none; }
.nx-offer__n { font: 500 12.5px/1 var(--nw-cond); letter-spacing: .08em; color: rgba(var(--nw-fg-rgb), .5); min-width: 22px; }
.nx-offer__name { margin: 0; font: 400 clamp(44px, 5.4vw, 92px)/1.02 var(--nw-serif); letter-spacing: -.005em; color: rgba(var(--nw-fg-rgb), .32); transition: color .6s var(--nw-ease), transform .8s var(--nw-ease); cursor: default; }
.nw .nx-offer__name a { color: inherit; text-decoration: none; }
.nx-offer__item.is-on .nx-offer__name { color: var(--nw-paper); transform: translateX(8px); }
.nx-offer__item.is-on .nx-offer__n { color: var(--nw-gold); }
.nx-offer__detail { position: absolute; left: 58%; top: 50%; width: min(380px, 34vw); opacity: 0; visibility: hidden; transform: translateY(calc(-50% + 16px)); transition: opacity .6s var(--nw-ease), transform .8s var(--nw-ease), visibility .6s; }
.nx-offer__item.is-on .nx-offer__detail { opacity: 1; visibility: visible; transform: translateY(-50%); transition-delay: .12s; }
.nx-offer__desc { margin: 0 0 22px; font: 400 15px/1.6 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .9); }
.nx-offer__inc { list-style: none; margin: 0 0 26px; padding: 0; display: flex; flex-direction: column; gap: 6px; color: rgba(var(--nw-fg-rgb), .75); }
.nx-offer__inc li::before { content: '— '; color: var(--nw-gold); }
.nw a.nx-offer__cta { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; width: min(440px, 100%); padding-bottom: 14px; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .5); color: var(--nw-paper); text-decoration: none; transition: border-color .5s; }
.nx-offer__cta-t { font: 400 15px/1 var(--nw-sans); transition: color .4s; }
.nw a.nx-offer__cta:hover { border-bottom-color: var(--nw-gold); }
.nw a.nx-offer__cta:hover .nx-offer__cta-t { color: var(--nw-gold); }
.elementor-editor-active .nx-offer { height: auto; }
.elementor-editor-active .nx-offer__sticky { position: relative; }

/* Cita del cliente en los proyectos apilados */
.nx-stack__quote { grid-column: 3 / 5; margin: 26px 0 0; padding: 0; border: 0; color: var(--nw-paper); }
.nx-stack__quote p { margin: 0 0 14px; font: 500 clamp(15px, 1.15vw, 18px)/1.35 var(--nw-sans); letter-spacing: -.01em; }
.nx-stack__quote p::before { content: '“'; display: block; font: 400 34px/.6 var(--nw-serif); margin-bottom: 6px; }
.nx-stack__quote cite { display: flex; flex-direction: column; gap: 2px; font-style: normal; }
.nx-stack__quote cite strong { font: 600 13px/1.3 var(--nw-sans); }
.nx-stack__quote cite span { font: 400 16px/1.2 var(--nw-serif); color: rgba(var(--nw-fg-rgb), .8); }

/* h1 del showreel en la firma pequeña */
.nx-reel__credit { margin: 0; }

/* Preguntas frecuentes (discretas, desplegables) */
.nx-faq__head { margin-bottom: 28px; }
.nx-faq__intro { max-width: 560px; margin: 12px 0 0; font: 400 clamp(18px, 1.4vw, 22px)/1.35 var(--nw-sans); letter-spacing: -.01em; color: rgba(var(--nw-fg-rgb), .82); }
.nx-faq__list { border-top: 1px solid rgba(var(--nw-fg-rgb), .12); }
.nx-faq__cat { border-bottom: 1px solid rgba(var(--nw-fg-rgb), .12); }
.nx-faq details > summary { list-style: none; cursor: pointer; }
.nx-faq details > summary::-webkit-details-marker { display: none; }
.nx-faq__cat > summary { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; padding: 18px 0; font: 400 17px/1.3 var(--nw-sans); letter-spacing: -.005em; color: rgba(var(--nw-fg-rgb), .78); transition: color .4s; }
.nx-faq__cat > summary:hover, .nx-faq__cat[open] > summary { color: var(--nw-paper); }
.nx-faq__cat > summary i { font-style: normal; color: rgba(var(--nw-fg-rgb), .4); }
.nx-faq__cat > summary span::after { content: '+'; display: inline-block; margin-left: 12px; color: var(--nw-gold); transition: transform .4s var(--nw-ease); }
.nx-faq__cat[open] > summary span::after { transform: rotate(45deg); }
.nx-faq__qs { padding: 0 0 18px clamp(0px, 3vw, 40px); }
.nx-faq__q > summary { padding: 10px 0; }
.nx-faq__q h3 { margin: 0; font: 400 15px/1.45 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .72); transition: color .3s; }
.nx-faq__q > summary:hover h3, .nx-faq__q[open] h3 { color: var(--nw-paper); }
.nx-faq__a { max-width: 640px; padding: 2px 0 14px; font: 400 14px/1.65 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .62); }
.nx-faq__a p { margin: 0 0 10px; }
.nw:is(.nw-s-light, .nw-s-sand) :is(.nx-faq__list, .nx-faq__cat) { border-color: rgba(5, 21, 37, .14); }
.nw:is(.nw-s-light, .nw-s-sand) .nx-faq__cat > summary, .nw:is(.nw-s-light, .nw-s-sand) .nx-faq__q h3 { color: rgba(5, 21, 37, .78); }
.nw:is(.nw-s-light, .nw-s-sand) .nx-faq__a, .nw:is(.nw-s-light, .nw-s-sand) .nx-faq__intro { color: rgba(5, 21, 37, .7); }

/* Laterales fijos (solo ordenador) */
.nx-rails { display: none; }
@media (min-width: 1100px) and (pointer: fine) {
	.nx-rails { display: block; }
}
.nx-rail { position: fixed; top: 50%; z-index: 60; display: flex; align-items: center; gap: 14px; writing-mode: vertical-rl; white-space: nowrap; pointer-events: none; font: 500 12px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: var(--nw-paper); mix-blend-mode: difference; transition: opacity .8s var(--nw-ease); }
.nx-rail--l { left: 16px; transform: translateY(-50%) rotate(180deg); opacity: 0; }
.nx-rail--l.is-on { opacity: .8; }
.nx-rail--r { right: 16px; transform: translateY(-50%); opacity: .8; }
.nx-rail span + span::before { content: ''; display: inline-block; inline-size: 28px; block-size: 1px; margin-inline-end: 14px; vertical-align: middle; background: currentColor; opacity: .5; }
.nx-rail__t { transition: opacity .5s; }
.nx-rail__t.is-swap { opacity: 0; }
.elementor-editor-active .nx-rails { display: none; }

/* Proyectos (lista con ficha) */
.nx-works .nw-wrap { display: flex; flex-direction: column; gap: clamp(96px, 12vw, 190px); }
.nx-works__head { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 16px; margin-bottom: calc(-1 * clamp(40px, 6vw, 110px)); border-bottom: 1px solid rgba(var(--nw-fg-rgb), .14); }
.nw:is(.nw-s-light, .nw-s-sand) .nx-works__head { border-bottom-color: rgba(5, 21, 37, .14); }
.nx-work__top { display: flex; justify-content: space-between; gap: 20px; margin-bottom: 14px; }
.nx-work__media { position: relative; display: block; overflow: hidden; aspect-ratio: 16 / 9; background: var(--nw-panel); }
.nx-works--3-2 .nx-work__media { aspect-ratio: 3 / 2; }
.nx-works--21-9 .nx-work__media { aspect-ratio: 21 / 9; }
.nx-work__in { position: absolute; left: 0; right: 0; top: -7%; bottom: -7%; will-change: transform; }
.nx-work__in .nx-cover { transition: transform 1.8s var(--nw-ease); }
.nx-work__media:hover .nx-cover { transform: scale(1.025); }
.nx-work__meta { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) auto; column-gap: 32px; row-gap: 16px; align-items: start; margin-top: 22px; }
.nx-work__title { margin: 0 0 10px; font: 400 clamp(26px, 2.1vw, 36px)/1.05 var(--nw-serif); letter-spacing: 0; color: var(--nw-paper); }
.nw .nx-work__title a { color: inherit; text-decoration: none; }
.nx-work__text { max-width: 430px; margin: 0; font: 400 14.5px/1.6 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .72); }
.nx-work__svc { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.nw a.nx-work__go { padding-bottom: 6px; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .3); color: var(--nw-paper); text-decoration: none; white-space: nowrap; transition: color .4s, border-color .4s; }
.nw a.nx-work__go span { display: inline-block; transition: transform .5s var(--nw-ease); }
.nw a.nx-work__go:hover { color: var(--nw-gold); border-color: var(--nw-gold); }
.nw a.nx-work__go:hover span { transform: translateX(4px); }
.nx-works--alt .nx-work { width: min(100%, 72%); }
.nx-works--alt .nx-work:nth-child(even) { margin-left: auto; }
.nw:is(.nw-s-light, .nw-s-sand) :is(.nx-work__title, a.nx-work__go) { color: var(--nw-navy); }
.nw:is(.nw-s-light, .nw-s-sand) .nx-work__text { color: rgba(5, 21, 37, .72); }
.nw:is(.nw-s-light, .nw-s-sand) a.nx-work__go { border-bottom-color: rgba(5, 21, 37, .3); }
/* Proyectos con el texto encima de la imagen */
.nx-work--over { position: relative; }
.nx-work--over .nx-work__media::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 24, 0) 45%, rgba(3, 13, 24, .72) 100%); }
.nx-work--over .nx-work__meta { position: absolute; z-index: 2; left: clamp(20px, 3vw, 48px); right: clamp(20px, 3vw, 48px); bottom: clamp(20px, 3vw, 44px); margin: 0; align-items: end; pointer-events: none; }
.nx-work--over .nx-work__meta a { pointer-events: auto; }
.nx-work--over .nx-work__title { font-size: clamp(34px, 3.2vw, 56px); line-height: 1; }
.nx-work--over .nx-work__text { color: rgba(var(--nw-fg-rgb), .86); }
.nx-work--over .nx-work__svc { color: rgba(var(--nw-fg-rgb), .8); }
.nw:is(.nw-s-light, .nw-s-sand) .nx-work--over :is(.nx-work__title, a.nx-work__go) { color: var(--nw-paper); }

/* Imagen con texto superpuesto */
.nx-panel { position: relative; height: 100vh; min-height: 560px; overflow: hidden; background: var(--nw-ink); color: var(--nw-paper); }
.nx-panel--tall { height: 80vh; }
.nx-panel__media { position: absolute; left: 0; right: 0; top: -8%; bottom: -8%; will-change: transform; }
.nx-panel__shade { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(3, 13, 24, calc(var(--sh) + .3)) 0%, rgba(3, 13, 24, calc(var(--sh) + .12)) 38%, rgba(3, 13, 24, calc(var(--sh) * .3)) 72%, rgba(3, 13, 24, calc(var(--sh) * .2)) 100%); }
.nx-panel--shade-s { --sh: .08; }
.nx-panel--shade-m { --sh: .3; }
.nx-panel--shade-l { --sh: .45; }
.nx-panel--rc .nx-panel__shade { transform: scaleX(-1); }
.nx-panel--cc .nx-panel__shade, .nx-panel--lb .nx-panel__shade { background: linear-gradient(180deg, rgba(3, 13, 24, var(--sh)) 0%, rgba(3, 13, 24, calc(var(--sh) * .6)) 50%, rgba(3, 13, 24, calc(var(--sh) + .35)) 100%); }
.nx-panel__text { position: absolute; z-index: 2; width: min(440px, calc(100% - 2 * var(--nw-gutter))); }
.nx-panel--lc .nx-panel__text { left: max(var(--nw-gutter), 15.5vw); top: 50%; transform: translateY(-42%); }
.nx-panel--rc .nx-panel__text { right: max(var(--nw-gutter), 15.5vw); top: 50%; transform: translateY(-42%); }
.nx-panel--lb .nx-panel__text { left: var(--nw-gutter); bottom: clamp(48px, 9vh, 96px); }
.nx-panel--cc .nx-panel__text { left: 50%; top: 50%; transform: translate(-50%, -50%); text-align: center; }
.nx-panel__title { margin: 0; font: 400 clamp(28px, 2.25vw, 42px)/1.1 var(--nw-sans); letter-spacing: -.012em; color: var(--nw-paper); text-shadow: 0 2px 30px rgba(0, 0, 0, .18); }
.nx-panel__lead { margin: clamp(40px, 6vh, 72px) 0 0; font: 400 14px/1.6 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .92); text-shadow: 0 1px 18px rgba(0, 0, 0, .35); }
.nw a.nx-panel__line { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; margin-top: clamp(40px, 6vh, 72px); padding-bottom: 14px; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .5); color: var(--nw-paper); text-decoration: none; transition: border-color .5s; }
.nx-panel__label { font: 500 12.5px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .75); }
.nx-panel__action { font: 400 14px/1 var(--nw-sans); transition: color .4s; }
.nw a.nx-panel__line:hover { border-bottom-color: var(--nw-gold); }
.nw a.nx-panel__line:hover .nx-panel__action { color: var(--nw-gold); }
.nx-panel--cc .nx-panel__line { justify-content: center; }
.nx-panel--serif .nx-panel__title { font: 400 clamp(38px, 3.6vw, 64px)/1 var(--nw-serif); letter-spacing: -.005em; }

@media (max-width: 767px) {
	.nx-work__meta { grid-template-columns: 1fr; }
	.nx-works--alt .nx-work { width: 100%; }
	.nw a.nx-work__go { justify-self: start; }
	.nx-work--over .nx-work__meta { position: static; margin-top: 18px; }
	.nx-work--over .nx-work__media::after { display: none; }
	.nx-work--over .nx-work__title { font-size: 30px; }
	.nx-offer { height: auto; }
	.nx-offer__sticky { position: relative; height: auto; min-height: 0; }
	.nx-offer__bgs, .nx-offer__veil { display: none; }
	.nx-offer__inner { padding: 88px var(--nw-gutter) 64px; }
	.nx-offer__list { margin: 48px 0 56px; display: flex; flex-direction: column; gap: 56px; }
	.nx-offer__item { display: grid; grid-template-columns: auto 1fr; column-gap: 14px; row-gap: 14px; }
	.nx-offer .nx-offer__thumb { display: block; grid-column: 1 / -1; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; margin-bottom: 6px; }
	.nx-offer__name, .nx-offer__item.is-on .nx-offer__name { color: var(--nw-paper); transform: none; font-size: 44px; }
	.nx-offer__detail, .nx-offer__item.is-on .nx-offer__detail { position: static; grid-column: 1 / -1; width: auto; opacity: 1; visibility: visible; transform: none; }
	.nx-stack__quote { display: none; }
	.nx-words--photo { min-height: 100svh; align-items: flex-end; padding-bottom: 56px; }
	.nx-words--photo .nx-words__foot { grid-template-columns: 1fr; }
	.nx-words--right .nx-words__text, .nx-words--right .nx-words__foot { max-width: none; margin-left: 0; }
	.nx-fm--eight .nx-fm__grid { height: auto; min-height: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: none; grid-auto-rows: 30vh; grid-template-areas: "tx tx" "i1 i1" "i2 i3" "i4 i5" "i6 i6" "i7 i8"; }
	.nx-fm--eight .nx-fm__tile--text { min-height: 0; }
	.nx-fm--grid .nx-fm__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 30vh; }
	.nx-fm--grid .nx-fm__tile--text { grid-column: 1 / -1; }
	.nx-stack__row { top: auto; bottom: 112px; grid-template-columns: auto 1fr; row-gap: 18px; column-gap: 20px; }
	.nx-stack__n, .nx-stack__title { font-size: 34px; }
	.nx-stack__kind, .nx-stack__meta { font-size: 13px; }
	.nx-panel--lc .nx-panel__text, .nx-panel--rc .nx-panel__text { left: var(--nw-gutter); right: auto; top: auto; bottom: 56px; transform: none; }
	.nx-panel__shade { background: linear-gradient(180deg, rgba(3, 13, 24, .1) 30%, rgba(3, 13, 24, .75) 100%) !important; transform: none !important; }
}

@media (max-width: 1024px) {
	.nx-index__row { grid-template-columns: 1fr auto; }
	.nx-index__year { display: none; }
	.nx-float { display: none; }
	.nx-contact .nw-wrap { grid-template-columns: 1fr; }
	.nx-contact__img { display: none; }
}

@media (max-width: 767px) {
	.nx-reel__foot { padding-bottom: 20px; }
	.nx-reel__scroll { display: none; }
	.nx-words__foot, .nx-words__foot:not(:has(.nx-words__img)) { grid-template-columns: 1fr; row-gap: 22px; }
	.nx-words__img { justify-self: start; max-width: 180px; }
	.nx-zoom { height: 180vh; }
	.nx-hs { height: auto !important; }
	.nx-hs__sticky { position: relative; height: auto; overflow-x: auto; -webkit-overflow-scrolling: touch; scroll-snap-type: x mandatory; padding: 64px 0; }
	.nx-hs__track { transform: none !important; }
	.nx-hs__item { scroll-snap-align: center; }
	.nx-hs__frame, .nx-hs__item--l .nx-hs__frame, .nx-hs__item--w .nx-hs__frame { height: 58vh; }
	.nx-hs__item--s .nx-hs__frame { height: 40vh; }
	.nx-hs__item:nth-child(n) { margin: 0; }
	.nx-index__row { grid-template-columns: 1fr; gap: 8px; padding: 22px 0; }
	.nx-index__thumb { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; margin: 0 0 22px; }
	.nx-index__list:hover .nx-index__row { opacity: 1; }
	.nw-next__go { display: none; }
	.nx-form__end { flex-direction: column; align-items: stretch; }
}

/* «Reducir movimiento» (solo si se activa en Ajustes → Notos Studio) */
html.nx-reduce .nx-lines, html.nx-reduce .nx-in { animation: none !important; }
html.nx-reduce .nx-clip { clip-path: none !important; }
html.nx-reduce .nx-words [data-focus] { filter: none !important; opacity: 1 !important; }
html.nx-reduce .nx-w { opacity: 1 !important; filter: none !important; transform: none !important; }
html.nx-reduce .nx-fm__grid { transform: none !important; }
html.nx-reduce .nx-zoom { height: auto !important; --i: 0 !important; }
html.nx-reduce .nx-zoom__sticky { position: relative; }
html.nx-reduce .nx-strip__track, html.nx-reduce .nx-reel__media img.nx-cover { animation: none !important; }
html.nx-reduce .nx-curtain { display: none; }

/* ==========================================================================
   v3.5 · Ajustes tras verlo en el sitio real
   ========================================================================== */
/* Elementor fuerza «height: auto» en las imágenes: las de fondo deben llenar su marco. */
.nw img.nx-cover, .nw video.nx-cover { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.nw .nx-float img { height: 100%; }

/* Frase del showreel: abajo, centrada o a ambos lados */
.nx-reel__text { position: absolute; inset: 0; z-index: 2; pointer-events: none; will-change: transform, opacity, filter; }
.nx-reel__text--center, .nx-reel__text--sides { display: flex; align-items: center; padding: 0 var(--nw-gutter); }
.nx-reel__text--center { justify-content: center; text-align: center; }
.nx-reel__text--sides { justify-content: space-between; gap: 8vw; }
.nx-reel__text--center .nx-reel__line, .nx-reel__text--sides .nx-reel__line { position: static; bottom: auto; left: auto; }
.nx-reel__text--center .nx-reel__line { max-width: min(860px, 86vw); font-size: clamp(28px, 3vw, 52px); line-height: 1.1; }
.nx-reel__text--sides .nx-reel__line { max-width: min(420px, 38vw); font-size: clamp(22px, 2vw, 34px); }
.nx-reel__text--sides .nx-reel__line--r { text-align: right; }

/* Cabecera: Instagram */
.nwh a.nwh-ig { display: inline-flex; align-items: center; margin-left: 26px; color: rgba(var(--nw-fg-rgb), .8); transition: color .3s; }
.nwh a.nwh-ig:hover { color: var(--nw-gold); }
.nwh.on-light:not(.is-compact) a.nwh-ig { color: rgba(5, 21, 37, .75); }
.nwh a.nwh-ig svg { width: 17px; height: 17px; }
@media (max-width: 1024px) {
	.nwh a.nwh-ig { display: none; }
}
@media (max-width: 767px) {
	.nx-reel__text--sides { flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: 12px; padding-bottom: 110px; }
	.nx-reel__text--sides .nx-reel__line { max-width: 86vw; }
	.nx-reel__text--sides .nx-reel__line--r { text-align: left; }
	.nx-reel__text--center .nx-reel__line { font-size: 28px; }
}

/* ==========================================================================
   v3.6 · Textos letra a letra y mosaico con entrada
   ========================================================================== */
.nx-wd { display: inline-block; white-space: nowrap; }
.is-split .nx-ch { display: inline-block; --p: 0; opacity: var(--p); filter: blur(calc((1 - var(--p)) * 12px)); transform: translate3d(0, calc((1 - var(--p)) * .5em), 0); will-change: transform, opacity, filter; }

/* Mosaico: el título aparece grande y las fotos se descubren detrás */
.nx-fm__stage { position: relative; }
.nx-fm--intro { height: 320vh; overflow: clip; }
.nx-fm--intro .nx-fm__stage { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.nx-fm--intro .nx-fm__grid { height: 100%; min-height: 0; }
.nx-fm__big { position: absolute; left: 50%; top: 50%; z-index: 4; width: min(1180px, 88vw); margin: 0; text-align: center; pointer-events: none; --q: 0; opacity: calc(1 - var(--q)); filter: blur(calc(var(--q) * 14px)); transform: translate(-50%, -50%) translateY(calc(var(--q) * -60px)) scale(calc(1 - var(--q) * .08)); font: 400 clamp(44px, 6.6vw, 124px)/1 var(--nw-sans); letter-spacing: -.035em; color: var(--nw-paper); text-shadow: 0 4px 40px rgba(0, 0, 0, .25); }
.nx-fm__veil { position: absolute; inset: 0; z-index: 3; pointer-events: none; background: var(--nw-ink); opacity: var(--veil, 0); }
.nx-fm--intro .nx-fm__tile:not(.nx-fm__tile--text) { --t: 0; opacity: var(--t); clip-path: inset(calc((1 - var(--t)) * 100%) 0 0 0); }
.nx-fm--intro .nx-fm__tile:not(.nx-fm__tile--text) .nx-cover { transform: scale(calc(1.18 - var(--t) * .18)); transition: none; }
.nx-fm--intro .nx-fm__tile--text .nx-fm__text { --tt: 0; opacity: var(--tt); transform: translateY(calc((1 - var(--tt)) * 20px)); }
/* Sin fijar (editor, móvil o «reducir movimiento»): todo visible y el título encima */
.nx-fm--intro.is-static, .elementor-editor-active .nx-fm--intro { height: auto; }
.nx-fm--intro.is-static .nx-fm__stage, .elementor-editor-active .nx-fm--intro .nx-fm__stage { position: relative; height: auto; overflow: visible; }
.nx-fm--intro.is-static .nx-fm__grid, .elementor-editor-active .nx-fm--intro .nx-fm__grid { height: 100vh; }
.nx-fm--intro.is-static .nx-fm__tile, .elementor-editor-active .nx-fm--intro .nx-fm__tile { --t: 1; }
.nx-fm--intro.is-static .nx-fm__tile--text .nx-fm__text, .elementor-editor-active .nx-fm--intro .nx-fm__tile--text .nx-fm__text { --tt: 1; }
.nx-fm--intro.is-static .nx-fm__big, .elementor-editor-active .nx-fm--intro .nx-fm__big { position: relative; left: auto; top: auto; width: auto; max-width: 1180px; margin: 0 auto; padding: 16vh var(--nw-gutter) 10vh; transform: none; opacity: 1; filter: none; }
.nx-fm--intro.is-static .nx-fm__veil, .elementor-editor-active .nx-fm--intro .nx-fm__veil { display: none; }
@media (max-width: 767px) {
	.nx-fm--intro.is-static .nx-fm__grid { height: auto; }
	.nx-fm__big { font-size: 44px; }
}

/* ==========================================================================
   v3.7 · Letras: entrada letra a letra y enlaces que se barajan
   ========================================================================== */
.is-split-in .nx-ch { display: inline-block; opacity: 0; filter: blur(8px); transform: translate3d(0, .55em, 0); transition: opacity .7s var(--nw-ease), filter .8s var(--nw-ease), transform .9s var(--nw-ease); }
.is-split-in.is-in .nx-ch { opacity: 1; filter: none; transform: none; }
.nx-reel__line.is-split-in { animation: none; }
/* El menú ya no hace el «rodillo»: ahora sus letras se barajan */
.nwh .nwh-menu a:hover .nwh-roll > span, .nwh .nwh-menu a .nwh-roll > span { transform: none !important; }
.nwh .nwh-menu .nwh-roll > span::after { display: none !important; }

/* ==========================================================================
   v3.8 · Móvil y pantallas estrechas: foto o vídeo a pantalla completa y el texto encima
   ========================================================================== */
@media (max-width: 900px) {
	/* Servicios: fijado, la foto de fondo cambia y el texto va encima */
	.nx-offer { height: calc(100vh + (var(--n) - 1) * 70vh); }
	.nx-offer__sticky { position: sticky; top: 0; height: 100vh; height: 100svh; min-height: 0; }
	.nx-offer__bgs, .nx-offer__veil { display: block; }
	.nx-offer__veil { background: linear-gradient(180deg, rgba(3, 13, 24, .6) 0%, rgba(3, 13, 24, .35) 40%, rgba(3, 13, 24, .88) 100%); }
	.nx-offer__inner { padding: 92px var(--nw-gutter) 26px; }
	.nx-offer__list { display: block; margin: 26px 0 auto; }
	.nx-offer__item { display: flex; align-items: baseline; gap: 12px; }
	.nx-offer .nx-offer__thumb { display: none; }
	.nx-offer__name, .nx-offer__item.is-on .nx-offer__name { font-size: clamp(34px, 9vw, 54px); color: rgba(var(--nw-fg-rgb), .32); transform: none; }
	.nx-offer__item.is-on .nx-offer__name { color: var(--nw-paper); }
	.nx-offer__detail, .nx-offer__item.is-on .nx-offer__detail { position: absolute; left: var(--nw-gutter); right: var(--nw-gutter); top: auto; bottom: 88px; width: auto; }
	.nx-offer__detail { opacity: 0; visibility: hidden; transform: translateY(16px); }
	.nx-offer__item.is-on .nx-offer__detail { opacity: 1; visibility: visible; transform: none; }
	.nx-offer__desc { margin-bottom: 14px; font-size: 14px; }
	.nx-offer__inc { display: none; }
	.nw a.nx-offer__cta { width: 100%; }
}
@media (max-width: 767px) {
	/* Proyectos (lista) con el texto encima de la imagen */
	.nx-work--over .nx-work__media { aspect-ratio: 4 / 5; }
	.nx-work--over .nx-work__media::after { display: block; background: linear-gradient(180deg, rgba(3, 13, 24, 0) 35%, rgba(3, 13, 24, .82) 100%); }
	.nx-work--over .nx-work__meta { position: absolute; left: 18px; right: 18px; bottom: 18px; margin: 0; grid-template-columns: 1fr; row-gap: 8px; }
	.nx-work--over .nx-work__svc { display: none; }
	.nx-work--over .nx-work__title { font-size: 30px; }
	/* Proyectos apilados: también se ve la cita */
	.nx-stack__quote { display: block; grid-column: 1 / -1; margin-top: 4px; }
	.nx-stack__quote p { font-size: 14px; }
	.nx-stack__quote p::before { display: none; }
	.nx-stack__row { bottom: 96px; }
	/* Mosaico con entrada: pantalla completa en 2 columnas y el título encima */
	.nx-fm--intro .nx-fm__stage { height: 100vh; height: 100svh; }
	.nx-fm--intro.nx-fm--eight .nx-fm__grid { height: 100%; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(5, minmax(0, 1fr)); grid-auto-rows: auto; grid-template-areas: "i1 i2" "i1 i3" "i4 i5" "i6 i6" "i7 i8"; }
	.nx-fm--intro .nx-fm__tile--text { display: none; }
	.nx-fm__big { font-size: clamp(40px, 11vw, 62px); }
}

/* ==========================================================================
   v3.9 · Mosaico con entrada: el texto siempre encima de las fotos
   ========================================================================== */
.nx-fm--intro { height: 280vh; }
.nx-fm--intro.nx-fm--eight .nx-fm__grid { grid-template-areas: "i1 i1 i2 i3 i3 i4" "i1 i1 i2 i3 i3 i4" "i8 i8 i5 i6 i7 i7" "i8 i8 i5 i6 i7 i7"; }
.nx-fm__over { position: absolute; inset: 0; z-index: 4; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: clamp(20px, 3vh, 36px); padding: 0 var(--nw-gutter); text-align: center; pointer-events: none; }
.nx-fm__over .nx-fm__big, .nx-fm--intro .nx-fm__over .nx-fm__big { position: relative; left: auto; top: auto; width: min(1180px, 100%); opacity: 1; filter: none; transform: none; }
.nx-fm__sub { --tt: 0; max-width: 460px; opacity: var(--tt); transform: translateY(calc((1 - var(--tt)) * 18px)); pointer-events: auto; }
.nx-fm__sub .nx-fm__lead { margin: 0 0 18px; color: rgba(var(--nw-fg-rgb), .82); }
.nx-fm__sub .nx-btn { margin: 0; }
.nx-fm--intro.is-static .nx-fm__veil, .elementor-editor-active .nx-fm--intro .nx-fm__veil { display: block; --veil: .5; }
.nx-fm--intro.is-static .nx-fm__grid, .elementor-editor-active .nx-fm--intro .nx-fm__grid { height: 100vh; }
.nx-fm--intro.is-static .nx-fm__sub, .elementor-editor-active .nx-fm--intro .nx-fm__sub { --tt: 1; }
.nx-fm--intro.is-static .nx-fm__over .nx-fm__big, .elementor-editor-active .nx-fm--intro .nx-fm__over .nx-fm__big { padding: 0; margin: 0; }
@media (max-width: 767px) {
	.nx-fm--intro.is-static .nx-fm__grid { height: 100vh; height: 100svh; }
	.nx-fm--intro.is-static.nx-fm--eight .nx-fm__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(5, minmax(0, 1fr)); grid-auto-rows: auto; grid-template-areas: "i1 i2" "i1 i3" "i4 i5" "i6 i6" "i7 i8"; }
}
/* Índice: las reglas móviles también cuando las filas son enlaces */
@media (max-width: 1024px) {
	.nw a.nx-index__row, .nw .nx-index__row { grid-template-columns: minmax(0, 1fr) auto; }
}
@media (max-width: 767px) {
	.nw a.nx-index__row, .nw .nx-index__row { grid-template-columns: minmax(0, 1fr); gap: 8px; padding: 22px 0; }
}
/* Logo apilado (isotipo sobre «notos»): más alto arriba del todo; al bajar pasa al isotipo */
.nwh { height: 128px; }
.nwh-full { height: clamp(70px, 6.4vw, 96px); }
.nwf-brand img { height: 124px; }
@media (max-width: 1024px) {
	.nwh { height: 100px; }
	.nwh-full { height: 72px; }
}
@media (max-width: 767px) {
	.nwh-full { height: 64px; }
	.nwf-brand img { height: 104px; }
}
/* Logo apilado: al hacer scroll el nombre «notos» se recoge hacia arriba y el isotipo se reduce */
.nwh--stack .nwh-logo .nwh-iso { display: none !important; }
.nwh--stack .nwh-logo img.nwh-full { --lh: clamp(70px, 6.4vw, 96px); height: var(--lh); transform-origin: 50% 0; clip-path: inset(0 0 0 0); transition: transform .9s var(--nw-ease), clip-path .75s var(--nw-ease); }
.nwh--stack.is-compact .nwh-logo img.nwh-full { opacity: 1; pointer-events: auto; clip-path: inset(0 0 22% 0); transform: translateY(calc(var(--lh) * .286)) scale(.55); }
@media (max-width: 1024px) {
	.nwh--stack .nwh-logo img.nwh-full { --lh: 72px; }
}
@media (max-width: 767px) {
	.nwh--stack .nwh-logo img.nwh-full { --lh: 64px; }
}
.nwh-inner { grid-template-rows: 100%; }

/* ==========================================================================
   v4.0 · Modo claro (botón en la cabecera; html.nx-light)
   Las secciones de fondo liso se vuelven papel con texto azul.
   Las secciones de foto (portadas, servicios, proyectos, mosaico, paneles) no cambian:
   el texto va sobre la imagen y sigue siendo claro.
   ========================================================================== */
html.nx-light body.nw-has-header { background: #F3F0EB; }
html.nx-light :is(.nw-s-dark, .nw-s-deep, .nw-s-ink):not(.nx-words--photo),
html.nx-light .nwf,
html.nx-light .nwh-mobile {
	--nw-navy: #F3F0EB;
	--nw-deep: #ECE7DF;
	--nw-ink: #E8E2D8;
	--nw-panel: #FFFFFF;
	--nw-paper: #051525;
	--nw-fg-rgb: 5, 21, 37;
	--nw-gold: #86672F;
}
html.nx-light .nwf { background: #E8E2D8; }
html.nx-light .nwf-bottom, html.nx-light .nwf-bottom a { color: rgba(5, 21, 37, .72); }
/* Texto sobre foto dentro de una sección lisa: sigue claro */
html.nx-light :is(.nx-work--over .nx-work__meta, .nx-hs__cap, .nx-fm__cap) { --nw-paper: #F3F0EB; --nw-fg-rgb: 243, 240, 235; }
/* Cabecera compacta en modo claro: fondo papel, logo y menú azules */
html.nx-light .nwh-bg { background: linear-gradient(to bottom, rgba(243, 240, 235, .96) 0%, rgba(243, 240, 235, .82) 55%, rgba(243, 240, 235, 0) 100%); }
html.nx-light .nwh.is-compact .nwh-logo .nwh-light { display: none; }
html.nx-light .nwh.is-compact .nwh-logo .nwh-dark { display: block; }
html.nx-light .nwh.is-compact .nwh-menu a, html.nx-light .nwh.is-compact a.nwh-ig, html.nx-light .nwh.is-compact .nwh-theme { color: rgba(5, 21, 37, .78); }
html.nx-light .nwh.is-compact .nwh-menu a:hover, html.nx-light .nwh.is-compact .nwh-menu .current-menu-item > a { color: #051525; }
html.nx-light .nwh.is-compact .nwh-burger span { background: #051525; }
html.nx-light .nwh.is-compact a.nwh-cta { color: #051525; border-color: rgba(5, 21, 37, .3); }
/* Botón */
.nwh .nwh-theme, .nwh .nwh-theme:hover, .nwh .nwh-theme:focus { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; margin-left: 14px; padding: 0; background: none; border: 0; border-radius: 50%; box-shadow: none; color: rgba(243, 240, 235, .8); cursor: pointer; transition: color .3s, transform .6s var(--nw-ease); }
.nwh .nwh-theme:hover { color: var(--nw-gold); transform: rotate(180deg); }
.nwh.on-light:not(.is-compact) .nwh-theme { color: rgba(5, 21, 37, .75); }
html.nx-light .nwh .nwh-theme svg { transform: rotate(180deg); }
.nwh .nwh-theme svg { width: 17px; height: 17px; transition: transform .6s var(--nw-ease); }
.nwh-mobile .nwh-mtheme, .nwh-mobile .nwh-mtheme:hover, .nwh-mobile .nwh-mtheme:focus { padding: 0; background: none; border: 0; box-shadow: none; font: 500 13px/1.4 var(--nw-mono); letter-spacing: .04em; color: rgba(var(--nw-fg-rgb), .75); text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
/* Cambio de modo con un fundido de toda la página (View Transitions; sin soporte, cambia al instante) */
::view-transition-old(root), ::view-transition-new(root) { animation-duration: .55s; animation-timing-function: cubic-bezier(.2, .7, .1, 1); }

/* ==========================================================================
   v4.1 · Títulos grandes con letra de exhibición (parecida a la Giaza del logo)
   Se cambia en Elementor → Ajustes del sitio → Tipografía global → «Acento».
   ========================================================================== */
:root { --nw-display: var(--e-global-typography-accent-font-family, 'Instrument Serif'), 'Instrument Serif', Georgia, serif; --nw-display-w: var(--e-global-typography-accent-font-weight, 400); }
:is(.nx-cover-sec__title, .nx-contact__title, .nx-fm__big, .nx-offer__name, .nx-index__title, .nx-work__title, .nx-panel__title, .nx-stack__title) { font-family: var(--nw-display); font-weight: var(--nw-display-w); font-optical-sizing: auto; letter-spacing: -.01em; }

/* ==========================================================================
   v4.2 · Móvil más fluido y cabecera limpia
   ========================================================================== */
/* Cabecera compacta: barra sólida, sin degradado ni difuminado hacia abajo */
.nwh-bg { inset: 0; background: rgba(5, 21, 37, .92); -webkit-mask-image: none; mask-image: none; box-shadow: 0 1px 0 rgba(243, 240, 235, .08); }
html.nx-light .nwh-bg { background: rgba(243, 240, 235, .94); box-shadow: 0 1px 0 rgba(5, 21, 37, .08); }
@media (hover: none), (max-width: 1024px) {
	.nwh-bg { -webkit-backdrop-filter: none; backdrop-filter: none; background: rgba(5, 21, 37, .97); }
	html.nx-light .nwh-bg { background: rgba(243, 240, 235, .98); }
	/* Sin desenfoque animado letra a letra (muy costoso en el móvil): solo fundido y subida */
	.is-split .nx-ch, .is-split-in .nx-ch, .nx-w { filter: none !important; }
}
/* Mosaico con entrada: las fotos se desplazan hacia el lado mientras aparece el texto */
.nx-fm--intro .nx-fm__grid { translate: var(--fx, 0px) 0; }
.nx-fm--intro.nx-fm--eight .nx-fm__grid { width: 112%; }
@media (max-width: 767px) {
	.nx-fm--intro.nx-fm--eight .nx-fm__grid { width: 300vw; grid-template-columns: repeat(6, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); grid-template-areas: "i1 i1 i2 i3 i5 i7" "i1 i1 i4 i6 i6 i8"; }
}
.nx-fm--intro.is-static .nx-fm__grid, .elementor-editor-active .nx-fm--intro .nx-fm__grid { width: auto !important; translate: none; }

/* ==========================================================================
   v4.3 · Portfolio por sectores
   ========================================================================== */
.nx-pf__head { display: flex; flex-direction: column; gap: 14px; margin-bottom: clamp(22px, 3vw, 40px); }
.nx-pf__title { max-width: 16em; margin: 0; font: 400 clamp(30px, 3.4vw, 56px)/1.05 var(--nw-display); font-weight: var(--nw-display-w); letter-spacing: -.01em; color: var(--nw-paper); }
.nx-pf__title em { font-family: var(--nw-serif); font-weight: 400; color: var(--nw-gold); }
.nx-pf__filters { position: sticky; top: 72px; z-index: 6; margin: 0 calc(var(--nw-gutter) * -1) clamp(18px, 2vw, 28px); padding: 12px var(--nw-gutter); background: var(--bg); }
.admin-bar .nx-pf__filters { top: 104px; }
.nx-pf__fwrap { display: flex; flex-wrap: wrap; gap: 8px 10px; }
.nw .nx-pf__f, .nw .nx-pf__f:hover, .nw .nx-pf__f:focus { display: inline-flex; align-items: baseline; gap: 5px; height: auto; padding: 9px 16px; border: 1px solid rgba(var(--nw-fg-rgb), .22); border-radius: 999px; background: none; box-shadow: none; font: 500 13px/1 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .75); cursor: pointer; transition: color .3s, border-color .3s, background-color .3s; }
.nw .nx-pf__f:hover { color: var(--nw-paper); border-color: rgba(var(--nw-fg-rgb), .5); }
.nw .nx-pf__f.is-on { background: var(--nw-paper); border-color: var(--nw-paper); color: var(--nw-navy); }
.nx-pf__f sup { font-size: 10px; line-height: 0; opacity: .6; }
.nx-pf__grid { columns: 3; column-gap: 8px; transition: opacity .26s var(--nw-ease); }
.nx-pf--c2 .nx-pf__grid { columns: 2; }
.nx-pf--c4 .nx-pf__grid { columns: 4; }
.nx-pf__grid.is-switching { opacity: 0; }
.nx-pf__item { position: relative; display: block; margin: 0 0 8px; overflow: hidden; break-inside: avoid; background: rgba(var(--nw-fg-rgb), .05); opacity: 0; transform: translateY(24px); transition: opacity .9s var(--nw-ease), transform 1.1s var(--nw-ease); }
.nx-pf__item[hidden] { display: none; }
.nx-pf__item.is-in { opacity: 1; transform: none; }
.nw img.nx-pf__img { display: block; width: 100%; height: auto; transition: transform 1.2s var(--nw-ease), filter .6s; }
.nx-pf__item:hover .nx-pf__img { transform: scale(1.035); }
.nx-pf__cap { position: absolute; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; gap: 4px; padding: 40px 16px 14px; background: linear-gradient(to top, rgba(3, 13, 24, .72), rgba(3, 13, 24, 0)); color: #F3F0EB; font: 400 14px/1.35 var(--nw-sans); opacity: 0; transform: translateY(8px); transition: opacity .5s var(--nw-ease), transform .6s var(--nw-ease); pointer-events: none; }
.nx-pf__cap .nx-cap { color: rgba(243, 240, 235, .75); }
.nx-pf__item:hover .nx-pf__cap, .nx-pf__item:focus-visible .nx-pf__cap { opacity: 1; transform: none; }
html.nx-reduce .nx-pf__item { opacity: 1; transform: none; }
.elementor-editor-active .nx-pf__item { opacity: 1; transform: none; }
@media (max-width: 1024px) {
	.nx-pf__grid, .nx-pf--c4 .nx-pf__grid { columns: 2; }
	.nx-pf__filters { top: 64px; }
}
@media (max-width: 767px) {
	.nx-pf__grid { column-gap: 5px; }
	.nx-pf__item { margin-bottom: 5px; }
	.admin-bar .nx-pf__filters { top: 64px; }
	/* Filtros en una sola fila que se desliza con el dedo */
	.nx-pf__fwrap { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.nx-pf__fwrap::-webkit-scrollbar { display: none; }
	.nw .nx-pf__f { flex: 0 0 auto; }
	.nx-pf__cap { display: none; }
}
/* Vídeos incrustados: no se pueden abrir aparte (el clic derecho cae en la página, no en el vídeo) */
.nw video.nx-lazyvideo { pointer-events: none; }
/* Frase de la portada y acentos: la misma letra de exhibición, con la parte destacada en cursiva dorada */
.nx-reel__line { font-family: var(--nw-display); font-weight: 500; font-optical-sizing: auto; letter-spacing: -.01em; line-height: 1.04; }
.nw :is(.nx-reel__line, .nx-cover-sec__title, .nx-contact__title, .nx-fm__big, .nx-panel__title, .nx-pf__title) em { font-family: var(--nw-display); font-style: italic; font-weight: 400; letter-spacing: -.005em; color: var(--nw-gold); }
/* Servicios: nombres largos (p. ej. «Arquitectura e interiorismo») sin pisar la descripción de la derecha */
@media (min-width: 901px) {
	.nx-offer__list { max-width: 54%; }
	.nx-offer__name { font-size: clamp(34px, 3.4vw, 60px); line-height: 1.05; }
}
/* ==========================================================================
   v4.4 · Cabecera de cristal y logo que se recoge con el scroll
   (--hp la pone el JS: 0 arriba del todo → 1 cabecera compacta)
   ========================================================================== */
.nwh { --hp: 0; --h0: 128px; --h1: 72px; }
.nwh, .nwh.is-compact { height: calc(var(--h0) - (var(--h0) - var(--h1)) * var(--hp)); transition: none; }
@media (max-width: 1024px) {
	.nwh { --h0: 100px; --h1: 64px; }
}
/* Cristal: transparente arriba, aparece poco a poco con un desenfoque suave */
.nwh-bg, .nwh.is-compact .nwh-bg { visibility: visible; opacity: var(--hp); transition: none; background: rgba(5, 21, 37, .3); -webkit-backdrop-filter: blur(18px) saturate(1.4); backdrop-filter: blur(18px) saturate(1.4); box-shadow: 0 1px 0 rgba(243, 240, 235, .1); }
html.nx-light .nwh-bg { background: rgba(243, 240, 235, .5); box-shadow: 0 1px 0 rgba(5, 21, 37, .08); }
@media (hover: none), (max-width: 1024px) {
	.nwh-bg, .nwh.is-compact .nwh-bg { -webkit-backdrop-filter: blur(14px) saturate(1.3); backdrop-filter: blur(14px) saturate(1.3); background: rgba(5, 21, 37, .36); }
	html.nx-light .nwh-bg { background: rgba(243, 240, 235, .6); }
}
/* Logo apilado: el nombre se recoge y el isotipo se reduce al ritmo del scroll */
.nwh--stack .nwh-logo img.nwh-full, .nwh--stack.is-compact .nwh-logo img.nwh-full { opacity: 1; pointer-events: auto; transition: none; clip-path: inset(0 0 calc(22% * var(--hp)) 0); transform: translateY(calc(var(--lh) * .5 * (1 - (1 - .45 * var(--hp)) * (1 - .22 * var(--hp))))) scale(calc(1 - .45 * var(--hp))); }
/* Logo crema ↔ azul también fundido con el scroll (--ld: cuánto se ve el azul) */
.nwh { --ld: 0; }
.nwh.on-light { --ld: calc(1 - var(--hp)); }
html.nx-light .nwh { --ld: var(--hp); }
html.nx-light .nwh.on-light { --ld: 1; }
.nwh--stack .nwh-logo img.nwh-full.nwh-light { display: block !important; opacity: calc(1 - var(--ld)); }
.nwh--stack .nwh-logo img.nwh-full.nwh-dark { display: block !important; position: absolute; left: 50%; top: 50%; width: auto; margin: calc(var(--lh) * -.5) 0 0 calc(var(--lh) * -.3661); opacity: var(--ld); }

/* ==========================================================================
   v4.5 · Cabecera totalmente transparente
   ========================================================================== */
.nwh-bg, .nwh.is-compact .nwh-bg { display: none; }
/* Un poco de sombra en el menú para que se lea sobre cualquier foto (no cuesta rendimiento) */
.nwh .nwh-menu a, .nwh a.nwh-ig, .nwh .nwh-theme { text-shadow: 0 1px 12px rgba(3, 13, 24, .35); }
.nwh--stack .nwh-logo img.nwh-full { filter: drop-shadow(0 2px 14px rgba(3, 13, 24, .22)); }

/* ==========================================================================
   v4.5 · Contacto «sobremesa»: foto a pantalla completa y el formulario encima
   ========================================================================== */
.nx-contact--full { min-height: 100vh; min-height: 100svh; display: flex; align-items: center; overflow: hidden; padding-top: 0; padding-bottom: 0; }
.nx-contact--full .nx-contact__head, .nx-contact--full .nx-form { position: relative; z-index: 2; }
.nx-contact--full .nw-wrap { position: static; width: 100%; grid-template-columns: 1fr minmax(0, 520px); align-items: center; padding-top: clamp(110px, 14vh, 150px); padding-bottom: clamp(56px, 8vh, 96px); }
.nx-contact__bg { position: absolute; inset: 0; z-index: 0; }
.nx-contact__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; }
.nx-contact__veil { position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(3, 13, 24, .72) 0%, rgba(3, 13, 24, .42) 48%, rgba(3, 13, 24, .2) 100%), linear-gradient(0deg, rgba(3, 13, 24, .45), rgba(3, 13, 24, 0) 40%); }
.nx-contact--full .nx-contact__title { text-shadow: 0 2px 30px rgba(0, 0, 0, .25); }
.nx-contact--full .nx-form { grid-column: auto; max-width: none; padding: clamp(24px, 3vw, 40px); background: rgba(5, 21, 37, .5); border: 1px solid rgba(243, 240, 235, .14); border-radius: 6px; }
/* En modo claro esta sección sigue siendo oscura: va sobre la foto */
html.nx-light section.nx-contact--full.nw { --nw-navy: #051525; --nw-deep: #071A2D; --nw-ink: #030D18; --nw-panel: #0A2036; --nw-paper: #F3F0EB; --nw-fg-rgb: 243, 240, 235; --nw-gold: #C5A065; }
@media (max-width: 1024px) {
	.nx-contact--full .nw-wrap { grid-template-columns: 1fr; row-gap: 36px; }
	.nx-contact__veil { background: linear-gradient(180deg, rgba(3, 13, 24, .55) 0%, rgba(3, 13, 24, .45) 45%, rgba(3, 13, 24, .78) 100%); }
}
/* Nombres de proyecto: la serif elegante (Instrument Serif), no la letra de exhibición */
.nw :is(.nx-work__title, .nx-stack__title, .nx-stack__n), :is(.parent-pageid-43, .page-id-43) .nw :is(.nx-cover-sec__title, .nx-panel__title) { font-family: var(--nw-serif); font-weight: 400; letter-spacing: -.005em; }
:is(.parent-pageid-43, .page-id-43) .nw :is(.nx-cover-sec__title, .nx-panel__title) em { font-family: var(--nw-serif); font-weight: 400; }
/* ==========================================================================
   v4.6 · Cabecera en modo «diferencia»: el logo y el menú se invierten solos
   según lo que tengan detrás (claros sobre oscuro, oscuros sobre claro)
   ========================================================================== */
.nwh { mix-blend-mode: difference; --ld: 0 !important; }
.nwh .nwh-menu a, .nwh a.nwh-ig, .nwh .nwh-theme, .nwh a.nwh-cta,
.nwh.on-light:not(.is-compact) .nwh-menu a, .nwh.on-light:not(.is-compact) a.nwh-ig, .nwh.on-light:not(.is-compact) .nwh-theme,
html.nx-light .nwh.is-compact .nwh-menu a, html.nx-light .nwh.is-compact a.nwh-ig, html.nx-light .nwh.is-compact .nwh-theme { color: #F3F0EB !important; text-shadow: none; }
.nwh .nwh-burger span, .nwh.on-light:not(.is-compact) .nwh-burger span, html.nx-light .nwh.is-compact .nwh-burger span { background: #F3F0EB !important; }
.nwh .nwh-menu .current-menu-item > a::after, .nwh .nwh-menu .current-page-ancestor > a::after { background: #F3F0EB; }
.nwh--stack .nwh-logo img.nwh-full { filter: none; }
.nwh .nwh-logo .nwh-full.nwh-dark, .nwh .nwh-logo .nwh-iso.nwh-dark { visibility: hidden; }
.nwh:not(.nwh--stack) .nwh-logo .nwh-light { display: block !important; }

/* ==========================================================================
   v4.7 · Logo en su propia capa (nunca invertido), carga de vídeo y parallax de contacto
   ========================================================================== */
.nwh-logowrap { position: fixed; top: 0; left: 50%; z-index: 9991; --hp: 0; --h0: 128px; --h1: 72px; --ld: 0; height: calc(var(--h0) - (var(--h0) - var(--h1)) * var(--hp)); transform: translateX(-50%); display: flex; align-items: center; pointer-events: none; }
.nwh-logowrap .nwh-logo { pointer-events: auto; }
.admin-bar .nwh-logowrap { top: 32px; }
@media (max-width: 1024px) {
	.nwh-logowrap { --h0: 100px; --h1: 64px; }
}
@media (max-width: 782px) {
	.admin-bar .nwh-logowrap { top: 46px; }
}
.nwh-logowrap.on-light { --ld: calc(1 - var(--hp)); }
html.nx-light .nwh-logowrap { --ld: var(--hp); }
html.nx-light .nwh-logowrap.on-light { --ld: 1; }
.nwh-logowrap.nwh--stack .nwh-logo img.nwh-full { filter: drop-shadow(0 2px 14px rgba(3, 13, 24, .22)); }
.nwh-logowrap:not(.nwh--stack) .nwh-logo .nwh-dark { display: none; }
/* Carga de vídeo */
.nx-vload { position: absolute; left: var(--nw-gutter); right: var(--nw-gutter); bottom: clamp(64px, 11vh, 120px); z-index: 3; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; row-gap: 12px; color: #F3F0EB; opacity: 0; transition: opacity .6s var(--nw-ease); pointer-events: none; }
.nx-vload.is-on { opacity: 1; }
.nx-vload.is-done { opacity: 0; transition-delay: .4s; }
.nx-vload__t { font: italic 400 clamp(17px, 1.4vw, 22px)/1 var(--nw-serif); opacity: .85; }
.nx-vload__n { font: 400 clamp(17px, 1.4vw, 22px)/1 var(--nw-serif); font-variant-numeric: tabular-nums; }
.nx-vload__line { flex: 0 0 100%; height: 1px; background: rgba(243, 240, 235, .22); overflow: hidden; }
.nx-vload__line i { display: block; height: 100%; background: #F3F0EB; transform: scaleX(0); transform-origin: 0 50%; }
/* Contacto: foto vertical a su tamaño, desplazándose con el scroll */
.nx-contact__bg.is-pan { overflow: hidden; }
.nw .nx-contact__bg.is-pan img.nx-cover { position: absolute; top: 0; left: 0; width: 100%; height: auto; object-fit: fill; will-change: transform; }
/* Portada: textos uniformes, sin cambios de letra ni resaltados en cursiva o dorado */
body.home .nw em { font-family: inherit; font-style: inherit; font-weight: inherit; font-size: inherit; letter-spacing: inherit; color: inherit; }

/* ==========================================================================
   v4.8 · Selector de idioma, carga de vídeo en servicios y retrato grande
   ========================================================================== */
/* Idioma (en ordenador, a la vista en la cabecera) */
.nwh .nwh-lang { display: flex; align-items: center; gap: 10px; margin-left: 26px; }
.nwh .nwh-lang a { font: 500 12px/1 var(--nw-cond); letter-spacing: .08em; color: rgba(243, 240, 235, .55) !important; text-decoration: none; transition: color .3s; }
.nwh .nwh-lang a:hover, .nwh .nwh-lang a.is-current { color: #F3F0EB !important; }
.nwh .nwh-lang a.is-current { text-decoration: underline; text-underline-offset: 5px; }
/* Idioma en móvil: el actual junto al logo, la lista a un toque */
.nwh-mlang { display: none; position: relative; grid-column: 1; grid-row: 1; justify-self: start; }
.nwh .nwh-mlang__btn, .nwh .nwh-mlang__btn:hover, .nwh .nwh-mlang__btn:focus { display: inline-flex; align-items: center; gap: 5px; padding: 8px 2px; background: none; border: 0; box-shadow: none; font: 500 13px/1 var(--nw-cond); letter-spacing: .1em; color: #F3F0EB; cursor: pointer; }
.nwh-mlang__btn span { font-size: 9px; transition: transform .3s; }
.nwh-mlang.is-open .nwh-mlang__btn span { transform: rotate(180deg); }
.nwh-mlang__list { position: absolute; top: 100%; left: -6px; display: flex; flex-direction: column; gap: 2px; padding: 6px; opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity .3s, transform .3s, visibility .3s; }
.nwh-mlang.is-open .nwh-mlang__list { opacity: 1; visibility: visible; transform: none; }
.nwh .nwh-mlang__list a { padding: 6px 4px; font: 500 13px/1 var(--nw-cond); letter-spacing: .1em; color: rgba(243, 240, 235, .7) !important; text-decoration: none; }
.nwh .nwh-mlang__list a.is-current { color: #F3F0EB !important; }
.nwh-mobile .nwh-lang--m { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 18px; }
.nwh-mobile .nwh-lang--m a { font: 500 13px/1 var(--nw-cond); letter-spacing: .1em; color: rgba(var(--nw-fg-rgb), .6); text-decoration: none; }
.nwh-mobile .nwh-lang--m a.is-current { color: var(--nw-paper); text-decoration: underline; text-underline-offset: 5px; }
@media (max-width: 1024px) {
	.nwh-mlang { display: block; }
}
@media (max-width: 1180px) and (min-width: 1025px) {
	.nwh .nwh-lang { gap: 7px; margin-left: 18px; }
}
/* Servicios: la línea de carga, sobre la foto del servicio activo */
.nx-offer .nx-vload { bottom: clamp(96px, 15vh, 150px); }
.nx-vload.is-away { opacity: 0 !important; }
/* Texto con retrato grande: la foto a tamaño real con parallax y el texto encima (se invierte sobre la foto) */
.nx-words--portrait .nw-wrap { display: grid; grid-template-columns: minmax(0, min(533px, 40vw)) minmax(0, 1fr); column-gap: 0; align-items: start; }
.nx-words__pic { position: relative; overflow: hidden; }
.nx-words__picin { will-change: transform; }
.nx-words__pic img { display: block; width: 100%; height: auto; transform: scale(1.08); }
.nx-words__content { position: sticky; top: 28vh; z-index: 2; margin-left: -16%; padding: 8vh 0; mix-blend-mode: difference; }
.nx-words--portrait .nx-words__text, .nx-words--portrait .nx-words__small, .nx-words--portrait .nx-words__sign, .nx-words--portrait .nx-cap { color: #F3F0EB; }
.nx-words--portrait .nx-words__foot { grid-template-columns: minmax(0, 1fr) minmax(0, 2.3fr); }
.nx-words--portrait.nx-words--pic-right .nw-wrap { grid-template-columns: minmax(0, 1fr) minmax(0, min(533px, 40vw)); }
.nx-words--portrait.nx-words--pic-right .nx-words__pic { grid-column: 2; grid-row: 1; }
.nx-words--portrait.nx-words--pic-right .nx-words__content { grid-column: 1; grid-row: 1; margin-left: 0; margin-right: -16%; }
@media (max-width: 767px) {
	.nx-words--portrait .nw-wrap, .nx-words--portrait.nx-words--pic-right .nw-wrap { grid-template-columns: 1fr; }
	.nx-words--portrait .nx-words__pic, .nx-words--portrait.nx-words--pic-right .nx-words__pic { grid-column: 1; grid-row: 1; width: 78%; }
	.nx-words__content, .nx-words--portrait.nx-words--pic-right .nx-words__content { position: relative; top: auto; grid-column: 1; grid-row: 2; margin: -48vh 0 0; padding: 0; }
}
/* ==========================================================================
   v4.9 · Títulos de cabecera: Instrument Serif (como los demás títulos)
   ========================================================================== */
.nw :is(.nx-reel__line, .nx-cover-sec__title, .nx-contact__title) { font-family: var(--nw-display); font-weight: 400; letter-spacing: -.01em; }
/* Portada: la frase más grande e imponente */
.nx-reel__text--center .nx-reel__line { max-width: min(1120px, 90vw); font-size: clamp(34px, 4.4vw, 76px); line-height: 1.04; }
@media (max-width: 767px) {
	.nx-reel__text--center .nx-reel__line { font-size: clamp(32px, 9vw, 42px); }
}
/* Sin resaltados en los títulos: la parte entre *asteriscos* va igual que el resto (ni cursiva ni dorado) */
.nw em, .nwf-title em { font-family: inherit !important; font-style: inherit !important; font-weight: inherit !important; font-size: inherit !important; letter-spacing: inherit !important; color: inherit !important; }
.nw .nx-reel__line { text-shadow: 0 2px 36px rgba(3, 13, 24, .45), 0 1px 3px rgba(3, 13, 24, .25); }
/* El logo nunca en azul (el azul solo se usa como favicon): siempre la versión crema */
.nwh-logowrap, .nwh-logowrap.on-light, html.nx-light .nwh-logowrap, html.nx-light .nwh-logowrap.on-light { --ld: 0 !important; }
.nwh-logowrap.nwh--stack .nwh-logo img.nwh-full.nwh-dark, .nwh-logowrap .nwh-logo img.nwh-dark, .nwh .nwh-logo img.nwh-dark { display: none !important; }
/* Mosaico: el título entra entero de golpe (un solo movimiento: de desenfocado a nítido, subiendo) */
.nx-fm--intro .nx-fm__over .nx-fm__big { opacity: 0; filter: blur(14px); transform: translate3d(0, .45em, 0); transition: opacity 1s var(--nw-ease), filter 1.1s var(--nw-ease), transform 1.2s var(--nw-ease); }
.nx-fm--intro .nx-fm__over .nx-fm__big.is-in, .nx-fm--intro.is-static .nx-fm__over .nx-fm__big, .elementor-editor-active .nx-fm--intro .nx-fm__over .nx-fm__big { opacity: 1; filter: none; transform: none; }

/* ==========================================================================
   v5.0 · Pie con formulario de contacto compacto (y el email, discreto)
   ========================================================================== */
.nwf-top { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(40px, 6vw, 120px); align-items: start; padding-top: clamp(96px, 10vw, 150px); padding-bottom: clamp(64px, 7vw, 110px); }
.nwf-top.has-form { grid-template-columns: minmax(0, 1fr) minmax(0, 560px); }
.nwf-title { margin: 0; max-width: 16em; font: 400 clamp(28px, 2.8vw, 44px)/1.12 var(--nw-display); letter-spacing: -.01em; color: var(--nw-paper); }
.nwf-sub { max-width: 420px; margin: 16px 0 0; font: 300 16px/1.55 var(--nw-sans); color: rgba(var(--nw-fg-rgb), .62); }
.nwf a.nwf-mail { margin-top: 26px; font: 400 clamp(18px, 1.5vw, 22px)/1.3 var(--nw-sans); letter-spacing: 0; background-size: 100% 1px; }
.nwf-form { display: flex; flex-direction: column; gap: 20px; }
.nwf-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.nwf-form label { display: flex; flex-direction: column; gap: 8px; }
.nwf-form label > span { font: 500 11.5px/1.3 var(--nw-cond); letter-spacing: .08em; text-transform: uppercase; color: rgba(var(--nw-fg-rgb), .5); }
:is(.nwf, .nx-panel__form) .nwf-form input:not([type=checkbox]), :is(.nwf, .nx-panel__form) .nwf-form textarea { width: 100%; padding: 8px 0 10px; border: 0; border-bottom: 1px solid rgba(var(--nw-fg-rgb), .25); border-radius: 0; background: transparent; box-shadow: none; outline: 0; color: var(--nw-paper); font: 400 16px/1.4 var(--nw-sans); }
:is(.nwf, .nx-panel__form) .nwf-form input:focus, :is(.nwf, .nx-panel__form) .nwf-form textarea:focus { border-bottom-color: var(--nw-gold); }
:is(.nwf, .nx-panel__form) .nwf-form textarea { min-height: 84px; resize: vertical; }
.nwf-form__end { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px; }
:is(.nwf, .nx-panel__form) .nwf-form .nwf-form__check { flex-direction: row; align-items: flex-start; gap: 10px; font-size: 13.5px; line-height: 1.4; color: rgba(var(--nw-fg-rgb), .6); cursor: pointer; }
:is(.nwf, .nx-panel__form) .nwf-form .nwf-form__check input { width: 16px; height: 16px; flex: 0 0 16px; margin: 2px 0 0; accent-color: var(--nw-gold); }
:is(.nwf, .nx-panel__form) .nwf-form__check a { color: var(--nw-paper); }
:is(.nwf, .nx-panel__form) .nwf-form__btn, :is(.nwf, .nx-panel__form) .nwf-form__btn:focus { padding: 13px 28px; border: 1px solid rgba(var(--nw-fg-rgb), .35); border-radius: 999px; background: none; box-shadow: none; color: var(--nw-paper); font: 500 13px/1 var(--nw-cond); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; transition: background-color .3s, color .3s, border-color .3s; }
:is(.nwf, .nx-panel__form) .nwf-form__btn:hover { background: var(--nw-paper); border-color: var(--nw-paper); color: var(--nw-ink); }
:is(.nwf, .nx-panel__form) .nwf-form__btn:disabled { opacity: .5; cursor: default; }
.nwf-form .nw-form__msg { margin: 0; font-size: 14px; color: rgba(var(--nw-fg-rgb), .75); }
.nwf-form .nw-form__msg.is-ok { color: var(--nw-gold); font: 400 20px/1.3 var(--nw-display); }
@media (max-width: 900px) {
	.nwf-top.has-form { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 560px) {
	.nwf-form__row { grid-template-columns: 1fr; }
	:is(.nwf, .nx-panel__form) .nwf-form__btn { width: 100%; }
}
:is(.nwf, .nx-panel__form) .nwf-form { background: none; padding: 0; border: 0; box-shadow: none; }
/* Bloque final con formulario: el texto a la izquierda y el formulario sobre la foto, en una tarjeta */
.nx-panel--form { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 520px); align-items: center; gap: clamp(40px, 6vw, 110px); height: auto; min-height: 100vh; min-height: 100svh; padding: clamp(110px, 14vh, 150px) max(var(--nw-gutter), 8vw) clamp(64px, 9vh, 110px); }
.nx-panel--form .nx-panel__text { position: relative; left: auto; right: auto; top: auto; bottom: auto; transform: none; width: auto; max-width: 480px; text-align: left; }
.nx-panel__form { position: relative; z-index: 2; }
.nx-panel__form .nwf-form { padding: clamp(24px, 3vw, 40px); background: rgba(5, 21, 37, .55); border: 1px solid rgba(243, 240, 235, .14); border-radius: 6px; }
@media (max-width: 900px) {
	.nx-panel--form { grid-template-columns: minmax(0, 1fr); align-content: end; }
}
/* Con formulario, la línea «Cuéntanos tu proyecto» sobra; etiquetas algo más legibles sobre la foto */
.nx-panel--form .nx-panel__line { display: none; }
.nx-panel__form .nwf-form { background: rgba(5, 21, 37, .62); }
.nx-panel__form .nwf-form label > span, .nx-panel__form .nwf-form .nwf-form__check { color: rgba(243, 240, 235, .78); }
/* Accesibilidad: zonas táctiles de 24 px en el selector de idioma; el destino del salto no enseña marco */
.nwh .nwh-lang a, .nwh-mobile .nwh-lang--m a { min-width: 24px; min-height: 24px; display: inline-flex; align-items: center; justify-content: center; }
main#content { display: block; }
main#content:focus { outline: 0; }
/* ==========================================================================
   v5.4 · Aviso de cookies: pequeño, abajo a la izquierda, dos botones iguales
   ========================================================================== */
.nx-consent { position: fixed; left: var(--nw-gutter); bottom: var(--nw-gutter); z-index: 9995; width: min(400px, calc(100vw - 2 * var(--nw-gutter))); padding: 20px 22px; background: rgba(5, 21, 37, .94); border: 1px solid rgba(243, 240, 235, .14); border-radius: 6px; color: #F3F0EB; font: 400 14px/1.5 var(--nw-sans); opacity: 0; transform: translateY(12px); transition: opacity .4s var(--nw-ease), transform .4s var(--nw-ease); }
.nx-consent.is-on { opacity: 1; transform: none; }
.nx-consent p { margin: 0 0 16px; color: rgba(243, 240, 235, .82); }
.nx-consent a { color: #F3F0EB; text-decoration: underline; text-underline-offset: 3px; }
.nx-consent__btns { display: flex; gap: 10px; }
.nx-consent__btns button { flex: 1; min-height: 40px; padding: 10px 16px; border: 1px solid rgba(243, 240, 235, .4); border-radius: 999px; background: none; color: #F3F0EB; font: 500 12.5px/1 var(--nw-cond); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; transition: background-color .3s, color .3s; }
.nx-consent__btns button:hover, .nx-consent__btns button:focus-visible { background: #F3F0EB; color: #051525; }
.nwf-legal a[data-nw-cookies] { cursor: pointer; }
/* Menú móvil: el botón responde al primer toque y queda por encima de cualquier capa */
.nwh .nwh-burger { position: relative; z-index: 3; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
/* Idioma en escritorio: desplegable «ES ▾» (como en el móvil), a la derecha; se abre al pasar el ratón o al pulsar */
.nwh .nwh-mlang--d { display: block; grid-column: auto; grid-row: auto; margin-left: 26px; }
.nwh .nwh-mlang--d .nwh-mlang__btn { font-size: 12.5px; }
.nwh .nwh-mlang--d .nwh-mlang__list { left: auto; right: -8px; padding-top: 8px; }
.nwh .nwh-mlang--d:hover .nwh-mlang__list, .nwh .nwh-mlang--d:focus-within .nwh-mlang__list { opacity: 1; visibility: visible; transform: none; }
.nwh .nwh-mlang--d:hover .nwh-mlang__btn span { transform: rotate(180deg); }
/* Menú desplegable con algo de transparencia: se intuye la foto de detrás (sin desenfoque) */
.nwh-mobile { background: rgba(5, 21, 37, .6); }
html.nx-light .nwh-mobile { background: rgba(243, 240, 235, .5); }
body:has(.nwh-mobile.is-open) main#content :is(h1, h2, h3, p, blockquote, .nx-cap, .nx-reel__line, .nx-cover-sec__credits, .nx-stack__row, .nx-stack__btn, .nx-panel__line, .nx-panel__form, .nx-offer__list) { opacity: 0; transition: opacity .3s; }
