<?php
require_once "../../functions.php";
$pag = basename($_SERVER['PHP_SELF']);
gen_plantilla(true, $pag, false, false, '', false, false);

if (!isset($_POST["empleado"]) || !isset($_POST["mes"]) || !isset($_POST["año"]))
    exit;
$id_empleado = filter_input(INPUT_POST, "empleado", FILTER_SANITIZE_NUMBER_INT);
$mes = filter_input(INPUT_POST, "mes", FILTER_SANITIZE_NUMBER_INT);
$año = filter_input(INPUT_POST, "año", FILTER_SANITIZE_NUMBER_INT);

//Días del mes
$dia_empieza_semana = date('N', strtotime(date("$año-$mes-01")));
$dia_final = date('t', strtotime("$año-$mes-01"));
$dia_final_semana = date('N', strtotime("$año-$mes-$dia_final"));

$fecha_inicio_mes = date("Y-m-d", strtotime("$año-$mes-01"));
$fecha_fin_mes = date("Y-m-t", strtotime($fecha_inicio_mes));

//Saber fecha de alta
$fecha_alta = consulta("SELECT fecha_alta FROM empleados WHERE id=?;", [$id_empleado], true);
if (!empty($fecha_alta))
    $fecha_alta = $fecha_alta[0]["fecha_alta"];
else
    $fecha_alta = "2020-01-01";

//Saber fecha de eliminación (si el empleado fue eliminado)
$fecha_eliminacion = null;
$empleado_eliminado = consulta("SELECT fecha FROM empleados_eliminados WHERE id_empleado=?;", [$id_empleado], true);
if (!empty($empleado_eliminado))
    $fecha_eliminacion = $empleado_eliminado[0]["fecha"];

$modSvg = "<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 640'><path d='M118.7 97.4C132.2 93.3 146.8 98.5 154.6 110.3L320 358.3L485.4 110.3C493.2 98.6 507.8 93.3 521.3 97.4C534.8 101.5 544 113.9 544 128L544 512C544 529.7 529.7 544 512 544C494.3 544 480 529.7 480 512L480 233.7L346.6 433.8C340.7 442.7 330.7 448 320 448C309.3 448 299.3 442.7 293.4 433.8L160 233.7L160 512C160 529.7 145.7 544 128 544C110.3 544 96 529.7 96 512L96 128C96 113.9 105.2 101.5 118.7 97.4z'/></svg>";


//Sacar modificaciones de esas fechas para comparar en el bucle

$modificaciones = consulta(
    'SELECT amr.*, m.nombre as nombre_motivo FROM `aprobaciones_modificaciones_registros` AS amr
    INNER JOIN registros AS r ON r.id=amr.id_registro
    LEFT JOIN motivos AS m ON m.id=amr.id_motivo
    WHERE r.activo=1 AND r.fecha BETWEEN ? AND ? ORDER BY amr.id ASC;',
    [$fecha_inicio_mes, $fecha_fin_mes],
    true
);

$tipo_usu = consulta('SELECT tipo FROM usuarios WHERE id=?', [$_SESSION['id_usuario']], true)[0]['tipo'];

$dias_festivos = consulta(
    'SELECT di.*, m.nombre AS motivo FROM `dias_inhabiles` AS di
    INNER JOIN `motivos` AS m ON m.id=di.id_motivo
    WHERE di.fecha_entrada <= ? AND di.fecha_termina >= ?;',
    [$fecha_fin_mes, $fecha_inicio_mes],
    true
);

// Vacaciones de otros empleados (si está activado)
$vacaciones_otros = [];
if (get_config('ver_vacaciones_otros')) {
    $vacaciones_otros = consulta(
        'SELECT di.fecha_entrada, di.fecha_termina, e.nombre, e.apellidos 
         FROM dias_inhabiles di 
         INNER JOIN empleados e ON e.id = di.id_empleado 
         WHERE di.id_empleado IS NOT NULL AND di.id_empleado != ? 
         AND di.id_motivo = 3
         AND di.fecha_entrada <= ? AND di.fecha_termina >= ?;',
        [$id_empleado, $fecha_fin_mes, $fecha_inicio_mes],
        true
    );
}

//Días de la semana
echo "<style>
.c-dia {
	min-height: 10rem;
	max-height: 10rem;
	overflow: visible;
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    flex: 1 1 0px;
    width: 0;
}
.c-nombre {
    flex: 1 1 0px;
    width: 0;
    text-align: center;
    font-weight: bold;
    padding: .5rem;
}

