<?php
/**
 * Sistema de Programación de Presentaciones de Investigación - Versión Moderna
 * 
 * Este script permite gestionar la programación de presentaciones para
 * congresos y eventos científicos, con un diseño moderno y profesional
 */

// Incluir archivo de conexión a base de datos
require_once('utils_database.php');

// Función para obtener trabajos aprobados
function obtenerTrabajosAprobados() {
    $conn = ActivarMySQL();
    $trabajos = array();
    
    if ($conn) {
        $query = "SELECT id, evento_id, submission_id, codigo, fecha, titulo, 
                 cod_tipo_competicion_propuesto, cod_tipo_presentacion_propuesto, 
                 cod_tipo_presentacion_aprobado, pais, ciudad, autor1, apellido_autor1,
                 estado, aprobado, titulo_autor1
                 FROM ttrabajo 
                 WHERE aprobado = 1 
                 ORDER BY fecha DESC, codigo";
        
        $resultado = mysqli_query($conn, $query);
        
        if ($resultado) {
            while ($fila = mysqli_fetch_assoc($resultado)) {
                $trabajos[] = $fila;
            }
            mysqli_free_result($resultado);
        }
        
        mysqli_close($conn);
    }
    
    return $trabajos;
}

// Función para obtener tipos de competición
function obtenerTiposCompeticion() {
    $conn = ActivarMySQL();
    $tipos = array();
    
    if ($conn) {
        $query = "SELECT id, codigo, descripcion_esp, descripcion_eng FROM ttipo_competicion";
        
        $resultado = mysqli_query($conn, $query);
        
        if ($resultado) {
            while ($fila = mysqli_fetch_assoc($resultado)) {
                $tipos[] = $fila;
            }
            mysqli_free_result($resultado);
        }
        
        mysqli_close($conn);
    }
    
    return $tipos;
}

// Función para obtener tipos de presentación
function obtenerTiposPresentacion() {
    $conn = ActivarMySQL();
    $tipos = array();
    
    if ($conn) {
        $query = "SELECT id, codigo, descripcion_esp, descripcion_eng FROM ttipo_presentacion";
        
        $resultado = mysqli_query($conn, $query);
        
        if ($resultado) {
            while ($fila = mysqli_fetch_assoc($resultado)) {
                $tipos[] = $fila;
            }
            mysqli_free_result($resultado);
        }
        
        mysqli_close($conn);
    }
    
    return $tipos;
}

// Función para crear tablas necesarias si no existen
function crearTablasSiNoExisten() {
    $conn = ActivarMySQL();
    
    if ($conn) {
        // Tabla para almacenar sesiones (añadimos campo observaciones)
        $query_sesiones = "CREATE TABLE IF NOT EXISTS tsesiones (
            id INT AUTO_INCREMENT PRIMARY KEY,
            fecha DATE NOT NULL,
            hora VARCHAR(20) NOT NULL,
            pantalla INT NOT NULL,
            supervisor VARCHAR(100),
            observaciones TEXT,
            creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        )";
        
        // Tabla para relacionar sesiones con trabajos
        $query_relacion = "CREATE TABLE IF NOT EXISTS tsesion_trabajos (
            id INT AUTO_INCREMENT PRIMARY KEY,
            sesion_id INT NOT NULL,
            trabajo_id INT NOT NULL,
            orden INT NOT NULL,
            FOREIGN KEY (sesion_id) REFERENCES tsesiones(id) ON DELETE CASCADE,
            FOREIGN KEY (trabajo_id) REFERENCES ttrabajo(id)
        )";
        
        mysqli_query($conn, $query_sesiones);
        mysqli_query($conn, $query_relacion);
        
        // Verificar si la columna 'observaciones' existe, si no, añadirla
        $query_check = "SHOW COLUMNS FROM tsesiones LIKE 'observaciones'";
        $resultado = mysqli_query($conn, $query_check);
        
        if ($resultado && mysqli_num_rows($resultado) == 0) {
            // La columna no existe, vamos a añadirla
            $query_alter = "ALTER TABLE tsesiones ADD COLUMN observaciones TEXT AFTER supervisor";
            mysqli_query($conn, $query_alter);
        }
        
        mysqli_close($conn);
    }
}

// Función para obtener sesiones programadas
function obtenerSesiones() {
    $conn = ActivarMySQL();
    $sesiones = array();
    
    if ($conn) {
        $query = "SELECT s.id, s.fecha, s.hora, s.pantalla, s.supervisor, s.observaciones, 
                 COUNT(st.trabajo_id) as num_presentaciones
                 FROM tsesiones s
                 LEFT JOIN tsesion_trabajos st ON s.id = st.sesion_id
                 GROUP BY s.id
                 ORDER BY s.fecha, s.hora, s.pantalla";
        
        $resultado = mysqli_query($conn, $query);
        
        if ($resultado) {
            while ($fila = mysqli_fetch_assoc($resultado)) {
                $sesiones[] = $fila;
            }
            mysqli_free_result($resultado);
        }
        
        mysqli_close($conn);
    }
    
    return $sesiones;
}

// Función para obtener trabajos de una sesión específica
function obtenerTrabajosSesion($sesion_id) {
    $conn = ActivarMySQL();
    $trabajos = array();
    
    if ($conn) {
        $query = "SELECT st.id, st.sesion_id, st.trabajo_id, st.orden,
                 t.codigo, t.titulo, t.autor1, t.apellido_autor1, t.pais, t.titulo_autor1,
                 t.cod_tipo_competicion_propuesto, t.cod_tipo_presentacion_aprobado,
                 tc.descripcion_esp AS tipo_competicion
                 FROM tsesion_trabajos st
                 JOIN ttrabajo t ON st.trabajo_id = t.id
                 LEFT JOIN ttipo_competicion tc ON t.cod_tipo_competicion_propuesto = tc.codigo
                 WHERE st.sesion_id = ?
                 ORDER BY st.orden";
        
        $stmt = mysqli_prepare($conn, $query);
        mysqli_stmt_bind_param($stmt, "i", $sesion_id);
        mysqli_stmt_execute($stmt);
        
        $resultado = mysqli_stmt_get_result($stmt);
        
        if ($resultado) {
            while ($fila = mysqli_fetch_assoc($resultado)) {
                $trabajos[] = $fila;
            }
            mysqli_free_result($resultado);
        }
        
        mysqli_stmt_close($stmt);
        mysqli_close($conn);
    }
    
    return $trabajos;
}

// Función para crear o actualizar una sesión
function crearActualizarSesion($fecha, $hora, $pantalla, $supervisor, $observaciones = '', $id = null) {
    $conn = ActivarMySQL();
    $resultado = false;
    
    if ($conn) {
        if ($id) {
            // Actualizar sesión existente
            $query = "UPDATE tsesiones SET fecha = ?, hora = ?, pantalla = ?, supervisor = ?, observaciones = ? WHERE id = ?";
            $stmt = mysqli_prepare($conn, $query);
            mysqli_stmt_bind_param($stmt, "ssissi", $fecha, $hora, $pantalla, $supervisor, $observaciones, $id);
        } else {
            // Crear nueva sesión
            $query = "INSERT INTO tsesiones (fecha, hora, pantalla, supervisor, observaciones) VALUES (?, ?, ?, ?, ?)";
            $stmt = mysqli_prepare($conn, $query);
            mysqli_stmt_bind_param($stmt, "ssiss", $fecha, $hora, $pantalla, $supervisor, $observaciones);
        }
        
        $resultado = mysqli_stmt_execute($stmt);
        
        if ($resultado && !$id) {
            $id = mysqli_insert_id($conn);
        }
        
        mysqli_stmt_close($stmt);
        mysqli_close($conn);
        
        return $id;
    }
    
    return false;
}

// Función para asignar trabajos a una sesión
function asignarTrabajosSesion($sesion_id, $trabajos_ids, $ordenes) {
    $conn = ActivarMySQL();
    $resultado = false;
    
    if ($conn) {
        // Primero eliminar asignaciones existentes
        $query_delete = "DELETE FROM tsesion_trabajos WHERE sesion_id = ?";
        $stmt_delete = mysqli_prepare($conn, $query_delete);
        mysqli_stmt_bind_param($stmt_delete, "i", $sesion_id);
        mysqli_stmt_execute($stmt_delete);
        mysqli_stmt_close($stmt_delete);
        
        // Insertar nuevas asignaciones
        $query_insert = "INSERT INTO tsesion_trabajos (sesion_id, trabajo_id, orden) VALUES (?, ?, ?)";
        $stmt_insert = mysqli_prepare($conn, $query_insert);
        
        for ($i = 0; $i < count($trabajos_ids); $i++) {
            mysqli_stmt_bind_param($stmt_insert, "iii", $sesion_id, $trabajos_ids[$i], $ordenes[$i]);
            mysqli_stmt_execute($stmt_insert);
        }
        
        mysqli_stmt_close($stmt_insert);
        mysqli_close($conn);
        
        return true;
    }
    
    return false;
}

