/*
Theme Name: UNaF 2026
Theme URI: https://www.unf.edu.ar
Author: Enzo Gabriel Galarza Todos los Derechos Reservados. UNaF 2026 es un tema desarrollado por el equipo de Comunicacion Institucional de la Universidad Nacional de Formosa (UNaF). Prohibida su distribución o uso sin autorización expresa.
Author URI: https://www.unf.edu.ar
Description: Tema institucional moderno para la Universidad Nacional de Formosa (UNaF). Diseno premium, responsive, accesible y optimizado para SEO. Compatible con WordPress 6.x.
Version: 1.1.0
Requires at least: 6.0
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: unaf
*/

/* =============================================================================
   ÍNDICE — Buscar "@seccion-XX" (Ctrl+F) para ir a cada bloque
   =============================================================================
   @seccion-01  Variables de diseño (colores, tipografías, espaciados)
   @seccion-02  Modo claro y modo oscuro
   @seccion-03  Sistema de tarjetas y efectos hover compartidos
   @seccion-04  Base general (párrafos, títulos, contenedor)
   @seccion-05  Iconos SVG
   @seccion-06  Accesibilidad (foco, movimiento reducido)
   @seccion-07  Botones (primario, secundario, contorno, fantasma)
   @seccion-08  Bloques de sección genéricos (.section, .section-head)
   @seccion-09  UNaF TV — videos institucionales
   @seccion-10  Encabezado del sitio (logo, menú, búsqueda, tema)
   @seccion-11  Hero — portada con imagen grande
   @seccion-12  Hero institucional — slider de noticias en Home
   @seccion-13  Accesos rápidos — fondo showcase (eLibro y similares)
   @seccion-14  Estadísticas institucionales
   @seccion-15  Noticias (tarjetas y grilla)
   @seccion-16  Facultades (tarjetas visuales)
   @seccion-17  Facultades en Home (animaciones premium)
   @seccion-18  Carreras y programas académicos
   @seccion-19  Eventos y calendario
   @seccion-20  Vida universitaria (galería campus)
   @seccion-21  Archivo histórico
   @seccion-22  Pie de página (footer)
   @seccion-23  Menú móvil y grillas responsive
   @seccion-24  Páginas internas (hero, migas de pan, búsqueda)
   @seccion-25  Componentes reutilizables (service-card, filtros)
   @seccion-26  Ajustes visuales globales (tipografía, secciones navy)
   @seccion-27  Servicios UNAF en Home (tarjetas SIU, eLibro, etc.)
   @seccion-28  Home — bandas claras institucionales
   @seccion-29  Home — correcciones visuales y header flotante
   @seccion-30  Home — estabilización modo oscuro (noticias, TV)
   @seccion-31  Pulido: hero slider, footer, volver arriba
   @seccion-32  Estabilización final (overflow, navegación desktop)
   @seccion-33  Detalle de noticia (tipografía modo oscuro)
   @seccion-34  Plataforma eLibro (landing biblioteca)
   @seccion-35  Modo claro — footer y header
   @seccion-36  Portal institucional de facultades
   @seccion-37  Página individual de carrera
   ============================================================================= */

/* =============================================================================
   @seccion-01 — VARIABLES DE DISEÑO
   Colores, tipografías, sombras, espaciados y tokens reutilizables.
   ============================================================================= */
:root {
  --color-primary: #001f54;
  --color-primary-light: #003b8e;
  --color-accent: #4da3ff;

  --text-title: #ffffff;
  --text-body: #cfd8e3;
  --text-muted: #9ca3af;

  --background-dark: #06152d;

  /* Backwards-compatible aliases for existing theme components. */
  --color-navy: var(--color-primary);
  --color-navy-dark: var(--background-dark);
  --color-navy-light: var(--color-primary-light);
  --color-green: var(--color-accent);
  --color-green-dark: var(--color-primary-light);
  --color-green-light: var(--color-accent);

  --color-white: #ffffff;
  --color-bg: var(--background-dark);
  --color-bg-soft: #eef4fb;
  --color-bg-muted: #e3ecf7;
  --color-border: #d8e2ef;

  --color-text: #0f1f36;
  --color-text-soft: #334155;
  --color-text-muted: #64748b;

  /* Feedback colors (WCAG AA on white) */
  --color-info: #0a4a8f;
  --color-success: #0a7b39;
  --color-warning: #b45309;
  --color-danger: #b91c1c;

  /* FASE 14.0 — Radius (canonical) */
  --radius-sm: 10px;
  --radius-md: 12px;
  --radius-lg: 24px;
  --radius-pill: 999px;
  --radius-circle: 50%;
  /* Aliases legacy — mantener hasta Fase 14.5 */
  --radius: var(--radius-md);
  --radius-full: var(--radius-pill);

  /* FASE 14.0 — Elevation (3 niveles) */
  --elevation-1: 0 4px 14px rgba(0, 31, 84, 0.08);
  --elevation-2: 0 10px 28px rgba(0, 31, 84, 0.14);
  --elevation-3: 0 20px 40px rgba(0, 31, 84, 0.25);
  /* Aliases legacy sombras */
  --shadow-sm: var(--elevation-2);
  --shadow: var(--elevation-2);
  --shadow-lg: var(--elevation-3);

  --container: 1240px;
  --header-h: 80px;
  --utility-bar-h: 0px;
  --header-logo-h: 34px;
  --header-logo-w: clamp(118px, 10vw, 156px);
  --header-action-h: 40px;
  --header-chrome-h: var(--header-h);
  --z-mobile-backdrop: 2800;
  --z-mobile-overlay: 2850;
  --z-mobile-drawer: 2900;
  --z-mobile-header: 3000;
  --header-inner-gap: clamp(var(--space-3), 1.5vw, var(--space-5));
  --header-brand-nav-gap: var(--space-3);
  --header-actions-gap: var(--space-2);
  --header-nav-gap: var(--space-1);
  --header-border: var(--color-border);
  --surface-search: var(--surface-base);
  --border-search: var(--color-border);
  --text-search: var(--text-on-surface);
  --text-search-placeholder: var(--text-on-surface-muted);
  --shadow-header-scrolled: 0 4px 16px rgba(0, 31, 84, 0.06);
  --shadow-header-chip-hover: none;
  --focus-search: 0 0 0 3px color-mix(in srgb, var(--color-accent) 22%, transparent);

  /* Spacing scale (8-pt) */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --space-10: 40px;
  --space-12: 48px;
  --space-16: 64px;
  --space-20: 80px;
  --space-24: 96px;

  --font-head: "Plus Jakarta Sans", "Segoe UI", system-ui, sans-serif;
  --font-body: "Inter", "Segoe UI", system-ui, sans-serif;

  --motion-ease: cubic-bezier(0.2, 0.7, 0.3, 1);
  --motion-duration: 0.25s;
  --hover-small-y: -1px;
  --hover-medium-y: -2px;
  --hover-large-y: -4px;
  --hover-small-shadow: var(--elevation-1);
  --hover-medium-shadow: var(--elevation-2);
  --hover-large-shadow: var(--elevation-3);
  /* Aliases legacy motion */
  --transition: 0.28s var(--motion-ease);
  --theme-transition: 0.15s ease;
  --transition-hover: var(--motion-duration) var(--motion-ease);

  /* FASE 14.0 — Icon scale */
  --icon-xs: 14px;
  --icon-sm: 16px;
  --icon-md: 20px;
  --icon-lg: 24px;
  --icon-xl: 32px;

  /* FASE 14.0 — Actions (altura / padding compartidos) */
  --action-height: 44px;
  --action-padding-y: var(--space-3);
  --action-padding-x: var(--space-6);
  --action-radius: var(--radius-pill);
  --action-transition: transform var(--motion-duration) var(--motion-ease),
    box-shadow var(--motion-duration) var(--motion-ease),
    background-color var(--motion-duration) var(--motion-ease),
    border-color var(--motion-duration) var(--motion-ease),
    color var(--motion-duration) var(--motion-ease);

  /* FASE 14.0 — Section rhythm (valores actuales preservados) */
  --section-padding-y: 72px;
  --section-padding-y-md: 80px;
  --section-padding-y-sm: 56px;

  /* Accessible focus ring */
  --focus-ring: 3px solid var(--color-accent);
  --focus-offset: 2px;

  /* Surfaces — light mode default */
  --surface-body: #f4f7fb;
  --surface-base: #ffffff;
  --surface-muted: #eef4fb;
  --surface-news: #eef4fb;
  --surface-header: rgba(255, 255, 255, 0.98);
  --surface-overlay: rgba(0, 31, 84, 0.52);
  --heading-color: var(--color-primary);
  --text-on-surface: var(--color-text);
  --text-on-surface-soft: var(--color-text-soft);
  --text-on-surface-muted: var(--color-text-muted);
  --shadow-card: var(--elevation-1);
  --shadow-card-hover: var(--elevation-2);
  --color-bg: var(--surface-body);

  --card-bg: rgba(255, 255, 255, 0.82);
  --card-bg-hover: rgba(255, 255, 255, 0.96);
  --card-border: rgba(0, 31, 84, 0.12);
  --card-border-hover: rgba(77, 163, 255, 0.42);
  --card-shadow: var(--elevation-1), 0 0 0 1px rgba(0, 31, 84, 0.04);
  --card-shadow-hover: var(--elevation-2);
  --card-radius: var(--radius-md);
  --card-padding: var(--space-6);
  --card-hover-y: var(--hover-medium-y);
  --card-hover-shadow: var(--elevation-2);
  --card-icon-bg: rgba(77, 163, 255, 0.1);
  --card-icon-border: rgba(77, 163, 255, 0.24);
  --card-icon-color: var(--color-primary-light);
  --btn-ghost-bg: rgba(255, 255, 255, 0.12);
  --btn-ghost-border: rgba(255, 255, 255, 0.55);
  --btn-ghost-text: var(--color-white);
  --hero-text: var(--color-white);
  --hero-lead: color-mix(in srgb, var(--color-white) 92%, transparent);
  --text-on-chrome: #ffffff;
  --text-on-chrome-soft: rgba(255, 255, 255, 0.88);
  --text-on-chrome-muted: rgba(255, 255, 255, 0.72);
  --link-hover-color: var(--color-green);
}

/* =============================================================================
   @seccion-02 — MODO CLARO Y MODO OSCURO
   ============================================================================= */
[data-theme="dark"] {
  --color-bg: var(--background-dark);
  --color-border: rgba(255, 255, 255, 0.12);
  --color-bg-soft: rgba(255, 255, 255, 0.04);
  --color-text-muted: #9ca3af;
  --surface-body: #06152d;
  --surface-base: #06152d;
  --surface-muted: #071833;
  --surface-news: #071833;
  --surface-header: #06152d;
  --surface-chrome: linear-gradient(180deg, var(--color-primary) 0%, var(--background-dark) 100%);
  --surface-chrome-highlight: radial-gradient(circle at 20% 0%, rgba(77, 163, 255, 0.14), transparent 36%);
  --surface-overlay: rgba(0, 15, 35, 0.72);
  --heading-color: #ffffff;
  --text-on-surface: #ffffff;
  --text-on-surface-soft: #cfd8e3;
  --text-on-surface-muted: #9ca3af;
  --text-title: #ffffff;
  --text-body: #cfd8e3;
  --elevation-1: 0 10px 30px rgba(0, 0, 0, 0.2);
  --elevation-2: 0 16px 40px rgba(0, 0, 0, 0.28);
  --elevation-3: 0 20px 40px rgba(0, 0, 0, 0.35);
  --shadow-card: var(--elevation-1);
  --shadow-card-hover: var(--elevation-2);
  --shadow-sm: var(--elevation-2);
  --shadow: var(--elevation-2);
  --shadow-lg: var(--elevation-3);
  --card-bg: rgba(14, 26, 50, 0.72);
  --card-bg-hover: rgba(18, 32, 58, 0.88);
  --card-border: rgba(74, 144, 226, 0.25);
  --card-border-hover: rgba(90, 170, 255, 0.55);
  --card-shadow: var(--elevation-1), 0 0 0 1px rgba(255, 255, 255, 0.03);
  --card-shadow-hover: var(--elevation-2);
  --shadow-header-scrolled: 0 8px 24px rgba(0, 0, 0, 0.18);
  --shadow-header-chip-hover: none;
  --card-icon-bg: rgba(59, 130, 246, 0.1);
  --card-icon-border: rgba(59, 130, 246, 0.22);
  --card-icon-color: #60a5fa;
  --btn-ghost-bg: rgba(255, 255, 255, 0.12);
  --btn-ghost-border: rgba(255, 255, 255, 0.55);
  --link-hover-color: var(--color-accent);
  --header-border: rgba(255, 255, 255, 0.08);
  --surface-search: var(--surface-muted);
  --border-search: rgba(255, 255, 255, 0.16);
}

/* Tarjetas editoriales e institucionales — modo oscuro global */
[data-theme="dark"] .news-card,
[data-theme="dark"] .prog-card,
[data-theme="dark"] .event-item,
[data-theme="dark"] .calendar-card,
[data-theme="dark"] .service-card,
[data-theme="dark"] .campus-card,
[data-theme="dark"] .inst-card {
  background: var(--card-bg);
  border-color: var(--card-border);
}

[data-theme="dark"] .news-card .date,
[data-theme="dark"] .news-card p,
[data-theme="dark"] .prog-card .meta,
[data-theme="dark"] .prog-card .meta span,
[data-theme="dark"] .event-info .meta,
[data-theme="dark"] .event-info .meta span,
[data-theme="dark"] .calendar-list li,
[data-theme="dark"] .calendar-list .cal-date,
[data-theme="dark"] .service-card p,
[data-theme="dark"] .campus-card .meta,
[data-theme="dark"] .inst-card p {
  color: var(--text-on-surface-soft);
}

[data-theme="dark"] .service-card .ico {
  background: var(--card-icon-bg);
  color: var(--card-icon-color);
  border: 1px solid var(--card-icon-border);
}

[data-theme="dark"] .service-card:hover .ico {
  background: var(--color-accent);
  color: var(--background-dark);
}

[data-theme="dark"] .campus-card .body,
[data-theme="dark"] .campus-card h3 {
  color: var(--heading-color);
}

[data-theme="dark"] .calendar-list li {
  border-bottom-color: var(--card-border);
  color: var(--text-on-surface-soft);
}

[data-theme="light"] {
  --text-title: var(--color-primary);
  --text-body: var(--color-text-soft);
  --text-on-surface: var(--color-text);
  --text-on-surface-soft: var(--color-text-soft);
  --text-on-surface-muted: var(--color-text-muted);
  --heading-color: var(--color-primary);
}

/* =============================================================================
   @seccion-03 — SISTEMA DE TARJETAS Y HOVER COMPARTIDOS
   ============================================================================= */

/* Icon scale — fuente única para SVG */
.unaf-icon {
  width: var(--icon-lg);
  height: var(--icon-lg);
  flex-shrink: 0;
}

/* Card families — tokens compartidos (sin fusionar markup) */
.news-card,
.prog-card,
.event-item,
.service-card,
.campus-card,
.inst-card,
.unaf-services-card,
.fac-career-card,
.carrera-block,
.carrera-sidebar__block,
.fac-portal-autoridad,
.fac-portal-info-card,
.elibro-resource-card {
  border-radius: var(--card-radius);
}

.news-card,
.prog-card,
.event-item,
.service-card,
.campus-card,
.inst-card,
.calendar-card {
  box-shadow: var(--elevation-1);
  transition: transform var(--motion-duration) var(--motion-ease),
    box-shadow var(--motion-duration) var(--motion-ease),
    border-color var(--motion-duration) var(--motion-ease);
}

.fac-career-card,
.carrera-block,
.carrera-sidebar__block,
.fac-portal-autoridad,
.fac-portal-info-card {
  box-shadow: var(--card-shadow);
  transition: transform var(--motion-duration) var(--motion-ease),
    box-shadow var(--motion-duration) var(--motion-ease),
    border-color var(--motion-duration) var(--motion-ease),
    background-color var(--theme-transition);
}

.unaf-services-card {
  box-shadow: var(--shadow-card);
  transition: transform var(--motion-duration) var(--motion-ease),
    box-shadow var(--motion-duration) var(--motion-ease),
    border-color var(--motion-duration) var(--motion-ease),
    background-color var(--motion-duration) var(--motion-ease);
}

.news-card:hover,
.service-card:hover,
.campus-card:hover,
.inst-card:hover,
.prog-card:hover,
.unaf-services-card:hover,
.fac-career-card:hover,
a.fac-portal-info-card:hover {
  transform: translateY(var(--card-hover-y));
  box-shadow: var(--card-hover-shadow);
}

/* Media / showcase cards */
.fac-card,
.section-facultades-home .fac-card {
  box-shadow: var(--elevation-1);
}

.fac-card:hover,
.section-facultades-home .fac-card:hover {
  box-shadow: var(--elevation-3);
}

/* Access — showcase glass (eLibro quick-access bg) */
.elibro-access-card {
  box-shadow: var(--elevation-2);
}

.elibro-access-card:hover {
  box-shadow: var(--elevation-3);
}

/* Hover institucional — 3 niveles */
.hover-small,
.header-chip-btn:hover,
.theme-toggle:hover {
  transform: translateY(var(--hover-small-y));
}

.hover-medium,
.btn:hover,
.filter-btn:hover,
.read-more:hover,
.prog-card:hover,
.event-item:hover {
  transform: translateY(var(--hover-medium-y));
}

.hover-large,
.fac-card:hover {
  transform: translateY(var(--hover-large-y));
}

/*
  FASE 14.0 — T8 Auditoría de familias duplicadas (NO fusionar aún)
  Editorial:   .news-card, .event-item, .calendar-card
  Institutional: .inst-card, .service-card, .campus-card
  Academic:    .prog-card, .fac-career-card, .carrera-block, .carrera-sidebar__block
  Portal:      .fac-card, .fac-portal-autoridad, .fac-portal-info-card
  Media:       .unaf-tv embed cards, .elibro-resource-card
  Access:      .unaf-services-card, .elibro-access-card
  Candidatas Fase 14.2:
  · service-card + campus-card + inst-card → Institutional Card base
  · prog-card + fac-career-card → Academic Card base
  · unaf-services-card + elibro-access-card → Access Card base
  · news-card + event-item → Editorial Card base
*/

/* =============================================================================
   @seccion-04 — BASE GENERAL
   ============================================================================= */
*,
*::before,
*::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-h);
}

body {
  margin: 0;
  font-family: var(--font-body);
  color: var(--text-on-surface);
  background: var(--surface-body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  border-top: none;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-head);
  color: var(--heading-color);
  line-height: 1.18;
  margin: 0 0 0.5em;
  font-weight: 700;
  letter-spacing: -0.01em;
}

a { color: var(--color-navy); text-decoration: none; transition: color var(--transition); }
a:hover { color: var(--color-green); }

img { max-width: 100%; height: auto; display: block; }

/* =============================================================================
   @seccion-05 — ICONOS SVG
   ============================================================================= */
.btn svg { width: var(--icon-sm); height: var(--icon-sm); }

ul { margin: 0; padding: 0; list-style: none; }

p { margin: 0 0 1rem; color: var(--text-on-surface-soft); }

.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 20px;
}

.sr-only,
.unaf-visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

.skip-link {
  position: absolute; left: -999px; top: 0; z-index: 9999;
  background: var(--color-navy); color: #fff; padding: 12px 18px; border-radius: 0 0 8px 0;
}
.skip-link:focus { left: 0; color: #fff; }

/* =============================================================================
   @seccion-06 — ACCESIBILIDAD
   ============================================================================= */
:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
  border-radius: 2px;
}
.btn:focus-visible,
.filter-btn:focus-visible,
.header-chip-btn:focus-visible,
.theme-toggle:focus-visible,
.back-to-top:focus-visible { outline: var(--focus-ring); outline-offset: 3px; }
.fac-card:focus-visible,
.news-card a:focus-visible { outline: var(--focus-ring); outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* =============================================================================
   @seccion-07 — BOTONES
   ============================================================================= */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: var(--action-height);
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.95rem;
  padding: var(--action-padding-y) var(--action-padding-x);
  border-radius: var(--action-radius);
  border: 2px solid transparent;
  cursor: pointer;
  transition: var(--action-transition);
  text-align: center;
  line-height: 1.2;
}

.btn:focus-visible {
  outline: var(--focus-ring);
  outline-offset: 3px;
}

.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: 0.62;
  cursor: not-allowed;
  pointer-events: none;
  transform: none;
  box-shadow: none;
}

.btn-primary {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-primary);
}

.btn-primary:hover {
  background: var(--color-white);
  border-color: var(--color-white);
  color: var(--color-primary);
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.btn-secondary {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-white);
}

