{"id":5669,"date":"2026-06-18T13:08:20","date_gmt":"2026-06-18T12:08:20","guid":{"rendered":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/?page_id=5669"},"modified":"2026-06-18T15:20:28","modified_gmt":"2026-06-18T14:20:28","slug":"practicas-y-titulaciones","status":"publish","type":"page","link":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/practicas-y-titulaciones\/","title":{"rendered":"Pr\u00e1cticas y Titulaciones"},"content":{"rendered":"<style>\r\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n  :root {\r\n    --azul:       #1a4f8a;\r\n    --azul-claro: #e8f0fa;\r\n    --verde:      #2a6b3c;\r\n    --verde-claro:#e6f4ec;\r\n    --gris-bg:    #f5f6f8;\r\n    --gris-borde: #d8dce4;\r\n    --gris-texto: #5a6272;\r\n    --texto:      #1c2030;\r\n    --blanco:     #ffffff;\r\n    --radio:      8px;\r\n    --sombra:     0 1px 3px rgba(0,0,0,0.08);\r\n  }\r\n\r\n  body {\r\n    font-family: system-ui, -apple-system, \"Segoe UI\", Helvetica, Arial, sans-serif;\r\n    background: var(--gris-bg);\r\n    color: var(--texto);\r\n    min-height: 100vh;\r\n    padding: 2rem 1rem;\r\n  }\r\n\r\n  .contenedor { max-width: 900px; margin: 0 auto; }\r\n\r\n  header {\r\n    margin-bottom: 2rem;\r\n    border-left: 4px solid var(--azul);\r\n    padding-left: 1rem;\r\n  }\r\n  header h1 { font-size: 24px; font-weight: 700; color: var(--azul); margin-bottom: 4px; letter-spacing: -0.01em; }\r\n  header p  { font-size: 15px; color: var(--gris-texto); }\r\n\r\n  \/* Etiqueta FILTROS general *\/\r\n  .filtros-titulo {\r\n    font-size: 13px; font-weight: 800; letter-spacing: 0.12em;\r\n    text-transform: uppercase; color: var(--azul);\r\n    margin-bottom: 10px; display: flex; align-items: center; gap: 10px;\r\n  }\r\n  .filtros-titulo::before, .filtros-titulo::after {\r\n    content: ''; flex: 1; height: 2px; background: var(--azul); opacity: 0.2;\r\n  }\r\n\r\n  \/* Colores de fondo distintos por panel *\/\r\n  .filtros-titulacion { background: #EEF4FB !important; border: 1px solid #C5D9EF !important; }\r\n  .filtros-practicas  { background: #FDF6EC !important; border: 1px solid #F0D9B0 !important; }\r\n\r\n  \/* Etiqueta de secci\u00f3n *\/\r\n  .seccion-label {\r\n    font-size: 11px; font-weight: 700; letter-spacing: 0.08em;\r\n    text-transform: uppercase; color: var(--gris-texto);\r\n    margin-bottom: 10px; display: flex; align-items: center; gap: 8px;\r\n  }\r\n  .seccion-label::after {\r\n    content: ''; flex: 1; height: 1px; background: var(--gris-borde);\r\n  }\r\n\r\n  \/* Panel filtros *\/\r\n  .filtros {\r\n    background: var(--blanco);\r\n    border: 1px solid var(--gris-borde);\r\n    border-radius: var(--radio);\r\n    padding: 1.25rem;\r\n    margin-bottom: 1.25rem;\r\n    box-shadow: var(--sombra);\r\n    display: grid;\r\n    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));\r\n    gap: 1rem;\r\n  }\r\n\r\n  .filtro-grupo label {\r\n    display: block;\r\n    font-size: 12px; font-weight: 600;\r\n    letter-spacing: 0.06em; text-transform: uppercase;\r\n    color: var(--gris-texto); margin-bottom: 6px;\r\n  }\r\n\r\n  .filtro-grupo select {\r\n    width: 100%; padding: 9px 32px 9px 10px; font-size: 15px;\r\n    color: var(--texto);\r\n    background: var(--gris-bg) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235a6272' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\") no-repeat right 10px center;\r\n    border: 1px solid var(--gris-borde); border-radius: var(--radio);\r\n    appearance: none; -webkit-appearance: none; cursor: pointer;\r\n    transition: border-color 0.15s;\r\n  }\r\n  .filtro-grupo select:hover { border-color: var(--azul); }\r\n  .filtro-grupo select:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(26,79,138,0.15); }\r\n\r\n  \/* Barra de acciones *\/\r\n  .barra-resultados {\r\n    display: flex; align-items: center;\r\n    justify-content: space-between;\r\n    flex-wrap: wrap; gap: 8px; margin-bottom: 1rem;\r\n  }\r\n  .barra-izq { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }\r\n  .contador { font-size: 14px; color: var(--gris-texto); }\r\n  .contador strong { color: var(--texto); }\r\n\r\n  .barra-der { display: flex; gap: 8px; flex-wrap: wrap; }\r\n\r\n  .btn-reset {\r\n    font-size: 14px; color: var(--blanco); background: var(--azul);\r\n    border: 1px solid var(--azul); border-radius: var(--radio);\r\n    padding: 6px 16px; cursor: pointer; font-weight: 500;\r\n    transition: background 0.15s;\r\n  }\r\n  .btn-reset:hover { background: #143d6e; border-color: #143d6e; }\r\n\r\n  .btn-pdf {\r\n    font-size: 14px; color: var(--verde); background: var(--verde-claro);\r\n    border: 1px solid #a3ccb0; border-radius: var(--radio);\r\n    padding: 6px 16px; cursor: pointer; font-weight: 500;\r\n    transition: background 0.15s;\r\n    display: flex; align-items: center; gap: 6px;\r\n  }\r\n  .btn-pdf:hover { background: #d0ebd9; }\r\n\r\n  \/* Ordenaci\u00f3n *\/\r\n  .orden-barra {\r\n    display: flex; align-items: center; gap: 10px;\r\n    background: var(--blanco); border: 1px solid var(--gris-borde);\r\n    border-radius: var(--radio); padding: 10px 14px;\r\n    margin-bottom: 1rem; box-shadow: var(--sombra);\r\n    flex-wrap: wrap;\r\n  }\r\n  .orden-barra label { font-size: 12px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--gris-texto); white-space: nowrap; }\r\n  .orden-barra select {\r\n    padding: 6px 28px 6px 10px; font-size: 14px; color: var(--texto);\r\n    background: var(--gris-bg) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235a6272' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\") no-repeat right 8px center;\r\n    border: 1px solid var(--gris-borde); border-radius: var(--radio);\r\n    appearance: none; -webkit-appearance: none; cursor: pointer;\r\n    transition: border-color 0.15s;\r\n  }\r\n  .orden-barra select:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(26,79,138,0.15); }\r\n\r\n  .btn-dir {\r\n    padding: 6px 12px; font-size: 14px; cursor: pointer;\r\n    background: var(--gris-bg); border: 1px solid var(--gris-borde);\r\n    border-radius: var(--radio); color: var(--gris-texto);\r\n    transition: background 0.15s, border-color 0.15s;\r\n    display: flex; align-items: center; gap: 4px;\r\n  }\r\n  .btn-dir:hover { background: #e8e9ed; border-color: #b0b8c8; }\r\n  .btn-dir.activo { background: var(--azul-claro); border-color: var(--azul); color: var(--azul); }\r\n\r\n  \/* Cabecera de grupo *\/\r\n  .grupo-cabecera {\r\n    display: flex; align-items: center; gap: 10px;\r\n    margin: 1.5rem 0 8px;\r\n  }\r\n  .grupo-cabecera:first-child { margin-top: 0; }\r\n  .grupo-titulo {\r\n    font-size: 12px; font-weight: 700; letter-spacing: 0.07em;\r\n    text-transform: uppercase; color: var(--azul);\r\n    white-space: nowrap;\r\n  }\r\n  .grupo-linea { flex: 1; height: 1px; background: var(--gris-borde); }\r\n  .grupo-count {\r\n    font-size: 12px; background: var(--azul-claro); color: var(--azul);\r\n    padding: 2px 9px; border-radius: 20px; font-weight: 600; white-space: nowrap;\r\n  }\r\n\r\n  \/* Tarjetas *\/\r\n  .resultados { display: flex; flex-direction: column; gap: 0; }\r\n\r\n  .tarjeta {\r\n    background: var(--blanco); border: 1px solid var(--gris-borde);\r\n    border-radius: var(--radio); padding: 0.85rem 1.25rem;\r\n    box-shadow: var(--sombra); transition: border-color 0.15s, box-shadow 0.15s;\r\n    margin-bottom: 6px;\r\n  }\r\n  .tarjeta:hover { border-color: #b0bcd4; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }\r\n\r\n  .tarjeta-titulo { font-size: 15px; font-weight: 500; color: var(--texto); line-height: 1.4; }\r\n  .tarjeta-meta { display: none; }\r\n\r\n  .etiqueta {\r\n    font-size: 13px; padding: 3px 10px; border-radius: 20px;\r\n    display: inline-flex; align-items: center; gap: 5px;\r\n    font-weight: 500; white-space: nowrap;\r\n  }\r\n  .et-tipo-grado  { background: var(--azul-claro); color: var(--azul); }\r\n  .et-tipo-master { background: var(--verde-claro); color: var(--verde); }\r\n  .et-rama   { background: #f0f1f5; color: #4a5168; }\r\n  .et-centro { background: #f0f1f5; color: #4a5168; }\r\n  .et-campus { background: #fff8e6; color: #7a5a00; }\r\n  .et-modalidad { background: #fef0f0; color: #9a2020; }\r\n\r\n  \/* Bloque pr\u00e1cticas *\/\r\n  .practicas-bloque {\r\n    margin-top: 10px; padding-top: 9px;\r\n    border-top: 1px dashed var(--gris-borde);\r\n    display: flex; flex-wrap: wrap; gap: 8px; align-items: center;\r\n  }\r\n  .practicas-label {\r\n    font-size: 12px; font-weight: 700; letter-spacing: 0.05em;\r\n    text-transform: uppercase; color: var(--gris-texto);\r\n    margin-right: 2px;\r\n  }\r\n  .prac-si { background: #e8f0fa; color: #1a4f8a; }\r\n  .prac-no { background: #f5f6f8; color: #8a8f9e; }\r\n  .prac-oblig { background: #f0e8f8; color: #6a1f7a; }\r\n  .prac-optat { background: #e8f4fb; color: #1a6a8a; }\r\n  .prac-cuatri { background: #f5f0e8; color: #7a5a1a; }\r\n  .prac-curso { background: #eef5e8; color: #3a6a1a; }\r\n\r\n  .vacio {\r\n    text-align: center; padding: 3.5rem 1rem; color: var(--gris-texto);\r\n    font-size: 15px; background: var(--blanco);\r\n    border: 1px solid var(--gris-borde); border-radius: var(--radio);\r\n  }\r\n  .vacio svg { display: block; margin: 0 auto 1rem; opacity: 0.3; }\r\n\r\n  \/* Pantalla de acceso *\/\r\n  #pantalla-login {\r\n    position: fixed; inset: 0; background: var(--gris-bg);\r\n    display: flex; align-items: center; justify-content: center; z-index: 999;\r\n  }\r\n  .login-caja {\r\n    background: var(--blanco); border: 1px solid var(--gris-borde);\r\n    border-radius: 12px; padding: 2.5rem 2rem;\r\n    width: 100%; max-width: 360px;\r\n    box-shadow: 0 4px 24px rgba(0,0,0,0.10); text-align: center;\r\n  }\r\n  .login-caja h2 { font-size: 18px; font-weight: 600; color: var(--texto); margin-bottom: 6px; }\r\n  .login-caja p  { font-size: 14px; color: var(--gris-texto); margin-bottom: 1.5rem; }\r\n  .login-caja input[type=\"password\"] {\r\n    width: 100%; padding: 10px 12px; font-size: 16px;\r\n    border: 1px solid var(--gris-borde); border-radius: var(--radio);\r\n    margin-bottom: 12px; text-align: center; letter-spacing: 0.2em;\r\n    transition: border-color 0.15s;\r\n  }\r\n  .login-caja input[type=\"password\"]:focus { outline: none; border-color: var(--azul); box-shadow: 0 0 0 3px rgba(26,79,138,0.15); }\r\n  .login-caja input.error { border-color: #c0392b; box-shadow: 0 0 0 3px rgba(192,57,43,0.12); }\r\n  .login-caja button.btn-entrar {\r\n    width: 100%; padding: 10px; font-size: 15px; font-weight: 600;\r\n    color: var(--blanco); background: var(--azul); border: none;\r\n    border-radius: var(--radio); cursor: pointer; transition: background 0.15s;\r\n  }\r\n  .login-caja button.btn-entrar:hover { background: #143d6e; }\r\n  .login-error { font-size: 13px; color: #c0392b; margin-top: 10px; min-height: 18px; }\r\n\r\n  @media (max-width: 480px) {\r\n    .filtros { grid-template-columns: 1fr; }\r\n    header h1 { font-size: 18px; }\r\n  }\r\n\r\n  \/* \u2500\u2500 Estilos de impresi\u00f3n PDF \u2500\u2500 *\/\r\n  @media print {\r\n    body { background: #fff; padding: 0; font-size: 11px; }\r\n    #pantalla-login, .filtros, .barra-resultados, .orden-barra, .barra-der { display: none !important; }\r\n    .contenedor { max-width: 100%; margin: 0; }\r\n    .print-cabecera { display: block !important; margin-bottom: 16px; padding-bottom: 10px; border-bottom: 2px solid #1a4f8a; }\r\n    .tarjeta { box-shadow: none; break-inside: avoid; border: 1px solid #ccc; margin-bottom: 4px; padding: 6px 10px; }\r\n    .tarjeta:hover { box-shadow: none; }\r\n    .tarjeta-titulo { font-size: 11px; font-weight: 500; }\r\n    .tarjeta-meta { display: none !important; }\r\n    .practicas-bloque { border-top: 1px solid #ddd; padding-top: 5px; margin-top: 5px; gap: 5px; }\r\n    .practicas-label { font-size: 9px; }\r\n    .etiqueta { font-size: 9px; padding: 1px 5px; background: #f0f0f0 !important; color: #333 !important; border-radius: 3px; }\r\n    .grupo-cabecera { margin: 12px 0 4px; }\r\n    .grupo-titulo { font-size: 10px; color: #1a4f8a; }\r\n    .grupo-count { font-size: 10px; background: #e8f0fa; color: #1a4f8a; }\r\n    .print-pie { display: block !important; margin-top: 16px; font-size: 10px; color: #888; border-top: 1px solid #ccc; padding-top: 8px; }\r\n  }\r\n  .print-cabecera { display: none; }\r\n  .print-pie { display: none; }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div id=\"pantalla-login\">\r\n  <div class=\"login-caja\">\r\n    <h2>Acceso restringido<\/h2>\r\n    <p>Introduce la contrase\u00f1a para acceder a la oferta de pr\u00e1cticas acad\u00e9micas externas de la Universidad de Le\u00f3n.<\/p>\r\n    <input type=\"password\" id=\"campo-password\" placeholder=\"Contrase\u00f1a\" autofocus onkeydown=\"if(event.key==='Enter') verificar()\">\r\n    <button class=\"btn-entrar\" onclick=\"verificar()\">Entrar<\/button>\r\n    <div class=\"login-error\" id=\"login-error\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"contenedor\" id=\"contenido-principal\" style=\"display:none\">\r\n\r\n  <!-- Cabecera solo visible al imprimir -->\r\n  <div class=\"print-cabecera\" id=\"print-cabecera\"><\/div>\r\n\r\n  <header>\r\n    <h1>Oferta de pr\u00e1cticas en titulaciones de la Universidad de Le\u00f3n<\/h1>\r\n  <\/header>\r\n\r\n  <!-- T\u00edtulo secci\u00f3n filtros -->\r\n  <div class=\"filtros-titulo\">Filtros<\/div>\r\n\r\n  <div class=\"filtros filtros-titulacion\">\r\n    <div style=\"grid-column: 1 \/ -1;\">\r\n      <div class=\"seccion-label\">Filtros de titulaci\u00f3n<\/div>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-titulacion\">Titulaci\u00f3n<\/label>\r\n      <select id=\"f-titulacion\" onchange=\"render()\">\r\n        <option value=\"\">Todas las titulaciones<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-tipo\">Tipo<\/label>\r\n      <select id=\"f-tipo\" onchange=\"render()\">\r\n        <option value=\"\">Grado y M\u00e1ster<\/option>\r\n        <option value=\"Grado\">Grado<\/option>\r\n        <option value=\"M\u00e1ster\">M\u00e1ster<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-rama\">Rama de conocimiento<\/label>\r\n      <select id=\"f-rama\" onchange=\"render()\">\r\n        <option value=\"\">Todas las ramas<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-centro\">Centro \/ Escuela<\/label>\r\n      <select id=\"f-centro\" onchange=\"render()\">\r\n        <option value=\"\">Todos los centros<\/option>\r\n      <\/select>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Barra de ordenaci\u00f3n -->\r\n  <!-- Panel filtros pr\u00e1cticas -->\r\n  <div class=\"filtros filtros-practicas\" id=\"panel-practicas\">\r\n    <div style=\"grid-column: 1 \/ -1;\">\r\n      <div class=\"seccion-label\">Filtros de pr\u00e1cticas<\/div>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-practicas\">Pr\u00e1cticas<\/label>\r\n      <select id=\"f-practicas\" onchange=\"render()\">\r\n        <option value=\"\">S\u00ed y No<\/option>\r\n        <option value=\"S\u00ed\">Con pr\u00e1cticas<\/option>\r\n        <option value=\"No\">Sin pr\u00e1cticas<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-caracter\">Car\u00e1cter<\/label>\r\n      <select id=\"f-caracter\" onchange=\"render()\">\r\n        <option value=\"\">Obligatoria y Optativa<\/option>\r\n        <option value=\"Obligatoria\">Obligatoria<\/option>\r\n        <option value=\"Optativa\">Optativa<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-cuatrimestre\">Cuatrimestre<\/label>\r\n      <select id=\"f-cuatrimestre\" onchange=\"render()\">\r\n        <option value=\"\">Todos<\/option>\r\n        <option value=\"1\u00ba cuatrimestre\">1\u00ba cuatrimestre<\/option>\r\n        <option value=\"2\u00ba cuatrimestre\">2\u00ba cuatrimestre<\/option>\r\n        <option value=\"Anual\">Anual<\/option>\r\n      <\/select>\r\n    <\/div>\r\n    <div class=\"filtro-grupo\">\r\n      <label for=\"f-curso\">Curso pr\u00e1cticas<\/label>\r\n      <select id=\"f-curso\" onchange=\"render()\">\r\n        <option value=\"\">Todos los cursos<\/option>\r\n      <\/select>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"orden-barra\">\r\n    <label for=\"f-orden\">Ordenar por<\/label>\r\n    <select id=\"f-orden\" onchange=\"render()\">\r\n      <option value=\"nombre\">Titulaci\u00f3n (A\u2013Z)<\/option>\r\n      <option value=\"tipo\">Tipo<\/option>\r\n      <option value=\"rama\">Rama de conocimiento<\/option>\r\n      <option value=\"centro\">Centro \/ Escuela<\/option>\r\n      <option value=\"campus\">Campus<\/option>\r\n    <\/select>\r\n    <button class=\"btn-dir\" id=\"btn-dir\" onclick=\"toggleDir()\" title=\"Cambiar direcci\u00f3n\">\r\n      <span id=\"dir-icono\">\u2191<\/span> <span id=\"dir-texto\">Ascendente<\/span>\r\n    <\/button>\r\n  <\/div>\r\n\r\n  <div class=\"barra-resultados\">\r\n    <div class=\"barra-izq\">\r\n      <div class=\"contador\" id=\"contador\"><\/div>\r\n    <\/div>\r\n    <div class=\"barra-der\">\r\n      <button class=\"btn-pdf\" onclick=\"exportarPDF()\">\r\n        <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"12\"\/><line x1=\"9\" y1=\"15\" x2=\"15\" y2=\"15\"\/><\/svg>\r\n        Exportar PDF\r\n      <\/button>\r\n      <button class=\"btn-reset\" onclick=\"resetFiltros()\">\u21ba Restablecer filtros<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"resultados\" id=\"resultados\"><\/div>\r\n\r\n  <div class=\"print-pie\" id=\"print-pie\"><\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\nfunction verificar() {\r\n  const input = document.getElementById('campo-password');\r\n  if (input.value === '2026') {\r\n    document.getElementById('pantalla-login').style.display = 'none';\r\n    document.getElementById('contenido-principal').style.display = 'block';\r\n  } else {\r\n    input.classList.add('error');\r\n    document.getElementById('login-error').textContent = 'Contrase\u00f1a incorrecta. Int\u00e9ntalo de nuevo.';\r\n    input.value = '';\r\n    setTimeout(() => input.classList.remove('error'), 1500);\r\n  }\r\n}\r\n\r\nconst titulaciones = [\r\n  { nombre: \"Grado en Administraci\u00f3n y Direcci\u00f3n de Empresas\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Biolog\u00eda\", tipo: \"Grado\", rama: \"Ciencias\", centro: \"Facultad de Ciencias Biol\u00f3gicas y Ambientales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Biotecnolog\u00eda\", tipo: \"Grado\", rama: \"Ciencias\", centro: \"Facultad de Ciencias Biol\u00f3gicas y Ambientales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ciencia y Tecnolog\u00eda de los Alimentos\", tipo: \"Grado\", rama: \"Ciencias\", centro: \"Facultad de Veterinaria\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ciencias Ambientales\", tipo: \"Grado\", rama: \"Ciencias\", centro: \"Facultad de Ciencias Biol\u00f3gicas y Ambientales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ciencias de la Actividad F\u00edsica y del Deporte\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias de la Actividad F\u00edsica y del Deporte\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ciencias Gastron\u00f3micas\", tipo: \"Grado\", rama: \"Ciencias\", centro: \"Facultad de Veterinaria\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Comercio Internacional\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Derecho\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Derecho\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Econom\u00eda\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Educaci\u00f3n Infantil\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Educaci\u00f3n\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Educaci\u00f3n Primaria\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Educaci\u00f3n\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Educaci\u00f3n Social\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Educaci\u00f3n\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Enfermer\u00eda\", tipo: \"Grado\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"2\u00ba, 3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Enfermer\u00eda (Ponferrada)\", tipo: \"Grado\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"2\u00ba, 3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Filolog\u00eda Moderna - Ingl\u00e9s\", tipo: \"Grado\", rama: \"Arte y Humanidades\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Finanzas\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Fisioterapia\", tipo: \"Grado\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Geograf\u00eda y Ordenaci\u00f3n del Territorio\", tipo: \"Grado\", rama: \"Arte y Humanidades\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Historia\", tipo: \"Grado\", rama: \"Arte y Humanidades\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Historia del Arte\", tipo: \"Grado\", rama: \"Arte y Humanidades\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Informaci\u00f3n y Documentaci\u00f3n\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"A Distancia\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Informaci\u00f3n y Documentaci\u00f3n (en extinci\u00f3n)\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"Semipresencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda Aeroespacial\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Ingenier\u00eda Agraria\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00eda Agraria y Forestal\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda de Datos e Inteligencia Artificial\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda de la Energ\u00eda\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela Superior y T\u00e9cnica de Ingenieros de Minas\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda El\u00e9ctrica\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Ingenier\u00eda en Electr\u00f3nica Industrial y Autom\u00e1tica\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Ingenier\u00eda en Geom\u00e1tica y Topograf\u00eda (en extinci\u00f3n)\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela Superior y T\u00e9cnica de Ingenieros de Minas\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda en Geotecnolog\u00edas y Topograf\u00eda\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela Superior y T\u00e9cnica de Ingenieros de Minas\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: null },\r\n  { nombre: \"Grado en Ingenier\u00eda Forestal y del Medio Natural\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00eda Agraria y Forestal\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda Inform\u00e1tica\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Ingenier\u00eda Mec\u00e1nica\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Ingenier\u00eda Minera\", tipo: \"Grado\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela Superior y T\u00e9cnica de Ingenieros de Minas\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Lengua Espa\u00f1ola y su Literatura\", tipo: \"Grado\", rama: \"Arte y Humanidades\", centro: \"Facultad de Filosof\u00eda y Letras\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"Grado en Marketing e Investigaci\u00f3n de Mercados\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n   { nombre: \"Grado en Nutrici\u00f3n Humana y Diet\u00e9tica\", tipo: \"Grado\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Podolog\u00eda\", tipo: \"Grado\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Ponferrada\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Relaciones Laborales y Recursos Humanos\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias del Trabajo\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Trabajo Social\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Escuela Universitaria de Trabajo Social\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"3\u00ba, 4\u00ba\" },\r\n  { nombre: \"Grado en Turismo\", tipo: \"Grado\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"4\u00ba\" },\r\n  { nombre: \"Grado en Veterinaria\", tipo: \"Grado\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Veterinaria\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"5\u00ba\" },\r\n  { nombre: \"M\u00e1ster Europeo Universitario en Direcci\u00f3n de Empresas\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"2\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario de Investigaci\u00f3n en Ciberseguridad\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario de Investigaci\u00f3n en Ciberseguridad (On-Line)\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Online\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"Anual\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Abogac\u00eda y Procura\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Derecho\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba, 2\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Ciencias Actuariales y Financieras\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"2\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Cooperaci\u00f3n Internacional para el Desarrollo\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Cultura y Pensamiento Europeo: Tradici\u00f3n y Pervivencia\", tipo: \"M\u00e1ster\", rama: \"Arte y Humanidades\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Derecho de la Ciberseguridad y Entorno Digital\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Derecho\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Enfermer\u00eda en Cuidados Cr\u00edticos y Urgencias\", tipo: \"M\u00e1ster\", rama: \"Ciencias de la Salud\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Entrenamiento y Rendimiento Deportivo\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias de la Actividad F\u00edsica y del Deporte\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"Anual\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Formaci\u00f3n del Profesorado de ESO, Bachillerato y FP\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Educaci\u00f3n\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Geoinform\u00e1tica para la Gesti\u00f3n de Recursos Naturales\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00eda Agraria y Forestal\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Gesti\u00f3n de Personal y Pr\u00e1ctica Laboral\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias del Trabajo\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Gesti\u00f3n de Prevenci\u00f3n de Riesgos Laborales\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias del Trabajo\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Ingenier\u00eda Aeron\u00e1utica\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Ingenier\u00eda Industrial\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Ingenier\u00eda Inform\u00e1tica\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Innovaci\u00f3n en Ciencias Biom\u00e9dicas y de la Salud\", tipo: \"M\u00e1ster\", rama: \"Ciencias de la Salud\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Ecolog\u00eda Aplicada y An\u00e1lisis de Datos Ecol\u00f3gicos\", tipo: \"M\u00e1ster\", rama: \"Ciencias\", centro: \"Facultad de Ciencias Biol\u00f3gicas y Ambientales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Fermentaciones Aplicadas a la Industria Alimentaria y Biotecnol\u00f3gica\", tipo: \"M\u00e1ster\", rama: \"Ciencias\", centro: \"Facultad de Veterinaria\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Investigaci\u00f3n de la Diversidad Bot\u00e1nica y Zool\u00f3gica\", tipo: \"M\u00e1ster\", rama: \"Ciencias\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Investigaci\u00f3n en Biotecnolog\u00eda y Biomedicina\", tipo: \"M\u00e1ster\", rama: \"Ciencias\", centro: \"Facultad de Ciencias Biol\u00f3gicas y Ambientales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Investigaci\u00f3n en Psicolog\u00eda y Ciencias de la Educaci\u00f3n\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Ling\u00fc\u00edstica y Ense\u00f1anza del Espa\u00f1ol como Lengua Extranjera\", tipo: \"M\u00e1ster\", rama: \"Arte y Humanidades\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"2\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Orientaci\u00f3n Educativa\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Educaci\u00f3n\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Producci\u00f3n en Industrias Farmac\u00e9uticas\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"2\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Rob\u00f3tica e Inteligencia Artificial\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Unidad de Posgrado\", campus: \"Le\u00f3n\", modalidad: \"Presencial\" , practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Riesgos Naturales\", tipo: \"M\u00e1ster\", rama: \"Ciencias\", centro: \"Facultad de Ciencias Biol\u00f3gicas y Ambientales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Envejecimiento Saludable y Calidad de Vida\", tipo: \"M\u00e1ster\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Le\u00f3n\", modalidad: \"A Distancia\", practicas: true, caracter: \"Optativa\", cuatrimestre: \"2\u00ba cuatrimestre\", curso: \"1\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Investigaci\u00f3n en Atenci\u00f3n Primaria de Salud\", tipo: \"M\u00e1ster\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Le\u00f3n\", modalidad: \"A Distancia\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Investigaci\u00f3n en Ciencias Sociosanitarias\", tipo: \"M\u00e1ster\", rama: \"Ciencias de la Salud\", centro: \"Facultad de Ciencias de la Salud\", campus: \"Le\u00f3n\", modalidad: \"A Distancia\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Investigaci\u00f3n en Administraci\u00f3n y Econom\u00eda de la Empresa\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Ciencias Econ\u00f3micas y Empresariales\", campus: \"Le\u00f3n\", modalidad: \"Presencial\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario Europeo en Derecho, Datos e Inteligencia Artificial\", tipo: \"M\u00e1ster\", rama: \"Ciencias Sociales y Jur\u00eddicas\", centro: \"Facultad de Derecho\", campus: \"Le\u00f3n\", modalidad: \"Presencial\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Incendios Forestales. Ciencia y Gesti\u00f3n Integral\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00eda Agraria y Forestal\", campus: \"Ponferrada\", modalidad: \"Semipresencial\", practicas: true, caracter: \"Obligatoria\", cuatrimestre: \"1\u00ba cuatrimestre\", curso: \"2\u00ba\" },\r\n  { nombre: \"M\u00e1ster Universitario en Ingenier\u00eda Agron\u00f3mica\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00eda Agraria y Forestal\", campus: \"Le\u00f3n\", modalidad: \"Presencial\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n  { nombre: \"M\u00e1ster Universitario en Ingenier\u00eda Minera y de Recursos Energ\u00e9ticos\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela Superior y T\u00e9cnica de Ingenieros de Minas\", campus: \"Le\u00f3n\", modalidad: \"Presencial\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n\r\n  { nombre: \"M\u00e1ster Universitario en Inteligencia de Negocio y Big Data en Entornos Seguros\", tipo: \"M\u00e1ster\", rama: \"Ingenier\u00eda y Arquitectura\", centro: \"Escuela de Ingenier\u00edas Industrial, Inform\u00e1tica y Aeroespacial\", campus: \"Le\u00f3n\", modalidad: \"Presencial\", practicas: false, caracter: null, cuatrimestre: null, curso: null },\r\n];\r\n\r\nlet dirAsc = true;\r\n\r\nfunction poblarSelect(id, valores) {\r\n  const sel = document.getElementById(id);\r\n  [...new Set(valores)].sort((a, b) => a.localeCompare(b, 'es')).forEach(v => {\r\n    const o = document.createElement('option');\r\n    o.value = v; o.textContent = v;\r\n    sel.appendChild(o);\r\n  });\r\n}\r\n\r\npoblarSelect('f-titulacion', titulaciones.map(t => t.nombre));\r\n\r\n\/\/ Poblar cursos (valores \u00fanicos no nulos, separando los compuestos como \"2\u00ba, 3\u00ba, 4\u00ba\")\r\nconst cursosUnicos = [...new Set(\r\n  titulaciones\r\n    .filter(t => t.curso)\r\n    .flatMap(t => t.curso.split(',').map(c => c.trim()))\r\n)].sort((a, b) => a.localeCompare(b, 'es'));\r\nconst selCurso = document.getElementById('f-curso');\r\ncursosUnicos.forEach(c => {\r\n  const o = document.createElement('option');\r\n  o.value = c; o.textContent = c;\r\n  selCurso.appendChild(o);\r\n});\r\npoblarSelect('f-rama',       titulaciones.map(t => t.rama));\r\npoblarSelect('f-centro',     titulaciones.map(t => t.centro));\r\n\r\nfunction toggleDir() {\r\n  dirAsc = !dirAsc;\r\n  document.getElementById('dir-icono').textContent = dirAsc ? '\u2191' : '\u2193';\r\n  document.getElementById('dir-texto').textContent  = dirAsc ? 'Ascendente' : 'Descendente';\r\n  document.getElementById('btn-dir').classList.toggle('activo', !dirAsc);\r\n  render();\r\n}\r\n\r\nfunction getFiltradas() {\r\n  const titulacion = document.getElementById('f-titulacion').value;\r\n  const tipo       = document.getElementById('f-tipo').value;\r\n  const rama       = document.getElementById('f-rama').value;\r\n  const centro     = document.getElementById('f-centro').value;\r\n  const campo      = document.getElementById('f-orden').value;\r\n\r\n  const practicas    = document.getElementById('f-practicas').value;\r\n  const caracter     = document.getElementById('f-caracter').value;\r\n  const cuatrimestre = document.getElementById('f-cuatrimestre').value;\r\n  const curso        = document.getElementById('f-curso').value;\r\n\r\n  const filtradas = titulaciones.filter(t =>\r\n    (!titulacion    || t.nombre === titulacion) &&\r\n    (!tipo          || t.tipo   === tipo) &&\r\n    (!rama          || t.rama   === rama) &&\r\n    (!centro        || t.centro === centro) &&\r\n    (!practicas     || t.practicas === (practicas === 'S\u00ed')) &&\r\n    (!caracter      || t.caracter === caracter) &&\r\n    (!cuatrimestre  || t.cuatrimestre === cuatrimestre) &&\r\n    (!curso         || (t.curso && t.curso.split(',').map(c => c.trim()).includes(curso)))\r\n  );\r\n\r\n  filtradas.sort((a, b) => {\r\n    const cmp = a[campo].localeCompare(b[campo], 'es');\r\n    return dirAsc ? cmp : -cmp;\r\n  });\r\n\r\n  return filtradas;\r\n}\r\n\r\nconst CAMPOS_GRUPO = ['tipo', 'rama', 'centro'];\r\n\r\nfunction tarjetaHTML(t) {\r\n  let pracBlock = '';\r\n  if (t.practicas === true) {\r\n    const curso = t.curso ? `<span class=\"etiqueta prac-curso\">Curso: ${t.curso}<\/span>` : '';\r\n    const cuatri = t.cuatrimestre ? `<span class=\"etiqueta prac-cuatri\">${t.cuatrimestre}<\/span>` : '';\r\n    const car = t.caracter ? `<span class=\"etiqueta ${t.caracter === 'Obligatoria' ? 'prac-oblig' : 'prac-optat'}\">${t.caracter}<\/span>` : '';\r\n    pracBlock = `<div class=\"practicas-bloque\">\r\n      <span class=\"practicas-label\">Pr\u00e1cticas<\/span>\r\n      <span class=\"etiqueta prac-si\">S\u00ed<\/span>\r\n      ${car}${cuatri}${curso}\r\n    <\/div>`;\r\n  } else {\r\n    pracBlock = `<div class=\"practicas-bloque\">\r\n      <span class=\"practicas-label\">Pr\u00e1cticas<\/span>\r\n      <span class=\"etiqueta prac-no\">No<\/span>\r\n    <\/div>`;\r\n  }\r\n  return `<div class=\"tarjeta\"><div class=\"tarjeta-titulo\">${t.nombre}<\/div>${pracBlock}<\/div>`;\r\n}\r\n\r\nfunction render() {\r\n  const filtradas = getFiltradas();\r\n  const campo     = document.getElementById('f-orden').value;\r\n  const nG = filtradas.filter(t => t.tipo === 'Grado').length;\r\n  const nM = filtradas.filter(t => t.tipo === 'M\u00e1ster').length;\r\n  document.getElementById('contador').innerHTML =\r\n    `<strong>${filtradas.length}<\/strong> titulaciones \u2014 <strong>${nG}<\/strong> grados \u00b7 <strong>${nM}<\/strong> m\u00e1steres`;\r\n\r\n  const cont = document.getElementById('resultados');\r\n  if (filtradas.length === 0) {\r\n    cont.innerHTML = `<div class=\"vacio\">\r\n      <svg width=\"40\" height=\"40\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"\/><line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"\/><\/svg>\r\n      No hay titulaciones para los filtros seleccionados.\r\n    <\/div>`;\r\n    return;\r\n  }\r\n\r\n  if (CAMPOS_GRUPO.includes(campo)) {\r\n    \/\/ Agrupar: ordenar alfab\u00e9ticamente dentro de cada grupo\r\n    const grupos = {};\r\n    filtradas.forEach(t => {\r\n      const clave = t[campo];\r\n      if (!grupos[clave]) grupos[clave] = [];\r\n      grupos[clave].push(t);\r\n    });\r\n    \/\/ Ordenar los registros dentro de cada grupo por nombre\r\n    Object.values(grupos).forEach(g => g.sort((a, b) => a.nombre.localeCompare(b.nombre, 'es')));\r\n    \/\/ Ordenar las claves de grupo seg\u00fan direcci\u00f3n elegida\r\n    const claves = Object.keys(grupos).sort((a, b) => {\r\n      const cmp = a.localeCompare(b, 'es');\r\n      return dirAsc ? cmp : -cmp;\r\n    });\r\n\r\n    cont.innerHTML = claves.map(clave => `\r\n      <div class=\"grupo-cabecera\">\r\n        <span class=\"grupo-titulo\">${clave}<\/span>\r\n        <span class=\"grupo-linea\"><\/span>\r\n        <span class=\"grupo-count\">${grupos[clave].length}<\/span>\r\n      <\/div>\r\n      ${grupos[clave].map(tarjetaHTML).join('')}\r\n    `).join('');\r\n  } else {\r\n    cont.innerHTML = filtradas.map(tarjetaHTML).join('');\r\n  }\r\n}\r\n\r\nfunction resetFiltros() {\r\n  ['f-titulacion','f-tipo','f-rama','f-centro','f-practicas','f-caracter','f-cuatrimestre','f-curso'].forEach(id => document.getElementById(id).value = '');\r\n  document.getElementById('f-orden').value = 'nombre';\r\n  dirAsc = true;\r\n  document.getElementById('dir-icono').textContent = '\u2191';\r\n  document.getElementById('dir-texto').textContent  = 'Ascendente';\r\n  document.getElementById('btn-dir').classList.remove('activo');\r\n  render();\r\n}\r\n\r\nfunction exportarPDF() {\r\n  const filtradas = getFiltradas();\r\n  if (filtradas.length === 0) return;\r\n\r\n  \/\/ Construir resumen de filtros activos\r\n  const campos = {\r\n    'f-titulacion': 'Titulaci\u00f3n',\r\n    'f-tipo': 'Tipo',\r\n    'f-rama': 'Rama',\r\n    'f-centro': 'Centro'\r\n  };\r\n  const filtrosActivos = Object.entries(campos)\r\n    .map(([id, label]) => {\r\n      const v = document.getElementById(id).value;\r\n      return v ? `${label}: ${v}` : null;\r\n    })\r\n    .filter(Boolean);\r\n\r\n  const ordenLabel = document.getElementById('f-orden').options[document.getElementById('f-orden').selectedIndex].text;\r\n  const dirLabel   = dirAsc ? 'Ascendente' : 'Descendente';\r\n  const fecha      = new Date().toLocaleDateString('es-ES', { day: '2-digit', month: 'long', year: 'numeric' });\r\n  const nG = filtradas.filter(t => t.tipo === 'Grado').length;\r\n  const nM = filtradas.filter(t => t.tipo === 'M\u00e1ster').length;\r\n\r\n  \/\/ Rellenar cabecera de impresi\u00f3n\r\n  document.getElementById('print-cabecera').innerHTML = `\r\n    <div style=\"display:flex; justify-content:space-between; align-items:flex-start;\">\r\n      <div>\r\n        <div style=\"font-size:18px; font-weight:700; color:#1a4f8a; margin-bottom:3px;\">Oferta Acad\u00e9mica \u2014 Universidad de Le\u00f3n<\/div>\r\n        <div style=\"font-size:11px; color:#5a6272;\">Generado el ${fecha}<\/div>\r\n      <\/div>\r\n      <div style=\"font-size:11px; color:#5a6272; text-align:right;\">\r\n        ${filtradas.length} titulaciones \u00b7 ${nG} grados \u00b7 ${nM} m\u00e1steres\r\n      <\/div>\r\n    <\/div>\r\n    ${filtrosActivos.length ? `<div style=\"margin-top:8px; font-size:11px; color:#4a5168;\"><strong>Filtros:<\/strong> ${filtrosActivos.join(' \u00b7 ')}<\/div>` : ''}\r\n    <div style=\"margin-top:4px; font-size:11px; color:#4a5168;\"><strong>Ordenado por:<\/strong> ${ordenLabel} (${dirLabel})<\/div>\r\n  `;\r\n\r\n  document.getElementById('print-pie').innerHTML =\r\n    `Universidad de Le\u00f3n \u00b7 www.unileon.es \u00b7 Documento generado autom\u00e1ticamente el ${fecha}`;\r\n\r\n  window.print();\r\n}\r\n\r\nrender();\r\n<\/script>\r\n","protected":false},"excerpt":{"rendered":"<p>Acceso restringido Introduce la contrase\u00f1a para acceder a la oferta de pr\u00e1cticas acad\u00e9micas externas de la Universidad de Le\u00f3n. Entrar Oferta de pr\u00e1cticas en titulaciones de la Universidad de Le\u00f3n Filtros Filtros de titulaci\u00f3n Titulaci\u00f3n Todas las titulaciones Tipo Grado y M\u00e1ster Grado M\u00e1ster Rama de conocimiento Todas las ramas Centro \/ Escuela Todos los [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5669","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/pages\/5669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/comments?post=5669"}],"version-history":[{"count":3,"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/pages\/5669\/revisions"}],"predecessor-version":[{"id":5674,"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/pages\/5669\/revisions\/5674"}],"wp:attachment":[{"href":"https:\/\/servicios.unileon.es\/oficina-de-practicas-y-empleabilidad\/wp-json\/wp\/v2\/media?parent=5669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}