<?php

session_start(); // Iniciar sesión al principio

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

// 2. Determinar la URL del menú basada en el rol
$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;
         }
//Hay que comentar toda las lógica para las subpruebas que ya no se van a ocupar por el momento, debido a que muchas subpruebas y core languages 
// ya no se aplican actualmente

// Es una buena práctica inicializar y limpiar las variables GET/POST
// Las variables del paciente vienen via GET para cargar el formulario
$clave_paciente = isset($_GET['clave_paciente']) ? htmlspecialchars($_GET['clave_paciente']) : '';
$codigo_paciente = isset($_GET['codigo_paciente']) ? htmlspecialchars($_GET['codigo_paciente']) : '';
$nombre_paciente = isset($_GET['nombre_paciente']) ? htmlspecialchars($_GET['nombre_paciente']) : '';
$apellido_paterno_paciente = isset($_GET['apellido_paterno_paciente']) ? htmlspecialchars($_GET['apellido_paterno_paciente']) : '';
$apellido_materno_paciente = isset($_GET['apellido_materno_paciente']) ? htmlspecialchars($_GET['apellido_materno_paciente']) : '';
$fecha_nacimiento_paciente = isset($_GET['fecha_nacimiento_paciente']) ? htmlspecialchars($_GET['fecha_nacimiento_paciente']) : '';

