<?php
// modules/gestor_ppp/reporte_ces.php
// Reporte oficial CES — Prácticas Preprofesionales
// Instituto Superior Tecnológico Tecnópolis
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';
requireRol(ROL_GESTOR_PPP);
$idInst = instId();

$db        = getDB();
$user      = currentUser();
$pageTitle = 'Reporte CES — Prácticas Preprofesionales';

// ── Nombre dinámico del instituto ──────────────────────────────
$instRow   = $idInst
    ? $db->query("SELECT nombre FROM institutos WHERE id_instituto = $idInst LIMIT 1")->fetch()
    : null;
$instNombre = $instRow ? strtoupper($instRow['nombre']) : 'INSTITUTO';

// ── Parámetros ─────────────────────────────────────────────────
$idPer  = (int)($_GET['periodo'] ?? 0);
$idCar  = (int)($_GET['carrera'] ?? 0);
$export = $_GET['export'] ?? '';

// Período activo por defecto
if (!$idPer) {
    $pa    = $db->query("SELECT id_periodo FROM periodos_academicos WHERE activo=1" . ($idInst ? " AND id_instituto=$idInst" : "") . " ORDER BY id_periodo DESC LIMIT 1")->fetch();
    $idPer = $pa ? (int)$pa['id_periodo'] : 0;
}

$periodos = $db->query("SELECT * FROM periodos_academicos WHERE 1=1" . instCond() . " ORDER BY id_periodo DESC")->fetchAll();
$carreras = $db->query("SELECT * FROM carreras WHERE activa=1" . instCond() . " ORDER BY nombre")->fetchAll();

$wPer  = $idPer  ? "AND p.id_periodo = $idPer"   : '';
$wCar  = $idCar  ? "AND est.id_carrera = $idCar" : '';
$wInst = $idInst ? "AND c.id_instituto = $idInst"  : '';

$perNombre = '';
$perInicio = '';
$perFin    = '';
foreach ($periodos as $per) {
    if ($per['id_periodo'] == $idPer) {
        $perNombre = $per['nombre'];
        $perInicio = $per['fecha_inicio'];
        $perFin    = $per['fecha_fin'];
    }
}

