<?php
session_start();

// 1. Verificación de sesión y rol
if (!isset($_SESSION['Inicio']) || $_SESSION['Inicio'] !== "Ok" || !isset($_SESSION['Rol'])) {
    header('Location: ../Login.php?m=5');
    exit;
}

// 2. Determinar la URL del menú correspondiente
$urlMenuCorrespondiente = "";
switch ($_SESSION['Rol']) {
    case "Administrativo": $urlMenuCorrespondiente = "../MenuAdministrativo.php"; break;
    case "Titular": $urlMenuCorrespondiente = "../MenuTitular.php"; break;
    case "Pasante": $urlMenuCorrespondiente = "../MenuPasante.php"; break;
    default: header('Location: ../Login.php?m=6'); exit;
}

// --- Variables de filtros ---
$Nombre = "";
$FechaDesde = "";
$FechaHasta = "";

// --- Variables para resultados ---
$TotalFilas = 0;
$datosParaTabla = [];
$errorMessage = "";
$infoMessage = "";

// --- Lógica de captura de filtros ---
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $Nombre = isset($_POST['Nombre']) ? strtoupper(trim($_POST['Nombre'])) : "";
    $FechaDesde = isset($_POST['FechaDesde']) ? trim($_POST['FechaDesde']) : "";
    $FechaHasta = isset($_POST['FechaHasta']) ? trim($_POST['FechaHasta']) : "";
}

// --- Lógica de conexión y consulta ---
include("../Php/ConexionInb.php");
$errorMessage = "";

// --- LÓGICA REFACTORIZADA CON ConexionInb.php ---
// 1. Preparar parámetros base
$columnasSeleccionadas = "DISTINCT p.*, b.*"; // b.* trae todos los campos de celf58
$whereClauses = array();
$params_values = array();
$types = "";
$sqlOrder = " ORDER BY p.apellido_paterno_paciente, p.apellido_materno_paciente, p.nombre_paciente, b.fecha_evaluacion DESC";

// 2. Construir filtros dinámicos (OJO: usamos el alias 'b' para celf58)
if (!empty($Nombre)) {
    $whereClauses[] = "(UPPER(p.nombre_paciente) LIKE ? OR UPPER(p.apellido_paterno_paciente) LIKE ? OR UPPER(p.apellido_materno_paciente) LIKE ?)";
    $searchTerm = "%" . $Nombre . "%";
    $params_values = array_merge($params_values, array($searchTerm, $searchTerm, $searchTerm));
    $types .= "sss";
}
if (!empty($FechaDesde)) {
    $whereClauses[] = "b.fecha_evaluacion >= ?";
    $params_values[] = $FechaDesde;
    $types .= "s";
}
if (!empty($FechaHasta)) {
    $whereClauses[] = "b.fecha_evaluacion <= ?";
    $params_values[] = $FechaHasta;
    $types .= "s";
}

$sqlWhere = !empty($whereClauses) ? " WHERE " . implode(" AND ", $whereClauses) : "";

// 3. Llamar a la función centralizada (JOIN con celf58)
$datosParaTabla = consultarPacientes('celf58', $columnasSeleccionadas, $sqlWhere, $params_values, $types, $sqlOrder, $errorMessage);

