/* =============================================================
   shortcodes.css — estilos para los shortcodes del plugin
   [ines_proyectos] y [ines_publicaciones].

   IMPORTANTE: el HTML lo genera el plugin con clases BEM-like.
   Este archivo SOLO aplica estilos a esas clases, no toca el markup.

   Clases provistas por el plugin:
     .ines-proyectos-listado(.ines-proyectos-listado--vacio)
       .ines-proyectos-titulo
       .ines-proyectos-items
         .ines-proyecto-item(.ines-proyecto-item--vigente|--finalizado)
           .ines-proyecto-anios
           .ines-proyecto-rol
           .ines-proyecto-conector
           .ines-proyecto-titulo-link
           .ines-proyecto-financiamiento
       .ines-proyectos-vacio

     .ines-publicaciones-listado
        (.ines-publicaciones-listado--agrupado|--vacio)
       .ines-publicaciones-titulo
       .ines-publicaciones-grupo(.ines-publicaciones-grupo--<slug>)
         .ines-publicaciones-grupo-titulo
       .ines-publicaciones-items
         .ines-publicacion-item
            (.ines-publicacion--articulo|libro|capitulo|tesis|otro)
           .ines-publicacion-citacion
           .ines-publicacion-enlace
       .ines-publicaciones-vacio
   ============================================================= */

/* ============================== PROYECTOS ============================ */

.ines-proyectos-listado {
	margin-block: var(--space-4);
}

.ines-proyectos-titulo {
	font-family: var(--font-display);
	font-size: var(--text-lg);
	font-weight: var(--weight-bold);
	letter-spacing: -0.02em;
	margin-block-end: var(--space-3);
	color: inherit;
}

.ines-proyectos-items {
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
	list-style: none;
	padding: 0;
	margin: 0;
}

.ines-proyecto-item {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4em;
	align-items: baseline;
	padding-block: var(--space-2);
	padding-inline: var(--space-3);
	border-left: 3px solid var(--color-gray-300);
	background: var(--color-gray-100);
	border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
	font-size: var(--text-base);
	line-height: var(--leading-snug);
}

.ines-proyecto-item--vigente {
	border-left-color: var(--color-accent-dark);
	background: var(--color-accent-soft);
}

.ines-proyecto-anios {
	font-family: var(--font-display);
	font-weight: var(--weight-semibold);
	color: var(--color-primary);
	white-space: nowrap;
}

.ines-proyecto-rol {
	font-weight: var(--weight-semibold);
	color: var(--color-primary-light);
}

.ines-proyecto-conector {
	color: var(--color-text-muted);
	font-style: italic;
}

.ines-proyecto-titulo-link {
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
	transition: color var(--transition-base);
	font-weight: var(--weight-medium);
}

.ines-proyecto-titulo-link:hover {
	color: var(--color-primary-light);
}

.ines-proyecto-financiamiento {
	color: var(--color-gray-700);
}

.ines-proyectos-vacio {
	color: var(--color-text-muted);
	font-style: italic;
	padding-block: var(--space-3);
}

/* ============================ PUBLICACIONES ========================== */

.ines-publicaciones-listado {
	margin-block: var(--space-4);
}

.ines-publicaciones-titulo {
	font-family: var(--font-display);
	font-size: var(--text-lg);
	font-weight: var(--weight-bold);
	letter-spacing: -0.02em;
	margin-block-end: var(--space-3);
	color: inherit;
}

.ines-publicaciones-grupo {
	margin-block-end: var(--space-4);
}

.ines-publicaciones-grupo:last-child {
	margin-block-end: 0;
}

.ines-publicaciones-grupo-titulo {
	font-family: var(--font-display);
	font-size: var(--text-md);
	font-weight: var(--weight-semibold);
	color: var(--color-primary);
	padding-block-end: var(--space-1);
	border-bottom: 1px solid var(--color-accent);
	margin-block-end: var(--space-2);
}

.ines-publicaciones-items {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	list-style: none;
	padding: 0;
	margin: 0;
}