.btn-secondary:hover {
  background: var(--color-navy-dark);
  border-color: var(--color-navy-dark);
  color: var(--color-white);
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.btn-outline {
  background: transparent;
  color: var(--color-primary);
  border-color: var(--color-primary);
}

.btn-outline:hover {
  background: var(--color-primary);
  color: var(--color-white);
  border-color: var(--color-primary);
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.btn-ghost-light {
  background: var(--btn-ghost-bg);
  color: var(--btn-ghost-text);
  border-color: var(--btn-ghost-border);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

.btn-ghost-light:hover {
  background: var(--color-white);
  color: var(--color-primary);
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.btn-sm {
  min-height: 38px;
  padding: var(--space-2) calc(var(--space-4) + 2px);
  font-size: 0.85rem;
}

.btn-lg {
  padding: calc(var(--space-3) + 3px) calc(var(--space-6) + 6px);
  font-size: 1.02rem;
}

/* =============================================================================
   @seccion-08 — BLOQUES DE SECCIÓN GENÉRICOS
   ============================================================================= */
.section { padding: var(--section-padding-y) 0; background: var(--surface-base); }
.section-soft { background: var(--color-bg-soft); }
.section-navy { background: var(--color-navy); }
.section-head { text-align: center; max-width: 720px; margin: 0 auto 20px; }
.section-head .eyebrow {
  display: inline-block; font-family: var(--font-head); font-weight: 700;
  font-size: 0.8rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--color-green); margin-bottom: 10px;
}
.section-head h2 {
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  margin: 0;
}
.section-head p { font-size: 1.05rem; color: var(--text-on-surface-soft); margin: 9px 0 0; }
.section-navy .section-head h2,
.section-navy .section-head .eyebrow { color: var(--text-on-chrome); }
.section-navy .section-head p { color: var(--text-on-chrome-muted); }

/* =============================================================================
   @seccion-09 — UNaF TV (videos institucionales)
   ============================================================================= */
.unaf-tv .section-head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 20px;
  width: 100%;
}
.unaf-tv .section-head h2 {
  color: var(--text-title);
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  font-weight: 700;
  line-height: 1.18;
  letter-spacing: -0.01em;
  margin: 0;
}
.unaf-tv .tv-grid {
  display: flex;
  flex-direction: column;
  gap: 30px;
  width: 100%;
}
.unaf-tv .tv-video--featured { width: 100%; }
.unaf-tv .tv-secondary {
  display: grid;
  grid-template-columns: 1fr;
  gap: 26px;
  width: 100%;
}
.unaf-tv .tv-video {
  display: block;
  margin: 0;
  width: 100%;
  min-width: 0;
}
.unaf-tv .tv-embed {
  position: relative;
  aspect-ratio: 16 / 9;
  width: 100%;
  border-radius: var(--radius);
  overflow: hidden;
  background: #000;
  box-shadow: var(--shadow-lg);
  transition: transform var(--transition), box-shadow var(--transition);
}
.unaf-tv .tv-video--featured .tv-embed {
  box-shadow: var(--elevation-3);
}
.unaf-tv .tv-video:hover .tv-embed {
  transform: translateY(var(--hover-large-y));
  box-shadow: var(--elevation-3);
}
.unaf-tv .tv-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.unaf-tv .tv-meta { margin-top: 14px; }
.unaf-tv .tv-title {
  color: var(--heading-color);
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 1.1rem;
  margin: 0 0 4px;
}
.unaf-tv .tv-desc {
  color: var(--text-on-surface-soft);
  font-size: 0.9rem;
  margin: 0;
}
.unaf-tv .tv-video--featured .tv-title { font-size: clamp(1.4rem, 3vw, 1.9rem); }
.unaf-tv .tv-video--featured .tv-desc { font-size: 1.02rem; max-width: 760px; }
.unaf-tv .offer-cta { margin-top: 25px; }

@media (min-width: 700px) {
  .unaf-tv .tv-secondary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* =============================================================================
   @seccion-10 — ENCABEZADO DEL SITIO
   Logo, menú principal, búsqueda, cambio de tema y menú hamburguesa.
   ============================================================================= */
.site-header-layout {
  width: 100%;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: var(--surface-header);
  border-bottom: 1px solid var(--header-border);
  box-shadow: none;
  transition:
    background 0.32s var(--motion-ease),
    backdrop-filter 0.32s var(--motion-ease),
    box-shadow 0.32s var(--motion-ease),
    border-color 0.32s var(--motion-ease);
}

.site-header-layout.is-scrolled .site-header,
.site-header.is-scrolled {
  background: color-mix(in srgb, var(--surface-header) 97%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow: var(--shadow-header-scrolled);
  border-bottom-color: var(--header-border);
}

[data-theme="dark"] .site-header {
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

[data-theme="dark"] .site-header-layout.is-scrolled .site-header,
[data-theme="dark"] .site-header.is-scrolled {
  background: color-mix(in srgb, var(--surface-header) 94%, transparent);
  box-shadow: none;
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

[data-theme="dark"] .site-brand:hover,
[data-theme="dark"] .site-brand:focus-visible {
  background: rgba(255, 255, 255, 0.06);
}

[data-theme="dark"] body.home .site-header-layout .site-header,
[data-theme="dark"] body.home .site-header-layout.is-scrolled .site-header,
[data-theme="dark"] body.home .site-header,
[data-theme="dark"] body.home .site-header.is-scrolled {
  background: var(--surface-header);
  box-shadow: none;
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--header-inner-gap);
  min-height: var(--header-h);
}

.site-brand {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  min-width: var(--header-logo-w);
  width: var(--header-logo-w);
  max-width: var(--header-logo-w);
  margin-right: var(--header-brand-nav-gap);
  padding: var(--space-1) var(--space-2);
  margin-left: calc(var(--space-2) * -1);
  border-radius: var(--radius-sm);
  text-decoration: none;
  color: inherit;
  transition: background var(--transition-hover);
}

.site-brand:hover,
.site-brand:focus-visible {
  background: color-mix(in srgb, var(--color-accent) 5%, transparent);
  text-decoration: none;
}

.site-brand:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

.site-brand-logos {
  position: relative;
  display: block;
  flex-shrink: 0;
  width: var(--header-logo-w);
  min-width: var(--header-logo-w);
  height: var(--header-logo-h);
  line-height: 0;
}

.site-brand-logos .site-logo {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: contain;
  object-position: left center;
}

.site-brand-logos .site-logo--light-mode {
  display: block;
}

.site-brand-logos .site-logo--dark-mode {
  display: none;
}

html[data-theme="dark"] .site-brand-logos .site-logo--light-mode,
[data-theme="dark"] .site-brand-logos .site-logo--light-mode {
  display: none;
}

html[data-theme="dark"] .site-brand-logos .site-logo--dark-mode,
[data-theme="dark"] .site-brand-logos .site-logo--dark-mode {
  display: block;
}

.primary-nav {
  display: flex;
  align-items: center;
  height: 100%;
  min-width: 0;
}

.primary-nav ul {
  display: flex;
  align-items: center;
  gap: var(--header-nav-gap);
}

.primary-nav a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--header-action-h);
  font-family: var(--font-head);
  font-weight: 600;
  font-size: clamp(0.8125rem, 0.16vw + 0.78rem, 0.9rem);
  letter-spacing: 0.012em;
  line-height: 1.25;
  color: var(--color-text-soft);
  padding: 0 clamp(7px, 0.5vw, 11px);
  border-radius: var(--radius-sm);
  transition: color var(--transition-hover), background var(--transition-hover);
}

.primary-nav a:hover,
.primary-nav a:focus-visible {
  color: var(--color-primary);
  background: color-mix(in srgb, var(--color-accent) 6%, transparent);
}

.primary-nav .current-menu-item > a,
.primary-nav [aria-current="page"] {
  color: var(--color-primary);
  font-weight: 700;
  background: color-mix(in srgb, var(--color-accent) 10%, transparent);
}

[data-theme="dark"] .primary-nav a:hover,
[data-theme="dark"] .primary-nav a:focus-visible {
  background: rgba(255, 255, 255, 0.06);
}

[data-theme="dark"] .primary-nav .current-menu-item > a,
[data-theme="dark"] .primary-nav [aria-current="page"] {
  background: rgba(255, 255, 255, 0.08);
}

/* Submenús — base (estructura WP: .menu-item-has-children > .sub-menu) */
.primary-nav .nav-item__row {
  display: flex;
  align-items: stretch;
  width: 100%;
  min-width: 0;
}

.primary-nav .nav-item__row > a {
  flex: 1;
  min-width: 0;
}

.primary-nav .nav-sub-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  font-family: var(--font-head);
  line-height: 1;
  transition: background var(--transition-hover), color var(--transition-hover), transform var(--transition-hover);
}

.primary-nav .nav-sub-toggle:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

.primary-nav .nav-sub-toggle__icon {
  display: block;
  font-size: 0.85rem;
  transition: transform 0.22s ease;
}

.primary-nav .nav-item--has-sub.is-sub-open .nav-sub-toggle__icon {
  transform: rotate(180deg);
}

.primary-nav .sub-menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

.primary-nav .sub-menu a::after {
  display: none;
}

.header-actions {
  display: flex;
  align-items: center;
  gap: var(--header-actions-gap);
  flex-shrink: 0;
  height: 100%;
  align-self: center;
}

.theme-toggle {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: var(--header-action-h);
  min-width: var(--header-action-h);
  height: var(--header-action-h);
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--surface-base);
  color: var(--color-primary);
  font-family: var(--font-head);
  font-size: 0.98rem;
  line-height: 1;
  cursor: pointer;
  transition: background var(--transition-hover), border-color var(--transition-hover), box-shadow var(--transition-hover);
}

.theme-toggle:hover,
.theme-toggle:focus-visible {
  border-color: color-mix(in srgb, var(--color-accent) 35%, transparent);
  background: color-mix(in srgb, var(--color-accent) 6%, transparent);
  box-shadow: none;
  transform: none;
}

.theme-toggle__icon {
  display: none;
  align-items: center;
  justify-content: center;
  line-height: 1;
}

.theme-toggle__icon--light { display: inline-flex; }
[data-theme="dark"] .theme-toggle__icon--light { display: none; }
[data-theme="dark"] .theme-toggle__icon--dark { display: inline-flex; }

.header-chip-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: var(--header-action-h);
  height: var(--header-action-h);
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--surface-base);
  color: var(--color-primary);
  cursor: pointer;
  transition: background var(--transition-hover), border-color var(--transition-hover), color var(--transition-hover);
}

.header-chip-btn:hover,
.header-chip-btn:focus-visible {
  border-color: color-mix(in srgb, var(--color-accent) 35%, transparent);
  background: color-mix(in srgb, var(--color-accent) 6%, transparent);
  color: var(--color-primary);
  box-shadow: none;
  transform: none;
}

.header-chip-btn svg {
  width: var(--icon-sm);
  height: var(--icon-sm);
}

.site-header .theme-toggle:hover,
.site-header .header-chip-btn:hover {
  transform: none;
}

.search-dropdown { position: relative; }

.menu-toggle { display: none; }

@media (min-width: 992px) {
  .site-header-layout {
    position: sticky;
    top: 0;
    z-index: 1000;
    width: 100%;
    background: var(--surface-header);
    border-bottom: 1px solid var(--header-border);
    box-sizing: border-box;
    transition:
      background 0.32s var(--motion-ease),
      backdrop-filter 0.32s var(--motion-ease),
      box-shadow 0.32s var(--motion-ease),
      border-color 0.32s var(--motion-ease);
  }

  .site-header-layout.is-scrolled {
    background: color-mix(in srgb, var(--surface-header) 97%, transparent);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: var(--shadow-header-scrolled);
    border-bottom-color: var(--header-border);
  }

  [data-theme="dark"] .site-header-layout {
    border-bottom-color: rgba(255, 255, 255, 0.1);
  }

  [data-theme="dark"] .site-header-layout.is-scrolled {
    background: color-mix(in srgb, var(--surface-header) 94%, transparent);
    box-shadow: none;
    border-bottom-color: rgba(255, 255, 255, 0.1);
  }

  .site-header {
    position: static;
    z-index: auto;
    background: transparent;
    border-bottom: 0;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .site-header.is-scrolled,
  .site-header-layout.is-scrolled .site-header {
    background: transparent;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .site-header .container {
    max-width: var(--container);
    margin: 0 auto;
    padding: 0 20px;
  }

  .header-inner {
    justify-content: space-between;
  }

  .site-brand {
    margin-right: 0;
  }

  .primary-nav {
    position: fixed;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1001;
    width: max-content;
    max-width: min(920px, calc(100vw - 360px));
    height: var(--header-h);
    padding: 0;
    margin: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    visibility: visible;
    opacity: 1;
    pointer-events: none;
    overflow: visible;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .primary-nav ul,
  .primary-nav .nav-menu {
    pointer-events: auto;
  }

  .primary-nav ul {
    gap: clamp(0px, 0.65vw, var(--space-2));
  }

  .primary-nav .nav-menu > li.nav-item--has-sub,
  .primary-nav .nav-menu > li.menu-item-has-children {
    position: relative;
  }

  .primary-nav .nav-item__row {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    width: auto;
  }

  .primary-nav .nav-item__row > a {
    flex: 0 1 auto;
  }

  .primary-nav .nav-sub-toggle {
    width: 14px;
    min-width: 14px;
    height: var(--header-action-h);
    pointer-events: none;
    color: var(--color-text-soft);
  }

  .primary-nav .menu-item-has-children:hover > .nav-item__row > .nav-sub-toggle,
  .primary-nav .menu-item-has-children:focus-within > .nav-item__row > .nav-sub-toggle {
    color: var(--color-primary);
  }

  [data-theme="dark"] .primary-nav .nav-sub-toggle {
    color: var(--text-on-surface-soft);
  }

  [data-theme="dark"] .primary-nav .menu-item-has-children:hover > .nav-item__row > .nav-sub-toggle,
  [data-theme="dark"] .primary-nav .menu-item-has-children:focus-within > .nav-item__row > .nav-sub-toggle {
    color: #ffffff;
  }

  .primary-nav .sub-menu {
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%);
    min-width: min(240px, calc(100vw - var(--space-8)));
    padding: var(--space-2);
    background: var(--surface-base);
    border: 1px solid var(--card-border);
    border-radius: var(--radius-md);
    box-shadow: var(--elevation-2);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 1102;
    transition: opacity 0.2s ease, visibility 0.2s ease;
  }

  .primary-nav .sub-menu::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 100%;
    height: 10px;
  }

  .primary-nav .menu-item-has-children:hover > .sub-menu,
  .primary-nav .menu-item-has-children:focus-within > .sub-menu {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(-50%);
  }

  .primary-nav .sub-menu li {
    border: 0;
  }

  .primary-nav .sub-menu a {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    box-sizing: border-box;
    padding: 10px 14px;
    font-size: 0.875rem;
    font-weight: 600;
    white-space: nowrap;
    border-radius: var(--radius-sm);
  }

  .primary-nav .sub-menu a:hover,
  .primary-nav .sub-menu a:focus-visible {
    background: color-mix(in srgb, var(--color-accent) 8%, transparent);
  }

  [data-theme="dark"] .primary-nav .sub-menu {
    background: var(--surface-muted);
    border-color: rgba(255, 255, 255, 0.12);
    box-shadow: var(--elevation-2);
  }

  [data-theme="dark"] .primary-nav .sub-menu a {
    color: var(--text-on-surface);
  }

  [data-theme="dark"] .primary-nav .sub-menu a:hover,
  [data-theme="dark"] .primary-nav .sub-menu a:focus-visible {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.08);
  }
}

@media (min-width: 1280px) {
  .primary-nav ul {
    gap: var(--header-nav-gap);
  }
}

@media (min-width: 1440px) {
  .header-inner {
    gap: var(--space-5);
  }
}

/* Search dropdown */
.search-panel {
  position: absolute;
  top: calc(100% + var(--space-2));
  right: 0;
  width: min(400px, calc(100vw - var(--space-8)));
  max-width: 400px;
  padding: var(--space-3);
  background: var(--surface-search);
  border: 1px solid var(--border-search);
  border-radius: var(--radius);
  box-shadow: var(--shadow-lg);
  z-index: 1300;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-6px); /* LEGACY — animación panel búsqueda, no hover card */
  transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
}

.search-panel.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

.search-panel .unaf-search-form {
  display: flex;
  gap: var(--space-2);
  margin: 0;
}

.search-panel input[type="search"] {
  flex: 1;
  min-width: 0;
  padding: 10px 14px;
  border: 1px solid var(--border-search);
  border-radius: var(--radius-full);
  font-size: 0.95rem;
  font-family: var(--font-body);
  background: var(--surface-base);
  color: var(--text-search);
  transition: border-color var(--transition-hover), box-shadow var(--transition-hover);
}

.search-panel input[type="search"]::placeholder {
  color: var(--text-search-placeholder);
  opacity: 1;
}

.search-panel input[type="search"]:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: var(--focus-search);
}

.search-panel input[type="search"]:focus-visible {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: var(--focus-search);
}

.search-panel .btn {
  flex-shrink: 0;
  padding: 10px 14px;
}

.search-panel .btn span { display: none; }

[data-theme="dark"] .search-panel {
  background: var(--surface-search);
  border-color: var(--border-search);
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.22);
}

[data-theme="dark"] .search-panel input[type="search"] {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.14);
  color: var(--text-on-surface);
}

.search-backdrop { display: none; }

@media (max-width: 991px) {
  :root {
    --header-h: 64px;
    --header-logo-h: 40px;
    --header-logo-w: 148px;
    --header-action-h: 40px;
    --header-brand-nav-gap: var(--space-2);
    --header-inner-gap: var(--space-2);
    --header-actions-gap: var(--space-2);
  }

  .site-header .container {
    padding-left: var(--space-3);
    padding-right: var(--space-3);
  }

  .header-inner {
    gap: var(--space-2);
    min-width: 0;
  }

  .site-brand {
    min-width: var(--header-logo-w);
    width: var(--header-logo-w);
    max-width: var(--header-logo-w);
    margin-right: var(--space-2);
    padding: var(--space-1);
    margin-left: 0;
  }

  .site-brand-logos {
    width: var(--header-logo-w);
    min-width: var(--header-logo-w);
    height: var(--header-logo-h);
  }

  .header-actions {
    gap: var(--space-2);
    flex-shrink: 0;
  }
}

@media (max-width: 430px) {
  :root {
    --header-logo-w: 132px;
    --header-logo-h: 36px;
    --header-action-h: 38px;
    --header-actions-gap: var(--space-2);
  }

  .site-header .container {
    padding-left: var(--space-2);
    padding-right: var(--space-2);
  }
}

/* =============================================================================
   @seccion-11 — HERO (portada con imagen grande)
   ============================================================================= */
.hero {
  position: relative;
  display: flex;
  align-items: center;
  color: #fff;
  overflow: hidden;
  min-height: clamp(360px, 42vw, 680px);
  max-height: 85vh;
  background-color: var(--color-navy-dark);
}
.hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  background-color: var(--color-navy-dark);
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}
.hero-bg-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
}
.hero-overlay {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(108deg, rgba(0,18,40,0.82) 0%, rgba(0,33,70,0.72) 48%, rgba(0,43,92,0.44) 100%);
}
.hero .container { position: relative; z-index: 2; }
.hero-content { max-width: 720px; padding: clamp(48px, 8vw, 72px) 0; }
.hero h1 {
  color: #fff; font-size: clamp(2rem, 4.8vw, 3.45rem); line-height: 1.06;
  letter-spacing: -0.03em; margin-bottom: 24px; font-weight: 800;
  text-wrap: balance;
}
.hero-title-line { display: block; }
.hero-title-line + .hero-title-line { margin-top: 0.04em; }
.hero .lead {
  font-size: clamp(1.02rem, 1.9vw, 1.2rem); color: rgba(255,255,255,0.88);
  max-width: 520px; margin-bottom: 30px; line-height: 1.65; letter-spacing: 0.015em;
}
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; }

