/* Estilos Generales y Reset */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: "Comic Neue", sans-serif;
    background-color: #f4f7f6;
    color: #333;
    margin: 0;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main {
    background-color: #e0f2f7;
}
/* ==========================================================================
   Estilos Generales del Header
   ========================================================================== */
.main-header {
    background-color: #42b2fc;
    color: white;
    padding: 0;
    width: 100%;
    box-sizing: border-box;
    position: relative;
    z-index: 100;
}

.header-content {
    width: 100%;
    background-color: #2c3e50;
    margin: 0 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 20px;
    height: 150px;
    align-content: stretch;
    flex-direction: row;
}

.logo img {
    height: 80px;
    display: block;
}

/* ==========================================================================
   Navegación Principal
   ========================================================================== */
.main-nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    align-items: center;
    height: 100%;
}

.main-nav ul li {
    position: relative;
    height: 100%;
    display: flex;
    align-items: center;
}

/* Enlaces de Navegación y Botón Principal del Dropdown */
.main-nav ul li > a, /* Enlaces normales */
.main-nav ul li.dropdown > a.dropdown-btn { /* Botón que dispara el dropdown */
    color: white;
    text-decoration: none;
    font-size: 1.40em;
    padding: 0 15px; /* Padding horizontal */
    display: flex;
    align-items: center;
    height: 100%;
    transition: background-color 0.3s ease, color 0.3s ease;
    cursor: pointer; /* Para indicar que es clickeable, especialmente el dropdown-btn */
}

/* Estado Hover y Active para enlaces y botón de dropdown */
.main-nav ul li > a:hover,
.main-nav ul li.dropdown > a.dropdown-btn:hover,
.main-nav ul li > a.active,
.main-nav ul li.dropdown > a.dropdown-btn.active {
    background-color: #2c3e50;
    color: #ecf0f1;
}

/* Ícono dentro del botón del dropdown */
.main-nav ul li.dropdown > a.dropdown-btn .fas {
    margin-left: 8px;
    font-size: 0.9em;
    transition: transform 0.3s ease; /* Para una pequeña animación del ícono si se desea */
}

/* Opcional: Rotar el ícono cuando el dropdown está abierto */
.main-nav ul li.dropdown > a.dropdown-btn[aria-expanded="true"] .fas {
    transform: rotate(180deg);
}


/* ==========================================================================
   Contenido del Dropdown
   ========================================================================== */
.main-nav .dropdown .dropdown-content {
    display: none; /* *** CRUCIAL: Oculto por defecto *** */
    position: absolute;
    top: 100%; /* Justo debajo del 'li.dropdown' */
    left: 0;
    background-color: #ffffff;
    min-width: 220px;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.15);
    z-index: 1001; /* Encima del header si es necesario, y de otros elementos de la página */
    border-radius: 0 0 5px 5px;
    border-top: 3px solid #3498db; /* Acento de color */
    overflow: hidden; /* Para que el border-radius se aplique bien a los hijos */
}

/* *** NUEVA REGLA: Mostrar el Dropdown cuando tiene la clase .show-dropdown (controlado por JS) *** */
.main-nav .dropdown .dropdown-content.show-dropdown {
    display: block;
}

