/* ==========================================================================
 * PAP Construcciones · Estilos propios
 * --------------------------------------------------------------------------
 * Solo presentación (CLAUDE.md §5). Todo valor lee los tokens --tnt-* de
 * tokens.css; los efectos del motor (Blokino) son opt-in por bloque.
 * Idea: un plano de obra hecho web — hormigón, junta, verde PAP y la cota.
 * ========================================================================== */

body {
	background: var( --tnt-color-bg );
	color: var( --tnt-color-text );
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

/* Titulares: Archivo condensada (eje wdth) — rótulo de obra. */
:where( h1, h2, h3, h4, .pap-display ) {
	font-stretch: var( --pap-display-stretch );
	font-variation-settings: "wdth" 75;
	text-wrap: balance;
}
:where( h5, h6 ) { text-transform: none; }

/* ==========================================================================
 * 0. Firma — la cota (block style de core/paragraph)
 * --------------------------------------------------------------------------
 * Línea de dimensión de plano: línea fina de extremo a extremo, líneas de
 * extensión verticales y un trazo oblicuo en cada extremo; el texto (mono) va
 * centrado sobre la línea. Toma el color de texto del propio bloque
 * (currentColor), editable desde el sidebar. El motor la dibuja con clip-reveal.
 * ========================================================================== */
.is-style-pap-cota {
	--pap-cota-tick: 13px;
	display: flex;
	align-items: center;
	gap: 1em;
	margin-block: var( --tnt-space-4 );
	font-family: var( --tnt-font-mono );
	font-size: var( --tnt-text-xs );
	font-weight: 500;
	letter-spacing: var( --tnt-tracking-wide );
	text-transform: uppercase;
	line-height: 1.2;
	white-space: nowrap;
}
.is-style-pap-cota::before,
.is-style-pap-cota::after {
	content: "";
	flex: 1 1 0;
	min-inline-size: 1.5rem;
	block-size: var( --pap-cota-tick );
	/* Línea fina + un punto de cota junto a la línea de extensión (sin trazos que se crucen). */
	background:
		linear-gradient( currentColor, currentColor ) center / 100% 1px no-repeat,
		radial-gradient( circle, currentColor 0 2.5px, transparent 3px ) var( --pap-cota-end ) / 9px 9px no-repeat;
}
.is-style-pap-cota::before { --pap-cota-end: 4px center; border-inline-start: 1.5px solid currentColor; }
.is-style-pap-cota::after  { --pap-cota-end: calc( 100% - 4px ) center; border-inline-end: 1.5px solid currentColor; }
/* Texto que no cabe en una línea (móvil): se permite partir sin romper la cota. */
@media ( max-width: 40rem ) {
	.is-style-pap-cota { white-space: normal; text-align: center; font-size: 0.68rem; }
}

/* Rótulo (kicker) — mono en mayúsculas con el cuadro de señal. */
.is-style-pap-kicker,
.pap-kicker {
	display: inline-flex;
	align-items: center;
	gap: 0.7em;
	margin: 0;
	font-family: var( --tnt-font-mono );
	font-size: var( --tnt-text-xs );
	font-weight: 500;
	text-transform: uppercase;
	letter-spacing: var( --tnt-tracking-wide );
	color: var( --tnt-color-primary );
}
.is-style-pap-kicker::before,
.pap-kicker::before {
	content: "";
	inline-size: 0.62em;
	aspect-ratio: 1;
	background: var( --tnt-color-accent-2 );
	flex: none;
}
.pap-kicker a,
.is-style-pap-kicker a { color: inherit; text-decoration: none; }

/* Retícula de plano (group) — cuadrícula técnica muy tenue, decorativa. */
.is-style-pap-plano {
	background-image:
		linear-gradient( color-mix( in srgb, currentColor 7%, transparent ) 1px, transparent 1px ),
		linear-gradient( 90deg, color-mix( in srgb, currentColor 7%, transparent ) 1px, transparent 1px );
	background-size: 48px 48px;
	background-position: -1px -1px;
}

/* Marco de obra (image) — marcas de registro en las esquinas, como en un plano. */
.wp-block-image.is-style-pap-marco { position: relative; padding: 10px; }
.wp-block-image.is-style-pap-marco::before,
.wp-block-image.is-style-pap-marco::after {
	content: "";
	position: absolute;
	inline-size: 28px;
	block-size: 28px;
	border: 0 solid var( --tnt-color-accent-2 );
	pointer-events: none;
}
.wp-block-image.is-style-pap-marco::before { inset-block-start: 0; inset-inline-start: 0; border-block-start-width: 2px; border-inline-start-width: 2px; }
.wp-block-image.is-style-pap-marco::after  { inset-block-end: 0; inset-inline-end: 0; border-block-end-width: 2px; border-inline-end-width: 2px; }
.wp-block-image.is-style-pap-marco img { display: block; border-radius: var( --tnt-radius-sm ); }

/* Alcances (list) — filas con junta, marcador cuadrado verde, sin numeración. */
.is-style-pap-alcances {
	list-style: none;
	margin: 0;
	padding: 0;
	border-block-start: 1px solid var( --tnt-color-border );
}
.is-style-pap-alcances > li {
	display: flex;
	align-items: baseline;
	gap: 0.85em;
	padding-block: 0.8em;
	border-block-end: 1px solid var( --tnt-color-border );
	transition: padding 380ms var( --tnt-ease-expo ), color 380ms var( --tnt-ease-expo );
}
.is-style-pap-alcances > li::before {
	content: "";
	inline-size: 0.5em;
	aspect-ratio: 1;
	background: var( --tnt-color-primary );
	flex: none;
	transform: translateY( -0.1em );
}
.is-style-pap-alcances > li:hover { padding-inline-start: 0.4em; }

/* ==========================================================================
 * 1. Flujo global — sin huecos entre header/main/footer (§9)
 * ========================================================================== */
.wp-site-blocks > main,
.wp-site-blocks > footer { margin-block-start: 0; }
:root .wp-block-post-content > .blokino-section.alignfull { margin-block: 0; }
:root .pap-main > .wp-block-post-content > :first-child:not( .blokino-section ) { margin-block-start: var( --tnt-space-8 ); }
:root .pap-main > .wp-block-post-content > :last-child:not( .blokino-section ) { margin-block-end: var( --tnt-space-9 ); }
img { height: auto; }

/* ==========================================================================
 * 2. Header — sticky; cristal en ::before para no atrapar el overlay móvil (§13.2)
 * ========================================================================== */
/* WP envuelve la template part en <header class="wp-block-template-part"> del mismo alto:
   un sticky solo se pega dentro de su padre, así que el header se iba con el scroll. Sin
   caja (display: contents) el padre pasa a ser .wp-site-blocks y el sticky funciona
   (mismo arreglo que TUNET). Con la barra de admin visible, se pega debajo de ella. */
.wp-block-template-part:has( > .pap-header ) { display: contents; }
.pap-header { position: sticky; top: var( --wp-admin--admin-bar--height, 0px ); z-index: 100; isolation: isolate; }
.pap-header::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: color-mix( in srgb, var( --tnt-color-bg ) 88%, transparent );
	backdrop-filter: blur( 14px ) saturate( 1.2 );
	-webkit-backdrop-filter: blur( 14px ) saturate( 1.2 );
	border-block-end: 1px solid var( --tnt-color-border );
}
.pap-header .pap-header__bar {
	margin-inline: auto;
	max-inline-size: var( --wp--style--global--wide-size, 86rem );
	inline-size: 100%;
}
/* Franja superior: datos de contacto en mono (cota del header). */
:root .pap-header .pap-header__top {
	margin-inline: auto;
	max-inline-size: var( --wp--style--global--wide-size, 86rem );
	inline-size: 100%;
	font-family: var( --tnt-font-mono );
	font-size: 0.72rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var( --tnt-color-text-muted );
	border-block-end: 1px solid var( --tnt-color-border );
}
.pap-header__top p { margin: 0; }
.pap-header__top a { color: inherit; text-decoration: none; transition: color var( --tnt-dur-fast ) var( --tnt-ease-power3 ); }
.pap-header__top a:hover { color: var( --tnt-color-primary ); }
@media ( max-width: 48rem ) { :root .pap-header__top { display: none; } }

/* Marca: título de fallback si no hay logo; logo con ancho del bloque. */
.pap-header .blokino-brand { text-decoration: none; color: var( --tnt-color-text ); }
.pap-header .blokino-brand__title {
	font-family: var( --tnt-font-display );
	font-stretch: 75%;
	font-weight: 800;
	font-size: var( --tnt-text-md );
	text-transform: uppercase;
	line-height: 1;
	white-space: nowrap;
}
.pap-header .blokino-brand__img { inline-size: auto; max-block-size: 3rem; }

/* Nav desktop — hover: línea verde que crece desde la izquierda. */
.pap-nav { font-weight: 600; font-size: var( --tnt-text-sm ); }
.pap-nav .wp-block-navigation-item__content {
	color: var( --tnt-color-text );
	position: relative;
	transition: color var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.pap-nav > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	inset-inline: 0;
	inset-block-end: -8px;
	block-size: 2px;
	background: var( --tnt-color-primary );
	transform: scaleX( 0 );
	transform-origin: left;
	transition: transform var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-nav .wp-block-navigation-item__content:hover { color: var( --tnt-color-primary ); }
.pap-nav > .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content:hover::after,
.pap-nav .current-menu-item > .wp-block-navigation-item__content::after { transform: scaleX( 1 ); }
/* Submenú con puente invisible (§13.2). */
.pap-nav .wp-block-navigation-submenu > .wp-block-navigation__submenu-container {
	background: var( --tnt-color-surface );
	border: 1px solid var( --tnt-color-border );
	border-block-start: 3px solid var( --tnt-color-primary );
	border-radius: 0 0 var( --tnt-radius-md ) var( --tnt-radius-md );
	box-shadow: var( --tnt-shadow-2 );
	padding: var( --tnt-space-2 );
	margin-block-start: var( --tnt-space-3 );
	min-inline-size: 15rem;
}
.pap-nav .wp-block-navigation-submenu::before {
	content: "";
	position: absolute;
	inset-block-start: 100%;
	inset-inline: 0;
	block-size: var( --tnt-space-3 );
}
.pap-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 0.55em 0.8em;
	border-radius: var( --tnt-radius-sm );
}
.pap-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
	background: color-mix( in srgb, var( --tnt-color-primary ) 9%, transparent );
}