// Función para eliminar una sesión
function eliminarSesion($sesion_id) {
    $conn = ActivarMySQL();
    $resultado = false;
    
    if ($conn) {
        // Las asignaciones se eliminarán automáticamente por la restricción ON DELETE CASCADE
        $query = "DELETE FROM tsesiones WHERE id = ?";
        $stmt = mysqli_prepare($conn, $query);
        mysqli_stmt_bind_param($stmt, "i", $sesion_id);
        $resultado = mysqli_stmt_execute($stmt);
        
        mysqli_stmt_close($stmt);
        mysqli_close($conn);
    }
    
    return $resultado;
}

// Función para generar el HTML de las pantallas para una fecha específica
function generarHTMLPantallas($fecha) {
    $conn = ActivarMySQL();
    $html = '';
    
    if ($conn) {
        // Obtener sesiones para esta fecha
        $query = "SELECT s.id, s.hora, s.pantalla, s.supervisor, s.observaciones
                 FROM tsesiones s
                 WHERE s.fecha = ?
                 ORDER BY s.hora, s.pantalla";
        
        $stmt = mysqli_prepare($conn, $query);
        mysqli_stmt_bind_param($stmt, "s", $fecha);
        mysqli_stmt_execute($stmt);
        
        $resultado = mysqli_stmt_get_result($stmt);
        
        if ($resultado) {
            // Agrupar por hora
            $horas = array();
            while ($sesion = mysqli_fetch_assoc($resultado)) {
                if (!isset($horas[$sesion['hora']])) {
                    $horas[$sesion['hora']] = array();
                }
                $horas[$sesion['hora']][] = $sesion;
            }
            
            // Generar HTML para cada hora
            foreach ($horas as $hora => $sesiones_hora) {
                $html .= '<div class="time-block">';
                $html .= '<h3 class="time-header">' . htmlspecialchars($hora) . '</h3>';
                $html .= '<div class="screen-row">';
                
                // Generar HTML para cada pantalla en esta hora
                foreach ($sesiones_hora as $sesion) {
                    $html .= '<div class="screen-container">';
                    $html .= '<div class="screen-header">';
                    $html .= '<h4>Pantalla ' . htmlspecialchars($sesion['pantalla']) . '</h4>';
                    $html .= '<p class="supervisor">Supervisor: ' . htmlspecialchars($sesion['supervisor']) . '</p>';
                    if (!empty($sesion['observaciones'])) {
                        $html .= '<p class="observaciones">Observaciones: ' . htmlspecialchars($sesion['observaciones']) . '</p>';
                    }
                    $html .= '</div>';
                    
                    // Obtener trabajos para esta sesión
                    $trabajos = obtenerTrabajosSesion($sesion['id']);
                    
                    if (!empty($trabajos)) {
                        $html .= '<div class="presentations-list">';
                        foreach ($trabajos as $trabajo) {
                            $html .= '<div class="presentation-item">';
                            $html .= '<div class="presentation-order">' . htmlspecialchars($trabajo['orden']) . '.</div>';
                            $html .= '<div class="presentation-code">' . htmlspecialchars($trabajo['codigo']) . '</div>';
                            $html .= '<div class="presentation-title">' . htmlspecialchars($trabajo['titulo']) . '</div>';
                            
                            // Formato mejorado del presentador con título académico
                            $presentador = $trabajo['titulo_autor1'] ? $trabajo['titulo_autor1'] . ' ' : '';
                            $presentador .= htmlspecialchars($trabajo['autor1'] . ' ' . $trabajo['apellido_autor1']);
                            $html .= '<div class="presentation-author">' . $presentador . '</div>';
                            
                            $html .= '<div class="presentation-country">' . htmlspecialchars($trabajo['pais']) . '</div>';
                            
                            // Añadir categoría
                            if (!empty($trabajo['tipo_competicion'])) {
                                $html .= '<div class="presentation-category">' . htmlspecialchars($trabajo['tipo_competicion']) . '</div>';
                            }
                            
                            $html .= '</div>';
                        }
                        $html .= '</div>';
                    } else {
                        $html .= '<div class="no-presentations">No hay presentaciones programadas</div>';
                    }
                    
                    $html .= '</div>'; // screen-container
                }
                
                $html .= '</div>'; // screen-row
                $html .= '</div>'; // time-block
            }
            
            mysqli_free_result($resultado);
        }
        
        mysqli_stmt_close($stmt);
        mysqli_close($conn);
    }
    
    return $html;
}

// Verificar si se recibió alguna acción por POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Crear o actualizar sesión
    if (isset($_POST['action']) && $_POST['action'] === 'crear_sesion') {
        $fecha = $_POST['fecha'];
        $hora = $_POST['hora'];
        $pantalla = $_POST['pantalla'];
        $supervisor = $_POST['supervisor'];
        $observaciones = isset($_POST['observaciones']) ? $_POST['observaciones'] : '';
        $trabajos_ids = isset($_POST['trabajos']) ? $_POST['trabajos'] : array();
        $ordenes = isset($_POST['ordenes']) ? $_POST['ordenes'] : array();
        
        $sesion_id = crearActualizarSesion($fecha, $hora, $pantalla, $supervisor, $observaciones);
        
        if ($sesion_id && !empty($trabajos_ids)) {
            asignarTrabajosSesion($sesion_id, $trabajos_ids, $ordenes);
            $mensaje = "Sesión creada correctamente.";
            $tipo_mensaje = "success";
        } else {
            $mensaje = "Error al crear la sesión.";
            $tipo_mensaje = "error";
        }
    }
    
    // Actualizar sesión existente
    if (isset($_POST['action']) && $_POST['action'] === 'actualizar_sesion') {
        $sesion_id = $_POST['sesion_id'];
        $fecha = $_POST['fecha'];
        $hora = $_POST['hora'];
        $pantalla = $_POST['pantalla'];
        $supervisor = $_POST['supervisor'];
        $observaciones = isset($_POST['observaciones']) ? $_POST['observaciones'] : '';
        $trabajos_ids = isset($_POST['trabajos']) ? $_POST['trabajos'] : array();
        $ordenes = isset($_POST['ordenes']) ? $_POST['ordenes'] : array();
        
        $resultado = crearActualizarSesion($fecha, $hora, $pantalla, $supervisor, $observaciones, $sesion_id);
        
        if ($resultado) {
            asignarTrabajosSesion($sesion_id, $trabajos_ids, $ordenes);
            $mensaje = "Sesión actualizada correctamente.";
            $tipo_mensaje = "success";
        } else {
            $mensaje = "Error al actualizar la sesión.";
            $tipo_mensaje = "error";
        }
    }
    
    // Eliminar sesión
    if (isset($_POST['action']) && $_POST['action'] === 'eliminar_sesion') {
        $sesion_id = $_POST['sesion_id'];
        
        if (eliminarSesion($sesion_id)) {
            $mensaje = "Sesión eliminada correctamente.";
            $tipo_mensaje = "success";
        } else {
            $mensaje = "Error al eliminar la sesión.";
            $tipo_mensaje = "error";
        }
    }
}

// Asegurarse de que las tablas necesarias existen
crearTablasSiNoExisten();

// Obtener datos para la vista
$trabajos = obtenerTrabajosAprobados();
$tipos_competicion = obtenerTiposCompeticion();
$tipos_presentacion = obtenerTiposPresentacion();
$sesiones = obtenerSesiones();

// Mapear códigos a descripciones
$mapa_competicion = array();
foreach ($tipos_competicion as $tipo) {
    $mapa_competicion[$tipo['codigo']] = $tipo['descripcion_esp'];
}

$mapa_presentacion = array();
foreach ($tipos_presentacion as $tipo) {
    $mapa_presentacion[$tipo['codigo']] = $tipo['descripcion_esp'];
}

// Obtener fechas únicas de sesiones para el selector
$fechas_unicas = array();
foreach ($sesiones as $sesion) {
    if (!in_array($sesion['fecha'], $fechas_unicas)) {
        $fechas_unicas[] = $sesion['fecha'];
    }
}
sort($fechas_unicas);

// Fecha seleccionada para ver (por defecto la primera disponible o la fecha actual)
$fecha_seleccionada = isset($_GET['fecha']) ? $_GET['fecha'] : (
    !empty($fechas_unicas) ? $fechas_unicas[0] : date('Y-m-d')
);