// Las variables del formulario de evaluación vendrán via POST (en ICELF5-8.php)
// Aquí no necesitas inicializarlas desde POST porque este script solo muestra el formulario
// IMPORTANTE CHECAR LAS DIFERENTES FORMAS EN LAS QUE SE INSERTAN LOS DATOS, porque en la base de datos se insertará NULL
?>
<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" type="text/css" href="../Css/EstilosUpdateWi.css">
    <title>CELF 5-8 - Formulario</title>
     <style>
        .auto-filled { background-color: #e9ecef; cursor: not-allowed; }
        .header-section { display: flex; justify-content: space-between; align-items: center; margin-bottom: 25px; padding-bottom: 15px; border-bottom: 2px solid #f0f0f0; }
        .main-tittle { margin: 0; padding: 0; border: none; }
        .btn-salir { white-space: nowrap; padding: 8px 20px; flex-shrink: 0; font-size: 0.9rem; }
        .hidden { display: none; }
        .age-fields-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; align-items: flex-end; /* Añadido para alinear mejor */ }.edad-activa { background-color: #e0e8f0; border-color: #0056b3; box-shadow: 0 0 5px rgba(0, 86, 179, 0.3); }
        .edad-activa { background-color: #e0e8f0; border-color: #0056b3; box-shadow: 0 0 5px rgba(0, 86, 179, 0.3); }
        .instruccion-evaluacion { font-size: 0.9em; color: #555; background-color: #f8f9fa; padding: 10px; border-left: 4px solid #007bff; margin-top: 0; margin-bottom: 15px; border-radius: 0 4px 4px 0; }
        .instruccion-evaluacion strong { color: #0056b3; }
        .prox-eval-container { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: flex-end; }
        .hidden { display: none; }
        .baremo-container { display: flex; gap: 10px; align-items: flex-end; }
        .baremo-container > .input-box { flex-grow: 1; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header-section"> <!-- Contenedor nuevo -->
        <h1 class="main-tittle"> CELF 5-8 </h1>
        <a href="CCELF5-8.php" class="btn-salir">Volver a la lista</a> 
        </div>

        <!-- NOTA: Poner 'NA' en campos INT NOT NULL en la DB causará un error. ASK ELIMINAR LOS DE LOS OTROS--> 

        <!-- Cambiado a POST para enviar más datos de forma segura -->
        <form method="POST" action="ICELF5-8.php" id="myForm">

            <!-- Sección 1 y 2: Identificación e Información general -->
            <div class="form-section">
    <h2 class="section-tittle">Datos Personales del Paciente</h2>
    <div class="input-grid">
        <input type="hidden" name="clave_paciente" value="<?php echo $clave_paciente; ?>">
        <div class="input-box"><label>Código</label><input type="text" value="<?php echo $codigo_paciente; ?>" readonly class="auto-filled"></div>
        <div class="input-box"><label>Nombre</label><input type="text" value="<?php echo $nombre_paciente; ?>" readonly class="auto-filled"></div>
        <div class="input-box"><label>A. Paterno</label><input type="text" value="<?php echo $apellido_paterno_paciente; ?>" readonly class="auto-filled"></div>
        <div class="input-box"><label>A. Materno</label><input type="text" value="<?php echo $apellido_materno_paciente; ?>" readonly class="auto-filled"></div>
        <div class="input-box"><label>F. Nacimiento</label><input type="date" id="fecha_nacimiento_paciente" value="<?php echo $fecha_nacimiento_paciente; ?>" readonly class="auto-filled"></div>
    </div>

    <h2 class="section-tittle" style="margin-top: 20px;">Datos de Evaluación</h2>
    <p class="instruccion-evaluacion">
        <strong>Instrucción:</strong> Elige la fecha de evaluación para calcular la edad y activar el formulario.
    </p>
    <div class="age-fields-grid">
        <div class="input-box">
            <label for="fecha_evaluacion">Fecha de Evaluación</label>
            <input type="date" id="fecha_evaluacion" name="fecha_evaluacion" required class="input-field">
        </div>
        <div class="input-box">
            <label>Edad Cronológica</label>
            <input type="text" placeholder="Seleccione fechas" id="edad" name="edad" readonly class="input-field auto-filled edad-activa" required>
        </div>
        <div class="input-box">
            <label>Baremo de Edad Utilizado</label>
            <input type="text" id="rango_edad" name="rango_edad" readonly class="input-field auto-filled">
        </div>
        <div class="input-box">
            <label>Anular Baremo (Manual)</label>
            <select id="baremo_manual_select" class="input-field hidden">
                <option value="0">Seleccione para anular...</option>
            </select>
        </div>
    </div>
</div>
       
        <!-- Sub-test Sections -->

             <!-- Sección 10: Subprueba: Seguir direcciones -->
             <!-- Título HTML mantenido, nombres de campos cambiados a SQL -->
              <h2 class="subpruebas-titulo-principal">Subpruebas de Lenguaje</h2>
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Concepto Significativo Directo (Seguir Direcciones)</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
                <!-- CAMBIO: Añadido oninput para llamar a la función de cálculo -->
                <div class="input-box">
                    <label for="sub_con_sigui_dir_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_con_sigui_dir_brut" 
                           name="sub_con_sigui_dir_brut"
                           oninput="calcularSubpruebaConceptosDirecciones()">
                </div>
                <!-- CAMBIO: Añadido readonly -->
                <div class="input-box">
                    <label for="sub_con_sigui_dir_esc">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                           id="sub_con_sigui_dir_esc" name="sub_con_sigui_dir_esc" oninput="calcularDesdeEscalar(
                                'sub_con_sigui_dir_esc', 
                                'sub_con_sigui_dir_perce', 
                                'sub_con_sigui_dir_interp')">
                </div>
                 <!-- CAMBIO: Añadido readonly -->
                 <div class="input-box">
                    <label for="sub_con_sigui_dir_perce">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_con_sigui_dir_perce" 
                           name="sub_con_sigui_dir_perce" readonly>
                </div>
        </div>
             <!-- CAMBIO: Añadido readonly -->
        <div class="input-box input-box-fullwidth">
                <label for="sub_con_sigui_dir_interp">Interpretación</label>
                <textarea id="sub_con_sigui_dir_interp" name="sub_con_sigui_dir_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
             <!-- Sección 11: Subprueba: Recordar palabras (Faltante en HTML original) -->
             <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Estructura de Palabras</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
                <!-- CAMBIO: Añadido oninput -->
                <div class="input-box">
                    <label for="sub_recor_pala_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_recor_pala_brut" 
                           name="sub_recor_pala_brut"
                           oninput="calcularSubpruebaRecordarPalabras()">
        </div>
                <!-- CAMBIO: Añadido readonly -->
        <div class="input-box">
                    <label for="sub_recor_pala_esca">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                           id="sub_recor_pala_esca" 
                           name="sub_recor_pala_esca"
                           oninput="calcularDesdeEscalar(
                                'sub_recor_pala_esca', 
                                'sub_recor_pala_percen', 
                                'sub_recor_pala_interp'
                            )">
        </div>
                 <!-- CAMBIO: Añadido readonly -->
        <div class="input-box">
                    <label for="sub_recor_pala_percen">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_recor_pala_percen" 
                           name="sub_recor_pala_percen" readonly>
                </div>
        </div>
             <!-- CAMBIO: Añadido readonly -->
        <div class="input-box input-box-fullwidth">
                <label for="sub_recor_pala_interp">Interpretación</label>
                <textarea id="sub_recor_pala_interp" name="sub_recor_pala_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>

            <!-- Sección 12: Subprueba: Recordar oraciones -->
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Recuerdo de Oraciones</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
                 <!-- CAMBIO: Añadido oninput -->
                <div class="input-box">
                    <label for="sub_recor_orac_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_recor_orac_brut" 
                           name="sub_recor_orac_brut"
                           oninput="calcularSubpruebaRecordandoOraciones()">
                </div>
                <!-- CAMBIO: Añadido readonly -->
                <div class="input-box">
                        <label for="sub_recor_orac_esca">Puntuación escalar</label>
                        <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                            id="sub_recor_orac_esca" 
                            name="sub_recor_orac_esca"
                            oninput="calcularDesdeEscalar(
                                    'sub_recor_orac_esca', 
                                    'sub_recor_orac_perce', 
                                    'sub_recor_orac_interpr'
                                )">
                    </div>
                 <!-- CAMBIO: Añadido readonly -->
                 <div class="input-box">
                    <label for="sub_recor_orac_perce">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_recor_orac_perce" 
                           name="sub_recor_orac_perce" readonly>
                </div>
             </div>
             <!-- CAMBIO: Añadido readonly -->
             <div class="input-box input-box-fullwidth">
                <label for="sub_recor_orac_interpr">Interpretación</label>
                <textarea id="sub_recor_orac_interpr" name="sub_recor_orac_interpr" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>

            <!-- Sección 13: Subprueba: Formulación de oraciones -->
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Formulación de Oraciones</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
                <!-- CAMBIO: Añadido oninput -->
                <div class="input-box">
                    <label for="sub_form_oraci_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_form_oraci_brut" 
                           name="sub_form_oraci_brut"
                           oninput="calcularSubpruebaFormulacionOraciones()">
                </div>
                <!-- CAMBIO: Este campo no parece tener un propósito claro en la automatización, pero lo dejamos como estaba -->
               
                <!-- CAMBIO: Añadido readonly -->
                <div class="input-box">
                <label for="sub_form_oraci_esca">Puntuación escalar</label>
                <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                    id="sub_form_oraci_esca" 
                    name="sub_form_oraci_esca"
                    oninput="calcularDesdeEscalar(
                            'sub_form_oraci_esca', 
                            'sub_form_oraci_percen', 
                            'sub_form_oraci_interpr'
                        )">
                </div>
                <!-- CAMBIO: Añadido readonly -->
                 <div class="input-box">
                    <label for="sub_form_oraci_percen">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_form_oraci_percen" 
                           name="sub_form_oraci_percen" readonly>
                </div>
             </div>
             <!-- CAMBIO: Añadido readonly -->
             <div class="input-box input-box-fullwidth">
                <label for="sub_form_oraci_interpr">Interpretación</label>
                <textarea id="sub_form_oraci_interpr" name="sub_form_oraci_interpr" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>

        <!-- Todas las subpruebas siguientes no son necesarias por el momento, se comentan para futura referencia -->

            <!-- Sección 14: Subprueba: Clasificación de palabras (receptivo) -->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Clases Palabras Receptivas</h3>
            <p id="instruccion_clases_palabras" class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta. Los cálculos se actualizarán en esta sección y en el Total.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="sub_clas_palab_recep">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_clas_palab_recep" name="sub_clas_palab_recep"
                           oninput="calcularClasesPalabras()">
                </div>    
    
            <div class="input-box">
             <label for="sub_clas_palab_esca">Puntuación escalar</label>
             <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                    id="sub_clas_palab_esca" name="sub_clas_palab_esca"
                    oninput="calcularDesdeEscalar('sub_clas_palab_esca', 'sub_clas_palab_percent', 'sub_clas_palab_interp'); calcularClasesPalabras();">
             </div>

                 <div class="input-box">
                    <label for="sub_clas_palab_percent">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="sub_clas_palab_percent" name="sub_clas_palab_percent" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_clas_palab_interp">Interpretación</label>
                <textarea id="sub_clas_palab_interp" name="sub_clas_palab_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
        comentado -->


        <!-- Sección 15: Subprueba: Clasificación de palabras (expresivo) -->
        <!--
          <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Clases Palabras Expresivas</h3>
            <p id="instruccion_clases_palabras_exp" class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta. Los cálculos se actualizarán en esta sección y en el Total.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="sub_clas_pala_exprex_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_clas_pala_exprex_brut" name="sub_clas_pala_exprex_brut"
                           oninput="calcularClasesPalabras()">
           </div>

                <div class="input-box">
    <label for="sub_clas_pala_exprex_esc">Puntuación escalar</label>
    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
           id="sub_clas_pala_exprex_esc" name="sub_clas_pala_exprex_esc"
           oninput="calcularDesdeEscalar('sub_clas_pala_exprex_esc', 'sub_clas_pala_exprex_percen', 'sub_clas_pala_exprex_interp'); calcularClasesPalabras();">
    </div>

                 <div class="input-box">
                    <label for="sub_clas_pala_exprex_percen">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="sub_clas_pala_exprex_percen" name="sub_clas_pala_exprex_percen" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_clas_pala_exprex_interp">Interpretación</label>
                <textarea id="sub_clas_pala_exprex_interp" name="sub_clas_pala_exprex_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

            <!-- Sección 16: Subprueba: Clasificación de palabras (total) -->
            <!-- Eliminados campos de interpretación que no están en el SQL -->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Total Clases Palabras</h3>
            <p style="font-size: 0.9em; color: #555;">Esta sección se calcula automáticamente a partir de las dos anteriores.</p>
             <div class="input-grid">
                  <div class="input-box">
                    <label for="sub_clas_palab_tot_brut">Suma de Puntuaciones Brutas</label>
                    <input type="text" autocomplete="off" placeholder="Suma calculada" maxlength="4" 
                           id="sub_clas_palab_tot_brut" name="sub_clas_palab_tot_brut" readonly>
                </div>
                <div class="input-box">
            <label for="sub_clas_palab_suma_escalares">Suma de Puntuaciones Escalares</label>
            <input type="text" autocomplete="off" placeholder="Suma calculada" maxlength="2" 
                   id="sub_clas_palab_suma_escalares" name="sub_clas_palab_suma_escalares" readonly>
        </div>
                <div class="input-box">
                    <label for="sub_clas_palab_tot_esc">Puntuación escalar (Total)</label>
                    <input type="text" autocomplete="off" placeholder="Escalar calculado" maxlength="2" id="sub_clas_palab_tot_esc" name="sub_clas_palab_tot_esc" readonly>
                </div>
                 <div class="input-box">
                    <label for="sub_clas_palab_tot_percen">Percentil (Total)</label>
                    <input type="text" autocomplete="off" placeholder="Percentil calculado" maxlength="4" id="sub_clas_palab_tot_percen" name="sub_clas_palab_tot_percen" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_clas_pala_tot_inter">Interpretación</label>
                <textarea id="sub_clas_pala_tot_inter" name="sub_clas_pala_tot_inter" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

            <!-- Sección 17: Subprueba: Estructuración de oraciones (Faltante en HTML original) aqui se anadieron los oninput  y los readonly-->
            <!--
             <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Estructuración de Oraciones</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
              
                <div class="input-box">
                    <label for="sub_esctr_orac_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_esctr_orac_brut" name="sub_esctr_orac_brut"
                           oninput="calcularSubpruebaEstructuracionOraciones()">
                </div>
                <div class="input-box">
                    <label for="sub_esctr_orac_esc">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                        id="sub_esctr_orac_esc" 
                        name="sub_esctr_orac_esc"
                        oninput="calcularDesdeEscalar(
                                'sub_esctr_orac_esc', 
                                'sub_esctr_orac_percen', 
                                'sub_esctr_orac_interpr'
                            )">
                </div>
                
                 <div class="input-box">
                    <label for="sub_esctr_orac_percen">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_esctr_orac_percen" name="sub_esctr_orac_percen" readonly>
                </div>
             </div>
             
             <div class="input-box input-box-fullwidth">
                <label for="sub_esctr_orac_interpr">Interpretación</label>
                <textarea id="sub_esctr_orac_interpr" name="sub_esctr_orac_interpr" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

            <!-- Sección 18: Subprueba: Vocabulario expresivo aqui se anadieron los oninput  y los readonly-->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Vocabulario Expresivo</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="vocab_expre_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="vocab_expre_brut" name="vocab_expre_brut"
                           oninput="calcularSubpruebaVocabularioExpresivo()">
                </div>
                <div class="input-box">
                        <label for="vocab_expre_esc">Puntuación escalar</label>
                        <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                            id="vocab_expre_esc" 
                            name="vocab_expre_esc"
                            oninput="calcularDesdeEscalar(
                                    'vocab_expre_esc', 
                                    'vocab_expre_percen', 
                                    'vocab_expre_interp'
                                )">
                    </div>
                 <div class="input-box">
                    <label for="vocab_expre_percen">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="vocab_expre_percen" name="vocab_expre_percen" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="vocab_expre_interp">Interpretación</label>
                <textarea id="vocab_expre_interp" name="vocab_expre_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

            <!-- Sección 19: Subprueba: Comprensión de párrafos, aqui se anadieron los oninput  y los readonly-->
             <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Entendimiento Párrafos (Comprensión de Párrafos)</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="sub_enten_parraf_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_enten_parraf_brut" name="sub_enten_parraf_brut"
                           oninput="calcularSubpruebaEntendimientoParrafos()">
                </div>
                <div class="input-box">
                    <label for="sub_enten_parraf_esca">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                        id="sub_enten_parraf_esca" 
                        name="sub_enten_parraf_esca"
                        oninput="calcularDesdeEscalar(
                                'sub_enten_parraf_esca', 
                                'sub_enten_parraf_perce', 
                                'sub_enten_parraf_interp'
                            )">
                </div>
                 <div class="input-box">
                    <label for="sub_enten_parraf_perce">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_enten_parraf_perce" name="sub_enten_parraf_perce" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_enten_parraf_interp">Interpretación</label>
                <textarea id="sub_enten_parraf_interp" name="sub_enten_parraf_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
    </div>
    -->

            <!-- Sección 20: Subprueba: Repetición de números (hacia adelante) -->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Repetición Números Directa (Hacia Adelante)</h3>
            <p id="instruccion_rep_numeros" class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta. Los cálculos se actualizarán aquí y en el Total.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="sub_rep_num_forw_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_rep_num_forw_brut" name="sub_rep_num_forw_brut"
                           oninput="calcularRepeticionNumeros()">
                </div>
                <div class="input-box">
                    <label for="sub_rep_num_forw_esc">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                        id="sub_rep_num_forw_esc" 
                        name="sub_rep_num_forw_esc"
                        oninput="calcularDesdeEscalar(
                                'sub_rep_num_forw_esc', 
                                'sub_rep_num_forw_perc', 
                                'sub_rep_num_forw_inter'
                            )">
                </div>
                 <div class="input-box">
                    <label for="sub_rep_num_forw_perc">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="sub_rep_num_forw_perc" name="sub_rep_num_forw_perc" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_rep_num_forw_inter">Interpretación</label>
                <textarea id="sub_rep_num_forw_inter" name="sub_rep_num_forw_inter" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

            <!-- Sección 21: Subprueba: Repetición de números (hacia atrás) -->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Repetición Números Inversa (Hacia Atrás)</h3>
            <p id="instruccion_rep_numeros_inv" class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta. Los cálculos se actualizarán aquí y en el Total.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="sub_rep_num_back_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_rep_num_back_brut" name="sub_rep_num_back_brut"
                           oninput="calcularRepeticionNumeros()">
                </div>
                <div class="input-box">
                    <label for="sub_rep_num_back_esc">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                        id="sub_rep_num_back_esc" 
                        name="sub_rep_num_back_esc"
                        oninput="calcularDesdeEscalar(
                                'sub_rep_num_back_esc', 
                                'sub_rep_num_back_perce', 
                                'sub_rep_num_back_interp'
                            )">
                </div>
                 <div class="input-box">
                    <label for="sub_rep_num_back_perce">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="sub_rep_num_back_perce" name="sub_rep_num_back_perce" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_rep_num_back_interp">Interpretación</label>
                <textarea id="sub_rep_num_back_interp" name="sub_rep_num_back_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

             <!-- Sección 22: Subprueba: Repetición de números (total) -->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Repetición Números Total</h3>
            <p style="font-size: 0.9em; color: #555;">Esta sección se calcula automáticamente a partir de las dos anteriores.</p>
            <p id="instruccion_rep_numeros_total" style="font-size: 0.9em; color: #007bff; display: none;"></p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="sub_rep_num_tot_brut">Puntuación bruta (Suma)</label>
                    <input type="text" autocomplete="off" placeholder="Suma calculada" maxlength="4" id="sub_rep_num_tot_brut" name="sub_rep_num_tot_brut" readonly>
                </div>
                  <div class="input-box">
            <label for="sub_rep_num_tot_esc">Puntuación escalar</label>
            <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                   id="sub_rep_num_tot_esc" name="sub_rep_num_tot_esc"
                   oninput="calcularDesdeEscalar('sub_rep_num_tot_esc', 'sub_rep_num_tot_perc', 'sub_rep_num_tot_int')">
             </div>
                 <div class="input-box">
                    <label for="sub_rep_num_tot_perc">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="sub_rep_num_tot_perc" name="sub_rep_num_tot_perc" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_rep_num_tot_int">Interpretación</label>
                <textarea id="sub_rep_num_tot_int" name="sub_rep_num_tot_int" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

             <!-- Sección 23: Subprueba: Secuencia familiar 1 , aqui se anadieron los oninput y los readonly-->
               <!-- Nota: El orden de los campos es el de tu HTML original -->
            <!--
            <div class="highlight-section">
            <h3 class="sub-section-tittle">Sub-test: Secuencia Familiar</h3>
            <p class="instruccion-subprueba" style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa la puntuación bruta y los demás campos se calcularán automáticamente.</p>
             <div class="input-grid">
               
                 <div class="input-box">
                    <label for="sub_sec_fam1_brut">Puntuación bruta</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" 
                           id="sub_sec_fam1_brut" name="sub_sec_fam1_brut"
                           oninput="calcularSubpruebaSecuenciaFamiliar()">
                </div>
                <div class="input-box">
                    <label for="sub_sec_fam1_esc">Puntuación escalar</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="2" 
                        id="sub_sec_fam1_esc" 
                        name="sub_sec_fam1_esc"
                        oninput="calcularDesdeEscalar(
                                'sub_sec_fam1_esc', 
                                'sub_sec_fam1_percen', 
                                'sub_sec_fam1_interp'
                            )">
                </div>
                
                 <div class="input-box">
                    <label for="sub_sec_fam1_percen">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" 
                           id="sub_sec_fam1_percen" name="sub_sec_fam1_percen" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="sub_sec_fam1_interp">Interpretación</label>
                <textarea id="sub_sec_fam1_interp" name="sub_sec_fam1_interp" rows="3" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

         <!-- Sección 3: Puntuaciones totales de lenguaje -->
        <h2 class="subpruebas-titulo-principal">Pruebas centrales de lenguaje</h2>
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Puntuaciones Totales de Lenguaje (CLS)</h3>
            <p style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa el Estándar y los demás campos se calcularán.</p>
            <div class="input-grid">
                <div class="input-box">
                    <label for="celf58_stand_lengu_total">Estándar</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" id="celf58_stand_lengu_total" name="celf58_stand_lengu_total"
                           oninput="calcularIndice('celf58_stand_lengu_total', 'celf58_percent_lengua_tota', 'celf58_leng_tot_interpr')">
                </div>
                <div class="input-box">
                    <label for="celf58_percent_lengua_tota">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="celf58_percent_lengua_tota" name="celf58_percent_lengua_tota" readonly>
                </div>
            </div>
             <div class="input-box input-box-fullwidth">
                <label for="celf58_leng_tot_interpr">Interpretación</label>
                <textarea id="celf58_leng_tot_interpr" name="celf58_leng_tot_interpr" rows="2" readonly placeholder="Calculada"></textarea>
            </div>
        </div>

        <!-- Sección 4: Lenguaje receptivo -->
        <!--
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Lenguaje Receptivo (RLI)</h3>
            <p style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa el Estándar y los demás campos se calcularán.</p>
            <div class="input-grid">
                <div class="input-box">
                    <label for="celf58_stand_leng_recep">Estándar</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" id="celf58_stand_leng_recep" name="celf58_stand_leng_recep"
                           oninput="calcularIndice('celf58_stand_leng_recep', 'celf58_percent_leng_recept', 'celf58_leng_recep_inter')">
                </div>
                <div class="input-box">
                    <label for="celf58_percent_leng_recept">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="celf58_percent_leng_recept" name="celf58_percent_leng_recept" readonly>
                </div>
            </div>
             <div class="input-box input-box-fullwidth">
                <label for="celf58_leng_recep_inter">Interpretación</label>
                <textarea id="celf58_leng_recep_inter" name="celf58_leng_recep_inter" rows="2" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

        <!-- Sección 5: Lenguaje expresivo -->
        <!--
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Lenguaje Expresivo (ELI)</h3>
             <p style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa el Estándar y los demás campos se calcularán.</p>
            <div class="input-grid">
                <div class="input-box">
                    <label for="celf58_stand_leng_expres">Estándar</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" id="celf58_stand_leng_expres" name="celf58_stand_leng_expres"
                           oninput="calcularIndice('celf58_stand_leng_expres', 'celf58_percent_leng_expres', 'celf58_leng_expr_interpre')">
                </div>
                <div class="input-box">
                    <label for="celf58_percent_leng_expres">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="celf58_percent_leng_expres" name="celf58_percent_leng_expres" readonly>
                </div>
            </div>
             <div class="input-box input-box-fullwidth">
                <label for="celf58_leng_expr_interpre">Interpretación</label>
                <textarea id="celf58_leng_expr_interpre" name="celf58_leng_expr_interpre" rows="2" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

        <!-- Sección 6: Contenido del lenguaje -->
        <!--
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Contenido del Lenguaje (LCI)</h3>
            <p style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa el Estándar y los demás campos se calcularán.</p>
            <div class="input-grid">
                <div class="input-box">
                    <label for="celf58_stand_contenido">Estándar</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" id="celf58_stand_contenido" name="celf58_stand_contenido"
                           oninput="calcularIndice('celf58_stand_contenido', 'celf58_percent_conteni', 'celf58_contenido_interpretacion')">
                </div>
                 <div class="input-box">
                    <label for="celf58_percent_conteni">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="celf58_percent_conteni" name="celf58_percent_conteni" readonly>
                </div>
            </div>
             <div class="input-box input-box-fullwidth">
                <label for="celf58_contenido_interpretacion">Interpretación</label>
                <textarea id="celf58_contenido_interpretacion" name="celf58_contenido_interpretacion" rows="2" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

        <!-- Sección 7: Estructura del lenguaje -->
        <!--
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Estructura del Lenguaje (LSI)</h3>
            <p style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa el Estándar y los demás campos se calcularán.</p>
            <div class="input-grid">
                <div class="input-box">
                    <label for="celf58_stand_estrucct">Estándar</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" id="celf58_stand_estrucct" name="celf58_stand_estrucct"
                           oninput="calcularIndice('celf58_stand_estrucct', 'celf58_percent_estrucc', 'celf58_estrucct_interpret')">
                </div>
                <div class="input-box">
                    <label for="celf58_percent_estrucc">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="celf58_percent_estrucc" name="celf58_percent_estrucc" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="celf58_estrucct_interpret">Interpretación</label>
                <textarea id="celf58_estrucct_interpret" name="celf58_estrucct_interpret" rows="2" readonly placeholder="Calculada"></textarea>
            </div>
        </div>
    -->

        <!-- Sección 8: Memoria de trabajo -->
        <!--
        <div class="highlight-section">
            <h3 class="sub-section-tittle">Memoria de Trabajo (WMI)</h3>
            <p style="font-size: 0.9em; color: #007bff;"><strong>Instrucción:</strong> Ingresa el Estándar y los demás campos se calcularán.</p>
             <div class="input-grid">
                <div class="input-box">
                    <label for="celf58_stand_memor_dtraba">Estándar</label>
                    <input type="text" autocomplete="off" placeholder="0" maxlength="4" id="celf58_stand_memor_dtraba" name="celf58_stand_memor_dtraba"
                           oninput="calcularIndice('celf58_stand_memor_dtraba', 'celf58_percent_memor_dtrab', 'celf58_memori_traba_interpre')">
                </div>
                <div class="input-box">
                    <label for="celf58_percent_memor_dtrab">Percentil</label>
                    <input type="text" autocomplete="off" placeholder="Calculado" maxlength="4" id="celf58_percent_memor_dtrab" name="celf58_percent_memor_dtrab" readonly>
                </div>
             </div>
             <div class="input-box input-box-fullwidth">
                <label for="celf58_memori_traba_interpre">Interpretación</label>
                <textarea id="celf58_memori_traba_interpre" name="celf58_memori_traba_interpre" rows="2" readonly placeholder="Calculada"></textarea>
            </div>
    </div>
    -->

      
             
        <!-- Sección 9: Datos clínicos -->
        
    <div class="highlight-section">
    <h3 class="sub-section-tittle">Datos Clínicos</h3>
    
     <div class="input-grid">
            <div class="input-box">
            <label for="dat_clin_refera_ter">Referir a Terapia</label>
            <select class="input-field" id="dat_clin_refera_ter" name="dat_clin_refera_ter">
                <option value="No">No</option>
                <option value="Si">Sí</option>
                <option value="Habla">Habla</option>
                <option value="Lenguaje">Lenguaje</option>
                <option value="Ambas">Ambas</option>
            </select>
        </div>
            
            <div class="input-box input-box-fullwidth">
                <label for="dat_clin_obser_clinic">Observación Clínica</label>
                <textarea id="dat_clin_obser_clinic" name="dat_clin_obser_clinic" rows="5"></textarea>
            </div>
            <div class="input-box input-box-fullwidth">
                <label for="dat_clin_otr_obser">Otra Observación</label>
                <textarea id="dat_clin_otr_obser" name="dat_clin_otr_obser" rows="5"></textarea>
            </div>
        </div>
    </div>
    

            <!-- Botón de envío -->
            <!-- Eliminada la llamada a verificarForm() -->
            <input type="submit" class="btn-submit" value="Registrar" id="registrar">
        </form>

        <script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
        <script src="../Jquery/jquery-3.6.0.min.js"></script>

        <script>
            function setupFieldValidation(selector, regex) {
    document.querySelectorAll(selector).forEach(input => {
        // Guardar el valor inicial por si acaso
        input.setAttribute('data-prev-value', input.value);

        // Valida caracteres mientras se escribe (silencioso)
        input.addEventListener('input', e => {
            if (e.target.readOnly) return;
            let valor = e.target.value;
            // Modificamos la regex para que solo acepte números
            if (!regex.test(valor)) {
                e.target.value = e.target.getAttribute('data-prev-value') || '';
            }
            e.target.setAttribute('data-prev-value', e.target.value);
        });

        // Valida el valor máximo al salir del campo (con alerta)
        input.addEventListener('blur', e => {
            // Obtener el maxValue dinámicamente desde un atributo del input
            const maxValue = parseInt(e.target.getAttribute('data-max-value'), 10);
            const valor = e.target.value;

            // Si no hay maxValue o el campo está vacío, no hacemos nada
            if (isNaN(maxValue) || valor === '') return;

            const numValue = parseInt(valor, 10);

            if (!isNaN(numValue) && numValue > maxValue) {
                const labelText = e.target.labels[0]?.textContent || 'este campo';
                Swal.fire({
                    icon: 'error',
                    title: 'Valor fuera de rango',
                    text: `El puntaje para "${labelText}" no puede ser mayor a ${maxValue} para este rango de edad.`
                }).then(() => {
                    e.target.value = '';
                    e.target.focus();
                });
            }
        });
    });
}
            // --- TABLAS DE BAREMOS  --- // 0.09 = <0.1 y 99.91 = >99.9  se hizo asi para evitar texto en el campo de percentiles
            const baremoStandardAPercentil = [
                {min: 150, max: 160, percentile: "99.91"},
                {min: 145, max: 149, percentile: "99.9"},
                {min: 143, max: 144, percentile: "99.8"},
                {min: 141, max: 142, percentile: "99.7"},
                {min: 140, max: 140, percentile: "99.6"},
                {min: 139, max: 139, percentile: "99.5"},
                {min: 133, max: 138, percentile: "99"},
                {min: 130, max: 132, percentile: "98"},
                {min: 128, max: 129, percentile: "97"},
                {min: 126, max: 127, percentile: "96"},
                {min: 124, max: 125, percentile: "95"},
                {min: 123, max: 123, percentile: "94"},
                {min: 122, max: 122, percentile: "93"},
                {min: 121, max: 121, percentile: "92"},
                {min: 120, max: 120, percentile: "91"},
                {min: 119, max: 119, percentile: "90"},
                {min: 118, max: 118, percentile: "88"},
                {min: 117, max: 117, percentile: "87"},
                {min: 116, max: 116, percentile: "86"},
                {min: 115, max: 115, percentile: "84"},
                {min: 114, max: 114, percentile: "82"},
                {min: 113, max: 113, percentile: "81"},
                {min: 112, max: 112, percentile: "79"},
                {min: 111, max: 111, percentile: "77"},
                {min: 110, max: 110, percentile: "75"},
                {min: 109, max: 109, percentile: "73"},
                {min: 108, max: 108, percentile: "70"},
                {min: 107, max: 107, percentile: "68"},
                {min: 106, max: 106, percentile: "66"},
                {min: 105, max: 105, percentile: "63"},
                {min: 104, max: 104, percentile: "61"},
                {min: 103, max: 103, percentile: "58"},
                {min: 102, max: 102, percentile: "55"},
                {min: 101, max: 101, percentile: "53"},
                {min: 100, max: 100, percentile: "50"},
                {min: 99, max: 99, percentile: "47"},
                {min: 98, max: 98, percentile: "45"},
                {min: 97, max: 97, percentile: "42"},
                {min: 96, max: 96, percentile: "39"},
                {min: 95, max: 95, percentile: "37"},
                {min: 94, max: 94, percentile: "34"},
                {min: 93, max: 93, percentile: "32"},
                {min: 92, max: 92, percentile: "30"},
                {min: 91, max: 91, percentile: "27"},
                {min: 90, max: 90, percentile: "25"},
                {min: 89, max: 89, percentile: "23"},
                {min: 88, max: 88, percentile: "21"},
                {min: 87, max: 87, percentile: "19"},
                {min: 86, max: 86, percentile: "18"},
                {min: 85, max: 85, percentile: "16"},
                {min: 84, max: 84, percentile: "14"},
                {min: 83, max: 83, percentile: "13"},
                {min: 82, max: 82, percentile: "12"},
                {min: 81, max: 81, percentile: "10"},
                {min: 80, max: 80, percentile: "9"},
                {min: 79, max: 79, percentile: "8"},
                {min: 78, max: 78, percentile: "7"},
                {min: 77, max: 77, percentile: "6"},
                {min: 75, max: 76, percentile: "5"},
                {min: 73, max: 74, percentile: "4"},
                {min: 71, max: 72, percentile: "3"},
                {min: 68, max: 70, percentile: "2"},
                {min: 65, max: 67, percentile: "1"},
                {min: 62, max: 64, percentile: "1"}, // Nota: la tabla original tiene 1 dos veces, lo respetamos
                {min: 61, max: 61, percentile: "0.5"},
                {min: 60, max: 60, percentile: "0.4"},
                {min: 58, max: 59, percentile: "0.3"},
                {min: 56, max: 57, percentile: "0.2"},
                {min: 51, max: 55, percentile: "0.1"},
                {min: 40, max: 50, percentile: "0.09"}
                 ];
                

            // Tabla 1: Puntuación Bruta -> Puntuación Escalar para "Conceptos y Siguiendo Direcciones"
            const baremoConceptosDirecciones = {
                    "5:0-5:5": [
                        { min: 45, max: 50, escalar: 19 }, { min: 42, max: 44, escalar: 18 }, { min: 38, max: 41, escalar: 17 },
                        { min: 34, max: 37, escalar: 16 }, { min: 31, max: 33, escalar: 15 }, { min: 28, max: 30, escalar: 14 },
                        { min: 24, max: 27, escalar: 13 }, { min: 21, max: 23, escalar: 12 }, { min: 18, max: 20, escalar: 11 },
                        { min: 15, max: 17, escalar: 10 }, { min: 12, max: 14, escalar: 9 },  { min: 10, max: 11, escalar: 8 },
                        { min: 8, max: 9, escalar: 7 },   { min: 6, max: 7, escalar: 6 },   { min: 5, max: 5, escalar: 5 },
                        { min: 4, max: 4, escalar: 4 },   { min: 3, max: 3, escalar: 3 },   { min: 2, max: 2, escalar: 2 },
                        { min: 0, max: 1, escalar: 1 }
                    ],
                    "5:6-5:11": [
                        { min: 48, max: 50, escalar: 19 }, { min: 45, max: 47, escalar: 18 }, { min: 41, max: 44, escalar: 17 },
                        { min: 38, max: 40, escalar: 16 }, { min: 35, max: 37, escalar: 15 }, { min: 32, max: 34, escalar: 14 },
                        { min: 29, max: 31, escalar: 13 }, { min: 26, max: 28, escalar: 12 }, { min: 23, max: 25, escalar: 11 },
                        { min: 20, max: 22, escalar: 10 }, { min: 17, max: 19, escalar: 9 },  { min: 15, max: 16, escalar: 8 },
                        { min: 12, max: 14, escalar: 7 },  { min: 10, max: 11, escalar: 6 },  { min: 8, max: 9, escalar: 5 },
                        { min: 6, max: 7, escalar: 4 },   { min: 5, max: 5, escalar: 3 },    { min: 3, max: 4, escalar: 2 },
                        { min: 0, max: 2, escalar: 1 }
                    ],
                    "6:0-6:5": [
                        { min: 49, max: 50, escalar: 19 }, { min: 47, max: 48, escalar: 18 }, { min: 44, max: 46, escalar: 17 },
                        { min: 41, max: 43, escalar: 16 }, { min: 38, max: 40, escalar: 15 }, { min: 35, max: 37, escalar: 14 },
                        { min: 32, max: 34, escalar: 13 }, { min: 30, max: 31, escalar: 12 }, { min: 27, max: 29, escalar: 11 },
                        { min: 24, max: 26, escalar: 10 }, { min: 21, max: 23, escalar: 9 },  { min: 18, max: 20, escalar: 8 },
                        { min: 16, max: 17, escalar: 7 },  { min: 13, max: 15, escalar: 6 },  { min: 10, max: 12, escalar: 5 },
                        { min: 8, max: 9, escalar: 4 },   { min: 5, max: 7, escalar: 3 },    { min: 3, max: 4, escalar: 2 },
                        { min: 0, max: 2, escalar: 1 }
                    ],
                    "6:6-6:11": [
                        { min: 50, max: 50, escalar: 19 }, { min: 48, max: 49, escalar: 18 }, { min: 46, max: 47, escalar: 17 },
                        { min: 43, max: 45, escalar: 16 }, { min: 41, max: 42, escalar: 15 }, { min: 38, max: 40, escalar: 14 },
                        { min: 36, max: 37, escalar: 13 }, { min: 33, max: 35, escalar: 12 }, { min: 30, max: 32, escalar: 11 },
                        { min: 28, max: 29, escalar: 10 }, { min: 25, max: 27, escalar: 9 },  { min: 22, max: 24, escalar: 8 },
                        { min: 19, max: 21, escalar: 7 },  { min: 16, max: 18, escalar: 6 },  { min: 13, max: 15, escalar: 5 },
                        { min: 10, max: 12, escalar: 4 },  { min: 7, max: 9, escalar: 3 },    { min: 4, max: 6, escalar: 2 },
                        { min: 0, max: 3, escalar: 1 }
                    ],
                    "7:0-7:11": [
                        { min: 50, max: 50, escalar: 19 }, { min: 49, max: 49, escalar: 18 }, { min: 48, max: 48, escalar: 17 },
                        { min: 46, max: 47, escalar: 16 }, { min: 44, max: 45, escalar: 15 }, { min: 42, max: 43, escalar: 14 },
                        { min: 40, max: 41, escalar: 13 }, { min: 38, max: 39, escalar: 12 }, { min: 35, max: 37, escalar: 11 },
                        { min: 32, max: 34, escalar: 10 }, { min: 29, max: 31, escalar: 9 },  { min: 26, max: 28, escalar: 8 },
                        { min: 23, max: 25, escalar: 7 },  { min: 20, max: 22, escalar: 6 },  { min: 17, max: 19, escalar: 5 },
                        { min: 14, max: 16, escalar: 4 },  { min: 10, max: 13, escalar: 3 },  { min: 6, max: 9, escalar: 2 },
                        { min: 0, max: 5, escalar: 1 }
                    ],
                    "8:0-8:11": [
                        { min: 50, max: 50, escalar: 19 }, { min: 49, max: 49, escalar: 17 }, { min: 48, max: 48, escalar: 16 }, { min: 47, max: 47, escalar: 15 }, { min: 46, max: 46, escalar: 14 },
                        { min: 44, max: 45, escalar: 13 }, { min: 42, max: 43, escalar: 12 }, { min: 40, max: 41, escalar: 11 },
                        { min: 37, max: 39, escalar: 10 }, { min: 34, max: 36, escalar: 9 },  { min: 31, max: 33, escalar: 8 },
                        { min: 28, max: 30, escalar: 7 },  { min: 25, max: 27, escalar: 6 },  { min: 22, max: 24, escalar: 5 },
                        { min: 18, max: 21, escalar: 4 },  { min: 14, max: 17, escalar: 3 },  { min: 10, max: 13, escalar: 2 },
                        { min: 0, max: 9, escalar: 1 }
                    ]
                };

            // BAREMOS PARA RECORDAR PALABRAS (NUEVO)
            const baremoRecordarPalabras = {
                    "5:0-5:5": [
                        { min: 28, max: 29, escalar: 19 }, { min: 27, max: 27, escalar: 18 }, { min: 26, max: 26, escalar: 17 },
                        { min: 25, max: 25, escalar: 16 }, { min: 24, max: 24, escalar: 15 }, { min: 23, max: 23, escalar: 14 },
                        { min: 21, max: 22, escalar: 13 }, { min: 20, max: 20, escalar: 12 }, { min: 18, max: 19, escalar: 11 },
                        { min: 17, max: 17, escalar: 10 }, { min: 15, max: 16, escalar: 9 },  { min: 13, max: 14, escalar: 8 },
                        { min: 12, max: 12, escalar: 7 },  { min: 10, max: 11, escalar: 6 },  { min: 8, max: 9, escalar: 5 },
                        { min: 7, max: 7, escalar: 4 },    { min: 5, max: 6, escalar: 3 },    { min: 3, max: 4, escalar: 2 },
                        { min: 0, max: 2, escalar: 1 }
                    ],
                    "5:6-5:11": [
                        { min: 29, max: 29, escalar: 19 }, { min: 28, max: 28, escalar: 18 }, { min: 27, max: 27, escalar: 17 },
                        { min: 26, max: 26, escalar: 16 }, { min: 25, max: 25, escalar: 15 }, { min: 23, max: 24, escalar: 14 },
                        { min: 22, max: 22, escalar: 13 }, { min: 21, max: 21, escalar: 12 }, { min: 19, max: 20, escalar: 11 },
                        { min: 18, max: 18, escalar: 10 }, { min: 16, max: 17, escalar: 9 },  { min: 14, max: 15, escalar: 8 },
                        { min: 12, max: 13, escalar: 7 },  { min: 11, max: 11, escalar: 6 },  { min: 9, max: 10, escalar: 5 },
                        { min: 7, max: 8, escalar: 4 },    { min: 5, max: 6, escalar: 3 },    { min: 3, max: 4, escalar: 2 },
                        { min: 0, max: 2, escalar: 1 }
                    ],
                    "6:0-6:5": [
                        { min: 29, max: 29, escalar: 19 }, { min: 28, max: 28, escalar: 17 }, { min: 27, max: 27, escalar: 16 },
                        { min: 26, max: 26, escalar: 15 }, { min: 25, max: 25, escalar: 14 }, { min: 23, max: 24, escalar: 13 },
                        { min: 22, max: 22, escalar: 12 },{ min: 21, max: 21, escalar: 11 }, { min: 19, max: 20, escalar: 10 }, { min: 17, max: 18, escalar: 9 },
                        { min: 15, max: 16, escalar: 8 },  { min: 14, max: 14, escalar: 7 },  { min: 12, max: 13, escalar: 6 },
                        { min: 10, max: 11, escalar: 5 },  { min: 8, max: 9, escalar: 4 },    { min: 6, max: 7, escalar: 3 },
                        { min: 4, max: 5, escalar: 2 },    { min: 0, max: 3, escalar: 1 }
                    ],
                    "6:6-6:11": [
                        { min: 29, max: 29, escalar: 18 }, { min: 28, max: 28, escalar: 17 }, { min: 27, max: 27, escalar: 15 },
                        { min: 26, max: 26, escalar: 14 }, { min: 25, max: 25, escalar: 13 }, { min: 24, max: 24, escalar: 12 },
                        { min: 22, max: 23, escalar: 11 }, { min: 21, max: 21, escalar: 10 }, { min: 19, max: 20, escalar: 9 },
                        { min: 17, max: 18, escalar: 8 },  { min: 15, max: 16, escalar: 7 },  { min: 14, max: 14, escalar: 6 },
                        { min: 12, max: 13, escalar: 5 },  { min: 9, max: 11, escalar: 4 },  { min: 7, max: 8, escalar: 3 },
                        { min: 4, max: 6, escalar: 2 },  { min: 0, max:3, escalar: 1 }
                    ],
                    "7:0-7:11": [
                        { min: 29, max: 29, escalar: 18 }, { min: 28, max: 28, escalar: 15 }, { min: 27, max: 27, escalar: 13 },
                        { min: 26, max: 26, escalar: 12 }, { min: 25, max: 25, escalar: 11 }, { min: 23, max: 24, escalar: 10 },
                        { min: 21, max: 22, escalar: 9 }, { min: 20, max: 20, escalar: 8 }, { min: 18, max: 19, escalar: 7 },
                        { min: 16, max: 17, escalar: 6 }, { min: 14, max: 15, escalar: 5 }, { min: 11, max: 13, escalar: 4 },
                        { min: 9, max: 10, escalar: 3 }, { min: 6, max: 8, escalar: 2 }, { min: 0, max: 5, escalar: 1 }
                    ],
                    "8:0-8:11": [
                        { min: 29, max: 29, escalar: 15 }, { min: 28, max: 28, escalar: 14 }, { min: 27, max: 27, escalar: 12 },
                        { min: 26, max: 26, escalar: 11 }, { min: 25, max: 25, escalar: 10 }, { min: 23, max: 24, escalar: 9 },
                        { min: 22, max: 22, escalar: 8 },  { min: 20, max: 21, escalar: 7 },  { min: 18, max: 19, escalar: 6 },
                        { min: 16, max: 17, escalar: 5 },  { min: 14, max: 15, escalar: 4 },  { min: 12, max: 13, escalar: 3 },
                        { min: 10, max: 11, escalar: 2 },  { min: 0, max: 9, escalar: 1 }
                    ]
                };



            // BAREMOS PARA RECORDANDO ORACIONES (NUEVO)
            const baremoRecordandoOraciones = {
                    "5:0-5:5": [
                        { min: 93, max: 96, escalar: 19 }, { min: 87, max: 92, escalar: 18 }, { min: 79, max: 86, escalar: 17 },
                        { min: 69, max: 78, escalar: 16 }, { min: 60, max: 68, escalar: 15 }, { min: 51, max: 59, escalar: 14 },
                        { min: 42, max: 50, escalar: 13 }, { min: 32, max: 41, escalar: 12 }, { min: 24, max: 31, escalar: 11 },
                        { min: 16, max: 23, escalar: 10 }, { min: 10, max: 15, escalar: 9 },  { min: 5, max: 9, escalar: 8 },
                        { min: 2, max: 4, escalar: 7 },    { min: 1, max: 1, escalar: 6 },    { min: 0, max: 0, escalar: 5 }
                    ],
                    "5:6-5:11": [
                        { min: 95, max: 96, escalar: 19 }, { min: 90, max: 94, escalar: 18 }, { min: 83, max: 89, escalar: 17 },
                        { min: 75, max: 82, escalar: 16 }, { min: 66, max: 74, escalar: 15 }, { min: 57, max: 65, escalar: 14 },
                        { min: 48, max: 56, escalar: 13 }, { min: 41, max: 47, escalar: 12 }, { min: 33, max: 40, escalar: 11 },
                        { min: 24, max: 32, escalar: 10 }, { min: 16, max: 23, escalar: 9 },  { min: 10, max: 15, escalar: 8 },
                        { min: 6, max: 9, escalar: 7 },    { min: 4, max: 5, escalar: 6 },    { min: 3, max: 3, escalar: 5 },
                        { min: 2, max: 2, escalar: 4 },    { min: 1, max: 1, escalar: 3 },    { min: 0, max: 0, escalar: 2 }
                    ],
                    "6:0-6:5": [
                        { min: 95, max: 96, escalar: 19 }, { min: 90, max: 94, escalar: 18 }, { min: 83, max: 89, escalar: 17 },
                        { min: 75, max: 82, escalar: 16 }, { min: 66, max: 74, escalar: 15 }, { min: 59, max: 65, escalar: 14 },
                        { min: 53, max: 58, escalar: 13 }, { min: 46, max: 52, escalar: 12 }, { min: 40, max: 45, escalar: 11 },
                        { min: 34, max: 39, escalar: 10 }, { min: 28, max: 33, escalar: 9 },  { min: 22, max: 27, escalar: 8 },
                        { min: 16, max: 21, escalar: 7 },  { min: 10, max: 15, escalar: 6 },  { min: 5, max: 9, escalar: 5 },
                        { min: 2, max: 4, escalar: 4 },    { min: 1, max: 1, escalar: 3 },    { min: 0, max: 0, escalar: 2 }
                    ],
                    "6:6-6:11": [
                        { min: 95, max: 96, escalar: 19 }, { min: 90, max: 94, escalar: 18 }, { min: 84, max: 89, escalar: 17 },
                        { min: 78, max: 83, escalar: 16 }, { min: 72, max: 77, escalar: 15 }, { min: 66, max: 71, escalar: 14 },
                        { min: 59, max: 65, escalar: 13 }, { min: 53, max: 58, escalar: 12 }, { min: 46, max: 52, escalar: 11 },
                        { min: 40, max: 45, escalar: 10 }, { min: 33, max: 39, escalar: 9 },  { min: 27, max: 32, escalar: 8 },
                        { min: 20, max: 26, escalar: 7 },  { min: 14, max: 19, escalar: 6 },  { min: 8, max: 13, escalar: 5 },
                        { min: 4, max: 7, escalar: 4 },    { min: 2, max: 3, escalar: 3 }, { min: 1, max: 1, escalar: 2 }, { min: 0, max: 0, escalar: 1 }
                    ],
                    "7:0-7:11": [
                        { min: 95, max: 96, escalar: 19 }, { min: 94, max: 94, escalar: 18 }, { min: 92, max: 93, escalar: 17 },
                        { min: 88, max: 91, escalar: 16 }, { min: 82, max: 87, escalar: 15 }, { min: 76, max: 81, escalar: 14 },
                        { min: 68, max: 75, escalar: 13 }, { min: 62, max: 67, escalar: 12 }, { min: 55, max: 61, escalar: 11 },
                        { min: 48, max: 54, escalar: 10 }, { min: 40, max: 47, escalar: 9 },  { min: 33, max: 39, escalar: 8 },
                        { min: 25, max: 32, escalar: 7 },  { min: 18, max: 24, escalar: 6 },  { min: 11, max: 17, escalar: 5 },
                        { min: 6, max: 10, escalar: 4 },   { min: 3, max: 5, escalar: 3 },    { min: 1, max: 2, escalar: 2 },
                        { min: 0, max: 0, escalar: 1 }
                    ],
                    "8:0-8:11": [
                        { min: 96, max: 96, escalar: 19 }, { min: 95, max: 95, escalar: 18 }, { min: 93, max: 94, escalar: 17 },
                        { min: 89, max: 92, escalar: 16 }, { min: 84, max: 88, escalar: 15 }, { min: 81, max: 83, escalar: 14 },
                        { min: 78, max: 80, escalar: 13 }, { min: 73, max: 77, escalar: 12 }, { min: 66, max: 72, escalar: 11 },
                        { min: 58, max: 65, escalar: 10 }, { min: 49, max: 57, escalar: 9 },  { min: 40, max: 48, escalar: 8 },
                        { min: 31, max: 39, escalar: 7 },  { min: 23, max: 30, escalar: 6 },  { min: 15, max: 22, escalar: 5 },
                        { min: 9, max: 14, escalar: 4 },   { min: 4, max: 8, escalar: 3 },    { min: 1, max: 3, escalar: 2 },
                        { min: 0, max: 0, escalar: 1 }
                    ]
                };

            const baremoFormulacionOraciones = {
                    "5:0-5:5": [
                        { min: 39, max: 46, escalar: 19 }, { min: 34, max: 38, escalar: 18 }, { min: 30, max: 33, escalar: 17 },
                        { min: 27, max: 29, escalar: 16 }, { min: 23, max: 26, escalar: 15 }, { min: 20, max: 22, escalar: 14 },
                        { min: 16, max: 19, escalar: 13 }, { min: 12, max: 15, escalar: 12 }, { min: 9, max: 11, escalar: 11 },
                        { min: 6, max: 8, escalar: 10 },  { min: 3, max: 5, escalar: 9 },    { min: 1, max: 2, escalar: 8 },
                        { min: 0, max: 0, escalar: 7 }
                    ],
                    "5:6-5:11": [
                        { min: 41, max: 46, escalar: 19 }, { min: 38, max: 40, escalar: 18 }, { min: 34, max: 37, escalar: 17 },
                        { min: 31, max: 33, escalar: 16 }, { min: 28, max: 30, escalar: 15 }, { min: 24, max: 27, escalar: 14 },
                        { min: 21, max: 23, escalar: 13 }, { min: 17, max: 20, escalar: 12 }, { min: 14, max: 16, escalar: 11 },
                        { min: 11, max: 13, escalar: 10 }, { min: 8, max: 10, escalar: 9 },   { min: 6, max: 7, escalar: 8 },
                        { min: 4, max: 5, escalar: 7 },    { min: 3, max: 3, escalar: 6 },    { min: 2, max: 2, escalar: 5 },
                        { min: 1, max: 1, escalar: 4 },    { min: 0, max: 0, escalar: 3 }
                    ],
                    "6:0-6:5": [
                        { min: 44, max: 46, escalar: 19 }, { min: 40, max: 43, escalar: 18 }, { min: 37, max: 39, escalar: 17 },
                        { min: 34, max: 36, escalar: 16 }, { min: 31, max: 33, escalar: 15 }, { min: 28, max: 30, escalar: 14 },
                        { min: 25, max: 27, escalar: 13 }, { min: 22, max: 24, escalar: 12 }, { min: 18, max: 21, escalar: 11 },
                        { min: 15, max: 17, escalar: 10 }, { min: 13, max: 14, escalar: 9 },  { min: 10, max: 12, escalar: 8 },
                        { min: 7, max: 9, escalar: 7 },    { min: 4, max: 6, escalar: 6 },    { min: 2, max: 3, escalar: 5 },
                        { min: 1, max: 1, escalar: 4 },    { min: 0, max: 0, escalar: 3 }
                    ],
                    "6:6-6:11": [
                        { min: 45, max: 46, escalar: 19 }, { min: 43, max: 44, escalar: 18 }, { min: 40, max: 42, escalar: 17 },
                        { min: 37, max: 39, escalar: 16 }, { min: 34, max: 36, escalar: 15 }, { min: 31, max: 33, escalar: 14 },
                        { min: 28, max: 30, escalar: 13 }, { min: 25, max: 27, escalar: 12 }, { min: 22, max: 24, escalar: 11 },
                        { min: 19, max: 21, escalar: 10 }, { min: 16, max: 18, escalar: 9 },  { min: 14, max: 15, escalar: 8 },
                        { min: 11, max: 13, escalar: 7 },  { min: 8, max: 10, escalar: 6 },   { min: 5, max: 7, escalar: 5 },
                        { min: 3, max: 4, escalar: 4 },    { min: 1, max: 2, escalar: 3 },    { min: 0, max: 0, escalar: 2 }
                    ],
                    "7:0-7:11": [
                        { min: 46, max: 46, escalar: 19 }, { min: 45, max: 45, escalar: 18 }, { min: 43, max: 44, escalar: 17 },
                        { min: 41, max: 42, escalar: 16 }, { min: 38, max: 40, escalar: 15 }, { min: 36, max: 37, escalar: 14 },
                        { min: 33, max: 35, escalar: 13 }, { min: 30, max: 32, escalar: 12 }, { min: 27, max: 29, escalar: 11 },
                        { min: 24, max: 26, escalar: 10 }, { min: 21, max: 23, escalar: 9 },  { min: 18, max: 20, escalar: 8 },
                        { min: 15, max: 17, escalar: 7 },  { min: 12, max: 14, escalar: 6 },  { min: 8, max: 11, escalar: 5 },
                        { min: 5, max: 7, escalar: 4 },    { min: 3, max: 4, escalar: 3 },    { min: 1, max: 2, escalar: 2 },
                        { min: 0, max: 0, escalar: 1 }
                    ],
                    "8:0-8:11": [
                        { min: 46, max: 46, escalar: 17 }, { min: 45, max: 45, escalar: 16 }, { min: 43, max: 44, escalar: 15 },
                        { min: 40, max: 42, escalar: 14 }, { min: 38, max: 39, escalar: 13 }, { min: 35, max: 37, escalar: 12 },
                        { min: 32, max: 34, escalar: 11 }, { min: 29, max: 31, escalar: 10 }, { min: 26, max: 28, escalar: 9 },
                        { min: 23, max: 25, escalar: 8 },  { min: 19, max: 22, escalar: 7 },  { min: 16, max: 18, escalar: 6 },
                        { min: 12, max: 15, escalar: 5 },  { min: 9, max: 11, escalar: 4 },   { min: 5, max: 8, escalar: 3 },
                        { min: 2, max: 4, escalar: 2 },    { min: 0, max: 1, escalar: 1 }
                    ]
                };

            const baremoClasesReceptivo = {
                    "5:0-5:5": [{min:25,max:25,escalar:14},{min:24,max:24,escalar:12},{min:23,max:23,escalar:11},{min:21,max:22,escalar:10},{min:19,max:20,escalar:9},{min:16,max:18,escalar:8},{min:14,max:15,escalar:7},{min:12,max:13,escalar:6},{min:9,max:11,escalar:5},{min:6,max:8,escalar:4},{min:3,max:5,escalar:3},{min:1,max:2,escalar:2},{min:0,max:0,escalar:1}],
                    "5:6-5:11": [{min:25,max:25,escalar:13},{min:24,max:24,escalar:12},{min:23,max:23,escalar:10},{min:22,max:22,escalar:9},{min:20,max:21,escalar:8},{min:18,max:19,escalar:7},{min:16,max:17,escalar:6},{min:14,max:15,escalar:5},{min:12,max:13,escalar:4},{min:10,max:11,escalar:3},{min:8,max:9,escalar:2},{min:0,max:7,escalar:1}],
                    "6:0-6:5": [{min:25,max:25,escalar:13},{min:24,max:24,escalar:11},{min:23,max:23,escalar:9},{min:22,max:22,escalar:8},{min:20,max:21,escalar:7},{min:18,max:19,escalar:6},{min:17,max:17,escalar:5},{min:16,max:16,escalar:4},{min:14,max:15,escalar:3},{min:12,max:13,escalar:2},{min:0,max:11,escalar:1}],
                    "6:6-6:11": [{min:25,max:25,escalar:12},{min:24,max:24,escalar:10},{min:23,max:23,escalar:8},{min:22,max:22,escalar:7},{min:21,max:21,escalar:6},{min:20,max:20,escalar:5},{min:19,max:19,escalar:4},{min:18,max:18,escalar:3},{min:17,max:17,escalar:2},{min:0,max:16,escalar:1}],
                    "7:0-7:11": [{min:25,max:25,escalar:12},{min:24,max:24,escalar:10},{min:23,max:23,escalar:8},{min:22,max:22,escalar:6},{min:21,max:21,escalar:5},{min:20,max:20,escalar:4},{min:19,max:19,escalar:3},{min:18,max:18,escalar:2},{min:0,max:17,escalar:1}],
                    "8:0-8:11": [{min:26,max:26,escalar:15},{min:25,max:25,escalar:14},{min:24,max:24,escalar:13},{min:22,max:23,escalar:12},{min:20,max:21,escalar:11},{min:18,max:19,escalar:10},{min:15,max:17,escalar:9},{min:12,max:14,escalar:8},{min:10,max:11,escalar:7},{min:7,max:9,escalar:6},{min:5,max:6,escalar:5},{min:3,max:4,escalar:4},{min:1,max:2,escalar:3},{min:0,max:0,escalar:2}]
                };

            const baremoClasesExpresivo = {
                    "5:0-5:5": [{min:25,max:25,escalar:18},{min:24,max:24,escalar:16},{min:23,max:23,escalar:14},{min:22,max:22,escalar:13},{min:20,max:21,escalar:12},{min:17,max:19,escalar:11},{min:14,max:16,escalar:10},{min:11,max:13,escalar:9},{min:8,max:10,escalar:8},{min:5,max:7,escalar:7},{min:3,max:4,escalar:6},{min:2,max:2,escalar:5},{min:1,max:1,escalar:4},{min:0,max:0,escalar:3}],
                    "5:6-5:11": [{min:25,max:25,escalar:15},{min:24,max:24,escalar:13},{min:22,max:23,escalar:12},{min:19,max:21,escalar:11},{min:16,max:18,escalar:10},{min:13,max:15,escalar:9},{min:10,max:12,escalar:8},{min:7,max:9,escalar:7},{min:4,max:6,escalar:6},{min:2,max:3,escalar:5},{min:1,max:1,escalar:4},{min:0,max:0,escalar:3}],
                    "6:0-6:5": [{min:25,max:25,escalar:14},{min:24,max:24,escalar:13},{min:23,max:23,escalar:12},{min:21,max:22,escalar:11},{min:18,max:20,escalar:10},{min:15,max:17,escalar:9},{min:12,max:14,escalar:8},{min:10,max:11,escalar:7},{min:7,max:9,escalar:6},{min:4,max:6,escalar:5},{min:2,max:3,escalar:4},{min:1,max:1,escalar:3},{min:0,max:0,escalar:2}],
                    "6:6-6:11": [{min:25,max:25,escalar:14},{min:24,max:24,escalar:13},{min:23,max:23,escalar:12},{min:22,max:22,escalar:11},{min:20,max:21,escalar:10},{min:17,max:19,escalar:9},{min:15,max:16,escalar:8},{min:13,max:14,escalar:7},{min:11,max:12,escalar:6},{min:9,max:10,escalar:5},{min:6,max:8,escalar:4},{min:3,max:5,escalar:3},{min:1,max:2,escalar:2},{min:0,max:0,escalar:1}],
                    "7:0-7:11": [{min:25,max:25,escalar:14},{min:24,max:24,escalar:13},{min:23,max:23,escalar:12},{min:22,max:22,escalar:11},{min:21,max:21,escalar:10},{min:20,max:20,escalar:9},{min:19,max:19,escalar:8},{min:17,max:18,escalar:7},{min:16,max:16,escalar:6},{min:15,max:15,escalar:5},{min:13,max:14,escalar:4},{min:11,max:12,escalar:3},{min:9,max:10,escalar:2},{min:0,max:8,escalar:1}],
                    "8:0-8:11": [{min:26,max:26,escalar:17},{min:25,max:25,escalar:15},{min:23,max:24,escalar:14},{min:20,max:22,escalar:13},{min:18,max:19,escalar:12},{min:16,max:17,escalar:11},{min:14,max:15,escalar:10},{min:12,max:13,escalar:9},{min:10,max:11,escalar:8},{min:7,max:9,escalar:7},{min:5,max:6,escalar:6},{min:3,max:4,escalar:5},{min:2,max:2,escalar:4},{min:1,max:1,escalar:3},{min:0,max:0,escalar:2}]
                };

            //Tabla de equivalencia para la suma de escalares de clase de palaras, a escalar de nuevo
            const baremoSumaEscalaresAEscalar = [
                    {min:36,max:38,escalar:19},{min:34,max:35,escalar:18},{min:32,max:33,escalar:17},{min:30,max:31,escalar:16},
                    {min:28,max:29,escalar:15},{min:27,max:27,escalar:14},{min:25,max:26,escalar:13},{min:23,max:24,escalar:12},
                    {min:21,max:22,escalar:11},{min:20,max:20,escalar:10},{min:18,max:19,escalar:9},{min:16,max:17,escalar:8},
                    {min:14,max:15,escalar:7},{min:12,max:13,escalar:6},{min:10,max:11,escalar:5},{min:8,max:9,escalar:4},
                    {min:6,max:7,escalar:3},{min:4,max:5,escalar:2},{min:2,max:3,escalar:1}
                ];

            // Tabla 2: Puntuación Escalar -> Percentil (para todos los subtests)
            const baremoEscalarAPercentil = {
                    1: "0.1", 2: "0.4", 3: "1", 4: "2", 5: "5", 6: "9", 7: "16", 8: "25", 9: "37",
                    10: "50", 11: "63", 12: "75", 13: "84", 14: "91", 15: "95", 16: "98", 17: "99",
                    18: "99.6", 19: "99.9"
                };

            const baremoEstructuracionOraciones = {
                        "5:0-5:5": [{min:31,max:31,escalar:19},{min:30,max:30,escalar:18},{min:29,max:29,escalar:17},{min:28,max:28,escalar:16},{min:27,max:27,escalar:15},{min:25,max:26,escalar:14},{min:24,max:24,escalar:13},{min:22,max:23,escalar:12},{min:21,max:21,escalar:11},{min:19,max:20,escalar:10},{min:17,max:18,escalar:9},{min:15,max:16,escalar:8},{min:14,max:14,escalar:7},{min:12,max:13,escalar:6},{min:10,max:11,escalar:5},{min:8,max:9,escalar:4},{min:6,max:7,escalar:3},{min:4,max:5,escalar:2},{min:0,max:3,escalar:1}],
                        "5:6-5:11": [{min:31,max:31,escalar:19},{min:30,max:30,escalar:17},{min:29,max:29,escalar:16},{min:28,max:28,escalar:15},{min:27,max:27,escalar:14},{min:25,max:26,escalar:13},{min:24,max:24,escalar:12},{min:22,max:23,escalar:11},{min:21,max:21,escalar:10},{min:19,max:20,escalar:9},{min:17,max:18,escalar:8},{min:15,max:16,escalar:7},{min:14,max:14,escalar:6},{min:12,max:13,escalar:5},{min:10,max:11,escalar:4},{min:8,max:9,escalar:3},{min:5,max:7,escalar:2},{min:0,max:4,escalar:1}],
                        "6:0-6:5": [{min:31,max:31,escalar:17},{min:30,max:30,escalar:16},{min:29,max:29,escalar:15},{min:28,max:28,escalar:14},{min:27,max:27,escalar:13},{min:26,max:26,escalar:12},{min:24,max:25,escalar:11},{min:23,max:23,escalar:10},{min:21,max:22,escalar:9},{min:19,max:20,escalar:8},{min:17,max:18,escalar:7},{min:16,max:16,escalar:6},{min:14,max:15,escalar:5},{min:12,max:13,escalar:4},{min:10,max:11,escalar:3},{min:7,max:9,escalar:2},{min:0,max:6,escalar:1}],
                        "6:6-6:11": [{min:31,max:31,escalar:16},{min:30,max:30,escalar:15},{min:29,max:29,escalar:13},{min:28,max:28,escalar:12},{min:26,max:27,escalar:11},{min:25,max:25,escalar:10},{min:23,max:24,escalar:9},{min:21,max:22,escalar:8},{min:20,max:20,escalar:7},{min:18,max:19,escalar:6},{min:16,max:17,escalar:5},{min:14,max:15,escalar:4},{min:12,max:13,escalar:3},{min:10,max:11,escalar:2},{min:0,max:9,escalar:1}],
                        "7:0-7:11": [{min:31,max:31,escalar:15},{min:30,max:30,escalar:14},{min:29,max:29,escalar:12},{min:28,max:28,escalar:11},{min:27,max:27,escalar:10},{min:25,max:26,escalar:9},{min:24,max:24,escalar:8},{min:22,max:23,escalar:7},{min:21,max:21,escalar:6},{min:20,max:20,escalar:5},{min:18,max:19,escalar:4},{min:15,max:17,escalar:3},{min:13,max:14,escalar:2},{min:0,max:12,escalar:1}],
                        "8:0-8:11": [{min:31,max:31,escalar:14},{min:30,max:30,escalar:13},{min:29,max:29,escalar:11},{min:28,max:28,escalar:10},{min:27,max:27,escalar:9},{min:25,max:26,escalar:8},{min:24,max:24,escalar:7},{min:23,max:23,escalar:6},{min:22,max:22,escalar:5},{min:20,max:21,escalar:4},{min:18,max:19,escalar:3},{min:16,max:17,escalar:2},{min:0,max:15,escalar:1}]
                    };

            const baremoVocabularioExpresivo = {
                    "5:0-5:5": [{min:56,max:58,escalar:19},{min:50,max:55,escalar:18},{min:43,max:49,escalar:17},{min:37,max:42,escalar:16},{min:32,max:36,escalar:15},{min:28,max:31,escalar:14},{min:23,max:27,escalar:13},{min:18,max:22,escalar:12},{min:13,max:17,escalar:11},{min:9,max:12,escalar:10},{min:6,max:8,escalar:9},{min:4,max:5,escalar:8},{min:2,max:3,escalar:7},{min:1,max:1,escalar:6},{min:0,max:0,escalar:5}],
                    "5:6-5:11": [{min:58,max:58,escalar:19},{min:55,max:57,escalar:18},{min:51,max:54,escalar:17},{min:46,max:50,escalar:16},{min:40,max:45,escalar:15},{min:35,max:39,escalar:14},{min:29,max:34,escalar:13},{min:23,max:28,escalar:12},{min:16,max:22,escalar:11},{min:11,max:15,escalar:10},{min:8,max:10,escalar:9},{min:5,max:7,escalar:8},{min:2,max:4,escalar:7},{min:1,max:1,escalar:6},{min:0,max:0,escalar:5}],
                    "6:0-6:5": [{min:58,max:58,escalar:19},{min:56,max:57,escalar:18},{min:53,max:55,escalar:17},{min:49,max:52,escalar:16},{min:44,max:48,escalar:15},{min:39,max:43,escalar:14},{min:33,max:38,escalar:13},{min:27,max:32,escalar:12},{min:21,max:26,escalar:11},{min:15,max:20,escalar:10},{min:10,max:14,escalar:9},{min:6,max:9,escalar:8},{min:3,max:5,escalar:7},{min:1,max:2,escalar:6},{min:0,max:0,escalar:5}],
                    "6:6-6:11": [{min:58,max:58,escalar:19},{min:56,max:57,escalar:18},{min:53,max:55,escalar:17},{min:49,max:52,escalar:16},{min:45,max:48,escalar:15},{min:40,max:44,escalar:14},{min:35,max:39,escalar:13},{min:30,max:34,escalar:12},{min:26,max:29,escalar:11},{min:21,max:25,escalar:10},{min:17,max:20,escalar:9},{min:13,max:16,escalar:8},{min:9,max:12,escalar:7},{min:6,max:8,escalar:6},{min:3,max:5,escalar:5},{min:1,max:2,escalar:4},{min:0,max:0,escalar:3}],
                    "7:0-7:11": [{min:58,max:58,escalar:18},{min:56,max:57,escalar:17},{min:53,max:55,escalar:16},{min:50,max:52,escalar:15},{min:46,max:49,escalar:14},{min:42,max:45,escalar:13},{min:37,max:41,escalar:12},{min:33,max:36,escalar:11},{min:29,max:32,escalar:10},{min:24,max:28,escalar:9},{min:19,max:23,escalar:8},{min:14,max:18,escalar:7},{min:10,max:13,escalar:6},{min:6,max:9,escalar:5},{min:3,max:5,escalar:4},{min:1,max:2,escalar:3},{min:0,max:0,escalar:2}],
                    "8:0-8:11": [{min:58,max:58,escalar:17},{min:57,max:57,escalar:16},{min:55,max:56,escalar:15},{min:52,max:54,escalar:14},{min:49,max:51,escalar:13},{min:45,max:48,escalar:12},{min:41,max:44,escalar:11},{min:37,max:40,escalar:10},{min:32,max:36,escalar:9},{min:27,max:31,escalar:8},{min:22,max:26,escalar:7},{min:17,max:21,escalar:6},{min:12,max:16,escalar:5},{min:8,max:11,escalar:4},{min:4,max:7,escalar:3},{min:1,max:3,escalar:2},{min:0,max:0,escalar:1}]
                };

            const baremoEntendimientoParrafos = {
                        "5:0-5:5": [{min:15,max:15,escalar:16},{min:14,max:14,escalar:14},{min:13,max:13,escalar:13},{min:12,max:12,escalar:12},{min:11,max:11,escalar:11},{min:10,max:10,escalar:10},{min:9,max:9,escalar:9},{min:7,max:8,escalar:8},{min:6,max:6,escalar:7},{min:4,max:5,escalar:6},{min:3,max:3,escalar:5},{min:2,max:2,escalar:4},{min:1,max:1,escalar:3},{min:0,max:0,escalar:2}],
                        "5:6-5:11": [{min:15,max:15,escalar:15},{min:14,max:14,escalar:14},{min:13,max:13,escalar:12},{min:11,max:12,escalar:11},{min:10,max:10,escalar:10},{min:9,max:9,escalar:9},{min:7,max:8,escalar:8},{min:6,max:6,escalar:7},{min:4,max:5,escalar:6},{min:3,max:3,escalar:5},{min:2,max:2,escalar:4},{min:1,max:1,escalar:3},{min:0,max:0,escalar:2}],
                        "6:0-6:5": [{min:15,max:15,escalar:15},{min:14,max:14,escalar:14},{min:13,max:13,escalar:12},{min:12,max:12,escalar:11},{min:11,max:11,escalar:10},{min:9,max:10,escalar:9},{min:8,max:8,escalar:8},{min:6,max:7,escalar:7},{min:5,max:5,escalar:6},{min:4,max:4,escalar:5},{min:2,max:3,escalar:4},{min:1,max:1,escalar:3},{min:0,max:0,escalar:2}],
                        "6:6-6:11": [{min:15,max:15,escalar:15},{min:14,max:14,escalar:14},{min:13,max:13,escalar:12},{min:12,max:12,escalar:11},{min:11,max:11,escalar:10},{min:10,max:10,escalar:9},{min:9,max:9,escalar:8},{min:8,max:8,escalar:7},{min:6,max:7,escalar:6},{min:5,max:5,escalar:5},{min:4,max:4,escalar:4},{min:2,max:3,escalar:3},{min:1,max:1,escalar:2},{min:0,max:0,escalar:1}],
                        "7:0-7:11": [{min:15,max:15,escalar:14},{min:14,max:14,escalar:12},{min:13,max:13,escalar:10},{min:12,max:12,escalar:9},{min:11,max:11,escalar:8},{min:10,max:10,escalar:7},{min:9,max:9,escalar:6},{min:8,max:8,escalar:5},{min:7,max:7,escalar:4},{min:6,max:6,escalar:3},{min:5,max:5,escalar:2},{min:0,max:4,escalar:1}],
                        "8:0-8:11": [{min:15,max:15,escalar:13},{min:14,max:14,escalar:11},{min:13,max:13,escalar:9},{min:12,max:12,escalar:7},{min:11,max:11,escalar:6},{min:10,max:10,escalar:5},{min:9,max:9,escalar:4},{min:8,max:8,escalar:3},{min:6,max:7,escalar:2},{min:0,max:5,escalar:1}]
                    };

            const baremoRepNumerosForward = {
                "5:0-5:5":   [{min:11,max:16,escalar:19},{min:10,max:10,escalar:18},{min:9,max:9,escalar:17},{min:8,max:8,escalar:15},{min:7,max:7,escalar:14},{min:6,max:6,escalar:12},{min:5,max:5,escalar:11},{min:4,max:4,escalar:9},{min:3,max:3,escalar:7},{min:2,max:2,escalar:5},{min:1,max:1,escalar:3},{min:0,max:0,escalar:1}],
                "5:6-5:11":  [{min:12,max:16,escalar:19},{min:11,max:11,escalar:18},{min:10,max:10,escalar:17},{min:9,max:9,escalar:16},{min:8,max:8,escalar:15},{min:7,max:7,escalar:13},{min:6,max:6,escalar:12},{min:5,max:5,escalar:10},{min:4,max:4,escalar:8},{min:3,max:3,escalar:7},{min:2,max:2,escalar:5},{min:1,max:1,escalar:3},{min:0,max:0,escalar:1}],
                "6:0-6:5":   [{min:12,max:16,escalar:19},{min:11,max:11,escalar:18},{min:10,max:10,escalar:17},{min:9,max:9,escalar:16},{min:8,max:8,escalar:14},{min:7,max:7,escalar:13},{min:6,max:6,escalar:11},{min:5,max:5,escalar:10},{min:4,max:4,escalar:8},{min:3,max:3,escalar:6},{min:2,max:2,escalar:4},{min:1,max:1,escalar:2},{min:0,max:0,escalar:1}],
                "6:6-6:11":  [{min:12,max:16,escalar:19},{min:11,max:11,escalar:18},{min:10,max:10,escalar:17},{min:9,max:9,escalar:16},{min:8,max:8,escalar:14},{min:7,max:7,escalar:12},{min:6,max:6,escalar:11},{min:5,max:5,escalar:9},{min:4,max:4,escalar:8},{min:3,max:3,escalar:6},{min:2,max:2,escalar:4},{min:1,max:1,escalar:2},{min:0,max:0,escalar:1}],
                "7:0-7:11":  [{min:13,max:16,escalar:19},{min:12,max:12,escalar:18},{min:11,max:11,escalar:17},{min:10,max:10,escalar:16},{min:9,max:9,escalar:15},{min:8,max:8,escalar:13},{min:7,max:7,escalar:12},{min:6,max:6,escalar:10},{min:5,max:5,escalar:9},{min:4,max:4,escalar:7},{min:3,max:3,escalar:5},{min:2,max:2,escalar:3},{min:1,max:1,escalar:2},{min:0,max:0,escalar:1}],
                "8:0-8:11":  [{min:13,max:16,escalar:19},{min:12,max:12,escalar:18},{min:11,max:11,escalar:17},{min:10,max:10,escalar:15},{min:9,max:9,escalar:14},{min:8,max:8,escalar:12},{min:7,max:7,escalar:11},{min:6,max:6,escalar:10},{min:5,max:5,escalar:8},{min:4,max:4,escalar:6},{min:3,max:3,escalar:4},{min:2,max:2,escalar:2},{min:0,max:1,escalar:1}],
            };

            const baremoRepNumerosBackward = {
                "5:0-5:5":   [{min:5,max:14,escalar:19},{min:4,max:4,escalar:18},{min:3,max:3,escalar:16},{min:2,max:2,escalar:13},{min:1,max:1,escalar:10},{min:0,max:0,escalar:7}],
                "5:6-5:11":  [{min:7,max:14,escalar:19},{min:6,max:6,escalar:18},{min:5,max:5,escalar:17},{min:4,max:4,escalar:16},{min:3,max:3,escalar:14},{min:2,max:2,escalar:12},{min:1,max:1,escalar:9},{min:0,max:0,escalar:6}],
                "6:0-6:5":   [{min:7,max:14,escalar:19},{min:6,max:6,escalar:18},{min:5,max:5,escalar:17},{min:4,max:4,escalar:15},{min:3,max:3,escalar:13},{min:2,max:2,escalar:11},{min:1,max:1,escalar:8},{min:0,max:0,escalar:6}],
                "6:6-6:11":  [{min:8,max:14,escalar:19},{min:7,max:7,escalar:18},{min:6,max:6,escalar:17},{min:5,max:5,escalar:15},{min:4,max:4,escalar:14},{min:3,max:3,escalar:12},{min:2,max:2,escalar:10},{min:1,max:1,escalar:8},{min:0,max:0,escalar:6}],
                "7:0-7:11":  [{min:8,max:14,escalar:19},{min:7,max:7,escalar:18},{min:6,max:6,escalar:16},{min:5,max:5,escalar:14},{min:4,max:4,escalar:12},{min:3,max:3,escalar:11},{min:2,max:2,escalar:9},{min:1,max:1,escalar:7},{min:0,max:0,escalar:4}],
                "8:0-8:11":  [{min:9,max:14,escalar:19},{min:8,max:8,escalar:18},{min:7,max:7,escalar:16},{min:6,max:6,escalar:15},{min:5,max:5,escalar:13},{min:4,max:4,escalar:11},{min:3,max:3,escalar:9},{min:2,max:2,escalar:7},{min:1,max:1,escalar:5},{min:0,max:0,escalar:2}],
            };

            const baremoRepNumerosTotal = {
                "5:0-5:5":   [{min:13,max:30,escalar:19},{min:12,max:12,escalar:18},{min:11,max:11,escalar:17},{min:10,max:10,escalar:16},{min:9,max:9,escalar:15},{min:8,max:8,escalar:14},{min:7,max:7,escalar:12},{min:6,max:6,escalar:11},{min:5,max:5,escalar:10},{min:4,max:4,escalar:9},{min:3,max:3,escalar:8},{min:2,max:2,escalar:7},{min:1,max:1,escalar:6},{min:0,max:0,escalar:4}],
                "5:6-5:11":  [{min:15,max:30,escalar:19},{min:14,max:14,escalar:18},{min:13,max:13,escalar:17},{min:12,max:12,escalar:16},{min:11,max:11,escalar:15},{min:10,max:10,escalar:14},{min:9,max:9,escalar:13},{min:8,max:8,escalar:12},{min:7,max:7,escalar:11},{min:6,max:6,escalar:10},{min:5,max:5,escalar:9},{min:4,max:4,escalar:8},{min:3,max:3,escalar:7},{min:2,max:2,escalar:5},{min:1,max:1,escalar:3},{min:0,max:0,escalar:1}],
                "6:0-6:5":   [{min:16,max:30,escalar:19},{min:15,max:15,escalar:18},{min:14,max:14,escalar:17},{min:13,max:13,escalar:16},{min:12,max:12,escalar:15},{min:11,max:11,escalar:14},{min:10,max:10,escalar:13},{min:9,max:9,escalar:12},{min:8,max:8,escalar:11},{min:7,max:7,escalar:10},{min:6,max:6,escalar:9},{min:5,max:5,escalar:8},{min:4,max:4,escalar:6},{min:3,max:3,escalar:5},{min:2,max:2,escalar:3},{min:1,max:1,escalar:2},{min:0,max:0,escalar:1}],
                "6:6-6:11":  [{min:16,max:30,escalar:19},{min:15,max:15,escalar:18},{min:14,max:14,escalar:17},{min:13,max:13,escalar:15},{min:12,max:12,escalar:14},{min:11,max:11,escalar:13},{min:10,max:10,escalar:12},{min:9,max:9,escalar:11},{min:8,max:8,escalar:10},{min:7,max:7,escalar:9},{min:6,max:6,escalar:8},{min:5,max:5,escalar:7},{min:4,max:4,escalar:6},{min:3,max:3,escalar:5},{min:2,max:2,escalar:3},{min:0,max:1,escalar:1}],
                "7:0-7:11":  [{min:18,max:30,escalar:19},{min:17,max:17,escalar:18},{min:16,max:16,escalar:17},{min:15,max:15,escalar:16},{min:14,max:14,escalar:15},{min:13,max:13,escalar:14},{min:12,max:12,escalar:13},{min:11,max:11,escalar:12},{min:10,max:10,escalar:11},{min:9,max:9,escalar:10},{min:8,max:8,escalar:9},{min:7,max:7,escalar:8},{min:6,max:6,escalar:7},{min:5,max:5,escalar:6},{min:4,max:4,escalar:5},{min:3,max:3,escalar:3},{min:0,max:2,escalar:1}],
                "8:0-8:11":  [{min:20,max:30,escalar:19},{min:18,max:19,escalar:18},{min:17,max:17,escalar:17},{min:16,max:16,escalar:16},{min:15,max:15,escalar:15},{min:14,max:14,escalar:14},{min:13,max:13,escalar:13},{min:12,max:12,escalar:12},{min:11,max:11,escalar:11},{min:10,max:10,escalar:10},{min:9,max:9,escalar:9},{min:8,max:8,escalar:8},{min:7,max:7,escalar:7},{min:6,max:6,escalar:5},{min:5,max:5,escalar:4},{min:4,max:4,escalar:2},{min:0,max:3,escalar:1}],
            };


            const baremoSecuenciaFamiliar = {
                "5:0-5:5": [{min:35,max:84,escalar:19},{min:32,max:34,escalar:18},{min:29,max:31,escalar:17},{min:26,max:28,escalar:16},{min:22,max:25,escalar:15},{min:19,max:21,escalar:14},{min:15,max:18,escalar:13},{min:12,max:14,escalar:12},{min:9,max:11,escalar:11},{min:6,max:8,escalar:10},{min:4,max:5,escalar:9},{min:2,max:3,escalar:8},{min:0,max:1,escalar:7}],
                "5:6-5:11": [{min:42,max:84,escalar:19},{min:38,max:41,escalar:18},{min:34,max:37,escalar:17},{min:30,max:33,escalar:16},{min:26,max:29,escalar:15},{min:23,max:25,escalar:14},{min:19,max:22,escalar:13},{min:16,max:18,escalar:12},{min:13,max:15,escalar:11},{min:9,max:12,escalar:10},{min:6,max:8,escalar:9},{min:4,max:5,escalar:8},{min:2,max:3,escalar:7},{min:1,max:1,escalar:6},{min:0,max:0,escalar:5}],
                "6:0-6:5": [{min:46,max:84,escalar:19},{min:42,max:45,escalar:18},{min:38,max:41,escalar:17},{min:34,max:37,escalar:16},{min:30,max:33,escalar:15},{min:26,max:29,escalar:14},{min:23,max:25,escalar:13},{min:19,max:22,escalar:12},{min:16,max:18,escalar:11},{min:13,max:15,escalar:10},{min:10,max:12,escalar:9},{min:7,max:9,escalar:8},{min:5,max:6,escalar:7},{min:3,max:4,escalar:6},{min:2,max:2,escalar:5},{min:1,max:1,escalar:4},{min:0,max:0,escalar:3}],
                "6:6-6:11": [{min:50,max:84,escalar:19},{min:46,max:49,escalar:18},{min:42,max:45,escalar:17},{min:38,max:41,escalar:16},{min:34,max:37,escalar:15},{min:30,max:33,escalar:14},{min:26,max:29,escalar:13},{min:23,max:25,escalar:12},{min:19,max:22,escalar:11},{min:16,max:18,escalar:10},{min:13,max:15,escalar:9},{min:10,max:12,escalar:8},{min:8,max:9,escalar:7},{min:5,max:7,escalar:6},{min:3,max:4,escalar:5},{min:2,max:2,escalar:4},{min:1,max:1,escalar:3},{min:0,max:0,escalar:2}],
                "7:0-7:11": [{min:55,max:84,escalar:19},{min:51,max:54,escalar:18},{min:47,max:50,escalar:17},{min:43,max:46,escalar:16},{min:39,max:42,escalar:15},{min:35,max:38,escalar:14},{min:31,max:34,escalar:13},{min:28,max:30,escalar:12},{min:24,max:27,escalar:11},{min:21,max:23,escalar:10},{min:18,max:20,escalar:9},{min:15,max:17,escalar:8},{min:12,max:14,escalar:7},{min:9,max:11,escalar:6},{min:6,max:8,escalar:5},{min:4,max:5,escalar:4},{min:2,max:3,escalar:3},{min:1,max:1,escalar:2},{min:0,max:0,escalar:1}],
                "8:0-8:11": [{min:46,max:84,escalar:19},{min:42,max:45,escalar:18},{min:38,max:41,escalar:17},{min:34,max:37,escalar:16},{min:30,max:33,escalar:15},{min:26,max:29,escalar:14},{min:23,max:25,escalar:13},{min:19,max:22,escalar:12},{min:16,max:18,escalar:11},{min:13,max:15,escalar:10},{min:10,max:12,escalar:9},{min:7,max:9,escalar:8},{min:5,max:6,escalar:7},{min:3,max:4,escalar:6},{min:2,max:2,escalar:5},{min:1,max:1,escalar:4},{min:0,max:0,escalar:3}],
            };

