:root {
    --primary-color: #004080;
    --secondary-color: #808080;
    --accent-color: #c41230;
    --background-color: #f4f4f4;
    --text-color: #333;
    --white: #fff;
}

html, body {
    margin: 0;
    padding: 0;
}

/* ── Skip navigation (accesibilidad teclado) ── */
.skip-nav-link {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 99999;
    padding: 10px 20px;
    background: #001e46;
    color: #fff;
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
    border-radius: 0 0 6px 0;
}
.skip-nav-link:focus {
    left: 0;
    outline: 3px solid #ffbe00;
    outline-offset: 2px;
}

body {
    font-family: 'Roboto', sans-serif;
    background-color: var(--background-color);
    color: var(--text-color);
    padding-top: 100px;
}

/* WCAG 2.4.7: visible keyboard focus indicator for all interactive elements */
:focus-visible {
    outline: 3px solid var(--primary-color);
    outline-offset: 2px;
}

a {
    text-decoration: none;
    color: inherit;
}

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

/* Hero de pantalla completa */
[data-particles] {
    margin-top: 0;
}

/* Cabecera fija */
.header {
    background-color: #001e46;
    color: white;
    padding: 10px 0;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 100px;
    box-sizing: border-box;
    z-index: 1000;
    box-shadow: 0 2px 0 0 #e63946, 0 3px 10px rgba(0, 0, 0, 0.2);
}

.nav-container {
    max-width: 1400px;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 20px;
    height: 80px;
}

.logo {
    display: flex;
    align-items: center; /* Alinea el contenido de forma horizontal */
  }
  
  .logo img {
    height: 80px;
    margin-right: 10px; /* Espacio entre el logo y el texto */
  }
  
  .logo-text {
    display: inline-block;
    text-align: center; /* Asegura que el texto esté alineado a la izquierda */
  }
  
  .logo-text .main-title {
    font-size: 26px; /* Tamaño más grande para el título principal */
    font-weight: bold;
    color: white; /* Color blanco para el título principal */
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); /* Sombra para dar relieve */
    padding: 5px; /* Espaciado interno para que el borde no quede pegado al texto */
  }
  
  .logo-text .sub-title {
    font-size: 14px; /* Tamaño más pequeño para el subtítulo */
    color: var(--secondary-color); /* Color secundario */
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); /* Sombra para dar relieve */
  }
  
  .logo-text .slogan {
    font-size: 12px; /* Tamaño más pequeño para el eslogan */
    color: var(--background-color); /* Color de acento */
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); /* Sombra para dar relieve */
  }
  
.nav-menu {
    display: flex;
    list-style-type: none;
    margin: 0;
    padding: 0;
}

.nav-item {
    margin-left: 8px;
    position: relative;
}

.nav-link {
    color: white;
    text-decoration: none;
    display: flex;
    align-items: center;
    padding: 8px 0;
    transition: color 0.3s ease;
    font-size: 13px;
    white-space: nowrap;
}

.nav-link:hover {
    color: var(--accent-color);
}

.nav-link i {
    margin-right: 5px;
}

.dropdown-content {
    display: none;
    position: absolute;
    background-color: rgba(0, 30, 70, 0.88);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    min-width: 200px;
    box-shadow: 0px 8px 24px rgba(0,0,0,0.35);
    z-index: 1000;
    list-style-type: none;
    padding: 0;
    overflow: visible;
    border-top: 2px solid var(--accent-color);
}

.dropdown-content li {
    margin: 0;
}

.dropdown-content a {
    color: white;
    padding: 10px 16px; /* Reducido el padding */
    text-decoration: none;
    display: flex;
    align-items: center;
    transition: background-color 0.3s ease;
    font-size: 14px; /* Reducido el tamaño de la fuente */
}

.dropdown-content a i {
    margin-right: 10px;
    width: 20px; /* Ancho fijo para alinear los iconos */
    text-align: center;
}

.dropdown-content a:hover {
    background-color: var(--accent-color);
}

.nav-item:hover .dropdown-content {
    display: block;
}

/* ── Submenú anidado (nivel 3) ── */
.dropdown-content li.has-submenu {
    position: relative;
}
.dropdown-content li.has-submenu > .submenu {
    display: none;
    position: absolute;
    left: 100%;
    top: -4px;
    margin-left: -2px;
    background-color: rgba(0, 30, 70, 0.88);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    min-width: 210px;
    list-style: none;
    padding: 4px 0;
    box-shadow: 4px 8px 20px rgba(0,0,0,0.3);
    z-index: 9999;
    border-radius: 0 4px 4px 4px;
}
.dropdown-content li.has-submenu > a::after {
    content: '›';
    margin-left: auto;
    padding-left: 10px;
    font-size: 18px;
    line-height: 1;
}
@media screen and (max-width: 768px) {
    .dropdown-content li.has-submenu > .submenu {
        position: static;
        box-shadow: none;
        background: transparent;
        padding-left: 16px;
    }
    .dropdown-content li.has-submenu > a::after { display: none; }
}

.menu-toggle {
    display: none;
    background: none;
    border: none;
    color: white;
    font-size: 24px;
    cursor: pointer;
}

@media screen and (max-width: 768px) {
    .menu-toggle {
        display: block;
    }

    .nav-container {
        padding: 0 15px;
        height: 80px;
    }

    .logo img {
        height: 52px;
        margin-right: 8px;
    }

    .logo-text .main-title {
        font-size: 16px;
        padding: 2px;
    }

    .logo-text .sub-title {
        font-size: 11px;
    }

    .logo-text .slogan {
        font-size: 9px;
        letter-spacing: 0.2px;
    }

    .nav-menu {
        display: none;
        flex-direction: column;
        position: absolute;
        top: 100%;
        left: 0;
        width: 100%;
        background-color: #001e46;
        padding: 10px 0;
    }

    .nav-menu.active {
        display: flex;
    }

    .nav-item {
        margin: 5px 0;
    }

    .dropdown-content {
        position: static;
        display: none;
        background-color: transparent;
        box-shadow: none;
    }

    .dropdown-content a {
        padding-left: 30px;
    }

    .nav-item:hover .dropdown-content {
        display: none;
    }

    .nav-item.active .dropdown-content {
        display: block;
    }
}

.hero {
    height: calc(100vh - 100px);
    background: linear-gradient(135deg, #001a42 0%, #003270 100%);
    color: var(--white);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    text-align: center;
}

.hero-content {
    animation: fadeInUp 1s ease forwards;
    position: relative;
    z-index: 3;
}

.hero h1 {
    font-size: 48px;
    margin: 0 0 20px;
}

.hero p {
    font-size: 24px;
    margin: 0 0 30px;
}

.cta-button {
    background-color: var(--accent-color);
    padding: 15px 30px;
    border-radius: 5px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s, transform 0.3s;
}

.cta-button:hover {
    background-color: #a30f26;
    transform: scale(1.05);
}

.slider {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    overflow: hidden;
}

.slide {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-position: center;
    opacity: 0;
    transition: opacity 1s ease-in-out;
    display: none; /* Oculta todas las diapositivas */
}


.slide.active {
    opacity: 1;
    display: block; /* Muestra solo la diapositiva activa */
}



.section {
    padding: 60px 20px;
    background-color: var(--background-color);
}

.section-title {
    text-align: center;
    margin-bottom: 40px;
    font-size: 36px;
    color: var(--primary-color);
}

.grid {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px; /* Ajusta la separación entre tarjetas */
}

.card {
    background-color: var(--white);
    border-radius: 10px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s, background-color 0.3s, box-shadow 0.3s, color 0.3s;
    flex: 1;
    margin: 10px; /* Ajusta el margen entre tarjetas */
    border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
}

.card:hover {
    transform: translateY(-10px);
    background-color: var(--primary-color);
    color: var(--white);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
    border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
}

.card i {
    font-size: 48px;
    color: var(--primary-color);
    margin-bottom: 20px;
    transition: color 0.3s;
}

.card h3 {
    font-size: 24px;
    margin-bottom: 10px;
    transition: color 0.3s;
}

.card p {
    font-size: 16px;
    margin-bottom: 20px;
    transition: color 0.3s;
}

.card-button {
    background-color: var(--primary-color);
    color: var(--white);
    padding: 10px 20px;
    border-radius: 5px;
    font-weight: bold;
    display: inline-block;
    transition: background-color 0.3s, transform 0.3s, color 0.3s;
}

.card:hover i,
.card:hover h3,
.card:hover p,
.card:hover .card-button {
    color: var(--white);
}

.card-button:hover {
    background-color: var(--accent-color);
    transform: scale(1.05);
}

footer {
    background-color: #001e46;
    padding: 40px 20px;
    color: var(--white);
    height: calc(100vh - 100px);
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
}

.footer-content {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    max-width: 1200px;
    width: 100%;
    margin: 0 auto;
    flex: 1;
}

.footer-section {
    flex: 1;
    min-width: 200px;
    margin-bottom: 20px;
}

.footer-section h3 {
    font-size: 22px;
    margin-bottom: 20px;
}

.footer-section ul {
    padding: 0;
}

.footer-section ul li {
    display: flex;
    align-items: center;
    margin-bottom: 15px;
}

.footer-section ul li i {
    margin-right: 10px;
    font-size: 18px;
}

.footer-section ul li a {
    color: var(--white);
    transition: color 0.3s;
}

.footer-section ul li a:hover {
    color: var(--accent-color);
}

.social-icons a {
    display: inline-block;
    margin-right: 10px;
    color: var(--white);
    font-size: 24px;
    transition: color 0.3s, transform 0.3s;
}

.social-icons a:hover {
    color: var(--accent-color);
    transform: scale(1.1);
}

.footer-bottom {
    text-align: center;
    padding: 20px 0;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    margin-top: auto;
    color: rgba(255, 255, 255, 0.7);
}

.map-container {
    width: 100%;
    height: 260px;
    margin-top: 20px;
}

@media (max-width: 768px) {
    footer {
        height: auto;
        min-height: 0;
    }
}

@media (max-width: 768px) {
    .header-content {
        flex-direction: column;
    }

    nav ul {
        flex-direction: column;
        align-items: center;
    }

    nav ul li {
        margin: 10px 0;
    }

    .hero h1 {
        font-size: 36px;
    }

    .hero p {
        font-size: 18px;
    }

    .footer-content {
        flex-direction: column;
    }
}

@keyframes fadeInUp {
    0% {
        opacity: 0;
        transform: translateY(20px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}
@media (max-width: 768px) {
    .grid {
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .card {
        max-width: 300px;
        margin: 10px 0;
    }
}

/* Grid de 3 columnas compacto para sección de programas en home */
.grid-3 {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 20px;
    width: 100%;
    box-sizing: border-box;
}

.grid-3 .card {
    margin: 0 !important;
    flex: none !important;
    padding: 24px 18px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.grid-3 .card i     { font-size: 40px; margin-bottom: 14px; }
.grid-3 .card h3    { font-size: 19px; margin-bottom: 8px; }
.grid-3 .card p     { font-size: 14px; margin-bottom: 14px; flex: 1; }

@media (max-width: 1024px) {
    .grid-3      { grid-template-columns: repeat(2, 1fr); }
    .program-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .grid-3      { grid-template-columns: 1fr; }
    .program-grid { grid-template-columns: 1fr; }
}

/* Asegura que los item-type no tengan width fijo que rompa el grid */
.doctorado-item, .maestria-item, .especialidad-item, .diplomado-item {
    width: auto !important;
    margin-bottom: 0 !important;
    box-sizing: border-box;
}

/* Hover: fondo azul + texto blanco + borde rojo */
.doctorado-item:hover, .maestria-item:hover,
.especialidad-item:hover, .diplomado-item:hover {
    background-color: var(--primary-color) !important;
    border-color: var(--accent-color) !important;
    transform: translateY(-5px) !important;
    box-shadow: 0 10px 28px rgba(0,64,128,0.28) !important;
}

.doctorado-item:hover *:not(.modality-badge),  .maestria-item:hover *:not(.modality-badge),
.especialidad-item:hover *:not(.modality-badge), .diplomado-item:hover *:not(.modality-badge) {
    color: #fff !important;
}

.doctorado-item:hover .card-ver-btn, .maestria-item:hover .card-ver-btn,
.especialidad-item:hover .card-ver-btn, .diplomado-item:hover .card-ver-btn {
    background: var(--accent-color) !important;
    color: #fff !important;
}


/* Sección de estadísticas */
.statistics {
    background-color: var(--primary-color);
    padding: 60px 20px;
}

.stat-container {
    display: flex;
    justify-content: space-around;
    flex-wrap: wrap;
    max-width: 1200px;
    margin: 0 auto;
}

.stat-card {
    background-color: var(--white);
    border-radius: 10px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s;
    width: 100%; /* Hace que las tarjetas ocupen el 100% del ancho */
    max-width: 250px; /* Ajusta el valor máximo del ancho */
    margin: 10px auto; /* Centra las tarjetas */
    cursor: pointer;
    height: auto; /* Asegura que todas las tarjetas tengan la misma altura */
}

.stat-card:hover {
    transform: translateY(-10px);
}

.stat-card h2 {
    font-size: 48px;
    margin-bottom: 10px;
    color: var(--primary-color);
}

.stat-card p {
    font-size: 16px;
    color: var(--text-color);
}

/* Colores específicos para tarjetas */
#card1 { background-color: #ffeb3b; }
#card2 { background-color: #4caf50; }
#card3 { background-color: #2196f3; }
#card4 { background-color: #ff9800; }

.stat-card i {
    font-size: 48px;
    color: var(--primary-color);
    margin-bottom: 20px;
}

/* Mantener el mismo tamaño en todas las pantallas */
@media (max-width: 768px) {
    .stat-container {
        display: flex;
        flex-direction: column;
        align-items: center;
    }

    .stat-card {
        max-width: 90%; /* Mantiene el tamaño consistente en móviles */
        margin: 10px 0;
    }
}


/* Estilos para la sección de misión */
.mission-section {
    background-color: var(--background-color); /* Fondo de la sección */
    padding: 100px 20px; /* Espaciado alrededor del contenido */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 80vh; /* Altura mínima para la sección */
}

.mission-card {
    max-width: 900px; /* Ancho máximo de la card */
    background-color: #004080; /* Fondo elegante para la card */
    padding: 40px; /* Espaciado interno */
    border-radius: 15px; /* Bordes redondeados */
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Sombra para darle relieve */
    text-align: center; /* Alineación central del contenido */
    color: var(--white); /* Texto blanco */
    position: relative;
    overflow: hidden;
}

.icon-container {
    font-size: 80px; /* Tamaño grande del ícono */
    color: var(--accent-color); /* Color del ícono */
    margin-bottom: 30px; /* Espacio debajo del ícono */
    background-color: #004080;
    border-radius: 50%;
    padding: 20px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    display: inline-block;
    position: relative;
    z-index: 1; /* Asegura que el ícono esté sobre otros elementos */
}

.mission-title {
    font-size: 48px; /* Tamaño grande del título */
    color: var(--white); /* Color del título */
    margin-bottom: 30px; /* Espacio debajo del título */
    font-family: 'Playfair Display', serif; /* Tipografía elegante para el título */
}

.mission-text {
    font-size: 26px; /* Tamaño de fuente del texto */
    color: var(--white); /* Color del texto */
    line-height: 1.8; /* Altura de línea para mejorar la legibilidad */
    margin-bottom: 20px; /* Espacio entre párrafos */
    font-family: 'Roboto', sans-serif; /* Tipografía legible para el cuerpo del texto */
    padding: 20px; /* Espacio interno para el texto */
    border: 3px solid var(--accent-color); /* Borde alrededor del texto */
    border-radius: 10px; /* Bordes redondeados */
    background-color: rgba(255, 255, 255, 0.1); /* Fondo semi-transparente para el texto */
}

/* Estilos adicionales para mejorar la estética */
.mission-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 6px;
    background: var(--accent-color);
    z-index: -1;
}

.mission-card:hover {
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); /* Aumenta la sombra en hover */
    transform: translateY(-5px); /* Mueve la card ligeramente hacia arriba en hover */
    transition: all 0.3s ease-in-out;
}

/* Estilos para la sección de visión */
.vision-section {
    background-color: var(--background-color); /* Fondo de la sección */
    padding: 100px 20px; /* Espaciado alrededor del contenido */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 80vh; /* Altura mínima para la sección */
}

.vision-card {
    max-width: 900px; /* Ancho máximo de la card */
    background-color: #004080; /* Fondo elegante para la card */
    padding: 40px; /* Espaciado interno */
    border-radius: 15px; /* Bordes redondeados */
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Sombra para darle relieve */
    text-align: center; /* Alineación central del contenido */
    color: var(--white); /* Texto blanco */
    position: relative;
    overflow: hidden;
}

.icon-container {
    font-size: 80px; /* Tamaño grande del ícono */
    color: var(--accent-color); /* Color del ícono */
    margin-bottom: 30px; /* Espacio debajo del ícono */
    background-color: #004080;
    border-radius: 50%;
    padding: 20px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    display: inline-block;
    position: relative;
    z-index: 1; /* Asegura que el ícono esté sobre otros elementos */
}

.vision-title {
    font-size: 48px; /* Tamaño grande del título */
    color: var(--white); /* Color del título */
    margin-bottom: 30px; /* Espacio debajo del título */
    font-family: 'Playfair Display', serif; /* Tipografía elegante para el título */
}

.vision-text {
    font-size: 26px; /* Tamaño de fuente del texto */
    color: var(--white); /* Color del texto */
    line-height: 1.8; /* Altura de línea para mejorar la legibilidad */
    margin-bottom: 20px; /* Espacio entre párrafos */
    font-family: 'Roboto', sans-serif; /* Tipografía legible para el cuerpo del texto */
    padding: 20px; /* Espacio interno para el texto */
    border: 3px solid var(--accent-color); /* Borde alrededor del texto */
    border-radius: 10px; /* Bordes redondeados */
    background-color: rgba(255, 255, 255, 0.1); /* Fondo semi-transparente para el texto */
}

/* Efectos de hover para la tarjeta de visión */
.vision-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 6px;
    background: var(--accent-color); /* Línea decorativa en la parte superior */
    z-index: -1;
}

.vision-card:hover {
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); /* Aumenta la sombra en hover */
    transform: translateY(-5px); /* Mueve la card ligeramente hacia arriba en hover */
    transition: all 0.3s ease-in-out;
    border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
}

/* Estilos para la sección de autoridades */
.autoridades-section {
    padding: 60px 20px;
    background-color: var(--background-color);
}

.section-title {
    text-align: center;
    font-size: 36px;
    color: var(--primary-color);
    margin-bottom: 40px;
    font-family: 'Playfair Display', serif;
}

/* Tarjeta del Vicerrector */
.vicerrector-card {
    background-color: var(--white);
    border-radius: 20px;
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
    text-align: center;
    padding: 40px;
    margin-bottom: 40px;
    max-width: 600px; /* Ancho de la tarjeta */
    margin: 0 auto 40px auto; /* Centra la tarjeta y ajusta el margen inferior */
    transition: transform 0.3s, box-shadow 0.3s, background-color 0.3s, color 0.3s;
    border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */

}

.vicerrector-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);
    background-color: var(--primary-color);
    color: var(--white);
    border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
}

.vicerrector-card:hover h2, 
.vicerrector-card:hover h3, 
.vicerrector-card:hover p {
    color: var(--white);
}

.autoridad-img-large {
    border-radius: 50%;
    width: 250px; /* Tamaño significativamente mayor de la imagen */
    height: 250px;
    object-fit: cover;
    margin-bottom: 20px;
    transition: color 0.3s;
}

.vicerrector-card:hover .autoridad-img-large {
    color: var(--white);
}

.vicerrector-card h2 {
    font-size: 28px;
    color: var(--primary-color);
    margin-bottom: 10px;
    transition: color 0.3s;
}

.vicerrector-card h3 {
    font-size: 20px;
    color: var(--secondary-color);
    margin-bottom: 15px;
    transition: color 0.3s;
}

.vicerrector-card p {
    font-size: 18px;
    color: var(--text-color);
    line-height: 1.6;
    transition: color 0.3s;
}

/* Tarjetas de los directores */
.autoridades-grid {
    display: flex;
    justify-content: center; /* Centra las tarjetas */
    flex-wrap: wrap;
    margin: 0 auto;
    gap: 15px; /* Añade separación entre tarjetas */
}

.autoridad-card {
    background-color: var(--white);
    border-radius: 15px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    width: 250px; /* Ancho fijo para las tarjetas de directores */
    text-align: center;
    padding: 20px;
    transition: transform 0.3s, box-shadow 0.3s, background-color 0.3s, color 0.3s;
    border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
}

.autoridad-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
    background-color: var(--primary-color);
    color: var(--white);
    border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
}

.autoridad-card:hover h2, 
.autoridad-card:hover h3, 
.autoridad-card:hover p {
    color: var(--white);
}

.autoridad-img {
    border-radius: 50%;
    width: 120px;
    height: 120px;
    object-fit: cover;
    margin-bottom: 20px;
    transition: color 0.3s;
}

.autoridad-card:hover .autoridad-img {
    color: var(--white);
}

.autoridad-card h2 {
    font-size: 22px;
    color: var(--primary-color);
    margin-bottom: 10px;
    transition: color 0.3s;
}

.autoridad-card h3 {
    font-size: 18px;
    color: var(--secondary-color);
    margin-bottom: 15px;
    transition: color 0.3s;
}

.autoridad-card p {
    font-size: 16px;
    color: var(--text-color);
    line-height: 1.5;
    transition: color 0.3s;
}

/* Estilos para la sección de revistas */
.revista-section {
    background-color: var(--background-color);
    padding: 60px 20px;
}

.section-title {
    text-align: center;
    font-size: 36px;
    color: var(--primary-color);
    margin-bottom: 40px;
    font-family: 'Playfair Display', serif;
}

.revistas-grid {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 20px;
}

.revista-card {
    background-color: var(--white);
    border-radius: 15px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    width: 310px;
    text-align: center;
    padding: 20px;
    transition: transform 0.3s, box-shadow 0.3s, background-color 0.3s, color 0.3s;
    border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
}

.revista-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
    background-color: var(--primary-color);
    color: var(--white);
    border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
}

.revista-card:hover h2, 
.revista-card:hover p {
    color: var(--white);
}

.revista-img {
    border-radius: 10px;
    width: 100%;
    height: 400px; /* Aumenta la altura de la imagen */
    object-fit: cover;
    margin-bottom: 20px;
    transition: color 0.3s;
}

.revista-card h2 {
    font-size: 22px;
    color: var(--primary-color);
    margin-bottom: 10px;
    transition: color 0.3s;
}

.revista-card p {
    font-size: 16px;
    color: var(--text-color);
    line-height: 1.5;
    margin-bottom: 20px;
    transition: color 0.3s;
}

/* Botón para abrir los modales */
.modal-button {
    background-color: var(--accent-color);
    color: var(--white);
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px;
    transition: background-color 0.3s, transform 0.3s;
}

.modal-button:hover {
    background-color: #a30f26;
    transform: scale(1.05);
}

/* Estilos generales para todos los modales */
.modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.7); /* Fondo oscuro */
}

.modal-content {
    background-color: var(--white);
    margin: 2% auto;
    border: 1px solid var(--primary-color);
    width: 85%;
    max-width: 900px;
    border-radius: 10px;
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
    overflow: hidden;
}

.modal-header {
    background-color: var(--primary-color);
    padding: 15px;
    color: var(--white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 2px solid var(--accent-color);
}

.modal-header h2, .modal-title {
    margin: 0;
    font-size: 24px;
    text-align: center;
}

.close-button {
    color: var(--white);
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
    margin-left: auto;
}

.close-button:hover {
    color: var(--accent-color);
}

.modal-body {
    padding: 30px;
    font-size: 18px;
    line-height: 1.8;
    color: var(--text-color);
    font-family: 'Roboto', sans-serif;
    background-color: var(--white);
    max-height: 70vh; /* Limita la altura del modal */
    overflow-y: auto; /* Scroll para contenido largo */
}

.modal-body p, .modal-body ul, .modal-body ol {
    margin-bottom: 20px;
}

.modal-body strong {
    font-weight: bold;
}

.modal-body ul li, .modal-body ol li {
    margin-bottom: 15px;
}

.modal-body i {
    margin-right: 10px;
}

.modal-content iframe {
    width: 100%;
    height: 600px;
    border: none;
    border-radius: 0 0 10px 10px;
}


/* hero para los programas de diplomado*/
.heroprogramasdiplomados {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.4)), url('img/cursodiplomado2.jpg') no-repeat center center/cover;
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.heroprogramasdiplomados-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.heroprogramasdiplomados-text {
    margin-bottom: 30px;
}

.heroprogramasdiplomados-text h1 {
    font-size: 52px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.heroprogramasdiplomados-text p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.heroprogramasdiplomados-buttons {
    display: flex;
    gap: 20px;
    justify-content: center;
}

.cta-heroprogramasdiplomados-button {
    background-color: #007bff; /* Azul fuerte */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-heroprogramasdiplomados-button:hover {
    background-color: #0056b3;
    transform: scale(1.08);
}

.cta-heroprogramasdiplomados-secondary-button {
    background-color: #28a745; /* Verde vibrante */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-heroprogramasdiplomados-secondary-button:hover {
    background-color: #218838;
    transform: scale(1.08);
}

/* hero para los programas de maestria*/
.heromaestria {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.4)), url('img/cursomaestria.jpg') no-repeat center center/cover; /* Imagen de fondo */
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.heromaestria-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.heromaestria-text {
    margin-bottom: 30px;
}

.heromaestria-text h1 {
    font-size: 52px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.heromaestria-text p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.heromaestria-buttons {
    display: flex;
    gap: 20px;
    justify-content: center;
}

.cta-heromaestria-button {
    background-color: #007bff; /* Azul fuerte */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-heromaestria-button:hover {
    background-color: #0056b3;
    transform: scale(1.08);
}

.cta-heromaestria-secondary-button {
    background-color: #28a745; /* Verde vibrante */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-heromaestria-secondary-button:hover {
    background-color: #218838;
    transform: scale(1.08);
}

/*hero para las especialidades*/
.heroespecialidad {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.4)), url('img/cursodiplomado1.jpeg') no-repeat center center/cover; /* Imagen de fondo */
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.heroespecialidad-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.heroespecialidad-text {
    margin-bottom: 30px;
}

.heroespecialidad-text h1 {
    font-size: 52px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.heroespecialidad-text p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.heroespecialidad-buttons {
    display: flex;
    gap: 20px;
    justify-content: center;
}

.cta-heroespecialidad-button {
    background-color: #007bff; /* Azul fuerte */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-heroespecialidad-button:hover {
    background-color: #0056b3;
    transform: scale(1.08);
}

.cta-heroespecialidad-secondary-button {
    background-color: #ffc107; /* Amarillo vibrante */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--black);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-heroespecialidad-secondary-button:hover {
    background-color: #e0a800;
    transform: scale(1.08);
}

/*hero para el doctorado*/
.herodoctorado {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.5)), url('img/cursodoctorado.png') no-repeat center center/cover; /* Imagen de fondo */
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.herodoctorado-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.herodoctorado-text {
    margin-bottom: 30px;
}

.herodoctorado-text h1 {
    font-size: 56px;
    margin-bottom: 20px;
    font-weight: 800;
    line-height: 1.2;
    color: #ffffff;
}

