/*
Theme Name: NUTA Espazioa
Theme URI: https://nuta.eus
Description: Tema hijo de Twenty Twenty-Five con la identidad de NUTA Espazioa: tinta casi negra, blanco de galería y el acento lima. Cabecera y pie propios; el resto lo hereda del padre.
Author: NUTA Espazioa
Template: twentytwentyfive
Version: 1.0.0
Requires at least: 6.7
Requires PHP: 8.0
Text Domain: nuta-espazioa
*/

/* ==========================================================================
   Identidad. Los mismos tonos que el panel y los emails: una sola marca.
   ========================================================================== */
:root {
	--nuta-ink: #304254;
	--nuta-lima: #FF6D4D;
	--nuta-papel: #FAEFE0;
	--nuta-linea: #EEE4DB;
	--nuta-suave: #6E6E6A;
}

/* La página siempre llena la pantalla: en las cortas, el contenido crece
   y el pie queda abajo del todo en vez de flotar a media altura. */
.wp-site-blocks {
	display: flex; flex-direction: column;
	min-height: 100vh; min-height: 100svh;
}
.wp-site-blocks > main { flex: 1 0 auto; }

/* ==========================================================================
   FONDO VIVO · dos velos del color de la casa que se mueven muy despacio.

   Se pintan con el mismo --nuta-lima que todo lo demás, así que siguen al
   color que se elija en La web › Estilo sin tocar nada aquí.

   Por qué así y no de otra manera:
   · Son elementos FIJOS que se mueven con transform. Eso lo hace la tarjeta
     gráfica sola, sin repintar la página. Animar background-position obliga
     a repintar el fondo entero en cada fotograma y en un móvil se nota.
   · Nada de background-attachment: fixed, que en iOS va a tirones o se
     queda quieto del todo. Con position: fixed se ve igual en todas partes.
   · Van en la capa -1: por debajo de TODO el contenido sin tener que subir
     la página a una capa propia. Es importante que no la suba, porque eso
     encerraría los modales y la burbuja de chat, que vive fuera, se les
     pondría delante. El precio es que el color del papel tiene que pasar de
     <body> a la raíz: si se quedara en el body, taparía el degradado.
   · Solo opacidad y transform: no ocupan sitio, no mueven nada de su lugar
     y no cambian el CLS. Y como van debajo, no hay contrastes que revisar.
   ========================================================================== */