/* Dynamic news hero slider */
.hero--news { display: block; position: relative; }
.hero-slides {
  position: relative;
  min-height: clamp(360px, 42vw, 680px);
}
.hero-slide {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  opacity: 0;
  visibility: hidden;
  transform: translateX(1.5%);
  transition: opacity 0.5s ease, transform 0.5s ease, visibility 0.5s ease;
  pointer-events: none;
  z-index: 0;
}
.hero-slide.is-active {
  opacity: 1;
  visibility: visible;
  transform: translateX(0);
  pointer-events: auto;
  z-index: 1;
}
.hero--news .hero-slides { min-height: clamp(360px, 42vw, 680px); }
.hero-eyebrow {
  display: inline-block;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 10px;
}
.hero-headline {
  color: #fff;
  font-size: clamp(1.75rem, 4.2vw, 3.1rem);
  line-height: 1.08;
  letter-spacing: -0.03em;
  margin: 0 0 16px;
  font-weight: 800;
  text-wrap: balance;
}
.hero-excerpt {
  font-size: clamp(1rem, 1.8vw, 1.15rem);
  color: rgba(255, 255, 255, 0.92);
  max-width: 520px;
  margin: 0 0 26px;
  line-height: 1.6;
}
.hero .lead {
  color: rgba(255, 255, 255, 0.9);
}
.hero-controls {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 22px;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 0 20px;
  pointer-events: none;
}
.hero-nav,
.hero-dots,
.hero-dot { pointer-events: auto; }
.hero-nav {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: rgba(0, 30, 74, 0.55);
  color: #fff;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background 0.22s ease, border-color 0.22s ease, transform 0.22s ease;
}
.hero-nav:hover,
.hero-nav:focus-visible {
  background: rgba(11, 111, 184, 0.85);
  border-color: var(--color-green-light);
}
.hero-nav svg { width: var(--icon-sm); height: var(--icon-sm); }
.hero-nav-icon--prev { display: inline-flex; transform: rotate(180deg); }
.hero-dots { display: flex; align-items: center; gap: 8px; }
.hero-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 0;
  padding: 0;
  background: rgba(255, 255, 255, 0.4);
  cursor: pointer;
  transition: transform 0.22s ease, background 0.22s ease;
}
.hero-dot.is-active {
  background: var(--color-green-light);
  transform: scale(1.15);
}
.hero-dot:hover,
.hero-dot:focus-visible { background: #fff; }

@media (prefers-reduced-motion: reduce) {
  .hero-slide { transition: none; }
}

@media (max-width: 768px) {
  .hero,
  .hero--news .hero-slides {
    min-height: clamp(300px, 72vw, 520px);
    max-height: none;
  }
  .hero--news .hero-slides {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
  }
  .hero--news .hero-slide.is-active {
    position: relative;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: 0;
  }
  .hero--news .hero-slide:not(.is-active) {
    position: absolute;
  }
  .hero--news .hero-content { padding: 40px 0 0; }
  .hero--news .hero-actions { margin-bottom: 16px; }
  .hero--news .hero-controls {
    position: static;
    margin-top: 8px;
    margin-bottom: 16px;
    padding: 0 20px;
    flex-shrink: 0;
  }
  .hero--static .hero-content { padding: 40px 0; }
  .hero-headline {
    font-size: clamp(1.53rem, 3.67vw, 2.71rem);
    line-height: 1.2;
    text-wrap: unset;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
  }
  .hero--static h1 {
    font-size: clamp(1.75rem, 4.2vw, 3.02rem);
    line-height: 1.2;
    text-wrap: unset;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    overflow: hidden;
  }
  .hero-nav { width: 36px; height: 36px; }
  .hero-dot { width: 8px; height: 8px; }
}

/* =============================================================================
   @seccion-12 — HERO INSTITUCIONAL (slider de noticias en Home)
   ============================================================================= */
.hero-institucional {
  position: relative;
  display: flex;
  align-items: stretch;
  min-height: 100vh;
  min-height: 100dvh;
  color: #fff;
  overflow: hidden;
  background-color: var(--color-navy-dark);
  background-image: linear-gradient(135deg, var(--color-navy-dark) 0%, var(--color-navy) 55%, #003d7a 100%);
}
.hero-institucional__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.hero-institucional__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.9s ease;
  pointer-events: none;
  overflow: hidden;
}
.hero-institucional__slide.is-active {
  opacity: 1;
  pointer-events: auto;
  z-index: 1;
}
.hero-institucional__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
  filter: saturate(0.92) brightness(0.9);
}
.hero-institucional__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(
      112deg,
      rgba(6, 21, 45, 0.82) 0%,
      rgba(0, 31, 84, 0.68) 26%,
      rgba(0, 31, 84, 0.42) 46%,
      rgba(0, 31, 84, 0.18) 64%,
      rgba(0, 0, 0, 0.12) 100%
    );
}
.hero-institucional__overlay::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(
      ellipse 88% 92% at 14% 46%,
      rgba(0, 59, 142, 0.38) 0%,
      rgba(0, 31, 84, 0.12) 42%,
      transparent 68%
    );
}
.hero-institucional__overlay::after {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.28);
}
.hero-institucional__inner {
  position: relative;
  z-index: 2;
  width: 100%;
  display: flex;
  align-items: center;
  min-height: inherit;
  padding:
    calc(var(--utility-bar-h) + var(--header-h) + clamp(20px, 5vh, 56px))
    clamp(20px, 5vw, 80px)
    clamp(48px, 8vh, 96px);
}
.hero-institucional__content {
  max-width: 720px;
  text-align: left;
}
.hero-institucional__title {
  margin: 0 0 clamp(12px, 1.6vh, 18px);
  color: #fff;
  font-family: var(--font-head);
  font-size: clamp(1.95rem, 4.2vw, 3.15rem);
  font-weight: 800;
  line-height: 1.12;
  letter-spacing: 0.015em;
  text-shadow:
    0 2px 28px rgba(0, 0, 0, 0.55),
    0 1px 0 rgba(0, 31, 84, 0.35);
}
.hero-institucional__lead {
  margin: 0;
  max-width: 720px;
  color: rgba(255, 255, 255, 0.94);
  font-size: clamp(1rem, 1.85vw, 1.28rem);
  line-height: 1.55;
  letter-spacing: 0.01em;
  text-shadow:
    0 1px 16px rgba(0, 0, 0, 0.48),
    0 1px 0 rgba(0, 31, 84, 0.2);
}
.hero-institucional__nav {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
}
.hero-institucional__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.32);
  background: rgba(6, 21, 45, 0.38);
  color: #fff;
  display: grid;
  place-items: center;
  cursor: pointer;
  pointer-events: auto;
  transition: background 0.22s ease, border-color 0.22s ease, transform 0.22s ease, opacity 0.22s ease;
}
.hero-institucional__arrow--prev {
  left: clamp(16px, 3vw, 32px);
}
.hero-institucional__arrow--next {
  right: clamp(16px, 3vw, 32px);
}
.hero-institucional__arrow:hover,
.hero-institucional__arrow:focus-visible {
  background: rgba(0, 31, 84, 0.62);
  border-color: rgba(255, 255, 255, 0.55);
}
.hero-institucional__arrow svg {
  width: var(--icon-sm); height: var(--icon-sm);
}
.hero-institucional__arrow-icon--prev {
  display: inline-flex;
  transform: rotate(180deg);
}
.hero-institucional:not(.hero-institucional--slider) .hero-institucional__nav {
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
}
.hero-institucional:not(.hero-institucional--slider) .hero-institucional__arrow {
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .hero-institucional__slide {
    transition: none;
  }

  .hero-institucional__img {
    filter: saturate(0.92) brightness(0.9);
  }
}

@media (min-width: 992px) {
  .hero-institucional__inner {
    align-items: flex-start;
    padding-top: calc(var(--utility-bar-h) + var(--header-h) + clamp(52px, calc(8vh + 20px), 92px));
    padding-right: clamp(20px, 5vw, 80px);
    padding-bottom: clamp(48px, 8vh, 96px);
    padding-left: clamp(112px, 9vw, 160px);
  }

  .hero-institucional__content {
    max-width: min(1040px, calc(100vw - clamp(180px, 16vw, 260px)));
    transform: translate(
      clamp(5px, calc(4vw - 25px), 25px),
      clamp(135px, calc(110px + 5vh), 165px)
    );
  }

  .hero-institucional__title {
    max-width: none;
    width: max-content;
    overflow: visible;
    font-size: clamp(1.95rem, 2.65vw, 2.95rem);
    white-space: nowrap;
    text-wrap: unset;
  }
}

@media (min-width: 769px) and (max-width: 991px) {
  .hero-institucional__title {
    text-wrap: balance;
  }
}

@media (max-width: 768px) {
  .hero-institucional__inner {
    padding-top: calc(var(--utility-bar-h) + var(--header-h) + 16px);
    padding-bottom: clamp(40px, 10vh, 72px);
  }
  .hero-institucional__content {
    max-width: 100%;
  }
  .hero-institucional__title {
    font-size: clamp(1.65rem, 7.2vw, 2.15rem);
    letter-spacing: 0.012em;
    white-space: normal;
    text-wrap: balance;
  }
  .hero-institucional__lead {
    font-size: clamp(0.98rem, 4.2vw, 1.12rem);
    line-height: 1.5;
  }
  .hero-institucional__arrow {
    width: 40px;
    height: 40px;
  }
}

@media (max-width: 767px) {
  .hero-institucional--slider {
    --hero-arrow-size: 40px;
    --hero-arrow-inset-x: 24px;
    --hero-arrow-inset-y: 32px;
    --hero-arrow-text-gap: 24px;
    --hero-nav-strip-h: calc(var(--hero-arrow-inset-y) + var(--hero-arrow-size));
  }

  .hero-institucional--slider .hero-institucional__inner {
    align-items: flex-start;
    padding-bottom: calc(var(--hero-nav-strip-h) + var(--hero-arrow-text-gap));
  }

  .hero-institucional--slider .hero-institucional__nav {
    top: auto;
    bottom: 0;
    left: 0;
    right: 0;
    height: var(--hero-nav-strip-h);
  }

  .hero-institucional--slider .hero-institucional__arrow {
    top: auto;
    bottom: var(--hero-arrow-inset-y);
    transform: none;
    width: var(--hero-arrow-size);
    height: var(--hero-arrow-size);
  }

  .hero-institucional--slider .hero-institucional__arrow--prev {
    left: var(--hero-arrow-inset-x);
  }

  .hero-institucional--slider .hero-institucional__arrow--next {
    right: var(--hero-arrow-inset-x);
  }
}

/* =============================================================================
   @seccion-13 — ACCESOS RÁPIDOS (fondo showcase — eLibro y similares)
   ============================================================================= */
.section-quick-access--showcase {
  position: relative;
  overflow: hidden;
  padding: clamp(48px, 6vw, 72px) 0;
  background: var(--background-dark);
  color: #fff;
}
.section-quick-access__inner {
  position: relative;
  z-index: 2;
}
.quick-access-bg {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.quick-access-bg__photo {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center right;
  background-repeat: no-repeat;
  opacity: 0.22;
  mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.35) 35%, rgba(0, 0, 0, 0.85) 100%);
  -webkit-mask-image: linear-gradient(90deg, transparent 0%, rgba(0, 0, 0, 0.35) 35%, rgba(0, 0, 0, 0.85) 100%);
}
.quick-access-bg__waves {
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(
      165deg,
      transparent 0,
      transparent 42px,
      rgba(47, 168, 255, 0.04) 42px,
      rgba(47, 168, 255, 0.04) 43px
    ),
    repeating-linear-gradient(
      155deg,
      transparent 0,
      transparent 68px,
      rgba(120, 183, 255, 0.03) 68px,
      rgba(120, 183, 255, 0.03) 69px
    );
  opacity: 0.9;
}
.quick-access-bg__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(0, 20, 45, 0.92) 0%,
    rgba(0, 30, 74, 0.78) 45%,
    rgba(0, 46, 109, 0.55) 100%
  );
}
.quick-access-heading {
  margin: 0 0 clamp(28px, 4vw, 40px);
  font-family: var(--font-head);
  font-size: clamp(1.6rem, 2.8vw, 2.2rem);
  font-weight: 700;
  line-height: 1.15;
  text-align: center;
  color: #fff;
  letter-spacing: -0.02em;
}

/* =============================================================================
   @seccion-14 — ESTADÍSTICAS INSTITUCIONALES
   ============================================================================= */
.stats { background: var(--color-navy); color: #fff; position: relative; overflow: hidden; }
.stats::before {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(120deg, transparent 60%, rgba(47,168,255,0.35) 100%);
}
.stats-grid { position: relative; display: grid; grid-template-columns: repeat(2, 1fr); gap: 28px; text-align: center; }
.stat .num { font-family: var(--font-head); font-weight: 800; font-size: clamp(2.2rem, 5vw, 3.4rem); color: #fff; line-height: 1; }
.stat .num .suffix { color: var(--color-green-light); }
.stat .label { margin-top: 8px; font-size: 0.95rem; color: rgba(255,255,255,0.8); letter-spacing: 0.02em; }

/* =============================================================================
   @seccion-15 — NOTICIAS
   ============================================================================= */
.news-grid { display: grid; grid-template-columns: 1fr; gap: 24px; }
.news-card {
  background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius);
  overflow: hidden; transition: all var(--transition); display: flex; flex-direction: column;
}
.news-card:hover { transform: translateY(var(--hover-large-y)); box-shadow: var(--elevation-3); border-color: transparent; }
.news-card .thumb { position: relative; aspect-ratio: 16/10; overflow: hidden; }
.news-card .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s ease; }
.news-card:hover .thumb img { transform: scale(1.06); }
.news-card .cat {
  position: absolute; top: 12px; left: 12px; background: var(--color-green); color: #fff;
  font-family: var(--font-head); font-weight: 600; font-size: 0.72rem; padding: 5px 12px; border-radius: var(--radius-full);
  letter-spacing: 0.03em;
}
.news-card .body { padding: 20px; display: flex; flex-direction: column; flex: 1; }
.news-card .date { font-size: 0.8rem; color: var(--color-text-muted); margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.news-card .date svg { width: var(--icon-xs); height: var(--icon-xs); }
.news-card h3 { font-size: 1.15rem; }
.news-card.featured h3 { font-size: 1.9rem; }
.news-card p { font-size: 0.9rem; flex: 1; }
.news-card .read-more { font-family: var(--font-head); font-weight: 600; color: var(--color-green); display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem; }
.news-card .read-more svg { width: var(--icon-sm); height: var(--icon-sm); transition: transform var(--transition); }
.news-card:hover .read-more svg { transform: translateX(4px); }

/* Institutional fallback when a news post has no featured image (no broken images, no placeholders). */
.news-card .thumb--fallback {
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 28% 22%, rgba(77, 163, 255, 0.22), transparent 58%),
    linear-gradient(150deg, var(--color-primary) 0%, var(--color-navy-dark) 100%);
}
.news-card .thumb-fallback-mark {
  display: grid;
  place-items: center;
  color: rgba(255, 255, 255, 0.55);
}
.news-card .thumb-fallback-mark svg { width: 56px; height: 56px; }
.news-card.featured .thumb-fallback-mark svg { width: 84px; height: 84px; }

@media (min-width: 900px) {
  .news-grid { grid-template-columns: 1.4fr 1fr; grid-template-rows: auto auto auto; }
  .news-card.featured { grid-row: span 3; }
  .news-card.featured .thumb { aspect-ratio: 16/11; }
  .news-card.secondary { flex-direction: row; }
  .news-card.secondary .thumb { width: 45%; aspect-ratio: auto; }
  .news-card.secondary .body { padding: 16px 18px; }
  .news-card.secondary h3 { font-size: 1rem; }
  .news-card.secondary p { display: none; }
  .news-card.secondary h3 a { -webkit-line-clamp: 2; }
}

/* =============================================================================
   @seccion-16 — FACULTADES (tarjetas visuales)
   ============================================================================= */
.fac-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 22px;
  align-items: stretch;
}
.fac-card {
  position: relative; border-radius: var(--radius); overflow: hidden;
  aspect-ratio: 3/4; display: block; box-shadow: var(--shadow-sm);
  height: 100%;
  min-width: 0;
}
.fac-card-visual {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  background-color: var(--color-navy-dark);
}
.fac-card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}
.fac-card:hover .fac-card-img { transform: scale(1.06); }
.fac-card .fac-overlay {
  position: absolute; inset: 0; padding: 24px; z-index: 2;
  background: linear-gradient(to top, rgba(0,20,45,0.95) 0%, rgba(0,27,58,0.55) 45%, rgba(0,27,58,0.12) 75%, transparent 100%);
  display: flex; flex-direction: column; justify-content: flex-end; transition: background var(--transition);
}
.fac-card:hover .fac-overlay { background: linear-gradient(to top, rgba(0,46,109,0.95) 0%, rgba(0,46,109,0.55) 60%, rgba(47,168,255,0.22) 100%); }
.fac-card-title {
  color: #fff;
  font-size: 1.3rem;
  line-height: 1.15;
  margin: 0;
  min-height: 4.8rem;
  max-width: 100%;
  position: relative;
  z-index: 1;
  text-shadow: 0 1px 12px rgba(0, 20, 45, 0.45);
}
.fac-card .fac-desc {
  margin: 8px 0 0;
  flex-shrink: 0;
}
.fac-card .fac-overlay .btn {
  align-self: flex-start;
  flex-shrink: 0;
  margin-top: 12px;
}

/* Facultades — 1-col mobile, 2-col tablet, 4-col desktop */
@media (max-width: 639px) {
  .fac-card { aspect-ratio: 3 / 4; }
  .fac-card-title {
    font-size: 1.15rem;
    line-height: 1.15;
    min-height: 3.98rem;
    max-width: 100%;
  }
  .fac-card .fac-overlay { padding: 20px 18px; }
  .fac-card .fac-overlay .btn {
    padding: 12px 20px;
    font-size: 0.95rem;
  }
}
@media (min-width: 640px) and (max-width: 1199px) {
  .fac-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1200px) {
  .fac-grid { grid-template-columns: repeat(4, 1fr); }
}

/* =============================================================================
   @seccion-17 — FACULTADES EN HOME (animaciones premium)
   ============================================================================= */
.section-facultades-home {
  padding-top: clamp(42px, 5vw, 56px);
  padding-bottom: clamp(48px, 6vw, 64px);
}
.section-facultades-home .fac-grid {
  gap: clamp(20px, 2.2vw, 28px);
}
.section-facultades-home .fac-grid--reveal.js-reveal:not(.is-visible) .fac-card {
  opacity: 0;
  transform: translateY(32px);
}
.section-facultades-home .fac-grid--reveal.is-visible .fac-card {
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.section-facultades-home .fac-grid--reveal.is-visible .fac-card:nth-child(1) { transition-delay: 0ms; }
.section-facultades-home .fac-grid--reveal.is-visible .fac-card:nth-child(2) { transition-delay: 70ms; }
.section-facultades-home .fac-grid--reveal.is-visible .fac-card:nth-child(3) { transition-delay: 140ms; }
.section-facultades-home .fac-grid--reveal.is-visible .fac-card:nth-child(4) { transition-delay: 210ms; }
.section-facultades-home .fac-card {
  border-radius: var(--radius-lg);
  /* LEGACY — sombras compuestas Home facultades; no mapear a elevation única Fase 14.0 */
  box-shadow:
    0 2px 8px rgba(0, 30, 74, 0.08),
    0 12px 32px rgba(0, 30, 74, 0.1);
  transition: box-shadow 0.45s cubic-bezier(0.22, 1, 0.36, 1), transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.section-facultades-home .fac-card:hover {
  transform: translateY(-6px); /* LEGACY motion — Home fac-card distinto al portal taxonomía (-8px) */
  box-shadow:
    0 6px 16px rgba(0, 46, 109, 0.12),
    0 20px 40px rgba(0, 30, 74, 0.16),
    0 0 0 1px rgba(47, 168, 255, 0.1);
}
.section-facultades-home .fac-card:hover .fac-card-img {
  transform: scale(1.05);
}
.section-facultades-home .fac-card .fac-overlay {
  background: linear-gradient(
    to top,
    rgba(0, 20, 45, 0.97) 0%,
    rgba(0, 27, 58, 0.62) 42%,
    rgba(0, 27, 58, 0.14) 78%,
    transparent 100%
  );
}
.section-facultades-home .fac-card:hover .fac-overlay {
  background: linear-gradient(
    to top,
    rgba(0, 46, 109, 0.98) 0%,
    rgba(0, 46, 109, 0.68) 55%,
    rgba(47, 168, 255, 0.24) 100%
  );
}
.section-facultades-home .fac-card-title {
  font-size: clamp(1.15rem, 1.5vw, 1.42rem);
  letter-spacing: -0.01em;
  text-shadow: 0 2px 16px rgba(0, 20, 45, 0.55);
}
.section-facultades-home .fac-card-meta {
  margin: 6px 0 0;
  font-family: var(--font-head);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-green-light);
}
.section-facultades-home .fac-card .fac-desc {
  font-size: 0.88rem;
  line-height: 1.45;
}
.section-facultades-home .fac-card .fac-overlay .btn {
  transition:
    transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.28s ease,
    background-color 0.28s ease,
    border-color 0.28s ease,
    color 0.28s ease;
}
.section-facultades-home .fac-card .fac-overlay .btn:hover {
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--elevation-2);
}
.section-facultades-home .fac-card .fac-overlay .btn .unaf-icon {
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}
.section-facultades-home .fac-card .fac-overlay .btn:hover .unaf-icon {
  transform: translateX(2px);
}
@media (min-width: 640px) and (max-width: 1199px) {
  .section-facultades-home .fac-grid { gap: 24px; }
  .section-facultades-home .fac-card { aspect-ratio: 4 / 5; }
}
@media (min-width: 1200px) {
  .section-facultades-home .fac-grid {
    gap: 28px;
    max-width: var(--container);
    margin-inline: auto;
  }
  .section-facultades-home .fac-card {
    aspect-ratio: 3 / 4;
    min-height: 320px;
  }
  .section-facultades-home .fac-card .fac-overlay {
    padding: 28px 26px;
  }
  .section-facultades-home .fac-card-title {
    min-height: 5rem;
    font-size: 1.42rem;
  }
}
@media (prefers-reduced-motion: reduce) {
  .section-facultades-home .fac-grid--reveal .fac-card {
    opacity: 1;
    transform: none;
    transition-delay: 0ms !important;
  }
  .section-facultades-home .fac-card:hover,
  .section-facultades-home .fac-card:hover .fac-card-img {
    transform: none;
  }
}

/* =============================================================================
   @seccion-18 — CARRERAS Y PROGRAMAS ACADÉMICOS
   ============================================================================= */
.filters { display: flex; flex-wrap: wrap; gap: var(--space-2); justify-content: center; margin-bottom: var(--space-6); }
/* LEGACY — filter-btn canonical en FASE 14.0 / Phase 10.2; mantener especificidad local */
.filter-btn {
  font-family: var(--font-head); font-weight: 600; font-size: 0.88rem; padding: 9px var(--space-4);
  border-radius: var(--radius-pill); border: 1px solid var(--color-border); background: var(--surface-base);
  color: var(--text-on-surface-soft); cursor: pointer; transition: var(--action-transition);
}
.filter-btn:hover { border-color: var(--color-navy); color: var(--color-navy); transform: translateY(var(--hover-medium-y)); box-shadow: var(--hover-medium-shadow); }
.filter-btn.is-active { background: var(--color-navy); color: #fff; border-color: var(--color-navy); }

.prog-grid { display: grid; grid-template-columns: 1fr; gap: 18px; }
.prog-card {
  background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius);
  padding: 24px; transition: all var(--transition); border-left: 4px solid var(--color-green);
}
.prog-card:hover { transform: translateY(-3px); box-shadow: var(--elevation-2); } /* LEGACY motion -3px */
.prog-card .level,
.program-type {
  display: inline-block; font-family: var(--font-head); font-weight: 600; font-size: 0.72rem;
  text-transform: uppercase; letter-spacing: 0.06em; color: var(--color-accent); margin-bottom: 10px;
}
.prog-card h3 { font-size: 1.15rem; margin-bottom: 14px; }
.prog-card .meta { display: flex; flex-wrap: wrap; gap: 16px; font-size: 0.85rem; color: var(--text-on-surface-muted); }
.prog-card .meta span { display: inline-flex; align-items: center; gap: 6px; color: var(--text-on-surface-soft); }
.prog-card .meta svg { width: var(--icon-sm); height: var(--icon-sm); color: var(--card-icon-color); flex-shrink: 0; }
.prog-card.is-hidden { display: none; }

