/*
Theme Name: News Child
Theme URI: https://example.com/news
Template: news
Author: Meli
Author URI: https://example.com
Description: Tema hijo de "News". Toda la personalización del cliente va aquí, sin tocar el tema padre (para soportar actualizaciones).
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: news-child
*/

/* ==========================================================================
   Personalizaciones del cliente.
   El CSS del padre se carga vía wp_enqueue_style en functions.php
   (no se usa @import por rendimiento). Escribí aquí tus overrides.
   ========================================================================== */

/* 0) Sin padding superior en el main (queda pegado al header/ticker). */
.site-main { padding-top: 0; }
/* Espacio entre secciones = mismo que header↔primera sección (margin-top del hero). */
.home-blocks { padding-bottom: 0; gap: clamp(1.5rem, 3vw, 2.5rem); }

/* 1) Contenedor principal uniforme a 90vw en PC, tablet y móvil.
   Sobrescribe la variable y el .container del padre, sin max-width ni cambios
   por media query (el hijo carga después del padre, así que gana). */
:root { --news-maxw: 90vw; } /* fuente única del ancho del contenedor (PC/tablet/móvil) */
.container {
	width: var(--news-maxw);
	max-width: var(--news-maxw); /* sin px que lo pise */
	margin-inline: auto;
}
/* Recorta el sangrado del fondo de la fila 1 del header en el borde derecho,
   sin crear scroll horizontal (clip = solo eje X; el desplegable vertical sigue visible). */
.site-header { overflow-x: clip; }

/* 2) Lista lateral del home (bloque tipo "Lista", section-list.php):
   cada ítem en columna -> imagen full width arriba y texto debajo. */
.section-block--list .post-item {
	display: flex;
	flex-direction: column;
	gap: .6rem;
}
.section-block--list .post-item__media {
	width: 100%;
	aspect-ratio: 16 / 9;
}

/* 3) Cards secundarias del hero (side): una sola columna.
   Imagen full width arriba y, debajo, título a todo el ancho + info.
   Sobrescribe el grid 110px/1fr del padre. */
.hero-main__side .hero-card--sec {
	display: flex;
	flex-direction: column;
	gap: .5rem;
}
.hero-main__side .hero-card--sec .hero-card__media {
	width: 100%;
	aspect-ratio: 16 / 9;
}
.hero-main__side .hero-card--sec .hero-card__title {
	width: 100%;
	font-size: 1.05rem;
}

/* 4) Secciones del home (contenido principal + barra lateral). */
/* Sin margin propio: el espacio entre bloques lo da el gap de .home-blocks (uniforme). */
.home-section { margin-block: 0; }
.home-section .content-area { align-items: start; }

/* Layout magazine: destacada grande (overlay) + grilla de 2. */
.section-magazine .mag-lead { margin-bottom: var(--news-gap); }

/* Layout list4: items horizontales (imagen izq + texto der) en 2 columnas. */
.section-list4 .post-item { grid-template-columns: 120px 1fr; }

/* Barra lateral tipo "Latest News": lista vertical miniatura izq + texto der. */
.sidebar-list .post-list { display: flex; flex-direction: column; gap: 1rem; }

/* =========================================================
   UTILIDAD ÚNICA — filas de 2 columnas: "la columna más baja sticky".
   Se aplica a TODAS las filas de 2 columnas del sitio a través de sus
   clases estructurales (.content-area de home/archivos-categoría/archivos-
   región/single/búsqueda, y .contact-grid de Contacto), en vez de reglas
   sueltas por sección. Reemplaza a .widget-area--sticky, .home-aside.news-sticky
   y al sticky-por-sección del tablet.

   Cómo funciona (sin JS ni condicional): las DOS columnas son position:sticky +
   align-self:start. La columna MÁS ALTA ocupa casi todo el alto de la fila, así
   que no le queda margen para "pegarse" y scrollea normal; la MÁS BAJA sí tiene
   margen y queda fija (top = alto del header sticky + pequeño offset) hasta que
   termina la fila -> se libera al final, sin superponerse con la sección siguiente.
   Vale en ambos sentidos (izq o der, la que resulte más baja). Si las alturas son
   parecidas, no hay efecto visible. Requiere que la fila no tenga overflow:hidden
   ni alto fijo (por eso overflow:visible). Solo se activa donde la fila es de 2
   columnas; en 1 columna (móvil / colapsada) NO se aplica, para no fijar contenido
   apilado.
   ========================================================= */
:root { --news-sticky-top: 90px; }  /* header sticky (~90px) + offset */
@media (min-width: 768px) and (max-width: 1024px) {
	:root { --news-sticky-top: 110px; }  /* header un poco más alto en tablet */
}

/* Desktop (>=1025px): todas las filas de 2 columnas del sitio. */
@media (min-width: 1025px) {
	.content-area,
	.contact-grid { overflow: visible; }
	.content-area > *,
	.contact-grid > * {
		position: sticky;
		top: var(--news-sticky-top);
		align-self: start;
	}
}

/* Tablet (768–1024px): SOLO la fila main+sidebar del home sigue siendo de 2
   columnas (las demás colapsan a 1). Se anula, además, el sticky heredado de
   .widget-area--sticky (padre, min-width:1024) sobre las filas ya colapsadas. */
@media (min-width: 768px) and (max-width: 1024px) {
	.home-section .content-area { overflow: visible; }
	.home-section .content-area > * {
		position: sticky;
		top: var(--news-sticky-top);
		align-self: start;
	}
	.widget-area--sticky { position: static; top: auto; }
}

/* 5) Sección 3 (ColorMag): destacada horizontal + grilla de 3. */
.colormag .hpost {
	display: grid;
	grid-template-columns: 300px 1fr;
	gap: 1.1rem;
	align-items: start;
	margin-bottom: var(--news-gap);
	position: relative; /* ancla del badge categoría/región (va fuera del <a> de la imagen). */
}
.colormag .hpost__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	border-radius: var(--news-radius);
	overflow: hidden;
	background: var(--news-surface);
}
.colormag .hpost__media img { width: 100%; height: 100%; object-fit: cover; }
.colormag .hpost__title { font-size: 1.4rem; margin: 0 0 .4rem; }
.colormag .hpost__title a { color: var(--news-text); }
.colormag .hpost__title a:hover { color: var(--news-primary); text-decoration: none; }
.colormag .hpost__excerpt { color: var(--news-muted); margin: .5rem 0 0; }
.colormag .hpost .card__meta { font-size: .8rem; color: var(--news-muted); }
@media (max-width: 600px) {
	.colormag .hpost { grid-template-columns: 1fr; }
}

/* Bullet del encabezado: color del tema (primario), igual que las líneas.
   Etiquetas: color configurable (panel Colores), por defecto el acento de la paleta. */