.herodoctorado-text p {
    font-size: 22px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.herodoctorado-buttons {
    display: flex;
    gap: 20px;
    justify-content: center;
}

.cta-herodoctorado-button {
    background-color: #343a40; /* Gris oscuro */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-herodoctorado-button:hover {
    background-color: #23272b;
    transform: scale(1.08);
}

.cta-herodoctorado-secondary-button {
    background-color: #17a2b8; /* Azul turquesa */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-herodoctorado-secondary-button:hover {
    background-color: #138496;
    transform: scale(1.08);
}

/*hero para los cursos*/
.herocursosextension {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url('img/cursomaestria.jpg') no-repeat center center/cover; /* Imagen de fondo */
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.herocursosextension-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.herocursosextension-text {
    margin-bottom: 30px;
}

.herocursosextension-text h1 {
    font-size: 48px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.herocursosextension-text p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.herocursosextension-buttons {
    display: flex;
    gap: 20px;
    justify-content: center;
}

.cta-herocursosextension-button {
    background-color: #28a745; /* Verde fuerte */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-herocursosextension-button:hover {
    background-color: #218838;
    transform: scale(1.08);
}

.cta-herocursosextension-secondary-button {
    background-color: #ffc107; /* Amarillo brillante */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--black);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-herocursosextension-secondary-button:hover {
    background-color: #e0a800;
    transform: scale(1.08);
}

/* Estilos adaptados al estilo del hero de los cursos */
.hero-posgrado {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url('img/aulavirtual.jpg') no-repeat center center/cover; /* Imagen de fondo del Aula Virtual */
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.hero-content-posgrado {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.hero-content-posgrado h1 {
    font-size: 48px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.hero-content-posgrado p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.cta-button-posgrado {
    background-color: #003366; /* azul */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-button-posgrado:hover {
    background-color: #66B2FF;
    transform: scale(1.08);
}

.hero-contacto {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url('img/contactanos.jpg') no-repeat center center/cover; /* Cambia la imagen de fondo según corresponda */
    color: var(--white);
    padding: 0 40px;
    position: relative;
}

.hero-content-contacto {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.hero-content-contacto h1 {
    font-size: 48px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.hero-content-contacto p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
}

.cta-button-contacto {
    background-color: #003366; /* Azul */
    padding: 15px 40px;
    border-radius: 8px;
    color: var(--white);
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3);
}

.cta-button-contacto:hover {
    background-color: #66B2FF;
    transform: scale(1.08);
}


/* Hero para la Biblioteca Virtual */
.hero-biblioteca {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url('img/biblioteca.png') no-repeat center center/cover; /* Imagen de fondo */
    color: #ffffff; /* Color del texto */
    padding: 0 40px;
    position: relative;
}

.hero-biblioteca-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 1200px;
    width: 100%;
}

.hero-biblioteca-text {
    margin-bottom: 30px;
}

.hero-biblioteca-text h1 {
    font-size: 48px;
    margin-bottom: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: #ffffff;
}

.hero-biblioteca-text p {
    font-size: 20px;
    margin-bottom: 30px;
    max-width: 700px;
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9); /* Color del párrafo con opacidad */
}

.hero-biblioteca-buttons {
    display: flex;
    gap: 20px;
    justify-content: center;
}

/* Botón principal en el hero de la biblioteca */
.cta-hero-biblioteca-button {
    background-color: #66B2FF; /* Azul claro */
    padding: 15px 40px;
    border-radius: 8px;
    color: #ffffff; /* Texto blanco */
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3); /* Sombra */
}

.cta-hero-biblioteca-button:hover {
    background-color: #004080; /* Azul oscuro en hover */
    transform: scale(1.08); /* Escala en hover */
}

/* Botón secundario en el hero de la biblioteca */
.cta-hero-biblioteca-secondary-button {
    background-color: #ffc107; /* Amarillo brillante */
    padding: 15px 40px;
    border-radius: 8px;
    color: #004080; /* Texto azul oscuro */
    font-weight: bold;
    transition: background-color 0.3s ease, transform 0.3s ease;
    text-decoration: none;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.3); /* Sombra */
}

.cta-hero-biblioteca-secondary-button:hover {
    background-color: #e0a800; /* Cambio de color en hover */
    transform: scale(1.08); /* Escala en hover */
}

/* Hero para Proyectos de Interacción Social */
.hero-proyectos {
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url('img/bibliotecas_virtuales.jpg') no-repeat center center/cover;
    color: #ffffff;
    padding: 0 40px;
    position: relative;
}

.hero-proyectos::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: rgba(0, 0, 0, 0.5); /* Filtro oscuro */
    z-index: 1;
}

.hero-proyectos .hero-content-proyectos {
    position: relative;
    z-index: 2;
    max-width: 900px;
    text-align: center;
}

.hero-proyectos h1 {
    font-size: 3rem;
    font-weight: bold;
    color: #ffffff;
}

.hero-proyectos p {
    font-size: 1.5rem;
    color: rgba(255, 255, 255, 0.9);
    line-height: 1.8;
}

 /* Estilos para las pestañas de diplomados */
        .diplomados-tabs {
            display: flex;
            justify-content: center;
            margin-bottom: 20px;
        }

        .diplomados-tab {
            padding: 10px 20px;
            background-color: var(--primary-color, #007bff);
            color: var(--white, #ffffff);
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }

        .diplomados-tab:hover, .diplomados-tab.active {
            background-color: var(--accent-color, #0056b3);
        }

        /* Estilos para el contenedor de diplomados */
        #diplomados-list-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }

        .diplomado-item {
            width: 30%;
            margin-bottom: 20px;
            background-color: var(--white, #ffffff);
            border-radius: 5px;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s, background-color 0.3s, color 0.3s;
            cursor: pointer;
            border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
        }

        .diplomado-item:hover {
            background-color: var(--primary-color);
            color: var(--white);
            transform: translateY(-10px);
            border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
        }

        .diplomado-item img {
            width: 100%;
            height: auto;
            border-radius: 5px;
            margin-bottom: 15px;
        }
        @media (max-width: 768px) {
            .diplomado-item {
                width: 100%; /* Ocupa el 100% del contenedor en pantallas pequeñas */
            }
        
            #diplomados-list-container {
                justify-content: center; /* Centra las tarjetas en pantallas pequeñas */
            }
        }
        
/* Modal */
.modal {
    display: none;
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.5);
}

.modal-content {
    background-color: var(--white);
    margin: 2% auto;
    border: 1px solid var(--primary-color);
    width: 85%;
    max-width: 900px;
    border-radius: 10px;
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
    overflow: hidden;
}

.modal-header {
    background-color: var(--primary-color);
    padding: 15px;
    color: var(--white);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.modal-header h2 {
    margin: 0;
    font-size: 24px;
}

.close-button {
    color: var(--white);
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s;
}

.close-button:hover {
    color: var(--accent-color);
}

.modal-body {
    padding: 20px;
    font-size: 18px;
    color: var(--white);
    line-height: 1.8;
    background-color: var(--primary-color);
}

/* Estilos para las pestañas de doctorados */
        .doctorados-tabs {
            display: flex;
            justify-content: center;
            margin-bottom: 20px;
        }

        .doctorados-tab {
            padding: 10px 20px;
            background-color: var(--primary-color, #007bff);
            color: var(--white, #ffffff);
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }

        .doctorados-tab:hover, .doctorados-tab.active {
            background-color: var(--accent-color, #0056b3);
        }

        /* Estilos para el contenedor de doctorados */
        #doctorados-list-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }

        .doctorado-item {
            width: 30%;
            margin-bottom: 20px;
            background-color: var(--white, #ffffff);
            border-radius: 5px;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s, background-color 0.3s, color 0.3s;
            cursor: pointer;
            border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
        }

        .doctorado-item:hover {
            background-color: var(--primary-color);
            color: var(--white);
            transform: translateY(-10px);
            border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
        }

        .doctorado-item img {
            width: 100%;
            height: auto;
            border-radius: 5px;
            margin-bottom: 15px;
        }

       

        .whatsapp-link i {
            color: #25D366;
        }
        @media (max-width: 768px) {
            .doctorado-item {
                width: 100%; /* Ocupa el 100% del contenedor en pantallas pequeñas */
            }
        
            #doctorado-list-container {
                justify-content: center; /* Centra las tarjetas en pantallas pequeñas */
            }
        }


 /* Estilos para las pestañas de maestrías */
        .maestrias-tabs {
            display: flex;
            justify-content: center;
            margin-bottom: 20px;
        }

        .maestrias-tab {
            padding: 10px 20px;
            background-color: var(--primary-color, #007bff);
            color: var(--white, #ffffff);
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }

        .maestrias-tab:hover, .maestrias-tab.active {
            background-color: var(--accent-color, #0056b3);
        }

        /* Estilos para el contenedor de maestrías */
        #maestrias-list-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }

        .maestria-item {
            width: 30%;
            margin-bottom: 20px;
            background-color: var(--white, #ffffff);
            border-radius: 5px;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s, background-color 0.3s, color 0.3s;
            cursor: pointer;
            border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
        }

        .maestria-item:hover {
            background-color: var(--primary-color);
            color: var(--white);
            transform: translateY(-10px);
            border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
        }

        .maestria-item img {
            width: 100%;
            height: auto;
            border-radius: 5px;
            margin-bottom: 15px;
        }

        @media (max-width: 768px) {
            .maestria-item {
                width: 100%; /* Ocupa el 100% del contenedor en pantallas pequeñas */
            }
        
            #maestria-list-container {
                justify-content: center; /* Centra las tarjetas en pantallas pequeñas */
            }
        }
        

/* Estilos para las pestañas de especialidades */
        .especialidades-tabs {
            display: flex;
            justify-content: center;
            margin-bottom: 20px;
        }

        .especialidades-tab {
            padding: 10px 20px;
            background-color: var(--primary-color, #007bff);
            color: var(--white, #ffffff);
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }

        .especialidades-tab:hover, .especialidades-tab.active {
            background-color: var(--accent-color, #0056b3);
        }

        /* Estilos para el contenedor de especialidades */
        #especialidades-list-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }

        .especialidad-item {
            width: 30%;
            margin-bottom: 20px;
            background-color: var(--white, #ffffff);
            border-radius: 5px;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s, background-color 0.3s, color 0.3s;
            cursor: pointer;
            border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
        }

        .especialidad-item:hover {
            background-color: var(--primary-color);
            color: var(--white);
            transform: translateY(-10px);
            border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
        }

        .especialidad-item img {
            width: 100%;
            height: auto;
            border-radius: 5px;
            margin-bottom: 15px;
        }

        @media (max-width: 768px) {
            .especialidad-item {
                width: 100%; /* Ocupa el 100% del contenedor en pantallas pequeñas */
            }
        
            #especialidad-list-container {
                justify-content: center; /* Centra las tarjetas en pantallas pequeñas */
            }
        }
        


/* Estilos para las pestañas de cursos de extensión */
        .cursos-extension-tabs {
            display: flex;
            justify-content: center;
            margin-bottom: 20px;
        }

        .cursos-extension-tab {
            padding: 10px 20px;
            background-color: var(--primary-color, #007bff);
            color: var(--white, #ffffff);
            border: none;
            cursor: pointer;
            transition: background-color 0.3s;
        }

        .cursos-extension-tab:hover, .cursos-extension-tab.active {
            background-color: var(--accent-color, #0056b3);
        }

        /* Estilos para el contenedor de cursos de extensión */
        #cursos-extension-list-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }

        .curso-extension-item {
            width: 30%;
            margin-bottom: 20px;
            background-color: var(--white, #ffffff);
            border-radius: 5px;
            padding: 20px;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            transition: transform 0.3s, background-color 0.3s, color 0.3s;
            cursor: pointer;
            border: 2px solid var(--primary-color); /* Añade un borde de 2px del color principal */
        }

        .curso-extension-item:hover {
            background-color: var(--primary-color);
            color: var(--white);
            transform: translateY(-10px);
            border-color: var(--accent-color); /* Cambia el borde cuando se hace hover */
        }

        .curso-extension-item img {
            width: 100%;
            height: auto;
            border-radius: 5px;
            margin-bottom: 15px;
        }
        @media (max-width: 768px) {
            .curso-extension-item {
                width: 100%; /* Ocupa el 100% del contenedor en pantallas pequeñas */
            }
        
            #cursos-extension-list-container {
                justify-content: center; /* Centra las tarjetas en pantallas pequeñas */
            }
        }
        
/* Estilos para la sección de noticias */
.news-section {
    background-color: var(--background-color);
    padding: 60px 20px;
}

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

.news-title {
    font-size: 48px;
    color: var(--primary-color);
    text-align: center;
    margin-bottom: 40px;
    font-family: 'Playfair Display', serif;
}

.news-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 20px;
}

/* Estilo de las tarjetas de noticias */
.news-card {
    background-color: #fff;
    border-radius: 15px;
    border: 2px solid var(--primary-color); /* Borde en el color principal del sitio */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease, background-color 0.3s ease;
}

/* Hover: cambia el color de fondo y los bordes */
.news-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.2);
    border-color: var(--accent-color);
    background-color: var(--primary-color);
}

.news-image {
    width: 100%;
    height: 200px;
    object-fit: cover;
}

.news-content {
    padding: 20px;
}

/* Estilo del título de las tarjetas de noticias */
.news-heading {
    font-size: 24px;
    color: var(--primary-color); /* Color principal del título */
    margin-bottom: 10px;
    font-family: 'Playfair Display', serif; /* Consistencia en las tipografías */
    transition: color 0.3s ease;
}

.news-meta {
    font-size: 14px;
    color: #888;
    margin-bottom: 20px;
}

.news-meta span {
    display: block;
    margin-bottom: 5px;
}

/* Color del texto en las tarjetas */
.news-text {
    font-size: 16px;
    color: var(--text-color); /* Asegura el color de texto en negro */
    line-height: 1.6;
    margin-bottom: 20px;
    transition: color 0.3s ease;
}

/* Estilo del enlace "Leer más" */
.news-read-more {
    font-size: 16px;
    color: var(--primary-color); /* Color principal para los enlaces */
    text-decoration: none;
    display: inline-block;
    transition: color 0.3s ease;
}

/* Hover en el enlace "Leer más" */
.news-read-more:hover {
    color: #fff; /* Cambia a blanco en hover */
}

/* Hover: cambia el color del texto de las tarjetas a blanco */
.news-card:hover .news-heading,
.news-card:hover .news-text,
.news-card:hover .news-read-more {
    color: #fff; /* Cambia el color del texto a blanco al hacer hover */
}

/* Responsividad: ajusta el diseño de la cuadrícula en pantallas más pequeñas */
@media (max-width: 768px) {
    .news-grid {
        grid-template-columns: 1fr;
    }
}

.noticias {
    padding-bottom: 60px;
    padding-left: 20px;
    padding-right: 20px;
}
/* Contenedor general de la noticia */
.noticias .container {
    max-width: 1000px;
    margin: 40px auto;
    padding: 20px;
    background-color: #fff;
    border-radius: 12px;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    /* Ajuste de padding-top para la sección noticias */


}

/* Título de la noticia */
.noticias .news-title {
    font-size: 48px;
    color: var(--primary-color);
    font-family: 'Playfair Display', serif;
    margin-bottom: 20px;
    text-align: center;
}

/* Metadatos de la noticia */
.noticias .news-meta {
    font-size: 14px;
    color: #888;
    text-align: center;
    margin-bottom: 30px;
    display: flex;
    justify-content: center;
    gap: 15px;
}

.noticias .news-meta span {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

/* Párrafos */
.noticias p {
    font-size: 18px;
    color: var(--text-color);
    line-height: 1.7;
    margin-bottom: 20px;
}

/* Títulos y subtítulos */
.noticias h1, .noticias h2, .noticias h3, .noticias h4, .noticias h5, .noticias h6 {
    color: var(--primary-color);
    font-family: 'Playfair Display', serif;
    margin-bottom: 15px;
    line-height: 1.3;
}

.noticias h2 i, .noticias h3 i {
    margin-right: 10px;
}

/* Imágenes y figuras */
.noticias figure {
    margin: 30px 0;
    text-align: center;
}

.noticias figure img {
    max-width: 100%;
    height: auto;
    border-radius: 8px;
}

.noticias figcaption {
    font-size: 14px;
    color: #666;
    margin-top: 8px;
    text-align: center;
}

/* Galería de imágenes */
.noticias .gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 20px;
    margin: 20px 0;
}

.noticias .gallery img {
    width: 100%;
    height: auto;
    border-radius: 8px;
}

/* Citas */
.noticias blockquote {
    font-size: 20px;
    font-style: italic;
    margin: 20px 0;
    padding: 20px;
    background-color: #f7f7f7;
    border-left: 4px solid var(--primary-color);
    color: #555;
}

/* Tablas */
.noticias table {
    width: 100%;
    border-collapse: collapse;
    margin: 20px 0;
    font-size: 16px;
}

.noticias table th, .noticias table td {
    border: 1px solid #ddd;
    padding: 12px;
    text-align: left;
}

.noticias table th {
    background-color: var(--primary-color);
    color: #fff;
}

.noticias table tr:nth-child(even) {
    background-color: #f9f9f9;
}

/* Listas ordenadas y desordenadas */
.noticias ul, .noticias ol {
    margin: 20px 0;
    padding-left: 40px;
}

.noticias ul li, .noticias ol li {
    font-size: 18px;
    margin-bottom: 10px;
    color: var(--text-color);
}

/* Código */
.noticias pre {
    background-color: #f4f4f4;
    padding: 20px;
    font-size: 16px;
    overflow-x: auto;
    border-left: 5px solid var(--primary-color);
    border-radius: 5px;
}

.noticias code {
    background-color: #f4f4f4;
    padding: 3px 6px;
    font-family: 'Courier New', Courier, monospace;
    border-radius: 3px;
    color: #333;
}

/* Botones */
.noticias .button {
    display: inline-block;
    padding: 12px 24px;
    background-color: var(--primary-color);
    color: #fff;
    text-decoration: none;
    font-size: 16px;
    border-radius: 5px;
    transition: background-color 0.3s ease;
    margin-top: 20px;
}

.noticias .button:hover {
    background-color: var(--accent-color);
}

/* Videos */
.noticias iframe {
    width: 100%;
    height: 400px;
    margin: 20px 0;
    border-radius: 8px;
    border: none;
}

/* Responsividad */
@media (max-width: 768px) {
    .noticias .container {
        padding: 15px;
    }

    .noticias .gallery {
        grid-template-columns: 1fr; /* Una sola columna en móviles */
    }
}

/* Estilos para el botón de "Back to Top" */
#back-to-top {
    position: fixed;
    bottom: 100px;
    right: 28px;
    width: 50px;
    height: 50px;
    background: linear-gradient(135deg, var(--primary-color) 0%, #002a54 100%);
    border-radius: 50%;
    border: none;
    box-shadow: 0 6px 24px rgba(0, 64, 128, 0.45);
    color: #fff;
    font-size: 20px;
    display: none;
    justify-content: center;
    align-items: center;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    z-index: 9989;
}

#back-to-top:hover {
    transform: scale(1.1);
    box-shadow: 0 8px 28px rgba(0, 64, 128, 0.55);
}

#back-to-top i {
    pointer-events: none;
}

@media (max-width: 768px) {
    #back-to-top {
        width: 44px;
        height: 44px;
        font-size: 18px;
        right: 16px;
        bottom: 90px;
    }
}

/* Estilo para el resaltado en estilo de notificación */
.highlight-notification {
    background-color: rgba(255, 0, 0, 0.1); /* Rojo suave para fondo */
    /*border-left: 5px solid #ff0000;*/ /* Línea roja en el borde izquierdo */
    padding: 15px 20px;
    margin-bottom: 20px;
    font-size: 1.1rem;
    color: #333; /* Color de texto gris oscuro para contraste */
    border-radius: 4px;
    text-align: justify;
}
/* Estilo para el resaltado en estilo de notificación para la lista */
.highlight-list {
    background-color: rgba(0, 123, 255, 0.1); /* Azul suave para fondo */
    /*border-left: 5px solid #007bff;*/ /* Línea azul en el borde izquierdo */
    padding: 15px 20px;
    margin-bottom: 20px;
    font-size: 1.1rem;
    color: #333; /* Color de texto gris oscuro para contraste */
    border-radius: 10px;
    text-align: justify;
    border-radius: 4px;
}


.highlight-list li {
    margin-bottom: 10px;
    line-height: 1.6;
    margin-left: 10px;
}

/* Contact Cards */
.contacto-card {
    background-color: #fff;
    padding: 20px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    text-align: center;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.contacto-card:hover {
    transform: translateY(-10px);
    box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2);
}

.contacto-card h3 {
    font-size: 20px;
    margin-bottom: 15px;
    color: #333;
}

.contacto-card p {
    font-size: 16px;
    margin: 10px 0;
    color: #666;
    display: flex;
    align-items: left;
    justify-content: left;
}

.contacto-card p i {
    margin-right: 10px;
    font-size: 18px;
    color: #555;
}

.cardo-icon {
    font-size: 36px;
    color: #007bff;
    margin-bottom: 15px;
}

/* forumalario de contacto*/
.contacto-form {
    background-color: #fff;
    padding: 30px;
    border-radius: 8px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
    margin-top: 40px;
    max-width: 600px; /* Añadir un ancho máximo */
    margin-left: auto; /* Centrar el formulario */
    margin-right: auto; /* Centrar el formulario */
}


.contacto-form .form-group {
    margin-bottom: 20px;
}

.contacto-form label {
    display: block;
    margin-bottom: 8px;
    font-size: 16px;
    color: #333;
}

.contacto-form input,
.contacto-form textarea {
    width: 100%;
    padding: 10px;
    font-size: 16px;
    border: 1px solid #ddd;
    border-radius: 4px;
    outline: none;
}

.contacto-form input:focus,
.contacto-form textarea:focus {
    border-color: #007bff;
}

.contacto-form button {
    background-color: #007bff;
    color: #fff;
    padding: 12px 20px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 16px;
    display: inline-flex;
    align-items: center;
}

.contacto-form button i {
    margin-right: 8px;
}

.contacto-form button:hover {
    background-color: #0056b3;
}

/* Estilos de notificación de éxito (verde) */
.success {
    background-color: #d4edda;
    color: #155724;
    border-left: 5px solid #28a745;
    padding: 10px;
    margin-bottom: 15px;
    border-radius: 4px;
    font-family: 'Roboto', sans-serif;
    font-size: 14px;
    max-width: 100%; /* Ajustado al tamaño del formulario */
}

/* Estilos de notificación de error (rojo) */
.error {
    background-color: #f8d7da;
    color: #721c24;
    border-left: 5px solid #dc3545;
    padding: 10px;
    margin-bottom: 15px;
    border-radius: 4px;
    font-family: 'Roboto', sans-serif;
    font-size: 14px;
    max-width: 100%; /* Ajustado al tamaño del formulario */
}


/* Logo de Posgrado */
.logo-posgrado {
    text-align: center;
    margin-bottom: 20px;
}

.logo-posgrado .logo-img {
    width: 250px; /* Ajusta el tamaño del logo según tus necesidades */
}

/* Estilos para la plantilla */
.custom-styles h1 {
    font-size: 2.5em;
    margin: 0;
}

.custom-styles .container {
    max-width: 1200px;
    margin: auto;
    background: white;
    padding: 30px;
    border-radius: 5px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

.custom-styles h2 {
    color: #333;
}

/* ── Scroll Reveal ──────────────────────────── */
.reveal {
    opacity: 0;
    transform: translateY(42px);
    transition: opacity 0.65s ease-out, transform 0.65s ease-out;
    will-change: opacity, transform;
}
.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Ajustes para tablas */
.custom-styles table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 15px;
    border: 2px solid var(--primary-color); /* Aumentado el grosor del borde */
}

.custom-styles th, 
.custom-styles td {
    border: 1px solid var(--primary-color);
    padding: 8px 10px;
    text-align: left;
    font-size: 14px;
}

.custom-styles th {
    background-color: var(--primary-color);
    color: var(--white);
}

.custom-styles td {
    background-color: var(--white);
    color: var(--text-color);
}

/* Ajustes para textarea */
.custom-styles textarea {
    width: 100%;
    height: 100px;
    margin-bottom: 10px;
    resize: vertical;
}

/* Ajustes para el espaciado en las secciones */
.custom-styles .section {
    margin-bottom: 15px; /* Reducido el espacio entre secciones */
    padding: 10px; /* Reducido el padding */
}

/* Ajustes para inputs y select */
.custom-styles input[type="text"], 
.custom-styles input[type="number"], 
.custom-styles input[type="date"], 
.custom-styles input[type="url"], 
.custom-styles select,
.custom-styles textarea {
    width: calc(100% - 10px);
    padding: 8px;
    margin-bottom: 8px;
    border: 2px solid var(--primary-color); /* Aumentado el grosor del borde */
    border-radius: 4px;
    box-sizing: border-box;
}

/* Botones */
.custom-styles .add-row, 
.custom-styles .save-button {
    padding: 8px 15px;
    font-size: 14px;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 0.3s ease, transform 0.2s ease;
}

/* Estilo del botón para añadir filas */
.custom-styles .add-row {
    background-color: var(--accent-color);
    color: var(--white);
}

.custom-styles .add-row:hover {
    background-color: #a30f26;
}

/* Estilo del botón guardar */
.custom-styles .save-button {
    background-color: var(--primary-color);
    color: var(--white);
    border: 2px solid var(--primary-color); /* Borde más visible */
}

.custom-styles .save-button:hover {
    background-color: var(--accent-color);
    transform: scale(1.05);
}

/* ═══════════════════════════════════════════════════════
   PAGE-SPECIFIC COMPONENTS
   ═══════════════════════════════════════════════════════ */

/* ── Nosotros ────────────────────────────────────────── */
.section-heading {
    text-align: center;
    margin-bottom: 48px;
}
.section-heading h2 {
    font-family: 'Playfair Display', serif;
    font-size: 34px;
    font-weight: 800;
    color: var(--primary-color);
    margin: 0 0 14px;
}
.section-heading .hero-divider {
    margin: 0 auto;
}

.card-inner { padding: 36px 40px; }
@media (max-width: 640px) { .card-inner { padding: 24px 20px; } }

.nosotros-content {
    font-size: 16px;
    color: #4b5563;
    line-height: 1.9;
}
.nosotros-content ul {
    list-style: none;
    padding: 0;
    margin: 0;
    border: none;
    border-radius: 0;
    color: inherit;
    font-size: inherit;
    line-height: inherit;
    background: transparent;
}
.nosotros-content ul li {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 18px 24px;
    border-bottom: 1px solid #f1f5f9;
    line-height: 1.7;
}
.nosotros-content ul li:last-child {
    border-bottom: none;
}
.nosotros-content ul li::before {
    content: '\f058';
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    color: var(--primary-color);
    font-size: 20px;
    flex-shrink: 0;
    margin-top: 2px;
}

/* ═══════════════════════════════════════════════════════
   UTILITY / COMPONENT CLASSES — eliminan CSS inline
   ═══════════════════════════════════════════════════════ */

/* ── Layout ──────────────────────────────────────────── */
.container-xl  { max-width: 1200px; margin: 0 auto; padding: 0 20px; box-sizing: border-box; }
.container-lg  { max-width: 1100px; margin: 0 auto; padding: 0 20px; box-sizing: border-box; }
.container-md  { max-width: 1100px; margin: 0 auto; padding: 0 20px; box-sizing: border-box; }
.container-sm  { max-width: 860px;  margin: 0 auto; padding: 0 20px; box-sizing: border-box; }

/* ── Section backgrounds ─────────────────────────────── */
.section-light { background: #f0f4f8; padding: 56px 0 72px; }
.section-white { background: #fff;    padding: 56px 0 72px; }

/* ── Hero inner content wrapper ──────────────────────── */
.hero-content    { position: relative; z-index: 3; max-width: 860px; width: 100%; padding: 0 20px; }
.hero-content-lg { position: relative; z-index: 3; max-width: 900px; width: 100%; padding: 0 20px; }
.hero-content-xl { position: relative; z-index: 3; max-width: 1100px; width: 100%; padding: 0 20px; }

/* ── Hero typography & decoration ───────────────────── */
.hero-icon    { font-size: 60px; margin-bottom: 20px; display: block; opacity: 0.9; }
.hero-title   { font-size: 52px; font-weight: 800; margin: 0 0 18px; font-family: 'Playfair Display', serif; line-height: 1.15; text-shadow: 0 2px 12px rgba(0,0,0,0.45); color: #fff; }
.hero-subtitle { font-size: 20px; opacity: 0.92; margin: 0 auto; max-width: 680px; line-height: 1.7; text-shadow: 0 1px 6px rgba(0,0,0,0.3); color: #fff; }
.hero-divider { width: 60px; height: 4px; background: var(--accent-color); border-radius: 2px; margin: 22px auto 0; }
.hero-overlay { position: absolute; inset: 0; pointer-events: none; background: rgba(0,0,0,var(--overlay-opacity,0)); }

/* ── Cards ───────────────────────────────────────────── */
.card-white    { background: #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.08); }
.card-pad      { padding: 24px 28px; }
.card-pad-lg   { padding: 28px 32px; }
.card-bar-red  { height: 5px; background: linear-gradient(90deg, var(--accent-color), #f59e0b); }
.card-bar-blue { height: 5px; background: linear-gradient(90deg, var(--primary-color), #0369a1); }

/* ── Dark navy panel (sidebar / detail panels) ───────── */
.panel-dark    { background: linear-gradient(135deg, #001a42, #003270); color: #fff; }
.panel-dark-sm { background: linear-gradient(135deg, #001a42, #003270); padding: 16px 20px; display: flex; align-items: center; gap: 10px; color: #fff; }
.panel-dark-md { background: linear-gradient(135deg, #001a42, #003270); padding: 20px 28px; display: flex; align-items: center; gap: 14px; color: #fff; }
.panel-dark-heading { font-size: 18px; font-weight: 700; color: #fff; margin: 0; font-family: 'Playfair Display', serif; }

/* ── Flex shortcuts ──────────────────────────────────── */
.flex-center    { display: flex; align-items: center; }
.flex-center-6  { display: flex; align-items: center; gap: 6px; }
.flex-center-10 { display: flex; align-items: center; gap: 10px; }
.flex-center-12 { display: flex; align-items: center; gap: 12px; }
.flex-start-10  { display: flex; align-items: flex-start; gap: 10px; }
.flex-start-12  { display: flex; align-items: flex-start; gap: 12px; }
.flex-start-20  { display: flex; align-items: flex-start; gap: 20px; flex-wrap: wrap; }
.flex-col-20    { display: flex; flex-direction: column; gap: 20px; }
.flex-1         { flex: 1; min-width: 0; }

/* ── Image cover ─────────────────────────────────────── */
.img-cover { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s; }

/* ── Text helpers ────────────────────────────────────── */
.text-accent    { color: var(--accent-color); }
.text-label     { font-size: 10px; color: #94a3b8; margin: 0 0 2px; text-transform: uppercase; letter-spacing: .4px; font-weight: 600; }
.text-heading   { font-size: 14px; color: #1f2937; font-weight: 600; margin: 0; }
.text-muted-link       { color: rgba(255,255,255,0.70); text-decoration: none; }
.text-muted-link-light { color: rgba(255,255,255,0.65); text-decoration: none; }

/* ── Icon button (white tinted, used inside dark panels) */
.btn-icon      { width: 36px; height: 36px; border-radius: 9px; background: rgba(255,255,255,0.15); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.btn-icon-sm   { width: 32px; height: 32px; border-radius: 8px; background: rgba(255,255,255,0.15); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }

/* Estilo del contenedor principal */
.custom-styles {
    max-width: 1100px;
    margin: 20px auto;
    padding: 10px 20px;
    background-color: var(--white);
    border-radius: 8px;
    box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);
    font-family: 'Roboto', sans-serif;
}

#specific-page-content {
    margin-top: 160px; /* Ajuste solo para esta página */
    max-width: 1100px;
    margin: 120px auto 20px;
    padding: 10px 20px;
    background-color: var(--white);
    border-radius: 8px;
    box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);
    font-family: 'Roboto', sans-serif;
}


/* Clase card-biblioteca basada en el estilo de Misión y Visión */

/* Estilos para las tres primeras tarjetas */
.card-biblioteca-primera {
    background-color: #004080; /* Fondo azul oscuro */
    border-radius: 15px; /* Bordes redondeados */
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Sombra elegante */
    padding: 40px;
    text-align: center;
    color: #ffffff; /* Texto blanco */
    font-family: 'Playfair Display', serif; /* Tipografía elegante */
    transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
    position: relative;
    overflow: hidden;
    max-width: 900px; /* Limitar el ancho máximo */
    margin: 0 auto 20px auto; /* Centrando las tarjetas */
    border: 2px solid rgba(255, 255, 255, 0.2); /* Borde suave */
}

.card-biblioteca-primera:hover {
    transform: translateY(-5px); /* Movimiento hacia arriba en hover */
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); /* Sombra más fuerte en hover */
}

.card-biblioteca-primera::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background-color: transparent;
    transition: background-color 0.3s ease;
}

.card-biblioteca-primera:hover::before {
    background-color: red; /* Aparece el borde rojo superior en hover */
}

.card-biblioteca-primera .icon-container {
    font-size: 80px;
    color: #66B2FF; /* Azul claro */
    background-color: #004080;
    padding: 20px;
    border-radius: 50%;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sombra suave */
    margin-bottom: 20px;
}

.card-biblioteca-primera .title {
    font-size: 1.8rem; /* Tamaño de título 1.8 rem para las primeras tarjetas */
    margin-bottom: 20px;
    color: #ffffff;
    font-family: 'Playfair Display', serif; /* Tipografía elegida */
}

.card-biblioteca-primera .text {
    font-size: 1.6rem; /* Tamaño de texto 1.2 rem */
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9); /* Texto ligeramente transparente */
    font-family: 'Playfair Display', serif; /* Tipografía elegida */
    padding: 20px;
    border: 3px solid red; /* Borde rojo */
    border-radius: 10px;
    background-color: rgba(255, 255, 255, 0.1); /* Fondo semitransparente */
}

/* Estilos para las tarjetas de las demás secciones */
.card-biblioteca {
    background-color: #004080; /* Fondo azul oscuro */
    border-radius: 15px; /* Bordes redondeados */
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2); /* Sombra elegante */
    padding: 40px;
    text-align: center;
    color: #ffffff; /* Texto blanco */
    font-family: 'Playfair Display', serif; /* Tipografía elegante */
    transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
    position: relative;
    overflow: hidden;
    max-width: calc(25% - 20px); /* Limitar el ancho máximo */
    margin-bottom: 20px;
    border: 2px solid rgba(255, 255, 255, 0.2); /* Borde suave */
}

.card-biblioteca:hover {
    transform: translateY(-5px); /* Movimiento hacia arriba en hover */
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.3); /* Sombra más fuerte en hover */
}

.card-biblioteca::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background-color: transparent;
    transition: background-color 0.3s ease;
}

.card-biblioteca:hover::before {
    background-color: red; /* Aparece el borde rojo superior en hover */
}

.card-biblioteca .icon-container {
    font-size: 60px; /* Icono ligeramente más pequeño en las otras tarjetas */
    color: #66B2FF; /* Azul claro */
    background-color: #004080;
    padding: 20px;
    border-radius: 50%;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sombra suave */
    margin-bottom: 20px;
}

.card-biblioteca .title {
    font-size: 1.5rem; /* Tamaño de título 1.5 rem para las demás tarjetas */
    margin-bottom: 20px;
    color: #ffffff;
    font-family: 'Playfair Display', serif; /* Tipografía elegida */
}

.card-biblioteca .text {
    font-size: 1rem; /* Texto más pequeño para otras secciones */
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9); /* Texto ligeramente transparente */
    font-family: 'Playfair Display', serif; /* Tipografía elegida */
    padding: 20px;
    border: 2px solid rgba(255, 255, 255, 0.2); /* Borde suave */
    border-radius: 10px;
    background-color: rgba(255, 255, 255, 0.1); /* Fondo semitransparente */
    border: 3px solid red; /* Borde rojo */
}

.card-biblioteca .card-button {
    margin-top: 20px;
    padding: 10px 20px;
    font-size: 1rem;
    color: #004080;
    background-color: #66B2FF;
    border-radius: 5px;
    border: none;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

.card-biblioteca .card-button:hover {
    background-color: red; /* Cambia a rojo en hover */
    color: #ffffff; /* Texto blanco en hover */
}

/* Estilos para distribuir 3-4 tarjetas por fila en las bibliotecas */
.card-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
    gap: 20px;
}

.card-container .card-biblioteca {
    flex: 1 1 calc(25% - 20px);
    max-width: calc(25% - 20px); /* Ajustar para 3 o 4 tarjetas por fila */
    margin-bottom: 20px;
}

@media (max-width: 1200px) {
    .card-container .card-biblioteca {
        flex: 1 1 calc(33.33% - 20px);
        max-width: calc(33.33% - 20px); /* 3 tarjetas por fila en pantallas medianas */
    }
}

@media (max-width: 768px) {
    .card-container .card-biblioteca {
        flex: 1 1 calc(50% - 20px);
        max-width: calc(50% - 20px); /* 2 tarjetas por fila en pantallas pequeñas */
    }
}

@media (max-width: 480px) {
    .card-container .card-biblioteca {
        flex: 1 1 100%;
        max-width: 100%; /* 1 tarjeta por fila en pantallas muy pequeñas */
    }
}

.chat-box {
    position: fixed;
    bottom: 5px;
    right: 20px;
    width: 300px;
    background-color: #fff;
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    transition: all 0.3s ease;
    z-index: 1000;
}

.chat-header {
    background-color: var(--primary-color);
    color: #fff;
    padding: 10px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.chat-header h3 {
    margin: 0;
    font-size: 16px;
}

.chat-toggle {
    background: none;
    border: none;
    color: #fff;
    font-size: 16px;
    cursor: pointer;
}

.chat-body {
    height: 300px;
    overflow-y: auto;
    padding: 10px;
}

.chat-message {
    margin-bottom: 10px;
    padding: 8px;
    border-radius: 5px;
    max-width: 80%;
}

.user-message {
    background-color: #e6f2ff;
    margin-left: auto;
}

.bot-message {
    background-color: #f0f0f0;
}

.chat-input {
    display: flex;
    padding: 10px;
    border-top: 1px solid #e0e0e0;
}

.chat-input input {
    flex-grow: 1;
    padding: 5px;
    border: 1px solid #ccc;
    border-radius: 3px;
    margin-right: 5px;
}

.chat-input button {
    background-color: var(--primary-color);
    color: #fff;
    border: none;
    padding: 5px 10px;
    border-radius: 3px;
    cursor: pointer;
}

.chat-input button:hover {
    background-color: var(--accent-color);
}

.chat-box.minimized {
    height: 45px;
}

.chat-box.minimized .chat-body,
.chat-box.minimized .chat-input {
    display: none;
}

@media (max-width: 768px) {
    .chat-box {
        width: 90%;
        right: 5%;
        left: 5%;
    }
}

.menu-button {
    background-color: var(--primary-color);
    color: white;
    border: none;
    padding: 5px 10px;
    margin: 5px;
    border-radius: 3px;
    cursor: pointer;
}

.menu-button:hover {
    background-color: var(--accent-color);
}

.submenu {
    margin-left: 20px;
}

/* ── Hero responsive: cuadros de estadísticas en móvil ───── */
@media (max-width: 768px) {
    /* El hero crece para acomodar todo el contenido */
    [data-particles] {
        height: auto !important;
        min-height: calc(100vh - 100px) !important;
        padding-bottom: 36px !important;
        align-items: flex-start !important;
        padding-top: 36px !important;
    }

    /* Título del hero más pequeño */
    [data-typewriter] {
        font-size: 28px !important;
        margin-bottom: 12px !important;
    }

    /* Subtítulo del hero más pequeño */
    [data-typewriter-sub] {
        font-size: 15px !important;
        margin-bottom: 14px !important;
    }

    /* Ícono del hero */
    [data-particles] i[class^="fas"],
    [data-particles] i[class^="fab"] {
        font-size: 40px !important;
        margin-bottom: 12px !important;
    }

    /* Contenedor de cuadros de estadísticas */
    .hero-stats {
        gap: 0.5rem !important;
        margin-top: 1.2rem !important;
    }

    /* Cada cuadro de estadística */
    .hero-stats > div {
        padding: 10px 14px !important;
        min-width: 72px !important;
        border-radius: 12px !important;
    }

    /* Número dentro del cuadro */
    [data-count] {
        font-size: 1.6rem !important;
    }
}

/* ── Justificación de texto en contenido ────────────────────── */
blockquote { text-align: justify; }
.article-body p { text-align: justify; }
.revista-desc { text-align: justify; }


/* ── Hero de páginas internas (clase reutilizable) ── */
.page-hero {
    height: calc(100vh - 100px);
    background: linear-gradient(135deg, #001a42 0%, #003270 100%);
    background-size: cover;
    background-position: center center;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    position: relative;
}

/* ── Estadísticas sobre hero ── */
.hero-stats > div {
    background: rgba(0,0,0,0.38);
    border-color: rgba(255,255,255,0.25);
    box-shadow: 0 4px 24px rgba(0,0,0,0.25), inset 0 1px 0 rgba(255,255,255,0.12);
}

/* ── Tipografía en heroes ── */
[data-particles] [data-typewriter] {
    color: #fff;
    text-shadow:
        0 1px 2px rgba(0,0,0,0.9),
        0 3px 8px rgba(0,0,0,0.65),
        0 8px 24px rgba(0,0,0,0.45),
        0 16px 48px rgba(0,0,0,0.25);
}
[data-particles] [data-typewriter-sub] {
    color: #fff;
    text-shadow:
        0 1px 2px rgba(0,0,0,0.85),
        0 2px 8px rgba(0,0,0,0.5),
        0 6px 20px rgba(0,0,0,0.3);
}
[data-particles] .quick-access-bar a,
[data-particles] .quick-access-bar a i { color: #fff; opacity: 1; }

/* ── Card placeholder (imagen no disponible) ── */
.card-placeholder {
    width: 100%; height: 100%;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #001a42 0%, #003270 100%);
}
.card-placeholder-icon { font-size: 52px; color: rgba(255,255,255,0.18); }
.card-placeholder--noticia    { background: linear-gradient(135deg, #001a42, #003270); }
.card-placeholder--evento     { background: linear-gradient(135deg, #1e1b4b, #312e81); }
.card-placeholder--curso      { background: linear-gradient(135deg, #7c1d13, #991b1b); }
.card-placeholder--proyecto   { background: linear-gradient(135deg, #14532d, #166534); }
.card-placeholder--doctorado  { background: linear-gradient(135deg, #312e81, #4338ca); }
.card-placeholder--maestria   { background: linear-gradient(135deg, #1e3a5f, #1d4ed8); }
.card-placeholder--especialidad { background: linear-gradient(135deg, #064e3b, #065f46); }
.card-placeholder--diplomado  { background: linear-gradient(135deg, #713f12, #92400e); }
.card-placeholder--revista    { background: linear-gradient(135deg, #1e1b4b, #4c1d95); }
.card-placeholder--docente    { background: linear-gradient(135deg, #0c4a6e, #0369a1); }
.card-placeholder--defensa    { background: linear-gradient(135deg, #1c1917, #292524); }
.card-placeholder--galeria    { background: linear-gradient(135deg, #134e4a, #0f766e); }
.card-placeholder--programa      { background: linear-gradient(135deg, #001a42, #003270); }
.card-placeholder--evento-past  { background: linear-gradient(135deg, #374151, #4b5563); filter: grayscale(30%); }

/* ── Eventos — cards ── */
.eventos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 24px; }
.evento-card {
    display: flex; flex-direction: column; background: #fff; border-radius: 16px;
    overflow: hidden; border: 2px solid #f1f5f9; box-shadow: 0 4px 18px rgba(0,0,0,0.07);
    transition: transform .3s, box-shadow .3s, border-color .3s;
    text-decoration: none; color: inherit;
}
.evento-card:hover { transform: translateY(-6px); box-shadow: 0 18px 44px rgba(0,64,128,0.15); border-color: var(--primary-color); }
.evento-card-past { opacity: 0.80; }
.evento-card-past:hover { border-color: #94a3b8; box-shadow: 0 12px 32px rgba(0,0,0,0.10); }
.evento-img { width: 100%; height: 190px; object-fit: cover; display: block; transition: transform .4s; }
.evento-card:hover .evento-img { transform: scale(1.04); }
.evento-card-past .evento-img  { filter: grayscale(35%); }
@media (max-width: 860px) { .eventos-grid { grid-template-columns: 1fr 1fr; gap: 16px; } }
@media (max-width: 560px) { .eventos-grid { grid-template-columns: 1fr; } }
/* ── Paginación ── */
.pagination-nav {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    margin-top: 52px;
}
.pagination-info {
    font-size: 14px;
    color: #6b7280;
    margin: 0;
}
.pagination-info strong { color: var(--primary-color); }
.pagination-controls {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: center;
}
.pagination-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 18px;
    border-radius: 9px;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    background: #fff;
    color: var(--primary-color);
    border: 2px solid var(--primary-color);
    transition: background .18s, color .18s;
}
.pagination-btn:hover {
    background: var(--primary-color);
    color: #fff;
}
.pagination-btn--disabled {
    border-color: #d1d5db;
    color: #9ca3af;
    cursor: not-allowed;
    background: #f9fafb;
}
.pagination-btn--disabled:hover {
    background: #f9fafb;
    color: #9ca3af;
}
.pagination-pages {
    display: flex;
    align-items: center;
    gap: 4px;
}
.pagination-page {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    color: var(--primary-color);
    background: #fff;
    border: 2px solid #e5e7eb;
    transition: background .18s, color .18s, border-color .18s;
}
.pagination-page:hover {
    background: var(--primary-color);
    color: #fff;
    border-color: var(--primary-color);
}
.pagination-page--active {
    background: var(--primary-color);
    color: #fff;
    border-color: var(--primary-color);
    cursor: default;
}
.pagination-dots {
    padding: 0 4px;
    color: #9ca3af;
    font-size: 14px;
}

/* ── AJAX grid — overlay de carga ── */
.ajax-results { position: relative; }
.ajax-overlay {
    position: absolute; inset: 0; z-index: 20;
    display: none; align-items: center; justify-content: center;
    background: rgba(255,255,255,0.75); border-radius: 12px;
    pointer-events: none;
}
.ajax-overlay.active { display: flex; pointer-events: all; }
.ajax-overlay::after {
    content: '';
    width: 48px; height: 48px;
    border: 4px solid #e5e7eb;
    border-top-color: var(--primary-color);
    border-radius: 50%;
    animation: ajax-spin .7s linear infinite;
}
@keyframes ajax-spin { to { transform: rotate(360deg); } }

/* ── Estado vacío (genérico) ── */
.empty-state { text-align: center; padding: 80px 20px; color: #9ca3af; }
.empty-state-icon { font-size: 56px; margin-bottom: 20px; display: block; color: #d1d5db; }
.empty-state-text { font-size: 16px; margin: 0; }

/* ── Filtros de contenido ── */
.filtros-box {
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    padding: 22px 28px;
    margin-bottom: 36px;
    border-top: 4px solid var(--primary-color);
}
.filtros-inner { display: flex; flex-direction: column; gap: 16px; }
.filtros-row   { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.filtros-row--sep { padding-top: 14px; border-top: 1px solid #f1f5f9; }
.filtros-label {
    font-size: 12px; font-weight: 700; color: #9ca3af;
    text-transform: uppercase; letter-spacing: .5px;
    white-space: nowrap; min-width: 80px;
}
.filtros-grupo { display: flex; gap: 8px; flex-wrap: wrap; }
.filtros-grupo--centered { justify-content: center; margin-bottom: 36px; }

/* ── Botones de filtro — modalidad ── */
.filter-btn {
    padding: 7px 18px; border-radius: 25px; font-size: 13px; font-weight: 700;
    text-decoration: none; display: inline-flex; align-items: center; gap: 6px;
    transition: all .2s; background: #fff;
    color: var(--primary-color); border: 2px solid var(--primary-color);
}
.filter-btn.active { background: var(--primary-color); color: #fff; }
.filter-btn--virtual { color: #1d4ed8; border-color: #1d4ed8; }
.filter-btn--virtual.active { background: #1d4ed8; color: #fff; border-color: #1d4ed8; }
.filter-btn--presencial { color: #166534; border-color: #166534; }
.filter-btn--presencial.active { background: #166534; color: #fff; border-color: #166534; }
.filter-btn--semipresencial { color: #c2410c; border-color: #c2410c; }
.filter-btn--semipresencial.active { background: #c2410c; color: #fff; border-color: #c2410c; }

/* ── Botones de filtro — estado ── */
.estado-btn {
    padding: 6px 16px; border-radius: 20px; font-size: 12px; font-weight: 600;
    text-decoration: none; transition: all .2s; display: inline-flex; align-items: center;
    gap: 5px; background: #fff; color: #6b7280; border: 2px solid #6b7280;
}
.estado-btn.active { background: #6b7280; color: #fff; border-color: #6b7280; }
.estado-btn--proximo { color: #1d4ed8; border-color: #1d4ed8; }
.estado-btn--proximo.active { background: #1d4ed8; color: #fff; border-color: #1d4ed8; }
.estado-btn--en-curso { color: #166534; border-color: #166534; }
.estado-btn--en-curso.active { background: #166534; color: #fff; border-color: #166534; }

/* ── Cursos — grid ── */
#grid-cursos { display: grid; grid-template-columns: repeat(3,1fr); gap: 24px; }
@media (max-width:1024px) { #grid-cursos { grid-template-columns: repeat(2,1fr); } }
@media (max-width:600px)  { #grid-cursos { grid-template-columns: 1fr; } }

/* ── Cursos — tarjeta ── */
.curso-card {
    text-decoration: none; display: flex; flex-direction: column;
    background: #fff; border-radius: 20px; overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08); transition: transform .3s, box-shadow .3s;
}
.curso-card:hover { transform: translateY(-8px); box-shadow: 0 20px 48px rgba(0,64,128,0.16); }
.curso-card-img { height: 200px; position: relative; overflow: hidden; flex-shrink: 0; }
.curso-card:hover .curso-card-img .img-cover { transform: scale(1.05); }

.status-badge {
    position: absolute; top: 12px; right: 12px;
    font-size: 10px; font-weight: 700; padding: 3px 10px; border-radius: 20px;
    display: flex; align-items: center; gap: 4px;
}
.status-badge--proximo    { background: #eff6ff; color: #1e40af; }
.status-badge--en-curso   { background: #f0fdf4; color: #166534; }
.status-badge--finalizado { background: #f3f4f6; color: #6b7280; }
.status-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.status-dot--proximo    { background: #3b82f6; }
.status-dot--en-curso   { background: #22c55e; }
.status-dot--finalizado { background: #9ca3af; }

.modality-badge {
    position: absolute; bottom: 12px; left: 12px;
    font-size: 10px; font-weight: 700; padding: 3px 10px; border-radius: 20px;
    text-transform: uppercase; letter-spacing: .4px;
}
.modality-badge--virtual       { background: #dbeafe; color: #1d4ed8; }
.modality-badge--presencial    { background: #dcfce7; color: #166534; }
.modality-badge--semipresencial { background: #ffedd5; color: #c2410c; }
.modality-badge--otro          { background: #f1f5f9; color: #475569; }

.curso-card-body  { flex: 1; display: flex; flex-direction: column; padding: 20px 20px 22px; }
.curso-card-title { font-size: 15px; font-weight: 800; color: var(--primary-color); line-height: 1.4; margin: 0 0 12px; flex: 1; }

.info-rows { display: flex; flex-direction: column; gap: 7px; margin-bottom: 14px; }
.info-row  { display: flex; align-items: center; gap: 8px; }
.info-icon {
    width: 28px; height: 28px; border-radius: 7px;
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.info-icon i { font-size: 11px; }
.info-icon--price      { background: #fef9c3; }
.info-icon--price i    { color: #854d0e; }
.info-icon--duration   { background: #eff6ff; }
.info-icon--duration i { color: #1e40af; }
.info-icon--instructor   { background: #f0fdf4; }
.info-icon--instructor i { color: #166534; }
.info-icon--date   { background: #fdf4ff; }
.info-icon--date i { color: #7c3aed; }
.info-icon--vacantes   { background: #fff1f2; }
.info-icon--vacantes i { color: #b91c1c; }
.info-text          { font-size: 13px; color: #374151; }
.info-text--vacantes { font-size: 13px; color: #b91c1c; font-weight: 700; }

.curso-card-cta {
    display: inline-flex; align-items: center; gap: 6px; margin-top: auto;
    color: var(--primary-color); font-size: 13px; font-weight: 700;
    border-top: 1px solid #f1f5f9; padding-top: 12px;
}

/* ── Programas — tarjeta ── */
.program-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.prog-card {
    display: flex; flex-direction: column; text-decoration: none;
    color: #1f2937; background: #fff; border-radius: 20px; overflow: hidden;
    border: 2px solid #f1f5f9; box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    transition: transform .35s cubic-bezier(.22,.61,.36,1), box-shadow .35s, border-color .35s;
}
.prog-card:hover { transform: translateY(-10px); box-shadow: 0 24px 56px rgba(0,64,128,0.18); border-color: var(--primary-color); }
.prog-card-img-wrap { height: 220px; position: relative; overflow: hidden; flex-shrink: 0; }
.prog-card-img { width: 100%; height: 220px; object-fit: cover; display: block; transition: transform .5s cubic-bezier(.22,.61,.36,1); }
.prog-card:hover .prog-card-img { transform: scale(1.07); }
.prog-card-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,26,66,0.55) 0%, transparent 55%);
    opacity: 0; transition: opacity .35s;
}
.prog-card:hover .prog-card-overlay { opacity: 1; }
.prog-card-badge {
    position: absolute; bottom: 10px; left: 10px;
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 10px; font-weight: 700; padding: 4px 10px; border-radius: 20px;
    text-transform: uppercase; letter-spacing: .4px; backdrop-filter: blur(4px);
}
.prog-card-badge-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.prog-badge-dot--virtual        { background: #1d4ed8; }
.prog-badge-dot--presencial     { background: #166534; }
.prog-badge-dot--semipresencial { background: #c2410c; }
.prog-badge-dot--otro           { background: #6b21a8; }
.badge-virtual        { background: rgba(219,234,254,0.90); color: #1d4ed8; }
.badge-presencial     { background: rgba(220,252,231,0.90); color: #166534; }
.badge-semipresencial { background: rgba(255,237,213,0.90); color: #c2410c; }
.prog-card-body  { flex: 1; display: flex; flex-direction: column; padding: 18px 20px 20px; background: #fff; color: #374151; }
.prog-card-title { font-size: 15px; font-weight: 700; color: var(--primary-color); margin: 0 0 12px; line-height: 1.4; flex: 1; font-family: 'Playfair Display', serif; }
.prog-card-meta  { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; font-size: 12px; color: #6b7280; }
.prog-card-meta span { display: flex; align-items: center; gap: 6px; }
.prog-card-meta strong { color: #374151; }
.prog-card-icon { width: 20px; height: 20px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 9px; }
.prog-card-icon--clock   { background: #eff6ff; }
.prog-card-icon--clock i { color: #3b82f6; }
.prog-card-icon--grad    { background: #f0fdf4; }
.prog-card-icon--grad i  { color: #16a34a; }
.prog-card-icon--cal     { background: #fff7ed; }
.prog-card-icon--cal i   { color: #ea580c; }
.prog-card-cta { display: inline-flex; align-items: center; gap: 5px; margin-top: auto; color: var(--primary-color); font-size: 13px; font-weight: 700; transition: gap .2s; }
.prog-card:hover .prog-card-cta { gap: 8px; }

/* ── Section heading subtitle ── */
.section-heading p { font-size: 15px; color: #6b7280; margin: 6px 0 0; }
/* ══════════════════════════════════════════════════════════
   Biblioteca Virtual — Sección por categoría
   ══════════════════════════════════════════════════════════ */

/* ── Hero ── */
.bib-hero { background: linear-gradient(135deg,#001a42 0%,#003270 60%,#004080 100%); color: #fff; padding: 44px 0 40px; position: relative; overflow: hidden; }
.bib-hero::before { content:''; position:absolute; inset:0; opacity:.04; background:repeating-linear-gradient(45deg,#fff 0,#fff 1px,transparent 0,transparent 50%) 0/20px 20px; pointer-events:none; }
.bib-hero-inner { max-width:1200px; margin:0 auto; padding:0 24px; position:relative; z-index:2; }
.bib-hero-breadcrumb { font-size:13px; margin-bottom:18px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.bib-hero-breadcrumb-link { color:rgba(255,255,255,0.70); text-decoration:none; transition:color .2s; }
.bib-hero-breadcrumb-link:hover { color:#fff; }
.bib-hero-breadcrumb-sep { font-size:9px; opacity:0.45; }
.bib-hero-breadcrumb-current { color:rgba(255,255,255,0.95); }
.bib-hero-content { display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.bib-hero-icon { width:60px; height:60px; border-radius:16px; display:flex; align-items:center; justify-content:center; flex-shrink:0; box-shadow:0 4px 16px rgba(0,0,0,0.2); }
.bib-hero-icon i { font-size:26px; }
.bib-hero-icon--libros      { background:#dbeafe; } .bib-hero-icon--libros i      { color:#1d4ed8; }
.bib-hero-icon--tesis       { background:#f3e8ff; } .bib-hero-icon--tesis i       { color:#6b21a8; }
.bib-hero-icon--revistas    { background:#dcfce7; } .bib-hero-icon--revistas i    { color:#166534; }
.bib-hero-icon--bases_datos { background:#ffedd5; } .bib-hero-icon--bases_datos i { color:#c2410c; }
.bib-hero-icon--general     { background:#f3f4f6; } .bib-hero-icon--general i     { color:#374151; }
.bib-hero-badge { display:inline-flex; align-items:center; gap:6px; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.22); border-radius:20px; padding:3px 12px; font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; margin-bottom:8px; backdrop-filter:blur(6px); }
.bib-hero-badge-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.bib-hero-badge-dot--libros      { background:#3b82f6; }
.bib-hero-badge-dot--tesis       { background:#9333ea; }
.bib-hero-badge-dot--revistas    { background:#22c55e; }
.bib-hero-badge-dot--bases_datos { background:#f97316; }
.bib-hero-badge-dot--general     { background:#6b7280; }
.bib-hero-title { font-family:'Playfair Display',serif; font-size:32px; font-weight:800; margin:0 0 6px; line-height:1.2; text-shadow:0 2px 12px rgba(0,0,0,0.3); }
.bib-hero-count { margin:0; font-size:14px; opacity:0.75; }

/* ── Sub-nav categorías ── */
.bib-subnav { background:#fff; border-bottom:1px solid #e2e8f0; position:sticky; top:100px; z-index:10; box-shadow:0 2px 12px rgba(0,0,0,0.06); }
.bib-subnav-inner { max-width:1200px; margin:0 auto; padding:0 20px; display:flex; gap:0; overflow-x:auto; scrollbar-width:none; }
.bib-subnav-inner::-webkit-scrollbar { display:none; }
.bib-subnav-link { display:inline-flex; align-items:center; gap:7px; padding:13px 18px; font-size:13px; font-weight:700; white-space:nowrap; text-decoration:none; border-bottom:3px solid transparent; color:#6b7280; transition:all .2s; }
.bib-subnav-link i { font-size:12px; }
.bib-subnav-link--libros:hover,      .bib-subnav-link--libros.bib-subnav-link--active      { border-bottom-color:#1d4ed8; color:#1d4ed8; }
.bib-subnav-link--tesis:hover,       .bib-subnav-link--tesis.bib-subnav-link--active       { border-bottom-color:#6b21a8; color:#6b21a8; }
.bib-subnav-link--revistas:hover,    .bib-subnav-link--revistas.bib-subnav-link--active    { border-bottom-color:#166534; color:#166534; }
.bib-subnav-link--bases_datos:hover, .bib-subnav-link--bases_datos.bib-subnav-link--active { border-bottom-color:#c2410c; color:#c2410c; }
.bib-subnav-link--general:hover,     .bib-subnav-link--general.bib-subnav-link--active     { border-bottom-color:#374151; color:#374151; }

/* ── Sección principal ── */
.bib-section { background:#f0f4f8; padding:40px 20px 72px; min-height:60vh; }
.bib-seccion-grid { display:grid; grid-template-columns:250px 1fr; gap:28px; align-items:start; }
@media (max-width:860px) { .bib-seccion-grid { grid-template-columns:1fr; } }

/* ── Paneles sidebar ── */
.bib-panel { background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 4px 16px rgba(0,0,0,0.08); margin-bottom:16px; }
.bib-areas-panel { margin-top:16px; }
.bib-panel-header { background:linear-gradient(135deg,#001a42,#003270); padding:12px 16px; display:flex; align-items:center; gap:8px; }
.bib-panel-header i { color:var(--accent-color); font-size:12px; }
.bib-panel-header span { color:#fff; font-weight:700; font-size:13px; }
.bib-panel-body { padding:14px 16px; }
.bib-panel-body--year { display:flex; flex-direction:column; gap:10px; }
.bib-input { width:100%; padding:9px 12px; border:2px solid #e2e8f0; border-radius:8px; font-size:13px; outline:none; box-sizing:border-box; transition:border-color .2s; color:#374151; background:#fff; }
.bib-input:focus { border-color:var(--primary-color); }
.bib-input--select { appearance:auto; }
.bib-year-range { display:flex; gap:8px; align-items:center; }
.bib-year-range .bib-input { width:50%; }
.bib-year-sep { color:#9ca3af; font-size:12px; flex-shrink:0; }
.bib-checkbox-label { display:flex; align-items:center; gap:10px; cursor:pointer; font-size:13px; font-weight:600; color:#374151; }
.bib-checkbox-label input[type="checkbox"] { width:16px; height:16px; accent-color:#dc2626; cursor:pointer; flex-shrink:0; }
.bib-checkbox-icon { color:#dc2626; font-size:14px; }
.bib-btn-submit { width:100%; padding:11px; background:linear-gradient(135deg,var(--primary-color),#0369a1); color:#fff; border:none; border-radius:10px; font-size:13px; font-weight:700; cursor:pointer; margin-bottom:8px; box-shadow:0 4px 12px rgba(0,64,128,0.25); transition:opacity .2s; }
.bib-btn-submit:hover { opacity:.88; }
.bib-btn-clear { display:block; text-align:center; padding:10px; border:2px solid #e2e8f0; border-radius:10px; font-size:13px; font-weight:700; color:#6b7280; text-decoration:none; transition:all .2s; }
.bib-btn-clear:hover { border-color:#9ca3af; color:#374151; }

/* ── Áreas temáticas ── */
.bib-areas-list { padding:12px 14px; display:flex; flex-direction:column; gap:3px; }
.bib-area-link { display:flex; align-items:center; gap:8px; padding:7px 12px; border-radius:8px; font-size:13px; font-weight:500; text-decoration:none; color:#4b5563; transition:background .2s; }
.bib-area-link:hover { background:#f1f5f9; }
.bib-area-link--all { font-weight:700; background:linear-gradient(135deg,var(--primary-color),#0369a1); color:#fff; }
.bib-area-link--all:hover { opacity:.9; color:#fff; }
.bib-area-link--active { font-weight:700; color:var(--area-color,#374151); background:rgba(0,0,0,0.05); }
.bib-area-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; background:var(--area-color,#6b7280); }
.bib-back-link { margin-top:16px; text-align:center; }
.bib-back-link a { font-size:13px; color:var(--primary-color); text-decoration:none; font-weight:700; display:inline-flex; align-items:center; gap:5px; transition:opacity .2s; }
.bib-back-link a:hover { opacity:.75; }

/* ── Filter chips ── */
.bib-filter-chips { background:#fff; border-radius:12px; padding:12px 16px; margin-bottom:20px; box-shadow:0 2px 10px rgba(0,0,0,0.06); display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; border-left:4px solid var(--primary-color); }
.bib-chips-list { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.bib-chips-icon { color:var(--primary-color); font-size:12px; }
.bib-chip { padding:3px 10px; border-radius:12px; font-weight:700; font-size:12px; display:inline-flex; align-items:center; gap:4px; }
.bib-chip i { font-size:9px; }
.bib-chip--search { background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; }
.bib-chip--author { background:#fef9c3; color:#854d0e; border:1px solid #fde047; }
.bib-chip--year   { background:#f0fdf4; color:#166534; border:1px solid #86efac; }
.bib-chip--pdf    { background:#fff5f5; color:#dc2626; border:1px solid #fecaca; }
.bib-chip--area   { background:#faf5ff; color:#6b21a8; border:1px solid #d8b4fe; }
.bib-chips-count { color:#9ca3af; font-size:12px; margin-left:4px; }
.bib-chips-clear { color:#ef4444; font-size:12px; font-weight:700; text-decoration:none; display:flex; align-items:center; gap:4px; transition:opacity .2s; }
.bib-chips-clear:hover { opacity:.75; }

/* ── Grilla de recursos ── */
.bib-resource-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:20px; margin-bottom:36px; }

/* ── Tarjeta de recurso ── */
.bib-resource-card { text-decoration:none; display:flex; flex-direction:column; background:#fff; border-radius:16px; overflow:hidden; border:2px solid #f1f5f9; transition:transform .3s,box-shadow .3s,border-color .3s; }
.bib-resource-card:hover { transform:translateY(-6px); box-shadow:0 16px 40px rgba(0,64,128,0.14); }
.bib-resource-card--libros:hover      { border-color:#1d4ed8; }
.bib-resource-card--tesis:hover       { border-color:#6b21a8; }
.bib-resource-card--revistas:hover    { border-color:#166534; }
.bib-resource-card--bases_datos:hover { border-color:#c2410c; }
.bib-resource-card--general:hover     { border-color:#374151; }
.bib-resource-card-img { height:160px; display:flex; align-items:center; justify-content:center; overflow:hidden; position:relative; flex-shrink:0; }
.bib-resource-card-img .img-cover { width:100%; height:100%; object-fit:contain; padding:8px; box-sizing:border-box; transition:transform .4s; }
.bib-resource-card:hover .bib-resource-card-img .img-cover { transform:scale(1.05); }
.bib-resource-card-img-icon { font-size:48px; opacity:0.25; }
.bib-resource-card-img--libros      { background:#dbeafe; } .bib-resource-card-img--libros      .bib-resource-card-img-icon { color:#1d4ed8; }
.bib-resource-card-img--tesis       { background:#f3e8ff; } .bib-resource-card-img--tesis       .bib-resource-card-img-icon { color:#6b21a8; }
.bib-resource-card-img--revistas    { background:#dcfce7; } .bib-resource-card-img--revistas    .bib-resource-card-img-icon { color:#166534; }
.bib-resource-card-img--bases_datos { background:#ffedd5; } .bib-resource-card-img--bases_datos .bib-resource-card-img-icon { color:#c2410c; }
.bib-resource-card-img--general     { background:#f3f4f6; } .bib-resource-card-img--general     .bib-resource-card-img-icon { color:#374151; }
.bib-pdf-badge { position:absolute; top:8px; right:8px; background:#dc2626; color:#fff; font-size:10px; font-weight:700; padding:2px 8px; border-radius:6px; }
.bib-resource-card-body { padding:14px 16px 16px; flex:1; display:flex; flex-direction:column; }
.bib-resource-area-tag { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; margin-bottom:5px; display:flex; align-items:center; gap:4px; color:var(--area-color,#374151); }
.bib-resource-area-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; background:var(--area-color,#374151); }
.bib-resource-card-title { font-size:13px; font-weight:700; color:var(--primary-color); margin:0 0 6px; line-height:1.45; flex:1; }
.bib-resource-card-author { font-size:11px; color:#6b7280; margin:0 0 6px; display:flex; align-items:center; gap:4px; }
.bib-resource-card-author i { font-size:9px; color:#9ca3af; }
.bib-resource-card-footer { display:flex; align-items:center; justify-content:space-between; margin-top:auto; padding-top:8px; border-top:1px solid #f1f5f9; }
.bib-resource-card-year { font-size:11px; color:#9ca3af; font-weight:600; }
.bib-resource-card-cta { display:flex; align-items:center; gap:4px; font-size:11px; font-weight:700; margin-left:auto; }
.bib-resource-card-cta i { font-size:9px; }
.bib-resource-card--libros      .bib-resource-card-cta { color:#1d4ed8; }
.bib-resource-card--tesis       .bib-resource-card-cta { color:#6b21a8; }
.bib-resource-card--revistas    .bib-resource-card-cta { color:#166534; }
.bib-resource-card--bases_datos .bib-resource-card-cta { color:#c2410c; }
.bib-resource-card--general     .bib-resource-card-cta { color:#374151; }

/* ══════════════════════════════════════════════════════════
   Noticias — grid y tarjetas
   ══════════════════════════════════════════════════════════ */
.noticias-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: 28px;
}
@media (max-width: 860px) { .noticias-grid { grid-template-columns: 1fr 1fr; gap: 18px; } }
@media (max-width: 560px) { .noticias-grid { grid-template-columns: 1fr; } }

.noticia-card {
    display: flex; flex-direction: column;
    background: #fff; border-radius: 20px; overflow: hidden;
    border: 2px solid #f1f5f9; box-shadow: 0 4px 20px rgba(0,0,0,0.07);
    transition: transform .3s, box-shadow .3s, border-color .3s;
    text-decoration: none; color: inherit;
}
.noticia-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 20px 48px rgba(0,64,128,0.16);
    border-color: var(--primary-color);
}
.noticia-card-img-wrap { height: 210px; overflow: hidden; flex-shrink: 0; position: relative; }
.noticia-img { width: 100%; height: 210px; object-fit: cover; display: block; transition: transform .4s; flex-shrink: 0; }
.noticia-card:hover .noticia-img { transform: scale(1.04); }

.noticia-cat-badge {
    position: absolute; bottom: 10px; left: 10px;
    background: rgba(0,26,66,0.80); color: #fff;
    border-radius: 20px; padding: 3px 11px; font-size: 10px; font-weight: 700;
    text-transform: uppercase; letter-spacing: .4px; backdrop-filter: blur(4px);
}
.noticia-views-badge {
    position: absolute; top: 10px; right: 10px;
    background: rgba(0,0,0,0.55); color: #fff; font-size: 10px; font-weight: 700;
    padding: 3px 8px; border-radius: 10px; backdrop-filter: blur(4px);
    display: flex; align-items: center; gap: 3px;
}
.noticia-views-badge i { font-size: 8px; }

.noticia-card-body { flex: 1; display: flex; flex-direction: column; padding: 18px 20px 20px; }

.noticia-date-row { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.noticia-date-icon {
    width: 20px; height: 20px; border-radius: 5px; background: #eff6ff;
    display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.noticia-date-icon i { font-size: 9px; color: #3b82f6; }
.noticia-date { font-size: 12px; color: #6b7280; font-weight: 500; }

.noticia-card-title {
    font-size: 16px; font-weight: 700; color: var(--primary-color);
    margin: 0 0 10px; line-height: 1.45;
    font-family: 'Playfair Display', serif; flex: 1;
}
.noticia-card-excerpt { font-size: 13px; color: #6b7280; line-height: 1.65; margin: 0 0 16px; }
.noticia-card-cta {
    display: inline-flex; align-items: center; gap: 5px; margin-top: auto;
    color: var(--primary-color); font-size: 13px; font-weight: 700;
}
.noticia-card-cta i { font-size: 10px; }

/* ══════════════════════════════════════════════════════════
   Eventos — panel contenedor y componentes de tarjeta
   ══════════════════════════════════════════════════════════ */
.eventos-panel {
    background: #fff; border-radius: 20px; overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08); margin-bottom: 40px;
}
.eventos-panel-header {
    padding: 20px 28px; display: flex; align-items: center; gap: 14px;
}
.eventos-panel-header--proximos {
    background: linear-gradient(135deg, var(--primary-color), #0369a1);
}
.eventos-panel-header--pasados {
    background: linear-gradient(135deg, #374151, #6b7280);
}
.eventos-panel-header-icon {
    width: 40px; height: 40px; border-radius: 10px;
    background: rgba(255,255,255,0.15);
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.eventos-panel-header-icon i { font-size: 18px; color: #fff; }
.eventos-panel-title { font-size: 20px; font-weight: 700; color: #fff; margin: 0; font-family: 'Playfair Display', serif; }
.eventos-panel-sub { font-size: 13px; color: rgba(255,255,255,0.70); margin: 2px 0 0; }
.eventos-panel-body { padding: 28px; }

/* ── Card image wrap ── */
.evento-card-img-wrap { height: 190px; overflow: hidden; flex-shrink: 0; position: relative; }

/* ── Countdown badge ── */
.evento-countdown-badge {
    position: absolute; top: 10px; left: 10px;
    color: #fff; font-size: 10px; font-weight: 700;
    padding: 4px 10px; border-radius: 20px; backdrop-filter: blur(4px);
    display: inline-flex; align-items: center; gap: 4px;
}
.evento-countdown-badge i { font-size: 8px; }
.evento-countdown-badge--hoy    { background: #dc2626; }
.evento-countdown-badge--manana { background: #ea580c; }
.evento-countdown-badge--dias   { background: rgba(0,26,66,0.80); }

/* ── Date box (próximos) ── */
.evento-date-box {
    position: absolute; bottom: 0; right: 0;
    background: linear-gradient(135deg, var(--primary-color), #0369a1);
    color: #fff; padding: 8px 12px; border-radius: 12px 0 0 0;
    text-align: center; min-width: 54px;
}
.evento-date-box--past {
    background: linear-gradient(135deg, #374151, #6b7280);
}
.evento-date-day   { font-size: 20px; font-weight: 800; line-height: 1; }
.evento-date-month { font-size: 10px; text-transform: uppercase; opacity: 0.88; }

/* ── Card body ── */
.evento-card-body { flex: 1; display: flex; flex-direction: column; padding: 16px 18px 18px; }
.evento-card-title {
    font-size: 15px; font-weight: 700; color: var(--primary-color);
    margin: 0 0 10px; line-height: 1.45;
    font-family: 'Playfair Display', serif; flex: 1;
}
.evento-card-title--past { color: #374151; }

.evento-meta-rows { display: flex; flex-direction: column; gap: 5px; margin-bottom: 12px; }
.evento-meta-row { font-size: 12px; color: #6b7280; display: flex; align-items: center; gap: 5px; }
.evento-meta-icon {
    width: 18px; height: 18px; border-radius: 4px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
}
.evento-meta-icon i { font-size: 8px; }
.evento-meta-icon--clock     { background: #eff6ff; }
.evento-meta-icon--clock i   { color: #3b82f6; }
.evento-meta-icon--location  { background: #fff7ed; }
.evento-meta-icon--location i { color: #ea580c; }
.evento-meta-icon--organizer  { background: #f0fdf4; }
.evento-meta-icon--organizer i { color: #16a34a; }

.evento-card-desc { font-size: 12px; color: #9ca3af; margin: 4px 0 0; line-height: 1.5; }

.evento-card-cta {
    display: inline-flex; align-items: center; gap: 5px; margin-top: auto;
    color: var(--primary-color); font-size: 12px; font-weight: 700;
}
.evento-card-cta--past { color: #6b7280; }
.evento-card-cta i { font-size: 9px; }

/* ── Realizado badge ── */
.evento-badge { position: absolute; font-size: 10px; font-weight: 700; padding: 3px 10px; border-radius: 20px; backdrop-filter: blur(4px); display: inline-flex; align-items: center; gap: 4px; }
.evento-badge--realizado { top: 10px; left: 10px; background: rgba(55,65,81,0.80); color: #fff; }
.evento-badge--realizado i { font-size: 8px; }

/* ══════════════════════════════════════════════════════════
   Docentes — filtros y grid
   ══════════════════════════════════════════════════════════ */
.docentes-section { background: #f0f4f8; padding: 56px 20px; }

.docentes-filter-panel {
    background: #fff; border-radius: 16px; box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    padding: 24px 28px; margin-bottom: 40px; border-top: 4px solid var(--primary-color);
}
.docentes-filter-form {
    display: flex; gap: 14px; flex-wrap: wrap; align-items: flex-end;
}
.docentes-filter-field { flex: 1; min-width: 160px; }
.docentes-filter-field--wide { flex: 2; min-width: 200px; }
.docentes-filter-label {
    font-size: 12px; font-weight: 700; color: #374151; display: block;
    margin-bottom: 6px; text-transform: uppercase; letter-spacing: .5px;
}
.docentes-filter-label i { margin-right: 4px; }
.docentes-filter-input,
.docentes-filter-select {
    width: 100%; padding: 10px 14px; border: 2px solid #e5e7eb;
    border-radius: 9px; font-size: 14px; background: #f9fafb;
    outline: none; box-sizing: border-box; transition: border-color .2s; color: #374151;
}
.docentes-filter-input:focus,
.docentes-filter-select:focus { border-color: var(--primary-color); }
.docentes-filter-select { cursor: pointer; }
.docentes-filter-actions { display: flex; gap: 8px; align-items: flex-end; }
.docentes-filter-btn {
    padding: 10px 22px; background: var(--primary-color); color: #fff;
    border: none; border-radius: 9px; font-weight: 700; cursor: pointer;
    font-size: 14px; display: flex; align-items: center; gap: 6px; transition: opacity .2s;
}
.docentes-filter-btn:hover { opacity: .85; }
.docentes-filter-clear {
    padding: 10px 14px; background: #fff; color: #6b7280;
    border: 2px solid #e5e7eb; border-radius: 9px; font-weight: 600;
    text-decoration: none; font-size: 14px; display: flex; align-items: center;
    transition: border-color .2s, color .2s;
}
.docentes-filter-clear:hover { border-color: #9ca3af; color: #374151; }

.docentes-count { color: #6b7280; margin-bottom: 24px; font-size: 14px; font-weight: 500; }
.docentes-count a { color: var(--primary-color); font-weight: 600; text-decoration: none; }

.docentes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 24px;
}
@media (max-width: 860px) { .docentes-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .docentes-grid { grid-template-columns: 1fr; } }

.docente-card {
    text-decoration: none; display: flex; flex-direction: column;
    background: #fff; border-radius: 20px; overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    transition: transform .3s, box-shadow .3s;
}
.docente-card:hover { transform: translateY(-8px); box-shadow: 0 16px 40px rgba(0,64,128,0.16); }

.docente-card-header {
    background: linear-gradient(135deg, #001a42, #003270);
    padding: 28px 20px 0; text-align: center; position: relative;
}
.docente-card-header-bar {
    position: absolute; top: 0; left: 0; right: 0; height: 4px;
    background: linear-gradient(90deg, var(--accent-color), #f59e0b);
}
.docente-degree-badge {
    position: absolute; top: 12px; right: 12px;
    border-radius: 20px; padding: 3px 10px; font-size: 11px; font-weight: 700;
    border: 1px solid transparent;
}
.docente-avatar {
    width: 100px; height: 100px; border-radius: 50%; overflow: hidden;
    border: 4px solid rgba(255,255,255,0.25);
    box-shadow: 0 6px 20px rgba(0,0,0,0.25);
    margin: 0 auto 16px; background: #1e3a5f;
}
.docente-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: top; }

.docente-card-body {
    padding: 20px 20px 24px; flex: 1; display: flex; flex-direction: column; text-align: center;
}
.docente-card-name { font-size: 16px; font-weight: 800; color: var(--primary-color); margin: 0 0 6px; line-height: 1.3; }
.docente-card-area {
    font-size: 12px; color: #6b7280; margin: 0 0 4px;
    display: flex; align-items: center; justify-content: center; gap: 5px;
}
.docente-card-area i { font-size: 10px; color: var(--accent-color); }
.docente-card-dept {
    font-size: 12px; color: #9ca3af; margin: 0 0 12px;
    display: flex; align-items: center; justify-content: center; gap: 5px;
}
.docente-card-dept i { font-size: 10px; }
.docente-card-bio {
    font-size: 13px; color: #4b5563; line-height: 1.6; margin: 0 0 16px;
    border-top: 1px solid #f1f5f9; padding-top: 12px;
}
.docente-card-cta {
    display: inline-flex; align-items: center; justify-content: center;
    gap: 6px; margin-top: auto; color: var(--primary-color); font-size: 13px; font-weight: 700;
}
.docente-card-cta i:last-child { font-size: 11px; }

/* ══════════════════════════════════════════════════════════
   Galería — filtros y grid
   ══════════════════════════════════════════════════════════ */
.galeria-filters {
    background: #fff; border-radius: 16px; box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    padding: 18px 24px; margin-bottom: 36px; border-top: 4px solid var(--primary-color);
    display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
}
.galeria-filters-label {
    font-size: 12px; font-weight: 700; color: #9ca3af;
    text-transform: uppercase; letter-spacing: .5px; white-space: nowrap;
}
.galeria-filters-label i { margin-right: 4px; }
.galeria-filters-btns { display: flex; gap: 8px; flex-wrap: wrap; }

.cat-btn {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 16px; border: 2px solid var(--primary-color); border-radius: 20px;
    background: #fff; color: var(--primary-color); font-size: 13px; font-weight: 700;
    cursor: pointer; text-decoration: none; transition: background .2s, color .2s;
}
.cat-btn:hover, .cat-btn.active { background: var(--primary-color); color: #fff; }
.cat-count {
    background: rgba(0,64,128,0.12); border-radius: 10px;
    padding: 1px 7px; font-size: 11px; transition: background .2s;
}
.cat-btn.active .cat-count,
.cat-btn:hover .cat-count { background: rgba(255,255,255,0.25); }

.galeria-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 28px;
}
@media (max-width: 860px) { .galeria-grid { grid-template-columns: 1fr 1fr; gap: 18px; } }
@media (max-width: 560px) { .galeria-grid { grid-template-columns: 1fr; } }

.album-card {
    text-decoration: none; display: flex; flex-direction: column;
    background: #fff; border-radius: 20px; overflow: hidden;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    transition: transform .3s, box-shadow .3s;
    color: inherit;
}
.album-card:hover { transform: translateY(-8px); box-shadow: 0 20px 48px rgba(0,64,128,0.16); }

.album-card-img-wrap { position: relative; height: 220px; overflow: hidden; flex-shrink: 0; }
.album-card-img-wrap .img-cover { transition: transform .4s; }
.album-card:hover .album-card-img-wrap .img-cover { transform: scale(1.05); }
.album-card-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,0.55) 0%, transparent 55%);
}

.album-cat-badge {
    position: absolute; top: 14px; left: 14px;
    border-radius: 20px; padding: 4px 12px; font-size: 11px; font-weight: 700;
    display: flex; align-items: center; gap: 5px; backdrop-filter: blur(4px);
}
.album-cat-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }

.album-photo-count {
    position: absolute; bottom: 12px; right: 12px;
    background: rgba(0,0,0,0.55); color: #fff; border-radius: 12px;
    padding: 5px 11px; font-size: 12px; font-weight: 700;
    display: flex; align-items: center; gap: 5px; backdrop-filter: blur(4px);
}
.album-photo-count i { font-size: 10px; }

.album-card-body { padding: 20px 22px 22px; flex: 1; display: flex; flex-direction: column; }
.album-date {
    font-size: 12px; color: #9ca3af; margin: 0 0 8px;
    display: flex; align-items: center; gap: 5px;
}
.album-date i { color: var(--accent-color); font-size: 10px; }
.album-card-title { font-size: 16px; font-weight: 800; color: var(--primary-color); line-height: 1.4; margin: 0 0 10px; }
.album-card-desc { font-size: 13px; color: #6b7280; line-height: 1.65; flex: 1; margin: 0 0 14px; }
.album-card-cta {
    display: inline-flex; align-items: center; gap: 6px; margin-top: auto;
    color: var(--primary-color); font-size: 13px; font-weight: 700;
}
.album-card-cta i { font-size: 11px; }

/* ── Docente — badge de grado ── */
.docente-degree-badge--doctorado    { background: #fff1f2; color: #b91c1c; border-color: #fca5a5; }
.docente-degree-badge--maestria     { background: #fefce8; color: #854d0e; border-color: #fde047; }
.docente-degree-badge--especialidad { background: #f0fdf4; color: #166534; border-color: #86efac; }
.docente-degree-badge--licenciatura { background: #eff6ff; color: #1e40af; border-color: #93c5fd; }
.docente-degree-badge--default      { background: #f8fafc; color: #475569; border-color: #cbd5e1; }

/* ── Galería — badge de categoría ── */
.album-cat-badge--evento        { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; }
.album-cat-badge--programa      { background: #f0fdf4; color: #166534; border: 1px solid #86efac; }
.album-cat-badge--institucional { background: #fefce8; color: #854d0e; border: 1px solid #fde047; }
.album-cat-badge--general       { background: #faf5ff; color: #6b21a8; border: 1px solid #d8b4fe; }

.album-cat-badge--evento        .album-cat-dot { background: #3b82f6; }
.album-cat-badge--programa      .album-cat-dot { background: #22c55e; }
.album-cat-badge--institucional .album-cat-dot { background: #f59e0b; }
.album-cat-badge--general       .album-cat-dot { background: #8b5cf6; }

/* ══════════════════════════════════════════════════════════
   Revista Poscientia — grid y tarjetas
   ══════════════════════════════════════════════════════════ */
.revista-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 40px; }
@media (max-width:600px) { .revista-grid { grid-template-columns: 1fr; } }

.revista-card {
    background: #fff; border-radius: 20px; overflow: hidden;
    display: flex; flex-direction: column;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08); border: 2px solid transparent;
    transition: transform .3s, box-shadow .3s, background .3s, border-color .3s;
}
.revista-top-bar { height: 5px; background: linear-gradient(90deg, var(--primary-color), #0369a1); flex-shrink: 0; }
.revista-card:hover { transform: translateY(-8px); background: linear-gradient(135deg,#001a42,#003270); border-color: var(--accent-color); box-shadow: 0 20px 48px rgba(0,26,66,0.32); }
.revista-card:hover .revista-top-bar { background: linear-gradient(90deg, var(--accent-color), #f59e0b); }

.revista-cover { width: 100%; height: 280px; background: #eef2f8; display: flex; align-items: center; justify-content: center; overflow: hidden; cursor: pointer; text-decoration: none; transition: background .3s; }
.revista-card:hover .revista-cover { background: rgba(0,0,0,0.15); }
.revista-cover img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; transition: transform .4s; }
.revista-cover:hover img { transform: scale(1.04); }
@media (max-width:600px) { .revista-cover { height: 240px; } }

.revista-info { padding: 18px 20px 20px; flex: 1; display: flex; flex-direction: column; }
.revista-meta { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #9ca3af; margin-bottom: 8px; flex-wrap: wrap; transition: color .3s; }
.revista-card:hover .revista-meta { color: rgba(255,255,255,0.65); }
.revista-year-badge { background: var(--primary-color); color: #fff; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 20px; transition: background .3s; }
.revista-card:hover .revista-year-badge { background: var(--accent-color); }
.revista-title { font-family: 'Playfair Display', serif; font-size: 16px; font-weight: 700; color: var(--primary-color); line-height: 1.4; margin: 0 0 8px; flex: 1; transition: color .3s; }
.revista-card:hover .revista-title { color: #fff; }
.revista-desc { font-size: 13px; color: #6b7280; line-height: 1.6; margin-bottom: 14px; transition: color .3s; }
.revista-card:hover .revista-desc { color: rgba(255,255,255,0.80); }

.revista-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: auto; padding-top: 14px; border-top: 1px solid #f1f5f9; transition: border-color .3s; }
.revista-card:hover .revista-actions { border-color: rgba(255,255,255,0.15); }
.revista-btn-primary { display: inline-flex; align-items: center; gap: 6px; background: var(--primary-color); color: #fff; padding: 8px 14px; border-radius: 8px; font-size: 12px; font-weight: 700; border: 2px solid var(--primary-color); cursor: pointer; text-decoration: none; transition: all .2s; }
.revista-card:hover .revista-btn-primary { background: rgba(255,255,255,0.18); border-color: rgba(255,255,255,0.70); }
.revista-btn-outline { display: inline-flex; align-items: center; gap: 6px; border: 2px solid var(--primary-color); color: var(--primary-color); background: transparent; padding: 8px 14px; border-radius: 8px; font-size: 12px; font-weight: 700; text-decoration: none; cursor: pointer; transition: all .2s; }
.revista-card:hover .revista-btn-outline { border-color: rgba(255,255,255,0.70); color: #fff; }

/* ══════════════════════════════════════════════════════════
   Defensas — historial paginado
   ══════════════════════════════════════════════════════════ */
.def-hist-list { display: flex; flex-direction: column; gap: 10px; }
.def-hist-row {
    display: flex; align-items: center; gap: 16px;
    background: #fff; border-radius: 14px; padding: 14px 18px;
    border: 2px solid #f1f5f9; text-decoration: none; color: inherit;
    transition: border-color .2s, box-shadow .2s, transform .2s;
}
.def-hist-row:hover { border-color: var(--primary-color); box-shadow: 0 4px 16px rgba(0,64,128,0.1); transform: translateX(4px); }

.def-hist-date { text-align: center; min-width: 52px; flex-shrink: 0; }
.def-hist-day   { display: block; font-size: 24px; font-weight: 800; color: var(--primary-color); line-height: 1; }
.def-hist-month { display: block; font-size: 10px; font-weight: 700; color: #9ca3af; text-transform: uppercase; letter-spacing: .4px; margin-top: 2px; }

.def-hist-body  { flex: 1; min-width: 0; }
.def-hist-badges { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 5px; }
.def-hist-level { background: rgba(0,64,128,0.09); color: var(--primary-color); font-size: 10px; font-weight: 700; padding: 2px 9px; border-radius: 20px; text-transform: uppercase; }
.def-hist-result { font-size: 10px; font-weight: 700; padding: 2px 9px; border-radius: 20px; display: inline-flex; align-items: center; gap: 4px; }
.def-hist-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.def-hist-upcoming { background: #eff6ff; color: #1d4ed8; font-size: 10px; font-weight: 700; padding: 2px 9px; border-radius: 20px; display: inline-flex; align-items: center; gap: 4px; }
.def-hist-upcoming i { font-size: 9px; }

.def-hist-title   { font-size: 14px; font-weight: 700; color: var(--primary-color); margin: 0 0 4px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.def-hist-student { font-size: 12px; color: #6b7280; margin: 0; display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.def-hist-student i { font-size: 10px; color: #9ca3af; }
.def-hist-sep { color: #d1d5db; }
.def-hist-cta { color: var(--primary-color); font-size: 14px; flex-shrink: 0; opacity: 0.4; transition: opacity .2s; }
.def-hist-row:hover .def-hist-cta { opacity: 1; }

/* ── Panel historial ── */
.def-historial-panel { background: #fff; border-radius: 20px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.08); margin-top: 40px; }
.def-historial-header { background: linear-gradient(135deg,#1e293b,#374151); padding: 20px 28px; display: flex; align-items: center; gap: 14px; }
.def-historial-header-icon { width: 40px; height: 40px; border-radius: 10px; background: rgba(255,255,255,0.15); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.def-historial-header-icon i { font-size: 18px; color: #fff; }
.def-historial-title { font-size: 20px; font-weight: 700; color: #fff; margin: 0; font-family: 'Playfair Display', serif; }
.def-historial-sub { font-size: 13px; color: rgba(255,255,255,0.70); margin: 2px 0 0; }
.def-historial-body { padding: 24px 28px; }

/* ══════════════════════════════════════════════════════════
   Defensas — Calendario JS
   ══════════════════════════════════════════════════════════ */
.cal-wrap { display:grid; grid-template-columns:360px 1fr; gap:28px; align-items:start; }
@media(max-width:860px){ .cal-wrap { grid-template-columns:1fr; } }

.cal-box { background:#fff; border-radius:20px; overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,0.08); }
.cal-head { background:linear-gradient(135deg,#001a42,#003270); padding:18px 22px; display:flex; align-items:center; justify-content:space-between; }
.cal-head h3 { font-family:'Playfair Display',serif; font-size:17px; font-weight:700; color:#fff; margin:0; min-width:160px; text-align:center; }
.cal-nav-btn { width:32px; height:32px; border-radius:8px; border:none; background:rgba(255,255,255,0.15); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:13px; transition:background .2s; }
.cal-nav-btn:hover { background:rgba(255,255,255,0.28); }
.cal-dow { display:grid; grid-template-columns:repeat(7,1fr); background:rgba(0,26,66,0.05); }
.cal-dow span { padding:8px 0; text-align:center; font-size:11px; font-weight:700; color:#64748b; text-transform:uppercase; letter-spacing:.4px; }
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); padding:10px 10px 14px; gap:4px; }
.cal-day { border-radius:10px; padding:5px 4px 6px; min-height:52px; display:flex; flex-direction:column; align-items:center; cursor:default; transition:background .15s; position:relative; }
.cal-day.has-def { cursor:pointer; }
.cal-day.has-def:hover { background:#f0f4f8; }
.cal-day.selected { background:var(--primary-color) !important; }
.cal-day.selected .cal-dn { color:#fff !important; }
.cal-day.today .cal-dn { background:var(--accent-color); color:#fff; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; }
.cal-day.other-month .cal-dn { color:#d1d5db; }
.cal-dn { font-size:13px; font-weight:600; color:#374151; line-height:1; margin-bottom:4px; min-width:24px; text-align:center; }
.cal-dots { display:flex; gap:3px; flex-wrap:wrap; justify-content:center; max-width:36px; }
.cal-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }

.cal-panel { background:#fff; border-radius:20px; overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,0.08); min-height:320px; display:flex; flex-direction:column; }
.cal-panel-head { background:linear-gradient(135deg,#001a42,#003270); padding:18px 24px; display:flex; align-items:center; gap:12px; }
.cal-panel-head h3 { font-family:'Playfair Display',serif; font-size:17px; font-weight:700; color:#fff; margin:0; }
.cal-panel-body { padding:20px 24px; flex:1; overflow-y:auto; max-height:580px; }
.def-card { border:2px solid #f1f5f9; border-radius:14px; padding:16px 18px; margin-bottom:12px; transition:border-color .2s,box-shadow .2s; }
.def-card:last-child { margin-bottom:0; }
.def-card:hover { border-color:var(--primary-color); box-shadow:0 4px 16px rgba(0,64,128,0.1); }
.def-card.upcoming { border-left:4px solid #3b82f6; }
.def-card.aprobado  { border-left:4px solid #22c55e; }
.def-card.reprobado { border-left:4px solid #ef4444; }
.def-card.pendiente { border-left:4px solid #94a3b8; }

.cal-legend { display:flex; gap:18px; flex-wrap:wrap; align-items:center; padding:14px 20px; background:#fff; border-radius:14px; box-shadow:0 2px 10px rgba(0,0,0,0.06); margin-bottom:24px; }
.leg-item { display:flex; align-items:center; gap:7px; font-size:13px; font-weight:600; color:#374151; }
.leg-dot { width:11px; height:11px; border-radius:50%; flex-shrink:0; }
.cal-tabs { display:flex; gap:0; }
.cal-tab { flex:1; padding:10px 8px; text-align:center; font-size:12px; font-weight:700; color:rgba(255,255,255,0.6); cursor:pointer; border-bottom:3px solid transparent; transition:all .2s; text-transform:uppercase; letter-spacing:.4px; }
.cal-tab.active { color:#fff; border-bottom-color:var(--accent-color); }

/* ══════════════════════════════════════════════════════════
   Defensas historial — resultado modifier classes
   ══════════════════════════════════════════════════════════ */
.def-hist-result--aprobado  { background: #f0fdf4; color: #16a34a; }
.def-hist-result--aprobado .def-hist-dot  { background: #22c55e; }
.def-hist-result--reprobado { background: #fef2f2; color: #dc2626; }
.def-hist-result--reprobado .def-hist-dot { background: #ef4444; }
.def-hist-result--pendiente { background: #f9fafb; color: #6b7280; }
.def-hist-result--pendiente .def-hist-dot { background: #9ca3af; }

/* ══════════════════════════════════════════════════════════
   Biblioteca — búsqueda avanzada
   ══════════════════════════════════════════════════════════ */
.bib-buscar-grid { display: grid; grid-template-columns: 240px 1fr; gap: 28px; align-items: start; }
@media (max-width: 860px) { .bib-buscar-grid { grid-template-columns: 1fr; } }

/* ══════════════════════════════════════════════════════════
   Búsqueda global — tabs de tipo
   ══════════════════════════════════════════════════════════ */
.type-filter-bar { background: #fff; border-radius: 14px; padding: 16px 20px; margin-bottom: 28px; box-shadow: 0 2px 12px rgba(0,0,0,0.07); display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.type-filter-label { font-size: 13px; color: #6b7280; font-weight: 600; margin-right: 4px; }
.type-filter-btn { padding: 7px 16px; border-radius: 20px; font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; gap: 5px; border: 2px solid #e5e7eb; background: #fff; color: #6b7280; cursor: pointer; transition: all .15s; }
.type-filter-btn:hover { border-color: var(--primary-color); color: var(--primary-color); }
.type-filter-btn.active { border-color: var(--primary-color); background: var(--primary-color); color: #fff; }
.type-filter-btn.active:hover { opacity: .9; }
.type-filter-count { background: #f3f4f6; padding: 1px 8px; border-radius: 10px; font-size: 11px; margin-left: 2px; }
.type-filter-btn.active .type-filter-count { background: rgba(255,255,255,0.28); }

/* ══════════════════════════════════════════════════════════
   Hero — Slider (home)
   ══════════════════════════════════════════════════════════ */
.slide { display: block !important; opacity: 0; pointer-events: none; transition: opacity 1.4s cubic-bezier(0.4,0,0.2,1) !important; will-change: opacity, transform; overflow: hidden; }
.slide.active { opacity: 1 !important; pointer-events: auto; animation: kbZoom 9s ease-out forwards; }
@keyframes kbZoom { 0% { transform: scale(1.07); } 100% { transform: scale(1.0); } }
.slider-progress { position: absolute; top: 0; left: 0; height: 3px; width: 0%; background: var(--accent-color); z-index: 20; transition: none; border-radius: 0 2px 2px 0; }
.slider-dots { position: absolute; bottom: 72px; left: 50%; transform: translateX(-50%); display: flex; gap: 9px; z-index: 15; }
.slider-dot { width: 9px; height: 9px; border-radius: 50%; background: rgba(255,255,255,0.35); border: 2px solid rgba(255,255,255,0.7); cursor: pointer; padding: 0; transition: all .3s ease; outline: none; }
.slider-dot.active { background: #fff; transform: scale(1.35); border-color: #fff; }
.slider-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 15; background: rgba(255,255,255,0.14); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,0.3); color: #fff; width: 50px; height: 50px; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 16px; opacity: 0; transition: opacity .3s, background .3s, transform .3s; outline: none; }
.hero:hover .slider-arrow { opacity: 1; }
.slider-arrow:hover { background: rgba(255,255,255,0.28); transform: translateY(-50%) scale(1.1); }
.slider-arrow.prev { left: 22px; }
.slider-arrow.next { right: 22px; }
.slider-dot:focus-visible, .slider-arrow:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }
.home-card-hover { transition: transform .3s, box-shadow .3s, border-color .3s; }
.home-card-hover:hover { transform: translateY(-8px); box-shadow: 0 24px 56px rgba(0,64,128,0.18) !important; border-color: var(--primary-color) !important; }
.home-defensa-card-hover { transition: transform .3s, box-shadow .3s, border-color .3s; }
.home-defensa-card-hover:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(0,64,128,0.15) !important; border-color: var(--primary-color) !important; }
.hero-content { transition: opacity .35s ease, transform .35s ease; }
.hero-content.fading { opacity: 0; transform: translateY(10px); }
.home-stat-card { transition: transform .25s, background .25s, border-color .25s; cursor: default; }
.home-stat-card:hover { transform: translateY(-6px); background: rgba(255,255,255,0.16) !important; border-color: rgba(255,255,255,0.35) !important; }
.home-stat-card h2 { transition: transform .25s; }
.home-stat-card:hover h2 { transform: scale(1.15); }
.home-news-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 24px; }
.home-defensas-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 20px; }
@media (max-width: 1024px) { .home-news-grid { grid-template-columns: repeat(2,1fr); } .home-defensas-grid { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px) { .home-news-grid { grid-template-columns: 1fr; } .home-defensas-grid { grid-template-columns: 1fr; } }

/* ══════════════════════════════════════════════════════════
   Nosotros
   ══════════════════════════════════════════════════════════ */
@media (max-width: 900px) { .nos-2col { grid-template-columns: 1fr !important; } }
@media (max-width: 768px) { .nos-2col { grid-template-columns: 1fr !important; } }
.nosotros-content ul { padding-left: 0; list-style: none; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.nosotros-content ul li { display: flex; align-items: flex-start; gap: 14px; background: #f8fafc; border: 1px solid #e2e8f0; border-left: 4px solid var(--primary-color); border-radius: 10px; padding: 14px 18px; font-size: 15px; color: #374151; line-height: 1.7; }
.nosotros-content ul li::before { content: '✓'; flex-shrink: 0; width: 24px; height: 24px; background: var(--primary-color); color: #fff; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; margin-top: 2px; }
.nosotros-content p { font-size: 16px; color: #4b5563; line-height: 1.85; margin: 0 0 14px; }
.nosotros-content ol { padding-left: 24px; }
.nosotros-content ol li { font-size: 15px; color: #374151; line-height: 1.7; margin-bottom: 10px; }

/* ══════════════════════════════════════════════════════════
   Aula Virtual
   ══════════════════════════════════════════════════════════ */
@media (max-width: 820px) { div[style*="grid-template-columns:1fr 340px"] { grid-template-columns: 1fr !important; } }

/* ══════════════════════════════════════════════════════════
   Galería — álbum fotográfico
   ══════════════════════════════════════════════════════════ */
.photo-item:hover .photo-thumb   { transform: scale(1.04); filter: brightness(.85); }
.photo-item:hover .photo-overlay { background: rgba(0,26,66,0.35) !important; }
.photo-item:hover .photo-overlay i { color: rgba(255,255,255,0.90) !important; }
.photo-item:hover .photo-caption { opacity: 1 !important; }
@media (max-width: 768px) { #photo-grid { columns: 2; } }
@media (max-width: 480px) { #photo-grid { columns: 1; } }

/* ══════════════════════════════════════════════════════════
   Eventos — show
   ══════════════════════════════════════════════════════════ */
.evento-rel-card { display: flex; flex-direction: column; background: #fff; border-radius: 16px; overflow: hidden; border: 2px solid #f1f5f9; box-shadow: 0 3px 14px rgba(0,0,0,0.07); transition: transform .3s, box-shadow .3s, border-color .3s; text-decoration: none; color: inherit; }
.evento-rel-card:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(0,64,128,0.15); border-color: var(--primary-color); }
@media (max-width: 860px) { .evento-show-grid { grid-template-columns: 1fr !important; } }
@keyframes pulse-today { 0%,100%{opacity:1} 50%{opacity:0.65} }

/* ══════════════════════════════════════════════════════════
   Noticias — show
   ══════════════════════════════════════════════════════════ */
.noticia-rel-card { display: flex; flex-direction: column; background: #fff; border-radius: 16px; overflow: hidden; border: 2px solid #f1f5f9; box-shadow: 0 3px 14px rgba(0,0,0,0.07); transition: transform .3s, box-shadow .3s, border-color .3s; text-decoration: none; color: inherit; }
.noticia-rel-card:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(0,64,128,0.15); border-color: var(--primary-color); }
@media (max-width: 860px) { .noticia-show-grid { grid-template-columns: 1fr !important; } }

/* ══════════════════════════════════════════════════════════
   Descargas
   ══════════════════════════════════════════════════════════ */
.subnav-tab:hover { color: var(--primary-color) !important; border-bottom-color: var(--primary-color) !important; }
.subnav-tab:hover span { background: var(--primary-color) !important; color: #fff !important; }

/* ══════════════════════════════════════════════════════════
   Revista — show
   ══════════════════════════════════════════════════════════ */
.revista-show-grid { display: grid; grid-template-columns: 280px 1fr; gap: 32px; align-items: start; }
.articulo-item { transition: background .2s; }
.articulo-item:hover { background: #fafbff; }
.articulo-header { display: flex; align-items: flex-start; gap: 16px; padding: 20px 24px; cursor: pointer; user-select: none; }
.articulo-main { flex: 1; min-width: 0; }
.articulo-title { font-size: 15px; font-weight: 700; color: var(--primary-color); margin: 0 0 8px; line-height: 1.45; }
.articulo-meta { display: flex; flex-wrap: wrap; gap: 10px; font-size: 12px; color: #6b7280; line-height: 1.5; }
.articulo-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; margin-left: 8px; }
@media (max-width: 860px) { .revista-show-grid { grid-template-columns: 1fr; } .articulo-header { flex-wrap: wrap; } .articulo-actions { width: 100%; margin-left: 56px; } }

/* ══════════════════════════════════════════════════════════
   Biblioteca — show
   ══════════════════════════════════════════════════════════ */
.bib-show-grid { display: grid; grid-template-columns: 260px 1fr; gap: 32px; align-items: start; }
@media (max-width: 860px) { .bib-show-grid { grid-template-columns: 1fr; } }

/* ══════════════════════════════════════════════════════════
   Defensa — show
   ══════════════════════════════════════════════════════════ */
@media (max-width: 860px) { .defensa-show-grid { grid-template-columns: 1fr !important; } }
.defensa-rel-card { display: flex; flex-direction: column; background: #fff; border-radius: 14px; overflow: hidden; border: 2px solid #f1f5f9; box-shadow: 0 3px 12px rgba(0,0,0,0.07); transition: transform .3s, box-shadow .3s, border-color .3s; text-decoration: none; color: inherit; }
.defensa-rel-card:hover { transform: translateY(-5px); box-shadow: 0 14px 36px rgba(0,64,128,0.14); border-color: var(--primary-color); }

/* ══════════════════════════════════════════════════════════
   Programas — detalle
   ══════════════════════════════════════════════════════════ */
@media (max-width: 960px) { div[style*="grid-template-columns:1fr 300px"] { grid-template-columns: 1fr !important; } }

/* ══════════════════════════════════════════════════════════
   Búsqueda global — result cards
   ══════════════════════════════════════════════════════════ */
.busqueda-counter { font-size: 14px; color: #6b7280; margin-bottom: 20px; font-weight: 500; }
.search-result-card { display: flex; gap: 18px; padding: 20px 24px; background: #fff; border-radius: 16px; box-shadow: 0 2px 12px rgba(0,0,0,0.07); text-decoration: none; color: #1f2937; border: 2px solid transparent; transition: all .2s; }
.search-result-card:hover { border-color: var(--primary-color); transform: translateX(4px); }
.search-result-icon { flex-shrink: 0; width: 60px; height: 60px; border-radius: 12px; overflow: hidden; background: color-mix(in srgb, var(--tc, #004080) 10%, transparent); display: flex; align-items: center; justify-content: center; }
.search-result-type-icon { font-size: 24px; color: var(--tc, #004080); }
.search-result-meta { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.search-result-badge { background: var(--tc, #004080); color: #fff; font-size: 11px; padding: 3px 10px; border-radius: 12px; font-weight: 700; }
.search-result-date { font-size: 12px; color: #9ca3af; display: flex; align-items: center; gap: 4px; }
.search-result-title { font-size: 16px; font-weight: 700; color: #1a2c4e; margin: 0 0 5px; line-height: 1.4; }
.search-result-excerpt { font-size: 13px; color: #6b7280; margin: 0; line-height: 1.6; }
.search-result-arrow { flex-shrink: 0; align-self: center; color: #d1d5db; padding-left: 8px; }
.btn-primary-sm { display: inline-flex; align-items: center; gap: 6px; padding: 9px 20px; background: var(--primary-color); color: #fff; border-radius: 9px; font-weight: 700; font-size: 13px; text-decoration: none; }
.btn-outline-sm { display: inline-flex; align-items: center; gap: 6px; padding: 9px 20px; background: #fff; color: var(--primary-color); border: 2px solid var(--primary-color); border-radius: 9px; font-weight: 700; font-size: 13px; text-decoration: none; }

/* ══════════════════════════════════════════════════════════
   Biblioteca — catálogo (tarjetas por categoría)
   ══════════════════════════════════════════════════════════ */
.bib-card-full { border: 2px solid var(--primary-color) !important; transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s !important; }
.bib-card-full:hover { border-color: var(--accent-color) !important; transform: translateY(-6px) !important; box-shadow: 0 10px 28px rgba(0,0,0,0.15) !important; }

/* ══════════════════════════════════════════════════════════
   Contacto — formulario responsive
   ══════════════════════════════════════════════════════════ */
@media (max-width: 860px) {
    div[style*="grid-template-columns:300px 1fr"] { grid-template-columns: 1fr !important; }
    div[style*="grid-template-columns:1fr 1fr"]   { grid-template-columns: 1fr !important; }
}

/* ══════════════════════════════════════════════════════════
   Docentes — show
   ══════════════════════════════════════════════════════════ */
@media (max-width: 860px) { .docente-grid { grid-template-columns: 1fr !important; } }

/* ══════════════════════════════════════════════════════════
   Proyectos — show
   ══════════════════════════════════════════════════════════ */
@media (max-width: 860px) { .proyecto-grid { grid-template-columns: 1fr !important; } }

/* ══════════════════════════════════════════════════════════
   Cursos — show
   ══════════════════════════════════════════════════════════ */
@media (max-width: 860px) { .curso-show-grid { grid-template-columns: 1fr !important; } }

/* ══════════════════════════════════════════════════════════
   UTILITY CLASSES — reemplaza estilos inline repetidos
   ══════════════════════════════════════════════════════════ */

/* ── Hero / Banner ── */
.page-hero-dark {
    background: linear-gradient(135deg, #001a42 0%, #003270 60%, #004080 100%);
    color: #fff;
    position: relative;
    overflow: hidden;
}
.page-hero-dark-alt {
    background: linear-gradient(135deg, #001a42 0%, #003270 100%);
    color: #fff;
    position: relative;
    overflow: hidden;
}
.page-hero-inner {
    max-width: 1200px;
    margin: 0 auto;
    position: relative;
    z-index: 1;
}
.page-hero-pad {
    padding: 40px 20px 36px;
}
.page-hero-pad-lg {
    padding: 56px 20px;
}

/* Líneas de acento superior (5px) */
.accent-line {
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 5px;
}
.accent-line-primary { background: linear-gradient(90deg, var(--accent-color), #f59e0b); }
.accent-line-blue    { background: linear-gradient(90deg, var(--primary-color), #0369a1); }
.accent-line-red     { background: linear-gradient(90deg, #dc2626, #ef4444); }
.accent-line-purple  { background: linear-gradient(90deg, #7c3aed, #6d28d9); }
.accent-line-cyan    { background: linear-gradient(90deg, #38bdf8, #0ea5e9); }
.accent-line-violet  { background: linear-gradient(90deg, #8b5cf6, #a78bfa); }
.accent-line-green   { background: linear-gradient(90deg, #16a34a, #4ade80); }

/* Círculos decorativos de fondo (blur) */
.deco-circle {
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}
.deco-circle-lg {
    width: 320px; height: 320px;
    background: rgba(255,255,255,0.04);
}
.deco-circle-md {
    width: 200px; height: 200px;
    background: rgba(255,255,255,0.03);
}
.deco-circle-tl { top: -80px; left: -80px; }
.deco-circle-tr { top: -80px; right: -80px; }
.deco-circle-bl { bottom: -60px; left: 10%; }
.deco-circle-br { bottom: -60px; right: -60px; }

/* ── Breadcrumb hero ── */
.hero-breadcrumb {
    font-size: 13px;
    color: rgba(255,255,255,0.75);
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    padding-top: 20px;
}
.hero-breadcrumb a { color: rgba(255,255,255,0.75); text-decoration: none; transition: color .2s; }
.hero-breadcrumb a:hover { color: #fff; }
.hero-breadcrumb-sep { opacity: .5; }
.hero-breadcrumb-current {
    background: rgba(255,255,255,.18);
    color: #fff;
    padding: 2px 12px;
    border-radius: 10px;
    font-weight: 700;
}

/* ── Ícono cuadrado en hero ── */
.hero-icon-wrap {
    width: 56px; height: 56px;
    border-radius: 14px;
    background: rgba(255,255,255,.15);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.hero-icon-wrap i { font-size: 26px; }

/* ── Título hero (Playfair Display) ── */
.hero-title {
    font-family: 'Playfair Display', serif;
    font-size: clamp(18px, 3vw, 26px);
    font-weight: 800;
    margin: 0 0 5px;
    line-height: 1.25;
}
.hero-title-lg {
    font-family: 'Playfair Display', serif;
    font-size: clamp(22px, 4vw, 34px);
    font-weight: 800;
    margin: 0 0 8px;
    line-height: 1.2;
}
.hero-title-xl {
    font-family: 'Playfair Display', serif;
    font-size: clamp(26px, 5vw, 46px);
    font-weight: 800;
    margin: 0 0 10px;
    line-height: 1.15;
}
.hero-subtitle {
    font-size: 13px;
    opacity: .82;
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    margin: 0;
}

/* ── Tipografía sección (Playfair Display) ── */
.section-title {
    font-family: 'Playfair Display', serif;
    font-weight: 800;
    font-size: clamp(20px, 3vw, 28px);
    color: var(--primary-color);
    margin: 0 0 6px;
}
.section-subtitle {
    font-size: 15px;
    color: #64748b;
    margin: 0 0 24px;
}
.section-title-underline {
    width: 48px; height: 4px;
    background: var(--accent-color);
    border-radius: 2px;
    margin: 8px auto 20px;
}

/* ── Contenedores ── */
.container-content { max-width: 1200px; margin: 0 auto; padding: 0 20px; box-sizing: border-box; }
.container-narrow  { max-width: 800px;  margin: 0 auto; padding: 0 20px; box-sizing: border-box; }

/* ── Padding de secciones ── */
.section-py-xl { padding: 72px 0; }
.section-py-lg { padding: 56px 0; }
.section-py-md { padding: 40px 0; }
.section-py-sm { padding: 24px 0; }

/* ── Fondos de sección ── */
.bg-white  { background: #fff; }
.bg-light  { background: #f7f8fc; }
.bg-gray   { background: #f0f4f8; }
.bg-dark   { background: #001a42; color: #fff; }

/* ── Tarjetas ── */
.card-white {
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 4px 18px rgba(0,0,0,0.08);
}
.card-bordered {
    background: #fff;
    border: 2px solid #f1f5f9;
    border-radius: 16px;
    box-shadow: 0 4px 18px rgba(0,0,0,0.08);
}
.card-light {
    background: #f0f4f8;
    border: 2px solid #e2e8f0;
    border-radius: 16px;
}
.card-pad    { padding: 20px 24px; }
.card-pad-lg { padding: 28px 32px; }
.card-pad-sm { padding: 14px 18px; }

/* ── Alertas / Info boxes ── */
.alert-info {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 12px;
    padding: 16px 20px;
    color: #1e40af;
}
.alert-warning {
    background: #fffbeb;
    border: 1px solid #fcd34d;
    border-radius: 12px;
    padding: 16px 20px;
    color: #92400e;
}
.alert-success {
    background: #d1fae5;
    border: 1px solid #6ee7b7;
    border-radius: 10px;
    padding: 1rem 1.2rem;
    color: #065f46;
}
.alert-danger {
    background: #fee2e2;
    border: 1px solid #fca5a5;
    border-radius: 10px;
    padding: 1rem 1.2rem;
    color: #991b1b;
}

/* ── Botones gradiente ── */
.btn-primary-grad {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: linear-gradient(135deg, var(--primary-color), #0369a1);
    color: #fff;
    padding: 10px 22px;
    border-radius: 8px;
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: opacity .2s, transform .2s;
}
.btn-primary-grad:hover { opacity: .9; transform: translateY(-1px); color: #fff; }
.btn-success-grad {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: linear-gradient(135deg, #16a34a, #4ade80);
    color: #fff;
    padding: 10px 22px;
    border-radius: 8px;
    font-weight: 700;
    font-size: 14px;
    text-decoration: none;
    border: none;
    cursor: pointer;
    transition: opacity .2s, transform .2s;
}
.btn-success-grad:hover { opacity: .9; transform: translateY(-1px); color: #fff; }
.btn-outline-white {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: 2px solid rgba(255,255,255,.6);
    color: #fff;
    padding: 9px 20px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none;
    transition: background .2s, border-color .2s;
}
.btn-outline-white:hover { background: rgba(255,255,255,.12); border-color: #fff; color: #fff; }

/* ── Insignias / Chips ── */
.badge-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 11px;
    font-weight: 700;
    padding: 3px 12px;
    border-radius: 20px;
}
.badge-pill-sm {
    font-size: 10px;
    font-weight: 700;
    padding: 2px 9px;
    border-radius: 20px;
    display: inline-block;
}
.badge-inline {
    display: inline-block;
    border-radius: 4px;
    padding: 1px 8px;
    font-weight: 700;
    font-size: 11px;
}
/* Colores semánticos para badges */
.badge-blue   { background: #dbeafe; color: #1d4ed8; }
.badge-green  { background: #dcfce7; color: #166534; }
.badge-orange { background: #ffedd5; color: #c2410c; }
.badge-red    { background: #fee2e2; color: #991b1b; }
.badge-purple { background: #ede9fe; color: #6d28d9; }
.badge-gray   { background: #f1f5f9; color: #475569; }
.badge-yellow { background: #fef9c3; color: #854d0e; }
.badge-white  { background: rgba(255,255,255,.18); color: #fff; }

/* ── Círculos numerados / badge-número ── */
.num-circle {
    width: 28px; height: 28px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    background: linear-gradient(135deg, var(--primary-color), #0369a1);
    color: #fff;
    font-size: 12px;
    font-weight: 800;
    box-shadow: 0 2px 8px rgba(0,64,128,0.25);
}
.num-circle-lg {
    width: 40px; height: 40px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    background: linear-gradient(135deg, var(--primary-color), #0369a1);
    color: #fff;
    font-size: 16px;
    font-weight: 800;
}

/* ── Redes sociales ── */
.social-btn {
    width: 38px; height: 38px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    text-decoration: none;
    font-size: 16px;
    transition: opacity .2s, transform .2s;
}
.social-btn:hover { opacity: .85; transform: scale(1.08); }
.social-whatsapp { background: #25d366; color: #fff; }
.social-facebook { background: #1877f2; color: #fff; }
.social-twitter  { background: #1da1f2; color: #fff; }
.social-email    { background: #6b7280; color: #fff; }
.social-linkedin { background: #0a66c2; color: #fff; }

/* ── Flex utilities ── */
.flex-row        { display: flex; flex-wrap: wrap; }
.flex-col        { display: flex; flex-direction: column; }
.flex-center     { display: flex; align-items: center; }
.flex-center-all { display: flex; align-items: center; justify-content: center; }
.flex-center-justify { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; }
.flex-between    { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.flex-wrap       { flex-wrap: wrap; }
.flex-shrink-0   { flex-shrink: 0; }
.gap-1  { gap: 1px; }
.gap-2  { gap: 2px; }
.gap-3  { gap: 3px; }
.gap-4  { gap: 4px; }
.gap-6  { gap: 6px; }
.gap-8  { gap: 8px; }
.gap-10 { gap: 10px; }
.gap-12 { gap: 12px; }
.gap-14 { gap: 14px; }
.gap-16 { gap: 16px; }
.gap-18 { gap: 18px; }
.gap-20 { gap: 20px; }
.gap-22 { gap: 22px; }
.gap-24 { gap: 24px; }
.gap-28 { gap: 28px; }
.gap-32 { gap: 32px; }
.gap-40 { gap: 40px; }
.gap-48 { gap: 48px; }

/* ── Texto de enlace claro (sobre fondos oscuros) ── */
.text-white-link {
    color: rgba(255,255,255,0.85);
    text-decoration: none;
    transition: color .2s;
}
.text-white-link:hover { color: #fff; }
.text-muted-light { color: rgba(255,255,255,0.65); }
.text-muted-link-light {
    color: rgba(255,255,255,0.65);
    text-decoration: none;
    transition: color .2s;
}
.text-muted-link-light:hover { color: #fff; }

/* ── Divisores / separadores ── */
.divider {
    border: none;
    border-top: 1px solid #e2e8f0;
    margin: 24px 0;
}
.divider-dark {
    border: none;
    border-top: 1px solid rgba(255,255,255,.15);
    margin: 24px 0;
}

/* ── Posicionamiento ── */
.pos-relative { position: relative; }
.pos-absolute { position: absolute; }
.overflow-hidden { overflow: hidden; }
.z-1 { z-index: 1; }

/* ── Utilidades de texto ── */
.text-serif { font-family: 'Playfair Display', serif; }
.fw-800 { font-weight: 800; }
.fw-700 { font-weight: 700; }
.fw-600 { font-weight: 600; }
.lh-tight { line-height: 1.25; }
.lh-snug  { line-height: 1.4; }
.opacity-80 { opacity: .8; }
.opacity-65 { opacity: .65; }

/* ── Enlace "leer más" / CTA ligero ── */
.link-arrow {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary-color);
    text-decoration: none;
    transition: gap .2s;
}
.link-arrow:hover { gap: 10px; }
.link-arrow-white {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    opacity: .85;
    transition: opacity .2s, gap .2s;
}
.link-arrow-white:hover { opacity: 1; gap: 10px; }

/* ── Botones de compartir (full-width, coloreados) ── */
.share-btn {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transition: opacity .2s;
    width: 100%;
    box-sizing: border-box;
    border: none;
    cursor: pointer;
}
.share-btn:hover { opacity: .88; }
.share-btn-wa  { background: #25d366; color: #fff; }
.share-btn-wa:hover { color: #fff; }
.share-btn-fb  { background: #1877f2; color: #fff; }
.share-btn-fb:hover { color: #fff; }
.share-btn-copy { background: #f0f4f8; color: var(--primary-color); border: 1.5px solid #e2e8f0; }
.share-btn-copy:hover { color: var(--primary-color); }

/* ── Íconos de sidebar info (28×28, coloreados) ── */
.info-icon {
    width: 28px; height: 28px;
    border-radius: 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.info-icon i { font-size: 11px; }
.info-icon-blue   { background: #eff6ff; }
.info-icon-blue i { color: #3b82f6; }
.info-icon-green   { background: #f0fdf4; }
.info-icon-green i { color: #16a34a; }
.info-icon-orange   { background: #fff7ed; }
.info-icon-orange i { color: #ea580c; }
.info-icon-purple   { background: #fdf4ff; }
.info-icon-purple i { color: #9333ea; }
.info-icon-red   { background: #fff1f2; }
.info-icon-red i { color: #e11d48; }
.info-icon-gray   { background: #f8fafc; }
.info-icon-gray i { color: #64748b; }

/* ── Tarjeta con barra top de color ── */
.card-article {
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.08);
    overflow: hidden;
    margin-bottom: 24px;
}
.card-article-bar-green { height: 5px; background: linear-gradient(90deg,#16a34a,#4ade80); }
.card-article-bar-gray  { height: 5px; background: linear-gradient(90deg,#6b7280,#94a3b8); }
.card-article-bar-red   { height: 5px; background: linear-gradient(90deg,var(--accent-color),#f43f5e); }
.card-article-body { padding: 28px 32px 32px; }

/* ── Blockquote / cita destacada ── */
.blockquote-primary {
    border-left: 4px solid var(--primary-color);
    background: #f0f4f8;
    padding: 16px 20px;
    margin: 0 0 28px;
    border-radius: 0 10px 10px 0;
    font-size: 16px;
    font-style: italic;
    color: #475569;
    line-height: 1.75;
}
.blockquote-accent {
    border-left: 4px solid var(--accent-color);
    background: #fffbeb;
    padding: 16px 20px;
    margin: 0 0 28px;
    border-radius: 0 10px 10px 0;
    font-size: 16px;
    font-style: italic;
    color: #555;
    line-height: 1.75;
}

/* ── Sección de etiquetas/keywords ── */
.keywords-wrap {
    margin-top: 28px;
    padding-top: 20px;
    border-top: 2px solid #f1f5f9;
}
.keywords-label {
    font-size: 13px;
    font-weight: 600;
    color: #64748b;
    margin-right: 10px;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.keyword-tag {
    display: inline-block;
    background: var(--primary-color);
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    padding: 4px 12px;
    border-radius: 20px;
    margin: 3px 4px 3px 0;
    letter-spacing: .03em;
}

/* ── Footer de artículo (back + share) ── */
.article-footer {
    margin-top: 32px;
    padding-top: 20px;
    border-top: 2px solid #f1f5f9;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
}
.share-inline {
    display: flex;
    gap: 10px;
    align-items: center;
}
.share-inline-label {
    font-size: 13px;
    color: #94a3b8;
}
.share-link-wa {
    color: #25D366;
    font-size: 24px;
    transition: opacity .2s;
}
.share-link-wa:hover { opacity: .75; }
.share-link-fb {
    color: #1877f2;
    font-size: 24px;
    transition: opacity .2s;
}
.share-link-fb:hover { opacity: .75; }

/* ── Countdown box (verde) ── */
.countdown-box {
    text-align: center;
    background: linear-gradient(135deg, #f0fdf4, #dcfce7);
    border: 1.5px solid #bbf7d0;
    border-radius: 12px;
    padding: 14px;
    margin-top: 4px;
}
.countdown-number {
    font-size: 2rem;
    font-weight: 900;
    color: #16a34a;
    line-height: 1;
}
.countdown-label {
    font-size: 11px;
    color: #16a34a;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 4px;
    font-weight: 700;
    opacity: .85;
}

/* ── Badge primary ── */
.badge-primary { background: var(--primary-color); color: #fff; }
.badge-accent   { background: var(--accent-color); color: #fff; }

/* ── Tarjeta contenido oscura centrada (Misión / Visión / Autoridades) ── */
.dark-card {
    background: linear-gradient(135deg, #001a42 0%, #003270 100%);
    border-radius: 24px;
    box-shadow: 0 20px 60px rgba(0,26,66,0.35);
    padding: 60px 56px;
    position: relative;
    overflow: hidden;
    color: #fff;
    box-sizing: border-box;
}
.dark-card-center { text-align: center; display: flex; flex-direction: column; align-items: center; }
.dark-card-title {
    font-family: 'Playfair Display', serif;
    font-size: 40px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 12px;
    line-height: 1.2;
}
.dark-card-divider {
    width: 60px; height: 4px;
    border-radius: 2px;
    margin: 0 auto 36px;
    flex-shrink: 0;
}
.dark-card-quote {
    font-size: 18px;
    color: rgba(255,255,255,0.90);
    line-height: 1.9;
    margin: 0 auto 40px;
    max-width: 720px;
    font-style: italic;
    font-weight: 300;
    border: 2px solid rgba(255,255,255,0.15);
    border-radius: 14px;
    padding: 28px 32px;
    background: rgba(255,255,255,0.06);
}
.icon-circle-xl {
    width: 90px; height: 90px;
    border-radius: 50%;
    background: rgba(255,255,255,0.10);
    border: 3px solid rgba(255,255,255,0.20);
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 28px;
}
.icon-circle-xl i { font-size: 38px; }

/* ── Encabezado de panel oscuro (label pequeño) ── */
.panel-label {
    font-size: 13px;
    font-weight: 700;
    color: #fff;
    margin: 0;
    text-transform: uppercase;
    letter-spacing: .5px;
}
/* Ícono dentro de panel-dark-sm / panel-dark-md */
.panel-dark-sm i,
.panel-dark-md i { color: #fff; }

/* ── Texto de detalle en sidebar ── */
.detail-val {
    font-size: 13px;
    color: #374151;
    font-weight: 600;
    margin: 0;
}
.detail-label {
    font-size: 11px;
    color: #94a3b8;
    margin: 0 0 2px;
    text-transform: uppercase;
    letter-spacing: .04em;
}

/* ── Badges adicionales ── */
.badge-pill.badge-red    { background: #fee2e2; color: #991b1b; }
.badge-pill.badge-orange { background: #ffedd5; color: #c2410c; }
.badge-today  { background: #dc2626; color: #fff; animation: pulse-today 1.5s infinite; }
.badge-tomorrow { background: #ea580c; color: #fff; }

/* ── Padding compacto interior ── */
.p-inner { padding: 18px 20px; }
.p-inner-lg { padding: 24px 28px; }

/* ── Tarjeta autoridad principal ── */
.authority-card {
    background: linear-gradient(135deg, #001a42 0%, #003270 100%);
    border-radius: 24px;
    overflow: hidden;
    box-shadow: 0 20px 56px rgba(0,26,66,0.32);
    position: relative;
    max-width: 720px;
    margin: 0 auto 64px;
    box-sizing: border-box;
}
.authority-card-body {
    padding: 48px 48px 44px;
    text-align: center;
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.authority-name {
    font-family: 'Playfair Display', serif;
    font-size: 28px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 6px;
    line-height: 1.2;
}
.authority-role {
    font-size: 14px;
    color: rgba(255,255,255,0.75);
    margin: 0 0 20px;
    font-style: italic;
}
.authority-avatar {
    width: 130px; height: 130px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid rgba(255,255,255,0.25);
    box-shadow: 0 8px 24px rgba(0,0,0,0.25);
    margin: 0 auto 24px;
    display: block;
}

/* ── Panel icon buttons (inside dark panel headers) ── */
.panel-icon-sm { width:34px; height:34px; border-radius:8px; background:rgba(255,255,255,0.15); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.panel-icon-md { width:40px; height:40px; border-radius:10px; background:rgba(255,255,255,0.15); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.panel-icon-sm i, .panel-icon-md i { color:var(--accent-color); font-size:14px; }
.panel-title { color:#fff; font-weight:700; font-size:14px; margin:0; }

/* ── Editorial meta labels / values ── */
.meta-label { font-size:10px; text-transform:uppercase; letter-spacing:.8px; color:#94a3b8; margin-bottom:2px; font-weight:600; display:block; }
.meta-val { font-size:14px; font-weight:700; color:#1e293b; margin:0; }
.meta-val-mono { font-size:14px; font-weight:700; color:#1e293b; margin:0; font-family:monospace; }

/* ── Sidebar detail icons (34px, color-coded) ── */
.detail-icon { width:34px; height:34px; border-radius:9px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.detail-icon i { font-size:13px; }
.detail-icon-blue   { background:#eff6ff; } .detail-icon-blue i   { color:#3b82f6; }
.detail-icon-green  { background:#f0fdf4; } .detail-icon-green i  { color:#16a34a; }
.detail-icon-purple { background:#faf5ff; } .detail-icon-purple i { color:#7c3aed; }
.detail-icon-orange { background:#fff7ed; } .detail-icon-orange i { color:#ea580c; }
.detail-icon-red    { background:#fee2e2; } .detail-icon-red i    { color:#dc2626; }
.detail-icon-yellow { background:#fef9c3; } .detail-icon-yellow i { color:#ca8a04; }
.detail-icon-gray   { background:#f8fafc; } .detail-icon-gray i   { color:#64748b; }

/* ── Module card (curriculum) ── */
.module-card { background:#f8fafc; border-radius:12px; padding:14px 16px; display:flex; gap:12px; align-items:flex-start; border:1.5px solid #e2e8f0; }
.module-number { width:32px; height:32px; background:linear-gradient(135deg,var(--primary-color),#0369a1); color:#fff; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:800; flex-shrink:0; }
.module-tag { font-size:11px; color:#6b7280; background:#e5e7eb; padding:2px 8px; border-radius:20px; }

/* ── Article meta chips (18px inline icons) ── */
.meta-chip { width:18px; height:18px; border-radius:4px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.meta-chip i { font-size:9px; }
.meta-chip-blue   { background:#eff6ff; } .meta-chip-blue i   { color:#3b82f6; }
.meta-chip-green  { background:#f0fdf4; } .meta-chip-green i  { color:#16a34a; }
.meta-chip-purple { background:#fdf2f8; } .meta-chip-purple i { color:#9333ea; }

/* ── Flex span helper ── */
.flex-span { display:flex; align-items:center; gap:4px; }

/* ── PDF and toggle action buttons ── */
.btn-pdf { display:inline-flex; align-items:center; gap:5px; background:#dc2626; color:#fff; padding:7px 14px; border-radius:8px; font-size:11px; font-weight:700; border:none; cursor:pointer; white-space:nowrap; box-shadow:0 2px 8px rgba(220,38,38,0.3); }
.btn-toggle { display:inline-flex; align-items:center; gap:5px; border:2px solid #e2e8f0; background:#f8fafc; color:#64748b; padding:6px 12px; border-radius:8px; font-size:11px; font-weight:700; cursor:pointer; white-space:nowrap; transition:all .2s; }

/* ── Article number chip (40×40 gradient) ── */
.article-num { width:40px; height:40px; border-radius:10px; background:linear-gradient(135deg,var(--primary-color),#0369a1); display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:14px; font-weight:900; color:#fff; line-height:1; }

/* ── Twitter share button ── */
.share-btn-tw { background:#1da1f2; color:#fff; }
.share-btn-tw:hover { color:#fff; }

/* ── Section divider (top border + padding) ── */
.section-divider-top { padding-top:20px; border-top:1px solid #f1f5f9; }

/* ── Info icon yellow variant ── */
.info-icon-yellow   { background:#fef9c3; }
.info-icon-yellow i { color:#ca8a04; }

/* ── PDF large button ── */
.btn-pdf-lg { display:inline-flex; align-items:center; gap:8px; background:#dc2626; color:#fff; padding:10px 22px; border-radius:8px; font-size:14px; font-weight:700; text-decoration:none; box-shadow:0 3px 12px rgba(220,38,38,0.25); }

/* ── Section subheading (small uppercase with chip) ── */
.section-subheading { font-size:14px; font-weight:700; color:var(--primary-color); margin:0 0 14px; text-transform:uppercase; letter-spacing:.06em; }

/* ── Gradient chip icon (28px) ── */
.gradient-chip { width:28px; height:28px; border-radius:7px; background:linear-gradient(135deg,var(--primary-color),#0369a1); display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.gradient-chip-purple { background:linear-gradient(135deg,#7c3aed,#a78bfa); }

/* ── Empty placeholder ── */
.empty-placeholder { padding:36px; text-align:center; color:#94a3b8; background:#f8fafc; border-radius:12px; }

/* ── Jury member row ── */
.jury-member { display:flex; align-items:center; gap:12px; padding:11px 16px; background:#f8fafc; border:1.5px solid #f1f5f9; border-radius:10px; font-size:14px; color:#334155; }
.jury-num { background:linear-gradient(135deg,var(--primary-color),#0369a1); color:#fff; font-size:11px; font-weight:800; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; }

/* ── Hero glass badges ── */
.badge-hero-glass { background:rgba(255,255,255,.18); color:#fff; font-size:11px; padding:3px 12px; border-radius:20px; font-weight:700; border:1px solid rgba(255,255,255,.3); }
.badge-hero-upcoming { background:rgba(255,193,7,.3); color:#fff0a0; font-size:11px; padding:3px 12px; border-radius:20px; font-weight:700; border:1px solid rgba(255,193,7,.4); }

/* ── Defensa related card sections ── */
.defensa-rel-date { height:80px; background:linear-gradient(135deg,var(--primary-color),#0369a1); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.defensa-rel-body { flex:1; display:flex; flex-direction:column; padding:12px 14px 14px; }

/* ── Teacher profile ── */
.teacher-avatar-wrap { width:130px; height:130px; border-radius:50%; overflow:hidden; border:5px solid rgba(255,255,255,0.25); box-shadow:0 8px 32px rgba(0,0,0,0.30); }
.teacher-degree-badge { position:absolute; bottom:-4px; left:50%; transform:translateX(-50%); border-radius:20px; padding:3px 12px; font-size:11px; font-weight:700; white-space:nowrap; }

/* ── Small teacher card (related) ── */
.docente-card-sm { display:flex; align-items:center; gap:14px; padding:16px 18px; background:#f8fafc; border-radius:14px; text-decoration:none; border:2px solid #e2e8f0; transition:all .22s; }
.docente-card-sm:hover { border-color:var(--primary-color); transform:translateY(-3px); box-shadow:0 6px 20px rgba(0,40,100,0.12); }
.docente-card-sm-img { width:52px; height:52px; border-radius:50%; object-fit:cover; object-position:top; border:2px solid #e0eaf4; flex-shrink:0; }

/* ── Publication item ── */
.publication-item { background:#f8fafc; border-radius:12px; padding:16px 18px; border-left:4px solid #7c3aed; display:flex; align-items:flex-start; gap:14px; }

/* ── LinkedIn share button ── */
.share-btn-li { background:#0077b5; color:#fff; }
.share-btn-li:hover { color:#fff; }
.btn-toggle:hover { border-color:var(--primary-color); color:var(--primary-color); }

/* ── Abstract body ── */
.abstract-body { padding:16px 20px 16px 74px; border-top:1px solid #f1f5f9; }
.abstract-body p { font-size:14px; color:#374151; line-height:1.80; margin:0; text-align:justify; }

/* ── Body text paragraphs ── */
.body-text { font-size:15px; color:#4b5563; line-height:1.85; margin:0; }
.body-text-j { font-size:15px; color:#4b5563; line-height:1.85; margin:0; text-align:justify; }

/* ── Download/brochure link ── */
.btn-download-red { display:flex; align-items:center; gap:8px; padding:10px 16px; background:#fee2e2; color:#dc2626; border-radius:9px; font-size:13px; text-decoration:none; font-weight:700; border:1.5px solid #fca5a5; }
.btn-download-red:hover { background:#fecaca; color:#dc2626; }

/* ── Outline primary button ── */
.btn-outline-primary { display:inline-flex; align-items:center; gap:8px; border:2px solid var(--primary-color); color:var(--primary-color); padding:10px 22px; border-radius:8px; font-size:14px; font-weight:700; text-decoration:none; background:#fff; transition:all .2s; }
.btn-outline-primary:hover { background:var(--primary-color); color:#fff; }

/* ── Related card (small) ── */
.related-card { display:flex; flex-direction:column; text-decoration:none; color:#1f2937; background:#f8fafc; border-radius:14px; overflow:hidden; border:2px solid #e2e8f0; box-shadow:0 2px 10px rgba(0,0,0,0.05); transition:transform .3s,box-shadow .3s,border-color .3s; }
.related-card:hover { transform:translateY(-5px); box-shadow:0 14px 36px rgba(0,64,128,0.14); border-color:var(--primary-color); }
.related-card-body { flex:1; display:flex; flex-direction:column; padding:14px 16px 16px; }
.related-card-title { font-size:14px; font-weight:700; color:var(--primary-color); line-height:1.4; margin:0 0 8px; flex:1; }
.related-card-link { display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:var(--primary-color); margin-top:auto; }
.related-card-link i { font-size:9px; }

/* ── Panel dark header (generic) ── */
.panel-dark-header { background:linear-gradient(135deg,#001a42,#003270); padding:18px 28px; display:flex; align-items:center; gap:14px; }
.panel-dark-header-sm { background:linear-gradient(135deg,#001a42,#003270); padding:16px 22px; display:flex; align-items:center; gap:12px; }
.panel-dark-header-red { background:linear-gradient(135deg,#dc2626,#ef4444); padding:14px 20px; display:flex; align-items:center; gap:10px; }
.panel-dark-heading-sm { font-size:15px; font-weight:700; color:#fff; margin:0; font-family:'Playfair Display',serif; }
.panel-dark-sub { font-size:12px; color:rgba(255,255,255,0.65); margin:2px 0 0; }

/* ── Requirements card ── */
.requirements-card { background:#fffbeb; border:1px solid #fcd34d; border-radius:12px; padding:20px 24px; margin-top:28px; }
.requirements-title { font-size:15px; color:var(--primary-color); margin:0 0 12px; font-weight:700; display:flex; align-items:center; gap:8px; }

/* ── Target audience callout ── */
.callout-blue { background:#eff6ff; border-left:4px solid #3b82f6; padding:14px 18px; border-radius:0 10px 10px 0; margin-bottom:24px; }
.callout-blue p { margin:0; font-size:14px; color:#1e40af; }

/* ── Section heading with icon ── */
.section-heading-icon { font-size:20px; margin:0 0 16px; }
.section-heading-icon-22 { font-size:22px; margin:0; line-height:1.2; }

/* ── galeria/show ── */
.hero-cat-badge-glass { display:inline-flex; align-items:center; gap:6px; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.25); border-radius:20px; padding:4px 13px; font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; margin-bottom:12px; backdrop-filter:blur(8px); }
.hero-desc { margin:14px 0 0; max-width:720px; opacity:0.80; font-size:14px; line-height:1.70; }
.photo-item    { break-inside:avoid; margin-bottom:14px; cursor:pointer; border-radius:12px; overflow:hidden; position:relative; }
.photo-thumb   { width:100%; display:block; border-radius:12px; transition:transform .3s,filter .3s; }
.photo-overlay { position:absolute; inset:0; background:rgba(0,26,66,0); border-radius:12px; display:flex; align-items:center; justify-content:center; transition:background .3s; }
.photo-overlay i { color:rgba(255,255,255,0); font-size:22px; transition:color .3s; }
.photo-caption { position:absolute; bottom:0; left:0; right:0; background:linear-gradient(transparent,rgba(0,0,0,0.70)); color:#fff; padding:20px 12px 10px; font-size:12px; opacity:0; transition:opacity .3s; border-radius:0 0 12px 12px; }
.galeria-grid-body { padding:24px; }
.galeria-rel-card { display:block; text-decoration:none; border-radius:14px; overflow:hidden; border:2px solid #f1f5f9; transition:transform .25s,box-shadow .25s,border-color .25s; }
.galeria-rel-card:hover { transform:translateY(-5px); box-shadow:0 12px 32px rgba(0,64,128,0.14); border-color:var(--primary-color); }
.galeria-rel-img-wrap { height:140px; overflow:hidden; background:#eef2f8; position:relative; }
.galeria-rel-img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .3s; }
.galeria-rel-card:hover .galeria-rel-img { transform:scale(1.06); }
.galeria-cat-badge { position:absolute; top:8px; left:8px; border-radius:12px; padding:3px 9px; font-size:10px; font-weight:700; display:flex; align-items:center; gap:4px; }
.galeria-cat-badge-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.galeria-rel-body { padding:12px 14px; background:#fff; }
.galeria-rel-title { font-weight:700; color:var(--primary-color); font-size:13px; margin:0 0 4px; line-height:1.35; }
.galeria-rel-photos { font-size:11px; color:#9ca3af; margin:0; display:flex; align-items:center; gap:4px; }
.galeria-rel-photos i { font-size:10px; }
.card-empty { text-align:center; padding:80px 20px; color:#9ca3af; }
.lb-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.94); z-index:99999; align-items:center; justify-content:center; flex-direction:column; }
.lb-close { position:absolute; top:18px; right:22px; background:rgba(255,255,255,0.12); border:none; color:#fff; font-size:18px; cursor:pointer; border-radius:10px; width:42px; height:42px; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(6px); }
.lb-close:hover { background:rgba(255,255,255,0.22); }
.lb-nav { position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,0.12); border:none; color:#fff; font-size:22px; cursor:pointer; border-radius:50%; width:52px; height:52px; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(6px); transition:background .2s; }
.lb-nav:hover { background:rgba(255,255,255,0.22); }
.lb-nav-prev { left:18px; }
.lb-nav-next { right:18px; }
.lb-img { max-width:90vw; max-height:80vh; border-radius:12px; object-fit:contain; box-shadow:0 8px 48px rgba(0,0,0,0.6); }
.lb-caption { color:rgba(255,255,255,0.88); font-size:14px; margin-top:14px; text-align:center; max-width:600px; padding:0 1rem; }
.lb-counter { color:rgba(255,255,255,0.45); font-size:12px; margin-top:5px; }
.photo-count-badge { background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.22); border-radius:20px; padding:5px 14px; font-size:13px; font-weight:700; color:#fff; }
.photo-count-badge i { margin-right:5px; color:var(--accent-color); }

/* ── biblioteca-buscar ── */
.bib-search-hero-inner { max-width:800px; margin:0 auto; padding:0 24px; position:relative; z-index:2; text-align:center; }
.bib-search-hero-nav { font-size:13px; margin-bottom:20px; display:flex; align-items:center; justify-content:center; gap:6px; flex-wrap:wrap; }
.breadcrumb-icon-sep { font-size:9px; opacity:0.40; }
.bib-search-icon-wrap { width:52px; height:52px; border-radius:14px; background:rgba(255,255,255,0.15); display:flex; align-items:center; justify-content:center; margin:0 auto 16px; backdrop-filter:blur(8px); }
.bib-search-icon-wrap i { font-size:22px; color:var(--accent-color); }
.bib-search-title { font-family:'Playfair Display',serif; font-size:32px; font-weight:800; margin:0 0 8px; text-shadow:0 2px 12px rgba(0,0,0,0.3); color:#fff; }
.bib-search-subtitle { color:rgba(255,255,255,0.65); font-size:14px; margin:0 0 28px; }
.bib-search-box { display:flex; gap:10px; background:rgba(255,255,255,0.10); border:1px solid rgba(255,255,255,0.20); border-radius:14px; padding:6px 6px 6px 18px; backdrop-filter:blur(8px); }
.bib-search-box > i { color:rgba(255,255,255,0.45); align-self:center; font-size:14px; flex-shrink:0; }
.bib-search-input { flex:1; background:transparent; border:none; color:#fff; font-size:15px; outline:none; padding:8px 4px; }
.bib-search-input::placeholder { color:rgba(255,255,255,0.5); }
.bib-search-btn { padding:12px 26px; background:var(--accent-color); color:#fff; border:none; border-radius:10px; font-weight:700; font-size:14px; cursor:pointer; white-space:nowrap; flex-shrink:0; transition:opacity .2s; }
.bib-search-btn:hover { opacity:.88; }
.bib-search-count { color:rgba(255,255,255,0.65); font-size:13px; margin:14px 0 0; }
.bib-buscar-section { background:#f0f4f8; padding:40px 20px 72px; min-height:50vh; }
.bib-filter-box { background:#fff; border-radius:16px; overflow:hidden; box-shadow:0 4px 16px rgba(0,0,0,0.08); margin-bottom:14px; }
.bib-filter-head { background:linear-gradient(135deg,#001a42,#003270); padding:11px 15px; display:flex; align-items:center; gap:8px; }
.bib-filter-head i { color:var(--accent-color); font-size:11px; }
.bib-filter-title { color:#fff; font-weight:700; font-size:13px; }
.bib-filter-body { padding:13px 15px; }
.bib-filter-body-col { padding:13px 15px; display:flex; flex-direction:column; gap:8px; }
.bib-filter-input { width:100%; padding:9px 12px; border:2px solid #e2e8f0; border-radius:8px; font-size:13px; outline:none; box-sizing:border-box; transition:border-color .2s; font-family:inherit; background:#fff; color:#374151; }
.bib-filter-input:focus { border-color:var(--primary-color); }
.year-range-row { display:flex; gap:8px; align-items:center; }
.year-range-sep { color:#9ca3af; font-size:12px; }
.year-input-half { width:50%; padding:8px 10px; border:2px solid #e2e8f0; border-radius:8px; font-size:13px; outline:none; box-sizing:border-box; transition:border-color .2s; }
.year-input-half:focus { border-color:var(--primary-color); }
.filter-check-label { display:flex; align-items:center; gap:10px; cursor:pointer; font-size:13px; font-weight:600; color:#374151; }
.filter-checkbox { width:16px; height:16px; accent-color:#dc2626; cursor:pointer; }
.bib-filter-submit { width:100%; padding:11px; background:linear-gradient(135deg,var(--primary-color),#0369a1); color:#fff; border:none; border-radius:10px; font-size:13px; font-weight:700; cursor:pointer; margin-bottom:8px; box-shadow:0 4px 12px rgba(0,64,128,0.25); transition:opacity .2s; }
.bib-filter-submit:hover { opacity:.88; }
.bib-filter-clear { display:block; text-align:center; padding:10px; border:2px solid #e2e8f0; border-radius:10px; font-size:13px; font-weight:700; color:#6b7280; text-decoration:none; transition:all .2s; }
.bib-filter-clear:hover { border-color:#9ca3af; }
.bib-filter-back-wrap { margin-top:16px; text-align:center; }
.bib-filter-back-link { display:inline-flex; align-items:center; gap:5px; font-size:13px; color:var(--primary-color); text-decoration:none; font-weight:700; }
.bib-filter-back-link i { font-size:10px; }

/* ── preinscripcion form ── */
.preinsc-banner { background:linear-gradient(135deg,var(--primary-color) 0%,#002a54 100%); color:#fff; padding:30px 20px; }
.preinsc-banner-nav { font-size:13px; opacity:0.75; margin-bottom:12px; }
.preinsc-banner-sep { margin:0 8px; color:rgba(255,255,255,.5); }
.preinsc-banner-current { background:rgba(255,255,255,.18); color:#fff; padding:2px 12px; border-radius:10px; font-weight:700; }
.preinsc-banner-icon { width:52px; height:52px; border-radius:13px; background:rgba(255,255,255,.15); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.preinsc-banner-icon i { font-size:24px; color:#fff; }
.preinsc-banner-title { font-size:22px; font-weight:800; margin:0 0 4px; font-family:'Playfair Display',serif; }
.preinsc-banner-prog { margin:0; font-size:14px; opacity:.85; }
.preinsc-body { background:#f7f8fc; padding:2.5rem 20px 4rem; }
.preinsc-notice { background:#fffbeb; border:1px solid #fcd34d; border-radius:12px; padding:16px 20px; margin-bottom:24px; display:flex; gap:14px; align-items:flex-start; }
.preinsc-notice-icon { color:#d97706; font-size:22px; flex-shrink:0; margin-top:2px; }
.preinsc-notice-text { font-size:14px; color:#78350f; line-height:1.7; }
.preinsc-errors { background:#fef2f2; border:1px solid #fca5a5; border-radius:10px; padding:14px 18px; margin-bottom:20px; }
.preinsc-errors-title { font-weight:700; color:#b91c1c; margin:0 0 8px; font-size:14px; }
.preinsc-errors-list { margin:0; padding-left:20px; color:#b91c1c; font-size:13px; }
.form-section { background:#fff; border-radius:14px; box-shadow:0 2px 12px rgba(0,0,0,.07); margin-bottom:1.5rem; overflow:hidden; }
.form-section-head { padding:18px 24px; display:flex; align-items:center; gap:12px; border-bottom:1px solid #f0f4f8; color:#fff; }
.form-section-icon { width:36px; height:36px; border-radius:9px; background:rgba(255,255,255,.2); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.form-section-icon i { font-size:16px; color:#fff; }
.form-section-title { font-size:16px; font-weight:800; margin:0 0 2px; color:#fff; }
.form-section-sub { font-size:12px; opacity:.85; margin:0; color:#fff; }
.form-section-body { padding:24px; }
.form-input { width:100%; padding:10px 14px; border:2px solid #e2e8f0; border-radius:8px; font-size:14px; color:#374151; box-sizing:border-box; outline:none; transition:border-color .2s; font-family:inherit; }
.form-input:focus { border-color:var(--primary-color); }
.form-input-error { border-color:#fca5a5 !important; background:#fff5f5; }
.form-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
.form-req-star { color:#dc2626; }
.preinsc-footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; padding:4px 0 0; }
.preinsc-back-btn { display:inline-flex; align-items:center; gap:8px; background:#f1f5f9; color:#374151; padding:12px 22px; border-radius:8px; font-size:14px; font-weight:600; text-decoration:none; }
.preinsc-privacy { font-size:12px; color:#9ca3af; margin:0; max-width:300px; line-height:1.5; }
.preinsc-submit-wrap { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.preinsc-submit { display:inline-flex; align-items:center; gap:8px; background:var(--primary-color); color:#fff; padding:13px 30px; border-radius:8px; font-size:15px; font-weight:700; border:none; cursor:pointer; transition:opacity .2s; }
.preinsc-submit:hover { opacity:.88; }
.fsh-blue1  { background:linear-gradient(135deg,var(--primary-color) 0%,#002a54 100%); }
.fsh-blue2  { background:linear-gradient(135deg,#0f4c81 0%,#1565c0 100%); }
.fsh-green  { background:linear-gradient(135deg,#1b5e20 0%,#2e7d32 100%); }

/* ── contacto page ── */
.contact-info-card   { align-items:flex-start !important; padding:1.6rem 1.5rem; }
.contact-icon-btn    { width:44px; height:44px; border-radius:10px; flex-shrink:0; font-size:18px; display:flex; align-items:center; justify-content:center; }
.contact-icon-btn i  { color:#fff; }
.contact-info-heading { font-size:.95rem; font-weight:700; margin:0 0 .6rem; color:var(--primary-color); }
.contact-info-row    { font-size:.85rem; margin:0 0 .35rem; color:#555; }
.contact-info-row:last-child { margin-bottom:0; }
.ci-map   { width:14px; color:#ea580c; }
.ci-phone { width:14px; color:#16a34a; }
.ci-mail  { width:14px; color:#3b82f6; }
.contact-panel       { padding:2.5rem 2rem; justify-content:space-between; }
.contact-panel-text  { font-size:.88rem; color:rgba(255,255,255,.8); line-height:1.7; margin:0 0 2rem; }
.contact-panel-icon  { width:36px; height:36px; border-radius:8px; background:rgba(255,255,255,.15); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.contact-panel-icon i { font-size:15px; color:#fff; }
.contact-panel-slot-lbl { font-size:.78rem; color:rgba(255,255,255,.65); margin:0; }
.contact-panel-slot-val { font-size:.85rem; color:#fff; font-weight:600; margin:0; }
.contact-panel-footer   { margin-top:2.5rem; padding-top:1.5rem; border-top:1px solid rgba(255,255,255,.15); }
.contact-panel-footer-sub  { font-size:.78rem; color:rgba(255,255,255,.55); margin:0; }
.contact-panel-footer-name { font-size:.82rem; color:rgba(255,255,255,.8); font-weight:600; margin:.2rem 0 0; }
.contact-form-body { padding:2.5rem 2.5rem; }
.contact-alert-mb  { margin-bottom:1.5rem; }
.form-label        { display:block; font-size:.83rem; font-weight:700; color:#374151; margin-bottom:.4rem; }
.form-label-req    { color:#e53935; }
.form-label-opt    { font-size:.78rem; font-weight:400; color:#9ca3af; }
.form-submit-btn   { border:none; cursor:pointer; font-size:.95rem; font-weight:700; padding:.8rem 2rem; }
.wa-link           { color:inherit; text-decoration:none; }
.contact-wa-row    { font-size:.85rem; margin:0; font-weight:600; color:#16a34a; }

/* ── home page utilities ── */
.slide-overlay { position:absolute; inset:0; background:rgba(0,0,0,0.45); pointer-events:none; }
.section-head-centered    { text-align:center; margin-bottom:48px; }
.section-head-centered-sm { text-align:center; margin-bottom:40px; }
.home-stat-card-inner { background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.15); border-radius:18px; padding:32px 24px; text-align:center; backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); }
.home-stat-icon { width:56px; height:56px; border-radius:14px; display:flex; align-items:center; justify-content:center; margin:0 auto 16px; box-shadow:0 4px 14px rgba(0,0,0,0.28); }
.home-stat-icon i { font-size:24px; color:#fff; }
.home-stat-num { font-size:40px; font-weight:800; color:#fff; margin:0 0 6px; line-height:1; display:inline-block; }
.home-stat-lbl { font-size:13px; color:rgba(255,255,255,0.72); margin:0; line-height:1.4; }
.home-card-base      { display:flex; flex-direction:column; text-decoration:none; color:inherit; background:#fff; border-radius:20px; overflow:hidden; border:2px solid #f1f5f9; box-shadow:0 4px 20px rgba(0,0,0,0.08); }
.home-card-base-gray { display:flex; flex-direction:column; text-decoration:none; color:inherit; background:#f8fafc; border-radius:20px; overflow:hidden; border:2px solid #f1f5f9; box-shadow:0 4px 20px rgba(0,0,0,0.07); }
.home-card-bar  { height:5px; }
.home-card-body { padding:28px 24px 26px; flex:1; display:flex; flex-direction:column; }
.home-card-icon { width:56px; height:56px; border-radius:14px; display:flex; align-items:center; justify-content:center; margin-bottom:18px; box-shadow:0 4px 14px rgba(0,0,0,0.18); }
.home-card-icon i { font-size:24px; color:#fff; }
.home-card-heading    { font-size:20px; font-weight:800; color:var(--primary-color); margin:0 0 10px; font-family:'Playfair Display',serif; }
.home-card-heading-sm { font-size:18px; font-weight:800; color:var(--primary-color); margin:0 0 10px; font-family:'Playfair Display',serif; }
.home-card-desc { font-size:14px; color:#6b7280; line-height:1.65; margin:0 0 22px; flex:1; }
.home-card-btn  { display:inline-flex; align-items:center; gap:6px; color:#fff; padding:10px 20px; border-radius:8px; font-size:13px; font-weight:700; align-self:flex-start; box-shadow:0 3px 12px rgba(0,0,0,0.15); }
.home-defensa-card   { display:flex; flex-direction:column; text-decoration:none; color:inherit; background:#fff; border-radius:16px; overflow:hidden; border:2px solid #f1f5f9; box-shadow:0 4px 16px rgba(0,0,0,0.07); }
.home-defensa-header { height:100px; background:linear-gradient(135deg,#001a42,#003270); display:flex; align-items:center; justify-content:center; position:relative; flex-shrink:0; }
.home-defensa-date  { text-align:center; color:#fff; }
.home-defensa-day   { font-size:32px; font-weight:800; line-height:1; }
.home-defensa-month { font-size:11px; text-transform:uppercase; opacity:.85; letter-spacing:.5px; }
.home-defensa-time  { font-size:10px; opacity:.75; margin-top:2px; }
.home-defensa-badge         { position:absolute; top:8px; right:8px; color:#fff; font-size:9px; font-weight:800; padding:2px 7px; border-radius:20px; }
.home-defensa-badge-today   { background:#dc2626; }
.home-defensa-badge-mañana  { background:#ea580c; }
.home-defensa-badge-days    { background:rgba(255,255,255,0.20); }
.home-defensa-body  { flex:1; display:flex; flex-direction:column; padding:14px 16px 16px; }
.home-defensa-level { background:rgba(0,64,128,0.08); color:var(--primary-color); font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; padding:2px 8px; border-radius:20px; margin-bottom:8px; display:inline-block; width:fit-content; }
.home-defensa-student { font-size:12px; margin:0 0 5px; color:#6b7280; display:flex; align-items:center; gap:4px; }
.home-defensa-student i, .home-defensa-loc i { font-size:10px; }
.home-defensa-title { font-size:14px; font-weight:700; color:var(--primary-color); line-height:1.4; margin:0 0 8px; flex:1; }
.home-defensa-loc   { font-size:11px; margin:0 0 8px; color:#6b7280; display:flex; align-items:center; gap:4px; }
.home-defensa-link  { display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:var(--primary-color); margin-top:auto; }
.home-defensa-link i { font-size:9px; }
.home-news-card      { display:flex; flex-direction:column; text-decoration:none; color:inherit; background:#fff; border-radius:20px; overflow:hidden; border:2px solid #f1f5f9; box-shadow:0 4px 18px rgba(0,0,0,0.07); }
.home-news-img-wrap  { height:180px; overflow:hidden; flex-shrink:0; }
.home-news-img       { width:100%; height:180px; object-fit:cover; display:block; transition:transform .4s; }
.home-news-body      { padding:18px 20px 20px; display:flex; flex-direction:column; flex:1; }
.home-news-date      { display:flex; align-items:center; gap:6px; margin-bottom:10px; }
.home-news-date-icon { width:20px; height:20px; border-radius:5px; background:#eff6ff; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.home-news-date-icon i { font-size:9px; color:#3b82f6; }
.home-news-date-text { font-size:12px; color:#6b7280; }
.home-news-heading  { font-size:16px; font-weight:700; color:var(--primary-color); margin:0 0 8px; line-height:1.45; font-family:'Playfair Display',serif; flex:1; }
.home-news-excerpt  { font-size:13px; color:#6b7280; line-height:1.65; margin:0 0 14px; }
.home-news-readmore { display:inline-flex; align-items:center; gap:5px; font-size:13px; font-weight:700; color:var(--primary-color); margin-top:auto; }
.home-news-readmore i { font-size:10px; }

/* ── biblioteca-show utilities ── */
.page-hero-pad-bib { padding: 48px 0 44px; }
.hero-pattern-overlay { position:absolute; inset:0; opacity:.04; background:repeating-linear-gradient(45deg,#fff 0,#fff 1px,transparent 0,transparent 50%) 0/20px 20px; pointer-events:none; }
.stat-pill-glass { display:flex; align-items:center; gap:5px; background:rgba(255,255,255,0.12); border:1px solid rgba(255,255,255,0.22); border-radius:20px; padding:3px 11px; backdrop-filter:blur(6px); }
.stat-pill-red   { display:flex; align-items:center; gap:5px; background:rgba(220,38,38,0.55); border:1px solid rgba(255,255,255,0.2); border-radius:20px; padding:3px 11px; backdrop-filter:blur(6px); }
.stat-pill-glass i, .stat-pill-red i { font-size:11px; }
.ficha-item { display:flex; align-items:center; gap:12px; padding:13px 15px; background:#f8fafc; border-radius:12px; border:1px solid #e2e8f0; }
.ficha-item-icon { width:34px; height:34px; border-radius:8px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.ficha-item-icon i { font-size:13px; }
.ficha-item-body { min-width:0; }
.ficha-item-label { font-size:10px; text-transform:uppercase; letter-spacing:.7px; color:#94a3b8; margin-bottom:2px; font-weight:700; }
.ficha-item-val { font-size:13px; font-weight:700; color:#1e293b; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ficha-item-val-mono { font-size:13px; font-weight:700; color:#1e293b; font-family:monospace; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.card-bar-purple { height:5px; background:linear-gradient(90deg,#8b5cf6,#a78bfa); }
.bib-cover-wrap { background:#f8fafc; display:flex; align-items:center; justify-content:center; overflow:hidden; padding:12px; }
.bib-cover-wrap img { max-width:100%; max-height:320px; object-fit:contain; display:block; border-radius:8px; }
.bib-cover-placeholder { height:220px; display:flex; align-items:center; justify-content:center; }
.bib-cover-placeholder i { opacity:.22; }
.bib-acceso-back { border-top:1px solid #f1f5f9; padding-top:10px; margin-top:2px; }
.bib-back-to-cat { display:flex; align-items:center; justify-content:center; gap:6px; font-size:12px; color:#64748b; text-decoration:none; padding:6px 0; transition:color .2s; }
.bib-back-to-cat:hover { color:var(--primary-color); }
.btn-w-full { width:100%; justify-content:center; box-sizing:border-box; }
.btn-bare { border:none; cursor:pointer; }
.bib-rel-link { display:flex; gap:12px; align-items:center; padding:12px 14px; border-radius:12px; text-decoration:none; border:2px solid #e2e8f0; transition:all .2s; background:#f8fafc; margin-bottom:8px; }
.bib-rel-img { width:44px; height:56px; object-fit:cover; border-radius:7px; flex-shrink:0; }
.bib-rel-icon { width:44px; height:56px; border-radius:7px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.bib-rel-icon i { font-size:18px; }
.bib-rel-body { min-width:0; }
.bib-rel-title { font-size:13px; font-weight:700; color:var(--primary-color); line-height:1.35; margin-bottom:3px; }
.bib-rel-author { font-size:11px; color:#9ca3af; margin:0; }
.modal-close-btn { background:rgba(255,255,255,0.15); border:none; border-radius:8px; width:36px; height:36px; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:16px; color:#fff; }
.modal-title-text { font-size:14px; font-weight:700; color:#fff; max-width:500px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ── biblioteca-catalogo ── */
.cat-subnav { background:#fff; border-bottom:2px solid #f0f0f0; position:sticky; top:100px; z-index:100; padding:0 20px; }
.cat-subnav-inner { overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; }
.cat-subnav-back { display:inline-flex; align-items:center; gap:6px; padding:14px 18px; font-size:13px; font-weight:700; text-decoration:none; white-space:nowrap; border-bottom:3px solid transparent; transition:all .2s; color:inherit; }
.cat-subnav-back:hover { color:var(--primary-color); }
.cat-subnav-cat-link { display:inline-flex; align-items:center; gap:6px; padding:14px 18px; font-size:13px; font-weight:700; text-decoration:none; white-space:nowrap; border-bottom:3px solid transparent; transition:all .2s; }
.cat-count-badge { border-radius:10px; padding:1px 7px; font-size:11px; }
.cat-empty { text-align:center; padding:80px 20px; color:#888; }
.cat-empty i { font-size:56px; display:block; margin-bottom:16px; color:#ddd; }
.cat-empty p { font-size:16px; }
.cat-empty a { color:var(--primary-color); font-weight:700; }
.cat-content-wrap { padding:40px 20px 60px; }
.cat-section { margin-bottom:60px; scroll-margin-top:120px; }
.cat-section-head { display:flex; align-items:center; gap:14px; margin-bottom:24px; padding-bottom:16px; }
.cat-section-icon { width:48px; height:48px; border-radius:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.cat-section-icon i { font-size:22px; }
.cat-section-title { font-size:22px; font-weight:800; color:var(--primary-color); margin:0; font-family:'Playfair Display',serif; }
.cat-section-count { font-size:13px; color:#888; margin:0; }
.bib-catalog-card { background:#fff; border-radius:14px; overflow:hidden; box-shadow:0 2px 12px rgba(0,0,0,0.08); cursor:pointer; display:flex; flex-direction:column; }
.bib-catalog-card-bar { height:6px; }
.bib-catalog-card-img { height:110px; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.bib-catalog-card-img img { width:100%; height:100%; object-fit:cover; }
.bib-catalog-card-img i { font-size:42px; opacity:0.3; }
.bib-catalog-card-body { padding:14px 16px; flex:1; display:flex; flex-direction:column; gap:5px; }
.bib-catalog-card-title { font-size:14px; font-weight:700; color:var(--primary-color); margin:0; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.bib-catalog-card-author { font-size:12px; color:#555; margin:0; display:flex; align-items:center; gap:4px; }
.bib-catalog-card-author i { font-size:10px; color:#aaa; }
.bib-catalog-card-year { font-size:11px; color:#888; margin:0; }
.bib-catalog-card-year i { font-size:10px; }
.bib-catalog-card-footer { padding:10px 16px 14px; border-top:1px solid #f0f0f0; display:flex; align-items:center; justify-content:space-between; }
.bib-catalog-card-cta { font-size:12px; color:var(--accent-color); font-weight:600; display:flex; align-items:center; gap:4px; }
.bib-pdf-badge { font-size:11px; color:#166534; background:#dcfce7; padding:2px 8px; border-radius:8px; font-weight:600; display:flex; align-items:center; gap:3px; }
.bib-modal-overlay { display:none; position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,0.58); backdrop-filter:blur(3px); align-items:center; justify-content:center; padding:16px; }
.bib-modal-box { background:#fff; border-radius:18px; width:100%; max-width:720px; max-height:90vh; overflow-y:auto; position:relative; box-shadow:0 20px 60px rgba(0,0,0,0.35); }
.bib-modal-header { padding:22px 24px 18px; border-bottom:2px solid #f0f0f0; display:flex; gap:16px; align-items:flex-start; position:sticky; top:0; background:#fff; z-index:2; border-radius:18px 18px 0 0; }
.bib-modal-icon { width:52px; height:52px; border-radius:12px; display:flex; align-items:center; justify-content:center; flex-shrink:0; font-size:22px; }
.bib-modal-badge { display:inline-block; font-size:10px; font-weight:700; padding:2px 10px; border-radius:10px; margin-bottom:6px; text-transform:uppercase; letter-spacing:.5px; }
.bib-modal-title-text { font-size:20px; font-weight:800; color:var(--primary-color); margin:0; line-height:1.3; font-family:'Playfair Display',serif; }
.bib-modal-close { width:36px; height:36px; border-radius:50%; border:none; background:#f3f4f6; color:#555; font-size:16px; cursor:pointer; display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:background .2s; }
.bib-modal-close:hover { background:#e5e7eb; }
.bib-modal-body { padding:24px; }
.bib-modal-img-wrap { display:none; margin-bottom:20px; border-radius:10px; overflow:hidden; max-height:220px; }
.bib-modal-img { width:100%; height:220px; object-fit:cover; }
.bib-modal-desc-wrap { display:none; margin-bottom:20px; }
.bib-modal-pdf-wrap { display:none; margin-bottom:20px; }
.bib-modal-section-title { font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:#888; margin:0 0 8px; }
.bib-modal-section-title-pdf { font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:#888; margin:0 0 10px; display:flex; align-items:center; gap:6px; }
.bib-modal-desc-text { font-size:14px; color:#444; line-height:1.7; margin:0; padding:14px 16px; background:#f8f9fc; border-radius:10px; border-left:3px solid var(--primary-color); }
.bib-modal-iframe { width:100%; height:420px; border:1px solid #e5e7eb; border-radius:10px; }
.bib-modal-actions { display:flex; gap:10px; flex-wrap:wrap; }
.bib-meta-box { background:#f8f9fc; border-radius:8px; padding:10px 12px; }
.bib-meta-box-label { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:#aaa; margin-bottom:3px; }
.bib-meta-box-val { font-size:13px; font-weight:600; color:#333; }
.bib-action-btn-red { display:inline-flex; align-items:center; gap:7px; background:#dc2626; color:#fff; padding:10px 20px; border-radius:8px; font-size:13px; font-weight:700; text-decoration:none; }
.bib-action-btn-accent { display:inline-flex; align-items:center; gap:7px; background:var(--accent-color); color:#fff; padding:10px 20px; border-radius:8px; font-size:13px; font-weight:700; text-decoration:none; }
.bib-action-btn-primary { display:inline-flex; align-items:center; gap:7px; background:var(--primary-color); color:#fff; padding:10px 20px; border-radius:8px; font-size:13px; font-weight:700; text-decoration:none; }

/* ── cursos-show ── */
.card-dark-hd { padding:18px 22px; }
.card-dark-label { color:#fff; font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; }
.curso-hero-pad { padding:28px 0 44px; }
.rich-content-intro { font-size:16px; font-style:italic; color:#374151; }
.keywords-border { margin-bottom:20px; padding-bottom:20px; border-bottom:2px solid #f1f5f9; }
.ficha-row { display:flex; align-items:flex-start; gap:12px; padding:14px 0; }
.ficha-row + .ficha-row { border-top:1px solid #f1f5f9; }
.ficha-val { font-size:14px; margin:0; line-height:1.4; }
.curso-related-card { text-decoration:none; background:#f8fafc; border-radius:14px; overflow:hidden; display:flex; flex-direction:column; border:2px solid #e2e8f0; transition:all .22s; }
.curso-related-card:hover { border-color:var(--primary-color); transform:translateY(-4px); box-shadow:0 8px 24px rgba(0,40,100,0.13); }
.curso-related-img-wrap { height:130px; overflow:hidden; flex-shrink:0; position:relative; }
.curso-related-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.curso-related-card:hover .curso-related-img-wrap img { transform:scale(1.05); }
.curso-related-body { padding:14px 16px 18px; flex:1; display:flex; flex-direction:column; }
.curso-related-title { font-size:14px; font-weight:700; color:var(--primary-color); line-height:1.4; margin:0 0 6px; flex:1; }
.curso-related-duration { font-size:11px; color:#6b7280; margin:0 0 8px; display:flex; align-items:center; gap:4px; }
.curso-related-duration i { font-size:9px; }
.curso-related-cta { display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:var(--primary-color); margin-top:auto; }
.curso-related-cta i { font-size:9px; }

/* ── biblioteca (main) ── */
.bib-search-box { align-items:center; }
.bib-tab { padding:14px 20px; font-size:13px; font-weight:700; border:none; background:none; cursor:pointer; border-bottom:3px solid transparent; color:#9ca3af; margin-bottom:-2px; white-space:nowrap; transition:all .2s; }
.bib-tab.active { border-bottom-color:var(--primary-color); color:var(--primary-color); }
.bib-tabs-bar { display:flex; border-bottom:2px solid #f1f5f9; padding:0 24px; gap:0; overflow-x:auto; scrollbar-width:none; }
.bib-panels-body { padding:28px; }
.bib-featured-header-icon { width:44px; height:44px; border-radius:10px; background:rgba(255,255,255,0.15); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.bib-featured-subtitle { font-size:12px; color:rgba(255,255,255,0.60); margin:3px 0 0; }
.bib-home-quick-links { display:flex; align-items:center; flex-wrap:wrap; gap:20px; margin-top:16px; justify-content:center; }
.bib-home-quick-link { font-size:13px; display:flex; align-items:center; gap:8px; }
.bib-home-quick-link i { font-size:11px; }
.bib-collections-count { color:#6b7280; font-size:15px; margin:0; }
.bib-cat-card { background:#fff; border-radius:20px; overflow:hidden; text-decoration:none; box-shadow:0 4px 20px rgba(0,0,0,0.08); border:2px solid transparent; transition:transform .3s,box-shadow .3s,border-color .3s; }
.bib-cat-card:hover { transform:translateY(-8px); box-shadow:0 20px 48px rgba(0,64,128,0.16); }
.bib-cat-disabled { opacity:0.45; pointer-events:none; }
.bib-cat-card-icon-zone { padding:32px 20px 24px; text-align:center; }
.bib-cat-card-icon-box { width:72px; height:72px; border-radius:18px; background:#fff; display:flex; align-items:center; justify-content:center; margin:0 auto 14px; box-shadow:0 4px 16px rgba(0,0,0,0.10); }
.bib-cat-card-icon-box i { font-size:30px; }
.bib-cat-card-label { font-family:'Playfair Display',serif; font-size:17px; font-weight:800; color:#1e293b; margin:0; }
.bib-cat-card-count-zone { padding:16px 20px; text-align:center; }
.bib-cat-card-num { font-size:30px; font-weight:900; line-height:1; }
.bib-cat-card-num-lbl { font-size:13px; color:#9ca3af; display:block; margin-top:2px; }
.bib-cat-card-explore { display:inline-flex; align-items:center; gap:5px; margin-top:10px; font-size:12px; font-weight:700; }
.bib-cat-card-explore i { font-size:10px; }
.bib-empty-state { text-align:center; padding:60px 20px; color:#9ca3af; }
.bib-empty-state > i { font-size:42px; display:block; margin-bottom:14px; color:#d1d5db; }
.bib-empty-state p { font-size:15px; margin:0; }

/* ── proyectos-show ── */
.ficha-border-item { display:flex; align-items:flex-start; gap:12px; padding-top:14px; border-top:1px solid #f1f5f9; }
.proyecto-related-card { text-decoration:none; background:#f8fafc; border-radius:14px; overflow:hidden; display:flex; flex-direction:column; border:2px solid #e2e8f0; transition:all .22s; }
.proyecto-related-card:hover { border-color:var(--primary-color); transform:translateY(-4px); box-shadow:0 8px 24px rgba(0,40,100,0.13); }
.proyecto-related-img-wrap { height:140px; overflow:hidden; flex-shrink:0; position:relative; }
.proyecto-related-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .4s; }
.proyecto-related-card:hover .proyecto-related-img-wrap img { transform:scale(1.05); }

/* ── biblioteca-buscar-grid ── */
.bib-result-list { display:flex; flex-direction:column; gap:12px; margin-bottom:36px; }
.bib-result-item { background:#fff; border-radius:14px; padding:16px 20px; display:flex; gap:16px; align-items:flex-start; text-decoration:none; border:2px solid #f1f5f9; transition:transform .25s,box-shadow .25s,border-color .25s; }
.bib-result-thumb { width:52px; height:66px; object-fit:cover; border-radius:8px; flex-shrink:0; }
.bib-result-icon { width:52px; height:66px; border-radius:8px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.bib-result-icon i { font-size:22px; }
.bib-result-header { display:flex; align-items:center; gap:6px; margin-bottom:5px; flex-wrap:wrap; }
.bib-result-cat { font-size:10px; padding:2px 10px; border-radius:10px; font-weight:700; display:flex; align-items:center; gap:4px; }
.bib-result-cat-dot { width:5px; height:5px; border-radius:50%; flex-shrink:0; }
.bib-result-pdf-badge { background:#fff5f5; color:#dc2626; font-size:10px; padding:2px 7px; border-radius:6px; font-weight:700; border:1px solid #fecaca; }
.bib-result-year { font-size:11px; color:#9ca3af; font-weight:600; }
.bib-result-title { font-size:15px; font-weight:700; color:var(--primary-color); margin:0 0 4px; line-height:1.4; }
.bib-result-author { font-size:12px; color:#6b7280; margin:0 0 5px; display:flex; align-items:center; gap:5px; }
.bib-result-author i { font-size:10px; color:#9ca3af; }
.bib-result-desc { font-size:12px; color:#9ca3af; margin:0; line-height:1.5; }
.bib-result-arrow { font-size:13px; flex-shrink:0; margin-top:4px; }
.bib-pagination { display:flex; justify-content:center; }
.bib-filters-active { background:#fff; border-radius:12px; padding:12px 16px; margin-bottom:20px; box-shadow:0 2px 10px rgba(0,0,0,0.06); display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; border-left:4px solid var(--primary-color); }
.bib-filters-chips { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.bib-chip { padding:3px 10px; border-radius:12px; font-weight:700; font-size:12px; display:inline-flex; align-items:center; gap:4px; }
.bib-chip i { font-size:9px; }
.bib-chip-blue   { background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; }
.bib-chip-yellow { background:#fef9c3; color:#854d0e; border:1px solid #fde047; }
.bib-chip-green  { background:#f0fdf4; color:#166534; border:1px solid #86efac; }
.bib-chip-red    { background:#fff5f5; color:#dc2626; border:1px solid #fecaca; }
.bib-chip-purple { background:#faf5ff; color:#6b21a8; border:1px solid #d8b4fe; }
.bib-chip-count  { color:#9ca3af; font-size:12px; margin-left:4px; }
.bib-clear-link  { color:#ef4444; font-size:12px; font-weight:700; text-decoration:none; display:flex; align-items:center; gap:4px; }
.bib-empty-card  { background:#fff; border-radius:20px; box-shadow:0 4px 20px rgba(0,0,0,0.08); }
.bib-empty-clear { display:inline-flex; align-items:center; gap:6px; color:var(--primary-color); font-weight:700; font-size:13px; text-decoration:none; }
.bib-empty-clear i { font-size:10px; }

/* ── descargas/index ── */
.dsc-subnav { background:#fff; border-bottom:1px solid #e2e8f0; position:sticky; top:100px; z-index:10; box-shadow:0 2px 12px rgba(0,0,0,0.06); }
.dsc-subnav-scroll { display:flex; gap:0; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none; }
.dsc-subnav-tab { display:inline-flex; align-items:center; gap:7px; padding:14px 20px; font-size:13px; font-weight:700; color:#6b7280; white-space:nowrap; text-decoration:none; border-bottom:3px solid transparent; transition:all .2s; }
.dsc-subnav-tab i { font-size:12px; }
.dsc-count-badge { background:#f0f4f8; color:var(--primary-color); border-radius:10px; padding:1px 8px; font-size:11px; font-weight:700; }
.dsc-cat-section { margin-bottom:36px; scroll-margin-top:162px; }
.dsc-cat-header { padding:20px 28px; }
.dsc-cat-title { font-family:'Playfair Display',serif; font-size:18px; font-weight:800; color:#fff; margin:0; line-height:1.2; }
.dsc-doc-list { padding:8px 0; }
.dsc-doc-item { display:flex; align-items:center; gap:16px; padding:16px 24px; transition:background .2s; }
.dsc-doc-item:hover { background:#fafbff; }
.dsc-doc-icon { flex-shrink:0; width:50px; height:50px; border-radius:12px; display:flex; align-items:center; justify-content:center; }
.dsc-doc-icon i { font-size:22px; }
.dsc-doc-title { font-size:15px; font-weight:700; color:var(--primary-color); margin:0 0 4px; line-height:1.35; }
.dsc-doc-desc { font-size:13px; color:#6b7280; margin:0 0 6px; line-height:1.5; }
.dsc-meta-row { display:flex; align-items:center; gap:14px; flex-wrap:wrap; font-size:11px; color:#9ca3af; }
.dsc-meta-icon { width:16px; height:16px; border-radius:4px; background:#f0f4f8; display:inline-flex; align-items:center; justify-content:center; }
.dsc-meta-icon i { font-size:8px; color:#6b7280; }
.dsc-doc-download { flex-shrink:0; }
.dsc-doc-soon { display:inline-flex; align-items:center; gap:7px; background:#f3f4f6; color:#9ca3af; padding:10px 18px; border-radius:10px; font-size:13px; font-weight:700; white-space:nowrap; }

/* ── aulavirtual ── */
.av-cta-inner { max-width:780px; margin:0 auto; text-align:center; }
.av-cta-icon { width:72px; height:72px; border-radius:18px; background:rgba(255,255,255,0.15); display:flex; align-items:center; justify-content:center; margin:0 auto 20px; box-shadow:0 4px 18px rgba(0,0,0,0.25); }
.av-cta-icon i { font-size:32px; color:#fff; }
.av-cta-title { font-size:28px; font-weight:800; color:#fff; margin:0 0 14px; font-family:'Playfair Display',serif; }
.av-cta-text { font-size:16px; color:rgba(255,255,255,0.82); line-height:1.75; margin:0 auto 32px; max-width:640px; }
.av-cta-btn { display:inline-flex; align-items:center; gap:12px; background:var(--accent-color); color:#fff; padding:16px 44px; border-radius:10px; font-size:18px; font-weight:800; text-decoration:none; box-shadow:0 6px 24px rgba(0,0,0,0.30); transition:transform .2s,box-shadow .2s; }
.av-cta-btn:hover { transform:translateY(-3px); box-shadow:0 12px 36px rgba(0,0,0,0.38); color:#fff; }
.av-cta-hint { font-size:13px; color:rgba(255,255,255,0.55); margin-top:12px; }
.av-no-url-box { background:rgba(255,255,255,0.10); border:1px solid rgba(255,255,255,0.20); border-radius:12px; padding:20px 28px; display:inline-block; backdrop-filter:blur(8px); }
.av-no-url-text { color:rgba(255,255,255,0.85); font-size:14px; }
.av-feature-card { background:#fff; border-radius:18px; padding:28px 22px 26px; border:2px solid #f1f5f9; box-shadow:0 4px 18px rgba(0,0,0,0.07); text-align:center; transition:transform .3s,box-shadow .3s; }
.av-feature-card:hover { transform:translateY(-6px); box-shadow:0 16px 40px rgba(0,64,128,0.13); }
.av-feature-icon { width:60px; height:60px; border-radius:15px; background:linear-gradient(135deg,var(--primary-color),#0369a1); display:flex; align-items:center; justify-content:center; margin:0 auto 16px; box-shadow:0 4px 14px rgba(0,64,128,0.25); }
.av-feature-icon i { font-size:26px; color:#fff; }
.av-feature-title { font-size:15px; font-weight:700; color:var(--primary-color); margin:0 0 8px; line-height:1.3; font-family:'Playfair Display',serif; }
.av-feature-desc { font-size:13px; color:#6b7280; line-height:1.6; margin:0; }
.av-support-header { background:linear-gradient(135deg,#16a34a,#4ade80); padding:20px 24px; display:flex; align-items:center; gap:12px; }
.av-support-icon { width:40px; height:40px; border-radius:10px; background:rgba(255,255,255,0.20); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.av-support-icon i { font-size:18px; color:#fff; }
.av-support-title { font-size:16px; font-weight:700; color:#fff; margin:0; font-family:'Playfair Display',serif; }
.av-support-body { padding:22px 24px; }
.av-support-text { font-size:14px; color:#374151; line-height:1.65; margin:0 0 20px; }
.av-schedule { background:#f0f4f8; border-radius:16px; padding:18px 22px; margin-top:20px; border:2px solid #e2e8f0; }
.av-schedule-title { font-size:13px; font-weight:700; color:var(--primary-color); margin:0 0 12px; text-transform:uppercase; letter-spacing:.5px; }
.av-schedule-rows { display:flex; flex-direction:column; gap:6px; font-size:13px; color:#374151; }
.av-schedule-row { display:flex; justify-content:space-between; }
.steps-list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:14px; }
.step-item { display:flex; align-items:flex-start; gap:14px; }
.step-text { font-size:14px; color:#374151; line-height:1.65; margin:0; padding-top:3px; }
.border-b-light { border-bottom:1px solid #f8fafc; }

/* ── nosotros ── */
.nos-deco-corner { position:absolute; bottom:-18px; right:-18px; width:120px; height:120px; border-radius:16px; background:var(--accent-color); opacity:0.12; z-index:-1; pointer-events:none; }
.nos-text-body { font-size:16px; color:#4b5563; line-height:1.9; margin:0 0 32px; }
.nos-hist-left { text-align:center; flex-shrink:0; }
.nos-year { display:block; font-size:30px; font-weight:900; color:var(--accent-color); line-height:1; letter-spacing:-1px; }
.nos-year-lbl { display:block; font-size:10px; color:rgba(255,255,255,0.50); text-transform:uppercase; letter-spacing:1px; margin-top:5px; }
.nos-hist-text { font-size:16px; color:rgba(255,255,255,0.85); line-height:1.9; margin:0; }
.nos-card-text { font-size:15px; color:#4b5563; line-height:1.85; margin:0; }

/* ── related cards (noticias, eventos) ── */
.noticia-rel-img-wrap { height:160px; overflow:hidden; flex-shrink:0; position:relative; }
.evento-rel-img-wrap  { height:150px; overflow:hidden; flex-shrink:0; position:relative; }
.rel-card-body  { flex:1; display:flex; flex-direction:column; padding:14px 16px 16px; }
.rel-card-date  { font-size:11px; color:#94a3b8; margin-bottom:6px; display:flex; align-items:center; gap:4px; }
.rel-card-title { font-size:14px; font-weight:700; color:var(--primary-color); line-height:1.4; margin:0 0 10px; flex:1; }
.rel-card-cta   { display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:var(--primary-color); margin-top:auto; }
.evento-rel-card { display:flex; flex-direction:column; background:#fff; border-radius:16px; overflow:hidden; border:2px solid #f1f5f9; box-shadow:0 3px 14px rgba(0,0,0,0.07); transition:transform .3s,box-shadow .3s,border-color .3s; text-decoration:none; color:inherit; }
.evento-rel-card:hover { transform:translateY(-6px); box-shadow:0 16px 40px rgba(0,64,128,0.15); border-color:var(--primary-color); }
.evento-date-badge { position:absolute; bottom:0; right:0; background:linear-gradient(135deg,var(--primary-color),#0369a1); color:#fff; padding:6px 10px; border-radius:10px 0 0 0; text-align:center; min-width:46px; }
.evento-date-day   { font-size:17px; font-weight:800; line-height:1; }
.evento-date-month { font-size:9px; text-transform:uppercase; opacity:.88; }

/* ── autoridades ── */
.authority-status-dot { position:absolute; bottom:4px; right:4px; width:28px; height:28px; background:#22c55e; border-radius:50%; border:3px solid #001a42; }
.authority-bio-main { font-size:15px; color:rgba(255,255,255,0.82); line-height:1.75; margin:0 auto; max-width:540px; border-top:1px solid rgba(255,255,255,0.12); padding-top:20px; }
.authority-team-card { transition:transform .3s,box-shadow .3s; }
.authority-team-card:hover { transform:translateY(-8px); box-shadow:0 16px 40px rgba(0,64,128,0.18) !important; }
.authority-card-pad { padding:32px 24px; text-align:center; }
.authority-name-sm { font-size:17px; font-weight:800; color:var(--primary-color); margin:0 0 6px; line-height:1.3; }
.authority-bio-sm { font-size:13px; color:#6b7280; line-height:1.65; margin:0; border-top:1px solid #f1f5f9; padding-top:14px; }

/* ── busqueda ── */
.busqueda-hero-inner { position:relative; z-index:3; max-width:740px; width:100%; padding:0 20px; }
.busqueda-hero-icon  { font-size:54px; margin-bottom:20px; display:block; opacity:0.85; color:var(--accent-color); }
.busqueda-hero-title { font-size:48px; font-weight:800; margin:0 0 14px; font-family:'Playfair Display',serif; text-shadow:0 2px 12px rgba(0,0,0,0.45); line-height:1.15; }
.busqueda-hero-sub   { font-size:18px; opacity:0.88; margin:0 auto 32px; text-shadow:0 1px 6px rgba(0,0,0,0.3); max-width:580px; line-height:1.7; }
.busqueda-form  { display:flex; gap:0; max-width:600px; margin:0 auto; box-shadow:0 8px 40px rgba(0,0,0,0.35); border-radius:14px; overflow:hidden; }
.busqueda-input { flex:1; padding:18px 24px; font-size:16px; border:none; border-radius:0; outline:none; color:#1f2937; }
.busqueda-btn   { background:var(--accent-color); color:#fff; border:none; padding:0 32px; font-size:15px; font-weight:700; cursor:pointer; white-space:nowrap; display:flex; align-items:center; gap:8px; transition:opacity .2s; }
.busqueda-btn:hover { opacity:.88; }
.busqueda-divider { width:60px; height:4px; background:var(--accent-color); border-radius:2px; margin:32px auto 0; }
.busqueda-short-msg { text-align:center; padding:48px 20px; color:#9ca3af; font-size:15px; margin:0; }
.busqueda-empty-hd  { text-align:center; padding:48px 20px 0; }
.busqueda-empty-text { font-size:16px; color:#6b7280; margin-bottom:32px; font-weight:500; }
.busqueda-link-card { display:flex; flex-direction:column; align-items:center; gap:12px; padding:28px 16px; background:#fff; border-radius:16px; box-shadow:0 4px 20px rgba(0,0,0,0.07); text-decoration:none; color:#1f2937; font-weight:700; font-size:14px; border:2px solid transparent; transition:all .2s; }
.busqueda-link-card:hover { transform:translateY(-4px); }
.busqueda-link-icon { width:52px; height:52px; border-radius:14px; display:flex; align-items:center; justify-content:center; }
.busqueda-link-icon i { font-size:22px; }

/* ── layouts/app global ── */
.footer-admin-link { font-size:11px; color:rgba(255,255,255,0.35); text-decoration:none; transition:color .2s; display:inline-flex; align-items:center; gap:4px; }
.footer-admin-link:hover { color:rgba(255,255,255,0.7); }
.wa-fab { position:fixed; bottom:24px; right:24px; z-index:9999; width:58px; height:58px; border-radius:50%; background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 4px 16px rgba(37,211,102,.55); text-decoration:none; transition:transform .2s,box-shadow .2s; }
.wa-fab:hover { transform:scale(1.12); box-shadow:0 6px 24px rgba(37,211,102,.7); }
.wa-fab i { font-size:30px; line-height:1; }

/* ── programas/detalle ── */
.program-img-wrap { overflow:hidden; max-height:420px; }
.body-sm { font-size:14px; color:#555; }
.module-title { font-size:14px; font-weight:700; color:#1a2c4e; margin:0 0 6px; line-height:1.3; }
.btn-cta-lg { display:flex; justify-content:center; padding:16px; border-radius:14px; font-size:15px; font-weight:800; text-align:center; }
.btn-cta-sm { display:flex; justify-content:center; padding:13px; border-radius:12px; font-size:14px; font-weight:700; text-align:center; }
.related-card-img-wrap { height:140px; position:relative; overflow:hidden; flex-shrink:0; }

/* ── defensas/show ── */
.detail-sub-text { font-weight:400; font-size:12px; color:#6b7280; }
.defensa-rel-title { font-size:13px; font-weight:700; color:var(--primary-color); line-height:1.4; margin:0 0 8px; flex:1; }

/* ── revista-show ── */
.revista-cover-img-wrap { background:#eef2f8; max-height:340px; min-height:200px; }
.revista-meta-row { font-size:13px; opacity:0.85; }
.btn-full-reset { border:none; cursor:pointer; width:100%; }
.btn-full-width { width:100%; box-sizing:border-box; justify-content:center; }
.revista-repo-link { color:#475569; padding:10px 16px; border-radius:10px; font-size:13px; font-weight:700; text-decoration:none; width:100%; box-sizing:border-box; display:flex; align-items:center; gap:8px; transition:all .2s; }
.revista-repo-link:hover { background:#f1f5f9; }
.revista-back-link { color:#9ca3af; font-size:12px; text-decoration:none; padding:6px 0; justify-content:center; }
.share-btn-flex { flex:1; min-width:90px; justify-content:center; }
.card-bordered-pad { padding:14px 16px; }
.articulos-wrap { margin-top:48px; }
.articulos-header { border-radius:20px 20px 0 0; padding:24px 32px; }
.articulos-header-h2 { margin:0; line-height:1.2; }
.articulos-list { border-radius:0 0 20px 20px; box-shadow:0 8px 32px rgba(0,26,66,0.12); }
.doi-link { color:var(--primary-color); text-decoration:none; font-weight:600; }
.art-keywords { color:#94a3b8; font-style:italic; font-size:11px; }
.blockquote-preline { white-space:pre-line; }
.pdf-modal { position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,0.75); align-items:center; justify-content:center; padding:20px; }
.pdf-modal-inner { width:100%; max-width:900px; max-height:90vh; box-shadow:0 24px 64px rgba(0,0,0,0.45); }
.pdf-modal-header { padding:18px 24px; flex-shrink:0; }
.pdf-modal-title { font-size:15px; font-weight:700; color:#fff; max-width:500px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pdf-download-btn { display:inline-flex; align-items:center; gap:6px; background:var(--accent-color); color:#fff; padding:8px 16px; border-radius:8px; font-size:12px; font-weight:700; text-decoration:none; }
.pdf-close-btn { background:rgba(255,255,255,0.15); border:none; border-radius:8px; width:36px; height:36px; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:16px; color:#fff; }
.pdf-frame-wrap { flex:1; overflow:hidden; min-height:500px; }
.pdf-iframe { width:100%; height:100%; border:none; min-height:500px; }
.related-editions-pad { margin-top:40px; padding-bottom:40px; }
.related-cover-h150 { height:150px; flex-shrink:0; }
.related-year-meta { display:flex; align-items:center; gap:4px; font-size:11px; color:#94a3b8; margin-bottom:6px; }
.badge-abs-tr { position:absolute; top:10px; right:10px; font-size:11px; }

/* ── docentes/show ── */
.docente-hero-pad { padding:36px 0 44px; }
.docente-avatar-container { flex-shrink:0; position:relative; }
.contact-link-primary { color:var(--primary-color); font-size:13px; word-break:break-all; text-decoration:none; font-weight:500; }
.info-link { color:#374151; font-size:13px; text-decoration:none; }
.contact-pad { padding:20px 22px; gap:14px; }
.btn-cv-dl { justify-content:center; padding:10px; border-radius:10px; font-size:13px; }
.num-circle-purple { background:#7c3aed; margin-top:1px; }
.pub-title { font-weight:700; color:#1a2c4e; margin:0 0 5px; line-height:1.4; font-size:14px; }
.pub-link { color:#1a2c4e; text-decoration:none; }
.pub-meta { font-size:12px; color:#6b7280; margin:0; }
.docente-rel-body { min-width:0; flex:1; }
.docente-rel-name { font-weight:700; font-size:14px; margin:0 0 3px; color:var(--primary-color); line-height:1.3; }
.docente-rel-area { font-size:11px; color:#6b7280; margin:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ── revista (index) ── */
.revista-h2-fancy { font-family:'Playfair Display',serif; font-size:32px; font-weight:800; color:var(--primary-color); margin:0 0 10px; }
.revista-underline { width:60px; height:4px; background:var(--accent-color); border-radius:2px; margin:0 auto; }
.pdf-fallback { position:absolute; inset:0; background:#f8fafc; align-items:center; justify-content:center; flex-direction:column; gap:16px; text-align:center; padding:40px; }

/* ── biblioteca-show ── */
.bib-pdf-modal { position:fixed; inset:0; z-index:10000; background:rgba(0,0,0,0.78); backdrop-filter:blur(4px); align-items:center; justify-content:center; padding:16px; }
.bib-pdf-modal-inner { background:#fff; border-radius:20px; width:100%; max-width:920px; max-height:92vh; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 24px 64px rgba(0,0,0,0.45); }
.bib-pdf-iframe { flex:1; border:none; min-height:70vh; }
.flex-shrink-0 { flex-shrink:0; }

/* ── proyectos grid ── */
.proyecto-card { text-decoration:none; transition:transform .3s,box-shadow .3s; }
.proyecto-card:hover { transform:translateY(-8px); box-shadow:0 20px 48px rgba(0,64,128,0.16); }
.proyecto-card:hover .img-cover { transform:scale(1.05); }
.proyecto-card-img { height:210px; flex-shrink:0; }
.proyecto-card-body { padding:22px 24px 26px; flex:1; display:flex; flex-direction:column; }
.proyecto-date-meta { font-size:12px; color:#9ca3af; margin:0 0 8px; }
.proyecto-card-title { font-size:17px; font-weight:800; color:var(--primary-color); line-height:1.4; margin:0 0 10px; }
.proyecto-card-desc { font-size:14px; color:#6b7280; line-height:1.65; flex:1; margin:0 0 14px; }
.proyecto-responsible { margin-bottom:16px; padding:10px 12px; background:#f8fafc; border-radius:8px; border:1px solid #e2e8f0; }
.proyecto-card-link { display:inline-flex; margin-top:auto; color:var(--primary-color); font-size:13px; font-weight:700; align-items:center; gap:6px; }

/* ── preinscripcion/gracias ── */
.gracias-section { background:#f7f8fc; min-height:calc(100vh - 200px); display:flex; align-items:center; justify-content:center; padding:3rem 20px; }
.gracias-card { background:#fff; border-radius:16px; box-shadow:0 4px 24px rgba(0,0,0,.1); max-width:580px; width:100%; overflow:hidden; text-align:center; }
.gracias-card-header { background:linear-gradient(135deg,var(--primary-color) 0%,#002a54 100%); padding:40px 32px; color:#fff; }
.gracias-emoji { font-size:64px; margin-bottom:16px; }
.gracias-title { font-size:24px; font-weight:800; margin:0 0 8px; font-family:'Playfair Display',serif; }
.gracias-subtitle { margin:0; font-size:15px; opacity:.88; }
.gracias-card-body { padding:32px; }
.gracias-program-box { background:#f0fdf4; border:1px solid #86efac; border-radius:10px; padding:16px; margin-bottom:24px; }
.gracias-program-text { color:#166534; font-weight:600; font-size:15px; margin:0; }
.gracias-desc { font-size:15px; color:#374151; line-height:1.8; margin:0 0 20px; }
.gracias-steps { background:#fffbeb; border-radius:10px; padding:16px 18px; margin-bottom:24px; text-align:left; font-size:14px; color:#78350f; }
.gracias-steps ol { margin:8px 0 0 18px; padding:0; line-height:2; }
.gracias-actions { display:flex; flex-direction:column; gap:10px; }
.gracias-btn-primary { display:inline-flex; align-items:center; justify-content:center; gap:8px; background:var(--primary-color); color:#fff; padding:12px 24px; border-radius:8px; font-size:14px; font-weight:700; text-decoration:none; }
.gracias-btn-secondary { display:inline-flex; align-items:center; justify-content:center; gap:8px; background:#f1f5f9; color:#374151; padding:10px 24px; border-radius:8px; font-size:14px; font-weight:600; text-decoration:none; }

/* ── announcement modal ── */
@keyframes annFadeIn  { from { opacity:0 } to { opacity:1 } }
@keyframes annSlideUp { from { opacity:0; transform:translateY(24px) } to { opacity:1; transform:translateY(0) } }
.ann-backdrop { position:fixed; inset:0; z-index:99990; background:rgba(0,0,0,0.65); backdrop-filter:blur(3px); align-items:center; justify-content:center; padding:20px; animation:annFadeIn .25s ease; }
.ann-modal { background:#fff; border-radius:16px; width:100%; max-width:560px; box-shadow:0 32px 80px rgba(0,0,0,0.45),0 0 0 1px rgba(255,255,255,0.1); overflow:hidden; position:relative; animation:annSlideUp .3s ease; max-height:90vh; display:flex; flex-direction:column; }
.ann-header-bar { height:5px; background:linear-gradient(90deg,#004080 50%,#c41230 50%); flex-shrink:0; }
.ann-close-btn { position:absolute; top:12px; right:12px; z-index:10; width:32px; height:32px; border-radius:50%; border:none; background:rgba(0,0,0,0.12); color:#333; cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:16px; line-height:1; transition:background .15s; }
.ann-close-btn:hover { background:rgba(0,0,0,0.25); }
.ann-scroll { overflow-y:auto; flex:1; }
.ann-image-wrap { width:100%; overflow:hidden; flex-shrink:0; }
.ann-text-body { color:#1a1a1a; }
.ann-cta-wrap { text-align:center; flex-shrink:0; }
.ann-cta-link { display:inline-block; padding:12px 36px; border-radius:8px; color:#fff; font-size:14px; font-weight:700; text-decoration:none; letter-spacing:.3px; transition:opacity .15s; }
.ann-cta-link:hover { opacity:.85; }
.ann-dismiss-wrap { padding:0 28px 20px; text-align:center; }
.ann-dismiss-btn { background:none; border:none; color:#9ca3af; font-size:11px; cursor:pointer; text-decoration:underline; padding:0; }
.announcement-content { font-size:15px; line-height:1.7; color:#374151; }
.announcement-content h1,.announcement-content h2 { font-size:20px; font-weight:700; color:#003a76; margin:0 0 10px; }
.announcement-content h3 { font-size:16px; font-weight:700; color:#003a76; margin:0 0 8px; }
.announcement-content p { margin:0 0 10px; }
.announcement-content ul,.announcement-content ol { padding-left:20px; margin:0 0 10px; }
.announcement-content a { color:#004080; font-weight:600; }
.announcement-content strong { font-weight:700; }

/* ── busqueda-results ── */
.search-results-list { display:flex; flex-direction:column; gap:14px; }
.search-empty-icon { width:96px; height:96px; border-radius:50%; background:#f1f5f9; display:flex; align-items:center; justify-content:center; margin:0 auto 24px; }
.search-empty-title { font-size:22px; font-weight:800; color:#374151; margin-bottom:10px; }
.search-empty-text { font-size:15px; color:#6b7280; margin-bottom:28px; }
.search-empty-actions { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }

/* ── Responsive hero-layout ── */
@media (max-width: 640px) {
    .page-hero-pad, .page-hero-pad-lg { padding: 32px 16px; }
    .hero-title-xl { font-size: 24px; }
    .hero-title-lg { font-size: 20px; }
    .section-py-xl { padding: 48px 0; }
    .section-py-lg { padding: 36px 0; }
    .section-py-md { padding: 28px 0; }
    .section-light, .section-white { padding-top: 40px; padding-bottom: 52px; }
    .card-article-body { padding: 20px 20px 24px; }
}

/* ── Grids de cards relacionadas ── */
/* Las columnas se controlan desde PHP (repeat(N, minmax(0,1fr))) */
.related-auto-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px;
}

/* ── section-heading — centrar el divider ── */
.section-heading { text-align: center; margin-bottom: 48px; }
.section-heading h2 {
    font-family: 'Playfair Display', serif;
    font-size: 34px;
    font-weight: 800;
    color: var(--primary-color);
    margin: 0 0 14px;
}
.section-heading .hero-divider,
.section-heading .section-title-underline { margin-left: auto; margin-right: auto; display: block; }

/* ── Events grid ── */
.eventos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 24px;
}
.eventos-grid > .evento-card { max-width: 500px; }
