<?php
date_default_timezone_set('America/Caracas');

include 'conexion.php';
require_once 'Empleado.php';
require_once 'Vale.php';
include $_SERVER['DOCUMENT_ROOT'] . '/admin/header.php';

// Verificar que el ID esté presente y sea válido
if (!isset($_GET['id'])) {
    die("ID de empleado no válido");
}

$empleado = new Empleado($connNominas, $connSoporte, $connContabilidad, $connTienda);
$vale = new Vale($connNominas, $connContabilidad);
$idEmpleado = $_GET['id'];
$periodoSel = $_GET['periodo'] ?? date('Y-m');
$datosEmpleado = $empleado->getById($idEmpleado);

// Verificar que el empleado existe
if (!$datosEmpleado) {
    die("Empleado no encontrado");
}

$tasaActualBs = 0.0;
$fechaTasaActual = '';
$sqlTasaActual = "SELECT fecha, tasa_oficial, tasa_promedio FROM tasas_dolar ORDER BY fecha DESC LIMIT 1";
$resTasaActual = $connContabilidad->query($sqlTasaActual);
if ($resTasaActual && $resTasaActual->num_rows > 0) {
    $rowTasaActual = $resTasaActual->fetch_assoc();
    $fechaTasaActual = (string)($rowTasaActual['fecha'] ?? '');
    $tasaActualBs = floatval($rowTasaActual['tasa_oficial'] ?? 0);
    if ($tasaActualBs <= 0) {
        $tasaActualBs = floatval($rowTasaActual['tasa_promedio'] ?? 0);
    }
}

$tooltipMontoBs = static function ($montoUsd) use ($tasaActualBs, $fechaTasaActual): string {
    $montoUsd = floatval($montoUsd ?? 0);
    if ($tasaActualBs <= 0) {
        return 'Sin tasa actual disponible';
    }

    $montoBs = $montoUsd * $tasaActualBs;
    $detalleFecha = $fechaTasaActual !== '' ? ' del ' . $fechaTasaActual : '';
    return 'Bs ' . number_format($montoBs, 2) . ' a tasa ' . number_format($tasaActualBs, 2) . $detalleFecha;
};

try {
    $vale->sincronizarArrastresPeriodo($idEmpleado, $periodoSel);
    $vale->sincronizarValesDesdeGastos($periodoSel, $idEmpleado);
} catch (Exception $e) {
    // No se detiene la vista si falla la sincronización automática.
}

$saldo = $empleado->calcularSaldo($idEmpleado, $periodoSel);
$vales = $vale->getValesPorEmpleado($idEmpleado, $periodoSel);
$mesesNombres = ['01'=>'Enero','02'=>'Febrero','03'=>'Marzo','04'=>'Abril','05'=>'Mayo','06'=>'Junio','07'=>'Julio','08'=>'Agosto','09'=>'Septiembre','10'=>'Octubre','11'=>'Noviembre','12'=>'Diciembre'];
$partesPeriodo = explode('-', $periodoSel);
$mesNombre = ($mesesNombres[$partesPeriodo[1]] ?? '') . ' ' . $partesPeriodo[0];

// === REFERENCIA DEL PERIODO A PAGAR ===
$billeteraTickets = intval($saldo['tickets_bonos'] ?? 0);
$billeteraGanancias = floatval($saldo['bonos_ganancias_usd'] ?? 0);
$billeteraBonos = floatval($saldo['bonos_velocidad_usd'] ?? 0);
$bonosDetalle = is_array($saldo['bonos_detalle'] ?? null) ? $saldo['bonos_detalle'] : [];

$totalBonos = floatval($saldo['total_bonos_usd'] ?? 0);
$totalGanado = floatval($saldo['total_ganado_usd'] ?? ($saldo['sueldo_usd'] + $totalBonos));
$asistenciaAplica = !empty($saldo['asistencia_aplica']);
$asistenciaTieneMarcas = !empty($saldo['asistencia_tiene_marcas']);
$asistenciaMotivo = (string)($saldo['asistencia_motivo'] ?? '');
$asistenciaMotivoLabels = [
    'ok' => 'Calculo por asistencia aplicado',
    'sin_marcas_periodo' => 'No existen marcas de asistencia en este periodo',
    'horario_no_configurado' => 'No se encontro un horario valido para calcular horas',
    'periodo_invalido' => 'El periodo seleccionado no es valido',
    'horas_planificadas_invalidas' => 'No hay horas planificadas validas para el periodo',
    'sueldo_nominal_no_valido' => 'El sueldo nominal no es valido para calculo por horas',
    'empleado_no_encontrado' => 'No fue posible encontrar al empleado para el calculo',
];
$asistenciaMotivoTexto = $asistenciaMotivoLabels[$asistenciaMotivo] ?? 'Calculo con sueldo nominal por configuracion del periodo';

$asistenciaSueldoNominal = floatval($saldo['asistencia_sueldo_nominal_usd'] ?? $saldo['sueldo_usd'] ?? 0);
$asistenciaSueldoCalculado = floatval($saldo['asistencia_sueldo_calculado_usd'] ?? $saldo['sueldo_usd'] ?? 0);
$asistenciaValorHora = floatval($saldo['asistencia_valor_hora_usd'] ?? 0);
$asistenciaHorasPlanificadas = floatval($saldo['asistencia_horas_planificadas'] ?? 0);
$asistenciaHorasLv = floatval($saldo['asistencia_horas_lunes_viernes'] ?? 0);
$asistenciaHorasFs = floatval($saldo['asistencia_horas_fin_semana'] ?? 0);
$asistenciaHorasExtension = floatval($saldo['asistencia_horas_extension'] ?? 0);
$asistenciaHorasPagables = floatval($saldo['asistencia_horas_pagables'] ?? 0);
$guardiasAsignadas = intval($saldo['guardias_asignadas'] ?? 0);
$guardiasCumplidas = intval($saldo['guardias_cumplidas'] ?? 0);
$guardiasNoCumplidas = intval($saldo['guardias_no_cumplidas'] ?? 0);
$penalizacionGuardiaHoras = floatval($saldo['penalizacion_guardia_horas'] ?? 0);
$penalizacionGuardiaUsd = floatval($saldo['penalizacion_guardia_usd'] ?? 0);
$guardiasDetalle = is_array($saldo['guardias_detalle'] ?? null) ? $saldo['guardias_detalle'] : [];
$diasPagadosDetalle = is_array($saldo['dias_pagados_detalle'] ?? null) ? $saldo['dias_pagados_detalle'] : [];

// === HORAS EXTRA DE FIN DE SEMANA / FERIADOS (trabajo extraordinario) ===
// Se desprende del detalle diario de días pagados: los días cuya columna
// "horas_fin_semana" sea mayor a 0 corresponden a trabajo en días NO laborables
// (sábado/domingo/feriado), que la nómina reconoce y paga como hora extra.
$horasFinSemanaDetalle = [];
$totalHorasFinSemana = 0.0;
$totalMontoFinSemana = 0.0;
foreach ($diasPagadosDetalle as $diaDetalle) {
    $horasFsDia = floatval($diaDetalle['horas_fin_semana'] ?? 0);
    if ($horasFsDia <= 0.0001) {
        continue;
    }
    $montoFsDia = round($horasFsDia * $asistenciaValorHora, 2);
    $totalHorasFinSemana += $horasFsDia;
    $totalMontoFinSemana += $montoFsDia;
    $horasFinSemanaDetalle[] = [
        'fecha' => (string)($diaDetalle['fecha'] ?? ''),
        'horas' => $horasFsDia,
        'monto_usd' => $montoFsDia,
    ];
}
$totalMontoFinSemana = round($totalMontoFinSemana, 2);

// Desglose interno del periodo: semanas y quincenas calculadas por asistencia real.
$periodosInternos = is_array($saldo['periodos_internos'] ?? null) ? $saldo['periodos_internos'] : [];
$semanasInternas = is_array($periodosInternos['semanas'] ?? null) ? $periodosInternos['semanas'] : [];
$quincenasInternas = is_array($periodosInternos['quincenas'] ?? null) ? $periodosInternos['quincenas'] : [];
$totalesInternos = is_array($periodosInternos['totales'] ?? null) ? $periodosInternos['totales'] : [
    'sueldo_base_usd' => 0.0,
    'bonos_usd' => 0.0,
    'horas_trabajadas' => 0.0,
    'horas_extra' => 0.0,
    'dias_trabajados' => 0,
    'dias_no_trabajados' => 0,
    'neto_usd' => 0.0,
];
$formatoFechaCorta = static function ($fecha): string {
    $fecha = trim((string) $fecha);
    if ($fecha === '') {
        return '-';
    }
    $ts = strtotime($fecha);
    return $ts ? date('d/m/Y', $ts) : $fecha;
};

// Horario laboral aplicado (de asistencia_horarios_area, módulo de asistencia).
$horarioAplicado = $empleado->obtenerHorarioAplicado($idEmpleado);
$horarioDiasLaborales = is_array($horarioAplicado['dias_laborales'] ?? null) ? $horarioAplicado['dias_laborales'] : [];
$nombresDias = [1 => 'Lun', 2 => 'Mar', 3 => 'Mié', 4 => 'Jue', 5 => 'Vie', 6 => 'Sáb', 7 => 'Dom'];
$horarioDiasTexto = [];
foreach ($horarioDiasLaborales as $numDia) {
    $horarioDiasTexto[] = $nombresDias[(int) $numDia] ?? (string) $numDia;
}
$horarioDiasTexto = implode(', ', $horarioDiasTexto);
$esValeArrastre = static function (array $vale): bool {
    return ($vale['tipo_registro'] ?? '') === 'vale_excedente';
};

// Regla única para calcular cuánto representa un vale de arrastre en los saldos.
$montoComputableArrastre = static function (array $vale): float {
    $montoUsd = floatval($vale['monto_usd'] ?? 0);
    $montoADescontar = floatval($vale['monto_a_descontar'] ?? 0);
    $totalPendiente = floatval($vale['total_pendiente'] ?? 0);
    $estado = strtolower(trim((string)($vale['estado'] ?? '')));

    if ($estado === 'descontado') {
        return (abs($montoUsd - $montoADescontar) < 0.00001) ? $montoUsd : $montoADescontar;
    }

    return (abs($montoUsd - $totalPendiente) < 0.00001) ? $montoUsd : $totalPendiente;
};

$montoReferenciaSaldoFinal = static function (array $vale): float {
    $montoUsd = floatval($vale['monto_usd'] ?? 0);
    $montoADescontar = floatval($vale['monto_a_descontar'] ?? 0);

    return abs($montoADescontar) < 0.00001 ? $montoUsd : $montoADescontar;
};

