/* Estilos para la sección de filtrado */
.conflex1 {
    padding: 20px; /* Espaciado interno de la sección */
    background-color: #f8f9fa; /* Un color de fondo claro para la sección */
    border-radius: 8px;
    margin: 20px auto; /* Centra la sección y le da margen superior/inferior */
    max-width: 90%; /* Ancho máximo para que no sea demasiado largo en pantallas grandes */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sutil sombra */
}

/* Estilos para el formulario dentro de la sección */
.conflex1 form {
    justify-content: space-around; /* Centra los elementos horizontalmente en el contenedor */
    align-items: center; /* Alinea verticalmente los elementos del formulario */
    display: flex; /* Hacemos el formulario también un contenedor flex */
    gap: 15px; /* Espacio entre los elementos del formulario */
}

/* Estilos para los elementos del formulario */
.conflex1 label {
    font-weight: bold;
    color: #343a40;
    font-size: 1.1rem;
}

.conflex1 select {
  padding: 10px 15px;
  width: 65%;
  border: 1px solid #ced4da;
  border-radius: 5px;
  background-color: #ffffff;
  font-size: 1rem;
  cursor: pointer;
  outline: none; /* Elimina el contorno al hacer focus */
}

.conflex1 select:focus {
    border-color: #007bff; /* Color de borde al hacer focus */
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
}

.conflex1 button{
  width: 15%;
}

.conflex1 button:hover {
    background-color: #0056b3; /* Color de hover para el botón */
}

/* --- Media Queries para Responsividad (Opcional, pero recomendado) --- */
@media (max-width: 768px) {
    .conflex1 {
        flex-direction: column; /* Apila los elementos verticalmente en pantallas pequeñas */
        align-items: flex-start; /* Alinea los elementos al inicio (izquierda) */
        padding: 15px;
    }

    .conflex1 form {
        flex-direction: column; /* Apila los elementos del formulario verticalmente */
        align-items: flex-start; /* Alinea los elementos al inicio (izquierda) */
        width: 100%;
    }

    .conflex1 label,
    .conflex1 select,
    .conflex1 button {
        width: 100%; /* Hacen que ocupen todo el ancho disponible */
        margin-bottom: 10px; /* Añade un pequeño margen entre ellos */
    }

    .conflex1 button {
        margin-bottom: 0; /* No margen después del último botón */
    }
}

/* Estilos para el contenedor principal del catálogo */
.course-catalog {
    padding: 1rem 1.5rem; /* Espaciado alrededor del catálogo */
    margin: 0 auto; /* Centra el catálogo en la página */
}

/* Contenedor Grid para las tarjetas de cursos */
.course-grid {
    display: grid;
    /* Definimos 3 columnas de igual tamaño.
       repeat(3, 1fr) significa 3 columnas, cada una ocupando una fracción del espacio disponible.
       grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
       es una opción más avanzada para hacer que las columnas se adapten automáticamente
       y tengan un ancho mínimo antes de envolverse. Lo usaremos en el media query principal.
    */
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem; /* Espacio entre las tarjetas de cursos */
}

/* Estilos para cada tarjeta de curso */
.course-card {
    background-color: #ffffff; /* Fondo blanco para las tarjetas */
    border-radius: 10px; /* Bordes redondeados para un aspecto moderno */
    overflow: hidden; /* Asegura que la imagen no se salga si tiene border-radius */
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); /* Sombra sutil para un efecto de elevación */
    transition: transform 0.3s ease, box-shadow 0.3s ease; /* Transición suave para el hover */
    display: flex; /* Para que el enlace (course-link) y su contenido se estiren */
    flex-direction: column; /* Apila el contenido verticalmente */
}

.course-card:hover {
    transform: translateY(-5px); /* Eleva la tarjeta al pasar el ratón */
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.2); /* Sombra más pronunciada al pasar el ratón */
}

/* Estilos para el enlace que envuelve la tarjeta */
.course-link {
    text-decoration: none; /* Quita el subrayado del enlace */
    color: inherit; /* Hereda el color del texto de sus padres */
    display: flex; /* Para que el enlace ocupe todo el espacio de la tarjeta */
    flex-direction: column; /* Apila imagen y contenido verticalmente */
    height: 100%; /* Asegura que el enlace se estire a la altura de la tarjeta */
}


/* Contenedor de la imagen dentro de la tarjeta */
.card-image-wrapper {
    width: 100%;
    height: 200px; /* Altura fija para las imágenes */
    overflow: hidden; /* Oculta cualquier parte de la imagen que se desborde */
    border-top-left-radius: 10px; /* Bordes redondeados superiores */
    border-top-right-radius: 10px;
}

/* Estilos para la imagen del curso */
.course-img {
    width: 100%; /* La imagen ocupa todo el ancho de su contenedor */
    height: 100%; /* La imagen ocupa toda la altura de su contenedor */
    object-fit: cover; /* Recorta la imagen para que cubra el espacio sin distorsionarse */
    display: block; /* Elimina cualquier espacio extra debajo de la imagen */
}

/* Estilos para el contenido de la tarjeta (título y descripción) */
.card-content {
    padding: 1.5rem; /* Espaciado interno del contenido */
    flex-grow: 1; /* Permite que el contenido crezca y ocupe el espacio restante */
    display: flex; /* Convierte el contenido en flex para alinear elementos */
    flex-direction: column; /* Apila el título y la descripción */
    justify-content: space-between; /* Empuja el título hacia arriba y descripción abajo si hay espacio */
}

.course-title {
    font-size: 1.3rem;
    font-weight: bold;
    color: #343a40; /* Color oscuro para el título */
    margin-top: 0;
    margin-bottom: 0.5rem; /* Espacio debajo del título */
}

.course-description {
    font-size: 0.95rem;
    color: #6c757d; /* Gris para la descripción */
    line-height: 1.5;
    margin-bottom: 0;
}

/* Estilos para el mensaje "No hay cursos disponibles" */
.no-courses {
    grid-column: 1 / -1; /* Ocupa todo el ancho de la cuadrícula */
    text-align: center;
    padding: 2rem;
    font-size: 1.2rem;
    color: #6c757d;
}

/* --- Media Queries para Responsividad --- */

/* Tabletas y pantallas más pequeñas (2 columnas) */
@media (max-width: 991.98px) {
    .course-grid {
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* 2 columnas o más si caben */
        gap: 1.5rem;
    }
}

/* Smartphones (1 columna) */
@media (max-width: 575.98px) {
    .course-catalog {
        padding: 2rem 1rem; /* Menos padding en pantallas pequeñas */
    }
    .course-grid {
        grid-template-columns: 1fr; /* Una sola columna */
        gap: 1.2rem;
    }
    .course-card {
        margin: 0 auto; /* Centra la tarjeta si no ocupa todo el ancho */
        max-width: 350px; /* Ancho máximo para tarjetas en móvil */
    }
    .card-content {
        padding: 1.2rem;
    }
    .course-title {
        font-size: 1.2rem;
    }
}