const subtestConfig = {
    'sub_con_sigui_dir_brut': baremoConceptosDirecciones,
    'sub_recor_pala_brut': baremoRecordarPalabras,
    'sub_recor_orac_brut': baremoRecordandoOraciones,
    'sub_form_oraci_brut': baremoFormulacionOraciones,
    'sub_clas_palab_recep': baremoClasesReceptivo,
    'sub_clas_pala_exprex_brut': baremoClasesExpresivo,
    'sub_esctr_orac_brut': baremoEstructuracionOraciones,
    'vocab_expre_brut': baremoVocabularioExpresivo,
    'sub_enten_parraf_brut': baremoEntendimientoParrafos,
    'sub_rep_num_forw_brut': baremoRepNumerosForward,
    'sub_rep_num_back_brut': baremoRepNumerosBackward,
    'sub_sec_fam1_brut': baremoSecuenciaFamiliar
    // Nota: 'sub_rep_num_tot_brut' y 'sub_clas_palab_tot_brut' no se incluyen
    // porque son campos calculados (readonly) y no reciben input del usuario.
};

    // =====================================================
    // --- VARIABLES Y ELEMENTOS GLOBALES DEL DOM ---
    // =====================================================
    let isManualMode = false;
    let activeAgeKey = null; // Guardará la clave del baremo, ej: "5:0-5:5"
    const baremoManualSelect = document.getElementById('baremo_manual_select');
    const allSubtestInputs = document.querySelectorAll('.highlight-section input, .highlight-section textarea');

    function calculatePreciseAge(startDate, endDate) {
        if (!startDate || !endDate || isNaN(startDate) || isNaN(endDate) || startDate > endDate) return null;
        let years = endDate.getFullYear() - startDate.getFullYear();
        let months = endDate.getMonth() - startDate.getMonth();
        let days = endDate.getDate() - startDate.getDate();
        if (days < 0) { months--; days += new Date(endDate.getFullYear(), endDate.getMonth(), 0).getDate(); }
        if (months < 0) { years--; months += 12; }
        return { years, months, days };
    }

    function findAgeKeyForCELF(age) {
        if (!age) return null;
        const { years, months } = age;
        if (years >= 5 && years <= 8) {
            if (years === 5 && months <= 5) return "5:0-5:5";
            if (years === 5 && months >= 6) return "5:6-5:11";
            if (years === 6 && months <= 5) return "6:0-6:5";
            if (years === 6 && months >= 6) return "6:6-6:11";
            if (years === 7) return "7:0-7:11";
            if (years === 8) return "8:0-8:11";
        }
        return null;
    }

    function gestionarModoFormulario(manual) {
        isManualMode = manual;
        document.querySelectorAll('input[id$="_esc"], input[id$="_esca"]').forEach(input => {
            input.readOnly = !manual;
            input.classList.toggle('auto-filled', !manual);
            input.placeholder = manual ? 'Ingreso manual' : 'Calculado';
        });
        document.querySelectorAll('.instruccion-subprueba').forEach(p => {
             p.innerHTML = manual ? '<strong>Instrucción:</strong> Ingresa la puntuación bruta y escalar.' : '<strong>Instrucción:</strong> Ingresa la puntuación bruta.';
        });
    }

 function calculateAllAgesAndUpdate_CELF() {
    const birthDateElem = document.getElementById('fecha_nacimiento_paciente');
    const evalDateElem = document.getElementById('fecha_evaluacion');
    const cronoAgeElem = document.getElementById('edad');
    const baremoElem = document.getElementById('rango_edad');

    // --- Limpieza inicial ---
    cronoAgeElem.value = ''; 
    baremoElem.value = '';
    baremoManualSelect.classList.add('hidden'); 
    baremoManualSelect.value = "0";
    allSubtestInputs.forEach(field => {
         if(field.type !== 'checkbox') field.value = '';
         field.disabled = true;
         // Limpiar atributos de validación previos
         if (field.hasAttribute('data-max-value')) {
             field.removeAttribute('data-max-value');
             field.placeholder = '0';
         }
    });

    if (!birthDateElem.value || !evalDateElem.value) return;
    
 const cronoAge = calculatePreciseAge(new Date(birthDateElem.value), new Date(evalDateElem.value));
    if (!cronoAge) {
        Swal.fire({ icon: 'error', title: 'Error', text: 'La fecha de nacimiento no puede ser posterior a la de evaluación.' });
        return;
    }

    allSubtestInputs.forEach(field => field.disabled = false);
    cronoAgeElem.value = `${cronoAge.years}A ${cronoAge.months}M ${cronoAge.days}D`;
    activeAgeKey = findAgeKeyForCELF(cronoAge);

    if (activeAgeKey) {
        baremoElem.value = activeAgeKey;
        gestionarModoFormulario(false);

        // --- INICIO DE LA LÓGICA DE VALIDACIÓN AÑADIDA ---
        // Iterar sobre nuestra configuración de subpruebas
        for (const inputId in subtestConfig) {
            const inputElement = document.getElementById(inputId);
            const baremoData = subtestConfig[inputId];
            
            if (inputElement && baremoData[activeAgeKey]) {
                const baremoForAge = baremoData[activeAgeKey];
                // La puntuación máxima es la propiedad 'max' del primer elemento del array
                const maxValue = baremoForAge[0].max;
                
                inputElement.setAttribute('data-max-value', maxValue);
                inputElement.placeholder = `0 - ${maxValue}`;
            }
        }
        // --- FIN DE LA LÓGICA DE VALIDACIÓN AÑADIDA ---

    } else {
        baremoElem.value = "Fuera de Baremo";
        gestionarModoFormulario(true);
        baremoManualSelect.classList.remove('hidden');
        Swal.fire({ icon: 'warning', title: 'Edad Fuera de Rango', text: `La edad del paciente (${cronoAge.years}A ${cronoAge.months}M) está fuera del rango para CELF 5-8 (5:0 a 8:11).` });
    }
}

    // =====================================================
    // --- 4. LÓGICA DE CÁLCULO DE SUBPRUEBAS E ÍNDICES ---
    // =====================================================
    function calcularSubprueba(brutaId, baremoTabla, escalarId, percentilId, interpId) {
        if (isManualMode || !activeAgeKey) return;
        const bruta = parseInt(document.getElementById(brutaId).value, 10);
        const escalarOutput = document.getElementById(escalarId);
        if (isNaN(bruta)) {
            escalarOutput.value = '';
            calcularDesdeEscalar(escalarId, percentilId, interpId);
            return;
        }
        const baremoEdad = baremoTabla[activeAgeKey];
        let escalar = null;
        if (baremoEdad) {
            for (const rango of baremoEdad) {
                if (bruta >= rango.min && bruta <= rango.max) {
                    escalar = rango.escalar; break;
                }
            }
        }
        escalarOutput.value = (escalar !== null) ? escalar : '';
        calcularDesdeEscalar(escalarId, percentilId, interpId);
    }

    function calcularDesdeEscalar(escalarId, percentilId, interpretacionId) {
        const escalar = parseInt(document.getElementById(escalarId).value, 10);
        const percentilOutput = document.getElementById(percentilId);
        const interpOutput = document.getElementById(interpretacionId);
        if (isNaN(escalar)) {
            percentilOutput.value = ''; interpOutput.value = ''; return;
        }
        percentilOutput.value = baremoEscalarAPercentil[escalar] || "";
        function getInterpretacion(percentil) {
             if (!percentil) return ""; const p = parseFloat(percentil);
             if (p >= 98) return "Muy Superior"; if (p >= 92) return "Superior"; if (p >= 76) return "Promedio Alto";
             if (p >= 25) return "Promedio"; if (p >= 9)  return "Promedio Bajo"; if (p >= 2)  return "Bajo (Dificultad Límite)";
             return "Muy Bajo (Dificultad Severa)";
        }
        interpOutput.value = getInterpretacion(percentilOutput.value);
    }

    // --- Funciones "Envoltorio" ---
    function calcularSubpruebaConceptosDirecciones() { calcularSubprueba('sub_con_sigui_dir_brut', baremoConceptosDirecciones, 'sub_con_sigui_dir_esc', 'sub_con_sigui_dir_perce', 'sub_con_sigui_dir_interp'); }
    function calcularSubpruebaRecordarPalabras() { calcularSubprueba('sub_recor_pala_brut', baremoRecordarPalabras, 'sub_recor_pala_esca', 'sub_recor_pala_percen', 'sub_recor_pala_interp'); }
    function calcularSubpruebaRecordandoOraciones() { calcularSubprueba('sub_recor_orac_brut', baremoRecordandoOraciones, 'sub_recor_orac_esca', 'sub_recor_orac_perce', 'sub_recor_orac_interpr'); }
    function calcularSubpruebaFormulacionOraciones() { calcularSubprueba('sub_form_oraci_brut', baremoFormulacionOraciones, 'sub_form_oraci_esca', 'sub_form_oraci_percen', 'sub_form_oraci_interpr'); }
    function calcularSubpruebaEstructuracionOraciones() { calcularSubprueba('sub_esctr_orac_brut', baremoEstructuracionOraciones, 'sub_esctr_orac_esc', 'sub_esctr_orac_percen', 'sub_esctr_orac_interpr'); }
    function calcularSubpruebaVocabularioExpresivo() { calcularSubprueba('vocab_expre_brut', baremoVocabularioExpresivo, 'vocab_expre_esc', 'vocab_expre_percen', 'vocab_expre_interp'); }
    function calcularSubpruebaEntendimientoParrafos() { calcularSubprueba('sub_enten_parraf_brut', baremoEntendimientoParrafos, 'sub_enten_parraf_esca', 'sub_enten_parraf_perce', 'sub_enten_parraf_interp'); }
    function calcularSubpruebaSecuenciaFamiliar() { calcularSubprueba('sub_sec_fam1_brut', baremoSecuenciaFamiliar, 'sub_sec_fam1_esc', 'sub_sec_fam1_percen', 'sub_sec_fam1_interp'); }
 
    // --- Funciones Compuestas Adaptadas ---
    function calcularClasesPalabras() {
        calcularSubprueba('sub_clas_palab_recep', baremoClasesReceptivo, 'sub_clas_palab_esca', 'sub_clas_palab_percent', 'sub_clas_palab_interp');
        calcularSubprueba('sub_clas_pala_exprex_brut', baremoClasesExpresivo, 'sub_clas_pala_exprex_esc', 'sub_clas_pala_exprex_percen', 'sub_clas_pala_exprex_interp');
        const brutaR = parseInt(document.getElementById('sub_clas_palab_recep').value, 10);
        const brutaE = parseInt(document.getElementById('sub_clas_pala_exprex_brut').value, 10);
        const escalarR = parseInt(document.getElementById('sub_clas_palab_esca').value, 10);
        const escalarE = parseInt(document.getElementById('sub_clas_pala_exprex_esc').value, 10);
        document.getElementById('sub_clas_palab_tot_brut').value = (!isNaN(brutaR) && !isNaN(brutaE)) ? (brutaR + brutaE) : '';
        if (!isNaN(escalarR) && !isNaN(escalarE)) {
            const sumaEsc = escalarR + escalarE;
            document.getElementById('sub_clas_palab_suma_escalares').value = sumaEsc;
            let escalarTotal = null;
            for (const r of baremoSumaEscalaresAEscalar) { if (sumaEsc >= r.min && sumaEsc <= r.max) { escalarTotal = r.escalar; break; } }
            document.getElementById('sub_clas_palab_tot_esc').value = (escalarTotal !== null) ? escalarTotal : '';
        } else {
            document.getElementById('sub_clas_palab_suma_escalares').value = '';
            document.getElementById('sub_clas_palab_tot_esc').value = '';
        }
        calcularDesdeEscalar('sub_clas_palab_tot_esc', 'sub_clas_palab_tot_percen', 'sub_clas_pala_tot_inter');
    }

    function calcularRepeticionNumeros() {
        calcularSubprueba('sub_rep_num_forw_brut', baremoRepNumerosForward, 'sub_rep_num_forw_esc', 'sub_rep_num_forw_perc', 'sub_rep_num_forw_inter');
        calcularSubprueba('sub_rep_num_back_brut', baremoRepNumerosBackward, 'sub_rep_num_back_esc', 'sub_rep_num_back_perce', 'sub_rep_num_back_interp');
        const brutaF = parseInt(document.getElementById('sub_rep_num_forw_brut').value, 10);
        const brutaB = parseInt(document.getElementById('sub_rep_num_back_brut').value, 10);
        const brutaTotalOut = document.getElementById('sub_rep_num_tot_brut');
        if (!isNaN(brutaF) && !isNaN(brutaB)) {
            brutaTotalOut.value = brutaF + brutaB;
            calcularSubprueba('sub_rep_num_tot_brut', baremoRepNumerosTotal, 'sub_rep_num_tot_esc', 'sub_rep_num_tot_perc', 'sub_rep_num_tot_int');
        } else {
            brutaTotalOut.value = '';
            document.getElementById('sub_rep_num_tot_esc').value = '';
            calcularDesdeEscalar('sub_rep_num_tot_esc', 'sub_rep_num_tot_perc', 'sub_rep_num_tot_int');
        }
    }
    
    // --- Función para Índices (No necesita cambios) ---
   function calcularIndice(estandarId, percentilId, interpretacionId) {
    const estandarInput = document.getElementById(estandarId);
    const percentilOutput = document.getElementById(percentilId);
    const interpOutput = document.getElementById(interpretacionId);

    const estandar = parseInt(estandarInput.value, 10);
    if (isNaN(estandar)) {
        percentilOutput.value = "";
        interpOutput.value = "";
        return;
    }

    let percentil = "";
    for (const rango of baremoStandardAPercentil) {
        if (estandar >= rango.min && estandar <= rango.max) {
            percentil = rango.percentile;
            break;
        }
    }
    
    // Función para obtener la interpretación específica de los índices
    function getInterpretacionIndice(standardScore) {
        if (isNaN(standardScore)) return "";
        if (standardScore > 130) return "Muy Superior";
        if (standardScore >= 121) return "Superior";
        if (standardScore >= 111) return "Promedio Alto";
        if (standardScore >= 90) return "Promedio";
        if (standardScore >= 80) return "Promedio Bajo";
        if (standardScore >= 70) return "Límite (Borderline)";
        return "Muy Bajo (Dificultad)";
    }

    if (percentil) {
        percentilOutput.value = percentil;
        // Ahora sí llamamos a la función de interpretación
        interpOutput.value = getInterpretacionIndice(estandar);
    } else {
        percentilOutput.value = "Fuera de baremo";
        interpOutput.value = "";
    }
}

    // =====================================================
    // --- 5. INICIALIZACIÓN Y EVENTOS ---
    // =====================================================
    document.addEventListener('DOMContentLoaded', function() {
        gestionarModoFormulario(false);

        const numericOnlyRegex = /^\d*$/;
        setupFieldValidation('input[id$="_brut"]', numericOnlyRegex);

        allSubtestInputs.forEach(field => field.disabled = true);

        for (const key in baremoConceptosDirecciones) {
            let option = document.createElement('option');
            option.value = key; option.textContent = key;
            baremoManualSelect.appendChild(option);
        }

        document.getElementById('fecha_evaluacion').addEventListener('change', calculateAllAgesAndUpdate_CELF);

        baremoManualSelect.addEventListener('change', function() {
            const baremoElem = document.getElementById('rango_edad');
            activeAgeKey = this.value === "0" ? null : this.value;
            if (activeAgeKey) {
                baremoElem.value = activeAgeKey;
                gestionarModoFormulario(false);
                document.querySelectorAll('input[id$="_brut"]').forEach(input => {
                    if (input.value) input.dispatchEvent(new Event('input'));
                });
            } else {
                baremoElem.value = "Fuera de Baremo";
                gestionarModoFormulario(true);
            }
        });
        
        // Conectar los inputs brutos a sus funciones de cálculo
        document.getElementById('sub_con_sigui_dir_brut').addEventListener('input', calcularSubpruebaConceptosDirecciones);
        document.getElementById('sub_recor_pala_brut').addEventListener('input', calcularSubpruebaRecordarPalabras);
        document.getElementById('sub_recor_orac_brut').addEventListener('input', calcularSubpruebaRecordandoOraciones);
        document.getElementById('sub_form_oraci_brut').addEventListener('input', calcularSubpruebaFormulacionOraciones);
        document.getElementById('sub_esctr_orac_brut').addEventListener('input', calcularSubpruebaEstructuracionOraciones);
        document.getElementById('vocab_expre_brut').addEventListener('input', calcularSubpruebaVocabularioExpresivo);
        document.getElementById('sub_enten_parraf_brut').addEventListener('input', calcularSubpruebaEntendimientoParrafos);
        document.getElementById('sub_sec_fam1_brut').addEventListener('input', calcularSubpruebaSecuenciaFamiliar);
        document.getElementById('sub_clas_palab_recep').addEventListener('input', calcularClasesPalabras);
        document.getElementById('sub_clas_pala_exprex_brut').addEventListener('input', calcularClasesPalabras);
        document.getElementById('sub_rep_num_forw_brut').addEventListener('input', calcularRepeticionNumeros);
        document.getElementById('sub_rep_num_back_brut').addEventListener('input', calcularRepeticionNumeros);

        // Conectar los inputs de índices a su función de cálculo
        document.getElementById('celf58_stand_lengu_total').addEventListener('input', () => calcularIndice('celf58_stand_lengu_total', 'celf58_percent_lengua_tota', 'celf58_leng_tot_interpr'));
        document.getElementById('celf58_stand_leng_recep').addEventListener('input', () => calcularIndice('celf58_stand_leng_recep', 'celf58_percent_leng_recept', 'celf58_leng_recep_inter'));
        document.getElementById('celf58_stand_leng_expres').addEventListener('input', () => calcularIndice('celf58_stand_leng_expres', 'celf58_percent_leng_expres', 'celf58_leng_expr_interpre'));
        document.getElementById('celf58_stand_contenido').addEventListener('input', () => calcularIndice('celf58_stand_contenido', 'celf58_percent_conteni', 'celf58_contenido_interpretacion'));
        document.getElementById('celf58_stand_estrucct').addEventListener('input', () => calcularIndice('celf58_stand_estrucct', 'celf58_percent_estrucc', 'celf58_estrucct_interpret'));
        document.getElementById('celf58_stand_memor_dtraba').addEventListener('input', () => calcularIndice('celf58_stand_memor_dtraba', 'celf58_percent_memor_dtrab', 'celf58_memori_traba_interpre'));
                // (Añade el resto de los listeners para los índices aquí)

        // Conectar los escalares manuales para que actualicen sus campos dependientes
        document.querySelectorAll('input[id$="_esc"], input[id$="_esca"]').forEach(input => {
            input.addEventListener('input', (e) => {
                if (isManualMode) {
                    const id = e.target.id;
                    // Intenta encontrar los IDs de percentil e interpretación correspondientes
                    const baseId = id.substring(0, id.lastIndexOf('_'));
                    const percentilId = document.querySelector(`[id^="${baseId}"][id$="perce"], [id^="${baseId}"][id$="percen"]`)?.id;
                    const interpId = document.querySelector(`[id^="${baseId}"][id$="interp"], [id^="${baseId}"][id$="interpr"]`)?.id;
                    if (percentilId && interpId) {
                        calcularDesdeEscalar(id, percentilId, interpId);
                    }
                    // Disparar recálculo de pruebas compuestas si es necesario
                    if (id.includes('clas_palab')) calcularClasesPalabras();
                    if (id.includes('rep_num')) calcularRepeticionNumeros();
                }
            });
        });
    });


        // Listener del submit