:root { background-color: #FFFBF5; }
html body { background-color: transparent; }

body::before,
body::after {
	content: "";
	position: fixed;
	z-index: -1;
	pointer-events: none;
	width: 80vmax; height: 80vmax;
	/* closest-side: el color se apaga justo en el borde, sin canto de círculo. */
	background: radial-gradient(circle closest-side, var(--nuta-lima), transparent);
}
body::before {
	top: -26vmax; left: -22vmax;
	/* La opacidad la afina el plugin según el color elegido en La web › Estilo:
	   uno pálido tiñe menos y necesita más velo para notarse igual que el
	   coral de fábrica (nuta_paleta(), en helpers.php). */
	opacity: var(--nuta-velo-1, .17);
	animation: nuta-fondo-a 34s ease-in-out infinite alternate;
}
body::after {
	bottom: -30vmax; right: -24vmax;
	opacity: var(--nuta-velo-2, .12);
	animation: nuta-fondo-b 46s ease-in-out infinite alternate;
}
@keyframes nuta-fondo-a {
	from { transform: translate3d(0, 0, 0) scale(1); }
	to   { transform: translate3d(13vmax, 9vmax, 0) scale(1.18); }
}
@keyframes nuta-fondo-b {
	from { transform: translate3d(0, 0, 0) scale(1.12); }
	to   { transform: translate3d(-11vmax, -8vmax, 0) scale(.92); }
}
/* --- Portada: el vídeo obliga a hacerlo de otra manera ---------------------
   La página del vídeo pinta una BANDA blanca opaca desde donde acaba el héroe
   hasta el pie (modulos.css): es lo que impide que el vídeo, que se queda
   pegado detrás, se asome por los huecos entre secciones. Esa banda tapaba el
   fondo vivo y la portada se quedaba plana.

   Aquí el degradado se pinta por ENCIMA de la banda y por DEBAJO del
   contenido: main::after va después de la banda en el orden del documento, y
   las secciones que siguen al vídeo ya viajan en una capa superior. Es una
   sola capa con los dos velos dentro (no hay un segundo sitio donde pintar
   después de la banda), y las de body sobran aquí: no se verían. */
body:has( .nuta-vid-modulo )::before,
body:has( .nuta-vid-modulo )::after { content: none; }

/* El pie sí necesita subir: no está posicionado, y sin esto el degradado de
   la capa 0 le pasaría por encima y le lavaría la tinta. */
body:has( .nuta-vid-modulo ) footer.wp-block-template-part { position: relative; z-index: 1; }

/* Esa capa cae también sobre el vídeo, que va por debajo de la banda. Por eso
   arranca APAGADA y solo se enciende cuando ya has pasado el héroe (lo hace
   nuta.js poniendo la clase de abajo): así el vídeo de portada se ve con sus
   colores, sin un velo encima. */
body:has( .nuta-vid-modulo ) main::after {
	content: "";
	position: fixed;
	inset: -12vmax;              /* de sobra, para que al moverse no deje bordes */
	z-index: 0;
	pointer-events: none;
	opacity: 0;
	transition: opacity .6s ease;
	background:
		radial-gradient(38vmax 38vmax at 20% 26%, var(--nuta-lima), transparent),
		radial-gradient(32vmax 32vmax at 84% 82%, var(--nuta-lima), transparent);
	animation: nuta-fondo-c 40s ease-in-out infinite alternate;
}
html.nuta-fondo-tras-video body:has( .nuta-vid-modulo ) main::after { opacity: var(--nuta-velo-3, .15); }
@keyframes nuta-fondo-c {
	from { transform: translate3d(-3vmax, -2vmax, 0) scale(1); }
	to   { transform: translate3d(5vmax, 4vmax, 0) scale(1.14); }
}

/* A quien pide menos movimiento se le deja el degradado, pero quieto. */
@media (prefers-reduced-motion: reduce) {
	body::before, body::after,
	body:has( .nuta-vid-modulo ) main::after { animation: none; transition: none; }
}
/* En el panel y en el área de alumnas, no: son pantallas de trabajo con
   tablas, y ahí el fondo tiene que estar callado. */
body.nuta-bo-page::before,
body.nuta-bo-page::after { content: none; }

/* ==========================================================================
   Cabecera: blanca, filete de tinta y la raya lima — la firma de los emails.
   ========================================================================== */
.nuta-cab {
	background: #FFFBF5;
	border-bottom: 2px solid var(--nuta-ink);
	/* La raya lima va como sombra para no sumar un elemento más */
	box-shadow: 0 6px 0 0 var(--nuta-lima);
	margin-bottom: 6px;
}
/* Fija SIEMPRE arriba al hacer scroll. El sticky vive en el ENVOLTORIO del
   template part: en .nuta-cab a solas solo podía pegarse dentro de su propio
   alto (su padre mide lo mismo que ella), o sea, nunca. */
header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 120;
}
/* Con la barra de admin de WordPress visible, la cabecera se pega debajo de ella */
.admin-bar header.wp-block-template-part { top: var(--wp-admin--admin-bar--height, 32px); }
.nuta-cab-in {
	display: flex; align-items: center; gap: 1.6rem;
	max-width: 1200px; margin: 0 auto;
	padding: .9rem 1.5rem;
}

.nuta-cab-brand {
	display: inline-flex; align-items: center; gap: .65rem;
	text-decoration: none; color: var(--nuta-ink); flex: none;
}
.nuta-cab-brand svg { width: 40px; height: 40px; fill: currentColor; display: block; }
.nuta-cab-brand span {
	font-weight: 800; font-size: 1.05rem;
	letter-spacing: .14em; text-transform: uppercase; white-space: nowrap;
}
.nuta-cab-brand:hover { color: var(--nuta-ink); }

/* La navegación (el bloque de navegación, gestionado desde el panel).
   Ojo: el bloque repite la clase en la <ul> interior; solo el <nav> exterior
   debe empujarse a la derecha. */
.nuta-cab nav.nuta-cab-nav { margin-left: auto; }
.nuta-cab .wp-block-navigation a {
	font-size: .8rem; font-weight: 700;
	letter-spacing: .07em; text-transform: uppercase;
	color: var(--nuta-ink); text-decoration: none;
	padding: .35rem 0; border-bottom: 3px solid transparent;
}
.nuta-cab .wp-block-navigation a:hover,
.nuta-cab .wp-block-navigation .current-menu-item > a {
	border-bottom-color: var(--nuta-lima);
}
/* Sin recuadro de foco al tocar los enlaces del menú (lo pinta el tema
   padre y afea). Con teclado, el foco se marca con la raya coral. */
.nuta-cab .wp-block-navigation a:focus,
.nuta-cab .wp-block-navigation a:focus-visible {
	outline: none;
}
.nuta-cab .wp-block-navigation a:focus-visible {
	border-bottom-color: var(--nuta-lima);
}
.nuta-cab .wp-block-navigation__responsive-container-open,
.nuta-cab .wp-block-navigation__responsive-container-close {
	color: var(--nuta-ink);
}