.ines-publicacion-item {
	padding-block: var(--space-2);
	padding-inline: var(--space-3);
	background: var(--color-gray-100);
	border-radius: var(--radius-sm);
	border-left: 3px solid var(--color-gray-300);
	font-size: var(--text-base);
	line-height: var(--leading-snug);
}

.ines-publicacion--articulo { border-left-color: var(--color-blue); }
.ines-publicacion--libro    { border-left-color: var(--color-primary); }
.ines-publicacion--capitulo { border-left-color: var(--color-primary-light); }
.ines-publicacion--tesis    { border-left-color: var(--color-accent-dark); }
.ines-publicacion--otro     { border-left-color: var(--color-gray-500); }

.ines-publicacion-citacion {
	display: block;
	color: inherit;
}

.ines-publicacion-citacion em {
	color: var(--color-primary);
	font-style: italic;
}

.ines-publicacion-enlace {
	display: inline-flex;
	align-items: center;
	gap: 0.3em;
	margin-top: var(--space-1);
	font-size: var(--text-sm);
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
	font-weight: var(--weight-medium);
	transition: color var(--transition-base);
}

.ines-publicacion-enlace:hover {
	color: var(--color-primary-light);
}

.ines-publicacion-enlace::after {
	content: '↗';
	font-size: 0.85em;
	opacity: 0.7;
}

.ines-publicaciones-vacio {
	color: var(--color-text-muted);
	font-style: italic;
	padding-block: var(--space-3);
}

/* ----- Variantes en sección con fondo violeta (texto sobre oscuro) ----- */

.section--violet .ines-proyectos-titulo,
.section--violet .ines-publicaciones-titulo {
	color: var(--color-white);
}

.section--violet .ines-proyecto-item,
.section--violet .ines-publicacion-item {
	background: rgba(255, 255, 255, 0.08);
	color: var(--color-white);
	border-left-color: var(--color-accent);
}

.section--violet .ines-proyecto-item--vigente {
	background: rgba(184, 245, 168, 0.18);
	border-left-color: var(--color-accent);
}

.section--violet .ines-proyecto-anios,
.section--violet .ines-proyecto-titulo-link,
.section--violet .ines-publicacion-enlace {
	color: var(--color-accent);
}

.section--violet .ines-proyecto-titulo-link:hover,
.section--violet .ines-publicacion-enlace:hover {
	color: var(--color-accent-dark);
}

.section--violet .ines-proyecto-rol {
	color: var(--color-accent);
}

.section--violet .ines-publicacion-citacion em {
	color: var(--color-accent);
}

.section--violet .ines-publicaciones-grupo-titulo {
	color: var(--color-white);
	border-bottom-color: var(--color-accent);
}

/* ============================================================ */
/* SHORTCODE [ines_equipo] — grid del equipo agrupado por rol  */
/* ============================================================ */

.ines-equipo {
	padding-block: var(--space-5);
}

.ines-equipo--vacio {
	padding-block: var(--space-3);
}

.ines-equipo__vacio {
	color: var(--color-text-muted);
	font-style: italic;
}

.ines-equipo-grupo {
	margin-bottom: var(--space-7);
}

.ines-equipo-grupo:last-child {
	margin-bottom: 0;
}

.ines-equipo-grupo__titulo {
	font-family: var(--font-display);
	font-size: var(--text-xl);
	font-weight: var(--weight-bold);
	color: var(--color-white);
	margin: 0 0 var(--space-4) 0;
	letter-spacing: -0.02em;
	text-transform: capitalize;
}

/* Grid responsive */
.ines-equipo-grid {
	display: grid;
	gap: var(--space-4);
	list-style: none;
	padding: 0;
	margin: 0;
}