.pap-header__actions { flex: 0 0 auto; }
/* Header CTA — compacto, sin wrap (§13.2). */
.pap-header .pap-header-cta .wp-block-button__link {
	white-space: nowrap;
	padding: 0.72em 1.25em;
	min-block-size: 0;
}
@media ( max-width: 30rem ) {
	.pap-header .pap-header-cta .wp-block-button__link { padding: 0.6em 0.9em; font-size: 0.8rem; }
}

/* Menú móvil — overlay full-screen, columna izquierda, targets 44px (§13.2). */
.pap-nav .wp-block-navigation__responsive-container.is-menu-open { padding: var( --tnt-space-6 ) var( --tnt-space-5 ); }
.pap-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	align-items: flex-start !important;
	gap: var( --tnt-space-2 );
}
.pap-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,
.pap-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	align-items: flex-start !important;
	justify-content: flex-start !important;
	text-align: left;
}
.pap-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: block;
	padding-block: 0.4rem;
	min-block-size: 44px;
	font-size: var( --tnt-text-lg );
	font-family: var( --tnt-font-display );
	font-stretch: 75%;
	font-weight: 800;
	text-transform: uppercase;
}
.pap-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	border: 0 !important;
	box-shadow: none !important;
	background: transparent !important;
	padding: 0 0 0 var( --tnt-space-4 ) !important;
	margin: 0 !important;
}
.pap-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	font-family: var( --tnt-font-body );
	font-stretch: 100%;
	font-weight: 500;
	text-transform: none;
	font-size: var( --tnt-text-base );
	min-block-size: 40px;
}
/* Nueve ítems + CTA no caben en una fila en tablet: el overlay entra antes. */
@media ( max-width: 75rem ) {
	.pap-nav .wp-block-navigation__responsive-container-open:not( .always-shown ) { display: flex; }
	.pap-nav .wp-block-navigation__responsive-container:not( .hidden-by-default ):not( .is-menu-open ) { display: none; }
}

/* ==========================================================================
 * 3. Botones — micro-interacciones sobre la base de theme.json
 * ========================================================================== */
.wp-block-button__link {
	transition:
		transform var( --tnt-dur-fast ) var( --tnt-ease-power3 ),
		background-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ),
		color var( --tnt-dur-fast ) var( --tnt-ease-power3 ),
		border-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ),
		box-shadow var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.wp-block-button__link:hover {
	transform: translateY( -2px );
	box-shadow: 0 14px 30px -14px color-mix( in srgb, var( --tnt-color-ink ) 60%, transparent );
}
:root .wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	color: var( --tnt-color-text );
	border: 2px solid currentColor;
}
:root .wp-block-button.is-style-outline .wp-block-button__link:hover {
	background: var( --tnt-color-text );
	color: var( --tnt-color-bg );
	border-color: var( --tnt-color-text );
}
/* Botón señal (amarillo seguridad) — solo un CTA por vista. */
:root .pap-btn-signal .wp-block-button__link {
	background: var( --tnt-color-signal );
	border-color: var( --tnt-color-signal );
	color: var( --tnt-color-ink );
}
:root .pap-btn-signal .wp-block-button__link:hover {
	background: var( --tnt-color-on-ink );
	border-color: var( --tnt-color-on-ink );
	color: var( --tnt-color-ink );
}
/* Flecha que avanza en los enlaces de acción. */
.pap-arrow .wp-block-button__link::after,
a.pap-arrow::after {
	content: "→";
	display: inline-block;
	margin-inline-start: 0.55em;
	transition: transform var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.pap-arrow .wp-block-button__link:hover::after,
a.pap-arrow:hover::after { transform: translateX( 4px ); }
@media ( prefers-reduced-motion: reduce ) {
	.wp-block-button__link:hover { transform: none; }
}

/* ==========================================================================
 * 4. Content shell ↔ sidebar (clase del body del motor, §13.9)
 * ========================================================================== */
.pap-content-shell { --pap-aside-w: 21rem; }
.pap-content-shell:not( .pap-content-shell--auto ) {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) var( --pap-aside-w );
	gap: var( --tnt-space-8 );
	align-items: start;
}
.pap-content-shell--auto { display: block; }
body.blokino-has-sidebar .pap-content-shell--auto {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) var( --pap-aside-w );
	gap: var( --tnt-space-8 );
	align-items: start;
}
body.blokino-no-sidebar .pap-content-shell--auto .pap-content-shell__aside { display: none; }
:root body.blokino-no-sidebar .pap-content-shell--single .pap-content-shell__main { max-inline-size: 48rem; margin-inline: auto; }
.pap-content-shell__aside { position: sticky; top: 7rem; }
@media ( max-width: 60rem ) {
	.pap-content-shell,
	.pap-content-shell:not( .pap-content-shell--auto ),
	body.blokino-has-sidebar .pap-content-shell--auto { display: block; }
	.pap-content-shell__aside { position: static; margin-block-start: var( --tnt-space-8 ); }
}

/* Sidebar */
.pap-sidebar { display: flex; flex-direction: column; gap: var( --tnt-space-6 ); }
.pap-sidebar__title {
	margin: 0 0 var( --tnt-space-3 );
	font-family: var( --tnt-font-mono );
	font-stretch: 100%;
	font-size: var( --tnt-text-xs );
	text-transform: uppercase;
	letter-spacing: var( --tnt-tracking-wide );
	color: var( --tnt-color-primary );
	font-weight: 600;
}
.pap-sidebar__post-list { list-style: none; margin: 0; padding: 0; }
.pap-sidebar__post-list > li + li { margin-block-start: var( --tnt-space-3 ); padding-block-start: var( --tnt-space-3 ); border-block-start: 1px solid var( --tnt-color-border ); }
.pap-sidebar__post-title { margin: 0; font-family: var( --tnt-font-body ); font-stretch: 100%; text-transform: none; font-weight: 600; letter-spacing: 0; }
.pap-sidebar__post-title a { color: var( --tnt-color-text ); text-decoration: none; }
.pap-sidebar__post-title a:hover { color: var( --tnt-color-primary ); }
.pap-sidebar__post-date { display: block; margin-block-start: 0.35em; color: var( --tnt-color-text-muted ); }
.pap-sidebar__cats { list-style: none; margin: 0; padding: 0; }
.pap-sidebar__cats li { padding-block: 0.45em; border-block-end: 1px solid var( --tnt-color-border ); }
.pap-sidebar__cats a { text-decoration: none; color: var( --tnt-color-text ); }
.pap-sidebar__cats a:hover { color: var( --tnt-color-primary ); }
.pap-sidebar__cta {
	background: var( --tnt-color-ink );
	color: var( --tnt-color-on-ink );
	border-radius: var( --tnt-radius-md );
	padding: var( --tnt-space-6 );
	border-block-start: 4px solid var( --tnt-color-signal );
}
.pap-sidebar__cta :where( h3, p ) { color: var( --tnt-color-on-ink ); }
.pap-sidebar__cta .pap-kicker { color: var( --tnt-color-sprout ); }
.pap-sidebar__cta-title { margin: var( --tnt-space-3 ) 0 var( --tnt-space-2 ); font-size: var( --tnt-text-lg ); }

/* Search (tokenizado, box-sizing seguro §9). */
:root .wp-block-search__inside-wrapper { border: 0; padding: 0; gap: var( --tnt-space-2 ); }
.wp-block-search input.wp-block-search__input {
	box-sizing: border-box;
	inline-size: 100%;
	background: var( --tnt-color-surface );
	border: 1px solid var( --tnt-color-border );
	border-radius: var( --tnt-radius-sm );
	color: var( --tnt-color-text );
	padding: 0.85em 1em;
}
.wp-block-search .wp-block-search__button {
	border-radius: var( --tnt-radius-sm );
	background: var( --tnt-color-brand );
	color: var( --tnt-color-on-brand );
	border: 0;
	font-weight: 600;
	padding-inline: 1.2em;
}

/* Formularios genéricos (CF7 y otros) — tokens + box-sizing §9. */
:is( .pap-main, .pap-form ) :is( input[type="text"], input[type="email"], input[type="tel"], input[type="url"], input[type="search"], input[type="number"], input[type="date"], input[type="file"], textarea, select ) {
	box-sizing: border-box;
	inline-size: 100%;
	background: var( --tnt-color-surface );
	border: 1px solid var( --tnt-color-border );
	border-radius: var( --tnt-radius-sm );
	color: var( --tnt-color-text );
	padding: 0.9em 1em;
	font-family: var( --tnt-font-body );
	font-size: var( --tnt-text-base );
	transition: border-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), box-shadow var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
:is( .pap-main, .pap-form ) input[type="file"] { padding: 0.7em; cursor: pointer; }
:is( .pap-main, .pap-form ) input[type="file"]::file-selector-button {
	margin-inline-end: 1em;
	border: 0;
	border-radius: var( --tnt-radius-sm );
	background: var( --tnt-color-ink );
	color: var( --tnt-color-on-ink );
	padding: 0.6em 1em;
	font: 600 var( --tnt-text-sm ) / 1 var( --tnt-font-body );
	cursor: pointer;
}
:is( .pap-main, .pap-form ) :is( input, textarea, select ):focus-visible {
	outline: none;
	border-color: var( --tnt-color-primary );
	box-shadow: 0 0 0 3px color-mix( in srgb, var( --tnt-color-primary ) 22%, transparent );
}
:is( .pap-main, .pap-form ) textarea { min-block-size: 9rem; resize: vertical; }
.wpcf7-form { display: grid; gap: var( --tnt-space-4 ); }
.wpcf7-form p { margin: 0; }
.wpcf7-form label {
	display: grid;
	gap: 0.45em;
	font-family: var( --tnt-font-mono );
	font-size: var( --tnt-text-xs );
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var( --tnt-color-text-muted );
}
.wpcf7-form .pap-form__row { display: grid; grid-template-columns: repeat( auto-fit, minmax( 14rem, 1fr ) ); gap: var( --tnt-space-4 ); }
.wpcf7-form input[type="submit"] {
	justify-self: start;
	background: var( --tnt-color-brand );
	color: var( --tnt-color-on-brand );
	border: 2px solid var( --tnt-color-brand );
	border-radius: var( --tnt-radius-sm );
	padding: 0.95em 2em;
	font: 600 var( --tnt-text-sm ) / 1 var( --tnt-font-body );
	letter-spacing: 0.02em;
	cursor: pointer;
	transition: background-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), transform var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.wpcf7-form input[type="submit"]:hover { background: var( --tnt-color-ink ); border-color: var( --tnt-color-ink ); transform: translateY( -2px ); }