/* Enlaces dentro del Dropdown */
.main-nav .dropdown-content a {
    color: #34495e;
    padding: 12px 18px;
    text-decoration: none;
    display: block;
    text-align: left;
    font-size: 0.95em;
    white-space: nowrap;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.main-nav .dropdown-content a:hover {
    background-color: #f0f0f0;
    color: #2980b9;
}

/* ==========================================================================
   Botón de Logout
   ========================================================================== */
.header-logout-button {
    background: none;
    border: none;
    color: white;
    font-family: inherit;
    font-size: 1.05em; /* Coincide con otros enlaces */
    font-weight: normal;
    cursor: pointer;
    padding: 0 15px; /* Coincide con otros enlaces */
    height: 100%;
    display: flex;
    align-items: center;
    transition: background-color 0.3s ease, color 0.3s ease;
}

.header-logout-button:hover {
    background-color: #2c3e50;
    color: #ecf0f1;
}

/* ==========================================================================
   Estilos Responsivos (para pantallas más pequeñas)
   ========================================================================== */
@media (max-width: 768px) {
    .header-content {
        flex-direction: column; /* Apila logo y nav */
        height: auto; /* Permite que la altura se ajuste al contenido apilado */
        padding-top: 10px;
        padding-bottom: 10px;
    }

    .logo {
        margin-bottom: 10px;
    }

    .main-nav ul {
        flex-direction: column; /* Apila los ítems del nav */
        width: 100%; /* Para que los ítems puedan usar width: 100% */
        height: auto; /* Altura se ajusta a los ítems */
    }

    .main-nav ul li {
        margin-left: 0; /* Quita margen izquierdo en modo columna */
        margin-bottom: 5px; /* Espacio vertical entre ítems */
        width: 100%;
        height: auto; /* Altura se ajusta al contenido del enlace */
    }
    
    .main-nav ul li:last-child {
        margin-bottom: 0;
    }

    .main-nav ul li > a,
    .main-nav ul li.dropdown > a.dropdown-btn {
        padding: 12px 15px; /* Ajusta padding para modo columna */
        justify-content: center; /* Centra el texto del enlace/botón */
        width: 100%; /* Para que ocupen todo el ancho del li */
        box-sizing: border-box; /* Para que el padding no aumente el ancho total */
        height: auto; /* Altura se ajusta al contenido */
    }

    .main-nav .dropdown .dropdown-content {
        position: static; /* Se comporta como un bloque normal, no flotante */
        width: 100%; /* Ocupa todo el ancho disponible */
        box-shadow: none;
        border-radius: 0;
        border-top: 1px solid #ddd; /* Separador sutil en lugar del borde de acento */
        background-color: #f1f1f1; /* Un color de fondo ligeramente diferente para el submenú */
        /* No necesita top, left, z-index en position: static */
        /* El display: none / block seguirá siendo controlado por .show-dropdown */
    }

    .main-nav .dropdown-content a {
        text-align: center; /* Centra los enlaces del dropdown en móvil */
        border-bottom: 1px solid #e0e0e0; /* Líneas separadoras */
    }
    .main-nav .dropdown-content a:last-child {
        border-bottom: none;
    }
}

/* Hero Section (Bienvenida y Buscador) */
.hero-section {
    text-align: center;
    padding: 60px 20px;
    background-color: #42b2fc; /* Azul claro */
}

.hero-text h1 {
    font-size: 2.8em;
    color: #2c3e50;
    margin-bottom: 30px;
}

.decorative-images {
    width: 100%;
}

.search-section {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: -5px;
}

.search-input {
    padding: 12px 20px;
    border: 2px solid #3498db; /* Azul */
    border-radius: 25px;
    width: 60%;
    max-width: 500px;
    font-size: 1.1em;
    outline: none;
    transition: border-color 0.3s ease;
}

.search-input:focus {
    border-color: #f39c12; /* Naranja al enfocar */
}

.search-button {
    background-color: #3498db; /* Azul */
    color: #fff;
    border: none;
    padding: 12px 25px;
    border-radius: 25px;
    cursor: pointer;
    font-size: 1.1em;
    transition: background-color 0.3s ease;
}

.search-button:hover {
    background-color: #2980b9; /* Azul más oscuro al hover */
}

.cloud-images {
    background: #42b2fc;
    height: 150px;
    width: 100%;
}

/* Ajustes generales para la sección de categorías/pestañas */
.categories-section {
    padding: 40px 20px;
    max-width: 90%; /* Ajusta el ancho para el contenedor de pestañas */
    margin: 0 auto 60px auto;
    text-align: center;
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08);
}

.levels-main-title { /* Puedes reutilizar este título si lo deseas para el conjunto de categorías */
    font-size: 2.5em;
    color: #2c3e50;
    margin-bottom: 50px;
    font-weight: 700;
    line-height: 1.2;
}

/* Estilos de la grilla de cards (anteriormente .levels-grid) */
.cards-grid {
    display: grid;
    /* Ajusta grid-template-columns para tener de 3 a 4 columnas por defecto, adaptable */
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 30px; /* Mantener el espaciado entre las cards */
    justify-content: center;
    padding: 20px; /* Añadir padding para que las cards no toquen los bordes de la pestaña */
}

/* Estilos de las cards individuales (anteriormente .level-item) */
.card-item {
    background-color: #ffffff;
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
    text-align: center;
    transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 20px;
    border: 1px solid #eee;
    width: 100%; /* Asegura que la card ocupe el espacio disponible en su columna */
}

.card-item:hover {
    transform: translateY(-12px);
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
}

.card-item a {
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    height: 100%;
    padding-top: 20px;
}

.card-item img {
    max-width: 85%; /* Mantiene el tamaño relativo de la imagen */
    height: 180px; /* Ajusta la altura de la imagen si es necesario, pero object-fit es clave */
    object-fit: cover; /* Esto recorta la imagen si es necesario para mantener la altura */
    display: block;
    margin-bottom: 20px;
    border-radius: 8px;
}

.card-title { /* Renombrado de .level-title a .card-title para generalizar */
    font-size: 1.4em;
    font-weight: 600;
    line-height: 1.4;
    margin: 0;
    color: #34495e;
    padding: 0 10px; /* Pequeño padding para el texto del título */
}

.card-description { /* Nuevo estilo para la descripción si la incluyes */
    font-size: 1em;
    color: #666;
    margin-top: 5px;
    padding: 0 10px;
}