/* El menú desplegado en móvil: blanco, con la raya lima y enlaces grandes
   a la izquierda (el bloque los deja pequeños y pegados a la derecha). */
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open {
	background: #FFFBF5;
	border-top: 6px solid var(--nuta-lima);
	padding: 4.5rem 1.6rem 2rem;
	/* La alineación del bloque sale de esta variable: a la izquierda. */
	--navigation-layout-justification-setting: flex-start;
	--navigation-layout-justify: flex-start;
}
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__container {
	align-items: flex-start;
	justify-content: flex-start;
}
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open ul {
	flex-direction: column;
	gap: .9rem;
}
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open a {
	font-size: 1.35rem;
}
/* Los enlaces entran en ESCALERA: cada uno un pasito después del anterior.
   Al abrirse el menú (is-menu-open) la animación arranca de cero. */
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
	opacity: 0;
	transform: translateY(14px);
	animation: nuta-menu-paso .38s cubic-bezier(.2, .7, .3, 1) forwards;
}
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(1) { animation-delay: .05s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(2) { animation-delay: .12s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(3) { animation-delay: .19s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(4) { animation-delay: .26s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(5) { animation-delay: .33s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(6) { animation-delay: .40s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(7) { animation-delay: .47s; }
.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item:nth-child(8) { animation-delay: .54s; }
@keyframes nuta-menu-paso {
	to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
	.nuta-cab .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item {
		animation: none; opacity: 1; transform: none;
	}
}

/* Las dos llamadas: apuntarse (lima) y entrar (borde) */
.nuta-cab-cta { display: flex; gap: .5rem; flex: none; }
.nuta-btn-web {
	display: inline-flex; align-items: center;
	padding: .55rem 1.05rem; border: 2px solid var(--nuta-ink); border-radius: 5px;
	background: var(--nuta-lima); color: var(--nuta-ink);
	font-size: .74rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
	text-decoration: none; line-height: 1; transition: background .15s, color .15s;
}
.nuta-btn-web:hover, .nuta-btn-web:focus-visible { background: var(--nuta-ink); color: #FFFBF5; }
.nuta-btn-web-borde { background: transparent; }
/* «Instalar app» solo existe cuando el navegador puede instalar la web:
   oculto de serie (el display de la clase le ganaría al atributo hidden). */
.nuta-cab .nuta-btn-web[hidden] { display: none; }

@media (max-width: 781px) {
	.nuta-cab-in { padding: .7rem 1rem; gap: .8rem; }
	.nuta-cab-brand span { font-size: .9rem; letter-spacing: .1em; }
}
/* En pantallas estrechas la cabecera aprieta: botones compactos y, si además
   está el de instalar la app, abreviado — sin esto empujaba «Iniciar sesión»
   fuera de la pantalla. */
@media (max-width: 600px) {
	.nuta-cab-in { gap: .55rem; }
	.nuta-cab-cta { gap: .4rem; }
	.nuta-cab-cta .nuta-btn-web { padding: .45rem .7rem; font-size: .68rem; }
	#nuta-instalar-app { font-size: 0; }
	#nuta-instalar-app::before { content: 'App ↓'; font-size: .68rem; letter-spacing: .07em; }
}
@media (max-width: 480px) {
	.nuta-cab-brand span { display: none; } /* el logo firma solo */
}
/* En móvil, la hamburguesa va al FINAL de la fila, después de «Iniciar
   sesión»: logo · botones · ☰. (En ancho el menú completo sigue en medio.) */
@media (max-width: 600px) {
	.nuta-cab-brand { order: 1; }
	.nuta-cab-cta { order: 2; margin-left: auto; }
	.nuta-cab nav.nuta-cab-nav { order: 3; margin-left: 0; }
}

/* ==========================================================================
   Home: héroe de columnas verticales con los tres pilares de la escuela.
   ========================================================================== */
/* El héroe de pilares (.nuta-hero-*) y la sección «La escuela» (.nuta-sobre-*)
   viven ahora en el PLUGIN (assets/css/modulos.css): la home se maqueta con
   bloques y su estilo viaja con los módulos. */

/* La franja de avisos, por encima de la cabecera: lima, a todo el ancho.
   El shortcode trae la tarjeta del panel; aquí se aplana a una línea. */
.nuta-franja-avisos { background: var(--nuta-lima); border-bottom: 2px solid var(--nuta-ink); }
.nuta-franja-avisos .nuta-avisos { max-width: 1200px; margin: 0 auto; padding: 0 1.5rem; }
.nuta-franja-avisos .nuta-aviso {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .7rem;
	margin: 0; padding: .55rem 0; border: 0; background: transparent;
	color: var(--nuta-ink); font-size: .88rem; line-height: 1.45;
}
.nuta-franja-avisos .nuta-aviso strong {
	font-size: .76rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
}
.nuta-franja-avisos .nuta-aviso p { display: inline; margin: 0; }
.nuta-franja-avisos .nuta-aviso + .nuta-aviso { border-top: 1px solid rgba(48, 66, 84, .25); }
@media (max-width: 600px) {
	.nuta-franja-avisos .nuta-avisos { padding: 0 1rem; }
	.nuta-franja-avisos .nuta-aviso { font-size: .82rem; }
}

/* ==========================================================================
   Blog: entradas en dos columnas a la izquierda, categorías a la derecha.
   ========================================================================== */
.nuta-blog-cab h1,
.nuta-blog-cab .wp-block-query-title {
	margin: 0 0 .3rem; font-size: 2.4rem; font-weight: 800;
	letter-spacing: -.01em; text-transform: uppercase;
}
.nuta-blog-cab p { margin: 0; color: var(--nuta-suave); }

.nuta-blog-cols {
	display: grid; grid-template-columns: minmax(0, 1fr) 260px;
	gap: 3rem; align-items: start; margin-top: 2.2rem;
}

/* La rejilla de entradas (el bloque ya pinta 2 columnas; aquí, el ritmo) */
.nuta-blog-grid { gap: 2.2rem 2rem; }
.nuta-blog-grid > li { margin: 0; }

.nuta-post-carta { border: 2px solid var(--nuta-ink); background: #FFFBF5; height: 100%; }
.nuta-post-carta .wp-block-post-featured-image { margin: 0; }
.nuta-post-carta .wp-block-post-featured-image img { display: block; width: 100%; }
.nuta-post-cuerpo { padding: 1.1rem 1.2rem 1.3rem; }

.nuta-post-meta {
	gap: .35rem .8rem; margin-bottom: .6rem;
	letter-spacing: .1em; text-transform: uppercase;
}
/* El tamaño hay que fijarlo en los bloques: el padre les pone el preset
   "small" directamente y la herencia del contenedor no llega. */
.nuta-post-meta .wp-block-post-date,
.nuta-post-meta .wp-block-post-terms { font-size: .78rem; font-weight: 700; }
.nuta-post-meta .wp-block-post-terms a {
	background: var(--nuta-lima); color: var(--nuta-ink);
	padding: .2rem .5rem; text-decoration: none;
}
.nuta-post-meta .wp-block-post-terms a:hover { background: var(--nuta-ink); color: #FFFBF5; }
.nuta-post-meta .wp-block-post-date { color: var(--nuta-suave); }

.nuta-post-carta .wp-block-post-title {
	margin: 0 0 .5rem; font-size: 1.25rem; font-weight: 800;
	letter-spacing: -.01em; text-transform: uppercase; text-wrap: balance;
}
.nuta-post-carta .wp-block-post-title a { color: var(--nuta-ink); text-decoration: none; }
.nuta-post-carta .wp-block-post-title a:hover {
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 3px;
}
.nuta-post-carta .wp-block-post-excerpt { margin: 0; font-size: .92rem; line-height: 1.55; color: var(--nuta-suave); }
.nuta-post-carta .wp-block-post-excerpt__more-text { margin: .5rem 0 0; }
.nuta-post-carta .wp-block-post-excerpt__more-link {
	color: var(--nuta-ink); font-weight: 700;
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 2px;
}

/* Paginación */
.nuta-blog-pag { margin-top: 2.4rem; font-weight: 700; text-transform: uppercase; font-size: .8rem; }
.nuta-blog-pag a { color: var(--nuta-ink); text-decoration: none; }
.nuta-blog-pag a:hover { text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 3px; }
/* Los números sueltos: separados y con área de pulsado decente. */
.nuta-blog-pag .wp-block-query-pagination-numbers { display: flex; gap: .4rem; }
.nuta-blog-pag .page-numbers { padding: .3rem .55rem; min-width: 24px; text-align: center; }
.nuta-blog-pag .wp-block-query-pagination-numbers .current { color: var(--nuta-suave); }

/* La entrada suelta: misma estructura que el archivo, el texto a la izquierda. */
.nuta-entrada h1.wp-block-post-title {
	margin: .2rem 0 1.2rem; font-size: 2.2rem; font-weight: 800;
	letter-spacing: -.01em; text-transform: uppercase; text-wrap: balance;
}
.nuta-entrada-cuerpo .wp-block-post-featured-image { margin: 0 0 1.6rem; }
.nuta-entrada-cuerpo .wp-block-post-featured-image img {
	display: block; width: 100%; border: 2px solid var(--nuta-ink);
}
.nuta-entrada-cuerpo .wp-block-post-content { max-width: 70ch; font-size: 1.02rem; line-height: 1.7; }
.nuta-entrada-cuerpo .wp-block-post-content a {
	color: var(--nuta-ink);
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 2px;
}
.nuta-entrada-volver { margin: 2.2rem 0 0; }
.nuta-entrada-volver a {
	font-size: .8rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
	color: var(--nuta-ink); text-decoration: none;
}
.nuta-entrada-volver a:hover {
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 3px;
}

/* El lateral de categorías */
.nuta-blog-lateral { position: sticky; top: 1.2rem; }
.nuta-lateral-titulo {
	margin: 0 0 .4rem; padding-bottom: .55rem;
	font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase;
	border-bottom: 2px solid var(--nuta-ink);
}
ul.nuta-blog-cats { list-style: none; margin: 0; padding: 0; }
.nuta-blog-cats li { margin: 0; border-bottom: 1px solid var(--nuta-linea); font-size: .92rem; color: var(--nuta-suave); }
.nuta-blog-cats li a {
	display: inline-block; padding: .55rem 0 .55rem;
	color: var(--nuta-ink); font-weight: 600; text-decoration: none;
}
.nuta-blog-cats li a:hover {
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 3px;
}

/* Segundo bloque del lateral (p. ej. las relacionadas): aire entre secciones. */
.nuta-blog-lateral > * + .nuta-lateral-titulo { margin-top: 2.2rem; }

/* Entradas relacionadas en el lateral de la entrada */
.nuta-rel-lista { list-style: none; margin: 0; padding: 0; }
.nuta-rel-lista > li { margin: 0; padding: .75rem 0; border-bottom: 1px solid var(--nuta-linea); }
.nuta-rel-item { gap: .7rem; align-items: flex-start; }
.nuta-rel-item .wp-block-post-featured-image { flex: none; width: 54px; margin: 0; }
.nuta-rel-item .wp-block-post-featured-image img {
	display: block; width: 54px; height: 54px; object-fit: cover;
	border: 2px solid var(--nuta-ink);
}
.nuta-rel-texto { min-width: 0; }
.nuta-rel-texto h3.wp-block-post-title {
	margin: 0 0 .2rem; font-size: .88rem; font-weight: 800;
	letter-spacing: 0; text-transform: uppercase; line-height: 1.3;
}
.nuta-rel-texto h3.wp-block-post-title a { color: var(--nuta-ink); text-decoration: none; }
.nuta-rel-texto h3.wp-block-post-title a:hover {
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 3px;
}
.nuta-rel-texto .wp-block-post-date {
	font-size: .7rem; font-weight: 700; letter-spacing: .08em;
	text-transform: uppercase; color: var(--nuta-suave);
}
.nuta-rel-nada { margin: 0; padding: .6rem 0; font-size: .88rem; color: var(--nuta-suave); }

/* En pantallas medias las entradas pasan a una columna; en estrechas,
   el lateral baja bajo la lista. */
@media (max-width: 1000px) {
	.nuta-blog-grid.is-layout-grid { grid-template-columns: 1fr; }
}
@media (max-width: 800px) {
	.nuta-blog-cols { grid-template-columns: 1fr; gap: 2.4rem; }
	.nuta-blog-lateral { position: static; }
}

/* ==========================================================================
   Páginas públicas del catálogo: Servicios y Calendario.
   ========================================================================== */
/* Estas páginas llevan la clase nuta-fullpage del panel, que suelta los anchos
   con `body.nuta-fullpage .is-layout-constrained > … { max-width:none !important }`
   (especificidad 0,2,1): la clase doblada supera ese selector con claridad. */
.nuta-catalogo.nuta-catalogo.nuta-catalogo,
.nuta-cal-publico.nuta-cal-publico.nuta-cal-publico,
.nuta-gal-publica.nuta-gal-publica.nuta-gal-publica {
	max-width: 1200px !important; margin: 0 auto; padding: 0 1.5rem 2.5rem;
}
/* El título del tema queda fuera del contenedor y desalineado: se oculta y
   cada vista pinta el suyo dentro, alineado con el resto. */
.wp-site-blocks:has(.nuta-catalogo) h1.wp-block-post-title,
.wp-site-blocks:has(.nuta-cal-publico) h1.wp-block-post-title,
.wp-site-blocks:has(.nuta-gal-publica) h1.wp-block-post-title { display: none; }

/* La galería (.nuta-galp-*) y su caja de luz (.nuta-luz) viven ahora en el
   PLUGIN (assets/css/modulos.css), junto al resto de módulos. */

/* Los títulos de página, en la voz de la casa. */
h1.wp-block-post-title { text-transform: uppercase; font-weight: 800; letter-spacing: -.01em; }

.nuta-web-cab { margin: 0 0 2rem; }
.nuta-web-cab h1 {
	margin: 0 0 .35rem;
	font-size: 2.4rem; font-weight: 800; letter-spacing: -.01em; text-transform: uppercase;
}
.nuta-web-cab p { margin: 0; color: var(--nuta-suave); max-width: 60ch; }

/* Acceso e inscripción centran su formulario: el título va con él y en la voz
   de la casa (antes quedaba suelto en el borde izquierdo). */
.wp-site-blocks:has(.nuta-publico) h1.wp-block-post-title {
	text-align: center;
	font-size: 2.2rem; font-weight: 800; letter-spacing: -.01em; text-transform: uppercase;
}
/* Las piezas del catálogo (.nuta-web-rotulo/nota/cta/vacio y .nuta-serv-*)
   viven ahora en el PLUGIN (assets/css/modulos.css): el estilo viaja con el
   módulo y se ve igual en la web y dentro del editor de bloques. */

/* El calendario (.nuta-cal-*) vive ahora en el PLUGIN (assets/css/modulos.css). */

/* ==========================================================================
   Opiniones de Google: la franja que va justo encima del pie en toda la web.
   El widget lo pinta Trustindex ([nuta_resenas] no saca nada sin conectar).
   ========================================================================== */
.nuta-resenas { margin-top: 4rem; padding: 0 1.5rem; }
.nuta-resenas-in { max-width: 1200px; margin: 0 auto; }
.nuta-resenas-in > h2,
.nuta-resenas-cab h2 {
	margin: 0 0 1.2rem;
	font-size: 1.15rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
	text-align: center;
}
/* El título con el botón de opinar al lado, y en columna si no caben. */
.nuta-resenas-cab {
	display: flex; align-items: center; justify-content: center;
	gap: .6rem 1.4rem; flex-wrap: wrap; margin: 0 0 1.2rem;
}
.nuta-resenas-cab h2 { margin: 0; }
/* Con la franja de opiniones delante, el pie no necesita su propio respiro. */
.nuta-resenas + .nuta-pie,
.nuta-resenas ~ .nuta-pie { margin-top: 2.2rem; }

/* El widget de Trustindex, vestido de la casa DE VERDAD: las cartas como las
   del blog (borde de tinta de 2px, blanco cálido, esquinas rectas), la letra
   propia, las estrellas en coral y los controles en pizarra. */
.nuta-resenas .ti-widget,
.nuta-resenas .ti-widget * { font-family: 'Inter', system-ui, sans-serif !important; }
.nuta-resenas .ti-widget .ti-review-item .ti-inner {
	background: #FFFBF5 !important;
	border: 2px solid var(--nuta-ink) !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}
.nuta-resenas .ti-widget .ti-name { color: var(--nuta-ink) !important; font-weight: 800 !important; }
.nuta-resenas .ti-widget .ti-date { color: var(--nuta-suave) !important; }
.nuta-resenas .ti-widget .ti-review-content,
.nuta-resenas .ti-widget .ti-review-text { color: var(--nuta-ink) !important; line-height: 1.55 !important; }
/* Estrellas del dorado de Google al coral de la casa (el SVG viene en <img>:
   se tiñe con filtro). */
.nuta-resenas .ti-widget img.ti-star {
	filter: brightness(0) saturate(100%) invert(58%) sepia(57%) saturate(2400%) hue-rotate(331deg) brightness(102%) contrast(101%);
}
/* La insignia de verificación, de azul a tinta. */
.nuta-resenas .ti-widget .ti-verified-review { filter: grayscale(1) brightness(.6); }
/* Flechas y línea de progreso del carrusel. */
.nuta-resenas .ti-widget .ti-controls .ti-next,
.nuta-resenas .ti-widget .ti-controls .ti-prev { color: var(--nuta-ink) !important; }
.nuta-resenas .ti-widget .ti-controls-line { background: var(--nuta-linea) !important; }
.nuta-resenas .ti-widget .ti-controls-line .dot { background: var(--nuta-lima) !important; }
.nuta-resenas .ti-widget [data-open-text] { color: var(--nuta-suave) !important; text-decoration: underline; }

/* ==========================================================================
   Banner de cookies (Adapta RGPD), vestido de la casa: carta blanca cálida
   con filete de tinta, botón de aceptar en coral y el resto discretos.
   ========================================================================== */
/* Tarjeta COMPACTA abajo a la derecha, no una franja a todo lo ancho. */
#cookies-eu-banner {
	box-sizing: border-box !important;
	position: fixed !important;
	right: auto !important; top: auto !important;
	/* Abajo a la IZQUIERDA: a la derecha tapaba el «Configurar cookies» del pie. */
	left: 1rem !important; bottom: 1rem !important;
	width: min(400px, calc(100vw - 2rem)) !important;
	background: #FFFBF5 !important;
	color: var(--nuta-ink) !important;
	border: 2px solid var(--nuta-ink) !important;
	box-shadow: 0 14px 34px rgba(37, 51, 66, .25) !important;
	font-family: 'Inter', system-ui, sans-serif !important;
	font-size: .78rem !important; line-height: 1.5 !important;
	padding: .9rem 1rem !important;
	text-align: left !important;
}
#cookies-eu-banner a { color: var(--nuta-ink) !important; text-decoration: underline; }
#cookies-eu-label { margin-bottom: .6rem; }
#cookies-eu-buttons { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; }
#cookies-eu-buttons form { margin: 0; }
/* En pantallas cortas, más liviano: letra menor y botonera en orden —
   Rechazar y Aceptar a lo ancho, «Más información» pequeño debajo. */
@media (max-width: 600px) {
	#cookies-eu-banner { font-size: .72rem !important; line-height: 1.45 !important; padding: .8rem .9rem !important; }
	#cookies-eu-label { margin-bottom: .5rem; }
	#cookies-eu-buttons { display: flex !important; flex-wrap: wrap !important; gap: .45rem !important; }
	#cookies-eu-buttons .cookies-eu-reject { flex: 1 !important; order: 1 !important; margin: 0 !important; }
	#cookies-eu-buttons .cookies-eu-accept { flex: 1 !important; order: 2 !important; margin: 0 !important; }
	#cookies-eu-buttons form { order: 3 !important; width: 100% !important; text-align: center !important; margin: 0 !important; }
	#cookies-eu-settings { padding: .25rem 0 0 !important; }
}
/* Por CLASE: valen para el banner y para la página de personalizar. */
.cookies-eu-accept, .cookies-eu-reject, .cookies-eu-settings {
	font-family: 'Inter', system-ui, sans-serif !important; font-weight: 700 !important;
	letter-spacing: .07em; text-transform: uppercase; font-size: .68rem !important;
	border-radius: 5px !important; padding: .45rem .85rem !important; cursor: pointer;
}
.cookies-eu-accept { background: var(--nuta-lima) !important; color: var(--nuta-ink) !important; border: 2px solid var(--nuta-ink) !important; }
.cookies-eu-reject { background: transparent !important; color: var(--nuta-ink) !important; border: 2px solid var(--nuta-ink) !important; }
.cookies-eu-settings, #cookies-eu-settings { background: transparent !important; color: var(--nuta-suave) !important; border: 0 !important; text-transform: none !important; text-decoration: underline; }
/* Los pares de botones dentro de la página de personalizar. */
.cookies-eu-buttons, #custom-cookies-eu-buttons { display: flex; flex-wrap: wrap; gap: .45rem; margin: .6rem 0 1rem; }
/* La pestañita flotante de reabrir, fuera: la reapertura vive en el pie. */
#cookies-eu-banner-closed { display: none !important; }

/* El modal de «Configurar cookies»: la página de personalizar, enmarcada. */
.nuta-modal-cookies {
	position: fixed; inset: 0; z-index: 400;
	background: rgba(35, 46, 58, .6);
	display: flex; align-items: center; justify-content: center; padding: 1rem;
}
.nuta-modal-cookies-caja {
	position: relative; background: #FFFBF5; border: 2px solid var(--nuta-ink);
	width: min(680px, 100%); height: min(82vh, 660px);
}
.nuta-modal-cookies iframe { width: 100%; height: 100%; border: 0; display: block; }
.nuta-modal-cookies-cerrar {
	position: absolute; top: -14px; right: -14px; width: 34px; height: 34px;
	border-radius: 50%; border: 2px solid var(--nuta-ink);
	background: var(--nuta-lima); color: var(--nuta-ink);
	font-size: 1.1rem; font-weight: 700; line-height: 1; cursor: pointer;
}
/* Dentro del marco (?enmarcada=1) la página va desnuda: sin cabecera, pie,
   reseñas ni banner — solo el contenido de personalizar. */
.nuta-enmarcada .nuta-cab, .nuta-enmarcada .nuta-pie,
.nuta-enmarcada .nuta-resenas, .nuta-enmarcada #cookies-eu-wrapper,
.nuta-enmarcada #cookies-eu-banner-closed { display: none !important; }

/* El enlace del pie, bajo el menú legal. */
.nuta-pie-cookies {
	display: inline-block; margin-top: .55rem;
	color: #FFFBF5; opacity: .92; font-size: .85rem;
	text-decoration: underline; cursor: pointer;
}
.nuta-pie-cookies:hover { color: var(--nuta-lima); }

/* ==========================================================================
   Pie: tinta, con la raya lima arriba como espejo de la cabecera.
   ========================================================================== */
.nuta-pie {
	/* Un punto más oscuro que la tinta (#304254): el pie cierra la página. */
	background: #253342; color: #FFFBF5;
	border-top: 6px solid var(--nuta-lima);
	margin-top: 4rem;
}
.nuta-pie-in {
	max-width: 1200px; margin: 0 auto; padding: 2.6rem 1.5rem 2.2rem;
	display: flex; gap: 2.5rem; align-items: flex-start; justify-content: space-between; flex-wrap: wrap;
}

.nuta-pie-brand { max-width: 340px; }
.nuta-pie-brand a {
	display: inline-flex; align-items: center; gap: .6rem;
	color: #FFFBF5; text-decoration: none;
}
.nuta-pie-brand svg { width: 34px; height: 34px; fill: currentColor; display: block; }
.nuta-pie-brand strong {
	font-weight: 800; font-size: .95rem; letter-spacing: .14em; text-transform: uppercase;
}
.nuta-pie-brand p { margin: .8rem 0 0; font-size: .88rem; line-height: 1.6; color: #EEE4DB; }
.nuta-pie-contacto {
	margin: .6rem 0 0; font-style: normal;
	font-size: .85rem; line-height: 1.7; color: #EEE4DB;
}
.nuta-pie-contacto a { color: #FFFBF5; text-decoration: none; }
.nuta-pie-contacto a:hover, .nuta-pie-contacto a:focus-visible {
	text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 2px;
}

/* Redes sociales: cuadraditos con borde que se encienden en lima. */
.nuta-pie-rrss { display: flex; gap: .6rem; margin-top: 1.1rem; }
.nuta-pie-rrss a {
	display: inline-flex; align-items: center; justify-content: center;
	width: 36px; height: 36px; border: 2px solid #FFFBF5; border-radius: 5px;
	color: #FFFBF5; transition: background .15s, color .15s, border-color .15s;
}
/* fill:none es imprescindible: la regla del logo (.nuta-pie-brand svg)
   rellenaría estos iconos de trazo. */
.nuta-pie-rrss a svg { width: 18px; height: 18px; fill: none; }
.nuta-pie-rrss a:hover, .nuta-pie-rrss a:focus-visible {
	background: var(--nuta-lima); border-color: var(--nuta-lima); color: var(--nuta-ink);
}
@media (prefers-reduced-motion: reduce) {
	.nuta-pie-rrss a { transition: none; }
}

/* El rótulo de cada columna del pie. Es un párrafo y no un encabezado: son los
   mismos dos en todas las páginas y ensuciaban el índice de cada una. El grupo
   de enlaces se sigue anunciando a los lectores de pantalla por su aria-label. */
.nuta-pie-col h2, .nuta-pie-rotulo {
	margin: 0 0 .8rem; font-size: .68rem; font-weight: 700;
	letter-spacing: .14em; text-transform: uppercase; color: var(--nuta-lima);
}
.nuta-pie-col ul { list-style: none; margin: 0; padding: 0; }
.nuta-pie-col li { margin: 0 0 .5rem; }
.nuta-pie-col a {
	color: #FFFBF5; text-decoration: none; font-size: .88rem;
	border-bottom: 2px solid transparent;
}
.nuta-pie-col a:hover, .nuta-pie-col a:focus-visible { border-bottom-color: var(--nuta-lima); }

/* Las columnas ahora son bloques de navegación (menús de la sección Menús) */
.nuta-pie-col .wp-block-navigation,
.nuta-pie-col .wp-block-navigation .wp-block-navigation__container { gap: .5rem; }
.nuta-pie-col .wp-block-navigation a {
	color: #FFFBF5; text-decoration: none; font-size: .88rem;
	border-bottom: 2px solid transparent;
}
.nuta-pie-col .wp-block-navigation a:hover,
.nuta-pie-col .wp-block-navigation a:focus-visible { border-bottom-color: var(--nuta-lima); }

.nuta-pie-baja {
	border-top: 1px solid #3C5068;
}
.nuta-pie-baja-in {
	max-width: 1200px; margin: 0 auto; padding: 1rem 1.5rem;
	display: flex; gap: 1rem; align-items: center; justify-content: space-between; flex-wrap: wrap;
	font-size: .78rem; color: #EEE4DB;
}
.nuta-pie-baja-in a { color: #FFFBF5; text-decoration: none; }
.nuta-pie-baja-in a:hover { text-decoration: underline; text-decoration-color: var(--nuta-lima); text-decoration-thickness: 2px; }

@media (max-width: 781px) {
	.nuta-pie-in { flex-direction: column; gap: 1.8rem; }
}
