<?php
// modules/estudiante/generar_ficha_ppp.php
// Versión estudiante — solo puede ver SU PROPIA ficha PPP
require_once __DIR__ . '/../../config/app.php';
require_once __DIR__ . '/../../includes/auth.php';
require_once __DIR__ . '/../../includes/functions.php';
requireRol(ROL_ESTUDIANTE);

$db         = getDB();
$user       = currentUser();
$idUsuario  = $user['id_usuario'] ?? $user['id'] ?? 0;
$idPractica = (int)($_GET['id'] ?? 0);

if (!$idPractica) {
    header('Location: perfil.php');
    exit;
}

// ── Verificar que la práctica pertenece a ESTE estudiante ───────────────────
$stOwn = $db->prepare("
    SELECT pr.id_practica
    FROM   practicas pr
    JOIN   estudiantes e ON e.id_estudiante = pr.id_estudiante
    WHERE  pr.id_practica = :idp
      AND  e.id_usuario   = :idu
    LIMIT 1
");
$stOwn->execute([':idp' => $idPractica, ':idu' => $idUsuario]);
if (!$stOwn->fetch()) {
    http_response_code(403);
    die('
    <div style="font-family:sans-serif;text-align:center;margin-top:80px;">
      <div style="font-size:48px;">🔒</div>
      <h2 style="color:#dc2626;">Acceso denegado</h2>
      <p style="color:#6b7280;">Esta práctica no te pertenece.</p>
      <a href="perfil.php" style="display:inline-block;margin-top:16px;padding:10px 24px;
         background:#2563eb;color:#fff;border-radius:8px;text-decoration:none;">
        ← Volver a mi perfil
      </a>
    </div>');
}

// El estudiante NO puede editar campos
$puedeEditar = false;

// ── Logo e nombre del instituto ───────────────────────────────────────────
$idInst     = instId();
$stInst     = $db->prepare("SELECT * FROM institutos WHERE id_instituto = :id LIMIT 1");
$stInst->execute([':id' => $idInst ?: 1]);
$instData   = $stInst->fetch() ?: [];
$logoFile   = $instData['logo'] ?? '';
$instNombre = $instData['nombre'] ?? 'INSTITUTO SUPERIOR TECNOLÓGICO TECNÓPOLIS';
$logoUrl    = $logoFile ? BASE_URL . '/uploads/institutos/' . $logoFile : '';

// ── Detectar si columna jornada_horario existe ────────────────────────────
$tieneJornada = false;
try {
    $chk = $db->query("SELECT jornada_horario FROM practicas LIMIT 1");
    $tieneJornada = ($chk !== false);
} catch (Throwable) { $tieneJornada = false; }

$colJornada = $tieneJornada
    ? "pr.jornada_horario AS prac_jornada,"
    : "'' AS prac_jornada,";

// ── Consulta principal ────────────────────────────────────────────────────
$st = $db->prepare("
    SELECT
        e.id_estudiante           AS id_est,
        u.nombres                 AS est_nombres,
        u.apellidos               AS est_apellidos,
        u.cedula                  AS est_cedula,
        u.telefono                AS est_telefono,
        u.email                   AS est_email,
        me.genero                 AS est_genero,
        me.fecha_nacimiento       AS est_fn,
        me.edad                   AS est_edad,
        me.lugar_nacimiento       AS est_lugar_nac,
        me.domicilio              AS est_domicilio,
        me.perfil_laboral         AS est_perfil_laboral,
        me.ubicacion_maps         AS est_ubicacion_maps,
        mfs.estado_civil          AS est_estado_civil,
        c.nombre                  AS carrera_nombre,
        pa.nombre                 AS periodo_nombre,
        e.semestre_actual         AS semestre,
        e.codigo_estudiante       AS cod_est,
        pr.id_practica,
        pr.fecha_inicio           AS prac_inicio,
        pr.fecha_fin              AS prac_fin,
        pr.horas_requeridas       AS prac_horas_req,
        pr.horas_cumplidas        AS prac_horas_cum,
        pr.estado                 AS prac_estado,
        pr.area_practica          AS prac_area,
        pr.cargo_practica         AS prac_cargo,
        $colJornada
        pr.nombre_tutor_empresa   AS prac_te_nombre,
        pr.email_tutor_empresa    AS prac_te_email,
        pr.telefono_tutor_empresa AS prac_te_tel,
        pr.observaciones          AS prac_obs,
        em.razon_social           AS emp_razon,
        em.ruc                    AS emp_ruc,
        em.telefono               AS emp_telefono,
        em.email_contacto         AS emp_email,
        em.direccion              AS emp_direccion,
        em.canton                 AS emp_canton,
        em.provincia              AS emp_provincia,
        em.sector                 AS emp_sector,
        em.actividad_economica    AS emp_actividad,
        em.nombre_representante   AS emp_rep_nombre,
        em.cargo_representante    AS emp_rep_cargo,
        ute.nombres               AS te_nombres,
        ute.apellidos             AS te_apellidos,
        ute.cedula                AS te_cedula,
        ute.telefono              AS te_telefono,
        ute.email                 AS te_email,
        t.especialidad            AS te_especialidad,
        t.titulo_academico        AS te_titulo,
        uta.nombres               AS ta_nombres,
        uta.apellidos             AS ta_apellidos,
        uta.cedula                AS ta_cedula,
        uta.email                 AS ta_email
    FROM   practicas pr
    JOIN   estudiantes e    ON e.id_estudiante   = pr.id_estudiante
    JOIN   usuarios u       ON u.id_usuario      = e.id_usuario
    JOIN   carreras c       ON c.id_carrera      = e.id_carrera
    LEFT JOIN periodos_academicos pa  ON pa.id_periodo    = pr.id_periodo
    LEFT JOIN mat_estudiantes me      ON me.id_estudiante = e.id_estudiante
    LEFT JOIN mat_ficha_socioeconomica mfs ON mfs.id_estudiante = e.id_estudiante
    JOIN   empresas em      ON em.id_empresa     = pr.id_empresa
    LEFT JOIN tutores t     ON t.id_tutor        = pr.id_tutor
    LEFT JOIN usuarios ute  ON ute.id_usuario    = t.id_usuario
    LEFT JOIN coordinadores co  ON co.id_coordinador = pr.id_coordinador
    LEFT JOIN usuarios uta  ON uta.id_usuario    = co.id_usuario
    WHERE  pr.id_practica = :id
");
$st->execute([':id' => $idPractica]);
$d = $st->fetch();
if (!$d) {
    header('Location: perfil.php');
    exit;
}

$idEstReal = (int)($d['id_est'] ?? 0);
// $puedeEditar ya definido arriba como false para estudiante

// ── Helpers ───────────────────────────────────────────────────────────────
function calcularEdad(?string $fn): string {
    if (!$fn) return '&nbsp;';
    try { return (string)(new DateTime())->diff(new DateTime($fn))->y; }
    catch (Throwable) { return '&nbsp;'; }
}
function fld(?string $v, string $def = '&nbsp;'): string {
    $v = trim($v ?? '');
    return $v !== '' ? htmlspecialchars($v) : $def;
}
function fechaEs(?string $f): string {
    if (!$f) return '&nbsp;';
    try { return (new DateTime($f))->format('d/m/Y'); }
    catch(Throwable) { return htmlspecialchars($f); }
}

$edadMostrar = calcularEdad($d['est_fn']);
if ($edadMostrar === '&nbsp;' && !empty($d['est_edad']))
    $edadMostrar = htmlspecialchars($d['est_edad']);

$genero = match($d['est_genero'] ?? '') { 'M'=>'MASCULINO','F'=>'FEMENINO', default=>'&nbsp;' };
$sector = strtolower($d['emp_sector'] ?? 'privado');
$esPub  = $sector === 'publico'  ? '✓' : '☐';
$esPriv = ($sector === 'privado' || $sector === '') ? '✓' : '☐';
$esMix  = $sector === 'mixto'    ? '✓' : '☐';

$te_nombre = trim(($d['te_apellidos']??'').' '.($d['te_nombres']??''));
if ($te_nombre === ' ' || $te_nombre === '') $te_nombre = $d['prac_te_nombre'] ?? '';
$te_email  = $d['te_email'] ?: $d['prac_te_email'];
$te_tel    = $d['te_telefono'] ?: $d['prac_te_tel'];

$ciudad = trim(($d['emp_canton']??'').($d['emp_provincia'] ? ', '.$d['emp_provincia'] : ''));

$faltanCampos = empty(trim($d['est_estado_civil']  ?? ''))
             || empty(trim($d['prac_jornada']       ?? ''))
             || empty(trim($d['est_ubicacion_maps'] ?? ''));
?>
<!DOCTYPE html><html lang="es">
<head>
<meta charset="UTF-8">
<title>Ficha PPP — <?=htmlspecialchars($d['est_apellidos'].' '.$d['est_nombres'])?></title>
<style>
*{margin:0;padding:0;box-sizing:border-box;}
body{font-family:Arial,sans-serif;font-size:9.5pt;color:#000;background:#f1f5f9;}
.btn-print{position:fixed;top:14px;right:18px;z-index:999;background:#1a73e8;color:#fff;border:none;
  border-radius:6px;padding:10px 22px;font-size:13px;cursor:pointer;font-weight:600;
  box-shadow:0 2px 8px rgba(0,0,0,.25);}
.btn-print:hover{background:#1558b0;}
.page{width:210mm;min-height:297mm;margin:0 auto;padding:12mm 11mm;background:#fff;
  box-shadow:0 2px 16px rgba(0,0,0,.12);}
.header-inst{display:flex;align-items:center;border:2px solid #000;padding:6px 10px;
  margin-bottom:3px;gap:12px;}
.header-logo{flex:0 0 auto;}
.header-logo img{width:72px;height:72px;object-fit:contain;}
.header-text{flex:1;text-align:center;}
.header-text .inst{font-size:12pt;font-weight:bold;letter-spacing:.5px;}
.header-text .sub{font-size:10.5pt;font-weight:bold;}
.header-text .title{font-size:11pt;font-weight:bold;margin-top:2px;}
.header-code{text-align:right;font-size:8pt;color:#555;margin-bottom:5px;}
.section-header{background:#1f3864;color:#fff;font-weight:bold;font-size:9pt;
  padding:4px 8px;margin-top:5px;letter-spacing:.4px;text-transform:uppercase;}
.form-table{width:100%;border-collapse:collapse;font-size:9pt;}
.form-table td{border:1px solid #888;padding:3px 5px;vertical-align:top;}
.lbl{background:#d6dce4;font-weight:bold;white-space:nowrap;font-size:8.5pt;color:#1f3864;}
.val{min-height:16px;}
.val-area{min-height:55px;}
/* celda vacía resaltada en pantalla */
.val-empty{background:#fff7ed;color:#c2410c;font-style:italic;font-size:8pt;}
.firmas{margin-top:28px;display:flex;justify-content:space-around;font-size:9pt;}
.firma-col{text-align:center;width:40%;}
.firma-line{border-top:1px solid #000;margin-bottom:3px;padding-top:3px;}
.nota{margin-top:8px;font-size:8.5pt;background:#fff8dc;border-left:3px solid #f0a500;padding:4px 8px;}

/* ── Panel FIJO en la parte inferior ── */
.panel-completar{
  position:fixed;bottom:0;left:0;right:0;z-index:1000;
  background:#fffbeb;border-top:3px solid #f59e0b;
  padding:10px 24px 12px;box-shadow:0 -4px 20px rgba(0,0,0,.15);
}
.panel-completar .pc-header{
  display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;
}
.panel-completar h3{font-size:13px;font-weight:700;color:#92400e;margin:0;}
.pc-toggle{background:none;border:none;font-size:18px;cursor:pointer;color:#92400e;
  line-height:1;padding:0 4px;}
.pc-body{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;}
.pc-col{flex:1;min-width:180px;}
.pc-col label{display:block;font-size:11px;font-weight:700;color:#78350f;
  text-transform:uppercase;letter-spacing:.03em;margin-bottom:3px;}
.pc-col input,.pc-col select{width:100%;padding:5px 8px;border:1px solid #d97706;
  border-radius:5px;font-size:12px;background:#fff;}
.pc-tip{font-size:10px;color:#92400e;margin-top:2px;}
.btn-save{background:#f59e0b;color:#fff;border:none;border-radius:5px;
  padding:8px 24px;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;flex-shrink:0;}
.btn-save:hover{background:#d97706;}
.alert-ok{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7;
  border-radius:5px;padding:6px 12px;font-size:12px;margin-bottom:6px;}

/* espacio abajo para no tapar la ficha con el panel fijo */
.page-wrapper{padding-bottom:160px;padding-top:16px;}

@media print{
  body{background:#fff;}
  .btn-print,.panel-completar,.page-wrapper{padding:0 !important;}
  .page{box-shadow:none;margin:0;padding:9mm 9mm;}
  .val-empty{background:#fff !important;color:#000 !important;font-style:normal !important;}
  @page{size:A4;margin:0;}
}
</style>
</head>
<body>
<button class="btn-print" onclick="window.print()">🖨️ Imprimir / Guardar PDF</button>

<!-- ══ PANEL FIJO INFERIOR — completar datos ══════════════════════════════ -->
<?php if ($puedeEditar && $faltanCampos): ?>
<div class="panel-completar" id="panelComp">
  <div class="pc-header">
    <h3>⚠️ Faltan datos — completa antes de imprimir</h3>
    <button class="pc-toggle" onclick="
      var b=document.getElementById('pcBody');
      b.style.display=b.style.display==='none'?'flex':'none';
      this.textContent=b.style.display==='none'?'▲ Mostrar':'▼ Ocultar';
    ">▼ Ocultar</button>
  </div>
  <?php if (isset($_GET['guardado'])): ?>
    <div class="alert-ok">✅ Guardado. <?=$faltanCampos?'Aún quedan campos vacíos.':'Todo completo.'?></div>
  <?php endif; ?>
  <form method="POST">
    <input type="hidden" name="completar" value="1">
    <div class="pc-body" id="pcBody">

      <?php if (empty(trim($d['est_estado_civil'] ?? ''))): ?>
      <div class="pc-col">
        <label>Estado Civil</label>
        <select name="estado_civil">
          <option value="">— Seleccionar —</option>
          <?php foreach(['Soltero/a','Casado/a','Unión libre','Divorciado/a','Viudo/a'] as $op): ?>
            <option value="<?=htmlspecialchars($op)?>"><?=htmlspecialchars($op)?></option>
          <?php endforeach; ?>
        </select>
      </div>
      <?php endif; ?>

      <?php if (empty(trim($d['prac_jornada'] ?? ''))): ?>
      <div class="pc-col">
        <label>Jornada / Horario</label>
        <input type="text" name="jornada_horario"
               placeholder="Ej: Lunes a Viernes 08:00 - 14:00">
      </div>
      <?php endif; ?>

      <?php if (empty(trim($d['est_ubicacion_maps'] ?? ''))): ?>
      <div class="pc-col">
        <label>Google Maps (domicilio)</label>
        <input type="url" name="ubicacion_maps"
               placeholder="https://maps.app.goo.gl/...">
        <div class="pc-tip">Google Maps → dirección → Compartir → Copiar enlace</div>
      </div>
      <?php endif; ?>

      <button type="submit" class="btn-save">💾 Guardar</button>
    </div>
  </form>
</div>
<?php elseif ($puedeEditar && isset($_GET['guardado'])): ?>
<div class="panel-completar" style="background:#d1fae5;border-color:#6ee7b7;">
  <div class="alert-ok" style="margin:0;">✅ Todos los campos completos. Puedes imprimir.</div>
</div>
<?php endif; ?>
<!-- ═══════════════════════════════════════════════════════════════════════ -->

<div class="page-wrapper">
<div class="page">

  <div class="header-inst">
    <div class="header-logo">
      <?php if ($logoUrl): ?>
        <img src="<?=htmlspecialchars($logoUrl)?>" alt="Logo">
      <?php endif; ?>
    </div>
    <div class="header-text">
      <div class="inst"><?=htmlspecialchars($instNombre)?></div>
      <div class="sub">PRÁCTICAS PRE PROFESIONALES</div>
      <div class="title">Ficha del Formulario General</div>
    </div>
  </div>
  <div class="header-code">ISTT-PPP-002A &nbsp;|&nbsp; Práctica #<?=$idPractica?></div>

  <!-- 1. DATOS PERSONALES -->
  <div class="section-header">1. Datos Personales del Estudiante de Prácticas Pre Profesionales</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Apellidos y Nombres Completos:</td>
      <td class="val" colspan="5"><strong><?=fld($d['est_apellidos'].' '.$d['est_nombres'])?></strong></td>
    </tr>
    <tr>
      <td class="lbl">Lugar de Nacimiento:</td>
      <td class="val" colspan="2"><?=fld($d['est_lugar_nac'])?></td>
      <td class="lbl">Fecha de Nacimiento:</td>
      <td class="val" colspan="2"><?=fechaEs($d['est_fn'])?></td>
    </tr>
    <tr>
      <td class="lbl">Edad:</td>
      <td class="val"><?=$edadMostrar?></td>
      <td class="lbl">Sexo:</td>
      <td class="val"><?=$genero?></td>
      <td class="lbl">Estado Civil:</td>
      <td class="val"><?=fld($d['est_estado_civil'])?></td>
    </tr>
    <tr>
      <td class="lbl">Dirección Domiciliaria:</td>
      <td class="val" colspan="5"><?=fld($d['est_domicilio'])?></td>
    </tr>
    <tr>
      <td class="lbl">Teléfono:</td>
      <td class="val"><?=fld($d['est_telefono'])?></td>
      <td class="lbl">Correo Electrónico:</td>
      <td class="val" colspan="3"><?=fld($d['est_email'])?></td>
    </tr>
    <tr>
      <td class="lbl">Cédula de Identidad:</td>
      <td class="val"><?=fld($d['est_cedula'])?></td>
      <td class="lbl">Código Estudiantil:</td>
      <td class="val" colspan="3"><?=fld($d['cod_est'])?></td>
    </tr>
  </table>

  <!-- 2. DATOS ACADÉMICOS -->
  <div class="section-header">2. Datos Académicos del Estudiante de Prácticas Pre Profesionales</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Carrera que estudia:</td>
      <td class="val" colspan="3"><?=fld($d['carrera_nombre'])?></td>
    </tr>
    <tr>
      <td class="lbl">Semestre que estudia:</td>
      <td class="val"><?=$d['semestre'] ? $d['semestre'].'° Nivel' : '&nbsp;'?></td>
      <td class="lbl">Nivel que cursa actualmente:</td>
      <td class="val"><?=$d['semestre'] ? $d['semestre'].'° Nivel' : '&nbsp;'?></td>
    </tr>
    <tr>
      <td class="lbl">Período Académico:</td>
      <td class="val" colspan="3"><?=fld($d['periodo_nombre'])?></td>
    </tr>
  </table>

  <!-- 3. DATOS EMPRESA -->
  <div class="section-header">3. Datos Generales de la Empresa donde Realiza las Prácticas</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Razón Social de la Empresa:</td>
      <td class="val" colspan="3"><strong><?=fld($d['emp_razon'])?></strong></td>
    </tr>
    <tr>
      <td class="lbl">Apellidos y Nombres del Titular:</td>
      <td class="val" colspan="2"><?=fld($d['emp_rep_nombre'])?></td>
      <td class="lbl">Cargo del Titular:</td>
      <td class="val"><?=fld($d['emp_rep_cargo'])?></td>
    </tr>
    <tr>
      <td class="lbl">RUC de la Empresa:</td>
      <td class="val"><?=fld($d['emp_ruc'])?></td>
      <td class="lbl">Actividad / Giro:</td>
      <td class="val" colspan="2"><?=fld($d['emp_actividad'])?></td>
    </tr>
    <tr>
      <td class="lbl">Sector:</td>
      <td class="val" colspan="3">Pública: <?=$esPub?> &nbsp;&nbsp; Privada: <?=$esPriv?> &nbsp;&nbsp; Mixta: <?=$esMix?></td>
    </tr>
    <tr>
      <td class="lbl">¿El estudiante labora en esta empresa?</td>
      <td class="val" colspan="3">SÍ: ☐ &nbsp;&nbsp;&nbsp; NO: ☐</td>
    </tr>
    <tr>
      <td class="lbl">Teléfono de la Empresa:</td>
      <td class="val"><?=fld($d['emp_telefono'])?></td>
      <td class="lbl">Correo Electrónico:</td>
      <td class="val" colspan="2"><?=fld($d['emp_email'])?></td>
    </tr>
    <tr>
      <td class="lbl">Dirección de la Empresa:</td>
      <td class="val"><?=fld($d['emp_direccion'])?></td>
      <td class="lbl">Ciudad:</td>
      <td class="val" colspan="2"><?=fld($ciudad)?></td>
    </tr>
  </table>

  <!-- 4. TUTOR EMPRESARIAL -->
  <div class="section-header">4. Datos Generales del Tutor Empresarial</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Apellidos y Nombres del Tutor(a) Empresarial:</td>
      <td class="val" colspan="3"><?=fld($te_nombre)?></td>
    </tr>
    <tr>
      <td class="lbl">Cargo del Tutor Empresarial:</td>
      <td class="val"><?=fld($d['emp_rep_cargo'])?></td>
      <td class="lbl">Profesión / Especialidad:</td>
      <td class="val"><?=fld($d['te_especialidad'])?></td>
    </tr>
    <tr>
      <td class="lbl">N° Cédula:</td>
      <td class="val"><?=fld($d['te_cedula'])?></td>
      <td class="lbl">N° Celular:</td>
      <td class="val"><?=fld($te_tel)?></td>
    </tr>
    <tr>
      <td class="lbl">Correo Electrónico:</td>
      <td class="val" colspan="3"><?=fld($te_email)?></td>
    </tr>
  </table>

  <!-- 5. TUTOR ACADÉMICO -->
  <div class="section-header">5. Datos de las Prácticas Pre Profesionales del Tutor Académico</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Apellidos y Nombres del Tutor(a) Académico:</td>
      <td class="val" colspan="3"><?=fld(trim(($d['ta_apellidos']??'').' '.($d['ta_nombres']??'')))?></td>
    </tr>
    <tr>
      <td class="lbl">N° Cédula:</td>
      <td class="val"><?=fld($d['ta_cedula'])?></td>
      <td class="lbl">Correo Electrónico:</td>
      <td class="val"><?=fld($d['ta_email'])?></td>
    </tr>
  </table>

  <!-- 6. DATOS DE LAS PRÁCTICAS -->
  <div class="section-header">6. Datos de las Prácticas Pre Profesionales del Estudiante</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Fecha de Inicio:</td>
      <td class="val"><?=fechaEs($d['prac_inicio'])?></td>
      <td class="lbl">Fecha Final:</td>
      <td class="val"><?=fechaEs($d['prac_fin'])?></td>
    </tr>
    <tr>
      <td class="lbl">Horas Requeridas:</td>
      <td class="val"><?=fld($d['prac_horas_req'] ? $d['prac_horas_req'].' horas' : null)?></td>
      <td class="lbl">Horas Cumplidas:</td>
      <td class="val"><?=fld($d['prac_horas_cum'] !== null ? $d['prac_horas_cum'].' horas' : null)?></td>
    </tr>
    <tr>
      <td class="lbl">Área de Prácticas:</td>
      <td class="val"><?=fld($d['prac_area'])?></td>
      <td class="lbl">Cargo / Rol:</td>
      <td class="val"><?=fld($d['prac_cargo'])?></td>
    </tr>
    <tr>
      <td class="lbl">Perfil Laboral:</td>
      <td class="val"><?=fld($d['est_perfil_laboral'])?></td>
      <td class="lbl">Jornada / Horario:</td>
      <?php $j = trim($d['prac_jornada'] ?? ''); ?>
      <td class="val <?=$j===''&&$puedeEditar?'val-empty':''?>">
        <?=$j!==''?fld($j):($puedeEditar?'⬇ Completa en el panel inferior':'&nbsp;')?>
      </td>
    </tr>
    <tr>
      <td class="lbl" style="vertical-align:top;">Funciones Principales del Área<br><small>(escribir 5 actividades)</small>:</td>
      <td class="val val-area" colspan="3">
        <?php
        $obs = trim($d['prac_obs'] ?? '');
        if ($obs) {
            $lineas = array_filter(array_map('trim', explode("\n", $obs)));
            $i = 1;
            foreach ($lineas as $l) echo $i++.'.- '.htmlspecialchars($l).'<br>';
        } else {
            for ($i=1;$i<=5;$i++) echo $i.'.- &nbsp;<br>';
        }
        ?>
      </td>
    </tr>
  </table>

  <!-- 7. UBICACIÓN -->
  <div class="section-header">7. Ubicación de la Empresa</div>
  <table class="form-table">
    <tr>
      <td class="lbl">Dirección exacta:</td>
      <td class="val"><?=fld($d['emp_direccion'])?></td>
      <td class="lbl">Ciudad / Cantón:</td>
      <td class="val"><?=fld($ciudad)?></td>
    </tr>
    <tr>
      <td class="lbl">Croquis / Google Maps:</td>
      <td class="val" colspan="3" style="height:50px;font-size:8.5pt;">
        <?php $maps = trim($d['est_ubicacion_maps'] ?? ''); if ($maps): ?>
          <span style="color:#1a73e8;">📍</span>
          <a href="<?=htmlspecialchars($maps)?>" style="color:#1a73e8;font-size:8pt;">
            <?=htmlspecialchars($maps)?>
          </a>
        <?php elseif ($puedeEditar): ?>
          <span style="color:#c2410c;font-style:italic;font-size:8pt;">
            ⬇ Pega el enlace de Google Maps en el panel inferior
          </span>
        <?php else: ?>
          <span style="color:#999;">[ Adjuntar print de pantalla de Google Maps con punto de referencia ]</span>
        <?php endif; ?>
      </td>
    </tr>
  </table>

  <div class="nota">
    <strong>NOTA:</strong> El estudiante podrá realizar máximo <strong>6 horas al día</strong> como Prácticas Pre Profesionales.
  </div>

  <div class="firmas">
    <div class="firma-col">
      <div style="height:38px;"></div>
      <div class="firma-line"></div>
      <div><?=fld(strtoupper($d['est_apellidos'].' '.$d['est_nombres']))?></div>
      <div style="font-size:8pt;color:#555;">FIRMA DEL ESTUDIANTE</div>
      <div style="font-size:8pt;margin-top:2px;">CC: <?=fld($d['est_cedula'])?></div>
    </div>
    <div class="firma-col">
      <div style="height:38px;"></div>
      <div class="firma-line"></div>
      <div><?=fld(strtoupper(trim(($d['ta_apellidos']??'').' '.($d['ta_nombres']??''))))?></div>
      <div style="font-size:8pt;color:#555;">FIRMA DEL/LA COORDINADOR(A) DE PRÁCTICAS</div>
      <div style="font-size:8pt;margin-top:2px;">CC: <?=fld($d['ta_cedula'])?></div>
    </div>
  </div>

</div><!-- /.page -->
</div><!-- /.page-wrapper -->
</body></html>