// JS para Entrevista con Apoderado - Versión con ordenamiento actualizada
// Última actualización: 2025-09-05 17:30

document.addEventListener('DOMContentLoaded', function () {
    // Ocultar el formulario de entrevista al cargar la página
    const formularioEntrevista = document.getElementById('formularioEntrevista');
    if (formularioEntrevista) {
        formularioEntrevista.style.display = 'none';
    }
    // ...existing code...
    // Elementos DOM
    const tipoEnsenanza = document.getElementById('tipo_ensenanza');
    const grado = document.getElementById('grado');
    const buscadorAlumno = document.getElementById('buscadorAlumno');
    const resultadosBusqueda = document.getElementById('resultadosBusqueda');
    // formularioEntrevista ya está declarado arriba
    const formEntrevista = document.getElementById('formEntrevista');
    const familiarEntrevista = document.getElementById('familiar_entrevista');
    const derivacion = document.getElementById('derivacion');
    const institucionDerivadaGroup = document.getElementById('institucion_derivada_group');
    const institucionDerivada = document.getElementById('institucion_derivada');

    // Habilitar/deshabilitar grado y buscador según tipo de enseñanza
    // Restaurar: al cambiar tipo de enseñanza, cargar grados y limpiar búsqueda
    if (tipoEnsenanza) {
        tipoEnsenanza.addEventListener('change', function () {
            cargarGrados(this.value);
            grado.value = '';
            buscadorAlumno.value = '';
            resultadosBusqueda.innerHTML = '';
            resultadosBusqueda.style.display = 'none';
            formularioEntrevista.style.display = 'none';
            document.getElementById('tablaEntrevistasAlumno').style.display = 'none';
            etiquetaAlumno.style.display = 'none';
            // Deshabilitar buscador hasta que se seleccione un grado
            if (buscadorAlumno) {
                buscadorAlumno.disabled = true;
            }
        });
    }

    if (grado) {
        grado.addEventListener('change', function () {
            buscadorAlumno.value = '';
            resultadosBusqueda.innerHTML = '';
            resultadosBusqueda.style.display = 'none';
            formularioEntrevista.style.display = 'none';
            document.getElementById('tablaEntrevistasAlumno').style.display = 'none';
            etiquetaAlumno.style.display = 'none';
            // El buscador siempre está habilitado para búsqueda libre
            if (buscadorAlumno) {
                buscadorAlumno.disabled = false;
            }
        });
        // Habilitar buscador para búsqueda libre al cargar la página
        if (buscadorAlumno) {
            buscadorAlumno.disabled = false;
        }
    } else if (buscadorAlumno) {
        // Si no hay select de grado, el buscador debería estar habilitado para búsqueda libre
        buscadorAlumno.disabled = false;
    }
    let alumnoSeleccionado = null;
    let familiaresAlumno = [];
    let alumnoSeleccionadoNombre = '';
    let entrevistaEnEdicionId = null; // ID de la entrevista que se está editando

    // Usar el div estático para la etiqueta del alumno seleccionado
    const etiquetaAlumno = document.getElementById('etiqueta_alumno_seleccionado');
    const btnNuevaEntrevista = document.getElementById('btnNuevaEntrevista');
    const nuevaEntrevistaBtnWrapper = document.getElementById('nuevaEntrevistaBtnWrapper');

    // --- Cargar grados según tipo de enseñanza ---
    function cargarGrados(tipoId) {
        grado.innerHTML = '<option value="">Cargando grados...</option>';
        grado.disabled = true;
        if (!tipoId) {
            grado.innerHTML = '<option value="">Selecciona tipo de enseñanza primero</option>';
            return;
        }
        fetch(`${src("grados_por_ensenanza.php")}?tipo_ensenanza_id=${encodeURIComponent(tipoId)}`)
            .then(res => res.json())
            .then(data => {
                grado.innerHTML = '<option value="">Selecciona grado</option>';
                if (Array.isArray(data) && data.length > 0) {
                    data.forEach(gr => {
                        grado.innerHTML += `<option value="${gr.id}">${gr.nombre}</option>`;
                    });
                    grado.disabled = false;
                } else {
                    grado.innerHTML = '<option value="">No hay grados disponibles</option>';
                }
            })
            .catch(() => {
                grado.innerHTML = '<option value="">Error al cargar grados</option>';
            });
    }




    // --- Buscar alumnos según filtros ---
    function buscarAlumnos() {
        const tipo_ensenanza_id = tipoEnsenanza.value;
        const grado_id = grado.value;
        const q = buscadorAlumno.value.trim();

        // Si no hay texto de búsqueda y no hay filtros, limpiar resultados
        if (!q && (!tipo_ensenanza_id || !grado_id)) {
            resultadosBusqueda.innerHTML = '';
            resultadosBusqueda.style.display = 'none';
            return;
        }

        resultadosBusqueda.innerHTML = '<div class="text-center text-muted">Buscando alumnos...</div>';
        resultadosBusqueda.style.display = '';

        // Construir URL con ruta correcta
        let url = `../src/buscar_matriculados.php?q=${encodeURIComponent(q)}`;
        if (grado_id) url += `&grado_id=${grado_id}`;
        if (tipo_ensenanza_id) url += `&tipo_ensenanza_id=${tipo_ensenanza_id}`;

        console.log('🔍 URL generada:', url);
        console.log('📊 Parámetros:', { q, grado_id, tipo_ensenanza_id });

        fetch(url)
            .then(res => res.json())
            .then(data => {
                if (!data || data.length === 0) {
                    resultadosBusqueda.innerHTML = '<div class="alert alert-info">No se encontraron alumnos matriculados.</div>';
                    return;
                }
                let html = '<div class="list-group">';
                data.forEach(al => {
                    html += `<button type="button" class="list-group-item list-group-item-action alumno-matriculado-item" data-id="${al.alumno_id}">
                        <strong>${al.ap_paterno} ${al.ap_materno}, ${al.nombre}</strong> <span class="text-muted">(${al.run})</span>
                    </button>`;
                });
                html += '</div>';
                resultadosBusqueda.innerHTML = html;
            })
            .catch(() => {
                resultadosBusqueda.innerHTML = '<div class="alert alert-danger">Error al buscar alumnos.</div>';
            });
    }

    if (buscadorAlumno) {
        buscadorAlumno.addEventListener('input', function () {
            const q = this.value.trim();
            if (q.length >= 2) {
                buscarAlumnos();
            } else if (q.length === 0) {
                resultadosBusqueda.innerHTML = '';
                resultadosBusqueda.style.display = 'none';
            }
        });
    }
    if (grado) {
        grado.addEventListener('change', buscarAlumnos);
    }

    // --- Seleccionar alumno y cargar familiares ---
    if (resultadosBusqueda) {
        resultadosBusqueda.addEventListener('click', function (e) {
            const btn = e.target.closest('.alumno-matriculado-item');
            if (btn) {
                const alumnoId = btn.getAttribute('data-id');
                // Obtener nombre del alumno seleccionado
                alumnoSeleccionadoNombre = btn.querySelector('strong')?.innerText || '';
                cargarFamiliaresAlumno(alumnoId);
                cargarTablaEntrevistas(alumnoId);
                // Hacer scroll al div de Alumno seleccionado, compensando el alto del navbar fijo
                setTimeout(() => {
                    const navbar = document.querySelector('.navbar.fixed-top');
                    const navHeight = navbar ? navbar.offsetHeight : 0;
                    const rect = etiquetaAlumno.getBoundingClientRect();
                    const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
                    const top = rect.top + scrollTop - navHeight - 10; // 10px de margen
                    window.scrollTo({ top, behavior: 'smooth' });
                }, 200);
            }
        });
    }

    // Variables globales para el ordenamiento
    let ordenActual = { campo: 'fecha', direccion: 'DESC' };

    // --- Tabla de entrevistas registradas ---
    function cargarTablaEntrevistas(alumnoId, ordenCampo = 'fecha', ordenDireccion = 'DESC') {
        const tablaDiv = document.getElementById('tablaEntrevistasAlumno');
        tablaDiv.innerHTML = '<div class="text-center text-muted">Cargando entrevistas...</div>';
        tablaDiv.style.display = '';

        // Actualizar el ordenamiento actual
        ordenActual = { campo: ordenCampo, direccion: ordenDireccion };

        fetch(`${src("listar_entrevistas.php")}?alumno_id=${alumnoId}&orden_campo=${ordenCampo}&orden_direccion=${ordenDireccion}`)
            .then(res => res.json())
            .then(data => {
                if (!data || data.length === 0) {
                    tablaDiv.innerHTML = '<div class="alert alert-info">No hay entrevistas registradas para este alumno.</div>';
                    return;
                }
                // Función auxiliar para generar encabezado con ordenamiento
                function generarEncabezado(campo, texto) {
                    const esActivo = ordenActual.campo === campo;
                    const siguienteDireccion = esActivo && ordenActual.direccion === 'ASC' ? 'DESC' : 'ASC';
                    const icono = esActivo ?
                        (ordenActual.direccion === 'ASC' ? '↑' : '↓') :
                        '<span style="opacity:0.3">↕</span>';

                    return `<th style="cursor: pointer; user-select: none;" 
                                data-campo="${campo}" 
                                data-direccion="${siguienteDireccion}"
                                title="Ordenar por ${texto}">
                        ${texto} ${icono}
                    </th>`;
                }

                let html = `<div class="card mb-4"><div class="card-body p-0">
                <table class="table table-striped table-hover mb-0">
                <thead class="table-light">
                    <tr>
                        ${generarEncabezado('fecha', 'Fecha')}
                        ${generarEncabezado('motivo', 'Motivo')}
                        ${generarEncabezado('apoderado_nombre_completo', 'Apoderado')}
                        ${generarEncabezado('funcionario', 'Funcionario')}
                        <th>Modificado por</th>
                        <th>Fecha Modificación</th>
                        <th class="text-end">Acciones</th>
                    </tr>
                </thead>
                <tbody>`;
                data.forEach(e => {
                    // Formatear fecha y hora de manera más legible
                    let fechaFormateada = '-';
                    if (e.fecha && e.fecha !== '0000-00-00 00:00:00') {
                        try {
                            const fecha = new Date(e.fecha);
                            const fechaStr = fecha.toLocaleDateString('es-CL', {
                                year: 'numeric',
                                month: '2-digit',
                                day: '2-digit'
                            });
                            let horaDisplay = fecha.toLocaleTimeString('es-CL', {
                                hour: '2-digit',
                                minute: '2-digit'
                            });
                            // Si la hora es 00:00, mostrar mensaje más claro
                            if (horaDisplay === '00:00' || e.fecha.includes('00:00:00')) {
                                horaDisplay = '<span class="text-muted fst-italic">Sin hora específica</span>';
                            } else {
                                horaDisplay = `<span class="badge bg-primary">${horaDisplay}</span>`;
                            }
                            fechaFormateada = `<strong>${fechaStr}</strong><br>${horaDisplay}`;
                        } catch (err) {
                            fechaFormateada = e.fecha;
                        }
                    }

                    html += `<tr data-entrevista='${JSON.stringify(e).replace(/'/g, "&#39;")}' >
                        <td>${fechaFormateada}</td>
                        <td>${e.motivo}</td>
                        <td>${e.apoderado_nombre_completo || 'No especificado'}</td>
                        <td>${e.funcionario || '-'}</td>
                        <td>${e.usuario_modificacion_nombre || '-'}</td>
                        <td>${e.fecha_modificacion ? new Date(e.fecha_modificacion).toLocaleString('es-CL') : '-'}</td>
                        <td class="text-end" style="min-width: 160px;">
                            <div class="btn-group" role="group" aria-label="Acciones de entrevista">
                                <button class="btn btn-sm btn-info btn-ver" title="Ver"><i class="bi bi-eye"></i></button>
                                <button class="btn btn-sm btn-secondary btn-imprimir" title="Imprimir"><i class="bi bi-printer"></i></button>
                                <button class="btn btn-sm btn-warning btn-editar" title="Editar"><i class="bi bi-pencil"></i></button>
                                <button class="btn btn-sm btn-danger btn-borrar" title="Borrar"><i class="bi bi-trash"></i></button>
                            </div>
                        </td>
                    </tr>`;
                });
                html += '</tbody></table></div></div>';
                tablaDiv.innerHTML = html;

                // Agregar event listeners para ordenamiento en encabezados
                const encabezadosOrdenables = tablaDiv.querySelectorAll('th[data-campo]');
                encabezadosOrdenables.forEach(th => {
                    th.addEventListener('click', function () {
                        const campo = this.getAttribute('data-campo');
                        const direccion = this.getAttribute('data-direccion');
                        cargarTablaEntrevistas(alumnoId, campo, direccion);
                    });
                });

                // Delegación de eventos para los botones de acción
                const tbody = tablaDiv.querySelector('tbody');
                tbody.addEventListener('click', function (e) {
                    const btn = e.target.closest('button');
                    if (!btn) return;
                    const tr = btn.closest('tr');
                    const entrevista = JSON.parse(tr.getAttribute('data-entrevista').replace(/&#39;/g, "'"));
                    if (btn.classList.contains('btn-ver')) {
                        verEntrevista(entrevista);
                    } else if (btn.classList.contains('btn-editar')) {
                        editarEntrevista(entrevista);
                    } else if (btn.classList.contains('btn-borrar')) {
                        borrarEntrevista(entrevista);
                    } else if (btn.classList.contains('btn-imprimir')) {
                        imprimirEntrevista(entrevista);
                    }
                });
            })
            .catch(() => {
                tablaDiv.innerHTML = '<div class="alert alert-danger">Error al cargar entrevistas.</div>';
            });
    }

    // Editar entrevista: carga los datos en el formulario
    function editarEntrevista(entrevista) {
        entrevistaEnEdicionId = entrevista.id;
        document.getElementById('fecha_entrevista').value = entrevista.fecha_entrevista || '';
        document.getElementById('hora_entrevista').value = entrevista.hora_entrevista || '';
        document.getElementById('motivo_citacion').value = entrevista.motivo || '';
        document.getElementById('registro_observaciones').value = entrevista.observaciones || '';
        document.getElementById('acuerdos_compromisos').value = entrevista.acuerdos_compromisos || '';
        document.getElementById('derivacion').value = entrevista.derivacion || 'no';
        document.getElementById('institucion_derivada').value = entrevista.institucion_derivada || '';
        // Disparar evento change para mostrar/ocultar campo de institución
        derivacion.dispatchEvent(new Event('change'));
        // Seleccionar familiar si está en la lista
        if (familiarEntrevista) {
            // Asegurarse de que el familiar exista en la lista antes de seleccionarlo
            const optionExists = [...familiarEntrevista.options].some(opt => opt.value == entrevista.familiar_id);
            if (optionExists) {
                familiarEntrevista.value = entrevista.familiar_id;
            }
        }
        // Bloquear campos clave
        document.getElementById('familiar_entrevista').disabled = true;
        document.getElementById('fecha_entrevista').disabled = true;
        document.getElementById('hora_entrevista').disabled = true;
        // Cambiar texto del botón
        formEntrevista.querySelector('button[type="submit"]').textContent = 'Actualizar Entrevista';
        // Mostrar el formulario y ocultar el botón Nueva Entrevista
        if (formularioEntrevista) formularioEntrevista.style.display = '';
        if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = 'none';
        // Scroll al formulario
        formularioEntrevista.scrollIntoView({ behavior: 'smooth' });
    }

    // Borrar entrevista
    function borrarEntrevista(entrevista) {
        if (confirm('¿Está seguro de que desea eliminar esta entrevista?')) {
            fetch(src('borrar_entrevista.php'), {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify({ id: entrevista.id })
            })
                .then(r => r.json())
                .then(data => {
                    if (data.success) {
                        alert('Entrevista eliminada correctamente');
                        cargarTablaEntrevistas(alumnoSeleccionado); // Recargar tabla
                    } else {
                        alert('Error al eliminar la entrevista');
                    }
                })
                .catch(() => alert('Error de red al eliminar la entrevista'));
        }
    }

    // Imprimir entrevista (puedes personalizar este flujo)
    function imprimirEntrevista(entrevista) {
        if (!entrevista.id) {
            alert('No se puede imprimir: ID de entrevista no encontrado.');
            return;
        }
        const url = `${view("entrevista_pdf.php")}?entrevista_id=${entrevista.id}&nocache=${Date.now()}`;
        window.open(url, '_blank');
    }

    // Modal para ver entrevista
    function verEntrevista(entrevista) {
        let modal = document.getElementById('modalVerEntrevista');
        if (!modal) {
            modal = document.createElement('div');
            modal.id = 'modalVerEntrevista';
            modal.className = 'modal fade';
            modal.tabIndex = -1;
            modal.innerHTML = `
                <div class="modal-dialog modal-xl">
                    <div class="modal-content">
                        <div class="modal-header">
                            <h5 class="modal-title">Detalle de Entrevista</h5>
                            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
                        </div>
                        <div class="modal-body" id="modalVerEntrevistaBody"></div>
                        <div class="modal-footer">
                            <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
                        </div>
                    </div>
                </div>
            `;
            document.body.appendChild(modal);
        }
        // Llenar datos
        const body = modal.querySelector('#modalVerEntrevistaBody');

        // Preparar texto de derivación
        let derivacionTexto = '';
        if (entrevista.derivacion === 'si') {
            derivacionTexto = `Sí${entrevista.institucion_derivada ? ` - ${entrevista.institucion_derivada}` : ''}`;
        } else {
            derivacionTexto = 'No';
        }

        body.innerHTML = `
            <p><b>Fecha y Hora:</b> ${entrevista.fecha ? new Date(entrevista.fecha).toLocaleString('es-CL') : 'No especificada'}</p>
            <p><b>Apoderado:</b> ${entrevista.apoderado_nombre_completo || 'No especificado'}</p>
            <p><b>Funcionario:</b> ${entrevista.funcionario || '-'}</p>
            <p><b>Modificado por:</b> ${entrevista.usuario_modificacion_nombre || '-'}</p>
            <p><b>Fecha Modificación:</b> ${entrevista.fecha_modificacion ? new Date(entrevista.fecha_modificacion).toLocaleString('es-CL') : '-'}</p>
            <hr>
            <p><b>Motivo:</b> ${entrevista.motivo || ''}</p>
            <p><b>Registro y Observaciones:</b><br>${(entrevista.observaciones || '').replace(/\n/g, '<br>')}</p>
            <p><b>Acuerdos y Compromisos:</b><br>${(entrevista.acuerdos_compromisos || '').replace(/\n/g, '<br>')}</p>
            <p><b>Derivación:</b> ${derivacionTexto}</p>
        `;
        const modalObj = new bootstrap.Modal(modal);
        modalObj.show();
    }

    function cargarFamiliaresAlumno(alumnoId) {
        fetch(`${src("familiares_por_alumno.php")}?alumno_id=${alumnoId}`)
            .then(res => res.json())
            .then(response => {
                // Soportar nueva estructura: { familiares: [...], ...debug }
                let data = response.familiares || [];
                // Eliminar duplicados por id
                const idsVistos = new Set();
                data = data.filter(fam => {
                    if (idsVistos.has(fam.id)) return false;
                    idsVistos.add(fam.id);
                    return true;
                });
                familiaresAlumno = data;
                familiarEntrevista.innerHTML = '<option value="">Seleccione un familiar...</option>';
                if (Array.isArray(data) && data.length > 0) {
                    data.forEach(fam => {
                        let label = fam.nombre;
                        if (fam.rol) label += ` [${fam.rol}]`;
                        familiarEntrevista.innerHTML += `<option value="${fam.id}">${label}</option>`;
                    });
                    familiarEntrevista.disabled = false;
                } else {
                    familiarEntrevista.innerHTML = '<option value="">No hay familiares registrados</option>';
                    familiarEntrevista.disabled = true;
                }
                if (formularioEntrevista) formularioEntrevista.style.display = 'none';
                if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = '';
                alumnoSeleccionado = alumnoId;
                // Mostrar etiqueta con el nombre del alumno seleccionado
                if (alumnoSeleccionadoNombre) {
                    etiquetaAlumno.innerHTML = `<strong>Alumno seleccionado:</strong> ${alumnoSeleccionadoNombre}`;
                    etiquetaAlumno.style.display = '';
                    if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = '';
                    // Hacer scroll a la etiqueta para que quede visible bajo el navbar
                    setTimeout(() => {
                        const navbar = document.querySelector('.navbar.fixed-top');
                        const navHeight = navbar ? navbar.offsetHeight : 0;
                        if (etiquetaAlumno) {
                            const rect = etiquetaAlumno.getBoundingClientRect();
                            const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
                            const top = rect.top + scrollTop - navHeight - 10; // 10px de margen
                            window.scrollTo({ top, behavior: 'smooth' });
                        }
                    }, 300);
                } else {
                    etiquetaAlumno.innerHTML = '';
                    etiquetaAlumno.style.display = 'none';
                    if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = 'none';
                }
                // Scroll al inicio del formulario
                // No hacer scroll al formulario aquí
            })
            .catch(() => {
                familiarEntrevista.innerHTML = '<option value="">Error al cargar familiares</option>';
                familiarEntrevista.disabled = true;
                if (formularioEntrevista) formularioEntrevista.style.display = 'none';
                etiquetaAlumno.style.display = 'none';
                if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = 'none';
            });
        // Mostrar formulario al presionar el botón Nueva Entrevista
        if (btnNuevaEntrevista) {
            btnNuevaEntrevista.addEventListener('click', function () {
                if (formularioEntrevista) formularioEntrevista.style.display = '';
                if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = 'none';
                setTimeout(() => {
                    formularioEntrevista.scrollIntoView({ behavior: 'smooth', block: 'start' });
                }, 100);
            });
        }
    }

    // --- Mostrar/ocultar campo institución derivada ---
    if (derivacion) {
        derivacion.addEventListener('change', function () {
            if (this.value === 'si') {
                institucionDerivadaGroup.style.display = '';
                institucionDerivada.required = true;
            } else {
                institucionDerivadaGroup.style.display = 'none';
                institucionDerivada.value = '';
                institucionDerivada.required = false;
            }
        });
    }

    // --- Guardar entrevista (implementación real) ---
    if (formEntrevista) {
        formEntrevista.addEventListener('submit', function (e) {
            e.preventDefault();
            // Determinar si es creación o actualización
            const esEdicion = entrevistaEnEdicionId !== null;
            const url = esEdicion ? src('actualizar_entrevista.php') : src('guardar_entrevista.php');
            if (formularioEntrevista) formularioEntrevista.style.display = 'none';
            if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = '';

            // Validar alumno y familiar seleccionados
            if (!alumnoSeleccionado) {
                alert('Debe seleccionar un alumno.');
                return;
            }
            const familiar_id = familiarEntrevista.value;
            if (!familiar_id) {
                alert('Debe seleccionar un apoderado.');
                return;
            }

            // Recolectar datos
            const data = {
                alumno_id: alumnoSeleccionado,
                familiar_id: familiar_id,
                fecha: document.getElementById('fecha_entrevista').value,
                hora: document.getElementById('hora_entrevista').value,
                motivo: document.getElementById('motivo_citacion').value,
                observaciones: document.getElementById('registro_observaciones').value,
                acuerdos_compromisos: document.getElementById('acuerdos_compromisos').value,
                derivacion: document.getElementById('derivacion').value,
                institucion_derivada: document.getElementById('institucion_derivada').value
            };

            if (esEdicion) {
                data.id = entrevistaEnEdicionId;
            }

            // Enviar al backend
            fetch(url, {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify(data)
            })
                .then(res => res.json())
                .then(resp => {
                    if (resp.success) {
                        alert(resp.msg || 'Operación realizada con éxito.');
                        resetearFormularioEntrevista();
                        cargarTablaEntrevistas(alumnoSeleccionado); // Recargar la tabla
                        // Scroll a la tabla de entrevistas para que el usuario vea el resultado
                        const tablaEntrevistas = document.getElementById('tablaEntrevistasAlumno');
                        if (tablaEntrevistas) {
                            tablaEntrevistas.scrollIntoView({ behavior: 'smooth', block: 'start' });
                        }
                    } else {
                        alert(resp.msg || 'Error al guardar la entrevista.');
                    }
                })
                .catch(() => {
                    alert('Error de red o servidor al guardar la entrevista.');
                });
        });
    }

    function resetearFormularioEntrevista() {
        formEntrevista.reset();
        entrevistaEnEdicionId = null; // Salir del modo edición

        // Restaurar campos bloqueados
        document.getElementById('familiar_entrevista').disabled = false;
        document.getElementById('fecha_entrevista').disabled = false;
        document.getElementById('hora_entrevista').disabled = false;

        // Restaurar texto del botón
        formEntrevista.querySelector('button[type="submit"]').textContent = 'Guardar entrevista';
        // Ocultar la etiqueta al resetear
        if (etiquetaAlumno) etiquetaAlumno.style.display = 'none';
    }

    // --- Botón Cancelar: limpia el form y hace scroll al inicio ---
    const btnCancelar = document.getElementById('btnCancelarEntrevista');
    if (btnCancelar && formEntrevista) {
        btnCancelar.addEventListener('click', function () {
            resetearFormularioEntrevista();
            if (formularioEntrevista) formularioEntrevista.style.display = 'none';
            if (nuevaEntrevistaBtnWrapper) nuevaEntrevistaBtnWrapper.style.display = '';
            window.scrollTo({ top: 0, behavior: 'smooth' });
        });
    }
    // ...existing code...
});