/* =============================================================================
   @seccion-19 — EVENTOS Y CALENDARIO
   ============================================================================= */
.events-layout { display: grid; grid-template-columns: 1fr; gap: 30px; }
.events-list { display: flex; flex-direction: column; gap: 14px; }
.event-item {
  display: flex; gap: 18px; background: var(--card-bg); border: 1px solid var(--card-border);
  border-radius: var(--radius); padding: 18px; transition: all var(--transition);
}
.event-item:hover { box-shadow: var(--shadow); border-color: transparent; transform: translateX(4px); }
.event-date {
  flex-shrink: 0; width: 64px; text-align: center; background: var(--color-navy); color: #fff;
  border-radius: var(--radius-sm); padding: 10px 6px; display: flex; flex-direction: column; justify-content: center;
}
.event-date .d { font-family: var(--font-head); font-weight: 800; font-size: 1.5rem; line-height: 1; }
.event-date .m { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; margin-top: 2px; color: var(--color-green-light); }
.event-info h3 { font-size: 1.05rem; margin-bottom: 8px; }
.event-info .meta { display: flex; flex-wrap: wrap; gap: 14px; font-size: 0.82rem; color: var(--color-text-muted); }
.event-info .meta span { display: inline-flex; align-items: center; gap: 5px; }
.event-info .meta svg { width: var(--icon-xs); height: var(--icon-xs); }
.event-info .cat-tag { display: inline-block; margin-top: 8px; font-size: 0.72rem; font-family: var(--font-head); font-weight: 600; color: var(--color-green); }

.calendar-card { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius); padding: 26px; box-shadow: var(--shadow-sm); }
.calendar-card h3 { display: flex; align-items: center; gap: 10px; font-size: 1.25rem; margin-bottom: 20px; }
.calendar-card h3 svg { width: var(--icon-lg); height: var(--icon-lg); color: var(--color-green); }
.calendar-list { display: flex; flex-direction: column; }
.calendar-list li { display: flex; justify-content: space-between; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--color-border); }
.calendar-list li:last-child { border-bottom: none; }
.calendar-list .ci-label { font-weight: 500; color: var(--color-text); font-size: 0.92rem; }
.calendar-list .ci-date { font-family: var(--font-head); font-weight: 600; color: var(--color-navy); font-size: 0.85rem; white-space: nowrap; }

@media (min-width: 900px) { .events-layout { grid-template-columns: 1.3fr 1fr; } }

/* =============================================================================
   @seccion-20 — VIDA UNIVERSITARIA (galería campus)
   ============================================================================= */
.campus-gallery { columns: 2; column-gap: 14px; }
.campus-gallery .gitem { break-inside: avoid; margin-bottom: 14px; border-radius: var(--radius); overflow: hidden; position: relative; }
.campus-gallery .gitem img { width: 100%; transition: transform 0.5s ease; }
.campus-gallery .gitem::after {
  content: attr(data-label); position: absolute; inset: 0; display: flex; align-items: flex-end; padding: 16px;
  color: #fff; font-family: var(--font-head); font-weight: 600; font-size: 0.95rem;
  background: linear-gradient(to top, rgba(0,27,58,0.85), transparent 60%);
  opacity: 0; transition: opacity var(--transition);
}
.campus-gallery .gitem:hover img { transform: scale(1.08); }
.campus-gallery .gitem:hover::after { opacity: 1; }

@media (min-width: 700px) { .campus-gallery { columns: 3; } }
@media (min-width: 1000px) { .campus-gallery { columns: 4; } }

/* =============================================================================
   @seccion-21 — ARCHIVO HISTÓRICO
   ============================================================================= */
.archive-section { background: linear-gradient(135deg, var(--color-navy-dark), var(--color-navy)); color: #fff; position: relative; overflow: hidden; }
.archive-section::before {
  content: ""; position: absolute; inset: 0; opacity: 0.06;
  background-image: radial-gradient(circle, #fff 1px, transparent 1px); background-size: 24px 24px;
}
.archive-inner { position: relative; display: grid; grid-template-columns: 1fr; gap: 40px; align-items: center; }
.archive-feature { display: grid; grid-template-columns: 1fr; gap: 22px; }
.archive-doc-card {
  background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); border-radius: var(--radius-lg);
  overflow: hidden; backdrop-filter: blur(6px);
}
.archive-doc-card .doc-img { position: relative; aspect-ratio: 16/10; overflow: hidden; }
.archive-doc-card .doc-img img { width: 100%; height: 100%; object-fit: cover; filter: sepia(0.25); }
.archive-doc-card .doc-img .doc-tag {
  position: absolute; top: 14px; left: 14px; background: rgba(0,27,58,0.85); border: 1px solid rgba(255,255,255,0.3);
  color: #fff; font-family: var(--font-head); font-weight: 600; font-size: 0.72rem; padding: 6px 14px; border-radius: var(--radius-full);
}
.archive-doc-card .doc-body { padding: 22px; }
.archive-doc-card .doc-body h3 { color: #fff; font-size: 1.3rem; }
.archive-doc-card .doc-body p { color: rgba(255,255,255,0.78); font-size: 0.92rem; }
.archive-doc-card .doc-year { font-family: var(--font-head); font-weight: 800; color: var(--color-green-light); font-size: 1.1rem; }

.archive-text .eyebrow { color: var(--color-green-light); }
.archive-text h2 { color: var(--text-on-chrome); font-size: clamp(1.8rem, 4vw, 2.6rem); }

.timeline { margin: 28px 0; border-left: 2px solid rgba(255,255,255,0.2); padding-left: 24px; display: flex; flex-direction: column; gap: 22px; }
.timeline-item { position: relative; }
.timeline-item::before {
  content: ""; position: absolute; left: -31px; top: 4px; width: var(--icon-xs); height: var(--icon-xs); border-radius: 50%;
  background: var(--color-green); border: 3px solid var(--color-navy-dark);
}
.timeline-item .ti-year { font-family: var(--font-head); font-weight: 800; color: #fff; font-size: 1.05rem; }
.timeline-item .ti-text { color: rgba(255,255,255,0.75); font-size: 0.9rem; }

@media (min-width: 960px) { .archive-inner { grid-template-columns: 1fr 1fr; } }

/* =============================================================================
   @seccion-22 — PIE DE PÁGINA (footer)
   ============================================================================= */
.site-footer { background: var(--color-navy-dark); color: rgba(255,255,255,0.94); padding-top: 22px; }
.footer-grid { display: grid; grid-template-columns: 1fr; gap: 14px; padding-bottom: 16px; align-items: start; }
.footer-col h4 { color: #fff; font-size: 0.9rem; margin-bottom: 8px; letter-spacing: 0.02em; }
.footer-col ul { display: flex; flex-direction: column; gap: 4px; }
.footer-col a { color: rgba(255,255,255,0.92); font-size: 0.88rem; }
.footer-col a:hover { color: #ffffff; padding-left: 4px; }
.footer-brand-logos {
  display: flex;
  align-items: center;
  width: 140px;
  height: 32px;
  margin-bottom: 8px;
}

.footer-logo {
  display: none;
  width: 140px;
  max-width: 100%;
  height: auto;
  max-height: 32px;
  object-fit: contain;
  object-position: left center;
}

.footer-logo--light-mode,
.footer-logo--dark-mode {
  display: none;
}

html[data-theme="light"] .footer-logo--light-mode,
:root:not([data-theme="dark"]) .footer-logo--light-mode,
[data-theme="light"] .footer-logo--light-mode {
  display: block;
}

html[data-theme="dark"] .footer-logo--dark-mode,
[data-theme="dark"] .footer-logo--dark-mode {
  display: block;
}
.footer-brand-title {
  margin: 0 0 8px;
  color: #ffffff;
  font-size: 0.92rem;
  letter-spacing: 0.02em;
}
.footer-brand-name {
  margin: 0 0 10px;
  font-size: 0.92rem;
  color: rgba(255,255,255,0.92);
}
.footer-brand p { font-size: 0.88rem; color: rgba(255,255,255,0.88); }
.footer-contact li {
  display: flex; gap: 8px; font-size: 0.84rem; margin-bottom: 4px;
  color: rgba(255,255,255,0.94);
}
.footer-contact li strong { color: #ffffff; }
.footer-contact li span { color: rgba(255,255,255,0.88); }
.footer-contact svg { width: var(--icon-sm); height: var(--icon-sm); color: var(--color-accent); flex-shrink: 0; margin-top: 2px; }
.footer-social { display: flex; gap: 8px; margin-top: 8px; }
.footer-social a {
  width: 42px; height: 42px; border-radius: 50%;
  background: rgba(255,255,255,0.16); border: 1px solid rgba(77, 163, 255, 0.72);
  display: grid; place-items: center; color: #ffffff; transition: transform 0.12s ease, background 0.12s ease, border-color 0.12s ease, color 0.12s ease, box-shadow 0.12s ease;
}
.footer-social a:hover { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-primary); transform: translateY(var(--hover-medium-y)); box-shadow: var(--elevation-2); }
.footer-social svg { width: var(--icon-md); height: var(--icon-md); }
.footer-map { border-radius: var(--radius); overflow: hidden; height: 180px; margin-top: 6px; border: 1px solid rgba(255,255,255,0.12); }
.footer-map iframe { width: 100%; height: 100%; border: 0; filter: grayscale(0.3); }
.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.14); padding: 8px 0; font-size: 0.76rem;
  display: flex; flex-direction: column; gap: 4px; align-items: center; text-align: center; color: rgba(255,255,255,0.88);
}
.footer-credit { color: rgba(255,255,255,0.82); letter-spacing: 0.02em; }

@media (min-width: 600px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 980px) {
  .footer-grid { grid-template-columns: 1.4fr repeat(3, 1fr); align-items: start; }
  .footer-bottom {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    text-align: left;
  }
  .footer-credit { text-align: right; }
}

/* =============================================================================
   @seccion-23 — MENÚ MÓVIL Y GRILLAS RESPONSIVE
   ============================================================================= */
@media (min-width: 600px) {
  .stats-grid { grid-template-columns: repeat(4, 1fr); }
}
@media (min-width: 768px) {
  .prog-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1000px) {
  .prog-grid { grid-template-columns: repeat(3, 1fr); }
}

/* Mobile nav */
@media (max-width: 991px) {
  body.nav-is-open,
  body.search-is-open {
    overflow: hidden;
    overscroll-behavior: none;
  }

  .site-header-layout {
    position: relative;
    z-index: var(--z-mobile-header);
    overflow: visible;
  }

  .site-header {
    z-index: var(--z-mobile-header);
    overflow: visible;
    max-width: 100%;
  }

  .site-header .container,
  .header-inner {
    overflow: visible;
  }

  body.nav-is-open .site-header-layout,
  body.search-is-open .site-header-layout,
  body.nav-is-open .site-header,
  body.search-is-open .site-header {
    z-index: var(--z-mobile-header);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .primary-nav {
    position: fixed;
    top: 0;
    right: 0;
    width: min(320px, 100%);
    max-width: 100%;
    height: 100%;
    height: 100dvh;
    background: var(--surface-base);
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-2);
    padding: calc(var(--header-h) + var(--space-2)) var(--space-3) var(--space-8);
    box-shadow: -8px 0 32px rgba(0, 15, 35, 0.18);
    transform: translateX(100%);
    visibility: hidden;
    pointer-events: none;
    opacity: 0;
    transition: transform 0.28s ease, opacity 0.22s ease, visibility 0s linear 0.28s;
    z-index: var(--z-mobile-drawer);
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    border-left: 1px solid var(--header-border);
    box-sizing: border-box;
  }

  .primary-nav.is-open {
    transform: translateX(0);
    visibility: visible;
    pointer-events: auto;
    opacity: 1;
    z-index: calc(var(--z-mobile-header) + 1);
    transition: transform 0.28s ease, opacity 0.22s ease, visibility 0s;
  }

  .primary-nav ul,
  .primary-nav .nav-menu {
    display: flex;
    flex: 1;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
    min-height: 0;
    margin: 0;
    padding: 0;
  }

  .primary-nav ul li,
  .primary-nav .nav-menu li {
    border-bottom: 1px solid var(--header-border);
    min-width: 0;
  }

  .primary-nav a {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding: var(--space-4) var(--space-3);
    font-size: 1rem;
    font-weight: 700;
    font-family: var(--font-head);
    color: var(--color-navy);
    border-radius: var(--radius-sm);
    overflow-wrap: anywhere;
    word-break: break-word;
  }

  .primary-nav a:hover,
  .primary-nav .current-menu-item > a,
  .primary-nav [aria-current="page"] {
    background: var(--color-bg-soft);
    color: var(--color-navy);
  }

  .primary-nav .menu-item-has-children > .nav-item__row {
    border-bottom: 0;
  }

  .primary-nav .menu-item-has-children {
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

  .primary-nav .nav-sub-toggle {
    width: 48px;
    min-width: 48px;
    min-height: var(--header-action-h);
    border-left: 1px solid var(--header-border);
    color: var(--color-navy);
    background: transparent;
  }

  .primary-nav .nav-sub-toggle:hover,
  .primary-nav .nav-sub-toggle:focus-visible {
    background: var(--color-bg-soft);
    color: var(--color-primary);
  }

  .primary-nav .sub-menu {
    display: none;
    width: 100%;
    background: var(--surface-muted);
    border-top: 1px solid var(--header-border);
  }

  .primary-nav .nav-item--has-sub.is-sub-open > .sub-menu {
    display: block;
  }

  .primary-nav .sub-menu li {
    border-bottom: 1px solid var(--header-border);
  }

  .primary-nav .sub-menu li:last-child {
    border-bottom: 0;
  }

  .primary-nav .sub-menu a {
    padding: var(--space-3) var(--space-4);
    padding-left: calc(var(--space-4) + var(--space-2));
    font-size: 0.94rem;
    font-weight: 600;
  }

  [data-theme="dark"] .primary-nav .nav-sub-toggle {
    color: var(--text-on-surface);
    border-left-color: rgba(255, 255, 255, 0.1);
  }

  [data-theme="dark"] .primary-nav .nav-sub-toggle:hover,
  [data-theme="dark"] .primary-nav .nav-sub-toggle:focus-visible {
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
  }

  [data-theme="dark"] .primary-nav .sub-menu {
    background: rgba(255, 255, 255, 0.04);
    border-top-color: rgba(255, 255, 255, 0.1);
  }

  [data-theme="dark"] .primary-nav .sub-menu a {
    color: var(--text-on-surface);
  }

  [data-theme="dark"] .primary-nav .sub-menu a:hover,
  [data-theme="dark"] .primary-nav .sub-menu a:focus-visible {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.08);
  }

  .menu-toggle { display: grid; }

  .nav-overlay {
    display: block;
    position: fixed;
    inset: 0;
    top: var(--header-h);
    background: rgba(0, 31, 84, 0.45);
    z-index: var(--z-mobile-overlay);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.28s ease, visibility 0.28s ease;
  }

  [data-theme="dark"] .nav-overlay {
    background: rgba(6, 21, 45, 0.55);
  }

  .nav-overlay.is-open {
    inset: 0;
    top: var(--header-h);
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    z-index: var(--z-mobile-overlay);
  }

  .search-panel.is-open {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
    z-index: calc(var(--z-mobile-header) + 1);
  }

  [data-theme="dark"] .primary-nav {
    background: var(--surface-base);
    border-left-color: rgba(255, 255, 255, 0.1);
    box-shadow: none;
  }

  [data-theme="dark"] .primary-nav a {
    color: var(--text-on-surface);
    text-shadow: none;
  }

  [data-theme="dark"] .primary-nav a:hover,
  [data-theme="dark"] .primary-nav .current-menu-item > a,
  [data-theme="dark"] .primary-nav [aria-current="page"] {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.08);
    text-shadow: none;
  }

  .nav-close {
    position: static;
    align-self: flex-end;
    flex-shrink: 0;
    margin: 0 0 var(--space-2);
  }

  .primary-nav ul li:last-child,
  .primary-nav .nav-menu li:last-child {
    border-bottom: 0;
  }

  .search-dropdown { position: static; }

  .search-panel {
    position: fixed;
    left: 0;
    right: 0;
    top: var(--header-h);
    width: auto;
    max-width: none;
    margin: 0;
    padding: var(--space-4);
    background: var(--surface-base);
    border: 0;
    border-bottom: 1px solid var(--header-border);
    border-radius: 0;
    box-shadow: var(--shadow-lg);
    transform: translateY(-8px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: var(--z-mobile-drawer);
    transition: opacity 0.22s ease, transform 0.22s ease, visibility 0.22s ease;
  }

  .search-panel .unaf-search-form {
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-3);
  }

  .search-panel input[type="search"] {
    width: 100%;
    background: var(--surface-muted);
    border-color: var(--color-border);
  }

  .search-panel .btn {
    width: 100%;
    min-height: var(--header-action-h);
    justify-content: center;
  }

  .search-panel .btn span { display: inline; }

  .search-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    top: var(--header-h);
    z-index: var(--z-mobile-backdrop);
    background: rgba(0, 31, 84, 0.4);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.22s ease, visibility 0.22s ease;
  }

  [data-theme="dark"] .search-backdrop {
    background: rgba(6, 21, 45, 0.5);
  }

  [data-theme="light"] .search-backdrop {
    background: rgba(0, 31, 84, 0.35);
  }

  [data-theme="dark"] .search-panel {
    background: var(--surface-base);
    border-bottom-color: rgba(255, 255, 255, 0.12);
  }

  [data-theme="dark"] .search-panel input[type="search"] {
    background: var(--surface-muted);
    border-color: rgba(255, 255, 255, 0.14);
    color: var(--text-on-surface);
  }

  body.search-is-open .search-backdrop {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
}
@media (min-width: 992px) {
  .nav-close { display: none; }
}
@media (max-width: 480px) {
  .hero h1 { font-size: clamp(1.85rem, 8.5vw, 2.35rem); }
}

/* Counter reveal */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

/* =============================================================================
   @seccion-24 — PÁGINAS INTERNAS
   Hero de página, migas de pan, búsqueda y contenido editorial.
   ============================================================================= */
.page-hero {
  background: linear-gradient(135deg, var(--color-navy-dark), var(--color-navy));
  color: #fff; padding: 48px 0 56px;
}
#nuestras-facultades { scroll-margin-top: calc(var(--header-h) + var(--space-3)); }
.page-hero .eyebrow { color: var(--color-green-light); }
.page-hero h1 { color: var(--text-on-chrome); font-size: clamp(1.8rem, 4vw, 2.8rem); margin-bottom: 12px; }
.page-hero-lead { color: var(--text-on-chrome-soft); font-size: 1.05rem; max-width: 640px; margin: 0; }
.page-hero-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-top: 20px;
  width: 100%;
}
.page-hero--centered .page-hero-actions { justify-content: center; }
@media (min-width: 640px) {
  .page-hero-actions {
    flex-direction: row;
    flex-wrap: wrap;
  }
}

.page-hero--centered { text-align: center; }
.page-hero--centered .container {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.page-hero--centered .page-hero-lead { margin-inline: auto; }

.breadcrumbs { background: var(--color-bg-soft); border-bottom: 1px solid var(--color-border); padding: 12px 0; font-size: 0.85rem; }
.breadcrumbs ol { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.breadcrumbs li { display: inline-flex; align-items: center; gap: 8px; color: var(--color-text-muted); }
.breadcrumbs li + li::before { content: "/"; color: var(--color-text-muted); }
.breadcrumbs a { color: var(--color-navy); font-weight: 500; }
.breadcrumbs a:hover { color: var(--color-green); }

[data-theme="dark"] .breadcrumbs {
  background: rgba(255, 255, 255, 0.04);
  border-bottom-color: rgba(255, 255, 255, 0.1);
}

[data-theme="dark"] .breadcrumbs li,
[data-theme="dark"] .breadcrumbs li + li::before {
  color: rgba(255, 255, 255, 0.58);
}

[data-theme="dark"] .breadcrumbs a {
  color: #ffffff;
}

[data-theme="dark"] .breadcrumbs a:hover {
  color: var(--color-accent);
}

.page-internal { padding: 48px 0 64px; }
.page-internal--facultad { padding-top: 40px; }
.page-internal--facultades-hub { padding-bottom: 28px; }
.page-internal--narrow { max-width: 820px; margin: 0 auto; }
.page-internal .entry-content { font-size: 1.05rem; line-height: 1.7; }

/* Single post / noticia detail — header typography */
.entry-eyebrow,
.single-post-eyebrow,
.single-noticia-eyebrow {
  color: var(--color-accent);
}

.entry-meta,
.entry-date,
.single-post-meta,
.single-noticia-meta {
  color: var(--color-text-muted);
}

.archivo-noticia-single__tag {
  display: inline-block;
  padding: 4px 10px;
  border-radius: var(--radius-full);
  font-size: 0.78rem;
  font-family: var(--font-head);
  font-weight: 600;
  color: var(--color-primary);
  background: rgba(77, 163, 255, 0.12);
  border: 1px solid rgba(77, 163, 255, 0.28);
}

.archivo-noticia-single__legacy {
  margin-top: 32px;
  padding-top: 20px;
  border-top: 1px solid var(--color-border);
  font-size: 0.9rem;
}

.archivo-noticia-single__legacy h2 {
  font-size: 1rem;
  margin-bottom: 10px;
}

.archivo-noticia-single__legacy ul {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

[data-theme="dark"] .archivo-noticia-single__tag {
  color: rgba(255, 255, 255, 0.88);
  border-color: rgba(77, 163, 255, 0.4);
  background: rgba(77, 163, 255, 0.14);
}

[data-theme="dark"] .archivo-noticia-single__legacy {
  border-top-color: rgba(255, 255, 255, 0.14);
}

.news-grid--archive { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }

.search-summary { color: var(--color-text-muted); font-size: 0.95rem; margin: 0 0 24px; }

.error-404 { text-align: center; padding: 80px 0; }
.error-404 h1 { font-size: clamp(4rem, 12vw, 8rem); color: var(--color-navy); line-height: 1; margin-bottom: 16px; }
.error-404 .actions { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin-top: 28px; }

.filters--news, .filters--events { margin-bottom: 24px; }

.section-head--left { text-align: left; margin-bottom: 20px; }
.pagination-wrap { margin-top: 40px; text-align: center; }

/* Paginación institucional (archivo, listados WP) */
.pagination-wrap .nav-links,
.archivo-pagination ul.page-numbers {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}

.pagination-wrap .page-numbers,
.archivo-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  min-height: 42px;
  padding: 0 14px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border);
  background: var(--surface-base);
  color: var(--text-on-surface-soft);
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.88rem;
  text-decoration: none;
  transition: border-color var(--transition-hover), color var(--transition-hover), background var(--transition-hover), transform var(--transition-hover), box-shadow var(--transition-hover);
}

.pagination-wrap .page-numbers:hover,
.archivo-pagination a.page-numbers:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.pagination-wrap .page-numbers.current,
.archivo-pagination .page-numbers.current {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #ffffff;
}

.pagination-wrap .page-numbers.dots,
.archivo-pagination .page-numbers.dots {
  border-color: transparent;
  background: transparent;
  min-width: auto;
  padding: 0 6px;
}

[data-theme="dark"] .pagination-wrap .page-numbers,
[data-theme="dark"] .archivo-pagination .page-numbers {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.82);
}

[data-theme="dark"] .pagination-wrap .page-numbers:hover,
[data-theme="dark"] .archivo-pagination a.page-numbers:hover {
  border-color: var(--color-accent);
  color: #ffffff;
}

[data-theme="dark"] .pagination-wrap .page-numbers.current,
[data-theme="dark"] .archivo-pagination .page-numbers.current {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #06152d;
}

/* Archivo de Noticias — landing */
.archivo-hero-count {
  margin: var(--space-3) 0 0;
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--text-on-chrome-soft);
}