$valesActivosPeriodo = array_values(array_filter($vales, static function ($itemVale) {
    $estadoVale = strtolower(trim((string)($itemVale['estado'] ?? '')));
    if ($estadoVale === 'cancelado') {
        return false;
    }

    if (($itemVale['tipo_registro'] ?? '') === 'vale_excedente') {
        return false;
    }

    if ($estadoVale !== 'asignado' && $estadoVale !== 'descontado') {
        return false;
    }

    return true;
}));

// Pagos del periodo consultado: se calcula exclusivamente con los registros cargados de ese periodo.
$pagosRecibidos = 0.0;
$pagosRecibidosReferenciaSaldoFinal = 0.0;
// Se deduplica por huella para no duplicar montos por registros legacy repetidos.
$huellasPagos = [];
foreach ($valesActivosPeriodo as $itemVale) {
    $huellaPago = md5(
        (string)($itemVale['fecha_vale'] ?? '') . '|' .
        number_format(floatval($itemVale['monto_usd'] ?? 0), 2, '.', '') . '|' .
        strtolower(trim((string)($itemVale['descripcion'] ?? ''))) . '|' .
        strtolower(trim((string)($itemVale['banco'] ?? '')))
    );
    if (isset($huellasPagos[$huellaPago])) {
        continue;
    }
    $huellasPagos[$huellaPago] = true;
    $montoADescontar = floatval($itemVale['monto_a_descontar'] ?? 0);
    $montoUsd = floatval($itemVale['monto_usd'] ?? 0);
    $montoComputable = ($montoADescontar > 0) ? $montoADescontar : $montoUsd;
    $pagosRecibidos += $montoComputable;
    $pagosRecibidosReferenciaSaldoFinal += $montoReferenciaSaldoFinal($itemVale);
}

$arrastrePendientePeriodo = 0.0;
$arrastreReferenciaSaldoFinal = 0.0;
foreach ($vales as $itemVale) {
    $estadoVale = strtolower(trim((string)($itemVale['estado'] ?? '')));
    if ($estadoVale === 'cancelado' || $estadoVale === 'descontado') {
        continue;
    }

    if (!$esValeArrastre($itemVale)) {
        continue;
    }

    $montoComputable = $montoComputableArrastre($itemVale);
    $arrastreReferenciaSaldoFinal += $montoReferenciaSaldoFinal($itemVale);
    $arrastrePendientePeriodo += $montoComputable;
}

$descuentosArrastrePeriodo = $arrastrePendientePeriodo;

// Deudas activas del empleado en la TIENDA (inventory_system.facturas):
// facturas con estatus pendiente/parcial y saldo por cobrar, asociadas por
// cédula. Se descuentan igual que los arrastres y deben reflejarse en el
// saldo final del detalle para que cuadre con la vista principal (sueldos.php).
$deudaTiendaUsd = round((float) ($saldo['deuda_tienda_usd'] ?? 0), 2);
$deudaTiendaFacturas = $saldo['deuda_tienda_facturas'] ?? [];
$deudaTiendaDisponible = (bool) ($saldo['deuda_tienda_disponible'] ?? false);

$descuentosTotalesPeriodo = round($descuentosArrastrePeriodo + $deudaTiendaUsd, 2);
$saldoFinalPeriodo = round($totalGanado - $pagosRecibidos - $descuentosTotalesPeriodo, 2);
$saldoFinalReferenciaDetalle = round($totalGanado - $pagosRecibidosReferenciaSaldoFinal - $arrastreReferenciaSaldoFinal, 2);
$estadoPagoPeriodo = 'empresa_debe';
if (abs($saldoFinalPeriodo) < 0.01) {
    $estadoPagoPeriodo = 'igual';
} elseif ($saldoFinalPeriodo < 0) {
    $estadoPagoPeriodo = 'empleado_debe';
}

$empresaDebePeriodo = max(0, $saldoFinalPeriodo);
$empleadoDebePeriodo = max(0, $saldoFinalPeriodo * -1);

// Cuánto de la deuda negativa ya está explicado por arrastres existentes y cuánto sería deuda nueva.
$arrastrePorSeguirArrastrando = min($empleadoDebePeriodo, $arrastrePendientePeriodo);
$nuevoExcedentePeriodo = max(0, $empleadoDebePeriodo - $arrastrePorSeguirArrastrando);
$saldoFinalAntesArrastre = round($totalGanado - $pagosRecibidos, 2);
$saldoFinalAntesArrastreReferencia = round($totalGanado - $pagosRecibidosReferenciaSaldoFinal, 2);
$descuentoArrastreAplicable = min(max(0, $saldoFinalAntesArrastre), $arrastrePendientePeriodo);
$descuentoArrastreAplicableReferencia = min(max(0, $saldoFinalAntesArrastreReferencia), $arrastreReferenciaSaldoFinal);

$balanceAcumulado = $empleado->calcularBalancePagosAcumulado(
    $idEmpleado,
    $datosEmpleado['cedula'] ?? '',
    $periodoSel
);
$excedentePendienteDescontarAcumulado = floatval($balanceAcumulado['excedente_pendiente_descontar_usd'] ?? 0);

$arrastreExcedenteRegistrado = false;
$errorArrastreExcedente = '';
if ($nuevoExcedentePeriodo > 0) {
    try {
        $arrastreExcedenteRegistrado = $vale->registrarArrastreExcedenteProximoPeriodo(
            $idEmpleado,
            $periodoSel,
            $nuevoExcedentePeriodo
        );
    } catch (Exception $e) {
        $errorArrastreExcedente = $e->getMessage();
    }
}

$descuentoArrastreAplicadoPeriodo = 0.0;
foreach ($vales as $valeItem) {
    if (!$esValeArrastre($valeItem)) {
        continue;
    }

    $montoBaseArrastre = $montoComputableArrastre($valeItem);
    $pendienteArrastre = floatval($valeItem['total_pendiente'] ?? 0);
    $descuentoArrastreAplicadoPeriodo += max(0, $montoBaseArrastre - $pendienteArrastre);
}