.wpcf7-not-valid-tip { font-family: var( --tnt-font-body ); text-transform: none; letter-spacing: 0; font-size: var( --tnt-text-xs ); color: #B3261E; }
.wpcf7 form .wpcf7-response-output { margin: 0; border-radius: var( --tnt-radius-sm ); padding: 0.9em 1em; font-size: var( --tnt-text-sm ); }
.wpcf7-spinner { margin-inline-start: 0.8em; }

/* Prosa (entradas, páginas simples). */
.pap-prose { color: var( --tnt-color-text ); }
.pap-prose > * { margin-block: 0; }
.pap-prose > * + * { margin-block-start: var( --tnt-space-4 ); }
.pap-prose :where( h2, h3, h4 ) { margin-block-start: var( --tnt-space-7 ); }
.pap-prose blockquote {
	margin-inline: 0;
	padding: var( --tnt-space-4 ) var( --tnt-space-5 );
	border-inline-start: 4px solid var( --tnt-color-primary );
	background: color-mix( in srgb, var( --tnt-color-primary ) 6%, transparent );
	font-family: var( --tnt-font-display );
	font-stretch: 75%;
	font-weight: 700;
	font-size: var( --tnt-text-md );
	line-height: 1.2;
	text-transform: uppercase;
}
.pap-prose blockquote cite { display: block; margin-block-start: 0.6em; font: 500 var( --tnt-text-xs ) / 1.4 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-text-muted ); }
.pap-prose ul:not( [class] ) { padding-inline-start: 1.2em; }
.pap-prose ul:not( [class] ) li::marker { color: var( --tnt-color-primary ); }
.pap-prose a { text-underline-offset: 0.2em; }

/* ==========================================================================
 * 5. Footer — banda Monte fija, segura en cualquier variación (§13.1)
 * ========================================================================== */
.pap-footer {
	background: var( --tnt-color-ink );
	color: var( --tnt-color-on-ink );
	--tnt-color-text: var( --tnt-color-on-ink );
}
.pap-footer > .wp-block-columns,
.pap-footer > .pap-footer__legal,
.pap-footer > .pap-footer__cota {
	max-inline-size: var( --wp--style--global--wide-size, 86rem );
	margin-inline: auto;
	inline-size: 100%;
	box-sizing: border-box;
}
.pap-footer .pap-footer__cota { color: var( --tnt-color-sprout ); margin-block: 0 !important; }
.pap-footer__claim { color: color-mix( in srgb, var( --tnt-color-on-ink ) 74%, transparent ); max-inline-size: 34ch; }
.pap-footer :where( p ) { color: color-mix( in srgb, var( --tnt-color-on-ink ) 80%, transparent ); }
.pap-footer :where( a ) { color: var( --tnt-color-on-ink ); text-decoration: none; transition: color var( --tnt-dur-fast ) var( --tnt-ease-power3 ); }
.pap-footer :where( a ):hover { color: var( --tnt-color-signal ); }
.pap-footer .wp-block-navigation-item__content { color: color-mix( in srgb, var( --tnt-color-on-ink ) 80%, transparent ); }
.pap-footer .wp-block-navigation-item__content:hover { color: var( --tnt-color-signal ); }
.pap-footer__title {
	font-family: var( --tnt-font-mono );
	font-stretch: 100%;
	text-transform: uppercase;
	letter-spacing: var( --tnt-tracking-wide );
	margin-block-end: var( --tnt-space-4 );
	color: var( --tnt-color-sprout );
	font-weight: 600;
}
.pap-footer__data { font-size: var( --tnt-text-sm ); line-height: 1.55; }
.pap-footer__data strong { color: var( --tnt-color-on-ink ); font-weight: 600; }
.pap-footer__legal {
	border-block-start: 1px solid color-mix( in srgb, var( --tnt-color-on-ink ) 16%, transparent );
	padding-block-start: var( --tnt-space-4 );
	gap: var( --tnt-space-3 );
	color: color-mix( in srgb, var( --tnt-color-on-ink ) 60%, transparent );
	letter-spacing: 0.05em;
}
.pap-footer__legal p { color: inherit; }
.pap-footer__social .wp-social-link { color: var( --tnt-color-on-ink ) !important; }
/* Marca del footer: la banda es oscura SIEMPRE → logo alternativo (blanco). */
.pap-footer .blokino-brand { color: var( --tnt-color-on-ink ); text-decoration: none; }
.pap-footer .blokino-brand.has-alt {
	display: inline-flex;
	--tnt-brand-main-display: none;
	--tnt-brand-alt-display: block;
}
.pap-footer .blokino-brand__img { inline-size: auto; max-block-size: 4rem; }
.pap-footer .blokino-brand__title { font-family: var( --tnt-font-display ); font-stretch: 75%; font-weight: 800; font-size: var( --tnt-text-lg ); text-transform: uppercase; }

/* Focus visible accesible en toda superficie interactiva. */
:where( a, button, [role="button"], input, textarea, select, summary ):focus-visible {
	outline: 2px solid var( --tnt-color-primary );
	outline-offset: 3px;
}
.pap-footer :where( a, button ):focus-visible,
.pap-dark :where( a, button ):focus-visible { outline-color: var( --tnt-color-signal ); }

/* ==========================================================================
 * 6. Tipografía utilitaria — display, lede, datos
 * ========================================================================== */
.pap-display {
	font-family: var( --tnt-font-display );
	font-weight: 800;
	letter-spacing: var( --tnt-tracking-tight );
	line-height: var( --tnt-leading-tight );
	text-transform: uppercase;
}
.pap-lede { font-size: var( --tnt-text-md ); line-height: 1.5; color: var( --tnt-color-text-muted ); max-inline-size: 44ch; }
.pap-mono { font-family: var( --tnt-font-mono ); font-size: var( --tnt-text-xs ); letter-spacing: 0.08em; text-transform: uppercase; }
.pap-muted { color: var( --tnt-color-text-muted ); }

/* Bandas siempre oscuras (§13.1): tokens fijos, nunca siguen la variación. */
.pap-dark {
	--tnt-color-text: var( --tnt-color-on-ink );
	--tnt-color-text-muted: color-mix( in srgb, var( --tnt-color-on-ink ) 72%, transparent );
	--tnt-color-border: color-mix( in srgb, var( --tnt-color-on-ink ) 18%, transparent );
	--tnt-color-primary: var( --tnt-color-sprout );
	color: var( --tnt-color-on-ink );
}
.pap-dark :where( h1, h2, h3, h4, p, li ) { color: var( --tnt-color-on-ink ); }
.pap-dark .pap-kicker, .pap-dark .is-style-pap-kicker { color: var( --tnt-color-sprout ); }
.pap-dark .pap-lede { color: color-mix( in srgb, var( --tnt-color-on-ink ) 78%, transparent ); }
:root .pap-dark.blokino-section > .blokino-section__bg { background-color: var( --tnt-color-ink ); }
/* Banda de marca (verde PAP), fija. */
.pap-brand-band {
	--tnt-color-text: var( --tnt-color-on-brand );
	--tnt-color-text-muted: color-mix( in srgb, var( --tnt-color-on-brand ) 80%, transparent );
	color: var( --tnt-color-on-brand );
}
.pap-brand-band :where( h1, h2, h3, p ) { color: var( --tnt-color-on-brand ); }
:root .pap-brand-band.blokino-section > .blokino-section__bg { background-color: var( --tnt-color-brand ); }

/* ==========================================================================
 * 7. La cota se dibuja de izquierda a derecha
 * --------------------------------------------------------------------------
 * El clip-reveal del motor revela de abajo arriba (inset(100% 0 0 0)). Para
 * la cota el theme solo cambia el ESTADO INICIAL (contrato público del
 * runtime: .blokino-tf-ready / .is-tf-in); el motor no se toca.
 * ========================================================================== */
.blokino-tf-ready .is-style-pap-cota[data-tf-animation="clip-reveal"]:not( .is-tf-in ) { clip-path: inset( 0 100% 0 0 ); }