/* Z-Index Descendente para Filas (.linea) */
#calendario .linea:nth-of-type(1) { z-index: 60; position: relative; }
#calendario .linea:nth-of-type(2) { z-index: 50; position: relative; }
#calendario .linea:nth-of-type(3) { z-index: 40; position: relative; }
#calendario .linea:nth-of-type(4) { z-index: 30; position: relative; }
#calendario .linea:nth-of-type(5) { z-index: 20; position: relative; }
#calendario .linea:nth-of-type(6) { z-index: 10; position: relative; }

/* Z-Index Descendente para Días (.c-dia) dentro de cada fila */
.linea .c-dia:nth-of-type(1) { z-index: 15; }
.linea .c-dia:nth-of-type(2) { z-index: 14; }
.linea .c-dia:nth-of-type(3) { z-index: 13; }
.linea .c-dia:nth-of-type(4) { z-index: 12; }
.linea .c-dia:nth-of-type(5) { z-index: 11; }
.linea .c-dia:nth-of-type(6) { z-index: 10; }
.linea .c-dia:nth-of-type(7) { z-index: 9; }

.tooltip, .tooltip-nota {
    z-index: 1000 !important;
}
</style>";
echo "<section class='linea flex row'>";
for ($i = 1; $i <= 7; $i++) {
    echo "<article class='c c-nombre'>";
    echo match ($i) {
        1 => "Lunes",
        2 => "Martes",
        3 => "Miércoles",
        4 => "Jueves",
        5 => "Viernes",
        6 => "Sábado",
        7 => "Domingo",
    };
    echo "</article>";
}
echo "</section>";

//QUE NO ESTE EN REGISTROS OCULTOS....
if (SISTEMA_INSPECTOR && $_SESSION['tipo_usuario'] != 'admin')
    $registros_dias = consulta(
        "SELECT r.*, e.id_grupo AS id_grupo, g.nombre AS nombre_grupo FROM registros_inspector AS r
    LEFT JOIN empleados AS e ON e.id=r.id_empleado
    LEFT JOIN grupos AS g ON g.id=e.id_grupo
    WHERE r.id_empleado=? AND r.fecha >= ? AND r.fecha <= ? AND r.activo=1
    ORDER BY r.fecha DESC, r.id_empleado DESC;",
        [$id_empleado, $fecha_inicio_mes, $fecha_fin_mes],
        true
    );
else
    $registros_dias = consulta(
        "SELECT r.*, e.id_grupo AS id_grupo, g.nombre AS nombre_grupo FROM registros AS r
    LEFT JOIN empleados AS e ON e.id=r.id_empleado
    LEFT JOIN grupos AS g ON g.id=e.id_grupo
    WHERE r.id_empleado=? AND r.fecha >= ? AND r.fecha <= ? AND r.activo=1
    ORDER BY r.fecha DESC, r.id_empleado DESC;",
        [$id_empleado, $fecha_inicio_mes, $fecha_fin_mes],
        true
    );

//Obtener id_grupo del empleado (solo una vez)
$id_grupo = !empty($registros_dias) ? $registros_dias[0]['id_grupo'] : (consulta("SELECT id_grupo FROM empleados WHERE id=?", [$id_empleado], true)[0]['id_grupo'] ?? 0);

//Rellenar días vacíos
echo "<section class='linea'>";
for ($i = 1; $i < $dia_empieza_semana; $i++)
    echo "<article class='c-vacio c-dia'></article>";