/* Responsive adjustments for cards */
@media (max-width: 768px) {
    .cards-grid {
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        gap: 20px;
    }
    .card-item img {
        height: 150px;
    }
    .card-title {
        font-size: 1.2em;
    }
}
@media (max-width: 480px) {
    .cards-grid {
        grid-template-columns: 1fr; /* Una columna en pantallas muy pequeñas */
        gap: 15px;
    }
    .card-item img {
        height: 120px;
    }
    .card-title {
        font-size: 1.1em;
    }
}

/* Estilos de las pestañas (tab) y su contenido (tabcontent) */
.tab {
    overflow: hidden;
    /* Usamos un color que combine con el fondo de main o sea más neutro */
    background-color: #d6ecf3; /* Un azul claro un poco más oscuro que main, pero más claro que el header azul vibrante */
    border: 1px solid #cce8f0; /* Un borde sutil que combine */
    display: flex;
    justify-content: center;
    margin-bottom: 20px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}

.tab button {
    background-color: inherit; /* Hereda el color de .tab */
    border: none;
    outline: none;
    cursor: pointer;
    padding: 14px 20px;
    transition: 0.3s;
    font-size: 1.1em;
    font-weight: 600;
    color: #444; /* Un gris oscuro para el texto de las pestañas inactivas */
    flex-grow: 1;
    text-align: center;
    position: relative;
}

.tab button:hover {
    background-color: #c0e0eb; /* Un azul claro un poco más pronunciado al pasar el ratón */
    color: #2c3e50; /* Cambia el color del texto a un azul más oscuro al pasar el ratón */
}

.tab button.active {
    background-color: #e0f2f7; /* El mismo azul claro del main para la pestaña activa */
    color: #2c3e50; /* El azul oscuro del header para el texto activo */
    border-bottom: none;
    font-weight: 700; /* Un poco más de negrita para la pestaña activa */
}

.tab button.active::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px; /* Un poco más grueso para que se vea bien */
    background-color: #42b2fc; /* El azul vibrante de tu header para el indicador activo */
    animation: slideIn 0.3s forwards;
}

@keyframes slideIn {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
}

.tabcontent {
    display: none;
    border: 1px solid #cce8f0; /* Borde que combine con el de las pestañas */
    border-top: none;
    animation: fadeEffect 0.5s;
    border-radius: 0 0 8px 8px;
    min-height: 300px;
    background-color: #e0f2f7; /* Color de fondo del main para el contenido de la pestaña */
}

@keyframes fadeEffect {
    from {opacity: 0;}
    to {opacity: 1;}
}

/* Footer */
footer {
    background-color: #34495e;
    color: white;
    text-align: center;
    padding: 20px 0;
    margin-top: auto;
    width: 100%;
}

/* Media Queries para Responsividad */

/* Tablets y pantallas medianas */
@media (max-width: 992px) {
    .header-content {
        flex-direction: column;
        text-align: center;
    }
    .main-nav ul {
        margin-top: 15px;
        justify-content: center;
    }
    .main-nav ul li {
        margin: 0 15px;
    }

    .hero-text h1 {
        font-size: 2.2em;
    }
    .search-input {
        width: 80%;
    }

    .levels-grid {
        grid-template-columns: repeat(2, 1fr); /* 2 columnas en tablets */
        gap: 25px;
    }
    .levels-main-title {
        font-size: 2em;
        margin-bottom: 40px;
    }
    .level-item {
        padding-bottom: 15px;
    }
    .level-item img {
        margin-bottom: 15px;
    }
    .level-title {
        font-size: 1.2em;
    }
}

/* Móviles y pantallas pequeñas */
@media (max-width: 576px) {
    .header-content {
        padding: 0 15px;
    }
    .logo img {
        height: 40px;
    }
    .main-nav ul li {
        margin: 0 10px;
    }
    .main-nav ul li a {
        font-size: 0.9em;
    }

    .hero-section {
        padding: 40px 15px;
    }
    .hero-text h1 {
        font-size: 1.8em;
    }
    .search-section {
        flex-direction: column;
        align-items: center;
    }
    .search-input {
        width: 90%;
        max-width: 300px;
        margin-bottom: 10px;
    }
    .search-button {
        width: 90%;
        max-width: 300px;
    }

    .levels-section {
        padding: 25px 15px;
    }
    .levels-grid {
        grid-template-columns: 1fr; /* Una columna en pantallas muy pequeñas */
        gap: 20px;
    }
    .levels-main-title {
        font-size: 1.8em;
        margin-bottom: 30px;
    }
    .level-item {
        padding-bottom: 10px;
    }
    .level-item img {
        max-width: 70%;
        margin-bottom: 10px;
    }
    .level-title {
        font-size: 1.1em;
    }
    .cloud-images{
        display: none;
    }
}


/* Estilos para la página de Recursos y Cards de Libros */