.home-section .section-block__title::before { background: var(--news-primary); }
.card__cat,
.home-section .card__cat { background: var(--news-label-bg, var(--news-accent)); }
.card__cat,
.card__cat:hover { color: var(--news-label-text, #fff); }
/* Etiqueta de categoría: la card es el ancla (la etiqueta va fuera del <a> de
   la imagen para no anidar enlaces). Siempre visible; hover -> primario. */
.card { position: relative; }
.card:hover .card__cat,
.card__cat:hover { background: var(--news-primary); }

/* Etiquetas categoría + región en fila sobre la imagen. El wrapper toma el
   posicionamiento absoluto que tenía .card__cat; las etiquetas quedan static y
   se ubican una al lado de la otra (misma línea). */
.card__cats { position: absolute; top: .6rem; left: .6rem; z-index: 2; display: inline-flex; flex-wrap: wrap; gap: .3rem; align-items: flex-start; }
.card__cats .card__cat { position: static; top: auto; left: auto; }
.hero-card--lead .card__cats { top: .8rem; left: .8rem; }

/* Etiqueta de REGIÓN: idéntica a la de categoría (tamaño/padding/tipografía/
   peso/border-radius heredados de la clase base); solo cambian los colores.
   Doble clase para ganar a los fondos contextuales (.home-section/.hero--top) y
   al hover de la card, en todos los estados. */
.card__cats .card__cat--region.card__cat,
.card:hover .card__cats .card__cat--region.card__cat,
.card__cats .card__cat--region.card__cat:hover { background: #c85312; color: #ffffff; }
.entry-cat--region.entry-cat,
.entry-cat--region.entry-cat:hover { background: #c85312; color: #ffffff; }
/* Alinear la línea del título del sidebar (ej. LATEST NEWS) con la de las
   secciones (ej. DEPORTES): misma tipografía y métrica de la línea. */
.home-aside .widget__title {
	font-size: 1.25rem;
	padding-bottom: .4rem;
	margin-bottom: 1.25rem;
}
/* Líneas de los encabezados (sección + sidebar): finas (2px), niveladas e
   iguales en todas las secciones. */
.section-block__head,
.widget__title {
	border-bottom-width: 2px;
	padding-bottom: .4rem;
}
/* Títulos de entradas y secciones en color oscuro fijo (var(--news-text)).
   No dependen de la paleta para mantener legibilidad. */
.card__title a,
.post-item__title a,
.hpost__title a,
.video-feature__title a,
.video-item__title a,
.news-wp-title,
.entry-title,
.entry-title a,
.related__title,
.single-module__title,
.widget__title {
	color: var(--news-title, var(--news-text));
}
.card__title a:hover,
.post-item__title a:hover,
.hpost__title a:hover,
.news-wp-title:hover,
.entry-title a:hover {
	color: var(--news-primary);
	text-decoration: none;
}

/* 6) Sección 1 — Destacados ancho completo: 1 grande (izq) + 2 apiladas (der). */
.hero--top {
	display: grid;
	grid-template-columns: 2fr 1fr;
	gap: var(--news-gap);
	align-items: stretch;                 /* ambas columnas igualan altura */
	margin-top: clamp(1.5rem, 3vw, 2.5rem); /* separación del ticker (margen superior) */
}
.hero--top .ht-main,
.hero--top .ht-side { min-width: 0; min-height: 0; }
.hero--top .card__cat { background: var(--news-label-bg, var(--news-accent)); z-index: 2; }

/* Overlay oscuro sobre la imagen para que el texto se lea. */
.hero--top .hero-card--lead .hero-card__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.5);
	pointer-events: none;
}

/* 7) Video: facade de play + reproductor inline + sección "Watch Videos". */
.news-video { position: relative; }
.news-video__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;       /* reserva alto -> CLS */
	background: var(--news-surface);
	border-radius: var(--news-radius);
	overflow: hidden;
}
.news-video__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.news-video__ph { display: block; width: 100%; height: 100%; background: var(--news-surface); }
.news-video__play {
	position: absolute;
	inset: 0;
	margin: auto;
	width: 64px; height: 64px;
	border: 0; border-radius: 50%;
	background: var(--news-primary); color: #fff;
	display: flex; align-items: center; justify-content: center;
	cursor: pointer;
	box-shadow: 0 4px 16px rgba(0,0,0,.35);
	transition: transform .15s ease;
}
.news-video__play svg { margin-left: 3px; }
.news-video__play:hover { transform: scale(1.08); }
.news-video__player { width: 100%; aspect-ratio: 16 / 9; height: auto; border: 0; display: block; }
.news-video.is-playing .news-video__play { display: none; }

/* Video destacado (columna principal). */
.video-feature { position: relative; }
.video-feature__tag {
	position: absolute; top: .7rem; left: .7rem; z-index: 3;
	background: var(--news-secondary); color: #fff;
	font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
	padding: .3rem .6rem; border-radius: 4px;
}
.video-feature__body { padding-top: .6rem; }
.video-feature__title { font-size: 1.35rem; margin: .25rem 0 0; }
.video-feature__title a { color: var(--news-text); }
.video-feature__title a:hover { color: var(--news-primary); text-decoration: none; }
.video-feature .card__meta { font-size: .8rem; color: var(--news-muted); }

/* Lista lateral de videos. */
.video-aside .post-list { display: flex; flex-direction: column; gap: 1rem; }
.video-item { display: grid; grid-template-columns: 120px 1fr; gap: .7rem; align-items: start; }
.video-item .news-video__play { width: 38px; height: 38px; }
.video-item .news-video__play svg { width: 18px; height: 18px; }
.video-item__meta { font-size: .74rem; color: var(--news-muted); }
.video-item__title { font-size: 1rem; line-height: 1.3; margin: .15rem 0 0; }
.video-item__title a { color: var(--news-text); }
.video-item__title a:hover { color: var(--news-primary); text-decoration: none; }

@media (max-width: 600px) {
	.video-item { grid-template-columns: 1fr; }
}

/* 10) Footer — 4 columnas + fila de copyright.
   Colores y líneas configurables desde el panel (pestaña Footer):
   --news-footer-text, --news-footer-line, --news-footer-line-width. */
.site-footer { color: var(--news-footer-text, #cfd4da); }
.footer-cols {
	display: grid;
	gap: var(--news-gap);
	align-items: start;
}
/* Columnas por layout (PC): L1=2, L2=3, L3=4. */
.footer-cols--l1 { grid-template-columns: repeat(2, 1fr); }
.footer-cols--l2 { grid-template-columns: repeat(3, 1fr); }
.footer-cols--l3 { grid-template-columns: repeat(4, 1fr); }
.footer-col { padding-bottom: 50px; }
.footer-col__title {
	color: var(--news-footer-text, #fff);
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: .02em;
	border-bottom: 0;
	padding-bottom: .6rem;
	margin: 0 0 1rem;
	position: relative;
}
/* Línea separadora: ancho y color configurables (default 70px / color primario). */
.footer-col__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: var(--news-footer-line-width, 70px);
	height: 2px;
	background: var(--news-footer-line, var(--news-primary));
}
.footer-col--logo .footer-logo img { max-width: 200px; height: auto; }
.footer-logo--text { color: var(--news-footer-text, #fff); font-size: 1.5rem; font-weight: 700; }
.footer-contact { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.footer-contact li { display: flex; align-items: center; gap: .5rem; }
.footer-contact__ic { flex: 0 0 auto; display: inline-flex; color: var(--news-footer-text, #fff); transition: color .15s ease; }
.footer-contact__ic svg { width: 16px; height: 16px; fill: currentColor; }
/* Hover igual que las redes: ícono (y enlace) en color primario. */
.footer-contact li:hover .footer-contact__ic,
.footer-contact a:hover { color: var(--news-primary); }
.footer-contact a { color: var(--news-footer-text, #fff); }
.footer-col .menu { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.footer-col .menu a { color: var(--news-footer-text, #cfd4da); }
.footer-col .menu a:hover { color: #fff; text-decoration: none; }
/* Aislamiento: los menús del footer NUNCA se colapsan (ni hamburguesa ni acordeón)
   en ninguna resolución -> lista vertical siempre visible y expandida. Las reglas
   del hamburguesa están scopeadas a .main-navigation (no alcanzan al footer), pero
   reforzamos por si se comparten clases .menu/.news-menu, en TODOS los breakpoints. */
.site-footer .menu,
.site-footer .news-menu,
.site-footer .sub-menu {
	display: flex;
	flex-direction: column;
	flex-basis: auto;
	position: static;
	gap: .5rem;
}
.site-footer .sub-menu { padding-left: 1rem; }
/* El footer no usa disparador de menú; si por herencia apareciera, ocultarlo. */
.site-footer .menu-toggle { display: none; }

/* Hover + focus-visible de TODOS los enlaces del footer -> negro (#000).
   Solo el estado hover/focus; no cambia el color de reposo ni otros estilos.
   Cubre: menús de cualquier columna, datos de contacto, iconos de redes y copyright.
   Va después de las reglas base para ganar por orden con igual especificidad. */
.footer-col .menu a:hover,
.footer-col .menu a:focus-visible,
.footer-contact a:hover,
.footer-contact a:focus-visible,
.footer-social a:hover,
.footer-social a:focus-visible,
.footer-copyright a:hover,
.footer-copyright a:focus-visible,
.site-footer a:hover,
.site-footer a:focus-visible {
	color: #000;
}
.footer-col--contact .footer-follow {
	display: block;
	margin-top: 1rem;
	font-weight: 700;
	text-transform: uppercase;
	font-size: .8rem;
	letter-spacing: .04em;
	color: var(--news-footer-text, #fff);
}
.footer-col .footer-social { display: flex; gap: .75rem; margin-top: .4rem; }
/* Íconos de redes del footer: color de texto del footer; hover = primario. */
.footer-social a { color: var(--news-footer-text, #fff); }
.footer-social a:hover { color: var(--news-primary); }
.footer-social a svg { fill: currentColor; }
.footer-copyright {
	padding-top: 1.2rem;
	padding-bottom: 0;
	text-align: center;
	font-size: .85rem;
	color: var(--news-footer-text, #cfd4da);
}
.footer-copyright p { margin: 0; }
/* Texto debajo del logo (primera columna), alineación configurable. */
.footer-logo-text {
	margin-top: 1rem;
	font-size: .85rem;
	color: var(--news-footer-text, #cfd4da);
}
.footer-logo-text p { margin: 0 0 .5rem; }
.footer-logo-text p:last-child { margin-bottom: 0; }
.footer-logo-text a { color: var(--news-footer-text, #fff); text-decoration: underline; }
.footer-logo-text--left   { text-align: left; }
.footer-logo-text--center { text-align: center; }
.footer-logo-text--right  { text-align: right; }
/* Separador a lo ancho antes del copyright: mismo color que las líneas de los títulos. */
.footer-sep {
	border: 0;
	height: 2px;
	background: var(--news-footer-line, var(--news-primary));
	margin: 2rem 0 0;
}
/* Padding del footer: top 60px (móvil) / 80px (tablet+PC); bottom 15px. */
.site-footer { padding-top: 60px; padding-bottom: 15px; }
@media (min-width: 768px) { .site-footer { padding-top: 80px; } }
/* Columnas: 4 en PC, 2 en tablet (2 arriba + 2 abajo), 1 en móvil. */
/* Tablet: L1=1, L2=2, L3=2. */
@media (max-width: 1024px) {
	.footer-cols--l1 { grid-template-columns: 1fr; }
	.footer-cols--l2 { grid-template-columns: repeat(2, 1fr); }
	.footer-cols--l3 { grid-template-columns: repeat(2, 1fr); }
}
/* Móvil: todas 1 columna. */
@media (max-width: 600px) {
	.footer-cols--l1,
	.footer-cols--l2,
	.footer-cols--l3 { grid-template-columns: 1fr; }
}

/* Móvil (<768px): centrar horizontalmente TODO el contenido del footer, en todas
   las columnas. text-align:center + justify-content:center en los bloques flex;
   sin padding-left heredado que descentre. No toca tablet ni desktop. */
@media (max-width: 767px) {
	/* Base de columna: centra títulos, textos, enlaces de menú (inline) y logo. */
	.footer-col { text-align: center; }
	/* Título: la línea/subrayado decorativo (::after, absolute) va al centro. */
	.footer-col__title::after { left: 50%; transform: translateX(-50%); }
	/* Texto bajo el logo: anula la alineación configurable (--left / --right). */
	.footer-col .footer-logo-text { text-align: center; }
	/* Logo como bloque centrado (la img interna se centra por text-align). */
	.footer-col--logo .footer-logo { display: block; }
	/* Datos de contacto: el par icono+texto centrado COMO BLOQUE (no el texto suelto). */
	.footer-contact li { justify-content: center; }
	/* Iconos de redes sociales centrados. */
	.footer-col .footer-social { justify-content: center; }
	/* Submenús sin sangría izquierda que descentre los items. */
	.site-footer .sub-menu { padding-left: 0; }
}

/* Móvil (<768px): H1 un 20% más chicos que su tamaño mobile actual.
   El h1 base (padre) es clamp(1.9rem, 4vw, 2.8rem); en mobile (<760px) 4vw < 1.9rem
   → resuelve al MÍN = 1.9rem (30.4px con root 16px). 1.9 × 0.8 = 1.52rem (24.32px).
   Override SOLO en mobile: el clamp de desktop/tablet (sin media query) queda intacto.
   Cubre .entry-title del single (es un <h1> y no tiene font-size propio → hereda de h1)
   y cualquier otro H1 gobernado por el clamp base. */
@media (max-width: 767px) {
	h1 { font-size: 1.52rem; }
}

/* 9) Menú de categorías — hamburguesa integrada a la derecha de la fila del menú. */
.main-navigation .container { display: flex; align-items: center; gap: 1rem; }
.news-catmenu { position: relative; margin-left: auto; }   /* a la derecha */
/* Disparador como un link más del menú: sin fondo, misma tipografía/peso/color. */
.news-catmenu__toggle {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	background: transparent;
	border: 0;
	cursor: pointer;
	font: inherit;
	font-weight: 600;
	text-transform: uppercase;
	font-size: .85rem;
	letter-spacing: .03em;
	color: var(--news-secondary);
	padding: .85rem 1rem;
	min-height: 44px;          /* reserva alto -> CLS */
}
.news-catmenu__toggle:hover { color: var(--news-primary); }
.news-catmenu__chevron { transition: transform .2s ease; }
.news-catmenu.is-open .news-catmenu__chevron { transform: rotate(180deg); }
/* Panel desplegable: fondo blanco por defecto (configurable desde el panel). */
.news-catmenu__panel {
	position: absolute;        /* dropdown -> no empuja el layout (CLS) */
	right: 0; top: 100%;
	z-index: 90;
	min-width: 240px;
	background: #fff;
	border: 1px solid var(--news-border);
	box-shadow: 0 12px 30px rgba(0,0,0,.12);
}
.news-catmenu__panel[hidden] { display: none; }
.news-catmenu__panel .menu { list-style: none; margin: 0; padding: .25rem 0; display: block; }
.news-catmenu__panel .menu a { display: block; padding: .6rem 1rem; color: var(--news-text); }
.news-catmenu__panel .menu a:hover { background: var(--news-surface); color: var(--news-primary); text-decoration: none; }
.news-catmenu__panel .sub-menu { list-style: none; margin: 0; padding: 0 0 0 1rem; }

/* Espaciado del ícono FA opcional delante del texto del ítem. */
.news-menu a i, .news-catmenu__panel a i { margin-right: .4rem; }

@media (prefers-reduced-motion: reduce) {
	.news-catmenu__chevron { transition: none; }
}

/* 8) Single — breadcrumbs + comentarios. */
.breadcrumbs { margin-top: 30px; }

/* Separación antes del bloque de comentarios = mismo espacio que entre secciones. */
.comments-area { margin-top: clamp(1.5rem, 3vw, 2.5rem); }
.comments-title,
.comment-reply-title { font-family: var(--news-font-heading); margin-bottom: 1rem; color: var(--news-text); }

/* Formulario: inputs full width, tipografía del tema, bordes consistentes. */
.comment-form p { margin-bottom: 1rem; }
.comment-form label { display: block; font-weight: 600; font-size: .85rem; margin-bottom: .25rem; }
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea,
#comment {
	width: 100%;
	max-width: 100%;
	padding: .6rem .75rem;
	border: 1px solid var(--news-border);
	border-radius: 6px;
	font: inherit;
	font-family: var(--news-font);
	background: #fff;
	color: var(--news-text);
}
.comment-form textarea { min-height: 140px; resize: vertical; }
.comment-form .comment-notes,
.comment-form .logged-in-as { font-size: .85rem; color: var(--news-muted); }

/* Botón con los colores configurables del panel. */
.comment-form .news-btn,
.comment-form input[type="submit"],
.comment-form .submit {
	background: var(--news-primary);
	color: #fff;
	border: 0;
	border-radius: 6px;
	padding: .7rem 1.4rem;
	min-height: 44px;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: background .15s ease;
}
.comment-form .news-btn:hover,
.comment-form input[type="submit"]:hover,
.comment-form .submit:hover { background: var(--news-secondary); }

/* Single — compartir: íconos como los del footer (sin fondo/borde,
   color de texto y hover en primario). */
.news-share__btn {
	background: transparent;
	border: 0;
	color: var(--news-text);
	padding: 0 .4rem;
}
.news-share__btn:hover {
	background: transparent;
	border-color: transparent;
	color: var(--news-primary);
}
.news-share__btn svg { fill: currentColor; }
/* Navegación anterior/siguiente: ANTERIOR (‹ a la izq) / SIGUIENTE (› a la der),
   en color secundario, sin el título de la nota. */
.post-navigation .nav-links { display: flex; justify-content: space-between; gap: 1rem; }
.post-navigation .nav-next { margin-left: auto; text-align: right; }
.post-navigation a {
	color: var(--news-secondary);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .04em;
	display: inline-flex;
	align-items: center;
	gap: .4rem;
}
.post-navigation a:hover { color: var(--news-primary); text-decoration: none; }
.post-navigation .nav-arrow { font-size: 1.3em; line-height: 1; }

.comment-list { list-style: none; margin: 1.5rem 0 0; padding: 0; }
.comment-list .children { list-style: none; margin-left: 1.5rem; }

/* Izquierda: define el alto del bloque por aspect-ratio. */
.hero--top .ht-main .hero-card--lead .hero-card__media { aspect-ratio: 3 / 2; }

/* Derecha: 2 filas iguales que llenan exactamente el alto de la izquierda
   (cada apilada = mitad del alto de la principal, base alineada). */
.hero--top .ht-side {
	display: grid;
	grid-template-rows: 1fr 1fr;
	gap: var(--news-gap);
}
.hero--top .ht-side .hero-card--lead { height: 100%; min-height: 0; }
.hero--top .ht-side .hero-card--lead .hero-card__media { height: 100%; aspect-ratio: auto; }

/* Títulos de la derecha al tamaño de los títulos de listas (no agrandado). */
.hero--top .ht-side .hero-card__title { font-size: 1rem; line-height: 1.3; }

/* Móvil: las 3 notas se apilan en una columna. */
@media (max-width: 768px) {
	.hero--top { grid-template-columns: 1fr; }
	.hero--top .ht-main .hero-card--lead .hero-card__media { aspect-ratio: 16 / 9; }
	.hero--top .ht-side { grid-template-rows: auto; }
	.hero--top .ht-side .hero-card--lead .hero-card__media { height: auto; aspect-ratio: 16 / 9; }
}

/* Móvil (<768px): cards del hero "1 grande + 2 apiladas" (grande + apiladas) 30%
   más altas. El alto lo da el aspect-ratio del .hero-card__media (16/9 en móvil,
   arriba). Para +30% de alto, con el ancho fijo el alto pasa de W·9/16 a
   W·9/16·1.3 = W·11.7/16 -> aspect-ratio 16/11.7 (9 × 1.3 = 11.7). La imagen sigue
   con object-fit:cover (no se deforma) y el texto tiene más aire abajo. Solo <768:
   no toca el borde 768 ni tablet ni desktop. */
@media (max-width: 767px) {
	.hero--top .ht-main .hero-card--lead .hero-card__media,
	.hero--top .ht-side .hero-card--lead .hero-card__media { aspect-ratio: 16 / 11.7; }
}

/* =========================================================
   Móvil (<768px) — FIX etiquetas/título en las cards con imagen de fondo + texto
   encima (overlay). Antes: etiquetas (.card__cats) absolute arriba-izq y texto
   (.hero-card__body) absolute abajo -> con varias etiquetas hacían wrap y se
   pisaban con el título. Ahora: etiquetas y texto en un MISMO flujo vertical
   (columna flex) SOBRE la imagen, que pasa a fondo. Orden: etiquetas primero
   (margin-bottom:40px), luego título / bajada / fecha. Las etiquetas hacen wrap
   sin pisar nada; la card crece con el contenido (min-height = piso). La imagen
   sigue con object-fit:cover (sin deformar). Aplica a los módulos con ese
   tratamiento: Destacados (.hero--top) y Sección magazine (.section-magazine).
   Solo <768: no toca tablet ni desktop.
   ========================================================= */
@media (max-width: 767px) {
	.hero--top .hero-card--lead,
	.section-magazine .hero-card--lead {
		display: flex;
		flex-direction: column;
		justify-content: flex-end;   /* texto abajo, como el overlay original */
		min-height: 320px;           /* piso; si el contenido es más alto, la card crece */
		padding: 1.1rem;
		overflow: hidden;
		border-radius: var(--news-radius);
	}
	/* Imagen -> fondo: media absoluto que llena la card (cover, sin deformar). Se
	   anula el aspect-ratio (definía el alto en móvil) con especificidad suficiente
	   (los .ht-main/.ht-side lo fijan en 0,4,0) para que inset:0 llene la card. */
	.hero--top .ht-main .hero-card--lead .hero-card__media,
	.hero--top .ht-side .hero-card--lead .hero-card__media,
	.hero--top .hero-card--lead .hero-card__media,
	.section-magazine .hero-card--lead .hero-card__media {
		position: absolute;
		inset: 0;
		aspect-ratio: auto;
		border-radius: 0;
		z-index: 0;
	}
	/* Degradado oscuro sobre TODA la card (legibilidad; el body ya no lo trae). */
	.hero--top .hero-card--lead .hero-card__media::after,
	.section-magazine .hero-card--lead .hero-card__media::after {
		content: "";
		position: absolute;
		inset: 0;
		background: linear-gradient(to top, rgba(0,0,0,.85), rgba(0,0,0,.4) 55%, rgba(0,0,0,.15));
		z-index: 1;
		pointer-events: none;
	}
	/* Etiquetas + texto: en flujo (position:relative, NO absolute) y por encima de
	   la imagen (z-index sobre el fondo). Relative -> el z-index gana a la imagen. */
	.hero--top .hero-card--lead .card__cats,
	.hero--top .hero-card--lead .hero-card__body,
	.section-magazine .hero-card--lead .card__cats,
	.section-magazine .hero-card--lead .hero-card__body {
		position: relative;
		inset: auto;
		top: auto;
		left: auto;
		z-index: 2;
	}
	/* Etiquetas primero, 40px hasta el título; hacen wrap sin pisar nada. */
	.hero--top .hero-card--lead .card__cats,
	.section-magazine .hero-card--lead .card__cats {
		margin: 0 0 40px;
	}
	/* El body ya no trae su padding/gradiente propios (los da la card / el ::after). */
	.hero--top .hero-card--lead .hero-card__body,
	.section-magazine .hero-card--lead .hero-card__body {
		padding: 0;
		background: none;
	}
}

/* Tablet: el grid 2fr/1fr queda apretado; afloja el interlineado de los títulos
   de la Sección 1 (principal grande + secundarias) para que no se encimen. */
@media (min-width: 769px) and (max-width: 1024px) {
	.hero--top .ht-main .hero-card__title,
	.hero--top .ht-side .hero-card__title { line-height: 1.3; }
}


/* 11) Header / Ticker — colores configurables (panel Cabecera / Header).
   Vars inyectadas por news_child_header_vars(); fallback al estilo base. */
/* Fecha del top bar: sin capitalizar (el padre forzaba capitalize -> "21 De Junio De 2026"). */
.topbar__date { text-transform: none; }
.topbar__search button { background: var(--news-search-btn-bg, var(--news-primary)); }
.topbar__search button .dashicons-search { color: var(--news-search-icon, #fff); }
/* Botón de búsqueda de la barra superior del header: fondo Primario de la paleta
   (var inyectada desde la opción color_primary), lupa en blanco. */
.site-header__row--meta .topbar__search button { background: var(--news-primary); }
.site-header__row--meta .topbar__search button .dashicons-search { color: #fff; }
/* Searchform del tema (get_search_form: archivos, 404, "Nada por aquí"):
   mismo diseño que el buscador del header — botón Primario, lupa en blanco. */
.news-searchform button { background: var(--news-primary); }
.news-searchform button .dashicons-search { color: #fff; }
/* Estado vacío "Nada por aquí": buscador centrado, alto 44px, lupa 20px y
   borde Primario alrededor del conjunto input+botón (una sola pieza).
   Scopeado a .news-searchform -> NO afecta al buscador del header. */
.news-searchform {
	width: fit-content;
	margin-inline: auto;                  /* centra el bloque completo input+botón */
	border: 1px solid var(--news-primary); /* borde Primario desde la paleta (var) */
	border-radius: 6px;
	overflow: hidden;                     /* recorta input/botón a las esquinas */
}
.news-searchform input[type="search"],
.news-searchform button {
	height: 44px;                         /* mismo alto input y botón */
	box-sizing: border-box;
	border-radius: 0;                     /* el radio lo da el form */
}
.news-searchform button .dashicons-search,
.news-searchform button .dashicons-search::before {
	font-size: 20px;                      /* icono de la lupa 20px */
	width: 20px;
	height: 20px;
	line-height: 20px;
}

/* ===== Header layout 1 — logo + columna derecha (2 filas). ===== */
/* La barra superior full-width se plegó en la fila 1 (meta). Markup único. */
.l1-meta { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }

/* DESKTOP (>=1025px): logo 15% / columna derecha 85%. Suma exacta (gap 0). */
@media (min-width: 1025px) {
	.header--type-1 .header-bar--inline { flex-wrap: nowrap; gap: 0; align-items: stretch; }
	.header--type-1 .site-header__logo { flex: 0 0 15%; max-width: 15%; display: flex; align-items: center; }
	.header--type-1 .site-header__logo .site-branding { width: 100%; }
	/* #2: logo altura fija 100px, ancho automático, sin recorte.
	   max-height:100px pisa el .custom-logo{max-height:56px} del padre. */
	.header--type-1 .site-header__logo img { height: 100px; max-height: 100px; width: auto; max-width: 100%; object-fit: contain; }
	.header--type-1 .site-header__right {
		flex: 0 0 85%;
		max-width: 85%;
		min-width: 0;
		display: flex;
		flex-direction: column;
		gap: 0;
		background: transparent; /* el fondo lo pone cada fila, no el contenedor */
	}
	.header--type-1 .site-header__row { min-width: 0; }

	/* Fila 1 (meta): fondo = Secundario de la paleta (var inyectada desde la opción
	   color_secondary; no se hardcodea el hex). Textos/enlaces/iconos en blanco.
	   Ocupa el 100% del ancho de la columna derecha, con padding lateral. */
	.header--type-1 .site-header__row--meta { position: relative; background: var(--news-secondary); padding: .5rem 1rem; }
	/* El fondo Secundario sangra hasta el borde derecho de la pantalla (más allá
	   del contenedor 90vw). El CONTENIDO sigue dentro del contenedor; solo el
	   fondo se extiende. La franja se recorta en .site-header (overflow-x:clip),
	   así no genera scroll horizontal en ninguna resolución. */
	.header--type-1 .site-header__row--meta::after {
		content: "";
		position: absolute;
		top: 0;
		bottom: 0;
		left: 100%;
		width: 100vw;
		background: var(--news-secondary);
	}
	/* #3: el header arranca pegado al borde superior (sin el padding-top del bar). */
	.header--type-1 .site-header__bar { padding-top: 0; }
	.header--type-1 .site-header__row--meta { margin-top: 0; }
	.header--type-1 .site-header__row--meta .l1-meta { color: #fff; }
	.header--type-1 .site-header__row--meta a,
	.header--type-1 .site-header__row--meta a:hover { color: #fff; }
	.header--type-1 .site-header__row--meta .topbar__social a { color: #fff; } /* los SVG usan fill:currentColor */
	/* Buscador sobre fondo secundario: campo translúcido para que el texto/placeholder blanco sea legible. */
	.header--type-1 .site-header__row--meta .topbar__search input[type="search"] {
		background: rgba( 255, 255, 255, .12 );
		border: 1px solid rgba( 255, 255, 255, .4 );
		color: #fff;
	}
	.header--type-1 .site-header__row--meta .topbar__search input[type="search"]::placeholder { color: #fff; opacity: .75; }
	.header--type-1 .site-header__row--meta .topbar__search button .dashicons-search { color: #fff; }

	/* Fila 2 (nav): fondo blanco de borde a borde de la columna derecha.
	   OJO: el tema inyecta inline `.main-navigation{background:nav_bg}` desde
	   dynamic-css (hoy nav_bg = Secundario). Por eso hay que forzar el blanco
	   en el propio <nav>, y dejar transparentes los wrappers internos
	   (.container / .menu / ul) para que no tapen ese blanco. */
	.header--type-1 .site-header__row--nav,
	.header--type-1 .site-header__row--nav .main-navigation { background: #fff; }
	.header--type-1 .site-header__row--nav .main-navigation .container,
	.header--type-1 .site-header__row--nav .main-navigation .menu,
	.header--type-1 .site-header__row--nav .main-navigation ul { background: transparent; }
	/* #1: menú alineado a la izquierda dentro de su fila (pisa el flex-end del padre). */
	.header--type-1 .site-header__row--nav .main-navigation .menu { justify-content: flex-start; }
	/* Cada item del menú: padding 10px en los 4 lados (pisa el .85rem 1rem del padre). */
	.header--type-1 .site-header__row--nav .main-navigation .menu > li > a { padding: 10px; }
	/* Enlaces del menú en color Títulos de la paleta; hover en Secundario. */
	.header--type-1 .site-header__row--nav .main-navigation a { color: var(--news-title); }
	.header--type-1 .site-header__row--nav .main-navigation a:hover,
	.header--type-1 .site-header__row--nav .main-navigation .current-menu-item > a,
	.header--type-1 .site-header__row--nav .main-navigation .current_page_item > a { color: var(--news-secondary); }
}

/* TABLET (768–1024px): logo 35% / columna derecha 65%. */
@media (min-width: 768px) and (max-width: 1024px) {
	.header--type-1 .header-bar--inline { flex-wrap: nowrap; gap: 0; align-items: center; }
	.header--type-1 .site-header__logo { flex: 0 0 35%; max-width: 35%; display: flex; align-items: center; }
	/* 1) Logo: alto fijo 80px, ancho auto, sin recorte (max-height pisa .custom-logo{max-height:56px}). */
	.header--type-1 .site-header__logo img { height: 80px; max-height: 80px; width: auto; max-width: 100%; object-fit: contain; }
	.header--type-1 .site-header__right { flex: 0 0 65%; max-width: 65%; min-width: 0; display: flex; flex-direction: column; gap: .4rem; }

	/* 2) Buscador: borde 1px #459fdc envolviendo input + botón como una sola pieza (borde continuo). */
	.site-header__row--meta .topbar__search { border: 1px solid #459fdc; border-radius: 4px; overflow: hidden; }
	.site-header__row--meta .topbar__search input[type="search"],
	.site-header__row--meta .topbar__search button { border: 0; }

	/* 3) Buscador alineado a la derecha dentro de su fila. */
	.l1-meta .topbar__right { flex: 1; }
	.l1-meta .topbar__search { margin-left: auto; }

	/* 4) Fondo de la fila del menú full-bleed hasta el borde derecho del header
	   (mismo mecanismo que desktop: pseudo + overflow-x:clip en .site-header). El
	   pseudo hereda el fondo del .main-navigation (nav_bg del panel). */
	.header--type-1 .site-header__row--nav .main-navigation { position: relative; }
	.header--type-1 .site-header__row--nav .main-navigation::after {
		content: "";
		position: absolute;
		top: 0;
		bottom: 0;
		left: 100%;
		width: 100vw;
		background: inherit;
	}

	/* 5) Toggle "Menú": el color del texto+icono se unifica más abajo en una sola
	   fuente (tablet + mobile, todos los estados). Ver bloque "Toggle — color #fff". */
}

/* MOBILE (<768px): logo 40% / columna derecha 60%; logo max-height 100px, contain. */
@media (max-width: 767px) {
	.header--type-1 .header-bar--inline { flex-wrap: nowrap; gap: 0; align-items: center; }
	.header--type-1 .site-header__logo { flex: 0 0 40%; max-width: 40%; display: flex; align-items: center; }
	.header--type-1 .site-header__logo img { max-width: 100%; max-height: 100px; height: auto; object-fit: contain; }
	.header--type-1 .site-header__right { flex: 0 0 60%; max-width: 60%; min-width: 0; display: flex; flex-direction: column; gap: .4rem; }
}

/* Fila 1 (meta) — bloque único, visibilidad por breakpoint (respeta toggles del panel). */
/* Tablet + Mobile: ocultar fecha y contacto → quedan redes + buscador. */
@media (max-width: 1024px) {
	.l1-meta { justify-content: flex-start; }
	.l1-meta .topbar__left { display: none; }
	.l1-meta .topbar__right { display: flex; align-items: center; gap: 1rem; }
}
/* Mobile: ocultar también el buscador → queda solo redes. */
@media (max-width: 767px) {
	.l1-meta .topbar__search { display: none; }
}

/* Barra "ÚLTIMO" (ticker): solo desktop. Oculta por completo en tablet y mobile
   (el desplegable de categorías se reubica al menú vía header-catmenu.js). */
@media (max-width: 1024px) {
	.news-ticker { display: none; }
}
.news-ticker { background: var(--news-ticker-bg, var(--news-secondary)); }
.news-ticker__item a,
.news-ticker__item a:hover { color: var(--news-ticker-text, #fff); }
.news-ticker__label {
	background: var(--news-ticker-label-bg, var(--news-primary));
	color: var(--news-ticker-label-text, #fff);
}

/* Barra ÚLTIMO en 2 columnas: 70% ticker + 30% desplegable CATEGORÍAS a la derecha. */
.news-ticker { overflow: visible; }              /* permite que el dropdown de categorías salga de la barra */
.news-ticker__inner { gap: 0; }                  /* sin gap innecesario entre columnas */
.news-ticker__main {
	flex: 0 0 70%;
	max-width: 70%;
	min-width: 0;
	display: flex;
	align-items: center;
	align-self: stretch;                         /* la columna ocupa todo el alto de la barra */
	gap: 1rem;                                   /* separación etiqueta/titulares (como antes) */
	overflow: hidden;                            /* la columna del ticker no desborda; marquee confinado al 70% */
}
/* Botón "ÚLTIMO": ocupa toda la altura de la barra (igual que el bloque derecho),
   sin margen vertical ni franja del fondo asomando arriba/abajo. */
.news-ticker__label {
	margin-block: 0;
	align-self: stretch;                         /* alto total de la barra */
	display: inline-flex;
	align-items: center;                         /* texto centrado; el fondo llena todo el alto */
}
.news-ticker__aside {
	flex: 0 0 30%;
	max-width: 30%;
	min-width: 0;
	display: flex;
	align-items: center;
	justify-content: flex-end;                   /* CATEGORÍAS alineado a la derecha */
}
.news-ticker__aside .news-catmenu { margin-left: 0; }  /* la columna ya lo alinea a la derecha */
/* Legibilidad: texto del disparador en el color del ticker (blanco), no el secundario (= fondo de la barra). */
.news-ticker__aside .news-catmenu__toggle,
.news-ticker__aside .news-catmenu__toggle:hover { color: var(--news-ticker-text, #fff); }

/* 12) Single (nota) — layout, anuncios y módulos de barra lateral.
   Fondos por variables del tema (paleta), sin colores hardcodeados. */
.content-area--full { grid-template-columns: minmax(0, 1fr); }
.single-aside { min-width: 0; }

/* Anuncios dentro de la nota: centrados, con aire. */
.single-ad { margin: 1.5rem auto; text-align: center; }
.single-ad .news-ad { margin-inline: auto; }
/* Fondo transparente en todos los anuncios. */
.news-ad { background: transparent; }

/* Módulos de la barra lateral. */
.single-module {
	margin-bottom: 1.75rem;
	padding: 1rem;
	background: var(--news-surface);
	border: 1px solid var(--news-border);
	border-radius: var(--news-radius);
}
.single-module__title { margin: 0 0 1rem; }
.single-module__text { color: var(--news-text); margin: 0 0 .75rem; font-size: .9rem; }
.single-module__contact { list-style: none; margin: 0 0 .75rem; padding: 0; display: flex; flex-direction: column; gap: .5rem; }
.single-module__contact li { display: flex; align-items: center; gap: .5rem; }
.single-module__contact a { color: var(--news-text); }
.single-module__ic { flex: 0 0 auto; display: inline-flex; color: var(--news-text); transition: color .15s ease; }
.single-module__ic svg { width: 16px; height: 16px; fill: currentColor; }
.single-module__contact li:hover .single-module__ic,
.single-module__contact li:hover a { color: var(--news-primary); }
.single-module__social { display: flex; gap: .6rem; }
.single-module__social a { color: var(--news-text); }
.single-module__social a:hover { color: var(--news-primary); }
.single-module__social a svg { width: 20px; height: 20px; fill: currentColor; }

/* Newsletter. */
.news-newsletter { display: flex; flex-wrap: wrap; gap: .5rem; }
.news-newsletter input[type="email"] {
	flex: 1 1 auto;
	min-width: 0;
	padding: .55rem .7rem;
	border: 1px solid var(--news-border);
	border-radius: 6px;
	background: #fff;
	color: var(--news-text);
	font: inherit;
}
.news-newsletter__btn {
	border: 0;
	border-radius: 6px;
	padding: .55rem 1rem;
	background: var(--news-primary);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: background .15s ease;
}
.news-newsletter__btn:hover { background: var(--news-secondary); }

/* 13) Archivos — grilla con columnas configurables (PC/tablet/móvil) y
   anuncios por fila (ancho completo). Fondos por variables del tema. */
.archive-grid {
	display: grid;
	gap: var(--news-gap);
	grid-template-columns: repeat(var(--cols-mobile, 1), minmax(0, 1fr));
}
@media (min-width: 768px) {
	.archive-grid { grid-template-columns: repeat(var(--cols-tablet, 2), minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.archive-grid { grid-template-columns: repeat(var(--cols-pc, 3), minmax(0, 1fr)); }
}
/* Anuncio entre filas: ocupa todo el ancho de la grilla. */
.archive-grid .archive-ad { grid-column: 1 / -1; text-align: center; margin: .5rem 0; }
.archive-ad { text-align: center; margin: 1.25rem 0; }
.archive-ad .news-ad { margin-inline: auto; }

/* 14) Archivos — título con color del tema, masonry y "Cargar más". */
.page-title { color: var(--news-text); }
/* Masonry: columnas por breakpoint (mismas vars que la grilla). */
.archive-grid--masonry {
	display: block;
	column-gap: var(--news-gap);
	columns: var(--cols-mobile, 1);
}
@media (min-width: 768px) {
	.archive-grid--masonry { columns: var(--cols-tablet, 2); }
}
@media (min-width: 1024px) {
	.archive-grid--masonry { columns: var(--cols-pc, 3); }
}
.archive-grid--masonry .card,
.archive-grid--masonry .archive-ad {
	break-inside: avoid;
	margin-bottom: var(--news-gap);
	display: block;
}
/* Botón "Cargar más". */
.archive-loadmore { text-align: center; margin: 1.5rem 0; }
.archive-loadmore__btn {
	border: 0;
	border-radius: 6px;
	padding: .7rem 1.6rem;
	background: var(--news-primary);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: background .15s ease, opacity .15s ease;
}
.archive-loadmore__btn:hover { background: var(--news-secondary); }
.archive-loadmore__btn.is-loading { opacity: .6; cursor: default; }

/* 15) Hero "destacados" — grilla con columnas configurables por breakpoint
   (panel Home / Secciones, bloque de destacados). */
.hero--grid .hero-grid-cfg {
	grid-template-columns: repeat(var(--hcols-mobile, 1), minmax(0, 1fr));
}
@media (min-width: 768px) {
	.hero--grid .hero-grid-cfg { grid-template-columns: repeat(var(--hcols-tablet, 2), minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.hero--grid .hero-grid-cfg { grid-template-columns: repeat(var(--hcols-pc, 3), minmax(0, 1fr)); }
}

/* 16) Vista TABLET (iPad ~769–1024px): top bar, logo+banner y menú. */
@media (min-width: 769px) and (max-width: 1024px) {
	/* Top bar: solo fecha, redes y buscador, repartidos a todo el ancho. */
	.topbar__inner { justify-content: space-between; width: 100%; }
	.topbar__left,
	.topbar__right { display: contents; }
	.topbar__contact { display: none; }

	/* Logo a la izquierda (máx 25%) + banner a la derecha, misma fila. */
	.header--type-3 .header-bar--with-ad { flex-wrap: nowrap; }
	.header--type-3 .site-branding { max-width: 25%; flex: 0 0 auto; }
	.header--type-3 .site-branding img { max-width: 100%; height: auto; }
	.header--type-3 .header-ad { flex: 1 1 auto; width: auto; }

	/* Menú: hamburguesa a la izquierda + "Categorías" a la derecha, misma fila. */
	.main-navigation .container { flex-wrap: wrap; }
	.menu-toggle { display: inline-flex; }
	.main-navigation .menu { display: none; flex-direction: column; gap: 0; flex-basis: 100%; }
	.main-navigation.is-open .menu { display: flex; }
	.main-navigation ul ul { position: static; border: 0; box-shadow: none; padding-left: 1rem; }
	.main-navigation li:hover > ul { display: none; }
	.news-catmenu { margin-left: auto; }
}

/* 17) Menú hamburguesa del header — colores configurables
   (panel Menús > Menú del Header > Responsive). Solo aplica donde se muestra
   el toggle (tablet/móvil); fallback al estilo base. */
.menu-toggle {
	/* color: unificado en el bloque "Toggle — color #fff" (tablet+mobile, #fff). */
	background: var(--news-ham-bg, transparent);
	align-items: center; /* icono + "Menú" centrados verticalmente */
	border-style: var(--news-ham-bd-style, solid);
	border-width: var(--news-ham-bd-w, 1px);
	border-color: var(--news-ham-bd-color, var(--news-border));
}
/* Icono y texto alineados al centro. */
.menu-toggle__icon { display: inline-flex; align-items: center; line-height: 1; }
.menu-toggle:hover {
	/* color: unificado en #fff (ver bloque "Toggle — color #fff"). */
	background: var(--news-ham-bg-h, transparent);
	border-color: var(--news-ham-bd-color-h, var(--news-ham-bd-color, var(--news-border)));
}
.main-navigation.is-open .menu-toggle {
	/* color: unificado en #fff (ver bloque "Toggle — color #fff"). */
	background: var(--news-ham-close-bg, var(--news-ham-bg, transparent));
}
.main-navigation.is-open .menu-toggle:hover {
	/* color: unificado en #fff (ver bloque "Toggle — color #fff"). */
	background: var(--news-ham-close-bg-h, transparent);
}
/* Iconos abrir/cerrar: muestra el de cerrar al abrir el menú. */
.menu-toggle__icon--close { display: none; }
.main-navigation.is-open .menu-toggle__icon--open { display: none; }
.main-navigation.is-open .menu-toggle__icon--close { display: inline-flex; }

/* ============================================================
   Toggle — color #fff  (FUENTE ÚNICA de color del texto "Menú" + icono
   hamburguesa). Blanco SIEMPRE donde el toggle se muestra: tablet (768–1024px)
   y mobile (<768px), en TODOS los estados: normal, hover, focus, focus-visible,
   active, visited, aria-expanded true/false, menú abierto y cerrado.
   Las reglas base de arriba ya NO fijan color (solo fondo/borde del panel), así
   que acá no hace falta !important: gana por orden y por cubrir cada estado.
   ============================================================ */
@media (max-width: 1024px) {
	.menu-toggle,
	.menu-toggle:hover,
	.menu-toggle:focus,
	.menu-toggle:focus-visible,
	.menu-toggle:active,
	.menu-toggle:visited,
	.menu-toggle[aria-expanded="true"],
	.menu-toggle[aria-expanded="false"],
	.main-navigation.is-open .menu-toggle,
	.main-navigation.is-open .menu-toggle:hover,
	.main-navigation.is-open .menu-toggle:focus,
	.main-navigation.is-open .menu-toggle:focus-visible,
	.main-navigation.is-open .menu-toggle:active { color: #fff; }
	/* Icono: font-icon (dashicons/FA) hereda currentColor; SVG por si acaso. */
	.menu-toggle *,
	.menu-toggle .menu-toggle__icon,
	.menu-toggle i,
	.menu-toggle [class^="dashicons"]::before,
	.menu-toggle .dashicons-before::before { color: #fff; }
	.menu-toggle svg { fill: #fff; stroke: #fff; }
}

/* Responsive (≤1024px, donde se muestra el hamburguesa):
   el desplegable abre en overlay (no altera el alto de la sección del menú) y
   usa el color de fondo configurado ("Color del menú desplegable"). */
@media (max-width: 1024px) {
	.main-navigation { position: relative; }
	.main-navigation.is-open .menu {
		position: absolute;
		top: 100%;
		left: 0;
		right: auto;
		max-width: 60vw; /* tablet */
		z-index: 60;
		background: var(--news-ham-drop, var(--news-bg));
		box-shadow: 0 8px 20px rgba(0, 0, 0, .15);
		padding: .5rem 1rem;
	}
	/* Enlaces del desplegable: normal / hover / activo configurables. */
	.main-navigation.is-open .menu a { color: var(--news-ham-drop-link, inherit); }
	.main-navigation.is-open .menu a:hover { color: var(--news-ham-drop-link-h, var(--news-primary)); }
	.main-navigation.is-open .menu .current-menu-item > a,
	.main-navigation.is-open .menu .current_page_item > a { color: var(--news-ham-drop-link-a, var(--news-primary)); }

	/* Botones "Menú" (hamburguesa) y "Categorías": alto completo de la barra,
	   sin borde/sombra/outline/radius, mismo padding y sin gaps verticales. */
	.main-navigation .container { align-items: stretch; }
	.menu-toggle { align-self: stretch; }
	.news-catmenu { align-self: stretch; display: flex; }
	.menu-toggle,
	.news-catmenu__toggle {
		height: 100%;
		margin: 0;
		border: none;
		box-shadow: none;
		outline: none;
		border-radius: 0;
		padding: .6rem 1rem;
	}
}
/* Móvil: ancho máximo del desplegable. */
@media (max-width: 768px) {
	.main-navigation.is-open .menu { max-width: 75vw; }
}

/* 18) Página de Contacto — datos, mapa responsive y formulario. */
.contact-page { display: grid; gap: clamp(1.5rem, 4vw, 2.5rem); margin-top: 1.5rem; }
/* Datos en columnas (icono arriba + dato abajo). PC: 4; tablet: 2x2; móvil: 1. */
.contact-cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--news-gap); }
.contact-col {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: .4rem;
	padding: 1.25rem 1rem;
	background: var(--news-surface);
	border: 1px solid var(--news-border);
	border-radius: var(--news-radius);
}
/* Icono de cabecera: glyph FA sólido dentro de un círculo del color del tema. */
.contact-col__ic {
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background: var(--news-primary);
	color: #fff;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 1;
	margin-bottom: .2rem;
	transition: background .2s ease;
}
.contact-col__ic i { font-size: 24px; line-height: 1; }
/* Hover: el círculo pasa de primario a secundario (glyph sigue blanco). */
.contact-col:hover .contact-col__ic { background: var(--news-secondary); }
.contact-col__label { font-weight: 700; text-transform: uppercase; font-size: .8rem; letter-spacing: .03em; }
.contact-col__val { color: var(--news-text); word-break: break-word; }
.contact-col__val:is(a):hover { color: var(--news-primary); }
.contact-col__social { display: flex; gap: .6rem; justify-content: center; }
.contact-col__social a { color: var(--news-text); }
.contact-col__social a:hover { color: var(--news-primary); }
.contact-col__social svg { width: 22px; height: 22px; fill: currentColor; }
@media (max-width: 1024px) { .contact-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px)  { .contact-cols { grid-template-columns: 1fr; } }
/* Formulario + mapa en 2 columnas (PC); apilados en tablet/móvil. */
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--news-gap); align-items: stretch; }
@media (max-width: 1024px) { .contact-grid { grid-template-columns: 1fr; } }
/* Mapa responsive: escala al ancho; en PC iguala el alto de la columna del form. */
.contact-map { height: 100%; }
.contact-map iframe { width: 100%; height: 100%; min-height: 320px; border: 0; display: block; border-radius: var(--news-radius); }
/* PC: el mapa toma exactamente el alto del formulario (sin min que lo alargue). */
@media (min-width: 1025px) { .contact-map iframe { min-height: 0; } }
/* Tablet/móvil (apilados): altura fija razonable. */
@media (max-width: 1024px) { .contact-map iframe { height: 320px; } }
/* Formulario. */
.contact-form { display: grid; gap: 1rem; max-width: 100%; }
.contact-form__field { margin: 0; display: flex; flex-direction: column; gap: .35rem; }
.contact-form__field label { font-weight: 600; font-size: .9rem; }
.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea {
	width: 100%;
	padding: .6rem .75rem;
	border: 1px solid var(--news-border);
	border-radius: 6px;
	font: inherit;
	background: #fff;
	color: var(--news-text);
}
.contact-form [aria-invalid="true"] { border-color: var(--news-primary); }
.contact-form__terms label { flex-direction: row; align-items: center; gap: .5rem; font-weight: 400; }
.contact-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.contact-form__submit button {
	border: 0;
	border-radius: 6px;
	padding: .7rem 1.6rem;
	background: var(--news-primary);
	color: #fff;
	font: inherit;
	font-weight: 600;
	cursor: pointer;
	transition: background .15s ease;
}
.contact-form__submit button:hover { background: var(--news-secondary); }
.contact-notice { padding: .8rem 1rem; border-radius: 6px; margin-bottom: 1rem; }
.contact-notice--ok { background: #e6f5ea; color: #14532d; border: 1px solid #b7e4c7; }
.contact-notice--error { background: #fdecec; color: #7f1d1d; border: 1px solid #f5c2c2; }

/* 19) Página Editorial (equipo) — grupos por puesto + tarjetas. */
.team-group { margin-bottom: clamp(1.8rem, 4vw, 2.8rem); }
.team-group__title { margin-bottom: 1.25rem; }
.team-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--news-gap); }
@media (max-width: 1024px) { .team-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px)  { .team-grid { grid-template-columns: 1fr; } }
.team-card {
	background: var(--news-surface);
	border: 1px solid var(--news-border);
	border-radius: var(--news-radius);
	padding: 1.25rem;
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: .35rem;
}
/* Foto: nunca supera 200x200, sin recorte forzado. */
.team-card__photo { margin-bottom: .4rem; }
.team-card__photo img { max-width: 200px; max-height: 200px; width: auto; height: auto; display: block; border-radius: var(--news-radius); }
.team-card__name { margin: 0; font-size: 1.1rem; color: var(--news-text); }
.team-card__role { margin: 0; color: var(--news-primary); font-weight: 600; font-size: .82rem; text-transform: uppercase; letter-spacing: .03em; }
.team-card__bio { color: var(--news-muted); font-size: .9rem; }
.team-card__bio p { margin: 0; }
.team-card__social { display: flex; gap: .6rem; margin-top: .3rem; }
.team-card__social a { color: var(--news-text); font-size: 1.05rem; }
.team-card__social a:hover { color: var(--news-primary); }

/* ============================================================
   Desplegable de categorías / REGIONES: fondo Secundario + texto,
   flecha e items en blanco. Trigger y panel, en TODAS las resoluciones.
   Prefijo `.news-catmenu` para ganar a las reglas inyectadas por
   dynamic-css (.news-catmenu__toggle / .news-catmenu__panel /
   .news-menu-categories a) y a las reglas base del hijo.
   ============================================================ */
.news-catmenu .news-catmenu__toggle,
.news-catmenu .news-catmenu__toggle:hover,
.news-catmenu .news-catmenu__toggle:focus {
	background: var(--news-secondary);
	color: #fff;
}
/* Etiqueta + flecha (SVG usa fill:currentColor) heredan el blanco. */
.news-catmenu .news-catmenu__label,
.news-catmenu .news-catmenu__chevron { color: #fff; }
/* Panel desplegado. */
.news-catmenu .news-catmenu__panel { background: var(--news-secondary); border-color: rgba( 255, 255, 255, .25 ); }
.news-catmenu .news-catmenu__panel .menu a,
.news-catmenu .news-catmenu__panel .news-menu-categories a,
.news-catmenu .news-catmenu__panel .current-menu-item > a { color: #fff; }
.news-catmenu .news-catmenu__panel .menu a:hover,
.news-catmenu .news-catmenu__panel .menu a:focus { background: rgba( 255, 255, 255, .15 ); color: #fff; }

/* ============================================================
   HOME — solo tablet (768–1024px). Bloque al final para ganar por orden
   a las reglas mobile (max-width:768) en el límite de 768px.
   ============================================================ */
@media (min-width: 768px) and (max-width: 1024px) {
	/* 1) Sección Hero: nota destacada grande a ancho completo (1 columna);
	   debajo, el bloque derecho a ancho completo con sus notas 2 por fila. */
	.hero--top { grid-template-columns: 1fr; }
	.hero--top .ht-side {
		grid-template-columns: repeat(2, 1fr);
		grid-template-rows: auto;
	}
	.hero--top .ht-side .hero-card--lead { height: auto; }
	.hero--top .ht-side .hero-card--lead .hero-card__media { height: auto; aspect-ratio: 16 / 9; }

	/* 2) y 3) Secciones del home con main + sidebar (categoría "colormag" y videos):
	   fila de 2 columnas — principal 65% / barra lateral 35%. fr respeta el gap
	   (no genera overflow); minmax(0,…) permite encoger el contenido. */
	.home-section .content-area {
		grid-template-columns: minmax(0, 65fr) minmax(0, 35fr);
	}
}

/* HEADER — solo tablet (768–1024px): el header termina exactamente en la fila
   del menú (fondo naranja); sin franja blanca debajo. El espacio lo generaba el
   padding-bottom del .site-header__bar. Se anula en el header y wrappers internos. */
@media (min-width: 768px) and (max-width: 1024px) {
	.site-header,
	.header--type-1 .site-header__bar,
	.header--type-1 .site-header__right,
	.header--type-1 .site-header__row,
	.header--type-1 .site-header__row--nav {
		margin-bottom: 0;
		padding-bottom: 0;
	}
	/* Quitar el borde inferior del header: la fila del menú es el último elemento,
	   sin línea ni nada debajo; el contenido arranca pegado. */
	.site-header { border-bottom: 0; }
}

/* BARRAS LATERALES — solo tablet (768–1024px): items en layout vertical
   (imagen arriba a ancho completo + texto debajo). Scopeado a las barras
   laterales (.home-aside / .video-aside) para no afectar grids/listas del home.
   Las imágenes ya usan aspect-ratio + object-fit:cover -> no se deforman. */
@media (min-width: 768px) and (max-width: 1024px) {
	/* Categoría ("Latest News"): .post-item pasa de 110px+1fr a 1 columna. */
	.home-aside .post-item { grid-template-columns: 1fr; }
	.home-aside .post-item__title { font-size: 15px; }
	/* Videos ("Mirar videos"): .video-item pasa de 120px+1fr a 1 columna. */
	.video-aside .video-item { grid-template-columns: 1fr; }
	.video-aside .video-item__title { font-size: 15px; }
}

/* El sticky de la fila main+sidebar del home en tablet ahora lo maneja la
   UTILIDAD ÚNICA de arriba (.content-area > * / .home-section .content-area > *),
   que fija automáticamente la columna más baja (main o sidebar). */

/* MÓDULO "Sección de categoría" layout Magazine — solo tablet (768–1024px):
   las notas van en 1 SOLA columna (destacada full-width arriba + el resto
   apilado debajo, una tras otra). La barra lateral queda al costado (la fila
   65/35 no se toca). Aplica a TODAS las instancias de ese tipo+layout, sin
   importar la categoría elegida. */
@media (min-width: 768px) and (max-width: 1024px) {
	.section-magazine .mag-rest { grid-template-columns: 1fr; }
}

/* MÓDULO "Sección de categoría" layout "Grilla 3 columnas" — solo tablet
   (768–1024px): la grilla pasa de 3 a 2 columnas. En desktop (>=1025px) sigue
   en 3 (regla base del padre) y en móvil (<768px) en 1 (media query del padre);
   acá solo se cubre el tramo intermedio, que el padre dejaba en 3. Aplica a
   TODAS las instancias de ese tipo+layout, sin importar la categoría elegida. */
@media (min-width: 768px) and (max-width: 1024px) {
	.posts-grid--3 { grid-template-columns: repeat(2, 1fr); }
}