.archivo-search-panel {
  max-width: 760px;
  margin: 0 auto;
  padding: clamp(20px, 3vw, 28px);
  background: var(--surface-base);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--elevation-1);
}

.archivo-search-form {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: stretch;
}

.archivo-search-form__input {
  flex: 1 1 220px;
  min-width: 0;
  padding: 12px 16px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--surface-muted);
  color: var(--text-on-surface);
  font-size: 0.95rem;
  font-family: var(--font-body);
}

.archivo-search-form__input:focus {
  outline: none;
  border-color: var(--color-primary);
  box-shadow: var(--focus-search);
}

.archivo-search-panel__note {
  margin: var(--space-3) 0 0;
  font-size: 0.88rem;
  color: var(--text-on-surface-soft);
}

.archivo-years-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

@media (min-width: 600px) {
  .archivo-years-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (min-width: 960px) {
  .archivo-years-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
}

.archivo-year-card {
  text-align: center;
  text-decoration: none;
  color: inherit;
}

.archivo-year-card--linked:hover {
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.archivo-year-card.is-active,
.archivo-category-card.is-active {
  border-color: var(--color-accent);
  box-shadow: var(--elevation-2);
}

.archivo-year-card__count {
  display: block;
  margin-top: 6px;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 0.82rem;
  color: var(--color-accent);
}

.archivo-category-card {
  text-decoration: none;
  color: inherit;
}

.archivo-category-card--linked:hover {
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.archivo-category-card__hint {
  margin: 0;
  font-size: 0.86rem;
  color: var(--text-on-surface-soft);
}

.archivo-filter-clear {
  margin: var(--space-4) 0 0;
  text-align: center;
}

.archivo-filter-clear a {
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.88rem;
  color: var(--color-accent);
}

.archivo-results-summary {
  margin: 0 0 var(--space-5);
  font-size: 0.95rem;
  color: var(--text-on-surface-soft);
}

.archivo-pagination {
  margin-top: var(--space-8);
}

.archivo-empty-state {
  max-width: 560px;
  margin: 0 auto;
  padding: clamp(28px, 4vw, 40px);
  text-align: center;
  background: var(--surface-muted);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-lg);
}

.archivo-empty-state__icon {
  display: inline-grid;
  place-items: center;
  width: 56px;
  height: 56px;
  margin-bottom: var(--space-3);
  border-radius: var(--radius-circle);
  background: rgba(77, 163, 255, 0.12);
  color: var(--color-accent);
}

.archivo-empty-state__icon svg {
  width: 28px;
  height: 28px;
}

.archivo-empty-state__note {
  margin-top: var(--space-3);
  font-size: 0.9rem;
  color: var(--text-on-surface-soft);
}

.archivo-coming-soon {
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}

.archivo-coming-soon__text,
.archivo-coming-soon__note {
  color: var(--text-on-chrome-soft);
}

.archivo-coming-soon__note {
  margin-top: var(--space-3);
  font-size: 0.92rem;
  opacity: 0.88;
}

[data-theme="dark"] .archivo-search-panel {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.12);
}

[data-theme="dark"] .archivo-search-form__input {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.14);
  color: var(--text-on-surface);
}

[data-theme="dark"] .archivo-noticia-card {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.12);
}

[data-theme="dark"] .archivo-noticia-card h3 a {
  color: #ffffff;
}

[data-theme="dark"] .archivo-noticia-card p,
[data-theme="dark"] .archivo-noticia-card .date {
  color: rgba(255, 255, 255, 0.72);
}

[data-theme="dark"] .archivo-empty-state {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.14);
}

[data-theme="dark"] .archivo-empty-state h2 {
  color: #ffffff;
}

.prog-card--detail { margin-bottom: 28px; }
.featured-image-wrap { border-radius: var(--radius); overflow: hidden; margin-bottom: 28px; }
.back-link { margin-top: 32px; }
.events-subhead { margin-bottom: 18px; font-size: 1.25rem; }
.error-404-search { margin-top: 32px; max-width: 480px; margin-left: auto; margin-right: auto; }

/* =============================================================================
   @seccion-25 — COMPONENTES REUTILIZABLES
   ============================================================================= */

/* Section header modifier for dark/colored backgrounds */
.section-head--light h2,
.section-head--light h3,
.section-head--light .eyebrow { color: #fff; }
.section-head--light p { color: rgba(255,255,255,0.8); }

/* Generic responsive grids for component listings */
.component-grid { display: grid; grid-template-columns: 1fr; gap: 18px; }
@media (min-width: 600px) {
  .component-grid--2 { grid-template-columns: repeat(2, 1fr); }
  .component-grid--3 { grid-template-columns: repeat(2, 1fr); }
  .component-grid--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 900px) {
  .component-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .component-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

/* Service card */
.service-card {
  display: flex; flex-direction: column; gap: 14px; padding: 28px 24px; height: 100%;
  background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius);
  transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.service-card:hover { transform: translateY(var(--hover-large-y)); box-shadow: var(--elevation-3); border-color: transparent; }
.service-card .ico {
  width: 54px; height: 54px; border-radius: 14px; /* LEGACY radius 14px — Fase 14.2 */
  display: grid; place-items: center;
  background: var(--color-bg-soft); color: var(--color-navy);
  transition: background var(--transition), color var(--transition);
}
.service-card:hover .ico { background: var(--color-navy); color: #fff; }
.service-card .ico svg { width: 40px; height: 40px; } /* LEGACY icon 40px — fuera de escala xs–xl */
.service-card h3 { font-size: 1.15rem; margin: 0; }
.service-card p { font-size: 0.92rem; margin: 0; flex: 1; }
.service-card .read-more {
  font-family: var(--font-head); font-weight: 600; color: var(--color-green);
  display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem;
}
.service-card .read-more svg { width: var(--icon-sm); height: var(--icon-sm); transition: transform var(--transition); }
.service-card:hover .read-more svg { transform: translateX(4px); }

/* Campus card */
.campus-card {
  display: flex; flex-direction: column; height: 100%; background: var(--card-bg); overflow: hidden;
  border: 1px solid var(--card-border); border-radius: var(--radius);
  transition: transform var(--transition), box-shadow var(--transition);
}
.campus-card:hover { transform: translateY(var(--hover-large-y)); box-shadow: var(--elevation-3); }
.campus-card .thumb { aspect-ratio: 16/10; overflow: hidden; }
.campus-card .thumb img { width: 100%; height: 100%; object-fit: cover; }
.campus-card .body { padding: 22px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.campus-card h3 { font-size: 1.2rem; margin: 0; }
.campus-card .meta { display: flex; flex-direction: column; gap: 8px; font-size: 0.9rem; color: var(--color-text-soft); }
.campus-card .meta span { display: inline-flex; align-items: flex-start; gap: 8px; }
.campus-card .meta a { color: var(--color-text-soft); }
.campus-card .meta a:hover { color: var(--color-green); }
.campus-card .meta svg { width: var(--icon-md); height: var(--icon-md); color: var(--color-green); flex-shrink: 0; margin-top: 2px; }
.campus-card .actions { margin-top: auto; padding-top: 8px; }

/* Institutional card */
.inst-card {
  display: flex; flex-direction: column; gap: 12px; padding: 26px 22px; height: 100%;
  background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius);
  border-top: 4px solid var(--color-navy);
  transition: transform var(--transition), box-shadow var(--transition), border-top-color var(--transition);
}
.inst-card:hover { transform: translateY(var(--hover-large-y)); box-shadow: var(--elevation-3); border-top-color: var(--color-green); }
.inst-card .ico {
  width: 46px; height: 46px; border-radius: var(--radius-md); display: grid; place-items: center;
  background: var(--color-bg-soft); color: var(--color-navy);
}
.inst-card .ico svg { width: var(--icon-xl); height: var(--icon-xl); }
.inst-card h3 { font-size: 1.1rem; margin: 0; }
.inst-card p { font-size: 0.9rem; margin: 0; flex: 1; }
.inst-card .read-more {
  font-family: var(--font-head); font-weight: 600; color: var(--color-green);
  display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem;
}
.inst-card .read-more svg { width: var(--icon-sm); height: var(--icon-sm); transition: transform var(--transition); }
.inst-card:hover .read-more svg { transform: translateX(4px); }

/* =============================================================================
   @seccion-26 — AJUSTES VISUALES GLOBALES
   Oferta académica, estadísticas, eventos y refinamiento institucional.
   ============================================================================= */
.offer-cta { text-align: center; margin-top: 25px; }

/* Faculty card: always-visible description + CTA (no hover-only content) */
.fac-card .fac-desc { color: rgba(255,255,255,0.85); font-size: 0.85rem; }

.stats .section-head { margin-bottom: 20px; }
.stats-grid--5 { grid-template-columns: repeat(2, 1fr); }
@media (min-width: 600px) { .stats-grid--5 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1000px) { .stats-grid--5 { grid-template-columns: repeat(5, 1fr); } }

.empty-state { text-align: center; color: var(--color-text-muted); padding: 24px 0; }
.offer-cta--left { text-align: left; margin-top: 18px; }
.event-info h4 { font-size: 1.05rem; margin: 0 0 8px; }
.event-info h4 a { color: var(--color-navy); }
.event-info h4 a:hover { color: var(--color-green); }

/* =============================================================================
   @seccion-26 — AJUSTES VISUALES GLOBALES (continuación)
   ============================================================================= */

/* Buttons: large variant for primary hero/CTA actions */
/* LEGACY — btn-lg canonical en FASE 14.0 BUTTONS */
.hero-actions .btn-primary { box-shadow: var(--elevation-2); }
.hero-actions { gap: 16px; margin-top: 4px; }
@media (min-width: 768px)  { .section { padding: var(--section-padding-y-md) 0; } }
@media (min-width: 1200px) { .section { padding: calc(var(--section-padding-y-md) - 31px) 0; } }

/* Header: desktop animated active/hover underline */
@media (min-width: 992px) {
  .primary-nav .nav-menu > li > a,
  .primary-nav .nav-menu > li > .nav-item__row > a { position: relative; }
  .primary-nav .nav-menu > li > a::after,
  .primary-nav .nav-menu > li > .nav-item__row > a::after {
    content: "";
    position: absolute;
    left: clamp(7px, 0.5vw, 11px);
    right: clamp(7px, 0.5vw, 11px);
    bottom: 7px;
    height: 2px;
    background: var(--color-accent);
    border-radius: 2px;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform var(--transition-hover);
  }
  .primary-nav .nav-menu > li > a:hover::after,
  .primary-nav .nav-menu > li > .nav-item__row > a:hover::after,
  .primary-nav .current-menu-item > .nav-item__row > a::after,
  .primary-nav .current-menu-item > a::after,
  .primary-nav [aria-current="page"]::after { transform: scaleX(1); }
}

/* News: clamp headlines to 3 lines for consistent card alignment */
.news-card h3 { margin: 0 0 6px; }
.news-card h3 a {
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden; color: var(--color-navy);
}
.news-card h3 a:hover { color: var(--color-green); }
.news-card.featured p {
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}

/* Faculties: showcase cards — accent bar, prominent CTA pill */
.fac-card::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; z-index: 2;
  background: var(--color-green); opacity: 0.9;
}
.fac-card .fac-overlay .btn {
  background: var(--color-green); border-color: var(--color-green); color: #fff;
}
.fac-card .fac-overlay .btn:hover {
  background: #fff; border-color: #fff; color: var(--color-navy);
}

/* Footer: institutional accent + accessibility/utility links */
.site-footer { border-top: 4px solid var(--color-green); }
.footer-contact strong { color: #fff; font-family: var(--font-head); font-weight: 600; }
.footer-col > h4 { position: relative; padding-bottom: 8px; margin-bottom: 8px; }
.footer-col > h4::after {
  content: ""; position: absolute; left: 0; bottom: 0; width: 34px; height: 2px; background: var(--color-green);
}

/* =============================================================================
   @seccion-26 — AJUSTES VISUALES GLOBALES (continuación)
   Consolidación tipográfica y contraste en secciones institucionales.
   ============================================================================= */
body {
  background: var(--surface-body);
}

p,
.section-head p,
.unaf-tv .tv-desc {
  color: var(--text-on-surface-soft);
}

/* Texto sobre chrome navy — no heredar colores de superficie clara */
.page-hero .page-hero-lead,
.page-hero p.page-hero-lead {
  color: var(--text-on-chrome-soft);
}

.archive-text p {
  color: var(--text-on-chrome-soft);
}

.section-navy .section-head p {
  color: var(--text-on-chrome-muted);
}

.hero .hero-excerpt,
.hero .lead {
  color: rgba(255, 255, 255, 0.92);
}

.hero .hero-eyebrow {
  color: var(--color-accent);
}

.section {
  padding: var(--section-padding-y) 0;
  background: var(--surface-base);
}

.section-soft {
  background: var(--surface-muted);
}

[data-theme="dark"] .section-soft {
  background:
    radial-gradient(circle at 14% 4%, rgba(77, 163, 255, 0.1), transparent 34%),
    linear-gradient(180deg, #071833 0%, var(--background-dark) 100%);
}

.section-head h2,
.section-head h3,
.quick-access-heading,
.archive-text h2,
.unaf-tv .section-head h2 {
  color: var(--heading-color);
  font-weight: 700;
  letter-spacing: -0.01em;
}

.section-head {
  margin-bottom: var(--space-8);
}

.section-head .eyebrow,
.hero-eyebrow,
.page-hero .eyebrow,
.archive-text .eyebrow,
.prog-card .level,
.event-info .cat-tag {
  color: var(--color-accent);
  letter-spacing: 2px;
  text-transform: uppercase;
  font-weight: 600;
}

.btn,
.filter-btn,
.read-more {
  border-radius: var(--radius-md);
  font-weight: 600;
  transition: var(--action-transition);
}

.filter-btn {
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.88rem;
  padding: 9px var(--space-4);
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border);
  background: var(--surface-base);
  color: var(--text-on-surface-soft);
  cursor: pointer;
}

.filter-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--hover-medium-shadow);
}

.filter-btn.is-active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: var(--color-white);
}

.read-more {
  font-family: var(--font-head);
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}

.read-more:hover {
  transform: translateY(var(--hover-medium-y));
}

[data-theme="dark"] .btn-outline {
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.42);
}

.btn-outline:hover {
  background: var(--color-primary);
  color: var(--color-white);
  border-color: var(--color-primary);
  box-shadow: var(--hover-medium-shadow);
}

[data-theme="dark"] .btn-outline:hover {
  background: #ffffff;
  color: var(--color-primary);
  border-color: #ffffff;
}

.site-footer,
.page-hero,
.archive-section,
.section-navy:not(.unaf-tv) {
  background:
    radial-gradient(circle at 20% 0%, rgba(77, 163, 255, 0.16), transparent 36%),
    linear-gradient(180deg, var(--color-primary) 0%, var(--background-dark) 100%);
}

.footer-social a,
.archive-doc-card {
  box-shadow: none;
}

.footer-social a:hover {
  box-shadow: var(--shadow);
}

/* =============================================================================
   @seccion-27 — SERVICIOS UNAF EN HOME
   Tarjetas SIU Guaraní, eLibro, trámites, etc.
   ============================================================================= */
.section-unaf-services {
  padding: clamp(28px, 3.5vw, 44px) 0;
  background: var(--surface-base);
  overflow: visible;
}

.section-unaf-services .container,
.unaf-services__inner {
  overflow: visible;
}

.unaf-services__header {
  margin-bottom: clamp(20px, 3vw, 28px);
  text-align: center;
}

.unaf-services__title {
  margin: 0 0 10px;
  font-family: var(--font-head);
  font-size: clamp(1.35rem, 2.2vw, 1.75rem);
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: var(--heading-color);
}

.unaf-services__lead {
  margin: 0 auto;
  max-width: 42ch;
  font-size: clamp(0.92rem, 1.4vw, 1.05rem);
  line-height: 1.55;
  color: var(--text-on-surface-soft);
}

.unaf-services__grid {
  --us-gap: clamp(10px, 1.5vw, 14px);
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--us-gap);
  align-items: stretch;
  width: 100%;
  max-width: 100%;
}

.unaf-services-card {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  min-width: 0;
  min-height: 0;
  padding: clamp(14px, 2vw, 18px);
  border-radius: var(--radius-md);
  background: #ffffff;
  border: 1px solid rgba(77, 163, 255, 0.38);
  box-shadow: var(--shadow-card);
  color: var(--color-primary);
  text-decoration: none;
  text-align: left;
  transition: transform 0.12s ease, box-shadow 0.12s ease, border-color 0.12s ease, background 0.12s ease;
}

.unaf-services-card:hover {
  transform: translateY(var(--hover-medium-y));
  border-color: var(--color-accent);
  background: var(--surface-muted);
  color: var(--color-primary);
  box-shadow: var(--shadow-card-hover);
}

.unaf-services-card:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

.unaf-services-card[aria-disabled="true"] {
  opacity: 0.72;
  cursor: not-allowed;
  pointer-events: none;
}

.unaf-services-card__icon {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(77, 163, 255, 0.1);
  border: 1px solid rgba(77, 163, 255, 0.28);
  color: var(--color-accent);
}

.unaf-services-card:hover .unaf-services-card__icon {
  background: rgba(77, 163, 255, 0.16);
  color: var(--color-primary-light);
}

.unaf-services-card__icon svg {
  width: var(--icon-md); height: var(--icon-md);
}

.unaf-services-card__title {
  margin: 0;
  font-family: var(--font-head);
  font-size: clamp(0.88rem, 1.1vw, 0.98rem);
  font-weight: 700;
  line-height: 1.3;
  color: var(--color-primary);
}

.unaf-services-card__desc {
  margin: 0;
  font-size: clamp(0.8rem, 1vw, 0.88rem);
  line-height: 1.45;
  color: var(--color-text-soft);
}

.unaf-services-card__badge {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  border-radius: var(--radius-full);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  vertical-align: middle;
  background: rgba(77, 163, 255, 0.14);
  border: 1px solid rgba(77, 163, 255, 0.35);
  color: var(--color-primary-light);
}