/* Retícula de plano sobre el fondo de una sección (decorativa, translúcida). */
.pap-grid-bg > .blokino-section__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient( rgba( 236, 238, 234, 0.06 ) 1px, transparent 1px ),
		linear-gradient( 90deg, rgba( 236, 238, 234, 0.06 ) 1px, transparent 1px );
	background-size: 56px 56px;
	mask-image: linear-gradient( 100deg, #000 10%, transparent 85% ), linear-gradient( 180deg, #000 35%, transparent 100% );
	mask-composite: intersect;
	-webkit-mask-image: linear-gradient( 100deg, #000 10%, transparent 85% ), linear-gradient( 180deg, #000 35%, transparent 100% );
	-webkit-mask-composite: source-in;
	pointer-events: none;
}

/* ==========================================================================
 * 8. Cabeceras de sección y héroes de página
 * ========================================================================== */
.pap-sec-head { margin-block-end: var( --tnt-space-7 ); gap: var( --tnt-space-4 ); }
.pap-sec-head--split {
	display: grid;
	grid-template-columns: minmax( 0, 1.1fr ) minmax( 0, 0.9fr );
	gap: var( --tnt-space-5 ) var( --tnt-space-8 );
	align-items: end;
}
.pap-sec-head--split .pap-lede { margin: 0; }
.pap-sec-head .pap-kicker { margin-block-end: var( --tnt-space-3 ); }
.pap-sec-title { margin: 0; font-size: var( --tnt-text-xl ); max-inline-size: 16ch; }
@media ( max-width: 48rem ) {
	.pap-sec-head--split { grid-template-columns: 1fr; }
}

.pap-page-hero .pap-kicker { margin-block-end: var( --tnt-space-4 ); }
.pap-page-hero__title,
.pap-article-title,
.pap-obra-title {
	margin: 0;
	font-size: clamp( 2.6rem, 1.2rem + 4.6vw, 6.2rem );
	line-height: var( --tnt-leading-tight );
	max-inline-size: 14ch;
}
.pap-article-title,
.pap-obra-title { font-size: var( --tnt-text-xl ); max-inline-size: 20ch; }
.pap-page-hero__title--search { font-size: var( --tnt-text-xl ); max-inline-size: none; }
.pap-page-hero .pap-lede { margin-block-start: var( --tnt-space-5 ); }
.pap-page-hero__cota { color: var( --tnt-color-signal ); max-inline-size: 40rem; margin-block-start: var( --tnt-space-6 ); }
.pap-hero-search { margin-block-start: var( --tnt-space-5 ); max-inline-size: 36rem; }

/* Chips de líneas de servicio (categories de project_type). */
.pap-chips { list-style: none; margin: var( --tnt-space-5 ) 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: var( --tnt-space-2 ); }
.pap-chips li { margin: 0; }
.pap-chips a {
	display: inline-flex;
	align-items: center;
	padding: 0.5em 1em;
	border: 1px solid color-mix( in srgb, var( --tnt-color-on-ink ) 30%, transparent );
	border-radius: var( --tnt-radius-pill );
	color: var( --tnt-color-on-ink );
	font-size: var( --tnt-text-sm );
	text-decoration: none;
	transition: background-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), border-color var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.pap-chips a:hover { background: var( --tnt-color-signal ); border-color: var( --tnt-color-signal ); color: var( --tnt-color-ink ); }

/* ==========================================================================
 * 9. Home — hero
 * ========================================================================== */
.pap-hero .blokino-section__inner { inline-size: 100%; }
.pap-hero__grid {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) minmax( 15rem, 20rem );
	gap: var( --tnt-space-7 );
	align-items: end;
}
.pap-hero__title {
	margin: var( --tnt-space-4 ) 0 0;
	font-size: clamp( 3rem, 1.3rem + 6vw, 8rem );
	line-height: 0.86;
	max-inline-size: 11ch;
	color: var( --tnt-color-on-ink );
}
.pap-hero__cota { color: var( --tnt-color-signal ); max-inline-size: 44rem; margin-block: var( --tnt-space-6 ) var( --tnt-space-5 ); }
.pap-hero__lede { margin: 0; max-inline-size: 40ch; }
.pap-hero__cta { margin-block-start: var( --tnt-space-6 ); gap: var( --tnt-space-3 ); }
.pap-hero .is-style-outline .wp-block-button__link { color: var( --tnt-color-on-ink ); }
:root .pap-hero .is-style-outline .wp-block-button__link:hover { background: var( --tnt-color-on-ink ); color: var( --tnt-color-ink ); border-color: var( --tnt-color-on-ink ); }
.pap-hero__index {
	padding: var( --tnt-space-5 );
	border: 1px solid color-mix( in srgb, var( --tnt-color-on-ink ) 20%, transparent );
	border-block-start: 3px solid var( --tnt-color-signal );
	background: color-mix( in srgb, var( --tnt-color-ink ) 55%, transparent );
	backdrop-filter: blur( 10px );
	-webkit-backdrop-filter: blur( 10px );
	border-radius: 0 0 var( --tnt-radius-md ) var( --tnt-radius-md );
}
.pap-hero__index-title { margin: 0 0 var( --tnt-space-3 ); font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: var( --tnt-tracking-wide ); color: var( --tnt-color-sprout ) !important; }
.pap-hero__lines { list-style: none; margin: 0; padding: 0; }
.pap-hero__lines li { margin: 0; border-block-start: 1px solid color-mix( in srgb, var( --tnt-color-on-ink ) 16%, transparent ); }
.pap-hero__lines a {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-block: 0.7em;
	color: var( --tnt-color-on-ink );
	text-decoration: none;
	font-weight: 600;
	transition: color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), padding var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.pap-hero__lines a::after { content: "→"; color: var( --tnt-color-signal ); transition: transform var( --tnt-dur-fast ) var( --tnt-ease-power3 ); }
.pap-hero__lines a:hover { color: var( --tnt-color-signal ); padding-inline-start: 0.3em; }
.pap-hero__lines a:hover::after { transform: translateX( 4px ); }
@media ( max-width: 60rem ) {
	.pap-hero__grid { grid-template-columns: 1fr; }
	.pap-hero__index { max-inline-size: 28rem; }
}

/* ==========================================================================
 * 10. Home — cifras
 * ========================================================================== */
.pap-cifras__grid { display: grid; grid-template-columns: repeat( 4, minmax( 0, 1fr ) ); }
.pap-cifra { padding: var( --tnt-space-3 ) var( --tnt-space-5 ); border-inline-start: 1px solid color-mix( in srgb, var( --tnt-color-on-ink ) 20%, transparent ); }
.pap-cifra:first-child { border-inline-start: 0; padding-inline-start: 0; }
.pap-cifra__num {
	display: block;
	font-family: var( --tnt-font-display );
	font-stretch: 75%;
	font-weight: 800;
	font-size: var( --tnt-text-xl );
	line-height: 1;
	color: var( --tnt-color-on-ink );
	font-variant-numeric: tabular-nums;
}
.pap-cifra:first-child .pap-cifra__num { color: var( --tnt-color-signal ); }
.pap-cifra__label { margin: var( --tnt-space-3 ) 0 0; font: 500 var( --tnt-text-xs ) / 1.45 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: color-mix( in srgb, var( --tnt-color-on-ink ) 72%, transparent ) !important; max-inline-size: 22ch; }
@media ( max-width: 48rem ) {
	.pap-cifras__grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); row-gap: var( --tnt-space-6 ); }
	.pap-cifra:nth-child( odd ) { border-inline-start: 0; padding-inline-start: 0; }
}

/* ==========================================================================
 * 11. Home — servicios en filas
 * ========================================================================== */
.pap-servicios__rows { border-block-start: 2px solid var( --tnt-color-text ); }
.pap-servicio-row {
	position: relative;
	display: grid;
	grid-template-columns: minmax( 0, 1.05fr ) minmax( 0, 1.2fr ) 11rem 4rem;
	gap: var( --tnt-space-5 );
	align-items: center;
	padding-block: var( --tnt-space-5 );
	border-block-end: 1px solid var( --tnt-color-border );
	transition: background-color var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-servicio-row::before {
	content: "";
	position: absolute;
	inset-block: -1px;
	inset-inline-start: 0;
	inline-size: 4px;
	background: var( --tnt-color-primary );
	transform: scaleY( 0 );
	transform-origin: top;
	transition: transform var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-servicio-row:hover { background: color-mix( in srgb, var( --tnt-color-primary ) 5%, transparent ); }
.pap-servicio-row:hover::before { transform: scaleY( 1 ); }
.pap-servicio-row__title { margin: 0; font-size: var( --tnt-text-lg ); padding-inline-start: var( --tnt-space-4 ); }
.pap-servicio-row__title a { color: var( --tnt-color-text ); text-decoration: none; }
/* Toda la fila es clicable: el enlace del título se estira sobre la fila. */
.pap-servicio-row__title a::after { content: ""; position: absolute; inset: 0; }
.pap-servicio-row:hover .pap-servicio-row__title a { color: var( --tnt-color-primary ); }
.pap-servicio-row__text { margin: 0; color: var( --tnt-color-text-muted ); }
.pap-servicio-row__img { margin: 0; border-radius: var( --tnt-radius-sm ); overflow: hidden; aspect-ratio: 4 / 3; }
.pap-servicio-row__img img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; }
.pap-servicio-row__go { margin: 0; justify-self: end; }
.pap-servicio-row__go a {
	display: flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	inline-size: 3rem;
	aspect-ratio: 1;
	border: 1px solid var( --tnt-color-border );
	border-radius: 50%;
	font-size: 0;
	color: var( --tnt-color-text );
	text-decoration: none;
	transition: background-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), border-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), color var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
:root .pap-servicio-row__go a::after { font-size: 1.15rem; line-height: 1; margin: 0; }
.pap-servicio-row:hover .pap-servicio-row__go a { background: var( --tnt-color-brand ); border-color: var( --tnt-color-brand ); color: var( --tnt-color-on-brand ); }
@media ( max-width: 60rem ) {
	.pap-servicio-row { grid-template-columns: minmax( 0, 1fr ) 7.5rem; }
	.pap-servicio-row__title { grid-column: 1; }
	.pap-servicio-row__text { grid-column: 1; padding-inline-start: var( --tnt-space-4 ); }
	.pap-servicio-row__img { grid-column: 2; grid-row: 1 / span 2; }
	.pap-servicio-row__go { display: none; }
}

/* ==========================================================================
 * 12. Home — obras premiadas (blokino/content-slider)
 * ========================================================================== */
.pap-premios { padding-block-end: 0; }
.pap-premios-slider.swiper { padding-block: var( --tnt-space-3 ) var( --tnt-space-8 ); padding-inline: max( var( --wp--style--root--padding-left, var( --tnt-space-5 ) ), calc( ( 100% - var( --wp--style--global--wide-size, 86rem ) ) / 2 ) ); overflow: hidden; margin-block: 0; }
.pap-premios-slider .blokino-cslide,
.pap-premios-slider .swiper-slide { min-block-size: clamp( 22rem, 44vw, 38rem ); }
.pap-premios-slider .blokino-cslide {
	border-radius: var( --tnt-radius-md );
	overflow: hidden;
	padding: var( --tnt-space-6 );
	align-items: flex-end;
	box-shadow: var( --tnt-shadow-2 );
}
.pap-premios-slider .blokino-cslide__subtitle {
	font: 500 var( --tnt-text-xs ) / 1.4 var( --tnt-font-mono );
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var( --tnt-color-signal );
	text-shadow: none;
	max-inline-size: 34ch;
}
.pap-premios-slider .blokino-cslide__title {
	font-family: var( --tnt-font-display );
	font-stretch: 75%;
	font-weight: 800;
	text-transform: uppercase;
	font-size: var( --tnt-text-lg );
	line-height: 0.95;
	color: var( --tnt-color-on-ink );
	text-shadow: none;
	max-inline-size: 18ch;
}
.pap-premios-slider .blokino-cslide__cta--outline { color: var( --tnt-color-on-ink ); border-color: color-mix( in srgb, var( --tnt-color-on-ink ) 45%, transparent ); border-radius: var( --tnt-radius-sm ); }
.pap-premios-slider .blokino-cslide__cta--outline:hover { background: var( --tnt-color-signal ); border-color: var( --tnt-color-signal ); color: var( --tnt-color-ink ); }
.pap-premios-slider .swiper-pagination-bullet-active { background: var( --tnt-color-primary ); }
:root .pap-premios-slider .swiper-button-prev,
:root .pap-premios-slider .swiper-button-next { background: var( --tnt-color-brand ); border-color: var( --tnt-color-brand ); color: var( --tnt-color-on-brand ); }
:root .pap-premios-slider .swiper-button-prev:hover,
:root .pap-premios-slider .swiper-button-next:hover { background: var( --tnt-color-ink ); }
.pap-premios-foot { padding-block-start: 0; }