.section-title-wrapper {
    text-align: center;
    padding: 60px 20px;
    background-color: #e0f2f7; /* Usar el azul claro de tu `main` */
    margin-bottom: 40px;
    border-radius: 8px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.page-title {
    font-size: 3em;
    color: #34495e; /* Un gris azulado, combina con los colores de tu header */
    margin: 0;
    font-weight: 700;
}


/* Contenedor de filtros */
.filter-container {
    text-align: center;
    margin: 20px auto 40px auto;
    padding: 20px;
    background-color: #d6ecf3; /* Un azul claro que combina con el tema */
    border: 1px solid #cce8f0;
    border-radius: 12px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 25px;
    flex-wrap: wrap;
    max-width: 90%;
}

.filter-container label {
    font-size: 1.2em;
    color: #2c3e50; /* Azul oscuro del header */
    font-weight: 600;
}

.filter-container select {
    padding: 12px 18px;
    border: 2px solid #aaddff;
    border-radius: 8px;
    font-size: 1.05em;
    background-color: white;
    cursor: pointer;
    min-width: 200px;
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.05);
    transition: all 0.3s ease;
}

.filter-container select:hover {
    border-color: #77ccff;
}

.filter-container select:focus {
    border-color: #42b2fc; /* Azul vibrante de tu header */
    outline: none;
    box-shadow: 0 0 0 3px rgba(66, 178, 252, 0.3); /* Sombra de foco con el azul vibrante */
}

/* Sección que contiene un grupo de módulos */
.resources-section {
    max-width: 90%;
    margin: 0 auto 60px auto; /* Centra y añade margen inferior */
    padding: 0; /* Sin padding en esta sección para que los módulos tengan su propio padding */
}

/* Estilo para cada sección de módulo (equivalente a .level-category-section) */
.module-category-section {
    margin: 60px 0; /* Margen vertical para separar las secciones de módulo */
    padding-top: 20px; /* Espacio para el anclaje del scroll */
    /* Eliminamos background-color, border-radius, box-shadow, padding para que sea como antes */
}

/* Título de cada grupo de módulo (equivalente a .category-title) */
.module-group-title {
    font-size: 2.2em;
    color: #2c3e50; /* Azul oscuro de tu header */
    text-align: center;
    margin-bottom: 40px;
    border-bottom: 4px solid #42b2fc; /* Línea decorativa con el azul vibrante de tu header */
    display: inline-block; /* Para que la línea se ajuste al texto */
    padding-bottom: 10px;
    font-weight: 600; /* Asegura un peso de fuente consistente */
}

/* Cuadrícula para los recursos (equivalente a .books-grid) */
.resources-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); /* Columnas flexibles */
    gap: 30px; /* Espacio entre tarjetas */
    justify-content: center; /* Centra las tarjetas si no llenan la fila completa */
}

/* Tarjeta individual de recurso (equivalente a .book-card) */
.resource-card {
    background-color: #fff;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    text-align: center;
    padding: 15px; /* Padding interno */
}

.resource-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
}

/* Enlace dentro de la tarjeta de recurso */
.resource-card a {
    text-decoration: none;
    color: inherit;
    display: block;
    height: 100%; /* Asegura que el área cliqueable ocupe toda la tarjeta */
}

/* Imagen de portada de la tarjeta de recurso */
.resource-card img {
    max-width: 100%;
    height: 280px; /* Altura fija, como antes */
    object-fit: cover;
    border-radius: 8px;
    margin-bottom: 15px;
    box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}

/* Título del recurso dentro de la tarjeta */
.resource-title {
    font-size: 1.3em;
    color: #34495e; /* Color de texto que combina con tu tema */
    margin-bottom: 8px;
    font-weight: 600;
}

/* Autor/Creador y Tipo de recurso */
.resource-author,
.resource-type {
    font-size: 0.9em;
    color: #777;
    margin-bottom: 0;
}

/* Mensaje de No Resultados */
#noResultsMessage {
    text-align: center;
    color: #e74c3c;
    font-size: 1.6em;
    margin-top: 60px;
    font-weight: bold;
}

/* Media Queries (ajustes responsive) - Mantén estos o modifícalos si lo necesitas */
@media (max-width: 768px) {
    .filter-container {
        flex-direction: column;
        gap: 15px;
        padding: 15px;
    }
    .filter-container select {
        min-width: unset;
        width: 90%;
    }
    .module-group-title {
        font-size: 2em;
    }
    .resources-grid {
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
        gap: 20px;
    }
    .resource-card img {
        height: 220px;
    }
    .resource-title {
        font-size: 1.2em;
    }
    .resource-author, .resource-type {
        font-size: 0.85em;
    }
    .module-category-section {
        margin: 40px 10px;
    }
}