for ($i = 1; $i <= $dia_final; $i++) {
    $registro_dia = [];
    $fecha_hoy = date("Y-m-d", strtotime("$año-$mes-$i"));
    for ($f = 0; $f < count($registros_dias); $f++) {
        if ($registros_dias[$f]['fecha'] == $fecha_hoy) {
            $registro_dia = $registros_dias[$f];
            break;
        }
    }


    if (date('N', strtotime($fecha_hoy)) == 1 && $i !== 1) {
        echo "</section><section class='linea'>";
    }
    //Comprobar si está de baja
    $baja = consulta(
        "SELECT fecha,fecha_incorporacion FROM bajas_empleado WHERE id_empleado=? ORDER BY id DESC limit 1;",
        [$id_empleado],
        true
    );
    if (!empty($baja)) {
        $fecha_baja = $baja[0]["fecha"];
        $fecha_incorporacion = $baja[0]["fecha_incorporacion"];
        //Si la fecha de baja es posterior a la fecha de alta, no se muestra el registro
        if (strtotime($fecha_hoy) >= strtotime($fecha_baja) && (empty($fecha_incorporacion) || (!empty($fecha_incorporacion) && strtotime(date("$año-$mes-$i")) < strtotime($fecha_incorporacion)))) {
            echo "<article class='c-vacio c-dia'><span class='c-num-dia'>$i</span></article>";
            continue;
        }
    }

    //SOLO SI ESTÁ SISTEMA_INCIDENCIAS activado
    if (SISTEMA_INCIDENCIAS && $_SESSION['tipo_usuario'] != 'empleado') {
        //Comprobar si tiene incidencias ese día
        $incidencia = consulta(
            "SELECT id FROM incidencias WHERE id_empleado=? AND fecha=? AND estado=1;",
            [$id_empleado, "$año-$mes-$i"],
            true
        );
    }

    if (SISTEMA_INCIDENCIAS && $_SESSION['tipo_usuario'] != 'empleado' && !empty($incidencia) && strtotime($fecha_hoy) >= strtotime($fecha_alta))
        echo "<article class='c-dia c-incidencia " . ($fecha_hoy == date('Y-m-d') ? 'c-hoy' : '') . "'>";
    elseif (date('N', strtotime($fecha_hoy)) == 6 || date('N', strtotime($fecha_hoy)) == 7)
        echo "<article class='c-dia c-fds " . ($fecha_hoy == date('Y-m-d') ? 'c-hoy' : '') . "'>";
    elseif (strtotime($fecha_hoy) < strtotime($fecha_alta))
        echo "<article class='c-vacio c-dia " . ($fecha_hoy == date('Y-m-d') ? 'c-hoy' : '') . "'>";
    else
        echo "<article class='c-dia " . ($fecha_hoy == date('Y-m-d') ? 'c-hoy' : '') . "'>";



    //Comprobar también fecha de alta y fecha de eliminación
    $puede_crear_editar = strtotime($fecha_hoy) <= strtotime(date("Y-m-d"))
        && strtotime($fecha_hoy) >= strtotime($fecha_alta)
        && $_SESSION['tipo_usuario'] == 'admin'
        && ($fecha_eliminacion === null || strtotime($fecha_hoy) < strtotime($fecha_eliminacion));

    if ($puede_crear_editar && empty($registro_dia)) {
        echo "<span class='c-crear-registro' data-fecha='$año-$mes-$i' data-empleado='$id_empleado'>";
        echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="1.4rem" height="1.4rem">
    <path d="M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32V224H48c-17.7 0-32 14.3-32 32s14.3 32 32 32H192V432c0 17.7
    14.3 32 32 32s32-14.3 32-32V288H400c17.7 0 32-14.3 32-32s-14.3-32-32-32H256V80z"/>
    </svg>';
        echo "</span>";
    } elseif ($puede_crear_editar && !empty($registro_dia)) {
        echo "<span class='c-editar-registro' data-fecha='$año-$mes-$i' data-empleado='$id_empleado' data-id='" . (!empty($registro_dia["id"]) ? $registro_dia["id"] : "") . "'>";
        echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="1.4rem" height="1.4rem">
        <path d="M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6
        21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6
        5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160V416c0 53 43
        96 96 96H352c53 0 96-43 96-96V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v96c0 17.7-14.3 32-32 32H96c-17.7
        0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H96z"/>
        </svg>';
        echo "</span>";
    }

    echo "<span class='c-num-dia'>" . $i . "</span>";

    //Comprobar si es festivo ese día
    for ($d = 0; $d < count($dias_festivos); $d++) {
        if (
            strtotime($fecha_hoy) >= strtotime($dias_festivos[$d]["fecha_entrada"]) &&
            strtotime($fecha_hoy) <= strtotime($dias_festivos[$d]["fecha_termina"]) &&
            (
                (!empty($dias_festivos[$d]["id_grupo"]) && !empty($id_grupo) && $dias_festivos[$d]["id_grupo"] == $id_grupo) ||
                (!empty($dias_festivos[$d]["id_empleado"]) && !empty($id_empleado) && $dias_festivos[$d]["id_empleado"] == $id_empleado)
            )
        ) {
            echo "<section class='flex column supercentrado gap1'><br><b class='azul'>" . $dias_festivos[$d]["motivo"] . "</b></section>";
        }
    }

    // Mostrar vacaciones de otros empleados (en morado)
    if (!empty($vacaciones_otros)) {
        $nombres_vacaciones = [];
        foreach ($vacaciones_otros as $vac) {
            if (strtotime($fecha_hoy) >= strtotime($vac['fecha_entrada']) && strtotime($fecha_hoy) <= strtotime($vac['fecha_termina'])) {
                $nombre_vac = htmlspecialchars($vac['nombre']);
                if (!empty($vac['apellidos'])) $nombre_vac .= ' ' . htmlspecialchars($vac['apellidos']);
                $nombres_vacaciones[] = $nombre_vac;
            }
        }
        if (!empty($nombres_vacaciones)) {
            $todos_json = htmlspecialchars(json_encode($nombres_vacaciones, JSON_UNESCAPED_UNICODE), ENT_QUOTES);
            $fecha_fmt = date("d/m/Y", strtotime($fecha_hoy));
            $max_mostrar = 2;
            $texto = (count($nombres_vacaciones) <= $max_mostrar)
                ? implode(', ', $nombres_vacaciones)
                : implode(', ', array_slice($nombres_vacaciones, 0, $max_mostrar)) . '...';
            echo "<section class='flex column supercentrado' style='font-size:0.7em;cursor:pointer; margin-top:-.3rem; margin-bottom:.4rem; cursor:pointer;' onclick='mostrar_vacaciones_otros(this)' data-nombres='" . $todos_json . "' data-fecha='" . $fecha_fmt . "'><b style='color:light-dark(#7c3aed, #c4a5ff);'>🏖️ " . $texto . "</b></section>";
        }
    }

    if (!empty($registro_dia)) {
        echo "<section class='c-horas-totales' style='display: flex; justify-content: flex-start; align-items: center; margin-bottom: 0;'>";
        $ht = calculo_horas_totales($registro_dia["hora1"], $registro_dia["hora2"], $registro_dia["hora3"], $registro_dia["hora4"], $registro_dia["hora5"], $registro_dia["hora6"], $registro_dia["hora7"], $registro_dia["hora8"], $registro_dia["hora9"], $registro_dia["hora10"]);
        
        $impar_html = '';
        if (!$ht) {
            $count = 0;
            for ($k = 1; $k <= 10; $k++) {
                if (!empty($registro_dia["hora" . $k]) && $registro_dia["hora" . $k] != '00:00:00') {
                    $count++;
                }
            }
            if ($count % 2 != 0) {
                $impar_html = '<span class="men-incidencia incidencia-impar">Impar</span>';
            }
        }

        $extra_info = "";
        if ($ht && !SISTEMA_INCIDENCIAS && (empty($registro_dia["nombre_grupo"]) || mb_stripos($registro_dia["nombre_grupo"], 'semanal') === false)) {
            $teoricas = calcular_horas_teoricas_dia($registro_dia["id_empleado"], $registro_dia["fecha"]);
            if ($teoricas) {
                $diff = calcular_diferencia_horas($ht, $teoricas);
                if ($diff != "0" && get_config('mostrar_horas_excedidas') !== '0' && $_SESSION['tipo_usuario'] != 'empleado') {
                    $color = (strpos($diff, '+') !== false) ? 'men-incidencia incidencia-ocho-mas' : 'men-incidencia incidencia-ocho-';
                    $extra_info = "<sup class='$color'>$diff</sup>";
                }
            }
        }

        echo "<span style='display: flex; flex-direction: row; align-items: center;'><b>Total:</b> " . ($ht ? $ht . $extra_info : ($impar_html ? $impar_html : '<span class="rojo">Error</span>')) . "</span>";

        // Notas
        if (get_config('notas')) {
            $tiene_pendiente = false;
            // Verificar si es empleado
            if ($_SESSION['tipo_usuario'] == 'empleado') {
                $solicitud_pendiente = consulta('SELECT id FROM solicitudes_notas WHERE id_registro=? AND id_empleado=? AND estado=0', [$registro_dia["id"], $_SESSION['id_empleado']], true);
                $tiene_pendiente = !empty($solicitud_pendiente);
            }

            // Solo mostrar para admin/dev o empleado
            if ($_SESSION['tipo_usuario'] == 'admin' || $_SESSION['tipo_usuario'] == 'dev' || $_SESSION['tipo_usuario'] == 'empleado') {
                echo '<span style="display:flex;flex-direction:column;width:2rem;height:1rem;margin-left:auto;">';

                if ($tiene_pendiente) {
                    // Icono de reloj (pendiente)
                    echo '<button onclick="llamar_nota(' . $registro_dia["id"] . ')" class="btn-nota nota-tooltip" style="fill:var(--amarillo, orange);">';
                    echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M0 32C0 14.3 14.3 0 32 0H64 320h32c17.7 0 32 14.3 32 32s-14.3 32-32 32V75c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1v11c17.7 0 32 14.3 32 32s-14.3 32-32 32H320 64 32c-17.7 0-32-14.3-32-32s14.3-32 32-32V437c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75V64C14.3 64 0 49.7 0 32zM96 64V75c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9V64H96zm0 384H288V437c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9v11z"/></svg>';
                    echo '</button>';
                } else {
                    // Icono de nota (vacia o llena)
                    echo '<button onclick="llamar_nota(' . $registro_dia["id"] . ')" class="btn-nota ' . (empty($registro_dia["nota"]) ? 'nota-agregar' : 'nota-tooltip') . '">';
                    echo empty($registro_dia["nota"]) ?
                        '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M160 416C160 451.3 188.7 480 224 480L405.5 480C422.5 480 438.8 473.3 450.8 461.3L557.3 354.7C569.3 342.7 576 326.4 576 309.4L576 128C576 92.7 547.3 64 512 64L224 64C188.7 64 160 92.7 160 128L160 416zM352 176L384 176C392.8 176 400 183.2 400 192L400 240L448 240C456.8 240 464 247.2 464 256L464 288C464 296.8 456.8 304 448 304L400 304L400 352C400 360.8 392.8 368 384 368L352 368C343.2 368 336 360.8 336 352L336 304L288 304C279.2 304 272 296.8 272 288L272 256C272 247.2 279.2 240 288 240L336 240L336 192C336 183.2 343.2 176 352 176zM112 184C112 170.7 101.3 160 88 160C74.7 160 64 170.7 64 184L64 512C64 547.3 92.7 576 128 576L392 576C405.3 576 416 565.3 416 552C416 538.7 405.3 528 392 528L128 528C119.2 528 112 520.8 112 512L112 184z"/></svg>' :
                        '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M160 544C124.7 544 96 515.3 96 480L96 160C96 124.7 124.7 96 160 96L480 96C515.3 96 544 124.7 544 160L544 373.5C544 390.5 537.3 406.8 525.3 418.8L418.7 525.3C406.7 537.3 390.4 544 373.4 544L160 544zM485.5 368L392 368C378.7 368 368 378.7 368 392L368 485.5L485.5 368z"/></svg>';
                    echo '</button>';

                    if (!empty($registro_dia["nota"]))
                        echo '<section class="tooltip-nota">' . $registro_dia["nota"] . '</section>';
                }
                echo '</span>';
            }
        }





        //Si es admin mostrar eliminar (Movido aqui con margin-left auto)
        if ($_SESSION['tipo_usuario'] == 'admin') {
            echo '<button data-id="' . (!empty($registro_dia["id"]) ? $registro_dia["id"] : "") .
                '" data-idempleado="' . (!empty($registro_dia["id_empleado"]) ? $registro_dia["id_empleado"] : "") .
                '" data-fecha="' . (!empty($registro_dia["fecha"]) ? $registro_dia["fecha"] : "") .
                '" onclick="eliminar_registro(this)" class="flex btn-circle-glass rojo eliminar" style="width: 1.5rem; height:1.5rem; margin: 0; margin-left: auto;"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" width="0.8em" height="0.8em" class="rojo"><path d="M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7L288 480l9.4 0L512 480c17.7 0 32-14.3 32-32s-14.3-32-32-32l-124.1 0L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416l-9.4 0-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z"/></svg></button>';
        }

        echo "</section>";

        echo "<section class='c-horas'>";
        $compact_mode = (!empty($registro_dia["hora7"]) && $registro_dia["hora7"] !== '00:00:00');

        // Estilo compacto para cuando hay muchas horas
        $style_compact = $compact_mode ? "font-size: 0.8em; line-height: 1.1; justify-content: center; gap: .2rem;" : "";
        $margin_separator = $compact_mode ? "0" : "0.4rem";

        for ($h = 1; $h <= 10; $h++) {
            $hora_val = $registro_dia["hora$h"];
            $hora_obj = !empty($hora_val) ? DateTime::createFromFormat('H:i:s', $hora_val) : DateTime::createFromFormat('H:i:s', '00:00:00');

            if ($h % 2 != 0) { // Entrada
                if (!empty($hora_val) && $hora_val !== '00:00:00') {
                    $is_new_line = $compact_mode ? ($h % 4 == 1) : true;

                    if ($is_new_line) {
                        echo "</section><section class='linea c-linea-horas' style='$style_compact'>";
                    } else {
                        echo "<span style='margin-left: $margin_separator;'></span>";
                    }
                    echo "<span>" . substr($hora_val, 0, 5) . "</span>";
                }
            } else { // Salida
                if (!empty($hora_val) && $hora_val !== '00:00:00') {
                    echo "<span>-</span><span>" . substr($hora_val, 0, 5) . "</span>";
                } elseif (!empty($registro_dia["hora" . ($h - 1)]) && $registro_dia["hora" . ($h - 1)] !== '00:00:00') {
                    // Si hay entrada pero no salida, no mostramos nada o indicamos error visualmente si se desea, 
                    // pero el código original mostraba " - " y luego nada si estaba vacío? 
                    // El original: elseif (!empty... && !== '00:00:00') echo " - "...
                    // Parece que solo muestra salida si existe.
                }
            }

            // Modificaciones
            $modi = (!isset($_POST['inspector'])) ? comprobar_hora_modificada($modificaciones, $registro_dia["id"], $hora_obj->format('H:i:s'), $h) : false;
            if ($modi) {
                $modificacion = !empty($modi) ? date("H:i", strtotime($modi)) : '';

                $texto_tooltip = ($modificacion == '00:00')
                    ? 'Hora agregada'
                    : "Hora modificada, la hora original es {$modificacion}";

                // En modo compacto, reducimos el SVG de modificación si es posible o lo hacemos flotar
                // Pero por ahora lo dejamos igual, el font-size: 0.8em afectará al contenedor
                $modHtml = empty($modificacion) ? '' :
                    "<abbr class='t-hora-modificada trigger-tooltip'>
                        {$modSvg}
                    </abbr>
                    <aside class='tooltip'>
                        <span>{$texto_tooltip}</span>
                    </aside>";
                echo "$modHtml";
            }
        }
        echo "</section>";



        // Mostrar último motivo de modificación
        $ultimo_motivo = '';
        if (!empty($modificaciones)) {
            foreach ($modificaciones as $mod) {
                if ($mod['id_registro'] == $registro_dia['id'] && !empty($mod['nombre_motivo'])) {
                    $ultimo_motivo = $mod['nombre_motivo'];
                }
            }
        }
        if (!SISTEMA_INCIDENCIAS && !empty($ultimo_motivo) && $_SESSION['tipo_usuario'] != 'empleado') {
            echo "<section class='flex column supercentrado gap1' style='width: 100%; margin-top: 0.2rem;'><b class='azul' style='font-size: 0.75em; text-align: center; line-height: 1.1;'>" . $ultimo_motivo . "</b></section>";
        }




    }
    if (SISTEMA_INCIDENCIAS && $_SESSION['tipo_usuario'] != 'empleado') {
        if (!empty($incidencia) && strtotime($fecha_hoy) >= strtotime($fecha_alta)) {
            echo "<section class='c-incidencia-dia' data-info='" . $incidencia[0]["id"] . "' onclick='abrir_incidencia(this)'>";
            echo '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 512" width="1.4rem" height="1.4rem">
        <path d="M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM32 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z"/>
        </svg>';
            echo "</section>";
        } else {
            $incidencia_corregida = consulta(
                "SELECT m.nombre AS motivo
            FROM incidencias AS i
            INNER JOIN motivos AS m ON m.id=i.id_motivo
            WHERE i.id_empleado=? AND i.fecha=? AND i.estado=0;",
                [$id_empleado, "$año-$mes-$i"],
                true
            );
            if (!empty($incidencia_corregida))
                echo "<section class='flex column supercentrado gap1'><b class='azul'>" . $incidencia_corregida[0]["motivo"] . "</b></section>";
        }
    }
    echo "</article>";
}
//Rellenar días vacíos
for ($i = $dia_final_semana; $i < 7; $i++)
    echo "<article class='c-vacio c-dia'></article>";
echo "</section>
</section>";