/* ==========================================================================
 * 13. Home — historia y línea de tiempo
 * ========================================================================== */
.pap-historia__grid {
	display: grid;
	grid-template-columns: minmax( 0, 0.95fr ) minmax( 0, 1.05fr );
	gap: var( --tnt-space-9 );
	align-items: center;
}
.pap-historia__img { margin: 0; }
.pap-historia__img img { aspect-ratio: 4 / 5; object-fit: cover; inline-size: 100%; }
.pap-historia__text .pap-sec-title { margin-block: var( --tnt-space-3 ) var( --tnt-space-5 ); }
.pap-historia .is-style-pap-cota { color: var( --tnt-color-primary ); margin-block-start: var( --tnt-space-6 ); }
.pap-timeline { display: grid; grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); gap: var( --tnt-space-5 ); }
.pap-hito { padding-block-start: var( --tnt-space-2 ); }
.pap-hito__year { margin: 0; font-family: var( --tnt-font-display ); font-stretch: 75%; font-weight: 800; font-size: var( --tnt-text-lg ); line-height: 1; color: var( --tnt-color-primary ); }
.pap-hito__name { margin: var( --tnt-space-2 ) 0 var( --tnt-space-2 ); font-size: var( --tnt-text-md ); }
.pap-hito__text { margin: 0; font-size: var( --tnt-text-sm ); color: var( --tnt-color-text-muted ); }
@media ( max-width: 60rem ) {
	.pap-historia__grid { grid-template-columns: 1fr; gap: var( --tnt-space-7 ); }
	.pap-historia__img img { aspect-ratio: 16 / 10; }
}
@media ( max-width: 40rem ) {
	.pap-timeline { grid-template-columns: 1fr; }
}

/* ==========================================================================
 * 14. Home — compromiso, sedes, cierre
 * ========================================================================== */
.pap-compromiso__quote {
	margin: var( --tnt-space-4 ) 0 var( --tnt-space-5 );
	font-size: var( --tnt-text-xl );
	max-inline-size: 18ch;
	color: var( --tnt-color-on-ink );
}
.pap-compromiso .pap-lede { max-inline-size: 48ch; }

.pap-bases__grid { display: grid; grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); gap: var( --tnt-space-5 ); }
.pap-base {
	position: relative;
	padding: var( --tnt-space-6 );
	background-color: var( --tnt-color-surface );
	border: 1px solid var( --tnt-color-border );
	border-radius: var( --tnt-radius-md );
	color: var( --tnt-color-text );
	box-shadow: var( --tnt-shadow-1 );
	transition: box-shadow var( --tnt-dur-base ) var( --tnt-ease-expo ), border-color var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-base:hover { box-shadow: var( --tnt-shadow-3 ); border-color: var( --tnt-color-primary ); }
.pap-base__icon { color: var( --tnt-color-primary ); }
.pap-base__name { margin: var( --tnt-space-4 ) 0 0; font-size: var( --tnt-text-md ); }
.pap-base__cota { color: var( --tnt-color-primary ); margin-block: var( --tnt-space-4 ); }
.pap-base__addr { margin: 0; color: var( --tnt-color-text-muted ); font-size: var( --tnt-text-sm ); }
@media ( max-width: 60rem ) { .pap-bases__grid { grid-template-columns: 1fr; } }

.pap-cta__grid { display: grid; grid-template-columns: minmax( 0, 1.4fr ) minmax( 16rem, 0.6fr ); gap: var( --tnt-space-8 ); align-items: end; }
.pap-cta__title { margin: 0; font-size: var( --tnt-text-xl ); max-inline-size: 14ch; }
.pap-cta__text { margin: var( --tnt-space-5 ) 0 var( --tnt-space-6 ); max-inline-size: 44ch; font-size: var( --tnt-text-md ); line-height: 1.45; }
.pap-cta .is-style-outline .wp-block-button__link { color: var( --tnt-color-on-brand ); }
:root .pap-cta .is-style-outline .wp-block-button__link:hover { background: var( --tnt-color-on-brand ); color: var( --tnt-color-brand ); border-color: var( --tnt-color-on-brand ); }
.pap-cta__data { border-inline-start: 1px solid color-mix( in srgb, var( --tnt-color-on-brand ) 30%, transparent ); padding-inline-start: var( --tnt-space-6 ); }
.pap-cta__label { margin: 0; font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: var( --tnt-tracking-wide ); color: color-mix( in srgb, var( --tnt-color-on-brand ) 88%, transparent ) !important; }
.pap-cta__value { margin: var( --tnt-space-1 ) 0 var( --tnt-space-4 ); font-weight: 600; }
.pap-cta__value a { color: var( --tnt-color-on-brand ); text-decoration: none; }
.pap-cta__value a:hover { color: var( --tnt-color-signal ); }
@media ( max-width: 60rem ) {
	.pap-cta__grid { grid-template-columns: 1fr; }
	.pap-cta__data { border-inline-start: 0; padding-inline-start: 0; border-block-start: 1px solid color-mix( in srgb, var( --tnt-color-on-brand ) 30%, transparent ); padding-block-start: var( --tnt-space-5 ); }
}

/* ==========================================================================
 * 15. Grids auto-suficientes (§9) — PAP Tips y Obras
 * ========================================================================== */
:root .pap-tips-grid,
:root .pap-obras-grid {
	display: grid;
	grid-template-columns: repeat( auto-fill, minmax( 16rem, 1fr ) );
	gap: var( --tnt-space-7 ) var( --tnt-space-5 );
	list-style: none;
	margin: 0;
	padding: 0;
}
:root .pap-tips-grid--3,
:root .pap-obras-grid--3 { grid-template-columns: repeat( 3, minmax( 0, 1fr ) ); }
@media ( max-width: 60rem ) {
	:root .pap-tips-grid--3,
	:root .pap-obras-grid--3 { grid-template-columns: repeat( auto-fill, minmax( 16rem, 1fr ) ); }
}
:root .pap-tips-grid > li,
:root .pap-obras-grid > li { margin: 0; }

.pap-tip-card__img { margin: 0 0 var( --tnt-space-4 ); border: 1px solid var( --tnt-color-border ); border-radius: var( --tnt-radius-sm ); overflow: hidden; background: #fff; box-shadow: var( --tnt-shadow-1 ); transition: box-shadow var( --tnt-dur-base ) var( --tnt-ease-expo ), transform var( --tnt-dur-base ) var( --tnt-ease-expo ); }
.pap-tip-card__img img { object-position: top center; }
.pap-tip-card:hover .pap-tip-card__img { box-shadow: var( --tnt-shadow-3 ); transform: translateY( -4px ); }
.pap-tip-card__date { font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-primary ); }
.pap-tip-card__title { margin: var( --tnt-space-2 ) 0 0; font-size: var( --tnt-text-md ); line-height: 1; }
.pap-tip-card__title a { color: var( --tnt-color-text ); text-decoration: none; }
.pap-tip-card__title a:hover { color: var( --tnt-color-primary ); }
.pap-tip-card__excerpt { margin-block-start: var( --tnt-space-2 ); font-size: var( --tnt-text-sm ); color: var( --tnt-color-text-muted ); }
.pap-tip-card__excerpt .wp-block-post-excerpt__excerpt { margin: 0; }
@media ( prefers-reduced-motion: reduce ) { .pap-tip-card:hover .pap-tip-card__img { transform: none; } }

.pap-obra-card__img { margin: 0 0 var( --tnt-space-4 ); border-radius: var( --tnt-radius-sm ); overflow: hidden; }
.pap-obra-card__type { font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-primary ); }
.pap-obra-card__type a { color: inherit; text-decoration: none; }
.pap-obra-card__title { margin: var( --tnt-space-2 ) 0 0; font-size: var( --tnt-text-md ); line-height: 1; }
.pap-obra-card__title a { color: var( --tnt-color-text ); text-decoration: none; }
.pap-obra-card__title a:hover { color: var( --tnt-color-primary ); }
.pap-obra-card__excerpt { margin-block-start: var( --tnt-space-2 ); font-size: var( --tnt-text-sm ); color: var( --tnt-color-text-muted ); }
.pap-obra-card__excerpt .wp-block-post-excerpt__excerpt { margin: 0; }

.pap-pagination { font-family: var( --tnt-font-mono ); font-size: var( --tnt-text-sm ); }
.pap-pagination a { color: var( --tnt-color-text ); text-decoration: none; }
.pap-pagination .page-numbers.current { color: var( --tnt-color-primary ); font-weight: 600; }

/* Descargas (PDF) como filas. */
.pap-descargas__grid { display: grid; grid-template-columns: minmax( 0, 0.9fr ) minmax( 0, 1.1fr ); gap: var( --tnt-space-8 ); align-items: start; }
.pap-descargas .pap-sec-title { margin-block: var( --tnt-space-3 ) var( --tnt-space-4 ); }
.pap-docs { border-block-start: 2px solid var( --tnt-color-text ); }
.pap-doc { margin: 0; border-block-end: 1px solid var( --tnt-color-border ); }
.pap-doc a {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) auto;
	gap: 0.2em var( --tnt-space-4 );
	padding: var( --tnt-space-4 ) var( --tnt-space-2 );
	color: var( --tnt-color-text );
	text-decoration: none;
	transition: background-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), padding var( --tnt-dur-fast ) var( --tnt-ease-power3 );
}
.pap-doc strong { font-family: var( --tnt-font-display ); font-stretch: 75%; font-weight: 800; text-transform: uppercase; font-size: var( --tnt-text-md ); line-height: 1; }
.pap-doc span { grid-column: 1; color: var( --tnt-color-text-muted ); font-size: var( --tnt-text-sm ); }
.pap-doc em { grid-column: 2; grid-row: 1 / span 2; align-self: center; font: 600 var( --tnt-text-xs ) / 1 var( --tnt-font-mono ); font-style: normal; letter-spacing: 0.1em; padding: 0.6em 0.8em; border: 1px solid currentColor; border-radius: var( --tnt-radius-sm ); color: var( --tnt-color-primary ); }
.pap-doc a:hover { background: color-mix( in srgb, var( --tnt-color-primary ) 6%, transparent ); padding-inline-start: var( --tnt-space-4 ); }
.pap-doc a:hover em { background: var( --tnt-color-brand ); color: var( --tnt-color-on-brand ); border-color: var( --tnt-color-brand ); }
@media ( max-width: 60rem ) { .pap-descargas__grid { grid-template-columns: 1fr; gap: var( --tnt-space-6 ); } }