.ines-equipo-grid--cols-1 { grid-template-columns: 1fr; }
.ines-equipo-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
.ines-equipo-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.ines-equipo-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
.ines-equipo-grid--cols-5 { grid-template-columns: repeat(5, 1fr); }
.ines-equipo-grid--cols-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 968px) {
	.ines-equipo-grid--cols-3,
	.ines-equipo-grid--cols-4,
	.ines-equipo-grid--cols-5,
	.ines-equipo-grid--cols-6 {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 600px) {
	.ines-equipo-grid--cols-2,
	.ines-equipo-grid--cols-3,
	.ines-equipo-grid--cols-4,
	.ines-equipo-grid--cols-5,
	.ines-equipo-grid--cols-6 {
		grid-template-columns: 1fr;
	}
}

/* Quiebre de fila explícito (atributo filas="3,2,3,1" del shortcode):
   el miembro marcado arranca en la columna 1, forzando fila nueva.
   Funciona igual en la grilla de 3 y en la responsive de 2 columnas. */
.ines-equipo-grid .ines-miembro--nueva-fila {
	grid-column-start: 1;
}

/* Tarjeta individual */
.ines-miembro {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	/* Permitir que la foto sobresalga del media. Explícito (default ya es visible). */
	overflow: visible;
}

.ines-miembro__media {
	position: relative;
	/* 5/4 más rectangular horizontal que 4/3, alineado al diseño del Canva. */
	aspect-ratio: 5 / 4;
	border-radius: var(--radius-lg);
	/* overflow: visible para que la foto se extienda por encima del rectángulo
	   verde y la cabeza/hombros de la persona "salgan" del marco. Las shapes
	   internas usan top/left % positivos, así que se mantienen contenidas
	   dentro del media incluso con overflow visible. */
	overflow: visible;
	/* Reservar espacio arriba para que la cabeza no choque con lo de arriba.
	   La foto sobresale un 30% de la altura del media (5/4 → 0.3 × 0.8 = 24%
	   del ancho). El margin-top en % es relativo al ancho de la celda, así que
	   24% reserva exactamente el overflow; el extra fijo separa del texto. */
	margin-top: calc(24% + var(--space-2));
}

/* --- Variante color: verde --- */
.ines-miembro--verde .ines-miembro__media {
	background: var(--color-accent);
}

.ines-miembro--verde .ines-miembro__shape--1 {
	position: absolute;
	width: 70%;
	height: 65%;
	top: 15%;
	left: 10%;
	background: var(--color-accent-dark);
	border-radius: var(--radius-lg);
	transform: rotate(-3deg);
	opacity: 0.6;
	z-index: 1;
}

.ines-miembro--verde .ines-miembro__shape--2 {
	position: absolute;
	width: 60%;
	height: 55%;
	top: 25%;
	left: 30%;
	background: var(--color-accent);
	border-radius: var(--radius-lg);
	transform: rotate(5deg);
	z-index: 2;
}

/* --- Variante color: azul --- */
.ines-miembro--azul .ines-miembro__media {
	background: var(--color-blue);
}

.ines-miembro--azul .ines-miembro__shape--1 {
	position: absolute;
	width: 70%;
	height: 65%;
	top: 15%;
	left: 10%;
	background: rgba(74, 111, 232, 0.6);
	border-radius: var(--radius-lg);
	transform: rotate(-3deg);
	z-index: 1;
}

.ines-miembro--azul .ines-miembro__shape--2 {
	position: absolute;
	width: 60%;
	height: 55%;
	top: 25%;
	left: 30%;
	background: rgba(74, 111, 232, 0.4);
	border-radius: var(--radius-lg);
	transform: rotate(5deg);
	z-index: 2;
}

/* Foto encima de las shapes. Anclada al borde inferior del media y
   más alta que el media (height: 130%) para que la cabeza/hombros
   sobresalgan por arriba del rectángulo verde. object-position bottom
   center mantiene los pies en la base. Las esquinas inferiores siguen
   matching la rounded corner del media (las superiores quedan en
   "espacio libre" sobre el media, sin clipping). */
.ines-miembro__foto {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	width: 100%;
	height: 130%;
	object-fit: cover;
	object-position: bottom center;
	z-index: 3;
	border-bottom-left-radius: var(--radius-lg);
	border-bottom-right-radius: var(--radius-lg);
}

/* Cuando NO hay foto, las shapes ganan presencia.
   Usa modificador explícito en lugar de :has() para mejor compatibilidad. */
.ines-miembro__media--sin-foto .ines-miembro__shape--1,
.ines-miembro__media--sin-foto .ines-miembro__shape--2 {
	opacity: 1;
}

/* Info debajo de la tarjeta */
.ines-miembro__info {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
}

.ines-miembro__nombre {
	font-family: var(--font-body);
	font-size: var(--text-md);
	font-weight: var(--weight-semibold);
	color: var(--color-accent);
	margin: 0;
	line-height: var(--leading-tight);
}

.ines-miembro__cargo {
	font-size: var(--text-base);
	font-weight: var(--weight-regular);
	color: var(--color-white);
	margin: 0;
	line-height: var(--leading-snug);
}

.ines-miembro__descripcion {
	font-size: var(--text-sm);
	color: var(--color-white);
	margin: var(--space-1) 0 0 0;
	line-height: var(--leading-normal);
	font-weight: var(--weight-medium);
}

/* ============================================================ */
/* SHORTCODE [ines_noticias] — grid de tarjetas de noticias    */
/* ============================================================ */

.ines-noticias__vacio {
	color: var(--color-text-muted);
	font-style: italic;
	padding-block: var(--space-3);
}

.ines-noticias-grid {
	display: grid;
	gap: var(--space-4) var(--space-3);
	list-style: none;
	padding: 0;
	margin: 0;
}

.ines-noticias-grid--cols-1 { grid-template-columns: 1fr; }
.ines-noticias-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
.ines-noticias-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.ines-noticias-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
.ines-noticias-grid--cols-5 { grid-template-columns: repeat(5, 1fr); }
.ines-noticias-grid--cols-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 968px) {
	.ines-noticias-grid--cols-3,
	.ines-noticias-grid--cols-4,
	.ines-noticias-grid--cols-5,
	.ines-noticias-grid--cols-6 {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 600px) {
	.ines-noticias-grid--cols-2,
	.ines-noticias-grid--cols-3,
	.ines-noticias-grid--cols-4,
	.ines-noticias-grid--cols-5,
	.ines-noticias-grid--cols-6 {
		grid-template-columns: 1fr;
	}
}

/* Tarjeta completa clickeable */
.ines-noticia__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	text-decoration: none;
	color: inherit;
	transition: transform var(--transition-base);
}