$saldoDisponibleParaSugerenciaArrastre = $descuentoArrastreAplicable;
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Detalle de Empleado - Sistema de Nóminas</title>

    <style>
        /* Mantener el CSS original */
        :root {
            --primary-color: #4361ee;
            --secondary-color: #3f37c9;
            --success-color: #4cc9f0;
            --warning-color: #f8961e;
            --danger-color: #f72585;
            --light-color: #f8f9fa;
            --dark-color: #212529;
        }

        body {
            background-color: #f5f7fb;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        .card {
            border: none;
            border-radius: 10px;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
            transition: transform 0.3s ease;
        }

        .card:hover {
            transform: translateY(-5px);
        }

        .card-header {
            border-radius: 10px 10px 0 0 !important;
            background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
        }

        .info-badge {
            font-size: 0.85rem;
            padding: 0.35em 0.65em;
            border-radius: 50px;
        }

        .table-responsive {
            scrollbar-width: thin;
            scrollbar-color: #dee2e6 #f8f9fa;
            border-radius: 0 0 10px 10px;
        }

        .table-responsive::-webkit-scrollbar {
            width: 8px;
            height: 8px;
        }

        .table-responsive::-webkit-scrollbar-thumb {
            background: #dee2e6;
            border-radius: 4px;
        }

        .table-responsive::-webkit-scrollbar-track {
            background: #f8f9fa;
        }

        .sticky-top {
            z-index: 1;
            top: -1px;
        }

        .table-hover tbody tr:hover {
            background-color: rgba(67, 97, 238, 0.05);
        }

        .dropdown-toggle::after {
            margin-left: 0.5em;
        }

        .status-badge {
            min-width: 90px;
            font-size: 0.8rem;
            font-weight: 500;
            letter-spacing: 0.5px;
        }

        .status-pending {
            background-color: var(--warning-color);
        }

        .status-completed {
            background-color: var(--success-color);
        }

        .status-cancelled {
            background-color: var(--danger-color);
        }

        .status-assigned {
            background-color: var(--primary-color);
        }

        .amount-cell {
            font-family: 'Courier New', monospace;
            font-weight: bold;
        }

        .tipo-badge {
            font-size: 0.75rem;
            font-weight: 600;
            letter-spacing: 0.3px;
        }

        .employee-info-icon {
            width: 40px;
            height: 40px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
            background-color: rgba(67, 97, 238, 0.1);
            color: var(--primary-color);
            margin-right: 15px;
        }

        .back-btn {
            transition: all 0.3s ease;
        }

        .back-btn:hover {
            transform: translateX(-3px);
        }

                #totalDescuentosDisplay {
            position: relative;
        }

        /* Mini-tarjetas de saldos (grid compacto) */
        .saldo-tile {
            border: 1px solid #e9ecef;
            border-left: 4px solid var(--primary-color);
            border-radius: 8px;
            padding: 0.75rem 0.9rem;
            height: 100%;
            background: #fff;
            transition: box-shadow 0.2s ease;
        }

        .saldo-tile:hover {
            box-shadow: 0 4px 14px rgba(0, 0, 0, 0.07);
        }

        .saldo-tile .saldo-tile-label {
            font-size: 0.72rem;
            text-transform: uppercase;
            letter-spacing: 0.4px;
            color: #6c757d;
            font-weight: 600;
            margin-bottom: 0.15rem;
        }

        .saldo-tile .saldo-tile-value {
            font-size: 1.15rem;
            font-weight: 700;
            line-height: 1.2;
            margin-bottom: 0;
        }

        .saldo-tile .saldo-tile-detail {
            font-size: 0.72rem;
            color: #8a94a6;
            margin-bottom: 0;
        }

        .saldo-tile.tile-primary { border-left-color: var(--primary-color); }
        .saldo-tile.tile-success { border-left-color: var(--success-color); }
        .saldo-tile.tile-info    { border-left-color: #0dcaf0; }
        .saldo-tile.tile-warning { border-left-color: var(--warning-color); }
        .saldo-tile.tile-danger  { border-left-color: var(--danger-color); }

        .saldo-final-box {
            border-radius: 10px;
            padding: 1rem 1.1rem;
        }

        .saldo-final-box.estado-ok {
            background: rgba(76, 201, 240, 0.12);
            border: 1px solid rgba(76, 201, 240, 0.4);
        }

        .saldo-final-box.estado-empresa {
            background: rgba(67, 97, 238, 0.08);
            border: 1px solid rgba(67, 97, 238, 0.3);
        }

        .saldo-final-box.estado-empleado {
            background: rgba(248, 150, 30, 0.10);
            border: 1px solid rgba(248, 150, 30, 0.35);
        }
    </style>
</head>

<body>
    <div class="container py-4">
        <!-- Header con botón de volver -->
        <div class="d-flex align-items-center mb-4">
            <a href="sueldos.php?periodo=<?= $periodoSel ?>" class="btn btn-outline-primary back-btn me-3">
                <i class="fas fa-arrow-left me-2"></i>Volver
            </a>
            <h2 class="mb-0 me-auto"><i class="fas fa-user-tie me-2"></i>Detalle del Empleado</h2>
            <button type="button" class="btn btn-primary me-2" data-bs-toggle="modal" data-bs-target="#modalPeriodosInternos">
                <i class="fas fa-calendar-week me-2"></i>Ver semanal / quincenal
            </button>
            <select id="selectorPeriodo" class="form-select" style="width: auto;" onchange="window.location.href='?id=<?= urlencode($idEmpleado) ?>&periodo='+this.value">
                <?php for ($i = 0; $i < 12; $i++):
                    $d = date('Y-m', strtotime("-$i months"));
                    $pts = explode('-', $d);
                    $lbl = $mesesNombres[$pts[1]] . ' ' . $pts[0];
                ?>
                <option value="<?= $d ?>" <?= $d === $periodoSel ? 'selected' : '' ?>><?= $lbl ?></option>
                <?php endfor; ?>
            </select>
        </div>

        <!-- Tarjeta de Información del Empleado -->
        <div class="card mb-4">
            <div class="card-header text-white">
                <h5 class="mb-0"><i class="fas fa-id-card me-2"></i>Información Personal</h5>
            </div>
            <div class="card-body">
                <div class="row">
                    <div class="col-md-6">
                        <div class="d-flex align-items-center mb-3">
                            <div class="employee-info-icon">
                                <i class="fas fa-user"></i>
                            </div>
                            <div>
                                <h6 class="mb-0">Nombre Completo</h6>
                                <p class="mb-0 fs-5 fw-bold">
                                    <?= htmlspecialchars($datosEmpleado['nombres'] . ' ' . $datosEmpleado['apellidos']) ?>
                                </p>
                            </div>
                        </div>

                        <div class="d-flex align-items-center mb-3">
                            <div class="employee-info-icon">
                                <i class="fas fa-id-card"></i>
                            </div>
                            <div>
                                <h6 class="mb-0">Cédula</h6>
                                <p class="mb-0"><?= htmlspecialchars($datosEmpleado['cedula']) ?></p>
                            </div>
                        </div>

                        <div class="d-flex align-items-center">
                            <div class="employee-info-icon">
                                <i class="fas fa-building"></i>
                            </div>
                            <div>
                                <h6 class="mb-0">Departamento</h6>
                                <p class="mb-0"><?= htmlspecialchars($datosEmpleado['departamento']) ?></p>
                            </div>
                        </div>
                    </div>

                                        <div class="col-md-6">
                        <!-- Datos personales adicionales (se mantiene alineado con la columna izquierda) -->
                        <div class="d-flex align-items-center mb-3">
                            <div class="employee-info-icon">
                                <i class="fas fa-money-bill-wave"></i>
                            </div>
                            <div>
                                <h6 class="mb-0">Sueldo Base</h6>
                                <p class="mb-0 fs-5 fw-bold" title="<?= htmlspecialchars($tooltipMontoBs($saldo['sueldo_nominal_usd'])) ?>">$<?= number_format($saldo['sueldo_nominal_usd'] ?? 0, 2) ?></p>
                                <small class="text-muted">Segun registro en nomina</small>
                            </div>
                        </div>

                        <div class="d-flex align-items-center mb-3">
                            <div class="employee-info-icon" style="background-color: rgba(67,97,238,0.1); color: var(--primary-color);">
                                <i class="fas fa-clock"></i>
                            </div>
                            <div>
                                <h6 class="mb-0">Sueldo Acumulado</h6>
                                <p class="mb-0 fs-5 fw-bold" title="<?= htmlspecialchars($tooltipMontoBs($saldo['sueldo_usd'])) ?>">$<?= number_format($saldo['sueldo_usd'], 2) ?></p>
                                <small class="text-muted">Acumulado trabajado segun asistencias</small>
                            </div>
                        </div>
                    </div>
                </div>

                <!-- ===== Cuadricula de saldos ===== -->
                <hr class="my-3">
                <div class="d-flex align-items-center mb-2">
                    <i class="fas fa-coins me-2 text-primary"></i>
                    <h6 class="mb-0 text-muted text-uppercase" style="font-size: .8rem; letter-spacing: .5px;">Resumen de saldos &mdash; <?= htmlspecialchars($mesNombre) ?></h6>
                    <div class="ms-auto d-flex gap-2">
                        <button type="button" class="btn btn-sm btn-outline-primary" data-bs-toggle="modal" data-bs-target="#modalDesgloseAsistencia">
                            <i class="fas fa-calculator me-1"></i>Desglose de asistencia
                        </button>
                        <?php if ($totalBonos > 0 && !empty($bonosDetalle)): ?>
                        <button type="button" class="btn btn-sm btn-outline-info" data-bs-toggle="modal" data-bs-target="#modalDesgloseBonos">
                            <i class="fas fa-list-check me-1"></i>Desglose de bonos
                        </button>
                        <?php endif; ?>
                    </div>
                </div>

                <div class="row row-cols-2 row-cols-lg-4 g-2 g-md-3">
                    <!-- Sueldo Base (nomina) -->
                    <div class="col">
                        <div class="saldo-tile tile-primary">
                            <p class="saldo-tile-label"><i class="fas fa-money-bill-wave me-1"></i>Sueldo Base</p>
                            <p class="saldo-tile-value text-dark" title="<?= htmlspecialchars($tooltipMontoBs($saldo['sueldo_nominal_usd'])) ?>">$<?= number_format($saldo['sueldo_nominal_usd'] ?? 0, 2) ?></p>
                            <p class="saldo-tile-detail">Segun registro en nomina</p>
                        </div>
                    </div>

                    <!-- Sueldo Acumulado (asistencia) -->
                    <div class="col">
                        <div class="saldo-tile tile-primary">
                            <p class="saldo-tile-label"><i class="fas fa-clock me-1"></i>Sueldo Acumulado</p>
                            <p class="saldo-tile-value text-primary" title="<?= htmlspecialchars($tooltipMontoBs($saldo['sueldo_usd'])) ?>">$<?= number_format($saldo['sueldo_usd'], 2) ?></p>
                            <p class="saldo-tile-detail">Trabajado segun asistencias</p>
                        </div>
                    </div>

                    <!-- Bonos -->
                    <div class="col">
                        <div class="saldo-tile tile-info">
                            <p class="saldo-tile-label"><i class="fas fa-trophy me-1"></i>Bonos <span class="badge bg-info"><?= $billeteraTickets ?></span></p>
                            <p class="saldo-tile-value text-info" title="<?= htmlspecialchars($tooltipMontoBs($totalBonos)) ?>">+$<?= number_format($totalBonos, 2) ?></p>
                            <p class="saldo-tile-detail">
                                <span title="<?= htmlspecialchars($tooltipMontoBs($billeteraGanancias)) ?>">Base $<?= number_format($billeteraGanancias, 2) ?></span><?php if ($billeteraBonos > 0): ?> · <span title="<?= htmlspecialchars($tooltipMontoBs($billeteraBonos)) ?>">Vel. $<?= number_format($billeteraBonos, 2) ?></span><?php endif; ?>
                            </p>
                        </div>
                    </div>

                    <!-- Total -->
                    <div class="col">
                        <div class="saldo-tile tile-primary" style="background: rgba(67,97,238,0.05);">
                            <p class="saldo-tile-label"><i class="fas fa-sigma me-1"></i>Total</p>
                            <p class="saldo-tile-value text-primary" title="<?= htmlspecialchars($tooltipMontoBs($totalGanado)) ?>">$<?= number_format($totalGanado, 2) ?></p>
                            <p class="saldo-tile-detail">Sueldo Acumulado + Bonos</p>
                        </div>
                    </div>

                    <!-- Pagos Recibidos -->
                    <div class="col">
                        <div class="saldo-tile tile-success">
                            <p class="saldo-tile-label"><i class="fas fa-hand-holding-usd me-1"></i>Pagos Recibidos</p>
                            <p class="saldo-tile-value text-success" title="<?= htmlspecialchars($tooltipMontoBs($pagosRecibidos)) ?>">$<?= number_format($pagosRecibidos, 2) ?></p>
                            <p class="saldo-tile-detail">Periodo <?= htmlspecialchars($periodoSel) ?></p>
                        </div>
                    </div>

                    <!-- Deuda por arrastre vigente (solo si no ha sido descontado) -->
                    <?php if ($arrastrePendientePeriodo > 0): ?>
                    <div class="col">
                        <div class="saldo-tile tile-warning">
                            <p class="saldo-tile-label"><i class="fas fa-arrow-down me-1"></i>Arrastre vigente</p>
                            <p class="saldo-tile-value text-warning" title="<?= htmlspecialchars($tooltipMontoBs($arrastrePendientePeriodo)) ?>">$<?= number_format($arrastrePendientePeriodo, 2) ?></p>
                            <p class="saldo-tile-detail">Saldo pendiente por descontar</p>
                        </div>
                    </div>
                    <?php endif; ?>

                    <!-- Saldo Final (ocupa el ancho restante) -->
                    <?php
                    $claseEstadoFinal = $estadoPagoPeriodo === 'empleado_debe' ? 'estado-empleado' : ($estadoPagoPeriodo === 'igual' ? 'estado-ok' : 'estado-empresa');
                    ?>
                    <div class="col" style="flex: 1 0 auto;">
                        <div class="saldo-final-box <?= $claseEstadoFinal ?> h-100">
                            <p class="saldo-tile-label mb-1"><i class="fas fa-wallet me-1"></i>Saldo Final</p>
                            <?php if ($estadoPagoPeriodo === 'igual'): ?>
                                <p class="mb-0 fs-5 fw-bold text-success">PERIODO PAGADO</p>
                            <?php elseif ($estadoPagoPeriodo === 'empleado_debe' && $arrastrePorSeguirArrastrando > 0): ?>
                                <p class="mb-0 fs-5 fw-bold text-warning" title="<?= htmlspecialchars($tooltipMontoBs($empleadoDebePeriodo)) ?>">
                                    El empleado sigue debiendo: $<?= number_format($empleadoDebePeriodo, 2) ?>
                                </p>
                            <?php else: ?>
                                <p class="mb-0 fs-5 fw-bold <?= $estadoPagoPeriodo === 'empleado_debe' ? 'text-warning' : 'text-primary' ?>" title="<?= htmlspecialchars($tooltipMontoBs($estadoPagoPeriodo === 'empleado_debe' ? $nuevoExcedentePeriodo : $empresaDebePeriodo)) ?>">
                                    <?= $estadoPagoPeriodo === 'empleado_debe'
                                        ? 'Nuevo excedente: $' . number_format($nuevoExcedentePeriodo, 2)
                                        : 'Empresa debe pagar: $' . number_format($empresaDebePeriodo, 2) ?>
                                </p>
                            <?php endif; ?>
                            <small class="text-muted d-block mt-1">
                                (<span title="<?= htmlspecialchars($tooltipMontoBs($saldo['sueldo_usd'])) ?>">$<?= number_format($saldo['sueldo_usd'], 2) ?></span> + <span title="<?= htmlspecialchars($tooltipMontoBs($totalBonos)) ?>">$<?= number_format($totalBonos, 2) ?></span>)
                                - Pagos: <span title="<?= htmlspecialchars($tooltipMontoBs($pagosRecibidos)) ?>">$<?= number_format($pagosRecibidos, 2) ?></span>
                                - Arrastre: <span title="<?= htmlspecialchars($tooltipMontoBs($descuentosArrastrePeriodo)) ?>">$<?= number_format($descuentosArrastrePeriodo, 2) ?></span>
                                <?php if ($deudaTiendaUsd > 0): ?>
                                - Tienda: <span title="<?= htmlspecialchars($tooltipMontoBs($deudaTiendaUsd)) ?>">$<?= number_format($deudaTiendaUsd, 2) ?></span>
                                <?php endif; ?>
                                = <span title="<?= htmlspecialchars($tooltipMontoBs($saldoFinalPeriodo)) ?>">$<?= number_format($saldoFinalPeriodo, 2) ?></span>
                            </small>
                        </div>
                    </div>
                </div>

                                <!-- Detalles secundarios (colapsables para no alargar la interfaz) -->
                <?php
                $hayDetallesSecundarios = ($penalizacionGuardiaUsd > 0) || ($arrastrePendientePeriodo > 0) || ($nuevoExcedentePeriodo > 0) || ($excedentePendienteDescontarAcumulado > 0) || !empty($errorArrastreExcedente);
                ?>

                <?php if ($deudaTiendaUsd > 0 && !empty($deudaTiendaFacturas)): ?>
                <!-- Deuda activa en tienda: facturas con saldo por cobrar -->
                <div class="card mt-3 border-warning">
                    <div class="card-header bg-warning bg-opacity-10 d-flex justify-content-between align-items-center">
                        <h6 class="mb-0 fw-bold">
                            <i class="fas fa-store me-2"></i>Deuda activa en Tienda
                        </h6>
                        <span class="badge bg-warning text-dark">
                            Total: $<?= number_format($deudaTiendaUsd, 2) ?>
                        </span>
                    </div>
                    <div class="table-responsive">
                        <table class="table table-sm mb-0 align-middle">
                            <thead class="table-light">
                                <tr>
                                    <th>Factura</th>
                                    <th>Fecha</th>
                                    <th>Tipo</th>
                                    <th>Estatus</th>
                                    <th class="text-end">Monto</th>
                                    <th class="text-end">Saldo</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($deudaTiendaFacturas as $fac): ?>
                                <tr>
                                    <td class="fw-semibold"><?= htmlspecialchars($fac['numero_factura'] ?? '—') ?></td>
                                    <td class="text-nowrap">
                                        <?php
                                        $fechaFac = (string) ($fac['fecha'] ?? '');
                                        echo $fechaFac !== '' ? htmlspecialchars(date('d/m/Y', strtotime($fechaFac))) : '—';
                                        ?>
                                    </td>
                                    <td><?= htmlspecialchars(ucfirst((string) ($fac['tipo'] ?? '—'))) ?></td>
                                    <td>
                                        <span class="badge bg-<?= (($fac['estatus'] ?? '') === 'parcial') ? 'info' : 'secondary' ?>">
                                            <?= htmlspecialchars(ucfirst((string) ($fac['estatus'] ?? '—'))) ?>
                                        </span>
                                    </td>
                                    <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($fac['monto'] ?? 0)) ?>">
                                        $<?= number_format((float) ($fac['monto'] ?? 0), 2) ?>
                                    </td>
                                    <td class="text-end fw-bold text-danger" title="<?= htmlspecialchars($tooltipMontoBs($fac['monto_restante'] ?? 0)) ?>">
                                        $<?= number_format((float) ($fac['monto_restante'] ?? 0), 2) ?>
                                    </td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                            <tfoot class="table-light">
                                <tr>
                                    <td colspan="5" class="text-end fw-bold">Total a descontar en nómina</td>
                                    <td class="text-end fw-bold text-danger">$<?= number_format($deudaTiendaUsd, 2) ?></td>
                                </tr>
                            </tfoot>
                        </table>
                    </div>
                </div>
                <?php endif; ?>


                <?php if ($hayDetallesSecundarios): ?>
                <div class="accordion accordion-flush mt-3" id="acordeonSaldosDetalle">
                    <div class="accordion-item border rounded">
                        <h2 class="accordion-header" id="headingDetallesSaldos">
                            <button class="accordion-button collapsed py-2" type="button" data-bs-toggle="collapse" data-bs-target="#collapseDetallesSaldos" aria-expanded="false" aria-controls="collapseDetallesSaldos">
                                <i class="fas fa-circle-info me-2 text-muted"></i>
                                <span class="small">Ver detalles de arrastre, guardias y referencias</span>
                            </button>
                        </h2>
                        <div id="collapseDetallesSaldos" class="accordion-collapse collapse" aria-labelledby="headingDetallesSaldos" data-bs-parent="#acordeonSaldosDetalle">
                            <div class="accordion-body small">
                                <?php if ($arrastrePendientePeriodo > 0): ?>
                                    <p class="fw-semibold mb-1 text-muted text-uppercase" style="font-size:.72rem;">Control de deuda por arrastre</p>
                                    <ul class="list-unstyled mb-2">
                                        <li><i class="fas fa-angle-right me-1 text-muted"></i>Saldo final antes de arrastre: <span title="<?= htmlspecialchars($tooltipMontoBs($saldoFinalAntesArrastre)) ?>">$<?= number_format($saldoFinalAntesArrastre, 2) ?></span></li>
                                        <li><i class="fas fa-angle-right me-1 text-muted"></i>Arrastre pendiente del periodo: <span title="<?= htmlspecialchars($tooltipMontoBs($arrastrePendientePeriodo)) ?>">$<?= number_format($arrastrePendientePeriodo, 2) ?></span></li>
                                        <li><i class="fas fa-angle-right me-1 text-muted"></i>Arrastre que alcanza a descontarse: <span title="<?= htmlspecialchars($tooltipMontoBs($descuentoArrastreAplicable)) ?>">$<?= number_format($descuentoArrastreAplicable, 2) ?></span></li>
                                        <li><i class="fas fa-angle-right me-1 text-muted"></i>Referencia con monto a descontar: saldo previo <span title="<?= htmlspecialchars($tooltipMontoBs($saldoFinalAntesArrastreReferencia)) ?>">$<?= number_format($saldoFinalAntesArrastreReferencia, 2) ?></span>, arrastre <span title="<?= htmlspecialchars($tooltipMontoBs($arrastreReferenciaSaldoFinal)) ?>">$<?= number_format($arrastreReferenciaSaldoFinal, 2) ?></span>, descuento posible <span title="<?= htmlspecialchars($tooltipMontoBs($descuentoArrastreAplicableReferencia)) ?>">$<?= number_format($descuentoArrastreAplicableReferencia, 2) ?></span></li>
                                        <?php if ($arrastrePorSeguirArrastrando > 0): ?>
                                            <li class="text-warning"><i class="fas fa-angle-right me-1"></i>Arrastre por seguir arrastrando: <span title="<?= htmlspecialchars($tooltipMontoBs($arrastrePorSeguirArrastrando)) ?>">$<?= number_format($arrastrePorSeguirArrastrando, 2) ?></span></li>
                                        <?php endif; ?>
                                    </ul>
                                <?php endif; ?>

                                <?php if ($penalizacionGuardiaUsd > 0): ?>
                                    <p class="fw-semibold mb-1 text-muted text-uppercase" style="font-size:.72rem;">Guardias</p>
                                    <ul class="list-unstyled mb-2">
                                        <li class="text-warning"><i class="fas fa-angle-right me-1"></i>Penalizacion por guardias no cumplidas: <span title="<?= htmlspecialchars($tooltipMontoBs($penalizacionGuardiaUsd)) ?>">$<?= number_format($penalizacionGuardiaUsd, 2) ?></span> (<?= number_format($penalizacionGuardiaHoras, 2) ?> h, <?= $guardiasNoCumplidas ?> guardia(s) no cumplida(s)).</li>
                                    </ul>
                                <?php endif; ?>

                                <?php if ($nuevoExcedentePeriodo > 0): ?>
                                    <p class="mb-1 text-warning-emphasis"><i class="fas fa-triangle-exclamation me-1"></i>Nuevo vale/excedente para proximo periodo: <span title="<?= htmlspecialchars($tooltipMontoBs($nuevoExcedentePeriodo)) ?>">$<?= number_format($nuevoExcedentePeriodo, 2) ?></span>. El sistema registra solo la deuda nueva no cubierta por arrastres existentes.</p>
                                <?php endif; ?>

                                <?php if (!empty($errorArrastreExcedente)): ?>
                                    <p class="mb-1 text-danger"><i class="fas fa-circle-exclamation me-1"></i>No se pudo registrar el arrastre automatico: <?= htmlspecialchars($errorArrastreExcedente) ?></p>
                                <?php endif; ?>

                                <?php if ($excedentePendienteDescontarAcumulado > 0): ?>
                                    <p class="mb-1 text-warning"><i class="fas fa-hourglass-half me-1"></i>Pago pendiente por descontar acumulado: <span title="<?= htmlspecialchars($tooltipMontoBs($excedentePendienteDescontarAcumulado)) ?>">$<?= number_format($excedentePendienteDescontarAcumulado, 2) ?></span></p>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                </div>
                <?php endif; ?>
            </div>
        </div>

                <?php if ($totalHorasFinSemana > 0.0001): ?>
        <!-- Tarjeta de Horas Extra de Fin de Semana / Feriados -->
        <div class="card mb-4">
            <div class="card-header text-white" style="background: linear-gradient(135deg, #f8961e, #e65100);">
                <div class="d-flex justify-content-between align-items-center">
                    <h5 class="mb-0">
                        <i class="fas fa-calendar-day me-2"></i>Horas Extra de Fin de Semana / Feriados — <?= $mesNombre ?>
                    </h5>
                    <span class="badge bg-light text-dark">
                        <i class="fas fa-list-check me-1"></i><?= count($horasFinSemanaDetalle) ?> día(s)
                    </span>
                </div>
            </div>
            <div class="card-body">
                <div class="row align-items-center mb-3">
                    <div class="col-md-4">
                        <div class="p-3 rounded" style="background: rgba(248,150,30,0.1);">
                            <div class="text-muted small">Total horas Sáb/Dom/Feriado</div>
                            <div class="fs-4 fw-bold text-warning"><?= number_format($totalHorasFinSemana, 2) ?> h</div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="p-3 rounded" style="background: rgba(76,201,240,0.12);">
                            <div class="text-muted small">Valor hora aplicado</div>
                            <div class="fs-4 fw-bold text-info" title="<?= htmlspecialchars($tooltipMontoBs($asistenciaValorHora)) ?>">
                                $<?= number_format($asistenciaValorHora, 2) ?>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="p-3 rounded" style="background: rgba(67,97,238,0.1);">
                            <div class="text-muted small">Monto por trabajo extraordinario</div>
                            <div class="fs-4 fw-bold text-primary" title="<?= htmlspecialchars($tooltipMontoBs($totalMontoFinSemana)) ?>">
                                $<?= number_format($totalMontoFinSemana, 2) ?>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="table-responsive">
                    <table class="table table-sm table-bordered table-striped align-middle mb-0">
                        <thead class="table-light">
                            <tr>
                                <th style="width:60px">#</th>
                                <th>Fecha</th>
                                <th>Día</th>
                                <th class="text-end">Horas trabajadas</th>
                                <th class="text-end">Monto</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php $idxFs = 0; foreach ($horasFinSemanaDetalle as $itemFs):
                                $idxFs++;
                                $tsFs = strtotime($itemFs['fecha']);
                                $fechaFsVista = $tsFs ? date('d/m/Y', $tsFs) : $itemFs['fecha'];
                                $diaFsVista = $tsFs ? $nombresDias[(int)date('N', $tsFs)] ?? '' : '';
                                $esSabadoFs = $tsFs && (int)date('N', $tsFs) === 6;
                            ?>
                            <tr>
                                <td class="text-muted small"><?= $idxFs ?></td>
                                <td class="text-nowrap"><i class="far fa-calendar-alt me-1 text-muted"></i><?= htmlspecialchars($fechaFsVista) ?></td>
                                <td>
                                    <span class="badge <?= $esSabadoFs ? 'bg-warning text-dark' : 'bg-danger' ?>">
                                        <?= htmlspecialchars($diaFsVista ?: 'No laborable') ?>
                                    </span>
                                </td>
                                <td class="text-end fw-semibold"><?= number_format($itemFs['horas'], 2) ?> h</td>
                                <td class="text-end fw-bold text-primary" title="<?= htmlspecialchars($tooltipMontoBs($itemFs['monto_usd'])) ?>">
                                    $<?= number_format($itemFs['monto_usd'], 2) ?>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        </tbody>
                        <tfoot>
                            <tr class="table-light fw-bold">
                                <td colspan="3" class="text-end">Total</td>
                                <td class="text-end"><?= number_format($totalHorasFinSemana, 2) ?> h</td>
                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totalMontoFinSemana)) ?>">
                                    $<?= number_format($totalMontoFinSemana, 2) ?>
                                </td>
                            </tr>
                        </tfoot>
                    </table>
                </div>
                <p class="small text-muted mb-0 mt-2">
                    <i class="fas fa-info-circle me-1"></i>
                    Estas horas provienen de marcas de entrada/salida registradas en días no laborables para el área
                    del empleado (sábado, domingo o feriado). La nómina las reconoce y paga como hora extra al mismo
                    valor hora del período.
                </p>
            </div>
        </div>
        <?php endif; ?>

        <!-- Tarjeta de Vales y Descuentos -->
        <div class="card">
            <div class="card-header text-white">
                <div class="d-flex justify-content-between align-items-center">
                    <h5 class="mb-0"><i class="fas fa-file-invoice-dollar me-2"></i>Vales y Descuentos — <?= $mesNombre ?></h5>
                    <div class="d-flex align-items-center gap-2">
                        <button type="button" id="btnSincronizarGastosDetalle" class="btn btn-sm btn-outline-light fw-semibold" title="Sincronizar vales y anticipos desde contabilidad.gastos">
                            <i class="fas fa-sync-alt me-1"></i>Sincronizar Gastos
                        </button>
                        <span class="badge bg-light text-dark">
                            <i class="fas fa-list-check me-1"></i> Total: <?= count($vales) ?>
                        </span>
                    </div>
                </div>
            </div>

            <div class="card-body p-0">
                <div class="p-3 d-flex align-items-center gap-2">
                    <div class="form-check">
                        <input class="form-check-input" type="checkbox" value="" id="checkAllVales">
                        <label class="form-check-label small" for="checkAllVales">Seleccionar todos</label>
                    </div>
                    <div>
                        <select id="bulkEstadoSelect" class="form-select form-select-sm">
                            <option value="">Acción masiva: seleccionar acción</option>
                            <option value="descontado_100">Descontar 100% (Total)</option>
                            <option value="descontado_50">Descontar 50% (1ra Fracción)</option>
                            <option value="asignado">Marcar Asignado</option>
                            <option value="cancelado">Cancelar</option>
                        </select>
                    </div>
                    <div>
                        <button id="btnAplicarBulk" class="btn btn-sm btn-primary">Aplicar a seleccionados</button>
                    </div>
                </div>
                <div class="table-responsive" style="max-height: 500px;">
                    <table class="table table-hover mb-0">
                        <thead class="sticky-top bg-light">
                            <tr>
                                <th style="width:40px"></th>
                                <th class="text-nowrap"><i class="far fa-calendar me-1"></i> Fecha</th>
                                <th class="text-nowrap"><i class="fas fa-university me-1"></i> Banco</th>
                                <th class="text-nowrap text-end"><i class="fas fa-money-bill me-1"></i> Monto (Bs)</th>
                                <th class="text-nowrap text-end"><i class="fas fa-dollar-sign me-1"></i> Monto (USD)</th>
                                <th class="text-nowrap text-center"><i class="fas fa-percent me-1"></i> Fracción</th>
                                <th class="text-nowrap text-end"><i class="fas fa-hand-holding-usd me-1"></i> A Descontar</th>
                                <th class="text-nowrap text-end"><i class="fas fa-hourglass-half me-1"></i> Pendiente</th>
                                <th class="text-nowrap"><i class="far fa-file-alt me-1"></i> Descripción</th>
                                <th class="text-nowrap text-center"><i class="fas fa-tags me-1"></i> Tipo</th>
                                <th class="text-nowrap text-center"><i class="fas fa-tasks me-1"></i> Estado / Acción</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($vales as $v): ?>
                                <?php
                                $montoSugeridoDescuento = floatval($v['monto_a_descontar'] ?? $v['total_pendiente'] ?? $v['monto_usd'] ?? $v['monto_vale']);
                                if (($v['tipo_registro'] ?? '') === 'vale_excedente') {
                                    $montoSugeridoDescuento = min(floatval($v['total_pendiente'] ?? $montoSugeridoDescuento), $saldoDisponibleParaSugerenciaArrastre);
                                    $saldoDisponibleParaSugerenciaArrastre = max(0, $saldoDisponibleParaSugerenciaArrastre - $montoSugeridoDescuento);
                                }
                                $porcDesc = floatval($v['porcentaje_descuento'] ?? 100);
                                $montoUsdVale = floatval($v['monto_usd'] ?? $v['monto_vale'] ?? 0);
                                $montoDescVale = floatval($v['monto_a_descontar'] ?? 0);
                                $totalPendVale = floatval($v['total_pendiente'] ?? 0);
                                ?>
                                <tr>
                                    <td class="align-middle text-center">
                                        <input type="checkbox" class="form-check-input vale-check" 
                                            data-vale-id="<?= $v['id'] ?>"
                                            data-monto-descontar="<?= htmlspecialchars(number_format($montoSugeridoDescuento, 2, '.', '')) ?>"
                                            data-monto-original="<?= htmlspecialchars($v['monto_vale']) ?>"
                                            data-monto-usd="<?= htmlspecialchars(number_format($montoUsdVale, 2, '.', '')) ?>"
                                            data-total-pendiente="<?= htmlspecialchars(number_format($totalPendVale, 2, '.', '')) ?>"
                                            data-porcentaje="<?= htmlspecialchars((string) $porcDesc) ?>"
                                            data-banco="<?= htmlspecialchars(strtolower($v['banco'])) ?>"
                                            data-fecha="<?= htmlspecialchars($v['fecha_vale']) ?>">
                                    </td>
                                     <td class="text-nowrap">
                                         <i class="far fa-calendar-alt me-1 text-muted"></i>
                                         <?= date('d/m/Y', strtotime($v['fecha_vale'])) ?>
                                     </td>
                                    <td>
                                        <?php
                                        $bancoIcon = (function($__v){$__m=['venezuela'=>'university',
                                            'mercantil' => 'landmark'];return $__m[$__v]??'money-bill-wave';})(strtolower($v['banco']));
                                        ?>
                                        <i class="fas fa-<?= $bancoIcon ?> me-1 text-primary"></i>
                                        <?= ucfirst($v['banco']) ?>
                                    </td>
                                    <td class="text-end amount-cell" title="<?= htmlspecialchars($tooltipMontoBs($v['monto_vale'])) ?>">
                                        <?= number_format(floatval($v['monto_vale'] ?? 0), 2) ?>
                                    </td>
                                    <td class="text-end amount-cell fw-semibold" title="<?= htmlspecialchars($tooltipMontoBs($montoUsdVale)) ?>">
                                        $<?= number_format($montoUsdVale, 2) ?>
                                    </td>
                                    <td class="text-center align-middle">
                                        <?php if ($porcDesc <= 50.0): ?>
                                            <span class="badge bg-info text-dark" title="Fracción del 50% aplicada">
                                                <i class="fas fa-adjust me-1"></i>50%
                                            </span>
                                        <?php else: ?>
                                            <span class="badge bg-primary" title="Descuento total 100%">
                                                100%
                                            </span>
                                        <?php endif; ?>
                                    </td>
                                    <td class="text-end amount-cell fw-bold text-primary" title="<?= htmlspecialchars($tooltipMontoBs($montoDescVale)) ?>">
                                        $<?= number_format($montoDescVale, 2) ?>
                                    </td>
                                    <td class="text-end amount-cell <?= $totalPendVale > 0.001 ? 'text-danger fw-bold' : 'text-muted' ?>" title="<?= htmlspecialchars($tooltipMontoBs($totalPendVale)) ?>">
                                        $<?= number_format($totalPendVale, 2) ?>
                                    </td>
                                                                        <td style="min-width: 220px; white-space: normal; word-break: break-word;"
                                        title="<?= htmlspecialchars((string) $v['descripcion']) ?>">
                                        <?= htmlspecialchars((string) $v['descripcion']) ?>
                                    </td>
                                    <td class="text-center align-middle">
                                        <?php
                                        $tipoRegistro = $v['tipo_registro'] ?? 'otro';
                                        $tipoBadgeClass = (function($__v){$__m=['sueldo_periodo'=>'bg-primary',
                                            'vale_excedente' => 'bg-info text-dark',
                                            'vale_adelanto' => 'bg-warning text-dark'];return $__m[$__v]??'bg-secondary';})($tipoRegistro);
                                        $tipoLabel = (function($__v){$__m=['sueldo_periodo'=>'Sueldo periodo',
                                            'vale_excedente' => 'Vale/Excedente',
                                            'vale_adelanto' => 'Vale/Adelanto'];return $__m[$__v]??'Otro';})($tipoRegistro);
                                        ?>
                                        <span class="badge tipo-badge <?= $tipoBadgeClass ?>"><?= $tipoLabel ?></span>
                                    </td>
                                    <td class="text-center align-middle">
                                        <div class="dropdown status-dropdown">
                                            <button
                                                class="btn btn-sm dropdown-toggle status-badge status-<?= $v['estado'] ?>"
                                                type="button" id="dropdownEstado<?= $v['id'] ?>" data-bs-toggle="dropdown"
                                                aria-expanded="false" data-vale-id="<?= $v['id'] ?>"
                                                data-empleado-id="<?= $datosEmpleado['id_empleado'] ?>"
                                                data-current-status="<?= $v['estado'] ?>"
                                                data-monto-descontar="<?= htmlspecialchars(number_format($montoSugeridoDescuento, 2, '.', '')) ?>"
                                                data-monto-original="<?= htmlspecialchars((string) ($v['monto_vale'] ?? 0)) ?>"
                                                data-monto-usd="<?= htmlspecialchars(number_format($montoUsdVale, 2, '.', '')) ?>"
                                                data-total-pendiente="<?= htmlspecialchars(number_format($totalPendVale, 2, '.', '')) ?>"
                                                data-porcentaje="<?= htmlspecialchars((string) $porcDesc) ?>"
                                                data-banco="<?= htmlspecialchars(strtolower($v['banco'])) ?>"
                                                data-fecha="<?= htmlspecialchars($v['fecha_vale']) ?>">
                                                <?php
                                                $estadoIcon = (function($__v){$__m=['pendiente'=>'clock',
                                                    'asignado' => 'user-check',
                                                    'descontado' => 'check-circle',
                                                    'cancelado' => 'times-circle'];return $__m[$__v]??'question-circle';})($v['estado']);
                                                ?>
                                                <i class="fas fa-<?= $estadoIcon ?> me-1"></i>
                                                <?= ucfirst($v['estado']) ?>
                                            </button>
                                            <ul class="dropdown-menu dropdown-menu-end"
                                                aria-labelledby="dropdownEstado<?= $v['id'] ?>">
                                                <!-- El menú se construye dinámicamente con JavaScript -->
                                            </ul>
                                        </div>
                                    </td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>

            <div class="card-footer bg-light">
                <div class="row">
                    <div class="col-md-6">
                        <span class="badge bg-primary">
                            <i class="fas fa-list-ol me-1"></i> Total Vales: <?= count($vales) ?>
                        </span>
                    </div>
                    <div class="col-md-6 text-end">
                        <span class="badge bg-danger">
                            <i class="fas fa-hand-holding-usd me-1"></i>
                            Total a Descontar:
                            $<?= number_format(array_sum(array_map(static fn($item) => floatval($item['total_pendiente'] ?? 0), $vales)), 2) ?>
                        </span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="modal fade" id="modalPeriodosInternos" tabindex="-1" aria-labelledby="modalPeriodosInternosLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl modal-dialog-scrollable">
            <div class="modal-content">
                <div class="modal-header bg-primary text-white">
                    <h5 class="modal-title" id="modalPeriodosInternosLabel">
                        <i class="fas fa-calendar-week me-2"></i>Valores semanal y quincenal - <?= htmlspecialchars($mesNombre) ?>
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Cerrar"></button>
                </div>
                <div class="modal-body">
                                        <p class="small text-muted mb-3">
                                            Desglose del periodo <strong><?= htmlspecialchars($mesNombre) ?></strong> calculado con la asistencia real
                                            de cada sub-rango usando el <strong>mismo valor/hora del periodo</strong>: el sueldo base de cada
                                            semana/quincena es <em>valor hora × horas pagables</em> (horas L-V + horas Sáb/Dom + horas de extensión
                                            aprobadas), por lo que la suma de las sub-unidades cuadra con el sueldo base del mes.
                                            Los bonos se prorratean por días.
                                        </p>

                    <div class="alert alert-secondary py-2 mb-3 d-flex flex-wrap align-items-center gap-3">
                        <span class="fw-semibold text-nowrap">
                            <i class="fas fa-clock me-1"></i>Horario aplicado
                            <?php if (!empty($horarioAplicado['area'])): ?>
                                <span class="badge bg-dark text-uppercase ms-1"><?= htmlspecialchars((string) $horarioAplicado['area']) ?></span>
                            <?php endif; ?>
                        </span>
                        <span class="small">
                            <i class="fas fa-calendar-day me-1 text-muted"></i>Días laborables:
                            <strong><?= $horarioDiasTexto !== '' ? htmlspecialchars($horarioDiasTexto) : 'No configurado' ?></strong>
                        </span>
                        <span class="small">
                            <i class="fas fa-sign-in-alt me-1 text-muted"></i>Entrada:
                            <strong><?= !empty($horarioAplicado['hora_entrada']) ? htmlspecialchars(substr((string) $horarioAplicado['hora_entrada'], 0, 5)) : '—' ?></strong>
                        </span>
                        <span class="small">
                            <i class="fas fa-sign-out-alt me-1 text-muted"></i>Salida:
                            <strong><?= !empty($horarioAplicado['hora_salida']) ? htmlspecialchars(substr((string) $horarioAplicado['hora_salida'], 0, 5)) : '—' ?></strong>
                        </span>
                        <span class="small">
                            <i class="fas fa-hourglass-half me-1 text-muted"></i>Jornada:
                            <strong><?= number_format(floatval($horarioAplicado['horas_jornada'] ?? 0), 2) ?> h</strong>
                        </span>
                    </div>

                    <ul class="nav nav-tabs mb-3" id="tabsPeriodosInternos" role="tablist">
                        <li class="nav-item" role="presentation">
                            <button class="nav-link active" id="tabSemanalBtn" data-bs-toggle="tab" data-bs-target="#tabSemanal"
                                type="button" role="tab" aria-controls="tabSemanal" aria-selected="true">
                                <i class="fas fa-calendar-week me-1"></i>Semanal
                                <span class="badge bg-secondary ms-1"><?= count($semanasInternas) ?></span>
                            </button>
                        </li>
                        <li class="nav-item" role="presentation">
                            <button class="nav-link" id="tabQuincenalBtn" data-bs-toggle="tab" data-bs-target="#tabQuincenal"
                                type="button" role="tab" aria-controls="tabQuincenal" aria-selected="false">
                                <i class="fas fa-calendar-alt me-1"></i>Quincenal
                                <span class="badge bg-secondary ms-1"><?= count($quincenasInternas) ?></span>
                            </button>
                        </li>
                    </ul>

                    <div class="tab-content">
                        <!-- ===== Semanal ===== -->
                        <div class="tab-pane fade show active" id="tabSemanal" role="tabpanel" aria-labelledby="tabSemanalBtn">
                            <?php if (!empty($semanasInternas)): ?>
                                <div class="table-responsive">
                                                                        <table class="table table-sm table-bordered table-striped align-middle mb-0">
                                        <thead class="table-light">
                                            <tr>
                                                <th>Semana</th>
                                                <th class="text-end">Días trab.</th>
                                                <th class="text-end">Horas L-V</th>
                                                <th class="text-end">Horas Sáb/Dom</th>
                                                <th class="text-end">Horas extensión</th>
                                                <th class="text-end">Horas pagables</th>
                                                <th class="text-end">Valor hora</th>
                                                <th class="text-end">Sueldo base</th>
                                                <th class="text-end">Bonos</th>
                                                <th class="text-end">Neto</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <?php foreach ($semanasInternas as $sem):
                                                $sIni = $formatoFechaCorta($sem['inicio'] ?? '');
                                                $sFin = $formatoFechaCorta($sem['fin'] ?? '');
                                                $sValorHora = floatval($sem['valor_hora_usd'] ?? 0);
                                                $sBase = floatval($sem['sueldo_base_usd'] ?? 0);
                                                $sBonos = floatval($sem['bonos_usd'] ?? 0);
                                                $sNeto = floatval($sem['neto_usd'] ?? 0);
                                            ?>
                                            <tr>
                                                <td class="text-nowrap"><i class="far fa-calendar me-1 text-muted"></i><?= htmlspecialchars($sIni) ?> → <?= htmlspecialchars($sFin) ?></td>
                                                <td class="text-end"><?= (int) ($sem['dias_trabajados'] ?? 0) ?></td>
                                                <td class="text-end"><?= number_format(floatval($sem['horas_lunes_viernes'] ?? 0), 2) ?></td>
                                                <td class="text-end"><?= number_format(floatval($sem['horas_fin_semana'] ?? 0), 2) ?></td>
                                                <td class="text-end"><?= number_format(floatval($sem['horas_extension'] ?? 0), 2) ?></td>
                                                <td class="text-end fw-semibold"><?= number_format(floatval($sem['horas_pagables'] ?? 0), 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($sValorHora)) ?>">$<?= number_format($sValorHora, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($sBase)) ?>">$<?= number_format($sBase, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($sBonos)) ?>">$<?= number_format($sBonos, 2) ?></td>
                                                <td class="text-end fw-bold" title="<?= htmlspecialchars($tooltipMontoBs($sNeto)) ?>">$<?= number_format($sNeto, 2) ?></td>
                                            </tr>
                                            <?php endforeach; ?>
                                        </tbody>
                                        <tfoot>
                                            <tr class="table-light fw-bold">
                                                <td>Totales</td>
                                                <td class="text-end"><?= (int) ($totalesInternos['dias_trabajados'] ?? 0) ?></td>
                                                <td class="text-end"><?= number_format(floatval($totalesInternos['horas_lunes_viernes'] ?? 0), 2) ?></td>
                                                <td class="text-end"><?= number_format(floatval($totalesInternos['horas_fin_semana'] ?? 0), 2) ?></td>
                                                <td class="text-end"><?= number_format(floatval($totalesInternos['horas_extension'] ?? 0), 2) ?></td>
                                                <td class="text-end fw-semibold"><?= number_format(floatval($totalesInternos['horas_pagables'] ?? 0), 2) ?></td>
                                                <td class="text-end">—</td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totalesInternos['sueldo_base_usd'] ?? 0)) ?>">$<?= number_format(floatval($totalesInternos['sueldo_base_usd'] ?? 0), 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totalesInternos['bonos_usd'] ?? 0)) ?>">$<?= number_format(floatval($totalesInternos['bonos_usd'] ?? 0), 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totalesInternos['neto_usd'] ?? 0)) ?>">$<?= number_format(floatval($totalesInternos['neto_usd'] ?? 0), 2) ?></td>
                                            </tr>
                                        </tfoot>
                                    </table>
                                </div>
                            <?php else: ?>
                                <div class="alert alert-info mb-0">No hay datos semanales para este periodo.</div>
                            <?php endif; ?>
                        </div>

                        <!-- ===== Quincenal ===== -->
                        <div class="tab-pane fade" id="tabQuincenal" role="tabpanel" aria-labelledby="tabQuincenalBtn">
                            <?php if (!empty($quincenasInternas)): ?>
                                <div class="table-responsive">
                                                                        <table class="table table-sm table-bordered table-striped align-middle mb-0">
                                        <thead class="table-light">
                                            <tr>
                                                <th>Quincena</th>
                                                <th class="text-end">Días trab.</th>
                                                <th class="text-end">Horas L-V</th>
                                                <th class="text-end">Horas Sáb/Dom</th>
                                                <th class="text-end">Horas extensión</th>
                                                <th class="text-end">Horas pagables</th>
                                                <th class="text-end">Valor hora</th>
                                                <th class="text-end">Sueldo base</th>
                                                <th class="text-end">Bonos</th>
                                                <th class="text-end">Neto</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <?php
                                            $totQuincBase = 0.0; $totQuincBonos = 0.0; $totQuincNeto = 0.0;
                                            $totQuincDias = 0; $totQuincLv = 0.0; $totQuincFs = 0.0;
                                            $totQuincExt = 0.0; $totQuincPagables = 0.0;
                                            foreach ($quincenasInternas as $qu):
                                                $qIni = $formatoFechaCorta($qu['inicio'] ?? '');
                                                $qFin = $formatoFechaCorta($qu['fin'] ?? '');
                                                $qValorHora = floatval($qu['valor_hora_usd'] ?? 0);
                                                $qBase = floatval($qu['sueldo_base_usd'] ?? 0);
                                                $qBonos = floatval($qu['bonos_usd'] ?? 0);
                                                $qNeto = floatval($qu['neto_usd'] ?? 0);
                                                $qDias = (int) ($qu['dias_trabajados'] ?? 0);
                                                $qLv = floatval($qu['horas_lunes_viernes'] ?? 0);
                                                $qFs = floatval($qu['horas_fin_semana'] ?? 0);
                                                $qExt = floatval($qu['horas_extension'] ?? 0);
                                                $qPagables = floatval($qu['horas_pagables'] ?? 0);
                                                $totQuincBase += $qBase; $totQuincBonos += $qBonos; $totQuincNeto += $qNeto;
                                                $totQuincDias += $qDias; $totQuincLv += $qLv; $totQuincFs += $qFs;
                                                $totQuincExt += $qExt; $totQuincPagables += $qPagables;
                                            ?>
                                            <tr>
                                                <td class="text-nowrap"><i class="far fa-calendar me-1 text-muted"></i><?= htmlspecialchars($qIni) ?> → <?= htmlspecialchars($qFin) ?></td>
                                                <td class="text-end"><?= $qDias ?></td>
                                                <td class="text-end"><?= number_format($qLv, 2) ?></td>
                                                <td class="text-end"><?= number_format($qFs, 2) ?></td>
                                                <td class="text-end"><?= number_format($qExt, 2) ?></td>
                                                <td class="text-end fw-semibold"><?= number_format($qPagables, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($qValorHora)) ?>">$<?= number_format($qValorHora, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($qBase)) ?>">$<?= number_format($qBase, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($qBonos)) ?>">$<?= number_format($qBonos, 2) ?></td>
                                                <td class="text-end fw-bold" title="<?= htmlspecialchars($tooltipMontoBs($qNeto)) ?>">$<?= number_format($qNeto, 2) ?></td>
                                            </tr>
                                            <?php endforeach; ?>
                                        </tbody>
                                        <tfoot>
                                            <tr class="table-light fw-bold">
                                                <td>Totales</td>
                                                <td class="text-end"><?= $totQuincDias ?></td>
                                                <td class="text-end"><?= number_format($totQuincLv, 2) ?></td>
                                                <td class="text-end"><?= number_format($totQuincFs, 2) ?></td>
                                                <td class="text-end"><?= number_format($totQuincExt, 2) ?></td>
                                                <td class="text-end fw-semibold"><?= number_format($totQuincPagables, 2) ?></td>
                                                <td class="text-end">—</td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totQuincBase)) ?>">$<?= number_format($totQuincBase, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totQuincBonos)) ?>">$<?= number_format($totQuincBonos, 2) ?></td>
                                                <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totQuincNeto)) ?>">$<?= number_format($totQuincNeto, 2) ?></td>
                                            </tr>
                                        </tfoot>
                                    </table>
                                </div>
                            <?php else: ?>
                                <div class="alert alert-info mb-0">No hay datos quincenales para este periodo.</div>
                            <?php endif; ?>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
                </div>
            </div>
        </div>
    </div>

    <div class="modal fade" id="modalDesgloseAsistencia" tabindex="-1" aria-labelledby="modalDesgloseAsistenciaLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg modal-dialog-scrollable">
            <div class="modal-content">
                <div class="modal-header bg-primary text-white">
                    <h5 class="modal-title" id="modalDesgloseAsistenciaLabel">
                        <i class="fas fa-clock me-2"></i>Desglose de sueldo por asistencia - <?= htmlspecialchars($mesNombre) ?>
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Cerrar"></button>
                </div>
                <div class="modal-body">
                    <div class="alert <?= $asistenciaAplica ? 'alert-success' : 'alert-warning' ?> mb-3">
                        <strong><?= $asistenciaAplica ? 'Aplicado' : 'No aplicado' ?>:</strong>
                        <?= htmlspecialchars($asistenciaMotivoTexto) ?>
                    </div>

                    <div class="table-responsive">
                        <table class="table table-sm table-bordered align-middle mb-0">
                            <tbody>
                                <tr>
                                    <th class="w-50 bg-light">Periodo</th>
                                    <td><?= htmlspecialchars($periodoSel) ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Marcas de asistencia en el periodo</th>
                                    <td><?= $asistenciaTieneMarcas ? 'Si' : 'No' ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Sueldo nominal del empleado</th>
                                    <td title="<?= htmlspecialchars($tooltipMontoBs($asistenciaSueldoNominal)) ?>">$<?= number_format($asistenciaSueldoNominal, 2) ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Sueldo base calculado para el periodo</th>
                                    <td title="<?= htmlspecialchars($tooltipMontoBs($asistenciaSueldoCalculado)) ?>">$<?= number_format($asistenciaSueldoCalculado, 2) ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Valor hora (normal y extra)</th>
                                    <td title="<?= htmlspecialchars($tooltipMontoBs($asistenciaValorHora)) ?>">$<?= number_format($asistenciaValorHora, 2) ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Horas planificadas del mes</th>
                                    <td><?= number_format($asistenciaHorasPlanificadas, 2) ?> h</td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Horas trabajadas Lunes a Viernes</th>
                                    <td>
                                        <?= number_format($asistenciaHorasLv, 2) ?> h
                                        <button type="button" class="btn btn-sm btn-outline-secondary ms-2" data-bs-toggle="modal" data-bs-target="#modalDiasPagados">
                                            <i class="fas fa-calendar-check me-1"></i>Ver dias pagados
                                        </button>
                                    </td>
                                </tr>
                                                                <tr>
                                    <th class="bg-light">Horas extra Sabado y Domingo</th>
                                    <td>
                                        <?= number_format($asistenciaHorasFs, 2) ?> h
                                        <?php if ($totalMontoFinSemana > 0.0001): ?>
                                            <span class="badge bg-warning text-dark ms-2" title="<?= htmlspecialchars($tooltipMontoBs($totalMontoFinSemana)) ?>">
                                                $<?= number_format($totalMontoFinSemana, 2) ?>
                                            </span>
                                        <?php endif; ?>
                                    </td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Horas extra por extensiones aprobadas</th>
                                    <td><?= number_format($asistenciaHorasExtension, 2) ?> h</td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Total de horas pagables</th>
                                    <td><strong><?= number_format($asistenciaHorasPagables, 2) ?> h</strong></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Guardias asignadas (fin de semana)</th>
                                    <td><?= $guardiasAsignadas ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Guardias cumplidas</th>
                                    <td><?= $guardiasCumplidas ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Guardias no cumplidas</th>
                                    <td><?= $guardiasNoCumplidas ?></td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Horas penalizadas por guardia</th>
                                    <td><?= number_format($penalizacionGuardiaHoras, 2) ?> h</td>
                                </tr>
                                <tr>
                                    <th class="bg-light">Penalizacion por guardia incumplida</th>
                                    <td title="<?= htmlspecialchars($tooltipMontoBs($penalizacionGuardiaUsd)) ?>">-$<?= number_format($penalizacionGuardiaUsd, 2) ?></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>

                    <div class="mt-3">
                        <h6 class="mb-2">Formula aplicada</h6>
                        <p class="mb-1 small text-muted">Valor hora = sueldo nominal / horas planificadas del mes</p>
                        <p class="mb-1 small text-muted">Horas pagables = horas L-V + horas Sab/Dom + horas de extension aprobada</p>
                        <p class="mb-1 small text-muted">Penalizacion guardia = guardias no cumplidas x horas de jornada x valor hora</p>
                        <p class="mb-0 small text-muted">Sueldo calculado = (valor hora x horas pagables) - penalizacion guardia</p>
                    </div>

                    <div class="mt-4">
                        <h6 class="mb-2">Auditoria de guardias del periodo</h6>
                        <?php if (!empty($guardiasDetalle)): ?>
                            <div class="table-responsive">
                                <table class="table table-sm table-striped table-bordered align-middle mb-0">
                                    <thead>
                                        <tr>
                                            <th>Fecha</th>
                                            <th>Tipo</th>
                                            <th>Estado</th>
                                            <th>Penaliza</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <?php foreach ($guardiasDetalle as $itemGuardia):
                                            $fechaRaw = (string)($itemGuardia['fecha_guardia'] ?? '');
                                            $fechaVista = $fechaRaw !== '' ? date('d/m/Y', strtotime($fechaRaw)) : '-';
                                            $tipo = ucfirst(strtolower(trim((string)($itemGuardia['tipo_guardia'] ?? ''))));
                                            $estadoRaw = strtolower(trim((string)($itemGuardia['estado'] ?? '')));
                                            $estadoVista = $estadoRaw !== '' ? str_replace('_', ' ', ucfirst($estadoRaw)) : 'Sin estado';
                                            $penaliza = !empty($itemGuardia['penaliza']);
                                        ?>
                                        <tr>
                                            <td><?= htmlspecialchars($fechaVista) ?></td>
                                            <td><?= htmlspecialchars($tipo) ?></td>
                                            <td><?= htmlspecialchars($estadoVista) ?></td>
                                            <td>
                                                <span class="badge <?= $penaliza ? 'bg-danger' : 'bg-success' ?>">
                                                    <?= $penaliza ? 'Si' : 'No' ?>
                                                </span>
                                            </td>
                                        </tr>
                                        <?php endforeach; ?>
                                    </tbody>
                                </table>
                            </div>
                        <?php else: ?>
                            <p class="small text-muted mb-0">No hay guardias registradas para el periodo seleccionado.</p>
                        <?php endif; ?>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
                </div>
            </div>
        </div>
    </div>

    <div class="modal fade" id="modalDiasPagados" tabindex="-1" aria-labelledby="modalDiasPagadosLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl modal-dialog-scrollable">
            <div class="modal-content">
                <div class="modal-header bg-dark text-white">
                    <h5 class="modal-title" id="modalDiasPagadosLabel">
                        <i class="fas fa-list-alt me-2"></i>Detalle diario de dias pagados - <?= htmlspecialchars($mesNombre) ?>
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Cerrar"></button>
                </div>
                <div class="modal-body">
                    <?php if (!empty($diasPagadosDetalle)): ?>
                        <div class="table-responsive">
                            <table class="table table-sm table-bordered table-striped align-middle">
                                <thead>
                                    <tr>
                                        <th>Fecha</th>
                                        <th class="text-end">Horas L-V</th>
                                        <th class="text-end">Horas Sab/Dom</th>
                                        <th class="text-end">Horas extension</th>
                                        <th class="text-end">Horas pagadas</th>
                                        <th class="text-end">Horas penalizadas</th>
                                        <th class="text-end">Monto pagado</th>
                                        <th class="text-end">Penalizacion</th>
                                        <th class="text-end">Monto neto</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php
                                    $totalHorasLvDetalle = 0.0;
                                    $totalHorasFsDetalle = 0.0;
                                    $totalHorasExtDetalle = 0.0;
                                    $totalHorasPagadasDetalle = 0.0;
                                    $totalHorasPenalizadasDetalle = 0.0;
                                    $totalMontoPagadoDetalle = 0.0;
                                    $totalMontoPenalizacionDetalle = 0.0;
                                    $totalMontoNetoDetalle = 0.0;
                                    foreach ($diasPagadosDetalle as $diaPagado):
                                        $fechaDia = (string)($diaPagado['fecha'] ?? '');
                                        $fechaVistaDia = $fechaDia !== '' ? date('d/m/Y', strtotime($fechaDia)) : '-';
                                        $horasLvDia = floatval($diaPagado['horas_lunes_viernes'] ?? 0);
                                        $horasFsDia = floatval($diaPagado['horas_fin_semana'] ?? 0);
                                        $horasExtDia = floatval($diaPagado['horas_extension'] ?? 0);
                                        $horasPagadasDia = floatval($diaPagado['horas_pagadas'] ?? 0);
                                        $horasPenalizadasDia = floatval($diaPagado['horas_penalizadas'] ?? 0);
                                        $montoPagadoDia = floatval($diaPagado['monto_pagado_usd'] ?? 0);
                                        $montoPenalizacionDia = floatval($diaPagado['monto_penalizacion_usd'] ?? 0);
                                        $montoNetoDia = floatval($diaPagado['monto_neto_usd'] ?? 0);

                                        $totalHorasLvDetalle += $horasLvDia;
                                        $totalHorasFsDetalle += $horasFsDia;
                                        $totalHorasExtDetalle += $horasExtDia;
                                        $totalHorasPagadasDetalle += $horasPagadasDia;
                                        $totalHorasPenalizadasDetalle += $horasPenalizadasDia;
                                        $totalMontoPagadoDetalle += $montoPagadoDia;
                                        $totalMontoPenalizacionDetalle += $montoPenalizacionDia;
                                        $totalMontoNetoDetalle += $montoNetoDia;
                                    ?>
                                    <tr>
                                        <td><?= htmlspecialchars($fechaVistaDia) ?></td>
                                        <td class="text-end"><?= number_format($horasLvDia, 2) ?></td>
                                        <td class="text-end"><?= number_format($horasFsDia, 2) ?></td>
                                        <td class="text-end"><?= number_format($horasExtDia, 2) ?></td>
                                        <td class="text-end fw-semibold"><?= number_format($horasPagadasDia, 2) ?></td>
                                        <td class="text-end"><?= number_format($horasPenalizadasDia, 2) ?></td>
                                        <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($montoPagadoDia)) ?>">$<?= number_format($montoPagadoDia, 2) ?></td>
                                        <td class="text-end text-danger" title="<?= htmlspecialchars($tooltipMontoBs($montoPenalizacionDia)) ?>">$<?= number_format($montoPenalizacionDia, 2) ?></td>
                                        <td class="text-end fw-bold" title="<?= htmlspecialchars($tooltipMontoBs($montoNetoDia)) ?>">$<?= number_format($montoNetoDia, 2) ?></td>
                                    </tr>
                                    <?php endforeach; ?>
                                </tbody>
                                <tfoot>
                                    <tr class="table-light fw-bold">
                                        <td>Totales</td>
                                        <td class="text-end"><?= number_format($totalHorasLvDetalle, 2) ?></td>
                                        <td class="text-end"><?= number_format($totalHorasFsDetalle, 2) ?></td>
                                        <td class="text-end"><?= number_format($totalHorasExtDetalle, 2) ?></td>
                                        <td class="text-end"><?= number_format($totalHorasPagadasDetalle, 2) ?></td>
                                        <td class="text-end"><?= number_format($totalHorasPenalizadasDetalle, 2) ?></td>
                                        <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($totalMontoPagadoDetalle)) ?>">$<?= number_format($totalMontoPagadoDetalle, 2) ?></td>
                                        <td class="text-end text-danger" title="<?= htmlspecialchars($tooltipMontoBs($totalMontoPenalizacionDetalle)) ?>">$<?= number_format($totalMontoPenalizacionDetalle, 2) ?></td>
                                        <td class="text-end" title="<?= htmlspecialchars($tooltipMontoBs($asistenciaSueldoCalculado)) ?>">$<?= number_format($asistenciaSueldoCalculado, 2) ?></td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>
                    <?php else: ?>
                        <div class="alert alert-info mb-0">
                            No hay detalle de dias pagados para este periodo.
                        </div>
                    <?php endif; ?>
                </div>
                                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
                </div>
            </div>
        </div>
    </div>

    <!-- ===== Modal: Desglose de bonos por trabajos (solicitudes resueltas) ===== -->
    <div class="modal fade" id="modalDesgloseBonos" tabindex="-1" aria-labelledby="modalDesgloseBonosLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl modal-dialog-scrollable">
            <div class="modal-content">
                <div class="modal-header bg-info text-white">
                    <h5 class="modal-title" id="modalDesgloseBonosLabel">
                        <i class="fas fa-trophy me-2"></i>Bonos por trabajos — <?= htmlspecialchars($mesNombre) ?>
                    </h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Cerrar"></button>
                </div>
                <div class="modal-body">
                                                                                <p class="small text-muted mb-3">
                        Solicitudes de soporte <strong>resueltas</strong> en el período en las que el empleado figura como técnico
                        <strong>con derecho a bono</strong> (por aceptación explícita del envío o por asignación directa del
                        ticket). El <em>Monto trabajo</em> es el honorario definido en la solicitud cuando la categoría lo permite
                        (p. ej. honorarios profesionales); en caso contrario, el tarifario por categoría de cierre. El monto se
                        reparte en <strong>partes iguales</strong> entre los técnicos con derecho a bono de la misma solicitud;
                        solo se incluye personal <strong>técnico</strong> (los roles admin/acli no participan del reparto).
                    </p>
                    <?php if (!empty($bonosDetalle)): ?>
                        <div class="table-responsive">
                            <table class="table table-sm table-bordered table-striped align-middle mb-0">
                                <thead class="table-light">
                                    <tr>
                                        <th>N° Control</th>
                                        <th>Cliente</th>
                                        <th>Categoría de cierre</th>
                                        <th>Fecha resolución</th>
                                        <th class="text-center">SLA</th>
                                        <th class="text-end">Monto trabajo</th>
                                        <th class="text-center">Técnicos</th>
                                        <th class="text-end">A pagar</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php
                                    $totalBonosDetalle = 0.0;
                                    foreach ($bonosDetalle as $trab):
                                        $fechaRes = (string) ($trab['fecha_resolucion'] ?? '');
                                        $fechaResVista = $fechaRes !== '' ? date('d/m/Y H:i', strtotime($fechaRes)) : '-';
                                                                                $montoSolicitud = floatval($trab['monto_solicitud'] ?? 0);
                                        $montoTecnico = floatval($trab['monto_tecnico'] ?? 0);
                                        $montoCatalogo = floatval($trab['monto_catalogo'] ?? 0);
                                        $esMontoPersonalizado = ($montoCatalogo > 0) && (abs($montoSolicitud - $montoCatalogo) > 0.00001);
                                        $tecnicosAceptados = max(1, intval($trab['tecnicos_aceptados'] ?? 1));
                                        $slaMet = $trab['sla_met'];
                                        $totalBonosDetalle += $montoTecnico;
                                    ?>
                                    <tr>
                                        <td class="font-monospace small"><?= htmlspecialchars((string) ($trab['nro_control'] ?? '')) ?: '—' ?></td>
                                        <td class="text-truncate" style="max-width: 220px;" title="<?= htmlspecialchars((string) ($trab['cliente'] ?? '')) ?>">
                                            <?= htmlspecialchars((string) ($trab['cliente'] ?? '')) ?: '—' ?>
                                        </td>
                                        <td>
                                            <?= htmlspecialchars((string) ($trab['categoria_label'] ?? $trab['categoria_cierre'] ?? '')) ?: '—' ?>
                                            <div class="small text-muted font-monospace"><?= htmlspecialchars((string) ($trab['categoria_cierre'] ?? '')) ?></div>
                                        </td>
                                        <td class="text-nowrap small"><?= htmlspecialchars($fechaResVista) ?></td>
                                        <td class="text-center">
                                            <?php if ($slaMet === null): ?>
                                                <span class="badge bg-secondary">—</span>
                                            <?php elseif ($slaMet === 1): ?>
                                                <span class="badge bg-success">Cumplido</span>
                                            <?php else: ?>
                                                <span class="badge bg-danger">Incumplido</span>
                                            <?php endif; ?>
                                        </td>
                                        <td class="text-end amount-cell" title="<?= htmlspecialchars($tooltipMontoBs($montoSolicitud)) ?>">
                                            $<?= number_format($montoSolicitud, 2) ?>
                                            <?php if ($esMontoPersonalizado): ?>
                                                <i class="fas fa-pen-to-square text-warning ms-1" title="Monto definido en la solicitud (tarifario base: $<?= number_format($montoCatalogo, 2) ?>)"></i>
     