/* ==========================================================================
 * 16. Artículo (PAP Tip) y ficha de obra
 * ========================================================================== */
.pap-article-back a::before { content: "← "; }
.pap-article-meta { margin-block-start: var( --tnt-space-5 ); gap: var( --tnt-space-4 ); font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: color-mix( in srgb, var( --tnt-color-on-ink ) 72%, transparent ); }
.pap-article-meta a { color: var( --tnt-color-sprout ); text-decoration: none; }
.pap-article-grid { display: grid; grid-template-columns: minmax( 0, 18rem ) minmax( 0, 1fr ); gap: var( --tnt-space-7 ); align-items: start; }
.pap-article-doc { margin: 0; position: sticky; top: 8rem; border: 1px solid var( --tnt-color-border ); border-radius: var( --tnt-radius-sm ); overflow: hidden; box-shadow: var( --tnt-shadow-2 ); background: #fff; }
.pap-article-doc img { display: block; inline-size: 100%; block-size: auto; }
body.blokino-has-sidebar .pap-article-grid { grid-template-columns: 1fr; }
body.blokino-has-sidebar .pap-article-doc { position: static; max-inline-size: 18rem; }
.pap-article-nav { margin-block-start: var( --tnt-space-8 ); padding-block-start: var( --tnt-space-5 ); border-block-start: 1px solid var( --tnt-color-border ); gap: var( --tnt-space-4 ); }
.pap-article-nav a { color: var( --tnt-color-text ); text-decoration: none; font-weight: 600; }
.pap-article-nav a:hover { color: var( --tnt-color-primary ); }
@media ( max-width: 48rem ) {
	.pap-article-grid { grid-template-columns: 1fr; }
	.pap-article-doc { position: static; max-inline-size: 16rem; }
}

.pap-obra-facts { margin-block-start: var( --tnt-space-5 ); gap: var( --tnt-space-3 ); }
.pap-obra-fact { margin: 0; padding: 0.45em 0.9em; border: 1px solid color-mix( in srgb, var( --tnt-color-on-ink ) 28%, transparent ); border-radius: var( --tnt-radius-pill ); font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-on-ink ); }
.pap-obra-fact:empty { display: none; }
.pap-obra-fact a { color: var( --tnt-color-sprout ); text-decoration: none; }
.pap-obra-fact--year { border-color: var( --tnt-color-signal ); color: var( --tnt-color-signal ) !important; }
/* La portada “cuelga” de la banda Monte: el fondo de su sección continúa el Monte
   hasta la mitad de la foto (decorativo; la sección del motor recorta con overflow:clip,
   así que no se usa margen negativo). */
:root .pap-obra-cover-sec { background: linear-gradient( 180deg, var( --tnt-color-ink ) 0 45%, transparent 45% ); }
.pap-obra-cover { margin: 0; border-radius: var( --tnt-radius-md ); overflow: hidden; box-shadow: var( --tnt-shadow-3 ); }
.pap-obra-body { max-inline-size: 52rem; }
.pap-obra-lede { font-size: var( --tnt-text-md ); line-height: 1.5; margin-block-end: var( --tnt-space-5 ); }
.pap-obra-lede .wp-block-post-excerpt__excerpt { margin: 0; }
.pap-obra-content .wp-block-gallery { margin-block-start: var( --tnt-space-6 ); }
.pap-obra-more .pap-sec-title { font-size: var( --tnt-text-lg ); }

/* ==========================================================================
 * 17. Páginas interiores — hero con foto y navegación de anclas
 * ========================================================================== */
.pap-page-hero--photo .pap-lede { color: color-mix( in srgb, var( --tnt-color-on-ink ) 82%, transparent ); max-inline-size: 52ch; }
:root .pap-anchor-nav-sec { position: sticky; top: calc( var( --pap-header-h, 6.5rem ) + var( --wp-admin--admin-bar--height, 0px ) ); z-index: 20; background: color-mix( in srgb, var( --tnt-color-bg ) 92%, transparent ); backdrop-filter: blur( 10px ); -webkit-backdrop-filter: blur( 10px ); border-block-end: 1px solid var( --tnt-color-border ); }
.pap-anchor-nav { list-style: none; margin: 0; padding: 0; display: flex; gap: var( --tnt-space-5 ); overflow-x: auto; scrollbar-width: none; }
.pap-anchor-nav::-webkit-scrollbar { display: none; }
.pap-anchor-nav li { margin: 0; flex: none; }
.pap-anchor-nav a { display: block; padding-block: 1.45em; font: 500 var( --tnt-text-sm ) / 1 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-text-muted ); text-decoration: none; border-block-end: 2px solid transparent; transition: color var( --tnt-dur-fast ) var( --tnt-ease-power3 ), border-color var( --tnt-dur-fast ) var( --tnt-ease-power3 ); }
.pap-anchor-nav a:hover { color: var( --tnt-color-primary ); border-color: var( --tnt-color-primary ); }

[id="resena"], [id="mision"], [id="valores"], [id="calidad"], [id="siaho"] { scroll-margin-top: 11rem; }

/* Empresa — reseña */
.pap-resena__grid { display: grid; grid-template-columns: minmax( 0, 0.85fr ) minmax( 0, 1.15fr ); gap: var( --tnt-space-9 ); align-items: start; }
.pap-resena__head { position: sticky; top: 12rem; }
.pap-resena__img { margin: var( --tnt-space-6 ) 0 0; }
.pap-resena__img img { aspect-ratio: 4 / 3; object-fit: cover; inline-size: 100%; }
.pap-resena__lead { font-size: var( --tnt-text-md ); line-height: 1.5; }
.pap-resena .is-style-pap-cota { color: var( --tnt-color-primary ); margin-block-start: var( --tnt-space-7 ); }
@media ( max-width: 60rem ) {
	.pap-resena__grid { grid-template-columns: 1fr; gap: var( --tnt-space-6 ); }
	.pap-resena__head { position: static; }
}

/* Empresa — misión y visión */
.pap-mision__grid { display: grid; grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); gap: var( --tnt-space-8 ); }
.pap-mision__item { border-block-start: 3px solid var( --tnt-color-signal ); padding-block-start: var( --tnt-space-5 ); }
.pap-mision__text { margin: var( --tnt-space-4 ) 0 0; font-family: var( --tnt-font-display ); font-stretch: 87%; font-variation-settings: "wdth" 87; font-weight: 600; font-size: var( --tnt-text-md ); line-height: 1.3; color: var( --tnt-color-on-ink ); max-inline-size: 36ch; }
@media ( max-width: 48rem ) { .pap-mision__grid { grid-template-columns: 1fr; } }

/* Empresa — valores (bento: los dos rectores más grandes) */
.pap-valores__grid { display: grid; grid-template-columns: repeat( 12, minmax( 0, 1fr ) ); gap: var( --tnt-space-4 ); }
/* 3 arriba (Calidad, Seguridad y Honestidad, en verde) y 4 abajo: la fila completa siempre cuadra. */
.pap-valores__grid > .pap-valor { grid-column: span 3; }
.pap-valores__grid > .pap-valor:nth-child( -n + 3 ) { grid-column: span 4; }
.pap-valor {
	padding: var( --tnt-space-5 );
	background: var( --tnt-color-surface );
	border: 1px solid var( --tnt-color-border );
	border-radius: var( --tnt-radius-md );
	transition: box-shadow var( --tnt-dur-base ) var( --tnt-ease-expo ), border-color var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-valor:hover { box-shadow: var( --tnt-shadow-2 ); border-color: var( --tnt-color-primary ); }
.pap-valor--rector { background: var( --tnt-color-brand ); border-color: var( --tnt-color-brand ); color: var( --tnt-color-on-brand ); }
.pap-valor--rector :where( h3, p ) { color: var( --tnt-color-on-brand ); }
.pap-valor__icon { color: var( --tnt-color-primary ); }
.pap-valor--rector .pap-valor__icon { color: var( --tnt-color-signal ); }
.pap-valor__name { margin: var( --tnt-space-4 ) 0 var( --tnt-space-2 ); font-size: var( --tnt-text-md ); }
.pap-valor--rector .pap-valor__name { font-size: var( --tnt-text-lg ); }
.pap-valor__text { margin: 0; color: var( --tnt-color-text-muted ); font-size: var( --tnt-text-sm ); }
.pap-valor--rector .pap-valor__text { font-size: var( --tnt-text-base ); color: color-mix( in srgb, var( --tnt-color-on-brand ) 86%, transparent ); }
@media ( max-width: 60rem ) {
	.pap-valores__grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
	.pap-valores__grid > .pap-valor,
	.pap-valores__grid > .pap-valor:nth-child( -n + 3 ) { grid-column: auto; }
	.pap-valores__grid > .pap-valor:first-child { grid-column: 1 / -1; }
}
@media ( max-width: 30rem ) { .pap-valores__grid { grid-template-columns: 1fr; } }

/* Empresa — política de calidad y SIAHO */
.pap-politica__grid { display: grid; grid-template-columns: minmax( 0, 1fr ) minmax( 0, 1fr ); gap: var( --tnt-space-9 ); align-items: center; }
.pap-politica__img { margin: 0; }
.pap-politica__img img { aspect-ratio: 5 / 4; object-fit: cover; inline-size: 100%; }
.pap-politica .pap-sec-title { margin-block: var( --tnt-space-3 ) var( --tnt-space-5 ); }
@media ( max-width: 60rem ) { .pap-politica__grid { grid-template-columns: 1fr; gap: var( --tnt-space-6 ); } }
.pap-siaho__box { max-inline-size: 46rem; }
.pap-siaho__icon { color: var( --tnt-color-signal ); margin-block-end: var( --tnt-space-4 ); }
.pap-siaho__title { margin-block: var( --tnt-space-3 ) var( --tnt-space-5 ); max-inline-size: 20ch; }
.pap-siaho p:not( .pap-kicker ) { color: color-mix( in srgb, var( --tnt-color-on-ink ) 86%, transparent ); }

/* Infraestructura — recursos */
.pap-recursos__grid { display: grid; grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); gap: var( --tnt-space-5 ); }
.pap-recurso { padding: var( --tnt-space-7 ); background-color: var( --tnt-color-surface ); border: 1px solid var( --tnt-color-border ); border-radius: var( --tnt-radius-md ); color: var( --tnt-color-text ); }
.pap-recurso__icon { color: var( --tnt-color-primary ); }
.pap-recurso__title { margin: var( --tnt-space-4 ) 0 var( --tnt-space-3 ); font-size: var( --tnt-text-lg ); }
.pap-recurso p { color: var( --tnt-color-text-muted ); max-inline-size: 46ch; }
@media ( max-width: 48rem ) { .pap-recursos__grid { grid-template-columns: 1fr; } }