document.getElementById('myForm').addEventListener('submit', function(event) {
    event.preventDefault(); // Detener el envío para validar

    const requiredFields = this.querySelectorAll('[required]:not([disabled])');
    let allValid = true;
    let firstInvalidField = null;

    requiredFields.forEach(field => {
        field.classList.remove('campo-error'); // Asumo que tienes una clase CSS para errores
        if (!field.value.trim()) {
            allValid = false;
            field.classList.add('campo-error');
            if (!firstInvalidField) {
                firstInvalidField = field;
            }
        }
    });

    if (!allValid) {
        Swal.fire({
            icon: 'error',
            title: 'Campos Incompletos',
            text: 'Por favor, complete todos los campos marcados antes de registrar.'
        }).then(() => {
            if (firstInvalidField) {
                firstInvalidField.scrollIntoView({ behavior: 'smooth', block: 'center' });
                firstInvalidField.focus();
            }
        });
    } else {
        // Si todo está bien, enviar el formulario
        this.submit();
    }
});

// Añade este pequeño helper para quitar el borde rojo mientras el usuario escribe
document.querySelectorAll('[required]').forEach(input => {
    input.addEventListener('input', () => {
        if (input.value.trim() !== "") {
            input.classList.remove('campo-error');
        }
    });
});
      
      </script>


      <!-- ===================================================================== -->
      <!-- ========= FIN DE LA LÓGICA DE CÁLCULO AUTOMÁTICO ============ -->
      <!-- ===================================================================== -->
     
      

     </div>
</body>
</html>