@media (min-width: 600px) {
  .unaf-services__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 1024px) {
  .unaf-services__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

[data-theme="dark"] .unaf-services-card {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(77, 163, 255, 0.32);
  color: var(--text-on-surface);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

[data-theme="dark"] .unaf-services-card:hover {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(77, 163, 255, 0.48);
  color: var(--text-on-surface);
}

[data-theme="dark"] .unaf-services-card__title {
  color: #ffffff;
}

[data-theme="dark"] .unaf-services-card__desc {
  color: #cfd8e3;
}

[data-theme="dark"] .unaf-services-card__badge {
  background: rgba(77, 163, 255, 0.18);
  border-color: rgba(77, 163, 255, 0.42);
  color: #ffffff;
}

.section-facultades-home {
  padding-top: var(--section-padding-y);
  padding-bottom: var(--section-padding-y);
}

.section-facultades-home .fac-card,
.fac-card {
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--elevation-2);
}

.section-facultades-home .fac-card:hover,
.fac-card:hover {
  transform: translateY(-8px); /* LEGACY motion — Portal Card showcase; excepción Fase 14.0 */
  box-shadow: var(--elevation-3);
}

.fac-card .fac-overlay,
.section-facultades-home .fac-card .fac-overlay {
  background: linear-gradient(
    to top,
    rgba(6, 21, 45, 0.98) 0%,
    rgba(0, 31, 84, 0.72) 52%,
    rgba(0, 59, 142, 0.18) 100%
  );
}

.fac-card:hover .fac-overlay,
.section-facultades-home .fac-card:hover .fac-overlay {
  background: linear-gradient(
    to top,
    rgba(0, 31, 84, 0.98) 0%,
    rgba(0, 59, 142, 0.72) 58%,
    rgba(77, 163, 255, 0.26) 100%
  );
}

.fac-card-title,
.section-facultades-home .fac-card-title {
  color: #ffffff;
  font-weight: 700;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.42);
}

.fac-card .fac-desc,
.section-facultades-home .fac-card .fac-desc {
  color: var(--text-on-chrome-soft);
  line-height: 1.5;
}

.section-facultades-home .fac-card-meta {
  color: var(--color-accent);
  letter-spacing: 2px;
}

/* LEGACY — Phase 10.6 override editorial cards (radius 20px fuera de escala); mantener apariencia */
.news-card,
.prog-card,
.event-item,
.calendar-card,
.service-card,
.campus-card,
.inst-card {
  border-radius: 20px;
  border-color: rgba(207, 216, 227, 0.22);
  box-shadow: var(--elevation-2);
}

.news-card:hover,
.prog-card:hover,
.event-item:hover,
.service-card:hover,
.campus-card:hover,
.inst-card:hover {
  box-shadow: var(--elevation-3);
}

.news-card h3 a,
.prog-card h3,
.event-info h3,
.event-info h4 a,
.service-card h3,
.campus-card h3,
.inst-card h3 {
  color: var(--heading-color);
}

.news-card p,
.prog-card .meta,
.event-info .meta,
.service-card p,
.campus-card .meta,
.inst-card p {
  color: var(--text-on-surface-soft);
}

.news-card .cat,
.prog-card,
.fac-card::before,
.site-footer {
  border-color: var(--color-accent);
}

.news-card .cat,
.fac-card::before {
  background: var(--color-accent);
}

.news-card .read-more,
.service-card .read-more,
.inst-card .read-more,
.calendar-card h3 svg,
.campus-card .meta svg,
.footer-contact svg,
.stat .num .suffix {
  color: var(--color-accent);
}

.unaf-tv .tv-embed,
.unaf-tv .tv-video--featured .tv-embed,
.unaf-tv .tv-video:hover .tv-embed {
  box-shadow: var(--elevation-3);
}

@media (min-width: 768px) {
  .section,
  .section-unaf-services,
  .section-facultades-home {
    padding: var(--section-padding-y-md) 0;
  }
}

@media (max-width: 640px) {
  .section,
  .section-facultades-home {
    padding: var(--section-padding-y-sm) 0;
  }

  .section-unaf-services {
    padding: var(--space-8) 0;
  }
}


@media (min-width: 992px) {
  .search-backdrop { display: none !important; }
}

/* =============================================================================
   @seccion-28 — HOME: BANDAS CLARAS INSTITUCIONALES
   ============================================================================= */
body.home .section-unaf-services,
body.home .section-facultades-home,
body.home .section-facultades-home + .section:not(.unaf-tv),
body.home .unaf-tv {
  position: relative;
}

body.home .section-unaf-services {
  background: var(--surface-base);
  border-bottom: 1px solid var(--color-border);
}

body.home .section-facultades-home {
  background: var(--surface-base);
}

body.home .section-facultades-home + .section:not(.unaf-tv) {
  background: var(--surface-news);
}

body.home .unaf-tv {
  background: var(--surface-base);
  border-top: 1px solid var(--color-border);
}

body.home .section-facultades-home .section-head h2,
body.home .section-facultades-home + .section:not(.unaf-tv) .section-head h2,
body.home .unaf-tv .section-head h2 {
  color: var(--heading-color);
}

body.home .section-facultades-home .section-head p,
body.home .section-facultades-home + .section:not(.unaf-tv) .section-head p {
  color: var(--text-on-surface-soft);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .section-head h2 {
  font-size: clamp(1.85rem, 3.5vw, 2.5rem);
}

body.home .unaf-tv .section-head h2 {
  font-size: clamp(1.55rem, 2.8vw, 2rem);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .filters--news {
  margin-bottom: var(--space-8);
  padding: var(--space-3) 14px;
  border-radius: 14px; /* LEGACY radius 14px — filter bar; Fase 14.2 */
  background: var(--surface-base);
  border: 1px solid var(--color-border);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .filter-btn {
  background: var(--surface-base);
  border-color: var(--color-border);
  color: var(--text-on-surface-soft);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .filter-btn:hover {
  border-color: rgba(77, 163, 255, 0.45);
  color: var(--color-primary);
  background: var(--surface-muted);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .filter-btn.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-primary);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card {
  background: var(--surface-base);
  border-color: var(--color-border);
  box-shadow: var(--shadow-card);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card:hover {
  transform: translateY(-3px); /* LEGACY motion -3px — Home noticias scoped */
  box-shadow: var(--shadow-card-hover);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card h3 a {
  color: var(--color-primary);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card p {
  color: var(--color-text-soft);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card .date {
  color: var(--color-text-muted);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .empty-state {
  color: var(--text-on-surface-soft);
}

body.home .unaf-tv .tv-embed,
body.home .unaf-tv .tv-video--featured .tv-embed,
body.home .unaf-tv .tv-video:hover .tv-embed {
  box-shadow: var(--shadow-card);
}

body.home .unaf-tv .tv-video:hover .tv-embed {
  transform: translateY(var(--hover-medium-y));
  box-shadow: var(--shadow-card-hover);
}

body.home .unaf-tv .tv-title {
  color: var(--heading-color);
}

body.home .unaf-tv .tv-desc {
  color: var(--text-on-surface-soft);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .filters--news {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.12);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .filter-btn {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.2);
  color: var(--text-on-surface-soft);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .filter-btn:hover {
  background: rgba(255, 255, 255, 0.14);
  color: var(--text-on-surface);
}

@media (min-width: 768px) {
  body.home .section-facultades-home + .section:not(.unaf-tv),
  body.home .unaf-tv {
    padding: 80px 0;
  }
}

@media (max-width: 640px) {
  body.home .section-facultades-home + .section:not(.unaf-tv),
  body.home .unaf-tv {
    padding: 56px 0;
  }
}

[data-theme="dark"] body.home .section-unaf-services,
[data-theme="dark"] body.home .section-facultades-home,
[data-theme="dark"] body.home .unaf-tv {
  border-color: rgba(255, 255, 255, 0.1);
}

/* =============================================================================
   @seccion-29 — HOME: CORRECCIONES VISUALES Y HEADER FLOTANTE
   ============================================================================= */

/* Header / hero — continuidad sin franja al volver arriba */
body.home .site-header-layout {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1100;
}

body.home .site-header {
  box-shadow: none;
}

@media (min-width: 992px) {
  body.home .primary-nav {
    z-index: 1101;
  }

  body.home .primary-nav .sub-menu {
    z-index: 1102;
  }
}

@media (max-width: 991px) {
  body.home .site-header-layout {
    z-index: var(--z-mobile-header);
  }
}

body.home #main {
  margin: 0;
  padding: 0;
}

body.home .hero,
body.home .hero--news,
body.home .hero-institucional {
  margin: 0;
}

body.home .hero--news .hero-slides {
  margin: 0;
}

body.home .section-unaf-services {
  margin-top: 0;
  border-top: none;
  border-bottom: 1px solid var(--color-border);
}

/* Comunicación Institucional — sizing consolidated in PHASE 10.6.2 */
body.home .unaf-tv {
  padding-top: clamp(32px, 4vw, 44px);
  padding-bottom: clamp(32px, 4vw, 44px);
}

body.home .unaf-tv .tv-grid {
  max-width: 760px;
  margin-inline: auto;
  gap: 18px;
}

body.home .unaf-tv .tv-secondary {
  gap: 14px;
}

body.home .unaf-tv .tv-meta {
  margin-top: 8px;
}

body.home .unaf-tv .offer-cta {
  margin-top: 14px;
}

/* Noticias dark — consolidated in PHASE 10.6.2 */
/* Mobile refinements: 360–430px */
@media (max-width: 430px) {
  .header-chip-btn svg {
    width: var(--icon-sm); height: var(--icon-sm);
  }

  .unaf-services__grid {
    --us-gap: 8px;
  }

  .unaf-services-card {
    padding: 12px 10px;
    gap: 8px;
  }

  .unaf-services-card__icon {
    width: 36px;
    height: 36px;
  }

  .unaf-services-card__icon svg {
    width: var(--icon-sm); height: var(--icon-sm);
  }

  .unaf-services__title {
    font-size: 1.2rem;
    margin-bottom: 8px;
  }

  body.home .unaf-tv .tv-video--featured .tv-embed {
    max-height: min(58vw, 300px);
  }

  body.home .unaf-tv .tv-secondary .tv-embed {
    max-height: min(46vw, 230px);
  }
}

@media (min-width: 360px) and (max-width: 430px) {
  .theme-toggle__icon {
    font-size: 0.95rem;
  }
}

/* =============================================================================
   @seccion-30 — HOME: ESTABILIZACIÓN MODO OSCURO
   Noticias, TV institucional y ajustes de contraste en Home.
   ============================================================================= */
[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) {
  background: var(--surface-news);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .filter-btn.is-active {
  color: var(--color-primary);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .news-card .read-more {
  color: var(--color-accent);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .offer-cta .btn-outline {
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.42);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .offer-cta .btn-outline:hover {
  background: #ffffff;
  color: var(--color-primary);
}

/* =============================================================================
   @seccion-31 — PULIDO: HERO SLIDER, FOOTER, VOLVER ARRIBA
   ============================================================================= */

/* Footer — contraste fijo (no heredar --text-body del body en light mode) */
.site-footer,
.site-footer .footer-col h4,
.site-footer .footer-brand-title,
.site-footer .footer-contact li strong {
  color: #ffffff;
}

.site-footer .footer-col a,
.site-footer .footer-contact li,
.site-footer .footer-contact li span,
.site-footer .footer-bottom,
.site-footer .footer-credit {
  color: rgba(255, 255, 255, 0.94);
}

.site-footer .footer-contact svg {
  color: var(--color-accent);
}

/* Hero slider — legibilidad sobre imagen */
.hero--news .hero-eyebrow {
  color: var(--color-accent);
  text-shadow: 0 1px 8px rgba(0, 20, 45, 0.45);
}

.hero--news .hero-headline {
  color: #ffffff;
  text-shadow: 0 2px 18px rgba(0, 20, 45, 0.55);
}

.hero--news .hero-excerpt {
  color: rgba(255, 255, 255, 0.94);
  text-shadow: 0 1px 10px rgba(0, 20, 45, 0.5);
}

/* Back to top */
.back-to-top {
  position: fixed;
  right: clamp(16px, 3vw, 24px);
  bottom: clamp(16px, 3vw, 24px);
  z-index: 1900;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid rgba(77, 163, 255, 0.45);
  border-radius: var(--radius-full);
  background: var(--surface-base);
  color: var(--color-primary);
  box-shadow: var(--elevation-2);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(8px);
  transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease, background 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}

.back-to-top.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

.back-to-top:hover {
  border-color: var(--color-accent);
  background: var(--surface-muted);
  box-shadow: var(--elevation-2);
}

.back-to-top__icon {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}

.back-to-top__icon svg {
  width: var(--icon-md); height: var(--icon-md);
}

[data-theme="dark"] .back-to-top {
  background: rgba(6, 21, 45, 0.92);
  border-color: rgba(77, 163, 255, 0.5);
  color: #ffffff;
}

[data-theme="dark"] .back-to-top:hover {
  background: rgba(0, 31, 84, 0.95);
  border-color: var(--color-accent);
}

@media (max-width: 430px) {
  .back-to-top {
    width: 44px;
    height: 44px;
    right: 14px;
    bottom: 14px;
  }
}

/* =============================================================================
   @seccion-32 — ESTABILIZACIÓN FINAL
   Overflow mobile, navegación desktop y chips del header.
   ============================================================================= */

/* Mobile — sin overflow horizontal */
html,
body {
  max-width: 100%;
}

@media (max-width: 991px) {
  html {
    overflow-x: clip;
  }

  body {
    overflow-x: visible;
  }
}

/* Header — navegación consistente (desktop; el drawer mobile tiene reglas propias) */
@media (min-width: 992px) {
  [data-theme="light"] .primary-nav a,
  [data-theme="light"] .site-header-layout.is-scrolled ~ .primary-nav a {
    color: var(--color-text-soft);
  }

  [data-theme="light"] .primary-nav a:hover,
  [data-theme="light"] .site-header-layout.is-scrolled ~ .primary-nav a:hover,
  [data-theme="light"] .primary-nav .current-menu-item > a,
  [data-theme="light"] .primary-nav [aria-current="page"],
  [data-theme="light"] .site-header-layout.is-scrolled ~ .primary-nav .current-menu-item > a,
  [data-theme="light"] .site-header-layout.is-scrolled ~ .primary-nav [aria-current="page"] {
    color: var(--color-primary);
  }

  [data-theme="dark"] .primary-nav a,
  [data-theme="dark"] .site-header-layout.is-scrolled ~ .primary-nav a {
    color: var(--text-on-surface-soft);
  }

  [data-theme="dark"] .primary-nav a:hover,
  [data-theme="dark"] .site-header-layout.is-scrolled ~ .primary-nav a:hover,
  [data-theme="dark"] .primary-nav .current-menu-item > a,
  [data-theme="dark"] .primary-nav [aria-current="page"],
  [data-theme="dark"] .site-header-layout.is-scrolled ~ .primary-nav .current-menu-item > a,
  [data-theme="dark"] .site-header-layout.is-scrolled ~ .primary-nav [aria-current="page"] {
    color: var(--text-on-surface);
  }
}

/* Header — chips de acción (tema + búsqueda + menú) — FASE 15.4.1 */
[data-theme="light"] .site-header .theme-toggle,
[data-theme="light"] .site-header .header-chip-btn,
[data-theme="light"] .site-header.is-scrolled .theme-toggle,
[data-theme="light"] .site-header.is-scrolled .header-chip-btn {
  background: var(--surface-base);
  border-color: color-mix(in srgb, var(--color-border) 88%, transparent);
  color: var(--color-primary);
}

[data-theme="light"] .site-header .theme-toggle:hover,
[data-theme="light"] .site-header .header-chip-btn:hover,
[data-theme="light"] .site-header.is-scrolled .theme-toggle:hover,
[data-theme="light"] .site-header.is-scrolled .header-chip-btn:hover {
  background: color-mix(in srgb, var(--color-accent) 6%, transparent);
  border-color: color-mix(in srgb, var(--color-accent) 35%, transparent);
  color: var(--color-primary);
  box-shadow: none;
  transform: none;
}

[data-theme="dark"] .site-header .theme-toggle,
[data-theme="dark"] .site-header .header-chip-btn,
[data-theme="dark"] .site-header.is-scrolled .theme-toggle,
[data-theme="dark"] .site-header.is-scrolled .header-chip-btn {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.88);
}

[data-theme="dark"] .site-header .theme-toggle:hover,
[data-theme="dark"] .site-header .header-chip-btn:hover,
[data-theme="dark"] .site-header.is-scrolled .theme-toggle:hover,
[data-theme="dark"] .site-header.is-scrolled .header-chip-btn:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.2);
  color: rgba(255, 255, 255, 0.96);
  box-shadow: none;
  transform: none;
}

/* Noticias — contraste claro y oscuro */
body.home .section-facultades-home + .section:not(.unaf-tv) .news-card h3 a {
  color: var(--color-primary);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card p {
  color: var(--color-text-soft);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card .date {
  color: var(--color-text-muted);
}

body.home .section-facultades-home + .section:not(.unaf-tv) .news-card .read-more {
  color: var(--color-accent);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .section-head h2 {
  color: #ffffff;
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .section-head p {
  color: #cfd8e3;
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .news-card {
  background: rgba(255, 255, 255, 0.07);
  border-color: rgba(255, 255, 255, 0.16);
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .news-card h3 a {
  color: #ffffff;
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .news-card p {
  color: #cfd8e3;
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .news-card .date {
  color: #9ca3af;
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .empty-state {
  color: #cfd8e3;
}

[data-theme="dark"] body.home .section-facultades-home + .section:not(.unaf-tv) .btn-outline {
  color: #ffffff;
  border-color: rgba(255, 255, 255, 0.42);
}

/* Comunicación institucional — punto medio */
body.home .unaf-tv .tv-video--featured .tv-embed {
  max-height: clamp(340px, 44vw, 520px);
  aspect-ratio: 16 / 9;
}

body.home .unaf-tv .tv-secondary .tv-embed {
  max-height: clamp(250px, 24vw, 300px);
}

body.home .unaf-tv .tv-video--featured .tv-title {
  font-size: clamp(1.05rem, 1.9vw, 1.25rem);
}

@media (max-width: 430px) {
  body.home .unaf-tv .tv-video--featured .tv-embed {
    max-height: min(58vw, 300px);
  }

  body.home .unaf-tv .tv-secondary .tv-embed {
    max-height: min(46vw, 230px);
  }
}

/* Footer — compacto, alineado, legible */
.site-footer .footer-social a {
  width: 44px;
  height: 44px;
}

.site-footer .footer-social svg {
  width: var(--icon-md); height: var(--icon-md);
}

/* Back to top — refinado */
.back-to-top {
  width: 48px;
  height: 48px;
  box-shadow: var(--elevation-1);
  transition: opacity 0.28s ease, visibility 0.28s ease, transform 0.28s ease, background 0.12s ease, border-color 0.12s ease, box-shadow 0.12s ease;
}

.back-to-top:hover {
  box-shadow: var(--elevation-2);
}

.back-to-top__icon svg {
  width: var(--icon-md); height: var(--icon-md);
}

/* =============================================================================
   @seccion-33 — DETALLE DE NOTICIA (modo oscuro)
   ============================================================================= */

[data-theme="dark"] body.single-post .entry-title,
[data-theme="dark"] body.single-post .post-title,
[data-theme="dark"] body.single-post .single-post-title,
[data-theme="dark"] body.single-post .hero-title,
[data-theme="dark"] body.single-archivo_noticia .entry-title,
[data-theme="dark"] body.single-archivo_noticia .single-noticia-title,
[data-theme="dark"] body.single-archivo_noticia .hero-title,
[data-theme="dark"] .archivo-noticia-single .entry-title,
[data-theme="dark"] .single-noticia .entry-title,
[data-theme="dark"] .single-post-article.type-post .entry-title {
  color: #ffffff;
}

[data-theme="dark"] body.single-post .entry-meta,
[data-theme="dark"] body.single-post .entry-date,
[data-theme="dark"] body.single-post .single-post-meta,
[data-theme="dark"] body.single-archivo_noticia .entry-meta,
[data-theme="dark"] body.single-archivo_noticia .entry-date,
[data-theme="dark"] body.single-archivo_noticia .single-noticia-meta,
[data-theme="dark"] .archivo-noticia-single .entry-meta,
[data-theme="dark"] .archivo-noticia-single .entry-date {
  color: rgba(255, 255, 255, 0.75);
}

[data-theme="dark"] body.single-post .entry-eyebrow,
[data-theme="dark"] body.single-post .single-post-eyebrow,
[data-theme="dark"] body.single-archivo_noticia .entry-eyebrow,
[data-theme="dark"] body.single-archivo_noticia .single-noticia-eyebrow,
[data-theme="dark"] .archivo-noticia-single .entry-eyebrow {
  color: var(--color-accent);
}

[data-theme="dark"] body.single-post .entry-meta strong,
[data-theme="dark"] body.single-archivo_noticia .entry-meta strong {
  color: rgba(255, 255, 255, 0.75);
}

[data-theme="dark"] body.single-post .entry-content,
[data-theme="dark"] body.single-archivo_noticia .entry-content,
[data-theme="dark"] .single-post-article .entry-content,
[data-theme="dark"] .archivo-noticia-single .entry-content {
  color: rgba(255, 255, 255, 0.88);
}

[data-theme="dark"] body.single-post .entry-content p,
[data-theme="dark"] body.single-post .entry-content li,
[data-theme="dark"] body.single-archivo_noticia .entry-content p,
[data-theme="dark"] body.single-archivo_noticia .entry-content li,
[data-theme="dark"] .archivo-noticia-single .entry-content p,
[data-theme="dark"] .archivo-noticia-single .entry-content li {
  color: rgba(255, 255, 255, 0.88);
}

[data-theme="dark"] body.single-post .entry-content h2,
[data-theme="dark"] body.single-post .entry-content h3,
[data-theme="dark"] body.single-post .entry-content h4,
[data-theme="dark"] body.single-archivo_noticia .entry-content h2,
[data-theme="dark"] body.single-archivo_noticia .entry-content h3,
[data-theme="dark"] body.single-archivo_noticia .entry-content h4,
[data-theme="dark"] .archivo-noticia-single .entry-content h2,
[data-theme="dark"] .archivo-noticia-single .entry-content h3,
[data-theme="dark"] .archivo-noticia-single .entry-content h4 {
  color: #ffffff;
}

[data-theme="dark"] .archivo-noticia-single__legacy,
[data-theme="dark"] .archivo-noticia-single__legacy h2 {
  color: #ffffff;
}

[data-theme="dark"] .archivo-noticia-single__legacy li,
[data-theme="dark"] .archivo-noticia-single__legacy a {
  color: rgba(255, 255, 255, 0.75);
}

[data-theme="dark"] .archivo-noticia-single__legacy a:hover {
  color: var(--color-accent);
}

/* =============================================================================
   @seccion-34 — PLATAFORMA ELIBRO
   Landing de biblioteca digital, recursos, contactos y tutoriales.
   ============================================================================= */

/* "Disponible para" audience chips */
.elibro-audience {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 14px;
  margin-top: 36px;
}
.elibro-audience__label {
  font-family: var(--font-head);
  font-weight: 600;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-size: 0.78rem;
  color: var(--color-accent);
}
.elibro-audience__list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}
.elibro-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 18px;
  border-radius: var(--radius-full);
  background: rgba(77, 163, 255, 0.12);
  border: 1px solid rgba(77, 163, 255, 0.32);
  color: var(--color-primary);
  font-family: var(--font-head);
  font-weight: 600;
  font-size: 0.9rem;
}
.elibro-chip svg { width: var(--icon-sm); height: var(--icon-sm); color: var(--color-accent); }

[data-theme="dark"] .elibro-chip {
  color: #ffffff;
}

/* Accesos rápidos — glass cards over the showcase background */
.elibro-access-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(18px, 2.4vw, 26px);
  max-width: 880px;
  margin: 0 auto;
}
.elibro-access-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 12px;
  padding: clamp(28px, 4vw, 38px) clamp(22px, 3vw, 30px);
  border-radius: 20px; /* LEGACY radius 20px — glass showcase; Fase 14.2 */
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.18);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: var(--elevation-2);
  transition: transform var(--motion-duration) var(--motion-ease),
    box-shadow var(--motion-duration) var(--motion-ease),
    border-color var(--motion-duration) var(--motion-ease),
    background-color var(--motion-duration) var(--motion-ease);
}
.elibro-access-card:hover {
  transform: translateY(-6px); /* LEGACY motion — glass Access Card; excepción Fase 14.0 */
  border-color: rgba(77, 163, 255, 0.46);
  background: rgba(255, 255, 255, 0.12);
  box-shadow: var(--elevation-3);
}
.elibro-access-card__icon {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border-radius: var(--radius-circle);
  background: rgba(77, 163, 255, 0.14);
  border: 1px solid rgba(77, 163, 255, 0.26);
  color: var(--color-accent);
}
.elibro-access-card__icon svg { width: 26px; height: 26px; } /* LEGACY icon 26px — fuera de escala xs–xl */
.elibro-access-card__title {
  color: #ffffff;
  font-size: 1.25rem;
  margin: 4px 0 0;
}
.elibro-access-card__desc {
  color: var(--text-on-chrome-soft);
  font-size: 0.95rem;
  margin: 0 0 6px;
}
.elibro-access-card .btn { margin-top: auto; }
@media (min-width: 640px) {
  .elibro-access-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Horarios + contactos — un único sistema visual de 4 tarjetas bajo un
   encabezado centrado que representa a todo el bloque. */
.elibro-contacts-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(18px, 2vw, 24px);
  align-items: stretch;
}
@media (min-width: 600px) {
  .elibro-contacts-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1140px) {
  .elibro-contacts-grid { grid-template-columns: repeat(4, 1fr); }
}

/* Tarjeta destacada de horario: mismo sistema, estilo propio. */
.elibro-hours {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 6px;
  height: 100%;
  padding: clamp(28px, 4vw, 40px) 28px;
  border-radius: var(--radius-lg);
  background:
    radial-gradient(circle at 50% 0%, rgba(77, 163, 255, 0.22), transparent 60%),
    linear-gradient(160deg, var(--color-primary-light) 0%, var(--color-primary) 60%, var(--background-dark) 100%);
  border: 1px solid rgba(77, 163, 255, 0.22);
  box-shadow: var(--shadow);
  color: #ffffff;
}
.elibro-hours .ico {
  display: grid;
  place-items: center;
  width: 60px;
  height: 60px;
  border-radius: 50%;
  margin-bottom: 8px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: var(--color-accent);
}
.elibro-hours .ico svg { width: var(--icon-xl); height: var(--icon-xl); }
.elibro-hours__title { color: #ffffff; font-size: 1.3rem; margin: 0; }
.elibro-hours__days { color: var(--text-on-chrome-soft); margin: 6px 0 0; font-weight: 600; }
.elibro-hours__time {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 1.4rem;
  color: var(--color-accent);
  margin: 2px 0 0;
}

/* Encabezado que representa todo el bloque de contactos. */
.elibro-contacts .section-head { margin-bottom: clamp(20px, 2.5vw, 28px); }

/* Tarjetas blancas de contacto: misma altura y mismo sistema visual. */
.elibro-contacts-grid .inst-card { padding: 22px 20px; gap: 10px; height: 100%; }
.elibro-contacts-grid .inst-card p { margin: 0; }
.elibro-contacts-grid .inst-card a {
  color: var(--color-primary-light);
  font-weight: 600;
  overflow-wrap: anywhere;
}
.elibro-contacts-grid .inst-card a:hover { color: var(--color-primary); }
@media (min-width: 600px) {
  /* Con dos o más columnas hay ancho de sobra: email en una sola línea. */
  .elibro-contacts-grid .inst-card a { white-space: nowrap; }
}

/* Ritmo vertical más compacto e institucional entre las secciones de la
   landing eLibro (Recursos, Contactos y Tutoriales), sin afectar el resto
   del sitio: se acorta el padding vertical conservando la respiración. */
.section:has(.elibro-resources-grid),
.section:has(.elibro-contacts-grid),
.section:has(.elibro-video-grid) {
  padding-block: clamp(38px, 4.5vw, 50px);
}

/* Recursos Bibliotecarios — dos tarjetas institucionales idénticas */
.elibro-resources-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(20px, 2.6vw, 28px);
  max-width: 920px;
  margin: 0 auto;
}
.elibro-resource-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 16px;
  height: 100%;
  padding: clamp(26px, 3vw, 36px);
  background: #ffffff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--elevation-2);
  transition: transform var(--motion-duration) var(--motion-ease),
    box-shadow var(--motion-duration) var(--motion-ease);
}
.elibro-resource-card:hover {
  transform: translateY(-6px); /* LEGACY motion — Media Card; excepción Fase 14.0 */
  box-shadow: var(--elevation-3);
}
.elibro-resource-card__title {
  color: var(--color-primary);
  font-size: 1.3rem;
  margin: 0;
  min-height: 3.2rem;
  display: flex;
  align-items: center;
}
.elibro-resource-card__qr {
  display: grid;
  place-items: center;
  gap: 10px;
  width: min(208px, 100%);
  aspect-ratio: 1 / 1;
  padding: 14px;
  background: #ffffff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
}
.elibro-resource-card__qr img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  border-radius: var(--radius-sm);
}
.elibro-resource-card__text {
  color: var(--color-text-soft);
  font-size: 0.92rem;
  margin: 0;
}
@media (min-width: 700px) {
  .elibro-resources-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Videos de capacitación */
.elibro-video-grid .tv-video { margin: 0; }
/* Dos recursos audiovisuales: mantener el grid equilibrado y centrado. */
@media (min-width: 900px) {
  .elibro-video-grid {
    grid-template-columns: repeat(2, 1fr);
    max-width: 860px;
    margin-inline: auto;
  }
}

/* =============================================================================
   @seccion-35 — MODO CLARO: FOOTER Y HEADER
   ============================================================================= */

/* Home — header flotante claro sobre hero (solo barra; no en layout para no recortar overlays) */
[data-theme="light"] body.home .site-header {
  background: rgba(255, 255, 255, 0.9);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(216, 226, 239, 0.72);
  box-shadow: none;
}

[data-theme="light"] body.home .site-header.is-scrolled,
[data-theme="light"] body.home .site-header-layout.is-scrolled .site-header {
  background: rgba(255, 255, 255, 0.9);
}

@media (max-width: 991px) {
  [data-theme="light"] body.home.nav-is-open .site-header,
  [data-theme="light"] body.home.search-is-open .site-header {
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

/* Footer — modo claro */
[data-theme="light"] footer.site-footer {
  background: linear-gradient(180deg, #eef4fb 0%, #f8fafc 55%, #f4f7fb 100%);
  color: var(--color-text);
  border-top: 4px solid var(--color-accent);
}

[data-theme="light"] footer.site-footer .footer-col h4,
[data-theme="light"] footer.site-footer .footer-brand-title,
[data-theme="light"] footer.site-footer .footer-contact li strong {
  color: var(--color-primary);
}

[data-theme="light"] footer.site-footer .footer-col a,
[data-theme="light"] footer.site-footer .footer-contact li,
[data-theme="light"] footer.site-footer .footer-contact li span,
[data-theme="light"] footer.site-footer .footer-bottom,
[data-theme="light"] footer.site-footer .footer-credit {
  color: var(--color-text-soft);
}

[data-theme="light"] footer.site-footer .footer-col a:hover {
  color: var(--color-primary);
}

[data-theme="light"] footer.site-footer .footer-contact svg {
  color: var(--color-accent);
}

[data-theme="light"] footer.site-footer .footer-bottom {
  border-top-color: rgba(0, 31, 84, 0.1);
}

[data-theme="light"] footer.site-footer .footer-social a {
  background: rgba(255, 255, 255, 0.92);
  border-color: rgba(77, 163, 255, 0.42);
  color: var(--color-primary);
}

[data-theme="light"] footer.site-footer .footer-social a:hover {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: var(--color-primary);
}

/* Footer — modo oscuro explícito (conservar apariencia actual) */
[data-theme="dark"] footer.site-footer {
  background:
    radial-gradient(circle at 20% 0%, rgba(77, 163, 255, 0.16), transparent 36%),
    linear-gradient(180deg, var(--color-primary) 0%, var(--background-dark) 100%);
  color: rgba(255, 255, 255, 0.94);
  border-top: 4px solid var(--color-accent);
}

[data-theme="dark"] footer.site-footer .footer-col h4,
[data-theme="dark"] footer.site-footer .footer-brand-title,
[data-theme="dark"] footer.site-footer .footer-contact li strong {
  color: #ffffff;
}

[data-theme="dark"] footer.site-footer .footer-col a,
[data-theme="dark"] footer.site-footer .footer-contact li,
[data-theme="dark"] footer.site-footer .footer-contact li span,
[data-theme="dark"] footer.site-footer .footer-bottom,
[data-theme="dark"] footer.site-footer .footer-credit {
  color: rgba(255, 255, 255, 0.94);
}

[data-theme="dark"] footer.site-footer .footer-bottom {
  border-top-color: rgba(255, 255, 255, 0.14);
}

/* =============================================================================
   @seccion-36 — PORTAL INSTITUCIONAL DE FACULTADES
   Página /facultad/{nombre}: autoridades, contacto y oferta académica.
   ============================================================================= */
.facultad-portal { display: flex; flex-direction: column; }
.fac-portal-band { padding: clamp(36px, 4vw, 56px) 0; }
.fac-portal-band--base { background: var(--surface-base); }
.fac-portal-band--muted { background: var(--surface-muted); }
.fac-portal-band .section-head {
  margin-bottom: clamp(20px, 3vw, 28px);
  margin-inline: auto;
  text-align: center;
}
.fac-portal-band--offer .section-head { max-width: 760px; }
.fac-portal-band--offer .section-head p { color: var(--text-on-surface-soft); }
.fac-portal-band--contact .section-head { max-width: 640px; margin-bottom: var(--space-4); }
.fac-portal-autoridades__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
  align-items: stretch;
}
.fac-portal-autoridad {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 220px;
  height: 100%;
  padding: var(--space-6) var(--space-4);
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--card-shadow);
  border-top: 4px solid var(--color-accent);
  text-align: center;
}
.fac-portal-autoridad__icon {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  margin-bottom: var(--space-1);
  border-radius: var(--radius-sm);
  background: var(--card-icon-bg);
  border: 1px solid var(--card-icon-border);
  color: var(--card-icon-color);
}
.fac-portal-autoridad__icon svg { width: var(--icon-lg); height: var(--icon-lg); }
.fac-portal-autoridad__name {
  font-family: var(--font-head);
  font-size: clamp(1.05rem, 2vw, 1.2rem);
  font-weight: 800;
  line-height: 1.3;
  color: var(--heading-color);
}
.fac-portal-autoridad__role {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-on-surface-muted);
}
.fac-portal-info__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
  margin: 0 auto;
  max-width: 920px;
}
.fac-portal-info-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  min-height: 148px;
  padding: var(--space-5) var(--space-4);
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--card-shadow);
  text-decoration: none;
  color: inherit;
  text-align: center;
  transition:
    border-color var(--theme-transition),
    box-shadow var(--theme-transition),
    background-color var(--theme-transition);
}
a.fac-portal-info-card:hover {
  border-color: var(--card-border-hover);
  box-shadow: var(--card-shadow-hover);
  background: var(--card-bg-hover);
}
.fac-portal-info-card__icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  flex-shrink: 0;
  border-radius: var(--radius-full);
  background: var(--card-icon-bg);
  border: 1px solid var(--card-icon-border);
  color: var(--card-icon-color);
}
.fac-portal-info-card__icon svg { width: var(--icon-md); height: var(--icon-md); }
.fac-portal-info-card__copy {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  width: 100%;
  align-items: center;
}
.fac-portal-info-card__label {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-on-surface-muted);
}
.fac-portal-info-card__value {
  font-family: var(--font-head);
  font-weight: 700;
  font-size: clamp(0.98rem, 1.8vw, 1.08rem);
  line-height: 1.45;
  color: var(--heading-color);
  word-break: break-word;
}
.fac-portal-final {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  text-align: center;
  max-width: 720px;
  margin: 0 auto;
}
.fac-portal-final__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  width: 100%;
  margin-top: var(--space-2);
}
.fac-portal-final__btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
}
.fac-portal-empty { color: var(--text-on-surface-soft); margin: 0; text-align: center; }
.page-internal--facultad { padding-top: 0; padding-bottom: 0; }

/* Tarjetas de carreras en portal de facultad */
.fac-career-grid{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:28px;
}
.fac-career-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
  background: var(--card-bg);
  border: 1px solid var(--card-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--card-shadow);
  transition:
    transform var(--transition-hover),
    box-shadow var(--transition-hover),
    border-color var(--theme-transition);
}
.fac-career-card:hover {
  transform: translateY(var(--hover-large-y));
  box-shadow: var(--card-shadow-hover);
  border-color: var(--card-border-hover);
}
.fac-career-card__media {
  display: block;
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--surface-muted);
}
.fac-career-card__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.45s ease;
}
.fac-career-card:hover .fac-career-card__img { transform: scale(1.04); }
.fac-career-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  gap: var(--space-3);
  padding: clamp(18px, 2.2vw, 22px);
}
.fac-career-card__type {
  margin: 0;
  font-family: var(--font-head);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
}
.fac-career-card__title {
  margin: 0;
  font-family: var(--font-head);
  font-size: clamp(1.05rem, 2vw, 1.2rem);
  font-weight: 800;
  line-height: 1.25;
}
.fac-career-card__title a {
  color: var(--heading-color);
  text-decoration: none;
}
.fac-career-card__title a:hover { color: var(--color-accent); }
.fac-career-card__facts {
  display: grid;
  gap: var(--space-2);
  margin: 0;
  flex: 1;
}
.fac-career-card__fact { display: grid; gap: 2px; margin: 0; }
.fac-career-card__fact dt {
  margin: 0;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-on-surface-muted);
}
.fac-career-card__fact dd {
  margin: 0;
  font-family: var(--font-head);
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--heading-color);
}
.fac-career-card__cta {
  align-self: stretch;
  justify-content: center;
  margin-top: auto;
}