/* Servicio — intro, alcances, galería, otras líneas */
.pap-servicio__grid { display: grid; grid-template-columns: minmax( 0, 1fr ) minmax( 0, 1fr ); gap: var( --tnt-space-9 ); align-items: start; }
.pap-servicio__intro { margin: var( --tnt-space-4 ) 0 var( --tnt-space-6 ); font-size: var( --tnt-text-md ); line-height: 1.5; }
.pap-servicio__subtitle { margin: 0 0 var( --tnt-space-4 ); font-size: var( --tnt-text-lg ); }
.pap-servicio .wp-block-buttons { gap: var( --tnt-space-3 ); }
@media ( max-width: 60rem ) { .pap-servicio__grid { grid-template-columns: 1fr; gap: var( --tnt-space-7 ); } }
:root .pap-gallery.wp-block-gallery.has-nested-images { gap: var( --tnt-space-4 ); }
:root .pap-gallery.wp-block-gallery.has-nested-images figure.wp-block-image { border-radius: var( --tnt-radius-sm ); overflow: hidden; }
:root .pap-gallery.wp-block-gallery.has-nested-images figure.wp-block-image img { transition: transform var( --tnt-dur-slow ) var( --tnt-ease-expo ); }
:root .pap-gallery.wp-block-gallery.has-nested-images figure.wp-block-image:hover img { transform: scale( 1.05 ); }
:root .pap-gallery.wp-block-gallery.has-nested-images figure.wp-block-image figcaption {
	font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono );
	text-transform: uppercase;
	letter-spacing: 0.08em;
	text-align: start;
	padding: 2.5em 1em 0.9em;
	background: linear-gradient( 0deg, rgba( 13, 51, 35, 0.85 ), transparent );
}
@media ( prefers-reduced-motion: reduce ) { :root .pap-gallery.wp-block-gallery.has-nested-images figure.wp-block-image:hover img { transform: none; } }
.pap-otras__list { list-style: none; margin: var( --tnt-space-4 ) 0 0; padding: 0; display: grid; grid-template-columns: repeat( 4, minmax( 0, 1fr ) ); border-block-start: 2px solid var( --tnt-color-text ); }
.pap-otras__list li { margin: 0; border-block-end: 1px solid var( --tnt-color-border ); }
.pap-otras__list a { display: flex; justify-content: space-between; align-items: center; gap: 1em; padding: var( --tnt-space-4 ) var( --tnt-space-3 ) var( --tnt-space-4 ) 0; font-family: var( --tnt-font-display ); font-stretch: 75%; font-weight: 800; text-transform: uppercase; font-size: var( --tnt-text-md ); line-height: 1; color: var( --tnt-color-text ); text-decoration: none; transition: color var( --tnt-dur-fast ) var( --tnt-ease-power3 ); }
.pap-otras__list a::after { content: "→"; font-family: var( --tnt-font-body ); color: var( --tnt-color-primary ); transition: transform var( --tnt-dur-fast ) var( --tnt-ease-power3 ); }
.pap-otras__list a:hover { color: var( --tnt-color-primary ); }
.pap-otras__list a:hover::after { transform: translateX( 4px ); }
@media ( max-width: 60rem ) { .pap-otras__list { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); column-gap: var( --tnt-space-5 ); } }
@media ( max-width: 30rem ) { .pap-otras__list { grid-template-columns: 1fr; } }

/* Multimedia */
.pap-videos__grid { display: grid; grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); gap: var( --tnt-space-5 ); }
.pap-video { margin: 0; border-radius: var( --tnt-radius-md ); overflow: hidden; box-shadow: var( --tnt-shadow-2 ); background: var( --tnt-color-ink ); }
@media ( max-width: 48rem ) { .pap-videos__grid { grid-template-columns: 1fr; } }
.pap-pubs__grid { display: grid; grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); gap: var( --tnt-space-6 ); }
.pap-pub { display: grid; grid-template-columns: minmax( 0, 12rem ) minmax( 0, 1fr ); gap: var( --tnt-space-5 ); align-items: end; padding: var( --tnt-space-5 ); background: var( --tnt-color-bg ); border: 1px solid var( --tnt-color-border ); border-radius: var( --tnt-radius-md ); }
.pap-pub__cover { margin: 0; border: 1px solid var( --tnt-color-border ); border-radius: var( --tnt-radius-sm ); overflow: hidden; box-shadow: var( --tnt-shadow-2 ); background: #fff; }
.pap-pub__cover img { display: block; }
.pap-pub__meta { margin: 0; font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-primary ); }
.pap-pub__title { margin: var( --tnt-space-2 ) 0 var( --tnt-space-4 ); font-size: var( --tnt-text-lg ); }
@media ( max-width: 60rem ) { .pap-pubs__grid { grid-template-columns: 1fr; } }

/* Formularios: Empleo y Contacto */
.pap-form-grid { display: grid; grid-template-columns: minmax( 0, 0.8fr ) minmax( 0, 1.2fr ); gap: var( --tnt-space-9 ); align-items: start; }
.pap-form-grid__aside .pap-sec-title { margin-block: var( --tnt-space-3 ) var( --tnt-space-5 ); }
.pap-form-grid__aside .pap-sidebar__title { margin-block-start: var( --tnt-space-6 ); }
.pap-form-card {
	padding: var( --tnt-space-7 );
	background: var( --tnt-color-surface );
	border: 1px solid var( --tnt-color-border );
	border-block-start: 4px solid var( --tnt-color-primary );
	border-radius: 0 0 var( --tnt-radius-md ) var( --tnt-radius-md );
	box-shadow: var( --tnt-shadow-2 );
}
.pap-form-card__title { margin: 0 0 var( --tnt-space-5 ); font-size: var( --tnt-text-lg ); }
.pap-form-card :is( input[type="text"], input[type="email"], input[type="tel"], input[type="file"], textarea, select ) { background: var( --tnt-color-bg ); }
@media ( max-width: 60rem ) { .pap-form-grid { grid-template-columns: 1fr; gap: var( --tnt-space-7 ); } .pap-form-card { padding: var( --tnt-space-5 ); } }
.pap-datos { display: grid; gap: var( --tnt-space-4 ); }
.pap-dato { gap: var( --tnt-space-3 ); padding-block-end: var( --tnt-space-4 ); border-block-end: 1px solid var( --tnt-color-border ); }
.pap-dato p { margin: 0; color: var( --tnt-color-text-muted ); }
.pap-dato strong { color: var( --tnt-color-text ); font-family: var( --tnt-font-mono ); font-size: var( --tnt-text-xs ); text-transform: uppercase; letter-spacing: 0.08em; font-weight: 500; }
.pap-dato a { color: var( --tnt-color-text ); text-decoration: none; }
.pap-dato a:hover { color: var( --tnt-color-primary ); }
.pap-dato__icon { color: var( --tnt-color-primary ); flex: none; margin-block-start: 0.2em; }

/* Ficha de ubicación estilo plano (sin iframe de mapa: HTML crudo prohibido §9). */
.pap-mapa {
	position: relative;
	display: grid;
	justify-items: center;
	text-align: center;
	gap: var( --tnt-space-3 );
	padding: var( --tnt-space-9 ) var( --tnt-space-5 );
	background-color: var( --tnt-color-ink );
	color: var( --tnt-color-on-ink );
	border-radius: var( --tnt-radius-md );
	background-size: 40px 40px;
}
.pap-mapa__pin { color: var( --tnt-color-signal ); }
.pap-mapa__cota { color: var( --tnt-color-signal ); inline-size: min( 100%, 34rem ); margin: 0; }
.pap-mapa__title { margin: 0 0 var( --tnt-space-3 ); color: var( --tnt-color-on-ink ); font-size: var( --tnt-text-lg ); }
.pap-mapa .wp-block-button__link { background: var( --tnt-color-signal ); border-color: var( --tnt-color-signal ); color: var( --tnt-color-ink ); }
.pap-mapa .wp-block-button__link:hover { background: var( --tnt-color-on-ink ); border-color: var( --tnt-color-on-ink ); }

/* ==========================================================================
 * 18. Rejillas: los hijos NO heredan el margen de flujo de WordPress
 * --------------------------------------------------------------------------
 * Un core/group con layout "default" es flujo: WP da margin-block-start
 * (blockGap) a cada hijo MENOS al primero → en una rejilla el primer ítem
 * queda más arriba que sus vecinos. Toda rejilla del theme anula ese margen
 * en sus hijos directos; la separación la pone el `gap` de la rejilla.
 * ========================================================================== */
:root :is(
	.pap-article-grid, .pap-bases__grid, .pap-cifras__grid, .pap-cta__grid, .pap-datos,
	.pap-descargas__grid, .pap-form-grid, .pap-hero__grid, .pap-historia__grid, .pap-mision__grid,
	.pap-politica__grid, .pap-pub, .pap-pubs__grid, .pap-recursos__grid, .pap-resena__grid,
	.pap-sec-head--split, .pap-servicio-row, .pap-servicio__grid, .pap-timeline, .pap-valores__grid,
	.pap-videos__grid, .pap-cajetin__grid, .pap-otras__list, .pap-tips-grid, .pap-obras-grid,
	.pap-cajetin__head, .pap-cajetin__foot, .pap-cajetin__label, .pap-cajetin__cell, .pap-mapa-real, .pap-mapa-real__bar
) > * {
	margin-block: 0;
}