// Vista seleccionada (por defecto 'pantallas')
$vista = isset($_GET['vista']) ? $_GET['vista'] : 'pantallas';

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Programación de Presentaciones</title>
    
    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
    
    <!-- Google Fonts -->
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
    
    <!-- Estilos personalizados modernos -->
    <style>
        :root {
            --primary-color: #2563eb;
            --primary-light: #dbeafe;
            --primary-dark: #1e40af;
            --secondary-color: #10b981;
            --secondary-light: #d1fae5;
            --secondary-dark: #059669;
            --danger-color: #ef4444;
            --danger-light: #fee2e2;
            --danger-dark: #b91c1c;
            --info-color: #3b82f6;
            --info-light: #dbeafe;
            --info-dark: #1d4ed8;
            --warning-color: #f59e0b;
            --warning-light: #fef3c7;
            --warning-dark: #d97706;
            --success-color: #10b981;
            --success-light: #d1fae5;
            --success-dark: #059669;
            --gray-color: #9ca3af;
            --gray-light: #f9fafb;
            --gray-dark: #4b5563;
            --bg-color: #f8fafc;
            --text-color: #334155;
            --border-color: #e2e8f0;
            --font-family: 'Poppins', sans-serif;
            --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
            --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
            --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
            --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
            --border-radius: 0.5rem;
            --transition: all 0.3s ease;
        }
        
        body {
            background-color: var(--bg-color);
            font-family: var(--font-family);
            color: var(--text-color);
            line-height: 1.6;
        }
        
        .header {
            background: linear-gradient(135deg, var(--primary-color), var(--primary-dark));
            color: white;
            padding: 1.5rem 0;
            margin-bottom: 2rem;
            border-bottom: 5px solid var(--primary-light);
            box-shadow: var(--shadow-md);
        }
        
        .header h1 {
            font-weight: 700;
            text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        }
        
        .container {
            max-width: 1400px;
        }
        
        .nav-tabs {
            border-bottom: 2px solid var(--border-color);
            margin-bottom: 1.5rem;
        }
        
        .nav-tabs .nav-link {
            color: var(--gray-dark);
            font-weight: 500;
            padding: 0.75rem 1.25rem;
            border: none;
            border-bottom: 2px solid transparent;
            margin-bottom: -2px;
            transition: var(--transition);
            border-radius: 0.5rem 0.5rem 0 0;
        }
        
        .nav-tabs .nav-link:hover {
            background-color: var(--primary-light);
            color: var(--primary-dark);
        }
        
        .nav-tabs .nav-link.active {
            color: var(--primary-color);
            font-weight: 600;
            background-color: white;
            border-bottom: 2px solid var(--primary-color);
        }
        
        .card {
            border-radius: var(--border-radius);
            box-shadow: var(--shadow-md);
            margin-bottom: 1.5rem;
            border: none;
            overflow: hidden;
        }
        
        .card-header {
            background: linear-gradient(to right, var(--primary-light), white);
            font-weight: 600;
            border-bottom: 1px solid var(--border-color);
            padding: 1rem 1.5rem;
        }
        
        .btn-primary {
            background-color: var(--primary-color);
            border-color: var(--primary-color);
            font-weight: 500;
            transition: var(--transition);
            box-shadow: var(--shadow-sm);
        }
        
        .btn-primary:hover {
            background-color: var(--primary-dark);
            border-color: var(--primary-dark);
            transform: translateY(-1px);
            box-shadow: var(--shadow-md);
        }
        
        .btn-outline-primary {
            color: var(--primary-color);
            border-color: var(--primary-color);
            font-weight: 500;
            transition: var(--transition);
        }
        
        .btn-outline-primary:hover {
            background-color: var(--primary-color);
            color: white;
            transform: translateY(-1px);
        }
        
        .btn-danger {
            background-color: var(--danger-color);
            border-color: var(--danger-color);
            font-weight: 500;
            transition: var(--transition);
        }
        
        .btn-danger:hover {
            background-color: var(--danger-dark);
            border-color: var(--danger-dark);
            transform: translateY(-1px);
        }
        
        .btn-outline-danger {
            color: var(--danger-color);
            border-color: var(--danger-color);
            font-weight: 500;
            transition: var(--transition);
        }
        
        .btn-outline-danger:hover {
            background-color: var(--danger-color);
            color: white;
            transform: translateY(-1px);
        }
        
        .alert {
            border-radius: var(--border-radius);
            font-weight: 500;
            box-shadow: var(--shadow-sm);
        }
        
        .alert-success {
            background-color: var(--success-light);
            border-color: var(--success-color);
            color: var(--success-dark);
        }
        
        .alert-danger {
            background-color: var(--danger-light);
            border-color: var(--danger-color);
            color: var(--danger-dark);
        }
        
        .time-block {
            margin-bottom: 2rem;
            animation: fadeIn 0.5s ease-out;
        }
        
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }
        
        .time-header {
            background: linear-gradient(to right, var(--secondary-light), white);
            padding: 0.75rem 1.25rem;
            border-radius: var(--border-radius);
            margin-bottom: 1rem;
            font-weight: 600;
            color: var(--secondary-dark);
            box-shadow: var(--shadow-sm);
            border-left: 4px solid var(--secondary-color);
        }
        
        .screen-row {
            display: flex;
            flex-wrap: wrap;
            gap: 1.5rem;
            margin-bottom: 1.5rem;
        }
        
        .screen-container {
            flex: 1;
            min-width: 300px;
            border-radius: var(--border-radius);
            background-color: white;
            padding: 1.25rem;
            box-shadow: var(--shadow-md);
            transition: var(--transition);
            border: 1px solid var(--border-color);
        }
        
        .screen-container:hover {
            transform: translateY(-5px);
            box-shadow: var(--shadow-lg);
        }
        
        .screen-header {
            border-bottom: 1px solid var(--border-color);
            margin-bottom: 1rem;
            padding-bottom: 0.75rem;
        }
        
        .screen-header h4 {
            margin: 0;
            color: var(--primary-color);
            font-weight: 600;
            font-size: 1.2rem;
        }
        
        .supervisor {
            font-style: italic;
            color: var(--gray-dark);
            margin: 0.5rem 0 0;
            font-size: 0.9rem;
        }
        
        .observaciones {
            color: var(--info-dark);
            margin: 0.5rem 0 0;
            font-size: 0.9rem;
            background-color: var(--info-light);
            padding: 0.5rem;
            border-radius: 0.25rem;
            border-left: 3px solid var(--info-color);
        }
        
        .presentations-list {
            max-height: 500px;
            overflow-y: auto;
            padding-right: 0.5rem;
        }
        
        .presentations-list::-webkit-scrollbar {
            width: 6px;
        }
        
        .presentations-list::-webkit-scrollbar-track {
            background: var(--gray-light);
            border-radius: 10px;
        }
        
        .presentations-list::-webkit-scrollbar-thumb {
            background: var(--gray-color);
            border-radius: 10px;
        }
        
        .presentation-item {
            background-color: white;
            border-left: 4px solid var(--primary-color);
            padding: 1rem;
            margin-bottom: 0.75rem;
            border-radius: 0 0.5rem 0.5rem 0;
            box-shadow: var(--shadow-sm);
            transition: var(--transition);
            position: relative;
            overflow: hidden;
        }
        
        .presentation-item:hover {
            transform: translateX(5px);
            box-shadow: var(--shadow-md);
            .presentation-item:nth-child(odd) {
            background-color: var(--gray-light);
        }
        
        .presentation-order {
            position: absolute;
            top: 0.75rem;
            left: 0.75rem;
            background-color: var(--primary-color);
            color: white;
            width: 24px;
            height: 24px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: bold;
            font-size: 0.8rem;
        }
        
        .presentation-code {
            font-weight: bold;
            color: var(--primary-color);
            margin-left: 2rem;
            font-size: 0.95rem;
        }
        
        .presentation-title {
            margin: 0.75rem 0;
            font-weight: 500;
            color: var(--text-color);
        }
        
        .presentation-author {
            font-size: 0.9rem;
            color: var(--gray-dark);
            margin-bottom: 0.5rem;
        }
        
        .presentation-country {
            display: inline-block;
            background-color: var(--primary-light);
            color: var(--primary-dark);
            padding: 0.2rem 0.75rem;
            border-radius: 2rem;
            font-size: 0.8rem;
            font-weight: 500;
            margin-right: 0.5rem;
        }
        
        .presentation-category {
            display: inline-block;
            background-color: var(--secondary-light);
            color: var(--secondary-dark);
            padding: 0.2rem 0.75rem;
            border-radius: 2rem;
            font-size: 0.8rem;
            font-weight: 500;
        }
        
        .no-presentations {
            text-align: center;
            padding: 2rem;
            color: var(--gray-color);
            font-style: italic;
            background-color: var(--gray-light);
            border-radius: var(--border-radius);
        }
        
        .session-list tr {
            transition: var(--transition);
        }
        
        .session-list tr:hover {
            background-color: var(--primary-light);
        }
        
        .session-list .badge {
            font-size: 0.8rem;
            padding: 0.4em 0.8em;
        }
        
        .form-group {
            margin-bottom: 1.25rem;
        }
        
        .form-label {
            font-weight: 500;
            margin-bottom: 0.5rem;
            color: var(--gray-dark);
        }
        
        .form-control, .form-select {
            border-radius: var(--border-radius);
            border: 1px solid var(--border-color);
            padding: 0.6rem 1rem;
            transition: var(--transition);
        }
        
        .form-control:focus, .form-select:focus {
            box-shadow: 0 0 0 3px var(--primary-light);
            border-color: var(--primary-color);
        }
        
        .selected-works {
            margin-top: 1.25rem;
            border: 1px solid var(--border-color);
            border-radius: var(--border-radius);
            padding: 1rem;
            background-color: var(--gray-light);
            box-shadow: var(--shadow-sm);
        }
        
        .work-item {
            background-color: white;
            padding: 1rem;
            margin-bottom: 0.75rem;
            border-radius: var(--border-radius);
            border: 1px solid var(--border-color);
            display: flex;
            align-items: center;
            transition: var(--transition);
            box-shadow: var(--shadow-sm);
        }
        
        .work-item:hover {
            box-shadow: var(--shadow-md);
            transform: translateY(-2px);
        }
        
        .work-order {
            flex: 0 0 40px;
        }
        
        .work-info {
            flex: 1;
            padding-right: 1rem;
        }
        
        .work-actions {
            flex: 0 0 50px;
            text-align: right;
        }
        
        .order-handle {
            cursor: move;
            color: var(--gray-color);
        }
        
        .filter-section {
            background: linear-gradient(to right, var(--info-light), white);
            padding: 1.25rem;
            border-radius: var(--border-radius);
            margin-bottom: 1.5rem;
            box-shadow: var(--shadow-sm);
            border-left: 4px solid var(--info-color);
        }
        
        .badge {
            font-weight: 600;
            padding: 0.35em 0.65em;
            border-radius: 2rem;
        }
        
        .bg-info {
            background-color: var(--info-color) !important;
        }
        
        .bg-success {
            background-color: var(--success-color) !important;
        }
        
        .bg-danger {
            background-color: var(--danger-color) !important;
        }
        
        .bg-warning {
            background-color: var(--warning-color) !important;
        }
        
        /* Animaciones */
        .fade-in {
            animation: fadeIn 0.5s ease-out forwards;
        }
        
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }
        
        .btn-floating {
            position: fixed;
            bottom: 2rem;
            right: 2rem;
            width: 56px;
            height: 56px;
            border-radius: 50%;
            background-color: var(--primary-color);
            color: white;
            display: flex;
            align-items: center;
            justify-content: center;
            box-shadow: var(--shadow-lg);
            transition: var(--transition);
            z-index: 1000;
        }
        
        .btn-floating:hover {
            background-color: var(--primary-dark);
            transform: scale(1.1);
        }
        
        .btn-floating i {
            font-size: 1.5rem;
        }
        
        /* Responsive */
        @media (max-width: 768px) {
            .screen-container {
                min-width: 100%;
            }
            
            .header h1 {
                font-size: 1.5rem;
            }
            
            .nav-tabs .nav-link {
                padding: 0.5rem 0.75rem;
                font-size: 0.9rem;
            }
        }
    </style>