/* Tablet */
@media (max-width: 1100px) {
  .fac-career-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Mobile */
@media (max-width: 700px) {
  .fac-career-grid {
    grid-template-columns: 1fr;
  }
}

/* Legacy archive cards (non-portal) */
.prog-card--faculty { display: flex; flex-direction: column; height: 100%; }
.prog-card--faculty .prog-card__title { margin: 0 0 var(--space-3); }
.prog-card--faculty .prog-card__title a { color: var(--heading-color); text-decoration: none; }
.prog-card--faculty .prog-card__meta {
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
}
.prog-card__cta {
  align-self: flex-start;
  margin-top: auto;
}

@media (min-width: 640px) {
  .fac-portal-info__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .fac-portal-final__actions {
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
  }
}

@media (min-width: 768px) {
  .fac-portal-autoridades__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
[data-theme="dark"] .fac-portal-band .section-head h2,
[data-theme="dark"] .fac-portal-autoridad__name,
[data-theme="dark"] .fac-portal-info-card__value,
[data-theme="dark"] .fac-career-card__title a,
[data-theme="dark"] .fac-career-card__fact dd,
[data-theme="dark"] .prog-card--faculty .prog-card__title a { color: var(--text-on-surface); }
[data-theme="dark"] .fac-portal-band .section-head p,
[data-theme="dark"] .fac-portal-info-card__label,
[data-theme="dark"] .fac-portal-autoridad__role,
[data-theme="dark"] .fac-career-card__fact dt,
[data-theme="dark"] .fac-portal-empty { color: var(--text-body); }

/* =============================================================================
   @seccion-37 — PÁGINA INDIVIDUAL DE CARRERA (v2)
   Hero panorámico full-bleed, secciones full-width, acordeones de plan.
   ============================================================================= */
body.single-carreras { background: var(--surface-body); }
body.single-carreras .site-main { padding-bottom: 0; }

/* ─── Hero panorámico ─────────────────────────────────────────────────────── */
.carrera-hero-v2 { position: relative; width: 100%; height: clamp(580px, 50vw, 720px); overflow: hidden; background: var(--color-navy-dark); }
.carrera-hero-v2__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; animation: carrera-hero-zoom 12s ease-out forwards; }
@keyframes carrera-hero-zoom { from { transform: scale(1); } to { transform: scale(1.06); } }
.carrera-hero-v2::before { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(to right, rgba(0,10,35,.90) 0%, rgba(0,10,35,.75) 35%, rgba(0,10,35,.30) 65%, rgba(0,10,35,.05) 100%); }
.carrera-hero-v2__content { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; justify-content: flex-end; padding-bottom: clamp(40px, 5vw, 72px); }
.carrera-hero-v2__breadcrumb { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-bottom: clamp(14px, 1.8vw, 22px); font-size: 0.78rem; color: rgba(255,255,255,.58); }
.carrera-hero-v2__breadcrumb a { color: rgba(255,255,255,.58); text-decoration: none; transition: color .2s; }
.carrera-hero-v2__breadcrumb a:hover { color: var(--color-accent); }
.carrera-hero-v2__breadcrumb span[aria-current] { color: rgba(255,255,255,.90); }
.carrera-hero-v2__meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: clamp(14px, 1.5vw, 20px); }
.carrera-hero-v2__badge { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: var(--radius-full); font-size: 0.72rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; line-height: 1.4; }
.carrera-hero-v2__badge--fac { background: rgba(77,163,255,.18); border: 1px solid rgba(77,163,255,.35); color: var(--color-accent); }
.carrera-hero-v2__badge--nivel { background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.20); color: rgba(255,255,255,.85); }
.carrera-hero-v2__title { margin: 0 0 clamp(16px, 2vw, 24px); font-family: var(--font-head); font-size: clamp(2rem, 4.5vw, 3.2rem); font-weight: 800; line-height: 1.06; letter-spacing: -.02em; color: #fff; max-width: 720px; }
.carrera-hero-v2__facts { display: flex; flex-wrap: wrap; gap: clamp(12px, 2vw, 20px) clamp(24px, 3vw, 36px); margin: 0 0 clamp(24px, 3vw, 36px); }
.carrera-hero-v2__fact { display: flex; flex-direction: column; gap: 4px; }
.carrera-hero-v2__fact dt { display: flex; align-items: center; gap: 6px; margin: 0; font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.55); }
.carrera-hero-v2__fact-icon { display: flex; color: var(--color-accent); }
.carrera-hero-v2__fact-icon svg { width: 13px; height: 13px; }
.carrera-hero-v2__fact-value { margin: 0; font-family: var(--font-head); font-weight: 700; font-size: .9rem; color: rgba(255,255,255,.92); line-height: 1.35; }
.carrera-hero-v2__fact-value a { color: inherit; text-decoration: none; }
.carrera-hero-v2__fact-value a:hover { color: var(--color-accent); }
.carrera-hero-v2__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }
@media (max-width: 640px) { .carrera-hero-v2::before { background: linear-gradient(to bottom, rgba(0,10,35,.55) 0%, rgba(0,10,35,.88) 100%); } }

