<?php
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'config'   . DIRECTORY_SEPARATOR . 'app.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'auth.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'functions.php';
require_once __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'flash.php';
requireRol(ROL_TUTOR);
$idInst = instId();

$user      = currentUser();
$db        = getDB();
$pageTitle = 'Evaluaciones';

// Obtener tutor
$stTutor = $db->prepare("SELECT id_tutor FROM tutores WHERE id_usuario = :uid");
$stTutor->execute([':uid' => $user['id']]);
$tutor = $stTutor->fetch();

$practicas = [];
$stats = ['pendientes' => 0, 'calificadas' => 0, 'informe_enviado' => 0, 'total' => 0];
$periodoActivo = null;
if ($tutor) {
    $stPa = $db->prepare("SELECT nombre FROM periodos_academicos WHERE activo = 1 LIMIT 1");
    $stPa->execute();
    $periodoActivo = $stPa->fetchColumn();
}

if ($tutor) {
    $stPr = $db->prepare("
        SELECT
            pr.id_practica,
            pr.estado,
            pr.nota_tutor_academico,
            pr.nota_tutor_empresa,
            pr.nota_final,
            pr.area_practica,
            pr.cargo_practica,
            pr.fecha_inicio,
            pr.fecha_fin,
            pr.horas_requeridas,
            pr.horas_cumplidas,
            CONCAT(uu.apellidos, ' ', uu.nombres) AS estudiante_nombre,
            uu.email                               AS estudiante_email,
            c.nombre                               AS carrera,
            em.razon_social                        AS empresa,
            em.nombre_representante                AS rep_empresa,
            pe.nombre                              AS periodo,
            -- informe
            inf.id_informe,
            inf.estado_tutor                       AS inf_estado,
            inf.observacion_tutor                  AS inf_obs,
            inf.fecha_entrega                      AS inf_fecha,
            -- bitácoras
            (SELECT COUNT(*) FROM bitacoras b WHERE b.id_practica = pr.id_practica) AS bits_total,
            (SELECT COUNT(*) FROM bitacoras b WHERE b.id_practica = pr.id_practica AND b.estado = 'validada') AS bits_validadas
        FROM   practicas pr
        JOIN   estudiantes est ON est.id_estudiante = pr.id_estudiante
        JOIN   usuarios uu     ON uu.id_usuario     = est.id_usuario
        JOIN   carreras c      ON c.id_carrera      = est.id_carrera
        JOIN   empresas em     ON em.id_empresa     = pr.id_empresa
        JOIN   periodos_academicos pe ON pe.id_periodo = pr.id_periodo
        LEFT   JOIN informes_finales inf ON inf.id_practica = pr.id_practica
        WHERE  pr.id_tutor = :tid
          AND  pe.activo = 1
          AND  pr.estado IN ('informe_enviado', 'calificado', 'completado', 'en_progreso')
        ORDER  BY
            CASE pr.estado
                WHEN 'informe_enviado' THEN 1
                WHEN 'en_progreso'     THEN 2
                WHEN 'calificado'      THEN 3
                ELSE 4
            END,
            uu.apellidos ASC
    ");
    $stPr->execute([':tid' => $tutor['id_tutor']]);
    $practicas = $stPr->fetchAll();

    foreach ($practicas as $p) {
        $stats['total']++;
        if ($p['estado'] === 'informe_enviado') $stats['informe_enviado']++;
        if ($p['nota_tutor_academico'] !== null) $stats['calificadas']++;
        else $stats['pendientes']++;
    }
}

// ── POST: guardar evaluación ──────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['accion'])) {

    $idPr = (int)($_POST['id_practica'] ?? 0);

    // Verificar que la práctica pertenece a este tutor
    $stChk = $db->prepare("SELECT id_practica, estado FROM practicas WHERE id_practica=:id AND id_tutor=:tid");
    $stChk->execute([':id' => $idPr, ':tid' => $tutor['id_tutor'] ?? 0]);
    $pr = $stChk->fetch();

    if (!$pr) { flashSet('err', 'Práctica no encontrada o sin permiso.'); header('Location: evaluaciones.php'); exit; }

    // ── Guardar nota tutor académico ─────────────────────
    if ($_POST['accion'] === 'calificar') {
        $notaTutor  = isset($_POST['nota_tutor']) && $_POST['nota_tutor'] !== '' ? (float)$_POST['nota_tutor'] : null;
        $notaEmpresa = isset($_POST['nota_empresa']) && $_POST['nota_empresa'] !== '' ? (float)$_POST['nota_empresa'] : null;
        $obs        = trim($_POST['observaciones'] ?? '');

        // Nota final = 70 % tutor académico + 30 % empresa (si ambas existen)
        $notaFinal = null;
        if ($notaTutor !== null && $notaEmpresa !== null) {
            $notaFinal = round($notaTutor * 0.70 + $notaEmpresa * 0.30, 2);
        } elseif ($notaTutor !== null) {
            $notaFinal = $notaTutor; // provisional hasta nota empresa
        }

        $nuevoEstado = ($pr['estado'] === 'informe_enviado') ? 'calificado' : $pr['estado'];

        $db->prepare("
            UPDATE practicas
               SET nota_tutor_academico = :nta,
                   nota_tutor_empresa   = :nte,
                   nota_final           = :nf,
                   estado               = :est
             WHERE id_practica = :id
        ")->execute([
            ':nta' => $notaTutor,
            ':nte' => $notaEmpresa,
            ':nf'  => $notaFinal,
            ':est' => $nuevoEstado,
            ':id'  => $idPr,
        ]);

        // Actualizar estado del informe si existe
        if (!empty($_POST['obs_informe'])) {
            $obsInf = trim($_POST['obs_informe']);
            $db->prepare("
                UPDATE informes_finales
                   SET estado_tutor       = 'calificado',
                       observacion_tutor  = :obs,
                       fecha_revision_tutor = NOW()
                 WHERE id_practica = :id
            ")->execute([':obs' => $obsInf, ':id' => $idPr]);
        }

        registrarAudit($user['id'], 'evaluar_practica', 'practicas', $idPr);

        // ── Notificar a Gestores PPP que el tutor ya calificó ─────
        $stNomEst2 = $db->prepare("
            SELECT CONCAT(uu.apellidos,' ',uu.nombres)
            FROM   practicas pr
            JOIN   estudiantes est ON est.id_estudiante = pr.id_estudiante
            JOIN   usuarios uu     ON uu.id_usuario     = est.id_usuario
            WHERE  pr.id_practica = :id LIMIT 1
        ");
        $stNomEst2->execute([':id' => $idPr]);
        $nomEst2 = $stNomEst2->fetchColumn() ?: "Práctica #{$idPr}";
        $stNotifGest = $db->prepare("
            INSERT INTO notificaciones (id_usuario, tipo, asunto, mensaje)
            VALUES (:uid, 'sistema', :asunto, :msg)
        ");
        $stGestores2 = $db->query("SELECT id_usuario FROM usuarios WHERE id_rol = " . ROL_GESTOR_PPP . " AND activo = 1");
        foreach ($stGestores2->fetchAll() as $gest) {
            $stNotifGest->execute([
                ':uid'    => $gest['id_usuario'],
                ':asunto' => "Tutor calificó a {$nomEst2}",
                ':msg'    => "El tutor {$user['nombre']} registró su evaluación para {$nomEst2} (práctica #{$idPr}). Puedes revisar y completar la calificación final.",
            ]);
        }

        flashSet('ok', 'Evaluación guardada correctamente.');
        header('Location: evaluaciones.php'); exit;
    }

    // ── Aprobar / Observar informe ───────────────────────
    if ($_POST['accion'] === 'revisar_informe') {
        $estadoInf = $_POST['estado_informe'] ?? 'calificado'; // calificado | observado
        $obsInf    = trim($_POST['obs_informe'] ?? '');

        $db->prepare("
            UPDATE informes_finales
               SET estado_tutor       = :est,
                   observacion_tutor  = :obs,
                   fecha_revision_tutor = NOW()
             WHERE id_practica = :id
        ")->execute([':est' => $estadoInf, ':obs' => $obsInf, ':id' => $idPr]);

        registrarAudit($user['id'], 'revisar_informe', 'informes_finales', $idPr);
        flashSet('ok', 'Informe ' . ($estadoInf === 'calificado' ? 'aprobado' : 'marcado con observaciones') . '.');
        header('Location: evaluaciones.php'); exit;
    }
}

// ── Bitácoras pendientes (badge sidebar) ─────────────────────────────────────
$bitsPendientes = 0;
if ($tutor) {
    $stBits = $db->prepare("
        SELECT COUNT(*) FROM bitacoras b
        JOIN practicas pr ON pr.id_practica = b.id_practica
        WHERE pr.id_tutor = :tid AND b.estado = 'enviada'
    ");
    $stBits->execute([':tid' => $tutor['id_tutor']]);
    $bitsPendientes = (int)$stBits->fetchColumn();
}
?>
<?php $paginaActual = 'evaluaciones'; ?>
<!DOCTYPE html>
<html lang="es">
<head><?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'head.php'; ?>
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar.css">
<link rel="stylesheet" href="<?= BASE_URL ?>/assets/css/sidebar-tutor.css">
</head>
<body>
<?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'navbar.php'; ?>

<div class="app-shell">
  <?php include __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'sidebar-tutor.php'; ?>

  <main class="main-area">
    <div class="page-header d-flex justify-content-between align-items-start flex-wrap gap-2">
      <div>
        <h4>Evaluaciones</h4>
        <p>Calificación de prácticas e informes finales</p>
      </div>
      <?php if ($periodoActivo): ?>
      <span style="background:#2ea8ff18;border:1px solid #2ea8ff44;color:#2ea8ff;
                   font-size:12px;font-weight:700;padding:5px 14px;border-radius:20px;
                   white-space:nowrap;align-self:center;">
        <i class="fa fa-calendar-check me-1"></i>Período activo: <?= htmlspecialchars($periodoActivo) ?>
      </span>
      <?php endif; ?>
    </div>
    <?= flashHtml() ?>

    <?php if (!$tutor): ?>
    <div class="alert-dark-danger p-3">
      <i class="fa fa-circle-exclamation me-2"></i>
      Tu perfil de tutor no está configurado. Contacta al administrador.
    </div>

    <?php elseif (empty($practicas)): ?>
    <div class="alert-dark-info p-3">
      <i class="fa fa-info-circle me-2"></i>
      No hay prácticas en estado de evaluación por el momento. Aparecerán aquí cuando los estudiantes envíen su informe final o estén en progreso.
    </div>

    <?php else: ?>

    <!-- Stat cards -->
    <div class="row g-3 mb-4">
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#2ea8ff;"><?= $stats['total'] ?></div><div class="stat-label">Total a evaluar</div></div>
          <div class="stat-icon">📋</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#f7b93e;"><?= $stats['informe_enviado'] ?></div><div class="stat-label">Informes por revisar</div></div>
          <div class="stat-icon">📄</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#ff9d93;"><?= $stats['pendientes'] ?></div><div class="stat-label">Sin calificación</div></div>
          <div class="stat-icon">⏳</div>
        </div>
      </div>
      <div class="col-6 col-lg-3">
        <div class="stat-card">
          <div><div class="stat-num" style="color:#3dffa0;"><?= $stats['calificadas'] ?></div><div class="stat-label">Calificadas</div></div>
          <div class="stat-icon">✅</div>
        </div>
      </div>
    </div>

    <!-- Tabla de evaluaciones -->
    <div class="tbl-wrap">
      <table class="table table-borderless mb-0">
        <thead>
          <tr>
            <th>Estudiante</th>
            <th>Carrera / Empresa</th>
            <th>Período</th>
            <th>Informe</th>
            <th>Bitácoras</th>
            <th>Notas</th>
            <th>Estado</th>
            <th>Acciones</th>
          </tr>
        </thead>
        <tbody>
          <?php foreach ($practicas as $p): ?>
          <tr>
            <!-- Estudiante -->
            <td>
              <div style="font-weight:600;font-size:13px;"><?= htmlspecialchars($p['estudiante_nombre']) ?></div>
              <div style="font-size:11px;color:#8b949e;"><?= htmlspecialchars($p['estudiante_email']) ?></div>
              <?php if ($p['area_practica']): ?>
              <div style="font-size:11px;color:#8b949e;font-style:italic;"><?= htmlspecialchars($p['area_practica']) ?></div>
              <?php endif; ?>
            </td>
            <!-- Carrera / Empresa -->
            <td>
              <div style="font-size:12px;"><?= htmlspecialchars($p['carrera']) ?></div>
              <div style="font-size:11px;color:#8b949e;"><?= htmlspecialchars($p['empresa']) ?></div>
            </td>
            <!-- Período -->
            <td style="font-size:12px;white-space:nowrap;">
              <?= htmlspecialchars($p['periodo']) ?>
            </td>
            <!-- Informe -->
            <td>
              <?php if ($p['id_informe']): ?>
                <span class="badge-estado <?= $p['inf_estado'] === 'calificado' ? 'st-aprobado' : ($p['inf_estado'] === 'observado' ? 'st-calificado' : 'st-postulado') ?>">
                  <?= ucfirst($p['inf_estado'] ?? 'pendiente') ?>
                </span>
                <div style="font-size:10px;color:#8b949e;margin-top:3px;"><?= formatFecha($p['inf_fecha']) ?></div>
              <?php else: ?>
                <span style="color:#8b949e;font-size:12px;">Sin informe</span>
              <?php endif; ?>
            </td>
            <!-- Bitácoras -->
            <td>
              <div style="font-size:12px;">
                <?php
                  $bPct = $p['bits_total'] > 0 ? round($p['bits_validadas'] / $p['bits_total'] * 100) : 0;
                ?>
                <span style="color:<?= $bPct >= 80 ? '#3dffa0' : ($bPct >= 50 ? '#f7b93e' : '#8b949e') ?>;">
                  <?= $p['bits_validadas'] ?>/<?= $p['bits_total'] ?>
                </span>
                <span style="color:#8b949e;"> validadas</span>
              </div>
            </td>
            <!-- Notas -->
            <td style="font-size:12px;">
              <div>
                <span style="color:#8b949e;">Tutor:</span>
                <?php if ($p['nota_tutor_academico'] !== null): ?>
                  <span style="color:#3dffa0;font-weight:700;"><?= number_format($p['nota_tutor_academico'], 2) ?></span>
                <?php else: ?>
                  <span style="color:#8b949e;">—</span>
                <?php endif; ?>
              </div>
              <div>
                <span style="color:#8b949e;">Empresa:</span>
                <?php if ($p['nota_tutor_empresa'] !== null): ?>
                  <span style="color:#c792ea;font-weight:700;"><?= number_format($p['nota_tutor_empresa'], 2) ?></span>
                <?php else: ?>
                  <span style="color:#8b949e;">—</span>
                <?php endif; ?>
              </div>
              <?php if ($p['nota_final'] !== null): ?>
              <div style="margin-top:3px;border-top:1px solid #30363d;padding-top:3px;">
                <span style="color:#8b949e;">Final:</span>
                <span style="color:#f7b93e;font-weight:700;font-size:13px;"><?= number_format($p['nota_final'], 2) ?></span>
              </div>
              <?php endif; ?>
            </td>
            <!-- Estado -->
            <td><?= badgeEstado($p['estado']) ?></td>
            <!-- Acciones -->
            <td>
              <div class="d-flex gap-1 flex-column">
                <button class="btn btn-sm btn-primary btn-evaluar"
                  data-id="<?= $p['id_practica'] ?>"
                  data-nombre="<?= htmlspecialchars($p['estudiante_nombre']) ?>"
                  data-nta="<?= $p['nota_tutor_academico'] ?? '' ?>"
                  data-nte="<?= $p['nota_tutor_empresa'] ?? '' ?>"
                  data-obs="<?= htmlspecialchars($p['inf_obs'] ?? '') ?>">
                  <i class="fa fa-star fa-xs me-1"></i>Calificar
                </button>
                <?php if ($p['id_informe'] && $p['inf_estado'] === 'pendiente'): ?>
                <button class="btn btn-sm btn-outline-secondary btn-revisar-inf"
                  data-id="<?= $p['id_practica'] ?>"
                  data-nombre="<?= htmlspecialchars($p['estudiante_nombre']) ?>">
                  <i class="fa fa-file-circle-check fa-xs me-1"></i>Revisar informe
                </button>
                <?php endif; ?>
                <a href="evaluacion_satisfaccion.php?id=<?= $p['id_practica'] ?>"
                   class="btn btn-sm btn-outline-warning">
                  <i class="fa fa-heart fa-xs me-1"></i>Evaluación satisfacción
                </a>
              </div>
            </td>
          </tr>
          <?php endforeach; ?>
        </tbody>
      </table>
    </div>

    <!-- ── Leyenda de cálculo de nota ── -->
    <div class="alert-dark-info p-3 mt-3" style="font-size:12px;">
      <i class="fa fa-circle-info me-2"></i>
      <strong>Fórmula de nota final:</strong> &nbsp;Tutor académico × 70 % + Tutor empresa × 30 %
      &nbsp;·&nbsp; Escala 0 – 10.
    </div>

    <?php endif; ?>
  </main>
</div>

<!-- ── Modal: Calificar ─────────────────────────────────────────────── -->
<div class="modal fade" id="modalEvaluar" tabindex="-1">
  <div class="modal-dialog modal-md">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title"><i class="fa fa-star me-2" style="color:#f7b93e;"></i>Calificar: <span id="me-nombre"></span></h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <form method="POST">
        <input type="hidden" name="accion" value="calificar">
        <input type="hidden" name="id_practica" id="me-id">
        <div class="modal-body">
          <div class="row g-3">
            <div class="col-6">
              <label class="form-label">Nota tutor académico <span style="color:#ff9d93;">*</span></label>
              <input type="number" name="nota_tutor" id="me-nta"
                     class="form-control" min="0" max="10" step="0.01"
                     placeholder="0.00 – 10.00">
              <div style="font-size:10px;color:#8b949e;margin-top:4px;">Pondera 70 % en nota final</div>
            </div>
            <div class="col-6">
              <label class="form-label">Nota tutor empresa</label>
              <input type="number" name="nota_empresa" id="me-nte"
                     class="form-control" min="0" max="10" step="0.01"
                     placeholder="0.00 – 10.00">
              <div style="font-size:10px;color:#8b949e;margin-top:4px;">Pondera 30 % en nota final</div>
            </div>
          </div>

          <!-- Preview nota final -->
          <div id="me-preview" class="mt-3 p-3 text-center" style="background:#0d1117;border-radius:8px;border:1px solid #30363d;display:none;">
            <div style="font-size:11px;color:#8b949e;margin-bottom:4px;">NOTA FINAL CALCULADA</div>
            <div id="me-preview-val" style="font-size:32px;font-weight:700;color:#f7b93e;"></div>
            <div style="font-size:10px;color:#8b949e;">(70 % académico + 30 % empresa)</div>
          </div>

          <div class="mt-3">
            <label class="form-label">Observaciones del informe (opcional)</label>
            <textarea name="obs_informe" id="me-obs" class="form-control" rows="3"
                      placeholder="Retroalimentación para el estudiante..."></textarea>
          </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
          <button type="submit" class="btn btn-primary"><i class="fa fa-floppy-disk me-1"></i>Guardar calificación</button>
        </div>
      </form>
    </div>
  </div>
</div>

<!-- ── Modal: Revisar informe ──────────────────────────────────────── -->
<div class="modal fade" id="modalInforme" tabindex="-1">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title"><i class="fa fa-file-circle-check me-2" style="color:#2ea8ff;"></i>Revisar informe: <span id="mi-nombre"></span></h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
      </div>
      <form method="POST">
        <input type="hidden" name="accion" value="revisar_informe">
        <input type="hidden" name="id_practica" id="mi-id">
        <div class="modal-body">
          <div class="mb-3">
            <label class="form-label">Resultado de la revisión</label>
            <div class="d-flex gap-2">
              <div class="form-check flex-fill p-0">
                <input type="radio" name="estado_informe" id="inf-aprobado" value="calificado" class="d-none" required>
                <label for="inf-aprobado" class="btn btn-outline-secondary w-100 btn-radio-est" data-val="calificado">
                  <i class="fa fa-circle-check me-1" style="color:#3dffa0;"></i>Aprobado
                </label>
              </div>
              <div class="form-check flex-fill p-0">
                <input type="radio" name="estado_informe" id="inf-observado" value="observado" class="d-none">
                <label for="inf-observado" class="btn btn-outline-secondary w-100 btn-radio-est" data-val="observado">
                  <i class="fa fa-triangle-exclamation me-1" style="color:#f7b93e;"></i>Con observaciones
                </label>
              </div>
            </div>
          </div>
          <div class="mb-3">
            <label class="form-label">Observaciones / Retroalimentación</label>
            <textarea name="obs_informe" class="form-control" rows="4"
                      placeholder="Detalle correcciones o comentarios al estudiante..."></textarea>
          </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="modal">Cancelar</button>
          <button type="submit" class="btn btn-primary"><i class="fa fa-floppy-disk me-1"></i>Guardar revisión</button>
        </div>
      </form>
    </div>
  </div>
</div>

<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>
$(function () {

  // ── Abrir modal calificar ──────────────────────────────
  $(document).on('click', '.btn-evaluar', function () {
    var id  = $(this).data('id');
    var nom = $(this).data('nombre');
    var nta = $(this).data('nta');
    var nte = $(this).data('nte');
    var obs = $(this).data('obs');
    $('#me-id').val(id);
    $('#me-nombre').text(nom);
    $('#me-nta').val(nta !== '' ? parseFloat(nta).toFixed(2) : '');
    $('#me-nte').val(nte !== '' ? parseFloat(nte).toFixed(2) : '');
    $('#me-obs').val(obs || '');
    calcPreview();
    new bootstrap.Modal('#modalEvaluar').show();
  });

  // ── Calcular preview nota final ───────────────────────
  function calcPreview() {
    var nta = parseFloat($('#me-nta').val());
    var nte = parseFloat($('#me-nte').val());
    if (!isNaN(nta) && !isNaN(nte)) {
      var final = (nta * 0.70 + nte * 0.30).toFixed(2);
      $('#me-preview-val').text(final);
      $('#me-preview').show();
    } else if (!isNaN(nta)) {
      $('#me-preview-val').text(nta.toFixed(2) + ' *');
      $('#me-preview').show();
    } else {
      $('#me-preview').hide();
    }
  }
  $(document).on('input', '#me-nta, #me-nte', calcPreview);

  // ── Abrir modal revisar informe ───────────────────────
  $(document).on('click', '.btn-revisar-inf', function () {
    $('#mi-id').val($(this).data('id'));
    $('#mi-nombre').text($(this).data('nombre'));
    // Reset selección
    $('.btn-radio-est').removeClass('active').css({'border-color':'','color':''});
    $('input[name="estado_informe"]').prop('checked', false);
    new bootstrap.Modal('#modalInforme').show();
  });

  // ── Toggle visual radio buttons ───────────────────────
  $(document).on('click', '.btn-radio-est', function () {
    $('.btn-radio-est').removeClass('active').css({'background':'', 'border-color':'#30363d', 'color':''});
    $(this).addClass('active');
    var val = $(this).data('val');
    if (val === 'calificado') {
      $(this).css({'background':'#3dffa015', 'border-color':'#3dffa0', 'color':'#3dffa0'});
      $('#inf-aprobado').prop('checked', true);
    } else {
      $(this).css({'background':'#f7b93e15', 'border-color':'#f7b93e', 'color':'#f7b93e'});
      $('#inf-observado').prop('checked', true);
    }
  });

});
</script>
</body>
</html>