.ines-noticia__link:hover,
.ines-noticia__link:focus-visible {
	transform: translateY(-4px);
}

.ines-noticia__media {
	aspect-ratio: 3 / 2;
	border-radius: var(--radius-lg);
	overflow: hidden;
	background: var(--color-accent-soft);
	margin-bottom: var(--space-2);
}

.ines-noticia__media--sin-foto {
	background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
}

.ines-noticia__foto {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform var(--transition-slow);
}

.ines-noticia__link:hover .ines-noticia__foto {
	transform: scale(1.04);
}

.ines-noticia__info {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
	flex-grow: 1;
}

.ines-noticia__fecha {
	font-size: var(--text-xs);
	font-weight: var(--weight-semibold);
	color: var(--color-primary-light);
	text-transform: uppercase;
	letter-spacing: 0.05em;
	margin: 0;
}

.ines-noticia__titulo {
	font-family: var(--font-display);
	font-size: var(--text-md);
	font-weight: var(--weight-bold);
	color: var(--color-primary);
	line-height: var(--leading-snug);
	margin: 0;
	transition: color var(--transition-base);
}

.ines-noticia__link:hover .ines-noticia__titulo {
	color: var(--color-primary-light);
}

.ines-noticia__extracto {
	font-size: var(--text-sm);
	color: var(--color-gray-700);
	line-height: var(--leading-normal);
	margin: 0;
}

.ines-noticia__leer-mas {
	margin-top: auto;
	padding-top: var(--space-1);
	font-size: var(--text-sm);
	font-weight: var(--weight-semibold);
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
}

/* ============================================================ */
/* SHORTCODE [ines_documentos] — lista de descargas            */
/* ============================================================ */

.ines-documentos__vacio {
	color: var(--color-text-muted);
	font-style: italic;
	padding-block: var(--space-3);
}

.ines-documentos__lista {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	list-style: none;
	padding: 0;
	margin: 0;
}