</head>
<body>
    <div class="header">
        <div class="container">
            <h1 class="text-center">Programación de Presentaciones de Investigación</h1>
        </div>
    </div>
    
    <div class="container mb-5">
        <?php if (isset($mensaje) && isset($tipo_mensaje)): ?>
            <div class="alert alert-<?php echo $tipo_mensaje === 'success' ? 'success' : 'danger'; ?> alert-dismissible fade show" role="alert">
                <?php echo $mensaje; ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        <?php endif; ?>
        
        <!-- Pestañas de navegación -->
        <ul class="nav nav-tabs mb-4">
            <li class="nav-item">
                <a class="nav-link <?php echo $vista === 'pantallas' ? 'active' : ''; ?>" href="?vista=pantallas<?php echo !empty($fecha_seleccionada) ? '&fecha=' . $fecha_seleccionada : ''; ?>">
                    <i class="fas fa-desktop me-2"></i>Ver Pantallas
                </a>
            </li>
            <li class="nav-item">
                <a class="nav-link <?php echo $vista === 'sesiones' ? 'active' : ''; ?>" href="?vista=sesiones">
                    <i class="fas fa-calendar-alt me-2"></i>Gestionar Sesiones
                </a>
            </li>
            <li class="nav-item">
                <a class="nav-link <?php echo $vista === 'nueva' ? 'active' : ''; ?>" href="?vista=nueva">
                    <i class="fas fa-plus-circle me-2"></i>Nueva Sesión
                </a>
            </li>
            <li class="nav-item">
                <a class="nav-link <?php echo $vista === 'exportar' ? 'active' : ''; ?>" href="?vista=exportar">
                    <i class="fas fa-file-export me-2"></i>Exportar
                </a>
            </li>
        </ul>
        
        <?php if ($vista === 'pantallas'): ?>
            <!-- Vista de Pantallas -->
            <div class="card fade-in">
                <div class="card-header">
                    <div class="row align-items-center">
                        <div class="col-md-6">
                            <h5 class="mb-0">Visualización de Pantallas</h5>
                        </div>
                        <div class="col-md-6">
                            <form method="get" class="d-flex justify-content-end">
                                <input type="hidden" name="vista" value="pantallas">
                                <select name="fecha" class="form-select me-2" style="max-width: 200px;" onchange="this.form.submit()">
                                    <?php foreach ($fechas_unicas as $fecha): ?>
                                        <option value="<?php echo $fecha; ?>" <?php echo $fecha === $fecha_seleccionada ? 'selected' : ''; ?>>
                                            <?php echo date('d/m/Y', strtotime($fecha)); ?>
                                        </option>
                                    <?php endforeach; ?>
                                </select>
                                <button type="submit" class="btn btn-primary btn-sm">
                                    <i class="fas fa-filter me-1"></i>Filtrar
                                </button>
                            </form>
                        </div>
                    </div>
                </div>
                <div class="card-body">
                    <?php if (!empty($fechas_unicas)): ?>
                        <h4 class="mb-4">Programación para el <?php echo date('d/m/Y', strtotime($fecha_seleccionada)); ?></h4>
                        <?php echo generarHTMLPantallas($fecha_seleccionada); ?>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle me-2"></i>No hay sesiones programadas. Utilice la pestaña "Nueva Sesión" para crear una programación.
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        
        <?php elseif ($vista === 'sesiones'): ?>
            <!-- Gestión de Sesiones -->
            <div class="card fade-in">
                <div class="card-header">
                    <h5 class="mb-0"><i class="fas fa-tasks me-2"></i>Gestionar Sesiones Existentes</h5>
                </div>
                <div class="card-body">
                    <?php if (!empty($sesiones)): ?>
                        <div class="table-responsive">
                            <table class="table table-hover session-list">
                                <thead class="table-light">
                                    <tr>
                                        <th>ID</th>
                                        <th>Fecha</th>
                                        <th>Hora</th>
                                        <th>Pantalla</th>
                                        <th>Supervisor</th>
                                        <th>Observaciones</th>
                                        <th>Presentaciones</th>
                                        <th>Acciones</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($sesiones as $sesion): ?>
                                        <tr>
                                            <td><?php echo $sesion['id']; ?></td>
                                            <td><?php echo date('d/m/Y', strtotime($sesion['fecha'])); ?></td>
                                            <td><?php echo $sesion['hora']; ?></td>
                                            <td><?php echo $sesion['pantalla']; ?></td>
                                            <td><?php echo $sesion['supervisor']; ?></td>
                                            <td>
                                                <?php if (!empty($sesion['observaciones'])): ?>
                                                    <span class="d-inline-block text-truncate" style="max-width: 150px;" title="<?php echo htmlspecialchars($sesion['observaciones']); ?>">
                                                        <?php echo htmlspecialchars($sesion['observaciones']); ?>
                                                    </span>
                                                <?php else: ?>
                                                    <span class="text-muted">—</span>
                                                <?php endif; ?>
                                            </td>
                                            <td>
                                                <span class="badge bg-info"><?php echo $sesion['num_presentaciones']; ?></span>
                                            </td>
                                            <td>
                                                <a href="?vista=editar&sesion_id=<?php echo $sesion['id']; ?>" class="btn btn-sm btn-outline-primary" title="Editar">
                                                    <i class="fas fa-edit"></i>
                                                </a>
                                                <button type="button" class="btn btn-sm btn-outline-danger" data-bs-toggle="modal" data-bs-target="#deleteModal<?php echo $sesion['id']; ?>" title="Eliminar">
                                                    <i class="fas fa-trash-alt"></i>
                                                </button>
                                                
                                                <!-- Modal de confirmación para eliminar -->
                                                <div class="modal fade" id="deleteModal<?php echo $sesion['id']; ?>" tabindex="-1" aria-labelledby="deleteModalLabel<?php echo $sesion['id']; ?>" aria-hidden="true">
                                                    <div class="modal-dialog">
                                                        <div class="modal-content">
                                                            <div class="modal-header">
                                                                <h5 class="modal-title" id="deleteModalLabel<?php echo $sesion['id']; ?>">Confirmar eliminación</h5>
                                                                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                                                            </div>
                                                            <div class="modal-body">
                                                                <p>¿Está seguro de que desea eliminar esta sesión? Esta acción no se puede deshacer.</p>
                                                                
                                                                <div class="alert alert-warning">
                                                                    <i class="fas fa-exclamation-triangle me-2"></i>También se eliminarán todas las presentaciones asociadas a esta sesión.
                                                                </div>
                                                            </div>
                                                            <div class="modal-footer">
                                                                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
                                                                <form method="post">
                                                                    <input type="hidden" name="action" value="eliminar_sesion">
                                                                    <input type="hidden" name="sesion_id" value="<?php echo $sesion['id']; ?>">
                                                                    <button type="submit" class="btn btn-danger">
                                                                        <i class="fas fa-trash-alt me-2"></i>Eliminar
                                                                    </button>
                                                                </form>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info">
                            <i class="fas fa-info-circle me-2"></i>No hay sesiones programadas. Utilice la pestaña "Nueva Sesión" para crear una programación.
                        </div>
                    <?php endif; ?>
                </div>
            </div>
        
        <?php elseif ($vista === 'nueva'): ?>
            <!-- Formulario para Crear Nueva Sesión -->
            <div class="row fade-in">
                <div class="col-lg-4">
                    <div class="card">
                        <div class="card-header">
                            <h5 class="mb-0"><i class="fas fa-plus-circle me-2"></i>Detalles de la Sesión</h5>
                        </div>
                        <div class="card-body">
                            <form id="sessionForm" method="post">
                                <input type="hidden" name="action" value="crear_sesion">
                                
                                <div class="form-group">
                                    <label for="fecha" class="form-label">Fecha</label>
                                    <input type="date" class="form-control" id="fecha" name="fecha" value="<?php echo date('Y-m-d'); ?>" required>
                                </div>
                                
                                <div class="form-group">
                                    <label for="hora" class="form-label">Horario</label>
                                    <select class="form-select" id="hora" name="hora" required>
                                        <option value="08:00 - 08:30">08:00 - 08:30</option>
                                        <option value="08:30 - 09:00">08:30 - 09:00</option>
                                        <option value="09:00 - 09:30">09:00 - 09:30</option>
                                        <option value="09:30 - 10:00">09:30 - 10:00</option>
                                        <option value="10:00 - 10:30">10:00 - 10:30</option>
                                        <option value="10:30 - 11:00">10:30 - 11:00</option>
                                        <option value="11:00 - 11:30">11:00 - 11:30</option>
                                        <option value="11:30 - 12:00">11:30 - 12:00</option>
                                        <option value="13:00 - 13:30">13:00 - 13:30</option>
                                        <option value="13:30 - 14:00">13:30 - 14:00</option>
                                        <option value="14:00 - 14:30">14:00 - 14:30</option>
                                        <option value="14:30 - 15:00">14:30 - 15:00</option>
                                        <option value="15:00 - 15:30">15:00 - 15:30</option>
                                        <option value="15:30 - 16:00">15:30 - 16:00</option>
                                        <option value="16:00 - 16:30">16:00 - 16:30</option>
                                        <option value="16:30 - 17:00">16:30 - 17:00</option>
                                    </select>
                                </div>
                                
                                <div class="form-group">
                                    <label for="pantalla" class="form-label">Número de Pantalla</label>
                                    <input type="number" class="form-control" id="pantalla" name="pantalla" min="1" max="10" value="1" required>
                                </div>
                                
                                <div class="form-group">
                                    <label for="supervisor" class="form-label">Supervisor</label>
                                    <input type="text" class="form-control" id="supervisor" name="supervisor" required>
                                </div>
                                
                                <div class="form-group">
                                    <label for="observaciones" class="form-label">Observaciones</label>
                                    <textarea class="form-control" id="observaciones" name="observaciones" rows="3" placeholder="Observaciones adicionales sobre esta sesión..."></textarea>
                                </div>
                                
                                <div class="filter-section mt-4">
                                    <h6 class="mb-3"><i class="fas fa-filter me-2"></i>Filtros para Trabajos</h6>
                                    
                                    <div class="form-group">
                                        <label for="categoria" class="form-label">Categoría</label>
                                        <select class="form-select" id="categoria">
                                            <option value="">Todas las categorías</option>
                                            <?php foreach ($tipos_competicion as $tipo): ?>
                                                <option value="<?php echo $tipo['codigo']; ?>"><?php echo $tipo['descripcion_esp']; ?></option>
                                            <?php endforeach; ?>
                                        </select>
                                    </div>
                                    
                                    <div class="form-group">
                                        <label for="pais" class="form-label">País</label>
                                        <select class="form-select" id="pais">
                                            <option value="">Todos los países</option>
                                            <?php 
                                            $paises = array();
                                            foreach ($trabajos as $trabajo) {
                                                if (!in_array($trabajo['pais'], $paises)) {
                                                    $paises[] = $trabajo['pais'];
                                                }
                                            }
                                            sort($paises);
                                            foreach ($paises as $pais): 
                                            ?>
                                                <option value="<?php echo $pais; ?>"><?php echo $pais; ?></option>
                                            <?php endforeach; ?>
                                        </select>
                                    </div>
                                    
                                    <button type="button" id="aplicarFiltros" class="btn btn-primary btn-sm mt-2">
                                        <i class="fas fa-filter me-1"></i>Aplicar Filtros
                                    </button>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
                
                <div class="col-lg-8">
                    <div class="card">
                        <div class="card-header">
                            <h5 class="mb-0"><i class="fas fa-list-ul me-2"></i>Selección de Presentaciones</h5>
                        </div>
                        <div class="card-body">
                            <div class="row">
                                <div class="col">
                                    <h6><i class="fas fa-clipboard-list me-2"></i>Trabajos Disponibles</h6>
                                    <div id="trabajosDisponibles" style="max-height: 400px; overflow-y: auto;">
                                        <?php foreach ($trabajos as $trabajo): ?>
                                            <div class="work-item" data-id="<?php echo $trabajo['id']; ?>" data-code="<?php echo $trabajo['codigo']; ?>" data-title="<?php echo htmlspecialchars($trabajo['titulo']); ?>" data-author="<?php echo htmlspecialchars($trabajo['autor1'] . ' ' . $trabajo['apellido_autor1']); ?>" data-country="<?php echo $trabajo['pais']; ?>" data-category="<?php echo $trabajo['cod_tipo_competicion_propuesto']; ?>">
                                                <div class="work-info">
                                                    <strong><?php echo $trabajo['codigo']; ?></strong> - 
                                                    <?php echo htmlspecialchars($trabajo['titulo']); ?>
                                                    <div>
                                                        <small>
                                                            <?php echo htmlspecialchars(($trabajo['titulo_autor1'] ? $trabajo['titulo_autor1'] . ' ' : '') . $trabajo['autor1'] . ' ' . $trabajo['apellido_autor1']); ?> 
                                                            <span class="badge bg-light text-dark"><?php echo $trabajo['pais']; ?></span>
                                                            <?php if (isset($mapa_competicion[$trabajo['cod_tipo_competicion_propuesto']])): ?>
                                                                <span class="badge bg-info"><?php echo $mapa_competicion[$trabajo['cod_tipo_competicion_propuesto']]; ?></span>
                                                            <?php endif; ?>
                                                        </small>
                                                    </div>
                                                </div>
                                                <div class="work-actions">
                                                    <button type="button" class="btn btn-sm btn-outline-primary btn-add-trabajo" title="Añadir a la sesión">
                                                        <i class="fas fa-plus"></i>
                                                    </button>
                                                </div>
                                            </div>
                                        <?php endforeach; ?>
                                    </div>
                                </div>
                            </div>
                            
                            <div class="row mt-4">
                                <div class="col">
                                    <h6><i class="fas fa-check-circle me-2"></i>Presentaciones Seleccionadas</h6>
                                    <div id="trabajosSeleccionados" class="selected-works">
                                        <div class="no-selected-works text-center text-muted py-3">
                                            <i class="fas fa-info-circle me-2"></i>No hay presentaciones seleccionadas
                                        </div>
                                    </div>
                                    
                                    <div class="d-grid gap-2 mt-3">
                                        <button type="button" id="guardarSesion" class="btn btn-primary">
                                            <i class="fas fa-save me-1"></i>Guardar Sesión
                                        </button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            
        <?php elseif ($vista === 'editar' && isset($_GET['sesion_id'])): ?>
            <!-- Formulario para Editar Sesión Existente -->
            <?php 
            $sesion_id = $_GET['sesion_id'];
            
            // Obtener detalles de la sesión
            $sesion_detalles = null;
            foreach ($sesiones as $sesion) {
                if ($sesion['id'] == $sesion_id) {
                    $sesion_detalles = $sesion;
                    break;
                }
            }
            
            // Obtener trabajos de la sesión
            $trabajos_sesion = obtenerTrabajosSesion($sesion_id);
            
            if ($sesion_detalles): 
            ?>
                <div class="row fade-in">
                    <div class="col-lg-4">
                        <div class="card">
                            <div class="card-header">
                                <h5 class="mb-0"><i class="fas fa-edit me-2"></i>Editar Sesión</h5>
                            </div>
                            <div class="card-body">
                                <form id="editSessionForm" method="post">
                                    <input type="hidden" name="action" value="actualizar_sesion">
                                    <input type="hidden" name="sesion_id" value="<?php echo $sesion_id; ?>">
                                    
                                    <div class="form-group">
                                        <label for="fecha" class="form-label">Fecha</label>
                                        <input type="date" class="form-control" id="fecha" name="fecha" value="<?php echo $sesion_detalles['fecha']; ?>" required>
                                    </div>
                                    
                                    <div class="form-group">
                                        <label for="hora" class="form-label">Horario</label>
                                        <select class="form-select" id="hora" name="hora" required>
                                            <?php 
                                            $horarios = [
                                                "08:00 - 08:30", "08:30 - 09:00", "09:00 - 09:30", "09:30 - 10:00",
                                                "10:00 - 10:30", "10:30 - 11:00", "11:00 - 11:30", "11:30 - 12:00",
                                                "13:00 - 13:30", "13:30 - 14:00", "14:00 - 14:30", "14:30 - 15:00",
                                                "15:00 - 15:30", "15:30 - 16:00", "16:00 - 16:30", "16:30 - 17:00"
                                            ];
                                            foreach ($horarios as $horario): 
                                            ?>
                                                <option value="<?php echo $horario; ?>" <?php echo $horario === $sesion_detalles['hora'] ? 'selected' : ''; ?>>
                                                    <?php echo $horario; ?>
                                                </option>
                                            <?php endforeach; ?>
                                        </select>
                                    </div>
                                    
                                    <div class="form-group">
                                        <label for="pantalla" class="form-label">Número de Pantalla</label>
                                        <input type="number" class="form-control" id="pantalla" name="pantalla" min="1" max="10" value="<?php echo $sesion_detalles['pantalla']; ?>" required>
                                    </div>
                                    
                                    <div class="form-group">
                                        <label for="supervisor" class="form-label">Supervisor</label>
                                        <input type="text" class="form-control" id="supervisor" name="supervisor" value="<?php echo $sesion_detalles['supervisor']; ?>" required>
                                    </div>
                                    
                                    <div class="form-group">
                                        <label for="observaciones" class="form-label">Observaciones</label>
                                        <textarea class="form-control" id="observaciones" name="observaciones" rows="3" placeholder="Observaciones adicionales sobre esta sesión..."><?php echo htmlspecialchars($sesion_detalles['observaciones']); ?></textarea>
                                    </div>
                                    
                                    <div class="filter-section mt-4">
                                        <h6 class="mb-3"><i class="fas fa-filter me-2"></i>Filtros para Trabajos</h6>
                                        
                                        <div class="form-group">
                                            <label for="categoria" class="form-label">Categoría</label>
                                            <select class="form-select" id="categoria">
                                                <option value="">Todas las categorías</option>
                                                <?php foreach ($tipos_competicion as $tipo): ?>
                                                    <option value="<?php echo $tipo['codigo']; ?>"><?php echo $tipo['descripcion_esp']; ?></option>
                                                <?php endforeach; ?>
                                            </select>
                                        </div>
                                        
                                        <div class="form-group">
                                            <label for="pais" class="form-label">País</label>
                                            <select class="form-select" id="pais">
                                                <option value="">Todos los países</option>
                                                <?php 
                                                $paises = array();
                                                foreach ($trabajos as $trabajo) {
                                                    if (!in_array($trabajo['pais'], $paises)) {
                                                        $paises[] = $trabajo['pais'];
                                                    }
                                                }
                                                sort($paises);
                                                foreach ($paises as $pais): 
                                                ?>
                                                    <option value="<?php echo $pais; ?>"><?php echo $pais; ?></option>
                                                <?php endforeach; ?>
                                            </select>
                                        </div>
                                        
                                        <button type="button" id="aplicarFiltros" class="btn btn-primary btn-sm mt-2">
                                            <i class="fas fa-filter me-1"></i>Aplicar Filtros
                                        </button>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                    
                    <div class="col-lg-8">
                        <div class="card">
                            <div class="card-header">
                                <h5 class="mb-0"><i class="fas fa-list-ul me-2"></i>Selección de Presentaciones</h5>
                            </div>
                            <div class="card-body">
                                <div class="row">
                                    <div class="col">
                                        <h6><i class="fas fa-clipboard-list me-2"></i>Trabajos Disponibles</h6>
                                        <div id="trabajosDisponibles" style="max-height: 400px; overflow-y: auto;">
                                            <?php 
                                            // Filtrar trabajos que ya están asignados a esta sesión
                                            $trabajos_asignados_ids = array_map(function($t) { return $t['trabajo_id']; }, $trabajos_sesion);
                                            foreach ($trabajos as $trabajo): 
                                                if (!in_array($trabajo['id'], $trabajos_asignados_ids)):
                                            ?>
                                                <div class="work-item" data-id="<?php echo $trabajo['id']; ?>" data-code="<?php echo $trabajo['codigo']; ?>" data-title="<?php echo htmlspecialchars($trabajo['titulo']); ?>" data-author="<?php echo htmlspecialchars($trabajo['autor1'] . ' ' . $trabajo['apellido_autor1']); ?>" data-country="<?php echo $trabajo['pais']; ?>" data-category="<?php echo $trabajo['cod_tipo_competicion_propuesto']; ?>">
                                                    <div class="work-info">
                                                        <strong><?php echo $trabajo['codigo']; ?></strong> - 
                                                        <?php echo htmlspecialchars($trabajo['titulo']); ?>
                                                        <div>
                                                            <small>
                                                                <?php echo htmlspecialchars(($trabajo['titulo_autor1'] ? $trabajo['titulo_autor1'] . ' ' : '') . $trabajo['autor1'] . ' ' . $trabajo['apellido_autor1']); ?> 
                                                                <span class="badge bg-light text-dark"><?php echo $trabajo['pais']; ?></span>
                                                                <?php if (isset($mapa_competicion[$trabajo['cod_tipo_competicion_propuesto']])): ?>
                                                                    <span class="badge bg-info"><?php echo $mapa_competicion[$trabajo['cod_tipo_competicion_propuesto']]; ?></span>
                                                                <?php endif; ?>
                                                            </small>
                                                        </div>
                                                    </div>
                                                    <div class="work-actions">
                                                        <button type="button" class="btn btn-sm btn-outline-primary btn-add-trabajo" title="Añadir a la sesión">
                                                            <i class="fas fa-plus"></i>
                                                        </button>
                                                    </div>
                                                </div>
                                            <?php 
                                                endif;
                                            endforeach; 
                                            ?>
                                        </div>
                                    </div>
                                </div>
                                
                                <div class="row mt-4">
                                    <div class="col">
                                        <h6><i class="fas fa-check-circle me-2"></i>Presentaciones Seleccionadas</h6>
                                        <div id="trabajosSeleccionados" class="selected-works">
                                            <?php if (!empty($trabajos_sesion)): ?>
                                                <?php foreach ($trabajos_sesion as $i => $trabajo): ?>
                                                    <div class="work-item" data-id="<?php echo $trabajo['trabajo_id']; ?>">
                                                        <div class="work-order">
                                                            <input type="number" class="form-control form-control-sm trabajo-orden" value="<?php echo $trabajo['orden']; ?>" min="1" step="1">
                                                        </div>
                                                        <div class="work-info">
                                                            <strong><?php echo $trabajo['codigo']; ?></strong> - 
                                                            <?php echo htmlspecialchars($trabajo['titulo']); ?>
                                                            <div>
                                                                <small>
                                                                    <?php echo htmlspecialchars(($trabajo['titulo_autor1'] ? $trabajo['titulo_autor1'] . ' ' : '') . $trabajo['autor1'] . ' ' . $trabajo['apellido_autor1']); ?> 
                                                                    <span class="badge bg-light text-dark"><?php echo $trabajo['pais']; ?></span>
                                                                    <?php if (isset($trabajo['tipo_competicion'])): ?>
                                                                        <span class="badge bg-info"><?php echo $trabajo['tipo_competicion']; ?></span>
                                                                    <?php endif; ?>
                                                                </small>
                                                            </div>
                                                        </div>
                                                        <div class="work-actions">
                                                            <button type="button" class="btn btn-sm btn-outline-danger btn-remove-trabajo" title="Quitar de la sesión">
                                                                <i class="fas fa-times"></i>
                                                            </button>
                                                        </div>
                                                    </div>
                                                <?php endforeach; ?>
                                            <?php else: ?>
                                                <div class="no-selected-works text-center text-muted py-3">
                                                    <i class="fas fa-info-circle me-2"></i>No hay presentaciones seleccionadas
                                                </div>
                                            <?php endif; ?>
                                        </div>
                                        
                                        <div class="d-grid gap-2 mt-3">
                                            <button type="button" id="guardarSesion" class="btn btn-primary">
                                                <i class="fas fa-save me-1"></i>Guardar Cambios
                                            </button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            <?php else: ?>
                <div class="alert alert-danger">
                    <i class="fas fa-exclamation-circle me-2"></i>No se encontró la sesión especificada.
                </div>
            <?php endif; ?>
            
        <?php elseif ($vista === 'exportar'): ?>
            <!-- Exportar Programación -->
            <div class="card fade-in">
                <div class="card-header">
                    <h5 class="mb-0"><i class="fas fa-file-export me-2"></i>Exportar Programación</h5>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-6">
                            <h6 class="mb-3"><i class="fas fa-cog me-2"></i>Opciones de Exportación</h6>
                            
                            <form id="exportForm" method="post" action="exportar_programacion.php" target="_blank">
                                <div class="form-group mb-3">
                                    <label class="form-label">Seleccione fechas a exportar</label>
                                    <div class="d-flex flex-wrap gap-2 mt-2">
                                        <?php foreach ($fechas_unicas as $fecha): ?>
                                            <div class="form-check">
                                                <input class="form-check-input" type="checkbox" name="fechas[]" value="<?php echo $fecha; ?>" id="fecha<?php echo str_replace('-', '', $fecha); ?>">
                                                <label class="form-check-label" for="fecha<?php echo str_replace('-', '', $fecha); ?>">
                                                    <?php echo date('d/m/Y', strtotime($fecha)); ?>
                                                </label>
                                            </div>
                                        <?php endforeach; ?>
                                    </div>
                                </div>
                                
                                <div class="form-group mb-3">
                                    <label class="form-label">Formato de exportación</label>
                                    <div class="form-check mt-2">
                                        <input class="form-check-input" type="radio" name="formato" value="pdf" id="formatoPdf" checked>
                                        <label class="form-check-label" for="formatoPdf">
                                            <i class="fas fa-file-pdf me-2 text-danger"></i>PDF
                                        </label>
                                    </div>
                                    <div class="form-check">
                                        <input class="form-check-input" type="radio" name="formato" value="excel" id="formatoExcel">
                                        <label class="form-check-label" for="formatoExcel">
                                            <i class="fas fa-file-excel me-2 text-success"></i>Excel
                                        </label>
                                    </div>
                                </div>
                                
                                <button type="submit" class="btn btn-primary">
                                    <i class="fas fa-download me-1"></i>Generar Exportación
                                </button>
                            </form>
                        </div>
                        
                        <div class="col-md-6">
                            <h6 class="mb-3"><i class="fas fa-eye me-2"></i>Vista Previa</h6>
                            
                            <?php if (!empty($sesiones)): ?>
                                <div class="alert alert-info">
                                    <i class="fas fa-info-circle me-2"></i>La vista previa estará disponible al seleccionar las opciones de exportación.
                                </div>
                                
                                <div class="card mt-3">
                                    <div class="card-body">
                                        <p class="text-muted mb-0">
                                            <i class="fas fa-lightbulb me-2"></i>La exportación incluirá datos detallados de las presentaciones, incluyendo el título, presentador, país, categoría y observaciones adicionales si las hubiera.
                                        </p>
                                    </div>
                                </div>
                            <?php else: ?>
                                <div class="alert alert-warning">
                                    <i class="fas fa-exclamation-triangle me-2"></i>No hay sesiones programadas para exportar.
                                </div>
                            <?php endif; ?>
                        </div>
                    </div>
                </div>
            </div>
        <?php endif; ?>
    </div>
    
    <!-- Botón flotante para nueva sesión -->
    <?php if ($vista !== 'nueva'): ?>
    <a href="?vista=nueva" class="btn-floating" title="Nueva sesión">
        <i class="fas fa-plus"></i>
    </a>
    <?php endif; ?>
    
    <!-- JavaScript para manipular la interfaz -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/sortablejs@1.14.0/Sortable.min.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            // Hacer que la lista de trabajos seleccionados sea ordenable
            const trabajosSeleccionados = document.getElementById('trabajosSeleccionados');
            if (trabajosSeleccionados) {
                new Sortable(trabajosSeleccionados, {
                    animation: 150,
                    handle: '.work-order',
                    onEnd: function() {
                        actualizarOrdenes();
                    }
                });
            }
            
            // Añadir trabajo a la selección
            const botonesAgregar = document.querySelectorAll('.btn-add-trabajo');
            botonesAgregar.forEach(boton => {
                boton.addEventListener('click', function() {
                    const workItem = this.closest('.work-item');
                    const id = workItem.getAttribute('data-id');
                    const code = workItem.getAttribute('data-code');
                    const title = workItem.getAttribute('data-title');
                    const author = workItem.getAttribute('data-author');
                    const country = workItem.getAttribute('data-country');
                    
                    // Verificar si ya está añadido
                    const yaAnadido = document.querySelector(`#trabajosSeleccionados .work-item[data-id="${id}"]`);
                    if (yaAnadido) {
                        showToast('Esta presentación ya está añadida a la sesión', 'warning');
                        return;
                    }
                    
                    // Ocultar el mensaje de "no hay presentaciones seleccionadas"
                    const noSelectedWorks = document.querySelector('.no-selected-works');
                    if (noSelectedWorks) {
                        noSelectedWorks.style.display = 'none';
                    }
                    
                    // Crear elemento para la lista de seleccionados
                    const orden = document.querySelectorAll('#trabajosSeleccionados .work-item').length + 1;
                    const nuevoItem = document.createElement('div');
                    nuevoItem.className = 'work-item';
                    nuevoItem.setAttribute('data-id', id);
                    nuevoItem.innerHTML = `
                        <div class="work-order">
                            <input type="number" class="form-control form-control-sm trabajo-orden" value="${orden}" min="1" step="1">
                        </div>
                        <div class="work-info">
                            <strong>${code}</strong> - ${title}
                            <div>
                                <small>
                                    ${author} 
                                    <span class="badge bg-light text-dark">${country}</span>
                                </small>
                            </div>
                        </div>
                        <div class="work-actions">
                            <button type="button" class="btn btn-sm btn-outline-danger btn-remove-trabajo" title="Quitar de la sesión">
                                <i class="fas fa-times"></i>
                            </button>
                        </div>
                    `;
                    
                    // Animar la adición del nuevo elemento
                    nuevoItem.style.opacity = '0';
                    nuevoItem.style.transform = 'translateY(10px)';
                    
                    trabajosSeleccionados.appendChild(nuevoItem);
                    
                    // Mostrar animación de aparición
                    setTimeout(() => {
                        nuevoItem.style.transition = 'all 0.3s ease-out';
                        nuevoItem.style.opacity = '1';
                        nuevoItem.style.transform = 'translateY(0)';
                    }, 10);
                    
                    // Añadir evento para eliminar
                    nuevoItem.querySelector('.btn-remove-trabajo').addEventListener('click', function() {
                        // Animar eliminación
                        nuevoItem.style.opacity = '0';
                        nuevoItem.style.transform = 'translateX(10px)';
                        
                        setTimeout(() => {
                            nuevoItem.remove();
                            actualizarOrdenes();
                            
                            // Mostrar mensaje si no hay trabajos seleccionados
                            if (document.querySelectorAll('#trabajosSeleccionados .work-item').length === 0) {
                                const contenedor = document.getElementById('trabajosSeleccionados');
                                contenedor.innerHTML = `
                                    <div class="no-selected-works text-center text-muted py-3">
                                        <i class="fas fa-info-circle me-2"></i>No hay presentaciones seleccionadas
                                    </div>
                                `;
                            }
                        }, 300);
                    });
                    
                    // Añadir evento para actualizar órdenes cuando se cambia el valor
                    nuevoItem.querySelector('.trabajo-orden').addEventListener('change', actualizarOrdenes);
                    
                    // Mostrar mensaje de éxito
                    showToast('Presentación añadida correctamente', 'success');
                });
            });
            
            // Eliminar trabajo de la selección (para los existentes en editar)
            document.querySelectorAll('.btn-remove-trabajo').forEach(boton => {
                boton.addEventListener('click', function() {
                    const item = this.closest('.work-item');
                    
                    // Animar eliminación
                    item.style.transition = 'all 0.3s ease-out';
                    item.style.opacity = '0';
                    item.style.transform = 'translateX(10px)';
                    
                    setTimeout(() => {
                        item.remove();
                        actualizarOrdenes();
                        
                        // Mostrar mensaje si no hay trabajos seleccionados
                        if (document.querySelectorAll('#trabajosSeleccionados .work-item').length === 0) {
                            const contenedor = document.getElementById('trabajosSeleccionados');
                            contenedor.innerHTML = `
                                <div class="no-selected-works text-center text-muted py-3">
                                    <i class="fas fa-info-circle me-2"></i>No hay presentaciones seleccionadas
                                </div>
                            `;
                        }
                    }, 300);
                });
            });
            
            // Actualizar órdenes cuando se cambia un valor de orden
            document.querySelectorAll('.trabajo-orden').forEach(input => {
                input.addEventListener('change', actualizarOrdenes);
            });
            
            // Función para actualizar los números de orden
            function actualizarOrdenes() {
                const items = document.querySelectorAll('#trabajosSeleccionados .work-item');
                items.forEach((item, index) => {
                    const input = item.querySelector('.trabajo-orden');
                    if (input && input.value !== (index + 1).toString()) {
                        input.value = index + 1;
                    }
                });
            }
            
            // Aplicar filtros a los trabajos disponibles
            const botonFiltros = document.getElementById('aplicarFiltros');
            if (botonFiltros) {
                botonFiltros.addEventListener('click', function() {
                    const categoria = document.getElementById('categoria').value;
                    const pais = document.getElementById('pais').value;
                    
                    const trabajos = document.querySelectorAll('#trabajosDisponibles .work-item');
                    let trabajosVisibles = 0;
                    
                    trabajos.forEach(trabajo => {
                        let mostrar = true;
                        
                        if (categoria && trabajo.getAttribute('data-category') !== categoria) {
                            mostrar = false;
                        }
                        
                        if (pais && trabajo.getAttribute('data-country') !== pais) {
                            mostrar = false;
                        }
                        
                        if (mostrar) {
                            trabajo.style.display = 'flex';
                            trabajosVisibles++;
                            
                            // Animación
                            trabajo.style.opacity = '0';
                            trabajo.style.transform = 'translateY(10px)';
                            
                            setTimeout(() => {
                                trabajo.style.transition = 'all 0.3s ease-out';
                                trabajo.style.opacity = '1';
                                trabajo.style.transform = 'translateY(0)';
                            }, 10 * trabajosVisibles); // Escalonar animaciones
                        } else {
                            trabajo.style.display = 'none';
                        }
                    });
                    
                    showToast(`Mostrando ${trabajosVisibles} trabajos`, 'info');
                });
            }
            
            // Guardar sesión
            const botonGuardar = document.getElementById('guardarSesion');
            if (botonGuardar) {
                botonGuardar.addEventListener('click', function() {
                    const trabajos = document.querySelectorAll('#trabajosSeleccionados .work-item');
                    
                    if (trabajos.length === 0) {
                        showToast('Debe seleccionar al menos una presentación para la sesión', 'error');
                        return;
                    }
                    
                    // Obtener formulario correcto
                    const form = document.querySelector('#sessionForm') || document.querySelector('#editSessionForm');
                    
                    if (!form) {
                        showToast('Error al encontrar el formulario', 'error');
                        return;
                    }
                    
                    // Limpiar campos anteriores
                    document.querySelectorAll('input[name^="trabajos"], input[name^="ordenes"]').forEach(campo => {
                        campo.remove();
                    });
                    
                    // Añadir nuevos campos
                    trabajos.forEach((trabajo, index) => {
                        const trabajoId = trabajo.getAttribute('data-id');
                        const orden = trabajo.querySelector('.trabajo-orden').value;
                        
                        const inputTrabajo = document.createElement('input');
                        inputTrabajo.type = 'hidden';
                        inputTrabajo.name = 'trabajos[]';
                        inputTrabajo.value = trabajoId;
                        form.appendChild(inputTrabajo);
                        
                        const inputOrden = document.createElement('input');
                        inputOrden.type = 'hidden';
                        inputOrden.name = 'ordenes[]';
                        inputOrden.value = orden;
                        form.appendChild(inputOrden);
                    });
                    
                    // Mostrar animación de guardado
                    botonGuardar.innerHTML = '<i class="fas fa-spinner fa-spin me-1"></i>Guardando...';
                    botonGuardar.disabled = true;
                    
                    // Enviar formulario
                    setTimeout(() => {
                        form.submit();
                    }, 500);
                });
            }
            
            // Función para mostrar notificaciones toast
            function showToast(message, type = 'info') {
                // Crear elemento toast si no existe
                let toastContainer = document.getElementById('toastContainer');
                if (!toastContainer) {
                    toastContainer = document.createElement('div');
                    toastContainer.id = 'toastContainer';
                    toastContainer.style.position = 'fixed';
                    toastContainer.style.bottom = '20px';
                    toastContainer.style.right = '20px';
                    toastContainer.style.zIndex = '9999';
                    document.body.appendChild(toastContainer);
                }
                
                // Crear toast
                const toast = document.createElement('div');
                toast.style.backgroundColor = type === 'success' ? '#10b981' : 
                                             type === 'error' ? '#ef4444' : 
                                             type === 'warning' ? '#f59e0b' : '#3b82f6';
                toast.style.color = 'white';
                toast.style.padding = '12px 20px';
                toast.style.borderRadius = '8px';
                toast.style.marginTop = '10px';
                toast.style.boxShadow = '0 4px 6px rgba(0, 0, 0, 0.1)';
                toast.style.display = 'flex';
                toast.style.alignItems = 'center';
                toast.style.opacity = '0';
                toast.style.transform = 'translateY(20px)';
                toast.style.transition = 'all 0.3s ease-out';
                
                // Icono según tipo
                let icon = '';
                if (type === 'success') icon = '<i class="fas fa-check-circle me-2"></i>';
                else if (type === 'error') icon = '<i class="fas fa-exclamation-circle me-2"></i>';
                else if (type === 'warning') icon = '<i class="fas fa-exclamation-triangle me-2"></i>';
                else icon = '<i class="fas fa-info-circle me-2"></i>';
                
                toast.innerHTML = icon + message;
                
                // Añadir toast al contenedor
                toastContainer.appendChild(toast);
                
                // Mostrar con animación
                setTimeout(() => {
                    toast.style.opacity = '1';
                    toast.style.transform = 'translateY(0)';
                }, 10);
                
                // Ocultar después de 3 segundos
                setTimeout(() => {
                    toast.style.opacity = '0';
                    toast.style.transform = 'translateY(-20px)';
                    
                    // Eliminar después de completar la animación
                    setTimeout(() => {
                        toast.remove();
                    }, 300);
                }, 3000);
            }
        });
    </script>
</body>
</html>