@media (max-width: 480px) {
    .section-title-wrapper { /* Ajusta el padding para el título principal */
        padding: 30px 15px;
        margin-bottom: 30px;
    }
    .page-title {
        font-size: 2em; /* Hace el título de la página más pequeño */
    }
    .filter-container {
        padding: 15px 10px;
        gap: 10px;
        max-width: 95%; /* Un poco más de ancho en móviles muy pequeños */
    }
    .filter-container label {
        font-size: 1.1em;
    }
    .filter-container select {
        font-size: 1em;
        padding: 10px 15px;
        width: 100%; /* Ocupa todo el ancho disponible */
    }
    .module-category-section {
        margin: 30px 10px; /* Reduce aún más los márgenes */
    }
    .module-group-title { /* Anteriormente .category-title */
        font-size: 1.8em; /* Hace el título de la sección más pequeño */
        margin-bottom: 30px;
        padding-bottom: 8px;
        border-bottom-width: 3px; /* Línea un poco más delgada */
    }
    .resources-grid { /* Anteriormente .books-grid */
        grid-template-columns: 1fr; /* Una sola columna para los recursos */
        gap: 20px; /* Un poco más de espacio entre tarjetas en una columna */
    }
    .resource-card img { /* Anteriormente .book-card img */
        height: 200px; /* Reduce la altura de la imagen en móviles muy pequeños */
    }
    .resource-title {
        font-size: 1.1em;
    }
    .resource-author, .resource-type {
        font-size: 0.8em;
    }
    #noResultsMessage {
        font-size: 1.3em;
        margin-top: 40px;
    }
}

/* Estilos para la página de detalle del libro */
 .read-book-link {
    display: inline-block;
    background-color: #28a745; /* Un verde vibrante */
    color: white;
    padding: 12px 25px;
    border-radius: 5px;
    text-decoration: none;
    font-weight: bold;
    font-size: 1.1em;
    transition: background-color 0.3s ease, transform 0.2s ease;
    margin-top: 20px;
    text-align: center;
    border: none;
    cursor: pointer;
}

.read-book-link:hover {
    background-color: #218838;
    transform: translateY(-2px);
}
.read-book-link:active {
    transform: translateY(0);
}

/* Puedes quitar o modificar el estilo del botón original si no lo usas más */
.read-button {
        /* display: none; */ /* O elimínalo si no lo necesitas */
    background-color: #007bff; /* Color original del botón */
    color: white;
    padding: 12px 25px;
    border-radius: 5px;
    border: none;
    cursor: pointer;
    font-size: 1.1em;
    font-weight: bold;
    transition: background-color 0.3s ease;
    margin-top: 20px;
}

.read-button:hover {
    background-color: #0056b3;
}

/* Asegúrate de que el botón Volver también sea consistente */
.back-button {
    display: inline-block;
    background-color: #6c757d; /* Gris para volver */
    color: white;
    padding: 12px 25px;
    border-radius: 5px;
    text-decoration: none;
    font-weight: bold;
    font-size: 1.1em;
    transition: background-color 0.3s ease;
    margin-top: 20px;
    margin-left: 10px; /* Separación del botón de lectura */
}

.back-button:hover {
    background-color: #5a6268;
}

/* Estilos para la página de detalle del recurso (adaptados de tus estilos de libro) */
.book-detail-main { /* Renombrado de .book-detail-main a .resource-detail-main si decides cambiarlo en el HTML */
    max-width: 1000px;
    margin: 40px auto;
    padding: 20px;
}

.book-detail-container { /* Renombrado de .book-detail-container a .resource-detail-container si decides cambiarlo en el HTML */
    background-color: #fff;
    border-radius: 15px;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
    display: flex;
    flex-wrap: wrap;
    padding: 30px;
    gap: 30px;
    align-items: flex-start;
}

.book-cover img { /* Renombrado de .book-cover a .resource-cover si decides cambiarlo en el HTML */
    max-width: 300px;
    height: auto;
    border-radius: 10px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}

.book-info { /* Renombrado de .book-info a .resource-info si decides cambiarlo en el HTML */
    flex: 1;
    min-width: 280px;
}

.detail-title {
    font-size: 2.5em;
    color: #2c3e50;
    margin-bottom: 10px;
}

.detail-author,
.detail-level, /* Ahora también para módulo y categoría */
.detail-type,
.detail-keywords {
    font-size: 1.1em;
    color: #555;
    margin-bottom: 8px; /* Ajustado para más líneas */
}

.book-description h3 { /* Renombrado de .book-description a .resource-description si decides cambiarlo en el HTML */
    font-size: 1.4em;
    color: #34495e;
    margin-top: 20px;
    margin-bottom: 10px;
}

.book-description p { /* Renombrado de .book-description a .resource-description si decides cambiarlo en el HTML */
    font-size: 1em;
    line-height: 1.8;
    color: #666;
    margin-bottom: 25px;
}