.ines-documento__link {
	display: flex;
	align-items: center;
	gap: var(--space-3);
	padding: var(--space-3);
	background: var(--color-gray-100);
	border: 1.5px solid var(--color-gray-300);
	border-radius: var(--radius-md);
	text-decoration: none;
	color: inherit;
	transition: all var(--transition-base);
}

.ines-documento__link:hover,
.ines-documento__link:focus-visible {
	background: var(--color-accent-soft);
	border-color: var(--color-primary);
	transform: translateX(4px);
}

.ines-documento__badge {
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 3.5rem;
	padding: var(--space-1);
	background: var(--color-primary);
	color: var(--color-white);
	border-radius: var(--radius-sm);
	font-family: var(--font-display);
	font-size: var(--text-xs);
	font-weight: var(--weight-bold);
	letter-spacing: 0.05em;
}

.ines-documento__cuerpo {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	min-width: 0;
}

.ines-documento__titulo {
	font-family: var(--font-body);
	font-size: var(--text-base);
	font-weight: var(--weight-semibold);
	color: var(--color-primary);
	line-height: var(--leading-snug);
}

.ines-documento__descripcion {
	font-size: var(--text-sm);
	color: var(--color-gray-700);
	line-height: var(--leading-normal);
}

.ines-documento__meta {
	font-size: var(--text-xs);
	color: var(--color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.ines-documento__accion {
	margin-left: auto;
	flex-shrink: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.5rem;
	height: 2.5rem;
	background: var(--color-accent);
	color: var(--color-primary);
	border-radius: var(--radius-pill);
	font-size: var(--text-md);
	font-weight: var(--weight-bold);
	transition: transform var(--transition-base);
}

.ines-documento__link:hover .ines-documento__accion {
	transform: translateY(3px);
}

/* ============================================================ */
/* SHORTCODE [ines_contacto] — formulario de contacto          */
/* ============================================================ */

.ines-contacto {
	max-width: 640px;
}

.ines-contacto__aviso {
	padding: var(--space-2) var(--space-3);
	border-radius: var(--radius-md);
	font-size: var(--text-base);
	font-weight: var(--weight-medium);
	line-height: var(--leading-normal);
	margin: 0 0 var(--space-4) 0;
}

.ines-contacto__aviso--ok {
	background: var(--color-accent-soft);
	color: var(--color-primary);
	border: 1.5px solid var(--color-accent-dark);
}

.ines-contacto__aviso--error {
	background: #FDEDED;
	color: #8A2020;
	border: 1.5px solid #E5A3A3;
}

/* Honeypot: fuera de pantalla (no display:none, algunos bots lo detectan). */
.ines-contacto__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.ines-contacto__form {
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
}

.ines-contacto__campo {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
}

.ines-contacto__label {
	font-family: var(--font-body);
	font-size: var(--text-sm);
	font-weight: var(--weight-semibold);
	color: var(--color-primary);
}

.ines-contacto__input {
	font-family: var(--font-body);
	font-size: var(--text-base);
	color: var(--color-black);
	padding: var(--space-2);
	background: var(--color-white);
	border: 1.5px solid var(--color-gray-300);
	border-radius: var(--radius-sm);
	transition: border-color var(--transition-base), box-shadow var(--transition-base);
}

.ines-contacto__input:focus {
	outline: none;
	border-color: var(--color-primary);
	box-shadow: 0 0 0 3px var(--color-accent-soft);
}

.ines-contacto__input--textarea {
	resize: vertical;
	min-height: 8rem;
}

.ines-contacto__enviar {
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: var(--space-1);
	padding: var(--space-2) var(--space-4);
	background: var(--color-primary);
	color: var(--color-white);
	border: 2px solid var(--color-primary);
	border-radius: var(--radius-pill);
	font-family: var(--font-body);
	font-size: var(--text-base);
	font-weight: var(--weight-semibold);
	cursor: pointer;
	transition: all var(--transition-base);
}

.ines-contacto__enviar:hover,
.ines-contacto__enviar:focus-visible {
	background: transparent;
	color: var(--color-primary);
	transform: translateY(-2px);
}