/* ─── Contenedor general ──────────────────────────────────────────────────── */
.carrera-v2 { padding: clamp(40px, 5vw, 64px) 0 clamp(56px, 7vw, 96px); }
.carrera-v2__wrap { display: flex; flex-direction: column; gap: clamp(48px, 6vw, 72px); }

/* ─── Cabecera de sección ─────────────────────────────────────────────────── */
.carrera-v2__section-head { display: flex; align-items: center; gap: var(--space-3); margin-bottom: clamp(20px, 2.5vw, 28px); }
.carrera-v2__section-icon { display: grid; place-items: center; flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--radius-sm); background: var(--card-icon-bg); border: 1px solid var(--card-icon-border); color: var(--card-icon-color); }
.carrera-v2__section-icon svg { width: var(--icon-md); height: var(--icon-md); }
.carrera-v2__section-title { margin: 0; font-family: var(--font-head); font-size: clamp(1.25rem, 2.2vw, 1.5rem); font-weight: 800; color: var(--heading-color); }

/* ─── Prosa editorial ─────────────────────────────────────────────────────── */
.carrera-v2__prose, .carrera-v2__prose p { color: var(--text-on-surface-soft); line-height: 1.75; }
.carrera-v2__prose h2, .carrera-v2__prose h3 { color: var(--heading-color); }
.carrera-v2__editorial { color: var(--text-on-surface-soft); }
.carrera-editorial { display: flex; flex-direction: column; gap: 0; }
.carrera-editorial__section { display: flex; flex-direction: column; }
.carrera-editorial__heading { margin: 0 0 var(--space-3); font-family: var(--font-head); font-size: clamp(1.05rem, 1.8vw, 1.2rem); font-weight: 700; letter-spacing: .03em; text-transform: uppercase; color: var(--heading-color); }
.carrera-editorial__intro { margin: 0 0 var(--space-6); font-family: var(--font-head); font-size: clamp(1rem, 1.6vw, 1.08rem); font-weight: 600; line-height: 1.45; color: var(--heading-color); }
.carrera-editorial__list { display: flex; flex-direction: column; gap: 32px; margin: 0; padding: 0; list-style: none; }
.carrera-editorial__item { display: flex; align-items: flex-start; gap: var(--space-4); }
.carrera-editorial__mark { display: grid; place-items: center; flex-shrink: 0; width: var(--icon-xl); height: var(--icon-xl); margin-top: 2px; border-radius: var(--radius-full); background: rgba(77,163,255,.12); color: var(--color-primary-light); }
.carrera-editorial__mark svg { width: var(--icon-sm); height: var(--icon-sm); stroke-width: 2.25; }
.carrera-editorial__copy { min-width: 0; flex: 1; }
.carrera-editorial__item-title { margin: 0 0 8px; font-family: var(--font-head); font-size: clamp(.98rem, 1.5vw, 1.05rem); font-weight: 700; line-height: 1.35; color: var(--heading-color); }
.carrera-editorial__item-desc { margin: 0; font-size: 1rem; line-height: 1.7; color: var(--text-on-surface-soft); }
.carrera-editorial__divider { border: 0; height: 1px; margin: clamp(32px, 4vw, 44px) 0; background: var(--color-border); }

/* ─── Plan de estudios — acordeones ──────────────────────────────────────── */
.carrera-v2__plan { display: flex; flex-direction: column; gap: var(--space-2); }
.carrera-v2__plan-empty { margin: 0; padding: var(--space-4); background: var(--surface-muted); border: 1px solid var(--card-border); border-radius: var(--radius-sm); color: var(--text-on-surface-soft); }
.carrera-v2__accord { background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius); overflow: hidden; transition: box-shadow .2s ease, border-color .2s ease; }
.carrera-v2__accord[open] { border-color: rgba(77,163,255,.28); box-shadow: var(--card-shadow); }
.carrera-v2__accord-summary { display: flex; align-items: center; gap: var(--space-3); padding: clamp(14px, 2vw, 18px) clamp(16px, 2.5vw, 24px); cursor: pointer; list-style: none; user-select: none; -webkit-user-select: none; }
.carrera-v2__accord-summary::-webkit-details-marker { display: none; }
.carrera-v2__accord-label { flex: 1; font-family: var(--font-head); font-size: 1rem; font-weight: 700; color: var(--heading-color); }
.carrera-v2__accord-count { font-size: .78rem; font-weight: 600; color: var(--text-on-surface-muted); padding: 3px 10px; border-radius: var(--radius-full); background: var(--surface-muted); white-space: nowrap; }
.carrera-v2__accord-chevron { flex-shrink: 0; color: var(--text-on-surface-muted); transition: transform .25s ease; }
.carrera-v2__accord[open] .carrera-v2__accord-chevron { transform: rotate(180deg); }
.carrera-v2__accord-body { padding: 0 clamp(16px, 2.5vw, 24px) clamp(16px, 2.5vw, 22px); border-top: 1px solid var(--card-border); }
.carrera-v2__subjects { margin: clamp(12px, 1.5vw, 16px) 0 0; padding-left: 1.2rem; list-style: disc; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-2) var(--space-5); }
.carrera-v2__subjects li { line-height: 1.65; color: var(--text-on-surface-soft); font-size: .95rem; }
@media (max-width: 600px) { .carrera-v2__subjects { grid-template-columns: 1fr; } }

/* ─── CTA de contacto con la Facultad ────────────────────────────────────── */
.carrera-v2__fac-cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: clamp(16px, 2vw, 24px); padding: clamp(20px, 2.5vw, 28px); background: var(--surface-muted); border-radius: var(--radius); border-left: 3px solid var(--color-accent); }
.carrera-v2__fac-cta__copy { flex: 1; min-width: 200px; display: flex; flex-direction: column; gap: var(--space-2); }
.carrera-v2__fac-cta__title { margin: 0; font-family: var(--font-head); font-size: clamp(1rem, 1.4vw, 1.1rem); font-weight: 700; line-height: 1.3; color: var(--heading-color); }
.carrera-v2__fac-cta__text { margin: 0; font-size: .875rem; line-height: 1.65; color: var(--text-on-surface-soft); }
.carrera-v2__fac-cta__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); flex-shrink: 0; }
@media (max-width: 560px) { .carrera-v2__fac-cta { flex-direction: column; align-items: flex-start; } .carrera-v2__fac-cta__actions { width: 100%; } }

/* ─── Información académica — tarjetas ───────────────────────────────────── */
.carrera-v2__facts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: clamp(12px, 1.5vw, 16px); }
.carrera-v2__fact-card { display: flex; align-items: flex-start; gap: var(--space-3); padding: clamp(16px, 2vw, 20px); background: var(--card-bg); border: 1px solid var(--card-border); border-radius: var(--radius); box-shadow: var(--card-shadow); transition: box-shadow .2s ease, transform .2s ease; }
.carrera-v2__fact-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-card-hover); }
.carrera-v2__fact-card-icon { display: grid; place-items: center; flex-shrink: 0; width: 40px; height: 40px; border-radius: var(--radius-sm); background: var(--card-icon-bg); border: 1px solid var(--card-icon-border); color: var(--card-icon-color); }
.carrera-v2__fact-card-icon svg { width: var(--icon-sm); height: var(--icon-sm); }
.carrera-v2__fact-card-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.carrera-v2__fact-card-label { font-size: .70rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--text-on-surface-muted); }
.carrera-v2__fact-card-value { font-family: var(--font-head); font-weight: 700; font-size: .92rem; color: var(--heading-color); line-height: 1.4; display: flex; flex-direction: column; gap: 2px; }
.carrera-v2__fact-card-value a { color: inherit; text-decoration: none; }
.carrera-v2__fact-card-value a:hover { color: var(--color-accent); }

/* ─── Carreras relacionadas ───────────────────────────────────────────────── */
.carrera-v2__related-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: clamp(12px, 1.5vw, 16px); }
.carrera-v2__related-card { display: flex; flex-direction: column; border-radius: var(--radius); overflow: hidden; background: var(--card-bg); border: 1px solid var(--card-border); box-shadow: var(--card-shadow); text-decoration: none; color: inherit; transition: transform .2s ease, box-shadow .2s ease; }
.carrera-v2__related-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card-hover); }
.carrera-v2__related-img { aspect-ratio: 16/7; overflow: hidden; }
.carrera-v2__related-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.carrera-v2__related-card:hover .carrera-v2__related-img img { transform: scale(1.06); }
.carrera-v2__related-body { display: flex; flex-direction: column; gap: 6px; padding: clamp(14px, 2vw, 20px); flex: 1; }
.carrera-v2__related-name { font-family: var(--font-head); font-weight: 700; font-size: .96rem; line-height: 1.3; color: var(--heading-color); }
.carrera-v2__related-meta { font-size: .82rem; color: var(--text-on-surface-soft); line-height: 1.4; }
.carrera-v2__related-cta { margin-top: auto; padding-top: var(--space-2); font-family: var(--font-head); font-size: .82rem; font-weight: 700; color: var(--color-accent); display: flex; align-items: center; gap: 4px; }
.carrera-v2__related-cta svg { width: 14px; height: 14px; }

/* ─── Footer de carrera ───────────────────────────────────────────────────── */
.carrera-v2__footer { padding-top: clamp(20px, 2.5vw, 28px); border-top: 1px solid var(--card-border); }

/* ─── Dark theme ──────────────────────────────────────────────────────────── */
[data-theme="dark"] body.single-carreras .carrera-v2__section-title,
[data-theme="dark"] body.single-carreras .carrera-v2__accord-label,
[data-theme="dark"] body.single-carreras .carrera-v2__fact-card-value,
[data-theme="dark"] body.single-carreras .carrera-v2__related-name,
[data-theme="dark"] body.single-carreras .carrera-editorial__heading,
[data-theme="dark"] body.single-carreras .carrera-editorial__intro,
[data-theme="dark"] body.single-carreras .carrera-editorial__item-title { color: var(--text-on-surface); }
[data-theme="dark"] body.single-carreras .carrera-v2__prose,
[data-theme="dark"] body.single-carreras .carrera-v2__prose p,
[data-theme="dark"] body.single-carreras .carrera-v2__subjects li,
[data-theme="dark"] body.single-carreras .carrera-v2__editorial,
[data-theme="dark"] body.single-carreras .carrera-editorial__item-desc { color: var(--text-body); }
[data-theme="dark"] body.single-carreras .carrera-editorial__mark { background: rgba(77,163,255,.16); color: var(--color-accent); }

/* =============================================================================
   @seccion-38 — HERO PANORÁMICO (BASE REUTILIZABLE)
   Compartido por: .panoramic-hero--carrera (single-carreras)
                   .panoramic-hero--facultad (taxonomy-facultad)
   Posición vertical controlada por --hero-offset (sobreescribible por modificador o inline).
   ============================================================================= */

/* ─── Estructura base ─────────────────────────────────────────────────────── */
.panoramic-hero {
    --hero-offset: clamp(100px, 14vw, 180px);
    position: relative;
    width: 100%;
    height: clamp(620px, 54vw, 780px);
    overflow: hidden;
    background: var(--color-navy-dark);
}
/* Separación de responsabilidades:
   --ph-scale  → animado por CSS (entrada + respiración lenta)
   --ph-offset → escrito por JS (parallax de scroll)
   transform   → combina ambos; ninguno pisa al otro. */
@property --ph-scale {
    syntax: '<number>';
    inherits: false;
    initial-value: 1;
}
@property --ph-offset {
    syntax: '<length>';
    inherits: false;
    initial-value: 0px;
}

.panoramic-hero__bg {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover; object-position: center 30%;
    transform-origin: center center;
    will-change: transform, opacity;
    transform: translateY(var(--ph-offset, 0px)) scale(var(--ph-scale, 1));
    /* Fase 1 — entrada (900 ms, una sola vez)
       Fase 2 — respiración lenta (20 s, infinite alternate, arranca al finalizar la entrada) */
    animation:
        panoramic-hero-entry  900ms ease-out           forwards,
        panoramic-hero-zoom    20s  ease-in-out  900ms infinite alternate;
}

@keyframes panoramic-hero-entry {
    from { opacity: .92; --ph-scale: 1.06; }
    to   { opacity: 1;   --ph-scale: 1;    }
}

@keyframes panoramic-hero-zoom {
    from { --ph-scale: 1;    }
    to   { --ph-scale: 1.03; }
}

/* Accesibilidad: imagen estática, sin ninguna animación ni parallax */
@media (prefers-reduced-motion: reduce) {
    .panoramic-hero__bg {
        animation: none;
        opacity: 1;
        --ph-scale: 1;
        --ph-offset: 0px;
    }
}

/* Posición vertical: padding-bottom empuja el bloque hacia arriba.
   Usar --hero-offset para controlar sin tocar el componente base. */
.panoramic-hero__content {
    position: absolute; inset: 0; z-index: 2;
    display: flex; flex-direction: column; justify-content: flex-end;
    padding-bottom: var(--hero-offset);
}

/* Columna de contenido: 700 px, alineada a la izquierda del viewport gutter */
.panoramic-hero .container {
    max-width: 700px;
    margin-left: clamp(16px, 5vw, 80px);
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
}

/* ─── Breadcrumb ──────────────────────────────────────────────────────────── */
.panoramic-hero__breadcrumb {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    margin-bottom: clamp(10px, 1.2vw, 16px);
    font-size: 0.76rem; color: rgba(255,255,255,.55);
}
.panoramic-hero__breadcrumb a { color: rgba(255,255,255,.55); text-decoration: none; transition: color .2s; }
.panoramic-hero__breadcrumb a:hover { color: var(--color-accent); }
.panoramic-hero__breadcrumb span[aria-current] { color: rgba(255,255,255,.88); }

/* ─── Badges ──────────────────────────────────────────────────────────────── */
.panoramic-hero__meta { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: clamp(12px, 1.4vw, 18px); }
.panoramic-hero__badge { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: var(--radius-full); font-size: 0.70rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1.4; }
.panoramic-hero__badge--fac { background: rgba(77,163,255,.18); border: 1px solid rgba(77,163,255,.38); color: var(--color-accent); }
.panoramic-hero__badge--nivel,
.panoramic-hero__badge--default { background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.20); color: rgba(255,255,255,.85); }

/* ─── Título ──────────────────────────────────────────────────────────────── */
.panoramic-hero__title {
    margin: 0;
    font-family: var(--font-head);
    font-size: clamp(2.8rem, 5.5vw, 5rem);
    font-weight: 800;
    line-height: 1.04;
    letter-spacing: -.025em;
    color: #fff;
}
/* Separador institucional bajo el título */
.panoramic-hero__title::after {
    content: '';
    display: block;
    width: 48px;
    height: 3px;
    background: var(--color-accent);
    border-radius: 2px;
    margin-top: clamp(14px, 1.6vw, 22px);
    margin-bottom: clamp(14px, 1.6vw, 20px);
}

/* ─── Descripción ─────────────────────────────────────────────────────────── */
.panoramic-hero__description {
    margin: 0 0 clamp(20px, 2.4vw, 30px);
    font-size: clamp(1rem, 1.6vw, 1.15rem);
    line-height: 1.85;
    color: rgba(255,255,255,.78);
    max-width: 640px;
}

/* ─── Facts ───────────────────────────────────────────────────────────────── */
.panoramic-hero__facts { display: flex; flex-wrap: wrap; gap: clamp(12px, 2vw, 20px) clamp(24px, 3vw, 36px); margin: 0 0 clamp(24px, 3vw, 36px); }
.panoramic-hero__fact { display: flex; flex-direction: column; gap: 4px; }
.panoramic-hero__fact dt { display: flex; align-items: center; gap: 6px; margin: 0; font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.55); }
.panoramic-hero__fact-icon { display: flex; color: var(--color-accent); }
.panoramic-hero__fact-icon svg { width: 13px; height: 13px; }
.panoramic-hero__fact-value { margin: 0; font-family: var(--font-head); font-weight: 700; font-size: .9rem; color: rgba(255,255,255,.92); line-height: 1.35; }
.panoramic-hero__fact-value a { color: inherit; text-decoration: none; }
.panoramic-hero__fact-value a:hover { color: var(--color-accent); }

/* ─── Acciones ────────────────────────────────────────────────────────────── */
.panoramic-hero__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }

/* ─── Modificador: carrera — overlay lateral reforzado ───────────────────── */
.panoramic-hero--carrera::before {
    content: ''; position: absolute; inset: 0; z-index: 1;
    background: linear-gradient(
        to right,
        rgba(0,6,22,.96)  0%,
        rgba(0,6,22,.88) 28%,
        rgba(0,6,22,.50) 52%,
        rgba(0,6,22,.10) 68%,
        rgba(0,6,22,.00) 100%
    );
}
@media (max-width: 640px) {
    .panoramic-hero--carrera::before {
        background: linear-gradient(to bottom, rgba(0,6,22,.45) 0%, rgba(0,6,22,.92) 100%);
    }
}

/* ─── Modificador: facultad — overlay inferior, altura propia ─────────────── */
.panoramic-hero--facultad {
    --hero-offset: clamp(80px, 10vw, 140px);
    height: clamp(560px, 48vw, 700px);
}
.panoramic-hero--facultad .panoramic-hero__bg { object-position: center 20%; }
.panoramic-hero--facultad::before {
    content: ''; position: absolute; inset: 0; z-index: 1;
    background: linear-gradient(
        to right,
        rgba(0,6,22,.95)  0%,
        rgba(0,6,22,.85) 30%,
        rgba(0,6,22,.45) 55%,
        rgba(0,6,22,.08) 72%,
        rgba(0,6,22,.00) 100%
    );
}
@media (max-width: 640px) {
    .panoramic-hero--facultad { height: clamp(480px, 70vw, 560px); }
    .panoramic-hero--facultad::before {
        background: linear-gradient(to bottom, rgba(0,6,22,.45) 0%, rgba(0,6,22,.92) 100%);
    }
}

/* ─── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
    .panoramic-hero .container { max-width: 580px; margin-left: clamp(16px, 4vw, 48px); }
}
@media (max-width: 640px) {
    .panoramic-hero { --hero-offset: clamp(36px, 8vw, 64px); }
    .panoramic-hero--carrera { --hero-offset: clamp(110px, 28vw, 150px); }
    .panoramic-hero .container { max-width: 100%; margin-left: 0; padding-left: clamp(16px, 5vw, 24px); padding-right: clamp(16px, 5vw, 24px); }
    .panoramic-hero__title { font-size: clamp(2rem, 9vw, 2.8rem); }
    .panoramic-hero__description { font-size: clamp(.95rem, 4vw, 1.05rem); }
}

/* =============================================================================
   @seccion-39 — FAC-STATS — Barra de métricas institucionales
   ============================================================================= */
.fac-stats { background: var(--color-primary); padding: clamp(16px, 2vw, 24px) 0; }
.fac-stats__grid { display: flex; flex-wrap: wrap; justify-content: center; }
.fac-stat { display: flex; align-items: center; gap: 12px; padding: clamp(10px, 1.2vw, 14px) clamp(18px, 2.8vw, 36px); border-right: 1px solid rgba(255,255,255,.12); }
.fac-stat:last-child { border-right: none; }
.fac-stat__icon { display: grid; place-items: center; flex-shrink: 0; width: 34px; height: 34px; border-radius: var(--radius-sm); background: rgba(255,255,255,.10); color: var(--color-accent); }
.fac-stat__icon svg { width: 15px; height: 15px; }
.fac-stat__body { display: flex; flex-direction: column; gap: 1px; }
.fac-stat__value { font-family: var(--font-head); font-size: clamp(.9rem, 1.5vw, 1.05rem); font-weight: 800; color: #fff; line-height: 1.2; }
.fac-stat__label { font-size: .66rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: rgba(255,255,255,.52); }
@media (max-width: 680px) {
    .fac-stats__grid { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; padding: 0 var(--space-4); scrollbar-width: none; }
    .fac-stats__grid::-webkit-scrollbar { display: none; }
    .fac-stat { flex-shrink: 0; }
}

/* =============================================================================
   @seccion-40 — LANDING DE FACULTAD (taxonomy-facultad)
   ============================================================================= */

/* ─── Oferta académica ────────────────────────────────────────────────────── */
.fac-offer { padding: clamp(48px, 6vw, 72px) 0; background: var(--surface-base); }
.fac-offer .section-head { margin-bottom: clamp(28px, 3.5vw, 40px); }
.fac-offer-empty { margin: 0; padding: var(--space-8); text-align: center; color: var(--text-on-surface-soft); font-size: .95rem; }
.fac-offer .pagination-wrap { margin-top: clamp(28px, 4vw, 40px); }

/* ─── Secciones internas (autoridades, info) ──────────────────────────────── */
.fac-inner-section { padding: clamp(40px, 5vw, 60px) 0; }
.fac-inner-section--muted { background: var(--surface-muted); }
.fac-inner-section--base { background: var(--surface-base); }

/* ─── CTA final ───────────────────────────────────────────────────────────── */
.fac-cta { padding: clamp(52px, 7vw, 80px) 0; background: var(--color-primary); text-align: center; }
.fac-cta__eyebrow { display: block; margin-bottom: var(--space-3); font-size: .70rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--color-accent); }
.fac-cta__title { margin: 0 0 clamp(20px, 2.5vw, 28px); font-family: var(--font-head); font-size: clamp(1.45rem, 2.8vw, 1.9rem); font-weight: 800; color: #fff; line-height: 1.18; max-width: 560px; margin-left: auto; margin-right: auto; }
.fac-cta__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3); }
}