/* Mensaje de no encontrado */
.no-book-found {
    text-align: center;
    padding: 50px;
    color: #e74c3c;
    font-size: 1.5em;
    font-weight: bold;
}

/* Media Queries para la página de detalle */
@media (max-width: 768px) {
    .book-detail-container {
        flex-direction: column;
        align-items: center;
        text-align: center;
    }
    .book-cover img {
        max-width: 250px;
        margin-bottom: 20px;
    }
    .book-info {
        min-width: unset;
        width: 100%;
    }
    .detail-title {
        font-size: 2em;
    }
    .read-book-link, .back-button { /* Usar la clase .read-book-link */
        width: 100%;
        margin-right: 0;
        margin-left: 0; /* Eliminar margen izquierdo en móvil */
        margin-bottom: 15px;
    }
}

/* Estilos para la página de Actividades */
.activities-main {
    max-width: 100%;
    margin: 0 auto;
}

.activities-container {
    display: grid;
    grid-template-columns: 1fr; /* Una columna por defecto */
    gap: 40px;
    padding-bottom: 60px; /* Espacio antes del footer */
}

.activity-card {
    background-color: #fff;
    border-radius: 15px;
    box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    padding: 25px;
    margin: 0 100px;
}

.activity-card img {
    max-width: 100%;
    height: auto;
    border-radius: 10px;
    margin-bottom: 20px;
}

.activity-title {
    font-size: 2em;
    color: #2c3e50;
    margin-bottom: 15px;
}

.activity-description {
    font-size: 1.1em;
    color: #555;
    line-height: 1.7;
    margin-bottom: 30px;
}

/* Estilos para la sección de Comentarios */
.comments-section {
    border-top: 1px solid #eee;
    padding-top: 25px;
    margin-top: 25px;
}

.comments-section h3 {
    font-size: 1.8em;
    color: #34495e;
    margin-bottom: 20px;
}

.comments-list {
    margin-bottom: 30px;
}

.comment-item {
    background-color: #f9f9f9;
    border-radius: 10px;
    padding: 15px 20px;
    margin-bottom: 15px;
    border: 1px solid #e0e0e0;
}

.comment-author {
    font-weight: bold;
    color: #34495e;
    font-size: 1.1em;
    margin-bottom: 5px;
}

.comment-text {
    color: #444;
    line-height: 1.6;
    margin-bottom: 10px;
}

.comment-reply-button {
    background: none;
    border: none;
    color: #3498db;
    cursor: pointer;
    font-size: 0.9em;
    text-decoration: underline;
    padding: 0;
    margin-right: 15px;
    transition: color 0.2s ease;
}

.comment-reply-button:hover {
    color: #2980b9;
}

.comment-date {
    font-size: 0.8em;
    color: #888;
}

.replies-list {
    margin-left: 30px; /* Indentación para las respuestas */
    border-left: 2px solid #ddd;
    padding-left: 15px;
    margin-top: 10px;
}

.reply-item {
    background-color: #f1f1f1;
    border-radius: 8px;
    padding: 10px 15px;
    margin-bottom: 10px;
    border: 1px solid #d0d0d0;
}

.reply-author {
    font-weight: bold;
    color: #2c3e50;
    font-size: 1em;
    margin-bottom: 3px;
}

.reply-text {
    color: #555;
    font-size: 0.95em;
    line-height: 1.5;
}

/* Estilos para el formulario de comentario */
.comment-form {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-top: 20px;
}

.comment-name-input,
.comment-text-input {
    padding: 12px 15px;
    border: 1px solid #ccc;
    border-radius: 8px;
    font-size: 1em;
    width: 100%;
    transition: border-color 0.3s ease;
}

.comment-name-input:focus,
.comment-text-input:focus {
    border-color: #3498db;
    outline: none;
}

.comment-text-input {
    min-height: 80px;
    resize: vertical; /* Permite redimensionar verticalmente */
}

.comment-form button[type="submit"] {
    background-color: #3498db;
    color: #fff;
    border: none;
    padding: 12px 25px;
    border-radius: 8px;
    font-size: 1.1em;
    cursor: pointer;
    transition: background-color 0.3s ease;
    align-self: flex-start; /* Alinea el botón a la izquierda */
}

.comment-form button[type="submit"]:hover {
    background-color: #2980b9;
}

/* Estilos para el formulario de respuesta (aparece al hacer clic en "Responder") */
.reply-form {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 10px;
    margin-left: 30px; /* Indentación como las respuestas */
    padding: 15px;
    background-color: #eef;
    border-radius: 8px;
    border: 1px solid #dcdcdc;
}

.reply-form input[type="text"],
.reply-form textarea {
    padding: 10px 12px;
    border: 1px solid #bbb;
    border-radius: 6px;
    font-size: 0.95em;
    width: 100%;
}