// ── Datos generales del período ────────────────────────────────
$general = $db->query("
    SELECT
        COUNT(DISTINCT p.id_practica)                           AS total_practicas,
        COUNT(DISTINCT p.id_estudiante)                         AS total_estudiantes,
        COUNT(DISTINCT p.id_empresa)                            AS total_empresas,
        COUNT(DISTINCT est.id_carrera)                          AS total_carreras,
        SUM(p.horas_cumplidas)                                  AS total_horas,
        ROUND(AVG(p.horas_cumplidas),1)                         AS prom_horas,
        SUM(p.estado IN ('completado','calificado'))            AS completados,
        SUM(p.estado = 'en_progreso')                           AS en_progreso,
        SUM(p.estado = 'rechazado')                             AS rechazados,
        SUM(p.horas_cumplidas >= p.horas_requeridas)           AS cumplen_horas,
        SUM(p.nota_final IS NOT NULL)                           AS calificados,
        SUM(p.nota_final >= 6)                                  AS aprobados,
        ROUND(AVG(CASE WHEN p.nota_final IS NOT NULL THEN p.nota_final END),2) AS prom_nota
    FROM practicas p
    JOIN estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN carreras c      ON c.id_carrera      = est.id_carrera
    WHERE 1=1 $wPer $wCar $wInst
")->fetch();

// ── Por carrera ────────────────────────────────────────────────
$porCarrera = $db->query("
    SELECT c.nombre AS carrera, c.codigo, c.horas_minimas, c.nivel,
           COUNT(p.id_practica)                               AS total,
           SUM(p.estado IN ('completado','calificado'))       AS completados,
           SUM(p.estado = 'en_progreso')                      AS en_progreso,
           SUM(p.estado = 'rechazado')                        AS rechazados,
           SUM(p.horas_cumplidas >= p.horas_requeridas)      AS cumplen_horas,
           SUM(p.horas_cumplidas)                             AS total_horas,
           ROUND(AVG(p.horas_cumplidas),1)                   AS prom_horas,
           SUM(p.nota_final IS NOT NULL)                      AS calificados,
           SUM(p.nota_final >= 6)                             AS aprobados,
           ROUND(AVG(CASE WHEN p.nota_final IS NOT NULL THEN p.nota_final END),2) AS prom_nota
    FROM practicas p
    JOIN estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN carreras c      ON c.id_carrera = est.id_carrera
    WHERE 1=1 $wPer $wCar $wInst
    GROUP BY c.id_carrera
    ORDER BY c.nombre
")->fetchAll();

// ── Por sector de empresa ──────────────────────────────────────
$porSector = $db->query("
    SELECT em.sector,
           COUNT(DISTINCT em.id_empresa) AS empresas,
           COUNT(p.id_practica)          AS practicas,
           SUM(p.horas_cumplidas)        AS horas
    FROM practicas p
    JOIN empresas em ON em.id_empresa = p.id_empresa
    JOIN estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN carreras c      ON c.id_carrera      = est.id_carrera
    WHERE 1=1 $wPer $wCar $wInst
    GROUP BY em.sector
")->fetchAll();

// ── Convenios vigentes ─────────────────────────────────────────
$convenios = $db->query("
    SELECT c.numero_convenio, c.fecha_suscripcion, c.fecha_vencimiento, c.estado,
           em.razon_social AS empresa, em.sector, em.canton, em.provincia,
           COUNT(p.id_practica) AS practicantes
    FROM convenios c
    JOIN empresas em ON em.id_empresa = c.id_empresa
    LEFT JOIN practicas p ON p.id_empresa = em.id_empresa " . ($idPer ? "AND p.id_periodo = $idPer" : "") . "
    WHERE 1=1" . ($idInst ? " AND c.id_instituto = $idInst" : "") . "
    GROUP BY c.id_convenio
    ORDER BY c.estado, em.razon_social
")->fetchAll();

// ── Nómina completa de estudiantes ────────────────────────────
$nomina = $db->query("
    SELECT
        CONCAT(u.apellidos,' ',u.nombres)       AS estudiante,
        u.cedula,
        c.nombre                                AS carrera,
        em.razon_social                         AS empresa,
        em.sector,
        em.canton,
        p.area_practica,
        p.cargo_practica,
        p.fecha_inicio,
        p.fecha_fin,
        p.horas_requeridas,
        p.horas_cumplidas,
        p.estado,
        p.nota_final,
        CONCAT(ut.nombres,' ',ut.apellidos)     AS tutor_academico,
        p.nombre_tutor_empresa                  AS tutor_empresa,
        conv.numero_convenio
    FROM practicas p
    JOIN estudiantes est ON est.id_estudiante = p.id_estudiante
    JOIN usuarios u      ON u.id_usuario = est.id_usuario
    JOIN carreras c      ON c.id_carrera = est.id_carrera
    JOIN empresas em     ON em.id_empresa = p.id_empresa
    LEFT JOIN tutores t  ON t.id_tutor = p.id_tutor
    LEFT JOIN usuarios ut ON ut.id_usuario = t.id_usuario
    LEFT JOIN convenios conv ON conv.id_convenio = p.id_convenio
    WHERE 1=1 $wPer $wCar $wInst
    ORDER BY c.nombre, u.apellidos
")->fetchAll();

// ── EXPORTAR EXCEL ─────────────────────────────────────────────
if ($export === 'excel') {
    header('Content-Type: application/vnd.ms-excel; charset=utf-8');
    header('Content-Disposition: attachment; filename="Reporte_CES_PPP_' . date('Ymd') . '.xls"');
    echo "\xEF\xBB\xBF";
    ?>
    <html><head><meta charset="UTF-8"></head><body>

    <!-- PORTADA -->
    <table border="1" style="font-family:Arial;font-size:11px;margin-bottom:20px;">
      <tr><td colspan="14" style="background:#1a3a6b;color:#fff;font-size:16px;font-weight:bold;text-align:center;padding:10px;">
        <?= htmlspecialchars($instNombre) ?>
      </td></tr>
      <tr><td colspan="14" style="background:#1a3a6b;color:#fff;font-size:13px;text-align:center;padding:6px;">
        REPORTE DE PRÁCTICAS PREPROFESIONALES — CUMPLIMIENTO CES
      </td></tr>
      <tr><td colspan="7" style="background:#e8f0fb;font-weight:bold;">Período Académico:</td>
          <td colspan="7"><?= htmlspecialchars($perNombre) ?></td></tr>
      <tr><td colspan="7" style="background:#e8f0fb;font-weight:bold;">Fecha de emisión:</td>
          <td colspan="7"><?= date('d/m/Y H:i') ?></td></tr>
      <tr><td colspan="7" style="background:#e8f0fb;font-weight:bold;">Emitido por:</td>
          <td colspan="7"><?= htmlspecialchars($user['nombre']) ?> — Gestor PPP</td></tr>
    </table>

    <!-- RESUMEN GENERAL -->
    <table border="1" style="font-family:Arial;font-size:11px;margin-bottom:20px;">
      <tr><td colspan="4" style="background:#2563eb;color:#fff;font-weight:bold;padding:6px;">INDICADORES GENERALES</td></tr>
      <tr style="background:#dbeafe;font-weight:bold;"><td>Indicador</td><td>Valor</td><td>Indicador</td><td>Valor</td></tr>
      <tr><td>Total estudiantes en práctica</td><td style="text-align:center;font-weight:bold;"><?= $general['total_estudiantes'] ?></td>
          <td>Empresas participantes</td><td style="text-align:center;font-weight:bold;"><?= $general['total_empresas'] ?></td></tr>
      <tr><td>Prácticas completadas</td><td style="text-align:center;color:green;font-weight:bold;"><?= $general['completados'] ?></td>
          <td>Prácticas en progreso</td><td style="text-align:center;color:orange;font-weight:bold;"><?= $general['en_progreso'] ?></td></tr>
      <tr><td>Total horas acumuladas</td><td style="text-align:center;font-weight:bold;"><?= number_format($general['total_horas']) ?>h</td>
          <td>Promedio horas por estudiante</td><td style="text-align:center;font-weight:bold;"><?= $general['prom_horas'] ?>h</td></tr>
      <tr><td>Estudiantes que cumplen horas mínimas</td><td style="text-align:center;font-weight:bold;"><?= $general['cumplen_horas'] ?></td>
          <td>Promedio nota final</td><td style="text-align:center;font-weight:bold;"><?= $general['prom_nota'] ?: '—' ?></td></tr>
    </table>

    <!-- POR CARRERA -->
    <table border="1" style="font-family:Arial;font-size:11px;margin-bottom:20px;">
      <tr><td colspan="10" style="background:#059669;color:#fff;font-weight:bold;padding:6px;">CUMPLIMIENTO POR CARRERA — ART. 88 LOES</td></tr>
      <tr style="background:#d1fae5;font-weight:bold;text-align:center;">
        <td>Carrera</td><td>Código</td><td>Nivel</td><td>Hs. mín.</td>
        <td>Total</td><td>Completados</td><td>En progreso</td><td>Prom. horas</td><td>Prom. nota</td><td>Indicador CES</td>
      </tr>
      <?php foreach($porCarrera as $r):
        $pct   = $r['total']>0 ? round($r['completados']/$r['total']*100) : 0;
        $cesOk = $pct>=70 && $r['prom_horas']>=$r['horas_minimas'];
      ?>
      <tr>
        <td style="font-weight:bold;"><?= htmlspecialchars($r['carrera']) ?></td>
        <td style="text-align:center;"><?= $r['codigo'] ?></td>
        <td style="text-align:center;"><?= ucfirst($r['nivel']) ?></td>
        <td style="text-align:center;font-weight:bold;"><?= $r['horas_minimas'] ?>h</td>
        <td style="text-align:center;"><?= $r['total'] ?></td>
        <td style="text-align:center;color:green;font-weight:bold;"><?= $r['completados'] ?></td>
        <td style="text-align:center;color:orange;"><?= $r['en_progreso'] ?></td>
        <td style="text-align:center;font-weight:bold;color:<?= $r['prom_horas']>=$r['horas_minimas']?'green':'red' ?>;"><?= $r['prom_horas'] ?>h</td>
        <td style="text-align:center;font-weight:bold;"><?= $r['prom_nota'] ?: '—' ?></td>
        <td style="text-align:center;font-size:14px;"><?= $cesOk?'✅ CUMPLE':'⚠️ NO CUMPLE' ?></td>
      </tr>
      <?php endforeach; ?>
    </table>

    <!-- NÓMINA COMPLETA -->
    <table border="1" style="font-family:Arial;font-size:10px;margin-bottom:20px;">
      <tr><td colspan="16" style="background:#7c3aed;color:#fff;font-weight:bold;padding:6px;">NÓMINA COMPLETA DE ESTUDIANTES EN PRÁCTICA</td></tr>
      <tr style="background:#ede9fe;font-weight:bold;text-align:center;">
        <td>#</td><td>Apellidos y Nombres</td><td>Cédula</td><td>Carrera</td>
        <td>Empresa</td><td>Sector</td><td>Cantón</td><td>Área</td><td>Cargo</td>
        <td>F. Inicio</td><td>F. Fin</td><td>Hs. req.</td><td>Hs. cum.</td>
        <td>Estado</td><td>Nota final</td><td>Tutor académico</td>
      </tr>
      <?php foreach($nomina as $i => $r):
        $bg = ($r['nota_final'] && $r['nota_final']>=6) ? '#f0fdf4' : ($r['nota_final'] ? '#fef2f2' : '#fff');
      ?>
      <tr style="background:<?= $bg ?>;">
        <td style="text-align:center;"><?= $i+1 ?></td>
        <td style="font-weight:bold;"><?= htmlspecialchars($r['estudiante']) ?></td>
        <td style="font-family:monospace;"><?= $r['cedula'] ?></td>
        <td><?= htmlspecialchars($r['carrera']) ?></td>
        <td><?= htmlspecialchars($r['empresa']) ?></td>
        <td style="text-align:center;"><?= ucfirst($r['sector']) ?></td>
        <td><?= htmlspecialchars($r['canton']??'') ?></td>
        <td><?= htmlspecialchars($r['area_practica']??'') ?></td>
        <td><?= htmlspecialchars($r['cargo_practica']??'') ?></td>
        <td style="text-align:center;"><?= $r['fecha_inicio'] ? date('d/m/Y',strtotime($r['fecha_inicio'])) : '—' ?></td>
        <td style="text-align:center;"><?= $r['fecha_fin']    ? date('d/m/Y',strtotime($r['fecha_fin']))    : '—' ?></td>
        <td style="text-align:center;"><?= $r['horas_requeridas'] ?></td>
        <td style="text-align:center;font-weight:bold;color:<?= $r['horas_cumplidas']>=$r['horas_requeridas']?'green':'orange' ?>;"><?= $r['horas_cumplidas'] ?></td>
        <td style="text-align:center;"><?= strtoupper($r['estado']) ?></td>
        <td style="text-align:center;font-weight:bold;font-size:12px;color:<?= $r['nota_final']?($r['nota_final']>=6?'green':'red'):'gray' ?>;"><?= $r['nota_final'] ? number_format($r['nota_final'],2) : '—' ?></td>
        <td><?= htmlspecialchars($r['tutor_academico']??'') ?></td>
      </tr>
      <?php endforeach; ?>
    </table>

    <!-- CONVENIOS -->
    <table border="1" style="font-family:Arial;font-size:10px;">
      <tr><td colspan="7" style="background:#b45309;color:#fff;font-weight:bold;padding:6px;">CONVENIOS DE COOPERACIÓN INTERINSTITUCIONAL — ART. 88 LOES</td></tr>
      <tr style="background:#fef3c7;font-weight:bold;text-align:center;">
        <td>N° Convenio</td><td>Empresa</td><td>Sector</td><td>Ubicación</td>
        <td>F. Suscripción</td><td>F. Vencimiento</td><td>Estado</td>
      </tr>
      <?php foreach($convenios as $c): ?>
      <tr>
        <td style="font-family:monospace;"><?= htmlspecialchars($c['numero_convenio']) ?></td>
        <td style="font-weight:bold;"><?= htmlspecialchars($c['empresa']) ?></td>
        <td style="text-align:center;"><?= ucfirst($c['sector']) ?></td>
        <td><?= htmlspecialchars(implode(', ',array_filter([$c['canton']??'',$c['provincia']??'']))) ?></td>
        <td style="text-align:center;"><?= date('d/m/Y',strtotime($c['fecha_suscripcion'])) ?></td>
        <td style="text-align:center;"><?= date('d/m/Y',strtotime($c['fecha_vencimiento'])) ?></td>
        <td style="text-align:center;font-weight:bold;color:<?= $c['estado']==='vigente'?'green':'red' ?>;"><?= strtoupper($c['estado']) ?></td>
      </tr>
      <?php endforeach; ?>
    </table>

    </body></html>
    <?php
    exit;
}

// ── EXPORTAR CSV ───────────────────────────────────────────────
if ($export === 'csv') {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename="CES_PPP_nomina_' . date('Ymd') . '.csv"');
    $out = fopen('php://output','w');
    fprintf($out, chr(0xEF).chr(0xBB).chr(0xBF));
    fputcsv($out,['#','Estudiante','Cédula','Carrera','Empresa','Sector','Cantón',
                  'F.Inicio','F.Fin','Hs.req','Hs.cum','Estado','Nota final','Tutor','N°Convenio'],';');
    foreach($nomina as $i => $r) {
        fputcsv($out,[
            $i+1, $r['estudiante'], $r['cedula'], $r['carrera'],
            $r['empresa'], $r['sector'], $r['canton']??'',
            $r['fecha_inicio']??'', $r['fecha_fin']??'',
            $r['horas_requeridas'], $r['horas_cumplidas'],
            $r['estado'], $r['nota_final']??'',
            $r['tutor_academico']??'', $r['numero_convenio']??''
        ],';');
    }
    fclose($out); exit;
}
?>
<?php $paginaActual = 'reporte_ces'; ?>
<!DOCTYPE html>
<html lang="es">
<head><?php include __DIR__ . '/../../includes/head.php'; ?>
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar.css">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar-gestor-ppp.css">
</head>
<body>
<?php include __DIR__ . '/../../includes/navbar.php'; ?>
<div class="app-shell">
  <?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'sidebar-gestor-ppp.php'; ?>

  <main class="main-area">
    <div class="page-header d-flex justify-content-between align-items-start flex-wrap gap-2">
      <div>
        <h4><i class="fa fa-file-contract me-2" style="color:#f59e0b;"></i>Reporte CES — Prácticas Preprofesionales</h4>
        <p>Cumplimiento Art. 88 LOES · <?= htmlspecialchars($instNombre) ?></p>
      </div>
      <div class="d-flex gap-2 flex-wrap">
        <a href="?periodo=<?= $idPer ?>&carrera=<?= $idCar ?>&export=excel"
           class="btn btn-sm" style="background:#1e6f1e;color:#fff;border:none;">
          <i class="fa fa-file-excel me-1"></i>Exportar Excel
        </a>
        <a href="?periodo=<?= $idPer ?>&carrera=<?= $idCar ?>&export=csv"
           class="btn btn-sm btn-outline-secondary">
          <i class="fa fa-download me-1"></i>CSV
        </a>
        <button onclick="window.print()" class="btn btn-sm btn-outline-secondary">
          <i class="fa fa-print me-1"></i>Imprimir
        </button>
      </div>
    </div>

    <!-- Filtros -->
    <form method="GET" class="d-flex gap-2 mb-4 flex-wrap align-items-end"
          style="background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 18px;">
      <div>
        <label class="form-label">Período académico</label>
        <select name="periodo" class="form-select form-select-sm" style="min-width:160px;">
          <option value="0">Todos los períodos</option>
          <?php foreach($periodos as $p): ?>
          <option value="<?= $p['id_periodo'] ?>" <?= $idPer==$p['id_periodo']?'selected':'' ?>>
            <?= htmlspecialchars($p['nombre']) ?>
          </option>
          <?php endforeach; ?>
        </select>
      </div>
      <div>
        <label class="form-label">Carrera</label>
        <select name="carrera" class="form-select form-select-sm" style="min-width:200px;">
          <option value="0">Todas las carreras</option>
          <?php foreach($carreras as $c): ?>
          <option value="<?= $c['id_carrera'] ?>" <?= $idCar==$c['id_carrera']?'selected':'' ?>>
            <?= htmlspecialchars($c['nombre']) ?>
          </option>
          <?php endforeach; ?>
        </select>
      </div>
      <button type="submit" class="btn btn-primary btn-sm"><i class="fa fa-filter me-1"></i>Aplicar</button>
    </form>

    <!-- ENCABEZADO OFICIAL -->
    <div class="tbl-wrap p-4 mb-4" style="border-left:5px solid #f59e0b;">
      <div class="row align-items-center g-3">
        <div class="col-auto">
          <div style="width:64px;height:64px;background:#1a3a6b;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28px;">🎓</div>
        </div>
        <div class="col">
          <div style="font-size:18px;font-weight:900;color:var(--text);"><?= htmlspecialchars($instNombre) ?></div>
          <div style="font-size:13px;color:var(--text-2);">Reporte de Prácticas Preprofesionales — Cumplimiento CES</div>
          <div style="font-size:12px;color:var(--text-2);margin-top:4px;">
            <i class="fa fa-calendar me-1"></i>
            Período: <strong style="color:var(--accent);"><?= htmlspecialchars($perNombre ?: 'Todos') ?></strong>
            <?php if($perInicio): ?>
            &nbsp;·&nbsp; <?= date('d/m/Y',strtotime($perInicio)) ?> al <?= date('d/m/Y',strtotime($perFin)) ?>
            <?php endif; ?>
            &nbsp;·&nbsp; Emitido: <?= date('d/m/Y H:i') ?>
          </div>
        </div>
        <div class="col-auto">
          <div style="background:#f59e0b18;border:2px solid #f59e0b;border-radius:var(--r-lg);padding:10px 16px;text-align:center;">
            <div style="font-size:10px;color:#f59e0b;font-weight:700;text-transform:uppercase;">Referencia legal</div>
            <div style="font-size:13px;font-weight:800;color:var(--text);">Art. 88 LOES</div>
            <div style="font-size:10px;color:var(--text-2);">Reglamento CES</div>
          </div>
        </div>
      </div>
    </div>

    <!-- KPIs GENERALES -->
    <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-2);margin-bottom:12px;">
      Indicadores generales del período
    </div>
    <div class="row g-3 mb-4">
      <?php
      $kpis = [
        ['v'=>$general['total_estudiantes'], 'l'=>'Estudiantes en práctica', 'ico'=>'👥', 'c'=>'var(--accent)'],
        ['v'=>$general['total_empresas'],    'l'=>'Empresas participantes',  'ico'=>'🏢', 'c'=>'#f59e0b'],
        ['v'=>number_format($general['total_horas']).'h', 'l'=>'Total horas acumuladas','ico'=>'⏱️','c'=>'var(--green)'],
        ['v'=>$general['completados'],       'l'=>'Prácticas completadas',   'ico'=>'✅', 'c'=>'var(--green)'],
        ['v'=>$general['cumplen_horas'],     'l'=>'Cumplen horas mínimas',   'ico'=>'📋', 'c'=>'var(--accent)'],
        ['v'=>$general['aprobados']??'—',   'l'=>'Aprobados (≥60)',         'ico'=>'🎓', 'c'=>'var(--green)'],
      ];
      foreach($kpis as $k): ?>
      <div class="col-6 col-lg-2">
        <div class="stat-card" style="flex-direction:column;align-items:flex-start;gap:4px;padding:14px;">
          <div style="font-size:20px;"><?= $k['ico'] ?></div>
          <div style="font-size:22px;font-weight:800;color:<?= $k['c'] ?>;"><?= $k['v'] ?></div>
          <div style="font-size:10px;color:var(--text-2);"><?= $k['l'] ?></div>
        </div>
      </div>
      <?php endforeach; ?>
    </div>

    <!-- POR CARRERA -->
    <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-2);margin-bottom:10px;">
      Cumplimiento por carrera — Art. 88 LOES
    </div>
    <div class="tbl-wrap mb-4">
      <table class="table table-borderless mb-0" style="font-size:12px;">
        <thead>
          <tr>
            <th>Carrera</th><th>Nivel</th><th style="text-align:center;">Hs. mín.</th>
            <th style="text-align:center;">Total</th><th style="text-align:center;">Completados</th>
            <th style="text-align:center;">En progreso</th><th style="text-align:center;">Prom. horas</th>
            <th style="text-align:center;">Prom. nota</th><th style="text-align:center;">% Compl.</th>
            <th style="text-align:center;">Indicador CES</th>
          </tr>
        </thead>
        <tbody>
          <?php if(empty($porCarrera)): ?>
          <tr><td colspan="10" class="text-center text-muted py-4">Sin datos para el período seleccionado.</td></tr>
          <?php else: foreach($porCarrera as $r):
            $pct   = $r['total']>0 ? round($r['completados']/$r['total']*100) : 0;
            $cpct  = $pct>=80?'var(--green)':($pct>=50?'var(--yellow)':'var(--red)');
            $cesOk = $pct>=70 && $r['prom_horas']>=$r['horas_minimas'];
          ?>
          <tr style="border-left:3px solid <?= $cesOk?'var(--green)':'var(--yellow)' ?>;">
            <td>
              <strong><?= htmlspecialchars($r['carrera']) ?></strong>
              <div style="font-size:10px;color:var(--text-2);font-family:monospace;"><?= $r['codigo'] ?></div>
            </td>
            <td style="font-size:11px;color:var(--text-2);"><?= ucfirst(str_replace('_',' ',$r['nivel'])) ?></td>
            <td style="text-align:center;font-weight:700;"><?= $r['horas_minimas'] ?>h</td>
            <td style="text-align:center;font-weight:700;"><?= $r['total'] ?></td>
            <td style="text-align:center;color:var(--green);font-weight:700;"><?= $r['completados'] ?></td>
            <td style="text-align:center;color:var(--yellow);"><?= $r['en_progreso'] ?></td>
            <td style="text-align:center;font-weight:700;color:<?= $r['prom_horas']>=$r['horas_minimas']?'var(--green)':'var(--red)' ?>;">
              <?= $r['prom_horas'] ?>h
            </td>
            <td style="text-align:center;font-weight:700;color:<?= $r['prom_nota']?($r['prom_nota']>=6?'var(--green)':'var(--red)'):'var(--text-2)' ?>;">
              <?= $r['prom_nota'] ?: '—' ?>
            </td>
            <td style="min-width:110px;">
              <div style="display:flex;align-items:center;gap:6px;">
                <div style="flex:1;background:var(--border);border-radius:3px;height:6px;">
                  <div style="width:<?= $pct ?>%;height:6px;border-radius:3px;background:<?= $cpct ?>;"></div>
                </div>
                <span style="font-size:11px;font-weight:700;color:<?= $cpct ?>;"><?= $pct ?>%</span>
              </div>
            </td>
            <td style="text-align:center;font-size:18px;"><?= $cesOk?'✅':'⚠️' ?></td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>

    <!-- CONVENIOS -->
    <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-2);margin-bottom:10px;">
      Convenios de cooperación interinstitucional
    </div>
    <div class="tbl-wrap mb-4">
      <table class="table table-borderless mb-0" style="font-size:12px;">
        <thead>
          <tr><th>N° Convenio</th><th>Empresa</th><th>Sector</th><th>Ubicación</th><th>F. Suscripción</th><th>F. Vencimiento</th><th>Estado</th></tr>
        </thead>
        <tbody>
          <?php if(empty($convenios)): ?>
          <tr><td colspan="7" class="text-center text-muted py-3">Sin convenios registrados.</td></tr>
          <?php else: foreach($convenios as $c): ?>
          <tr>
            <td style="font-family:monospace;font-weight:700;"><?= htmlspecialchars($c['numero_convenio']) ?></td>
            <td><strong><?= htmlspecialchars($c['empresa']) ?></strong></td>
            <td><span style="font-size:10px;padding:2px 8px;border-radius:10px;border:1px solid var(--border);"><?= ucfirst($c['sector']) ?></span></td>
            <td style="color:var(--text-2);"><?= htmlspecialchars(implode(', ',array_filter([$c['canton']??'',$c['provincia']??'']))) ?: '—' ?></td>
            <td style="color:var(--text-2);"><?= date('d/m/Y',strtotime($c['fecha_suscripcion'])) ?></td>
            <td style="color:<?= strtotime($c['fecha_vencimiento'])<time()?'var(--red)':'var(--text-2)' ?>;"><?= date('d/m/Y',strtotime($c['fecha_vencimiento'])) ?></td>
            <td><span class="badge-estado st-<?= $c['estado'] ?>"><?= $c['estado'] ?></span></td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>

    <!-- NÓMINA -->
    <div style="font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--text-2);margin-bottom:10px;">
      Nómina completa de estudiantes (<?= count($nomina) ?> registros)
    </div>
    <div class="tbl-wrap">
      <table class="table table-borderless mb-0" style="font-size:11px;">
        <thead>
          <tr>
            <th>#</th><th>Estudiante</th><th>Cédula</th><th>Carrera</th>
            <th>Empresa</th><th>Sector</th><th>Área</th>
            <th style="text-align:center;">Hs. req.</th><th style="text-align:center;">Hs. cum.</th>
            <th>Estado</th><th style="text-align:center;">Nota</th><th>Tutor académico</th>
          </tr>
        </thead>
        <tbody>
          <?php if(empty($nomina)): ?>
          <tr><td colspan="12" class="text-center text-muted py-4">Sin registros.</td></tr>
          <?php else: foreach($nomina as $i => $r):
            $aprueba = $r['nota_final'] && $r['nota_final']>=6;
            $nc      = $r['nota_final'] ? ($aprueba?'var(--green)':'var(--red)') : 'var(--text-2)';
          ?>
          <tr>
            <td style="color:var(--text-2);"><?= $i+1 ?></td>
            <td><strong><?= htmlspecialchars($r['estudiante']) ?></strong></td>
            <td style="font-family:monospace;font-size:10px;"><?= $r['cedula'] ?></td>
            <td style="color:var(--text-2);"><?= htmlspecialchars($r['carrera']) ?></td>
            <td><?= htmlspecialchars($r['empresa']) ?></td>
            <td style="font-size:10px;"><?= ucfirst($r['sector']) ?></td>
            <td style="color:var(--text-2);font-size:10px;"><?= htmlspecialchars($r['area_practica']??'—') ?></td>
            <td style="text-align:center;"><?= $r['horas_requeridas'] ?></td>
            <td style="text-align:center;font-weight:700;color:<?= $r['horas_cumplidas']>=$r['horas_requeridas']?'var(--green)':'var(--yellow)' ?>;"><?= $r['horas_cumplidas'] ?></td>
            <td><?= badgeEstado($r['estado']) ?></td>
            <td style="text-align:center;font-weight:800;color:<?= $nc ?>;"><?= $r['nota_final'] ? number_format($r['nota_final'],2) : '—' ?></td>
            <td style="color:var(--text-2);font-size:10px;"><?= htmlspecialchars($r['tutor_academico']??'—') ?></td>
          </tr>
          <?php endforeach; endif; ?>
        </tbody>
      </table>
    </div>

    <!-- Firma -->
    <div class="row g-4 mt-4 mb-4" style="font-size:12px;">
      <div class="col-md-4 text-center">
        <div style="border-top:2px solid var(--border);padding-top:8px;margin-top:40px;">
          <div style="font-weight:700;"><?= htmlspecialchars($user['nombre']) ?></div>
          <div style="color:var(--text-2);">Gestor de Prácticas Preprofesionales</div>
          <div style="color:var(--text-2);"><?= htmlspecialchars($instNombre) ?></div>
        </div>
      </div>
      <div class="col-md-4 text-center">
        <div style="border-top:2px solid var(--border);padding-top:8px;margin-top:40px;">
          <div style="font-weight:700;">______________________________</div>
          <div style="color:var(--text-2);">Coordinador Académico</div>
          <div style="color:var(--text-2);"><?= htmlspecialchars($instNombre) ?></div>
        </div>
      </div>
      <div class="col-md-4 text-center">
        <div style="border-top:2px solid var(--border);padding-top:8px;margin-top:40px;">
          <div style="font-weight:700;">______________________________</div>
          <div style="color:var(--text-2);">Rector/a</div>
          <div style="color:var(--text-2);"><?= htmlspecialchars($instNombre) ?></div>
        </div>
      </div>
    </div>

  </main>
</div>

<style>
@media print {
  .sidebar, .navbar, form { display:none !important; }
  .main-area { padding: 0 !important; }
  body { background:#fff !important; color:#000 !important; }
  .tbl-wrap { border:1px solid #ccc !important; box-shadow:none !important; }
  .stat-card { border:1px solid #ccc !important; }
}
</style>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/js/bootstrap.bundle.min.js"></script>
<script>var BASE_URL='<?= BASE_URL ?>';</script>
<script src="<?= BASE_URL ?>/assets/js/sigvp.js"></script>
</body>
</html>