/* ==========================================================================
 * 19. Iconos con protagonismo — insignia cuadrada con fondo teñido
 * ========================================================================== */
:root .pap-icon-badge {
	display: inline-grid;
	place-items: center;
	inline-size: 3.5rem;
	aspect-ratio: 1;
	border-radius: var( --tnt-radius-md );
	background: color-mix( in srgb, var( --tnt-color-primary ) 12%, transparent );
	color: var( --tnt-color-primary );
	box-shadow: inset 0 0 0 1px color-mix( in srgb, var( --tnt-color-primary ) 22%, transparent );
	transition: background-color var( --tnt-dur-base ) var( --tnt-ease-expo ), color var( --tnt-dur-base ) var( --tnt-ease-expo ), transform var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-icon-badge svg { inline-size: 1.65rem; block-size: 1.65rem; }
.pap-icon-badge--lg { inline-size: 4.5rem; }
.pap-icon-badge--lg svg { inline-size: 2.1rem; block-size: 2.1rem; }
/* Al pasar por la tarjeta que la contiene, la insignia se llena de verde. */
:is( .pap-base, .pap-valor, .pap-recurso, .pap-servicio-row, .pap-dato ):hover .pap-icon-badge {
	background: var( --tnt-color-brand );
	color: var( --tnt-color-on-brand );
	transform: rotate( -4deg );
}
/* Sobre bandas oscuras / de marca: insignia en señal. */
:is( .pap-dark, .pap-valor--rector ) .pap-icon-badge {
	background: color-mix( in srgb, var( --tnt-color-signal ) 16%, transparent );
	color: var( --tnt-color-signal );
	box-shadow: inset 0 0 0 1px color-mix( in srgb, var( --tnt-color-signal ) 40%, transparent );
}
.pap-valor--rector:hover .pap-icon-badge { background: var( --tnt-color-signal ); color: var( --tnt-color-ink ); }
@media ( prefers-reduced-motion: reduce ) {
	:is( .pap-base, .pap-valor, .pap-recurso, .pap-servicio-row, .pap-dato ):hover .pap-icon-badge { transform: none; }
}

/* Servicios en filas: la insignia abre la fila. */
.pap-servicio-row { grid-template-columns: 3.5rem minmax( 0, 1fr ) minmax( 0, 1.2fr ) 11rem 4rem; }
.pap-servicio-row__title { padding-inline-start: 0; }
@media ( max-width: 60rem ) {
	.pap-servicio-row { grid-template-columns: 3.5rem minmax( 0, 1fr ) 7.5rem; }
	.pap-servicio-row__title { grid-column: 2; }
	.pap-servicio-row__text { grid-column: 2; padding-inline-start: 0; }
	.pap-servicio-row__img { grid-column: 3; grid-row: 1 / span 2; }
	.pap-servicio-row .pap-icon-badge { grid-row: 1 / span 2; align-self: start; }
}
@media ( max-width: 30rem ) {
	.pap-servicio-row { grid-template-columns: 3.5rem minmax( 0, 1fr ); }
	.pap-servicio-row__img { display: none; }
}

/* Contacto: datos con insignia. */
.pap-dato { align-items: center !important; }
.pap-dato .pap-icon-badge { flex: none; }

/* SIAHO: icono y rótulo en una línea. */
.pap-siaho__head { gap: var( --tnt-space-4 ); align-items: center; margin-block-end: var( --tnt-space-2 ); }
.pap-siaho__head .pap-kicker { margin: 0; }

/* ==========================================================================
 * 20. Home — cajetín de plano (reemplaza la banda de cifras genérica)
 * --------------------------------------------------------------------------
 * El cuadro de datos de un plano técnico: celdas con rótulo mono arriba y el
 * valor grande abajo, juntas de 1px, una fila de título y un pie con los datos
 * del "plano". Sobre Losa (claro), contrasta con el hero oscuro de arriba.
 * ========================================================================== */
.pap-cajetin { color: var( --tnt-color-text ); }
.pap-cajetin__frame {
	border: 2px solid var( --tnt-color-text );
	background: var( --tnt-color-surface );
	box-shadow: var( --tnt-shadow-2 );
}
.pap-cajetin__head {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var( --tnt-space-2 ) var( --tnt-space-5 );
	padding: var( --tnt-space-3 ) var( --tnt-space-5 );
	border-block-end: 2px solid var( --tnt-color-text );
	font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono );
	text-transform: uppercase;
	letter-spacing: 0.1em;
}
.pap-cajetin__head p { margin: 0; }
.pap-cajetin__head strong { font-weight: 600; color: var( --tnt-color-primary ); }
.pap-cajetin__grid { display: grid; grid-template-columns: 1.4fr repeat( 3, minmax( 0, 1fr ) ); }
.pap-cajetin__cell {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: var( --tnt-space-6 );
	min-block-size: 13rem;
	padding: var( --tnt-space-4 ) var( --tnt-space-5 );
	border-inline-start: 1px solid var( --tnt-color-border );
	transition: background-color var( --tnt-dur-base ) var( --tnt-ease-expo );
}
.pap-cajetin__cell:first-child { border-inline-start: 0; background: var( --tnt-color-brand ); color: var( --tnt-color-on-brand ); }
.pap-cajetin__cell:not( :first-child ):hover { background: color-mix( in srgb, var( --tnt-color-primary ) 6%, transparent ); }
.pap-cajetin__label { margin: 0; display: flex; justify-content: space-between; gap: 1em; align-items: center; font: 500 var( --tnt-text-xs ) / 1.35 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.08em; color: var( --tnt-color-text-muted ); }
.pap-cajetin__cell:first-child .pap-cajetin__label { color: color-mix( in srgb, var( --tnt-color-on-brand ) 88%, transparent ); }
.pap-cajetin__label .blokino-icon { color: var( --tnt-color-primary ); }
.pap-cajetin__cell:first-child .pap-cajetin__label .blokino-icon { color: var( --tnt-color-signal ); }
.pap-cajetin .blokino-counter {
	display: block;
	font-family: var( --tnt-font-display );
	font-stretch: 75%;
	font-weight: 800;
	font-size: clamp( 3.4rem, 2rem + 4.5vw, 7rem );
	line-height: 0.85;
	letter-spacing: -0.02em;
	font-variant-numeric: tabular-nums;
}
.pap-cajetin__cell:first-child .blokino-counter { font-size: clamp( 4rem, 2.2rem + 6vw, 9rem ); color: var( --tnt-color-on-brand ); }
.pap-cajetin__note { margin: 0; font-size: var( --tnt-text-sm ); color: var( --tnt-color-text-muted ); max-inline-size: 24ch; }
.pap-cajetin__cell:first-child .pap-cajetin__note { color: color-mix( in srgb, var( --tnt-color-on-brand ) 88%, transparent ); }
.pap-cajetin__foot {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: var( --tnt-space-2 ) var( --tnt-space-5 );
	padding: var( --tnt-space-2 ) var( --tnt-space-5 );
	border-block-start: 1px solid var( --tnt-color-border );
	font: 500 0.7rem / 1.3 var( --tnt-font-mono );
	text-transform: uppercase;
	letter-spacing: 0.12em;
	color: var( --tnt-color-text-muted );
}
.pap-cajetin__foot p { margin: 0; }
@media ( max-width: 60rem ) {
	.pap-cajetin__grid { grid-template-columns: repeat( 2, minmax( 0, 1fr ) ); }
	.pap-cajetin__cell:first-child { grid-column: 1 / -1; }
	.pap-cajetin__cell:nth-child( 2 ) { border-inline-start: 0; }
	.pap-cajetin__cell { border-block-start: 1px solid var( --tnt-color-border ); min-block-size: 10rem; }
}
@media ( max-width: 30rem ) {
	.pap-cajetin__grid { grid-template-columns: 1fr; }
	.pap-cajetin__cell { border-inline-start: 0; }
}

/* Contacto — mapa real (Google Maps) en un marco de plano. */
.pap-mapa-real { position: relative; margin: 0; border: 2px solid var( --tnt-color-text ); border-radius: var( --tnt-radius-md ); overflow: hidden; box-shadow: var( --tnt-shadow-2 ); background: var( --tnt-color-surface ); }
.pap-mapa-real iframe { display: block; inline-size: 100%; block-size: clamp( 22rem, 40vw, 32rem ); border: 0; filter: saturate( 0.85 ); }
.pap-mapa-real__bar { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var( --tnt-space-3 ); padding: var( --tnt-space-3 ) var( --tnt-space-5 ); border-block-start: 2px solid var( --tnt-color-text ); font: 500 var( --tnt-text-xs ) / 1.3 var( --tnt-font-mono ); text-transform: uppercase; letter-spacing: 0.1em; }
.pap-mapa-real__bar a { color: var( --tnt-color-primary ); text-decoration: none; }
.pap-mapa-real__bar a:hover { text-decoration: underline; }

.pap-cajetin__note { margin-block-start: var( --tnt-space-3 ) !important; }

/* Filas de servicio: aire lateral para que la barra verde del hover no toque la insignia. */
:root .pap-servicio-row { padding-inline: var( --tnt-space-5 ) var( --tnt-space-3 ); }

/* ==========================================================================
 * 21. Un solo contenedor: el interior de las secciones anchas se alinea con el
 *     header y el footer. El motor da a .blokino-section__inner su propio padding
 *     (space-4) DENTRO del ancho máximo; header y footer usan el padding raíz
 *     (space-5) FUERA de él. Aquí el interior toma el padding raíz y crece en
 *     2 × ese padding, así los bordes coinciden a cualquier ancho (contrato público
 *     de clases del motor: .is-content-wide / .blokino-section__inner).
 * ========================================================================== */
:root .blokino-section.alignfull.is-content-wide > .blokino-section__inner {
	max-width: calc( var( --wp--style--global--wide-size, 86rem ) + 2 * var( --wp--style--root--padding-left, var( --tnt-space-5 ) ) );
	padding-inline: var( --wp--style--root--padding-left, var( --tnt-space-5 ) );
}

/* Multimedia: con 3 vídeos, el primero va a todo el ancho y los otros dos debajo. */
.pap-videos__grid > .pap-video:first-child:nth-last-child( odd ) { grid-column: 1 / -1; }