.reply-form button[type="submit"] {
    background-color: #f39c12;
    color: #fff;
    border: none;
    padding: 10px 20px;
    border-radius: 6px;
    font-size: 1em;
    cursor: pointer;
    transition: background-color 0.3s ease;
    align-self: flex-start;
}

.reply-form button[type="submit"]:hover {
    background-color: #e67e22;
}

/* Media Queries para actividades y comentarios */
@media (max-width: 768px) {
    .activity-title {
        font-size: 1.8em;
    }
    .activity-description {
        font-size: 1em;
    }
    .comments-section h3 {
        font-size: 1.5em;
    }
    .comment-item, .reply-item {
        padding: 12px 15px;
    }
    .comment-author, .reply-author {
        font-size: 1em;
    }
    .comments-list {
        margin-left: 15px;
    }
    .replies-list {
        margin-left: 15px;
        padding-left: 10px;
    }
    .reply-form {
        margin-left: 15px;
        padding: 10px;
    }
    .comment-name-input, .comment-text-input,
    .reply-form input[type="text"], .reply-form textarea {
        font-size: 0.9em;
    }
    .comment-form button[type="submit"],
    .reply-form button[type="submit"] {
        padding: 10px 20px;
        font-size: 1em;
    }
}


/* --- Estilos para la sección de comentarios en actividades.php --- */

.comments-section {
    margin-top: 30px;
    border-top: 1px solid #eee;
    padding-top: 20px;
}

.comments-section h3 {
    font-size: 1.5em;
    color: #333;
    margin-bottom: 20px;
    text-align: center;
}

.comments-list {
    margin-top: 20px;
}

.comment-item {
    background-color: #f9f9f9;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 15px;
    margin-bottom: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.comment-author {
    font-weight: bold;
    color: #333;
    margin-bottom: 5px;
}

.comment-text {
    color: #555;
    line-height: 1.6;
    margin-bottom: 10px;
    white-space: pre-wrap; /* Mantiene saltos de línea del textarea */
}

.comment-date {
    font-size: 0.85em;
    color: #888;
    display: block; /* Para que ocupe su propia línea */
    margin-bottom: 10px;
}

.comment-reply-button {
    background-color: #007bff;
    color: white;
    border: none;
    padding: 8px 15px;
    border-radius: 5px;
    cursor: pointer;
    font-size: 0.9em;
    transition: background-color 0.3s ease;
}

.comment-reply-button:hover {
    background-color: #0056b3;
}

/* Estilos para las respuestas */
.replies-list {
    margin-top: 15px;
    padding-left: 30px; /* Indentación para las respuestas */
    border-left: 3px solid #cfe2ff; /* Una línea para indicar que son respuestas */
}

.reply-item {
    background-color: #e9f5ff; /* Color de fondo ligeramente diferente */
    border: 1px solid #b0d8ff;
    border-radius: 8px;
    padding: 10px 15px;
    margin-bottom: 10px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.03);
}

.reply-author {
    font-weight: bold;
    color: #333;
    font-size: 0.95em;
    margin-bottom: 3px;
}

.reply-text {
    color: #555;
    line-height: 1.5;
    font-size: 0.9em;
    white-space: pre-wrap;
}

/* Estilos para los formularios de comentarios */
.comment-form, .reply-form-dynamic {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 20px;
    padding: 20px;
    background-color: #f0f0f0;
    border-radius: 8px;
    border: 1px solid #ddd;
}

.comment-form input[type="text"],
.comment-form textarea,
.reply-form-dynamic input[type="text"],
.reply-form-dynamic textarea {
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    font-size: 1em;
    width: calc(100% - 22px); /* Ajuste para el padding y borde */
}

.comment-form textarea,
.reply-form-dynamic textarea {
    min-height: 80px;
    resize: vertical; /* Permite redimensionar verticalmente */
}

.comment-form button,
.reply-form-dynamic button {
    background-color: #28a745;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    font-size: 1em;
    transition: background-color 0.3s ease;
    align-self: flex-end; /* Alinea el botón a la derecha */
}

.comment-form button:hover,
.reply-form-dynamic button:hover {
    background-color: #218838;
}

/* Estilos específicos para el formulario de respuesta dinámico */
.reply-form-dynamic {
    margin-left: 20px; /* Ligeramente indentado */
    margin-top: 10px;
    margin-bottom: 20px;
    background-color: #f8f8f8;
    border: 1px dashed #cceeff; /* Borde punteado para diferenciar */
}

.reply-form-dynamic .reply-name-input,
.reply-form-dynamic .reply-text-input {
    width: 100%; /* Ajustar al 100% del contenedor del formulario */
}

/* --- Estilos para la Carga de Archivos en Comentarios --- */