// 4. Calcular info de resultados
if ($datosParaTabla !== false) {
    $TotalFilas = count($datosParaTabla);
    $filtrosAplicados = !empty($Nombre) || !empty($FechaDesde) || !empty($FechaHasta);
    if ($TotalFilas > 0) {
        $infoMessage = $filtrosAplicados ? "Se encontraron " . $TotalFilas . " resultado(s) aplicando los filtros." : "Mostrando todos los " . $TotalFilas . " registros CELF 5-8 disponibles.";
    } else {
        $infoMessage = $filtrosAplicados ? "No se encontraron resultados con los filtros aplicados." : "No hay registros CELF 5-8 para mostrar.";
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="../Css/EstilosConsultas.css">
    <title>Consulta CELF 5-8 con Filtros</title>
 <style>
    /* Contenedor principal de la tabla para activar el scroll */
    .tabla-container {
        overflow: auto; /* Permite scroll en ambas direcciones */
        max-height: 70vh; /* Altura máxima antes del scroll vertical */
        border: 1px solid #ddd;
    }
    
    .tabla-container table {
        border-collapse: collapse; /* Mejora la apariencia de los bordes */
    }

 

    /* 1. Todos los encabezados se fijan en la parte superior */
    .tabla-container thead th {
        position: -webkit-sticky;
        position: sticky;
        top: 0;
        background-color: #f2f2f2; /* Fondo sólido para que no se transparente el contenido al hacer scroll */
        z-index: 2;
    }

    /* 2. Todas las celdas de la primera columna (tanto <th> como <td>) se fijan a la izquierda */
    .tabla-container th:first-child,
    .tabla-container td:first-child {
        position: -webkit-sticky;
        position: sticky;
        left: 0;
        background-color: #ffffff; /* Fondo sólido para que no se transparente */
        z-index: 1; /* Se queda por debajo de los encabezados generales */
        border-right: 2px solid #e1e1e1;
    }

    
    .tabla-container thead th:first-child {
        z-index: 3; /* Se asegura de estar por encima de todo */
        background-color: #e8e8e8; /* Un color ligeramente distinto para destacarla */
    }
    /* --- RESTO DE TUS ESTILOS */
    .form-filters { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 20px; padding: 20px; background-color: #f9f9f9; border-radius: 8px; border: 1px solid #ddd; align-items: flex-end; }
    .form-filters .input-box { margin-bottom: 0; flex: 1 1 250px; }
    .form-filters label { display: block; margin-bottom: 5px; font-weight: bold; color: #555; }
    .form-filters input[type="text"], .form-filters input[type="date"] { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; }
    .form-actions { display: flex; justify-content: center; gap: 20px; margin-top: 10px; width: 100%; align-items: center; }
    .form-actions .btn, .form-actions .btn2, .form-actions .btn-outline { width: auto; min-width: 120px; text-align: center; margin-top: 0; box-sizing: border-box; line-height: 40px; }
    .results-info, .error-message { text-align: center; margin: 15px auto; padding: 10px; border-radius: 4px; max-width: 800px; }
    .results-info { color: #555; background-color: #f0f0f0; border: 1px solid #ddd;}
    .error-message { color: #a94442; background-color: #f2dede; border: 1px solid #ebccd1; }
    .col-text-limited { max-width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .col-text-limited:hover { white-space: normal; overflow: visible; position: relative; z-index: 10; background: #fff; box-shadow: 0 0 5px #ccc; }
</style>
</head>
<body>
    <div class="container">
        <h1 class="tittle">Consultar Registros de Evaluación CELF 5-8</h1>

        <form method="post" action="RCELF5-8.php" class="form-filters">
            <div class="input-box">
                <label for="Nombre">Nombre o Apellido:</label>
                <input type="text" placeholder="Escriba aquí..." name="Nombre" id="Nombre" value="<?php echo htmlspecialchars($Nombre); ?>">
            </div>
            <div class="input-box">
                <label for="FechaDesde">Fecha Evaluación Desde:</label>
                <input type="date" name="FechaDesde" id="FechaDesde" value="<?php echo htmlspecialchars($FechaDesde); ?>">
            </div>
            <div class="input-box">
                <label for="FechaHasta">Fecha Evaluación Hasta:</label>
                <input type="date" name="FechaHasta" id="FechaHasta" value="<?php echo htmlspecialchars($FechaHasta); ?>">
            </div>
            <div class="form-actions">
                <input type="submit" value="Buscar" class="btn">
                <a href="RCELF5-8.php" class="btn2">Limpiar Filtros</a>
                <a href="<?php echo htmlspecialchars($urlMenuCorrespondiente); ?>" class="btn2">Salir</a>
                <?php if ($TotalFilas > 0): ?>
                    <button type="button" id="btnExportarExcel" class="btn btn-outline">Exportar a Excel</button>
                <?php endif; ?>
            </div>
        </form>

        <?php if (!empty($errorMessage)): ?>
            <div class="error-message"><?php echo $errorMessage; ?></div>
        <?php endif; ?>

        <?php if (!empty($infoMessage) && empty($errorMessage)): ?>
            <div class="results-info"><p><?php echo $infoMessage; ?></p></div>
        <?php endif; ?>

        <?php if (empty($errorMessage) && $TotalFilas > 0): ?>
            <div class="tabla-container">
                <table id="tablaResultados">
                    <thead>
    <!-- Fila única con encabezados específicos -->
    <tr>
        <!-- Paciente e Info -->
        <th class="sticky-col">Clave Paciente</th>
        <th>Nombre</th>
        <th>Ap. Paterno</th>
        <th>Ap. Materno</th>
        <th>Fec. Nacim.</th>
        <th>Fecha Eval.</th>
        <th>Edad</th>
        <th>Rango Edad</th>

        <!-- Subtests -->
        <th>Seguir Direcciones Bruto</th>
        <th>Seguir Direcciones Escalar</th>
        <th>Seguir Direcciones Percentil</th>
        <th class="col-text-limited">Seguir Direcciones Interp.</th>
        
        <th>Estructura de Palabras Bruto</th>
        <th>Estructura de Palabras Escalar</th>
        <th>Estructura de Palabras Percentil</th>
        <th class="col-text-limited">Estructura de Palabras Interp.</th>

        <th>Recuerdo de Oraciones Bruto</th>
        <th>Recuerdo de Oraciones Escalar</th>
        <th>Recuerdo de Oraciones Percentil</th>
        <th class="col-text-limited">Recuerdo de Oraciones Interp.</th>

        <th>Formulación de Oraciones Bruto</th>
        <th>Formulación de Oraciones Escalar</th>
        <th>Formulación de Oraciones Percentil</th>
        <th class="col-text-limited">Formulación de Oraciones Interp.</th>
        
        <th>Clases Palabras (Receptivo) Bruto</th>
        <th>Clases Palabras (Receptivo) Escalar</th>
        <th>Clases Palabras (Receptivo) Percentil</th>
        <th class="col-text-limited">Clases Palabras (Receptivo) Interp.</th>
        
        <th>Clases Palabras (Expresivo) Bruto</th>
        <th>Clases Palabras (Expresivo) Escalar</th>
        <th>Clases Palabras (Expresivo) Percentil</th>
        <th class="col-text-limited">Clases Palabras (Expresivo) Interp.</th>
        
        <th>Clases Palabras (Total) Suma Esc.</th>
        <th>Clases Palabras (Total) Escalar</th>
        <th>Clases Palabras (Total) Percentil</th>

        <th>Estructura de Oraciones Bruto</th>
        <th>Estructura de Oraciones Escalar</th>
        <th>Estructura de Oraciones Percentil</th>
        <th class="col-text-limited">Estructura de Oraciones Interp.</th>
        
        <th>Vocabulario Expresivo Bruto</th>
        <th>Vocabulario Expresivo Escalar</th>
        <th>Vocabulario Expresivo Percentil</th>
        <th class="col-text-limited">Vocabulario Expresivo Interp.</th>

        <th>Entendiendo Párrafos Bruto</th>
        <th>Entendiendo Párrafos Escalar</th>
        <th>Entendiendo Párrafos Percentil</th>
        <th class="col-text-limited">Entendiendo Párrafos Interp.</th>
        
        <th>Rep. Números (Directa) Bruto</th>
        <th>Rep. Números (Directa) Escalar</th>
        <th>Rep. Números (Directa) Percentil</th>
        <th class="col-text-limited">Rep. Números (Directa) Interp.</th>
        
        <th>Rep. Números (Inversa) Bruto</th>
        <th>Rep. Números (Inversa) Escalar</th>
        <th>Rep. Números (Inversa) Percentil</th>
        <th class="col-text-limited">Rep. Números (Inversa) Interp.</th>
        
        <th>Rep. Números (Total) Bruto</th>
        <th>Rep. Números (Total) Escalar</th>
        <th>Rep. Números (Total) Percentil</th>
        <th class="col-text-limited">Rep. Números (Total) Interp.</th>
        
        <th>Secuencias Familiares Bruto</th>
        <th>Secuencias Familiares Escalar</th>
        <th>Secuencias Familiares Percentil</th>
        <th class="col-text-limited">Secuencias Familiares Interp.</th>

        <!-- Índices -->
        <th>Lenguaje Total Escalar</th>
        <th>Lenguaje Total Percentil</th>
        <th class="col-text-limited">Lenguaje Total Interpretación</th>
        
        <th>Lenguaje Receptivo RLI Escalar</th>
        <th>Lenguaje Receptivo RLI Percentil</th>
        <th class="col-text-limited">Lenguaje Receptivo RLI Interpretación</th>
        
        <th>Lenguaje Expresivo ELI Escalar</th>
        <th>Lenguaje Expresivo ELI Percentil</th>
        <th class="col-text-limited">Lenguaje Expresivo ELI Interpretación</th>
        
        <th>Contenido de Lenguaje LCI Escalar</th>
        <th>Contenido de Lenguaje LCI Percentil</th>
        <th class="col-text-limited">Contenido de Lenguaje LCI Interpretación</th>
        
        <th>Estructura de Lenguaje LSI Escalar</th>
        <th>Estructura de Lenguaje LSI Percentil</th>
        <th class="col-text-limited">Estructura de Lenguaje LSI Interpretación</th>
        
        <th>Memoria de Trabajo WMI Escalar</th>
        <th>Memoria de Trabajo WMI Percentil</th>
        <th class="col-text-limited">Memoria de Trabajo WMI Interpretación</th>

        <!-- Clínicos -->
        <th>Terapia</th>
        <th class="col-text-limited">Observaciones Clínicas</th>
        <th class="col-text-limited">Otras Observaciones</th>
    </tr>
</thead>
                    <tbody>
                        <?php foreach ($datosParaTabla as $Fila): ?>
                        <tr>
                            <!-- Paciente -->
                            <td class="sticky-col"><?php echo htmlspecialchars($Fila['clave_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['nombre_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['apellido_paterno_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['apellido_materno_paciente']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['fecha_nacimiento_paciente']); ?></td>
                            
                            <!-- Info -->
                            <td><?php echo htmlspecialchars($Fila['fecha_evaluacion']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['edad']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['rango_edad']); ?></td>

                            <!-- Subtests -->
                            <!-- Seguir Direcciones -->
                            <td><?php echo htmlspecialchars($Fila['sub_con_sigui_dir_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_con_sigui_dir_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_con_sigui_dir_perce']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_con_sigui_dir_interp']); ?></td>

                            <!-- Recordar Palabras -->
                            <td><?php echo htmlspecialchars($Fila['sub_recor_pala_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_recor_pala_esca']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_recor_pala_percen']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_recor_pala_interp']); ?></td>

                            <!-- Recuerdo Oraciones -->
                            <td><?php echo htmlspecialchars($Fila['sub_recor_orac_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_recor_orac_esca']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_recor_orac_perce']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_recor_orac_interpr']); ?></td>

                            <!-- Formulación Oraciones -->
                            <td><?php echo htmlspecialchars($Fila['sub_form_oraci_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_form_oraci_esca']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_form_oraci_percen']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_form_oraci_interpr']); ?></td>

                            <!-- Clases Palabras (Receptivo) -->
                            <td><?php echo htmlspecialchars($Fila['sub_clas_palab_recep']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_clas_palab_esca']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_clas_palab_percent']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_clas_palab_interp']); ?></td>

                            <!-- Clases Palabras (Expresivo) -->
                            <td><?php echo htmlspecialchars($Fila['sub_clas_pala_exprex_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_clas_pala_exprex_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_clas_pala_exprex_percen']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_clas_pala_exprex_interp']); ?></td>

                            <!-- Clases Palabras (Total) -->
                            <td><?php echo htmlspecialchars($Fila['sub_clas_palab_suma_escalares']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_clas_palab_tot_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_clas_palab_tot_percen']); ?></td>

                            <!-- Estructura Oraciones -->
                            <td><?php echo htmlspecialchars($Fila['sub_esctr_orac_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_esctr_orac_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_esctr_orac_percen']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_esctr_orac_interpr']); ?></td>

                            <!-- Vocabulario Expresivo -->
                            <td><?php echo htmlspecialchars($Fila['vocab_expre_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['vocab_expre_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['vocab_expre_percen']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['vocab_expre_interp']); ?></td>

                            <!-- Entendiendo Párrafos -->
                            <td><?php echo htmlspecialchars($Fila['sub_enten_parraf_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_enten_parraf_esca']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_enten_parraf_perce']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_enten_parraf_interp']); ?></td>

                            <!-- Rep Num Directa -->
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_forw_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_forw_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_forw_perc']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_rep_num_forw_inter']); ?></td>

                            <!-- Rep Num Inversa -->
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_back_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_back_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_back_perce']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_rep_num_back_interp']); ?></td>

                            <!-- Rep Num Total -->
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_tot_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_tot_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_rep_num_tot_perc']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_rep_num_tot_int']); ?></td>

                            <!-- Secuencias Familiares -->
                            <td><?php echo htmlspecialchars($Fila['sub_sec_fam1_brut']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_sec_fam1_esc']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['sub_sec_fam1_percen']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['sub_sec_fam1_interp']); ?></td>
                            
                             <!-- Índices -->
                            <td><?php echo htmlspecialchars($Fila['celf58_stand_lengu_total']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['celf58_percent_lengua_tota']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['celf58_leng_tot_interpr']); ?></td>
                            
                            <td><?php echo htmlspecialchars($Fila['celf58_stand_leng_recep']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['celf58_percent_leng_recept']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['celf58_leng_recep_inter']); ?></td>
                            
                            <td><?php echo htmlspecialchars($Fila['celf58_stand_leng_expres']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['celf58_percent_leng_expres']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['celf58_leng_expr_interpre']); ?></td>
                            
                            <td><?php echo htmlspecialchars($Fila['celf58_stand_contenido']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['celf58_percent_conteni']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['celf58_contenido_interpretacion']); ?></td>
                            
                            <td><?php echo htmlspecialchars($Fila['celf58_stand_estrucct']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['celf58_percent_estrucc']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['celf58_estrucct_interpret']); ?></td>
                            
                            <td><?php echo htmlspecialchars($Fila['celf58_stand_memor_dtraba']); ?></td>
                            <td><?php echo htmlspecialchars($Fila['celf58_percent_memor_dtrab']); ?></td>
                            <td class="col-text-limited"><?php echo htmlspecialchars($Fila['celf58_memori_traba_interpre']); ?></td>

                            <!-- Datos Clínicos -->
                            <td class="col-text-limited"><?php echo nl2br(htmlspecialchars($Fila['dat_clin_refera_ter'])); ?></td>
                            <td class="col-text-limited"><?php echo nl2br(htmlspecialchars($Fila['dat_clin_obser_clinic'])); ?></td>
                            <td class="col-text-limited"><?php echo nl2br(htmlspecialchars($Fila['dat_clin_otr_obser'])); ?></td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        <?php endif; ?>
    </div>

    <script>
        const btnExportar = document.getElementById('btnExportarExcel');
        if (btnExportar) {
            btnExportar.addEventListener('click', function() {
                const tabla = document.getElementById('tablaResultados');
                if (!tabla) return;
                
                // Clonar tabla para limpiar clases sticky antes de exportar
                const tablaClone = tabla.cloneNode(true);
                // Si la primera columna tiene sticky, se puede limpiar aqui si molesta en el excel,
                // pero generalmente solo se quita la clase CSS, lo cual ya hace el clon.

                let csvContent = "data:text/csv;charset=utf-8,\uFEFF";
                const rows = tablaClone.querySelectorAll("tr");
                
                rows.forEach(row => {
                    const rowData = [];
                    const cols = row.querySelectorAll("th, td");
                    cols.forEach(col => {
                        let cellText = col.innerText.replace(/\r?\n+|\r/g, " ").trim().replace(/"/g, '""');
                        rowData.push(`"${cellText}"`);
                    });
                    csvContent += rowData.join(",") + "\r\n";
                });

                const encodedUri = encodeURI(csvContent);
                const link = document.createElement("a");
                link.setAttribute("href", encodedUri);
                link.setAttribute("download", "resultados_celf5-8_<?php echo date('Ymd_His'); ?>.csv");
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            });
        }
    </script>
</body>
</html>