/*
 * JC Obras: diseño de My Works y de las páginas de proyecto. Solo se carga en esas páginas.
 *
 * Cada bloque de Elementor lleva una clase de rol (Avanzado > Clases CSS) y este archivo define
 * su espaciado, tipografía y comportamiento responsive. Por eso esos bloques no tienen paddings,
 * márgenes ni tamaños propios en Elementor.
 *
 *   jc-sec          sección de contenido (espaciado vertical y márgenes laterales comunes)
 *   jc-sec--tight   sección de un artículo continuo (menos espacio)
 *   jc-split        título a la izquierda y texto a la derecha en escritorio
 *   jc-hero         portada con imagen de fondo
 *   jc-media        vídeo de fondo a sangre, 16:9 (jc-media--43 para vídeos 4:3)
 *   jc-figure, jc-gallery, jc-video, jc-musica, jc-nav-sec
 *   jc-works-intro, jc-card, jc-card-link (My Works)
 */

body.jc-obra {
	--jc-bg: #000;
	--jc-fg: #fff;
	--jc-text: rgba(255, 255, 255, .8);
	--jc-muted: rgba(255, 255, 255, .58);
	--jc-line: rgba(255, 255, 255, .14);
	--jc-accent: #fff;
	--jc-max: 1240px;
	--jc-measure: 66ch;
	--jc-gutter: clamp(20px, 5vw, 64px);
	/* En vw y no en %: el % de un padding se mide sobre el padre, que no es igual de ancho para una
	   sección estirada (caja de 1222 px del tema) que para un widget dentro de ella. */
	--jc-inset: max(var(--jc-gutter), calc((100vw - var(--jc-max)) / 2));
	--jc-space: clamp(72px, 9vw, 152px);
	--jc-space-tight: clamp(36px, 4.5vw, 64px);
	--jc-sticky-top: 104px;
	--jc-ease: cubic-bezier(.22, 1, .36, 1);
	background-color: var(--jc-bg);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body.jc-obra--liminal { --jc-accent: #35e0d8; }
body.jc-obra--garden { --jc-accent: #c79bff; }
body.jc-obra--logical { --jc-accent: #ff62d4; }
body.jc-obra--multivertice { --jc-accent: #f0d566; }
body.jc-obra--face { --jc-accent: #dcab78; --jc-bg: #0b0908; }
body.jc-obra--story { --jc-accent: var(--jc-identidad, #35e0d8); }
body.jc-obra--metacosmos { --jc-accent: var(--jc-identidad, #35e0d8); }

/* El tema pinta la página en #1a1a1a: se veían franjas grises entre bloques y tras el último. */
body.jc-obra .main-page-wrapper,
body.jc-obra .wd-page-content,
body.jc-obra .website-wrapper {
	background-color: var(--jc-bg);
}

body.jc-obra ::selection {
	background: var(--jc-accent);
	color: #000;
}

/* ------------------------------------------------------------------ tipografía */

body.jc-obra .jc-sec .wd-text-block {
	max-width: var(--jc-measure);
	color: var(--jc-text);
	font-weight: 400;
	font-size: clamp(16px, .25vw + 15.2px, 18.5px);
	line-height: 1.78;
}

/* En móvil, "pretty" acorta visiblemente las últimas líneas de cada párrafo. */
@media (min-width: 768px) {
	body.jc-obra .jc-sec .wd-text-block {
		text-wrap: pretty;
	}
}

body.jc-obra .jc-sec .wd-text-block p {
	margin-bottom: 1.15em;
}

body.jc-obra .jc-sec .wd-text-block :is(strong, b) {
	color: var(--jc-fg);
	font-weight: 700;
}

body.jc-obra .jc-sec .wd-text-block em {
	color: var(--jc-fg);
}

body.jc-obra .jc-sec .wd-text-block a {
	color: var(--jc-fg);
	text-decoration: underline;
	text-decoration-color: var(--jc-accent);
	text-underline-offset: .2em;
}

body.jc-obra :is(.jc-sec, .jc-hero, .jc-card) .title-wrapper {
	--wd-mb: 0;
	margin-bottom: 0;
}

body.jc-obra :is(.jc-sec, .jc-hero, .jc-card) .title-wrapper .title {
	color: var(--jc-fg);
	font-weight: 600;
	letter-spacing: -.012em;
	line-height: 1.14;
	text-wrap: balance;
	font-size: clamp(26px, 1.25vw + 19px, 40px);
}

body.jc-obra :is(.jc-sec, .jc-hero, .jc-card) .title-wrapper h1.title {
	font-size: clamp(38px, 3.4vw + 20px, 76px);
	line-height: 1.03;
	letter-spacing: -.024em;
}

/* Antetítulo (campo "Subtítulo" del título de WoodMart). */
body.jc-obra :is(.jc-sec, .jc-hero, .jc-card) .title-wrapper .title-subtitle {
	margin-bottom: 14px;
	color: var(--jc-accent);
	font-family: var(--wd-text-font);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .22em;
	text-transform: uppercase;
}

/* Entradilla bajo el título (campo "Después del título"). */
body.jc-obra :is(.jc-sec, .jc-hero, .jc-card) .title-wrapper .title-after_title {
	margin-top: 18px;
	max-width: 36ch;
	color: rgba(255, 255, 255, .86);
	font-size: clamp(17px, .5vw + 15px, 21px);
	font-weight: 400;
	line-height: 1.55;
}

/* Raya de acento sobre los títulos de sección. */
body.jc-obra .jc-split > .elementor-widget-wd_title .title-wrapper::before,
body.jc-obra .jc-split__aside > .elementor-widget-wd_title .title-wrapper::before,
body.jc-obra :is(.jc-gallery, .jc-figure, .jc-video, .jc-works3, .jc-grid-sec) > .elementor-widget-wd_title .title-wrapper::before {
	content: "";
	display: block;
	width: 40px;
	height: 2px;
	margin-bottom: 22px;
	background: var(--jc-accent);
}

/* ------------------------------------------------------------------ secciones */

body.jc-obra .e-con.jc-sec {
	--padding-top: var(--jc-space);
	--padding-bottom: var(--jc-space);
	--padding-left: var(--jc-inset);
	--padding-right: var(--jc-inset);
	--gap: 32px;
	--row-gap: 32px;
	--column-gap: 32px;
	background-color: var(--jc-bg);
}

body.jc-obra .e-con.jc-sec--tight {
	--padding-top: var(--jc-space-tight);
	--padding-bottom: var(--jc-space-tight);
}

/* Dos secciones seguidas comparten un solo espacio. */
body.jc-obra .e-con.jc-sec + .e-con.jc-sec {
	--padding-top: 0px;
}

body.jc-obra .e-con.jc-sec > .elementor-widget {
	margin-block-end: 0;
}

@media (min-width: 1025px) {
	body.jc-obra .e-con.jc-split {
		--display: grid;
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		column-gap: clamp(48px, 6vw, 120px);
		row-gap: 0;
		align-items: start;
	}

	body.jc-obra .jc-split > .elementor-widget-wd_title {
		grid-column: 1;
		position: sticky;
		top: var(--jc-sticky-top);
	}

	body.jc-obra .jc-split > .elementor-widget-wd_text_block {
		grid-column: 2;
	}
}

@media (max-width: 1024px) {
	body.jc-obra .jc-split > .elementor-widget-wd_title + .elementor-widget-wd_text_block {
		margin-top: 4px;
	}
}

/* ------------------------------------------------------------------ portadas y vídeo */

body.jc-obra .e-con.jc-hero {
	--min-height: clamp(380px, 76svh, 860px);
	--padding-left: var(--jc-inset);
	--padding-right: var(--jc-inset);
	--justify-content: center;
	--align-items: center;
	overflow: hidden;
}

body.jc-obra .e-con.jc-media {
	--min-height: 0px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	width: 100%;
	aspect-ratio: 16 / 9;
	max-height: 92svh;
	overflow: hidden;
	background-color: #000;
}

body.jc-obra .e-con.jc-media--43 {
	aspect-ratio: 4 / 3;
}

@media (min-width: 1025px) {
	/* Un 4:3 a toda la anchura no cabe en pantalla: se muestra centrado y completo. */
	body.jc-obra .e-con.jc-media--43 {
		width: min(100%, calc(92svh * 4 / 3));
		margin-inline: auto;
	}
}

/* Vídeo de fondo con carga diferida (lo crea obras.js). Usa la clase de Elementor para heredar
   el overlay que el editor define en cada bloque. */
body.jc-obra .jc-bgv {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
	pointer-events: none;
	container-type: size;
}

body.jc-obra .jc-bgv iframe {
	position: absolute;
	top: 50%;
	left: 50%;
	width: max(100cqw, 177.78cqh);
	height: max(100cqh, 56.25cqw);
	max-width: none;
	max-height: none;
	border: 0;
	/* El 18 % extra recorta la barra con el nombre del canal que YouTube pinta arriba. */
	transform: translate(-50%, -50%) scale(1.18);
	opacity: 0;
	transition: opacity 1.2s ease;
}

body.jc-obra .jc-bgv.is-playing iframe {
	opacity: 1;
}

body.jc-obra .jc-bgv-host > :not(.jc-bgv, .e-con-inner, .jc-card-link),
body.jc-obra .jc-bgv-host > .e-con-inner > :not(.jc-bgv) {
	position: relative;
	z-index: 1;
}

/* Imagen o vídeo incrustado dentro del ancho de lectura. */
body.jc-obra .jc-figure img {
	display: block;
	width: 100%;
	height: auto;
}

body.jc-obra .jc-video .elementor-widget-video {
	width: 100%;
	max-width: 1100px;
}

body.jc-obra .jc-video .elementor-wrapper {
	overflow: hidden;
	border: 1px solid var(--jc-line);
	background: #000;
}

/* Carruseles: el título alineado con el texto y las imágenes a sangre. */
body.jc-obra .e-con.jc-gallery {
	--padding-left: 0px;
	--padding-right: 0px;
}

body.jc-obra .jc-gallery > .elementor-widget-wd_title {
	padding-inline: var(--jc-inset);
}

body.jc-obra .jc-gallery .wd-carousel-item img,
body.jc-obra .jc-figure img {
	transition: transform 1.2s var(--jc-ease), filter .6s ease;
}

body.jc-obra .jc-gallery .wd-carousel-item {
	overflow: hidden;
}

@media (hover: hover) {
	body.jc-obra .jc-gallery .wd-carousel-item:hover img {
		transform: scale(1.035);
	}
}

/* ------------------------------------------------------------------ The Face of Letters */

body.jc-obra .e-con.jc-hero--epigraph {
	--min-height: clamp(320px, 62svh, 720px);
	text-align: center;
}

body.jc-obra .jc-epigraph .title-wrapper .title {
	max-width: 22ch;
	margin-inline: auto;
	font-size: clamp(28px, 2.6vw + 16px, 58px);
	line-height: 1.12;
	text-shadow: 0 2px 24px rgba(0, 0, 0, .45);
}

/* ------------------------------------------------------------------ My Story */

/* Imagen a sangre con la proporción de la obra (jc-band--169, jc-band--1610). */
body.jc-obra .e-con.jc-band {
	--min-height: 0px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	width: 100%;
	aspect-ratio: 16 / 9;
	max-height: 92svh;
	background-color: #000;
}

/* Banda decorativa (Fibonacci en My Story): admite recorte, así que no ocupa toda la pantalla. */
body.jc-obra .e-con.jc-band--1610 {
	aspect-ratio: 16 / 10;
	max-height: 64svh;
}

/* Columna izquierda con título y figura (Origin & Epiphany). */
body.jc-obra .e-con.jc-split__aside {
	--gap: 32px;
	--row-gap: 32px;
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: 0px;
	--padding-right: 0px;
}

body.jc-obra .jc-split__aside .elementor-widget-image img {
	display: block;
	width: 100%;
	max-width: 300px;
	height: auto;
	filter: grayscale(.1) contrast(1.04);
}

@media (min-width: 1025px) {
	body.jc-obra .jc-split > .jc-split__aside {
		grid-column: 1;
		position: sticky;
		top: var(--jc-sticky-top);
	}
}

@media (max-width: 1024px) {
	body.jc-obra .jc-split__aside .elementor-widget-image img {
		max-width: min(240px, 62vw);
	}
}

/* Pie de obra: "Título · técnica · medidas · año", alineado con el texto. */
body.jc-obra .jc-gallery > .jc-caption {
	margin-top: -12px;
	padding-inline: var(--jc-inset);
}

body.jc-obra .jc-sec .jc-caption .wd-text-block {
	max-width: none;
	color: var(--jc-muted);
	font-size: 13px;
	line-height: 1.6;
	letter-spacing: .02em;
}

body.jc-obra .jc-sec .jc-caption .wd-text-block strong {
	color: var(--jc-fg);
	letter-spacing: .04em;
}

/* Periodo 3: los tres vídeos en rejilla, todos 4:3. */
@media (min-width: 768px) {
	body.jc-obra .e-con.jc-works3 {
		--display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		column-gap: 12px;
		row-gap: 32px;
	}

	body.jc-obra .jc-works3 > .elementor-widget-wd_title {
		grid-column: 1 / -1;
	}
}

body.jc-obra .e-con.jc-works3 > .e-con.jc-media {
	width: 100%;
	max-height: none;
	margin: 0;
	aspect-ratio: 4 / 3;
}

/* Rejilla de proyectos ([jc_obras_grid]): las mismas piezas que la navegación entre proyectos. En
   escritorio, todos los proyectos en una fila, sean cuantos sean. */
body.jc-obra .jc-grid {
	display: grid;
	grid-auto-columns: minmax(0, 1fr);
	grid-auto-flow: column;
	gap: 1px;
	border: 1px solid var(--jc-line);
	background: var(--jc-line);
}

body.jc-obra .jc-grid .jc-nav__item {
	min-height: clamp(240px, 26vw, 380px);
}

@media (max-width: 1024px) {
	body.jc-obra .jc-grid {
		grid-auto-flow: row;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	body.jc-obra .jc-grid .jc-nav__item {
		min-height: clamp(180px, 46vw, 300px);
	}

	/* Con un número impar de proyectos, el primero ocupa toda la fila. */
	body.jc-obra .jc-grid .jc-nav__item:first-child:nth-last-child(odd) {
		grid-column: 1 / -1;
	}
}

/* ------------------------------------------------------------------ My Works */

body.jc-obra .e-con.jc-works-intro {
	--padding-top: clamp(120px, 12vw, 200px);
	--padding-bottom: clamp(48px, 6vw, 96px);
}

body.jc-obra .jc-works-intro .title-wrapper .title-after_title {
	max-width: 30ch;
}

body.jc-obra--works .main-page-wrapper {
	counter-reset: jc-card;
}

body.jc-obra .e-con.jc-card {
	--min-height: clamp(440px, 80svh, 900px);
	--padding-top: 0px;
	--padding-bottom: 0px;
	--padding-left: var(--jc-inset);
	--padding-right: var(--jc-inset);
	--justify-content: center;
	--align-items: center;
	counter-increment: jc-card;
	overflow: hidden;
	isolation: isolate;
	border-top: 1px solid var(--jc-line);
}

body.jc-obra .e-con.jc-card-link {
	--padding-top: 48px;
	--padding-bottom: 48px;
	--width: min(100%, 720px);
	--position: static;
	color: var(--jc-fg);
	text-align: center;
	text-decoration: none;
}

body.jc-obra .jc-card-link > .elementor-widget {
	position: relative;
	z-index: 1;
}

/* Toda la tarjeta es un enlace: el <a> real envuelve solo el título y su ::after cubre la tarjeta. */
body.jc-obra .jc-card-link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 2;
}

body.jc-obra .jc-card .title-wrapper::before {
	content: counter(jc-card, decimal-leading-zero);
	display: block;
	margin-bottom: 18px;
	color: rgba(255, 255, 255, .7);
	font-family: var(--wd-text-font);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .24em;
}

body.jc-obra .jc-card .title-wrapper .title {
	font-size: clamp(32px, 3.2vw + 14px, 68px);
	line-height: 1.04;
	letter-spacing: -.02em;
	transition: letter-spacing .8s var(--jc-ease);
}

body.jc-obra .jc-card .title-wrapper .title-after_title {
	max-width: 40ch;
	margin-inline: auto;
	color: rgba(255, 255, 255, .84);
}

/* Llamada a la acción: último párrafo de la entradilla. WoodMart filtra ese campo con wp_kses y
   quita las clases, por eso se selecciona por posición y la flecha la pone el CSS. */
body.jc-obra .jc-card .title-after_title > p:last-child {
	display: inline-flex;
	gap: .6em;
	margin-top: 26px;
	padding: 14px 24px;
	border: 1px solid rgba(255, 255, 255, .45);
	border-radius: 0;
	color: var(--jc-fg);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	transition: background-color .4s ease, color .4s ease, border-color .4s ease;
}

body.jc-obra .jc-card .title-after_title > p:last-child::after {
	content: "→";
	transition: transform .4s var(--jc-ease);
}

/* Fondo: deriva lenta y, al pasar el ratón, la obra se aclara y se acerca. */
body.jc-obra .jc-card > :is(.jc-bgv, .elementor-background-slideshow),
body.jc-obra .jc-card > .e-con-inner > :is(.jc-bgv, .elementor-background-slideshow) {
	transition: transform 1.6s var(--jc-ease);
}

@media (hover: hover) {
	body.jc-obra .jc-card:hover > :is(.jc-bgv, .elementor-background-slideshow) {
		transform: scale(1.04);
	}

	body.jc-obra .jc-card:hover .title {
		letter-spacing: 0;
	}

	body.jc-obra .jc-card:hover .title-after_title > p:last-child {
		background: #fff;
		border-color: #fff;
		color: #000;
	}

	body.jc-obra .jc-card:hover .title-after_title > p:last-child::after {
		transform: translateX(4px);
	}
}

body.jc-obra .jc-card:focus-within .title-after_title > p:last-child {
	background: #fff;
	color: #000;
}

body.jc-obra .jc-card-link:focus-visible {
	outline: none;
}

body.jc-obra .jc-card:has(.jc-card-link:focus-visible) {
	outline: 2px solid #fff;
	outline-offset: -6px;
}

/* ------------------------------------------------------------------ navegación entre proyectos */

/* Un solo bloque de esquinas rectas, como las tarjetas y las rayas de acento del resto de la web.
   Las líneas de 1 px son el fondo del contenedor asomando entre las piezas (gap: 1px). */
body.jc-obra .e-con.jc-nav-sec {
	--padding-top: var(--jc-space-tight);
	--padding-bottom: var(--jc-space-tight);
}

body.jc-obra .jc-nav {
	display: grid;
	grid-template-columns: minmax(0, 1fr) clamp(150px, 14vw, 210px) minmax(0, 1fr);
	gap: 1px;
	border: 1px solid var(--jc-line);
	background: var(--jc-line);
}

body.jc-obra .jc-nav__item,
body.jc-obra .jc-nav__all {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	background: var(--jc-bg);
	color: var(--jc-fg);
	text-decoration: none;
}

body.jc-obra .jc-nav__item {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 12px;
	min-height: clamp(200px, 22vw, 320px);
	padding: clamp(20px, 2.4vw, 36px);
}

body.jc-obra .jc-nav__item--next {
	align-items: flex-end;
	text-align: right;
}

body.jc-obra .jc-nav__img {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: .42;
	transition: transform 1.2s var(--jc-ease), opacity .5s ease;
}

body.jc-obra .jc-nav__item::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(180deg, rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, .85));
}

/* Raya de acento que crece desde el lado hacia el que se navega. */
body.jc-obra .jc-nav__item::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 2px;
	background: var(--jc-accent);
	transform: scaleX(0);
	transform-origin: 0 50%;
	transition: transform .6s var(--jc-ease);
}

body.jc-obra .jc-nav__item--prev::after {
	transform-origin: 100% 50%;
}

body.jc-obra .jc-nav__label {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: rgba(255, 255, 255, .75);
	font-family: var(--wd-text-font);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .2em;
	text-transform: uppercase;
}

body.jc-obra .jc-nav__arrow {
	width: 18px;
	height: 18px;
	flex: none;
	transition: transform .4s var(--jc-ease);
}

body.jc-obra .jc-nav__title {
	font-family: var(--wd-title-font);
	font-size: clamp(20px, 1.3vw + 14px, 34px);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -.01em;
	text-wrap: balance;
}

body.jc-obra .jc-nav__all {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 16px;
	padding: 20px;
	font-family: var(--wd-text-font);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .2em;
	line-height: 1.5;
	text-align: center;
	text-transform: uppercase;
	transition: background-color .35s ease, color .35s ease;
}

/* Icono de rejilla: cuatro cuadrados dibujados con degradados del color del texto. */
body.jc-obra .jc-nav__grid {
	width: 18px;
	height: 18px;
	flex: none;
	background:
		linear-gradient(currentColor 0 0) 0 0 / 7px 7px no-repeat,
		linear-gradient(currentColor 0 0) 100% 0 / 7px 7px no-repeat,
		linear-gradient(currentColor 0 0) 0 100% / 7px 7px no-repeat,
		linear-gradient(currentColor 0 0) 100% 100% / 7px 7px no-repeat;
	transition: transform .5s var(--jc-ease);
}

@media (hover: hover) {
	body.jc-obra .jc-nav__item:hover .jc-nav__img {
		transform: scale(1.05);
		opacity: .7;
	}

	body.jc-obra .jc-nav__item:hover::after {
		transform: scaleX(1);
	}

	body.jc-obra .jc-nav__item--prev:hover .jc-nav__arrow {
		transform: translateX(-4px);
	}

	body.jc-obra .jc-nav__item--next:hover .jc-nav__arrow {
		transform: translateX(4px);
	}

	body.jc-obra .jc-nav__all:hover {
		background: #fff;
		color: #000;
	}

	body.jc-obra .jc-nav__all:hover .jc-nav__grid {
		transform: rotate(90deg);
	}
}

body.jc-obra :is(.jc-nav__item, .jc-nav__all):focus-visible {
	outline: 2px solid #fff;
	outline-offset: -4px;
}

body.jc-obra .jc-nav__item:focus-visible::after {
	transform: scaleX(1);
}

/* Móvil: las dos imágenes arriba y "All projects" como barra a todo el ancho, unida al bloque. */
@media (max-width: 767px) {
	body.jc-obra .jc-nav {
		grid-template-columns: 1fr 1fr;
	}

	body.jc-obra .jc-nav__item {
		min-height: 172px;
		padding: 16px;
		gap: 8px;
	}

	body.jc-obra .jc-nav__label {
		gap: 8px;
		font-size: 10px;
		letter-spacing: .16em;
	}

	body.jc-obra .jc-nav__arrow {
		width: 16px;
		height: 16px;
	}

	body.jc-obra .jc-nav__title {
		font-size: 18px;
	}

	body.jc-obra .jc-nav__all {
		grid-column: 1 / -1;
		grid-row: 2;
		flex-direction: row;
		gap: 12px;
		min-height: 56px;
		padding: 0 16px;
	}

	body.jc-obra .jc-nav__all:active {
		background: #fff;
		color: #000;
	}
}

/* ------------------------------------------------------------------ efectos */

/* Barra de lectura: animación ligada al scroll, sin JavaScript (Chrome, Edge y Safari 26). */
.jc-progress {
	display: none;
}

@supports (animation-timeline: scroll()) {
	body.jc-obra:not(.jc-obra--works) .jc-progress {
		display: block;
		position: fixed;
		top: 0;
		left: 0;
		right: 0;
		z-index: 99990;
		height: 2px;
		background: var(--jc-accent);
		transform-origin: 0 50%;
		animation: jc-progress linear both;
		animation-timeline: scroll(root block);
		pointer-events: none;
	}
}

@keyframes jc-progress {
	from { transform: scaleX(0); }
	to { transform: scaleX(1); }
}

/* Entradas al hacer scroll. html.jc-anim lo pone el <head> y obras.js añade .is-in. */
@media (prefers-reduced-motion: no-preference) {
	html.jc-anim body.jc-obra :is(.jc-sec, .jc-card) :is(.elementor-widget-wd_title, .elementor-widget-wd_text_block, .elementor-widget-wd_images_gallery, .elementor-widget-video, .jdm, .jc-nav, .jc-grid),
	html.jc-anim body.jc-obra .jc-media {
		opacity: 0;
		transform: translate3d(0, 28px, 0);
		transition: opacity 1s var(--jc-ease), transform 1.2s var(--jc-ease);
	}

	html.jc-anim body.jc-obra .jc-media {
		transform: scale(1.025);
	}

	html.jc-anim body.jc-obra .jc-split > .elementor-widget-wd_text_block {
		transition-delay: .12s;
	}

	html.jc-anim body.jc-obra .is-in.is-in {
		opacity: 1;
		transform: none;
	}

	/* El H1, la portada y las tarjetas de arriba no esperan al JavaScript (afectaría al LCP). */
	html.jc-anim body.jc-obra .elementor > .e-con:nth-child(-n+2) :is(.elementor-widget-wd_title, .elementor-widget-wd_text_block),
	html.jc-anim body.jc-obra .elementor > .e-con.jc-media:first-child {
		opacity: 1;
		transform: none;
		animation: jc-fade-up 1s var(--jc-ease) both;
	}

	html.jc-anim body.jc-obra .elementor > .e-con:nth-child(-n+2) .elementor-widget-wd_text_block {
		animation-delay: .15s;
	}

	html.jc-anim body.jc-obra .elementor > .e-con.jc-media:first-child {
		animation-name: jc-fade;
	}
}

@keyframes jc-fade-up {
	from { opacity: 0; transform: translate3d(0, 18px, 0); }
	to { opacity: 1; transform: none; }
}

@keyframes jc-fade {
	from { opacity: 0; }
	to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
	body.jc-obra *,
	body.jc-obra *::before,
	body.jc-obra *::after {
		transition-duration: .01ms !important;
		animation-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}