/* Contenedor del input de archivo personalizado */
.comment-file-input-wrapper {
    position: relative;
    overflow: hidden;
    display: flex; /* Para alinear el botón y el texto */
    align-items: center; /* Centrar verticalmente */
    border: 1px solid #ddd; /* Borde más suave */
    background-color: #f0f0f0; /* Fondo ligeramente gris */
    padding: 5px; /* Relleno general del contenedor */
    border-radius: 5px; /* Bordes redondeados */
    cursor: pointer;
    margin-top: 10px; /* Espacio superior */
    margin-bottom: 15px; /* Espacio inferior */
    box-shadow: 0 1px 3px rgba(0,0,0,0.1); /* Sutil sombra */
    transition: all 0.3s ease; /* Transición suave en hover */
}

.comment-file-input-wrapper:hover {
    background-color: #e8e8e8;
    border-color: #c0c0c0;
}

/* El input de archivo real (oculto) */
.comment-file-input-wrapper input[type="file"] {
    position: absolute;
    left: 0;
    top: 0;
    opacity: 0; /* Lo hacemos invisible */
    width: 100%;
    height: 100%;
    cursor: pointer;
    z-index: 1; /* Asegura que esté por encima del botón simulado */
}

/* Estilo para el botón que simula el input file */
.fake-file-button {
    background-color: #007bff; /* Color azul primario */
    color: white;
    padding: 8px 15px;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-size: 0.9em;
    font-weight: bold;
    transition: background-color 0.2s ease; /* Transición suave */
    z-index: 0; /* Asegura que esté debajo del input real pero visible */
}

.fake-file-button:hover {
    background-color: #0056b3; /* Azul más oscuro en hover */
}

/* Texto que muestra el nombre del archivo seleccionado */
.comment-file-input-text {
    flex-grow: 1; /* Permite que ocupe el espacio restante */
    margin-left: 10px;
    font-style: italic;
    color: #555; /* Color de texto más oscuro */
    white-space: nowrap; /* Evita que el texto se rompa */
    overflow: hidden; /* Oculta el desbordamiento si el nombre es muy largo */
    text-overflow: ellipsis; /* Añade puntos suspensivos si el texto se desborda */
    font-size: 0.9em;
}

/* --- Estilos para el Enlace de Archivo Adjunto en Comentarios --- */

.comment-attachment, .reply-attachment {
    margin-top: 5px;
    margin-bottom: 5px; /* Pequeño espacio para separar de otros elementos */
    font-size: 0.9em; /* Tamaño de fuente ligeramente más pequeño */
}

.comment-attachment a, .reply-attachment a {
    display: inline-flex; /* Permite alinear icono y texto */
    align-items: center; /* Centra verticalmente los elementos */
    text-decoration: none;
    color: #28a745; /* Color verde para el enlace de descarga */
    background-color: #e6f7ed; /* Fondo suave para resaltar */
    border: 1px solid #c2e6d0; /* Borde sutil */
    padding: 6px 12px;
    border-radius: 5px;
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

.comment-attachment a:hover, .reply-attachment a:hover {
    background-color: #d4edda; /* Fondo más oscuro en hover */
    border-color: #aed6b4;
}

.comment-attachment a i, .reply-attachment a i {
    margin-right: 7px; /* Espacio entre el icono y el texto */
    font-size: 1.1em; /* Tamaño del icono un poco más grande */
    color: #1e8449; /* Color del icono ligeramente más oscuro */
}

/* --- Estilos para el botón de Descarga de Material Adicional en Actividades --- */

.download-button {
    display: inline-flex; /* Permite alinear el icono y el texto */
    align-items: center; /* Centra verticalmente el contenido */
    background-color: #28a745; /* Un color verde atractivo (puedes cambiarlo) */
    color: white; /* Texto en blanco */
    padding: 10px 20px; /* Relleno del botón */
    border: none; /* Sin borde */
    border-radius: 5px; /* Bordes redondeados */
    text-decoration: none; /* Quitar el subrayado del enlace */
    font-weight: bold; /* Texto en negrita */
    font-size: 1em; /* Tamaño de fuente */
    transition: background-color 0.3s ease, transform 0.2s ease; /* Transiciones suaves */
    margin-top: 10px 0; /* Espacio superior para separarlo del texto */
    box-shadow: 0 2px 5px rgba(0,0,0,0.2); /* Sombra sutil para profundidad */
}

.download-button:hover {
    background-color: #218838; /* Color verde más oscuro en hover */
    transform: translateY(-1px); /* Efecto de "levantamiento" en hover */
}

.download-button:active {
    background-color: #1e7e34; /* Color aún más oscuro al hacer clic */
    transform: translateY(0); /* Vuelve a la posición original */
    box-shadow: 0 1px 3px rgba(0,0,0,0.2); /* Sombra más pequeña al hacer clic */
}

/* Estilo para el icono dentro del botón */
.download-button i {
    margin-right: 10px; /* Espacio entre el icono y el texto */
    font-size: 1.1em; /* Tamaño del icono ligeramente más grande */
}