
{"id":7532,"date":"2026-06-10T21:51:23","date_gmt":"2026-06-10T21:51:23","guid":{"rendered":"https:\/\/utla.edu.sv\/2026\/?page_id=7532"},"modified":"2026-10-04T15:24:49","modified_gmt":"2026-10-04T15:24:49","slug":"proyecto-de-investigacion-institucional","status":"publish","type":"page","link":"https:\/\/utla.edu.sv\/2026\/proyecto-de-investigacion-institucional\/","title":{"rendered":"PROYECTOS DE INVESTIGACI\u00d3N INSTITUCIONAL"},"content":{"rendered":"\n<!-- ====================================================\n     REPOSITORIO DE INVESTIGACI\u00d3N \u2014 UTLA\n     Dise\u00f1o inmersivo \u00b7 Manual de Marca UTLA 2025\n     Alimentado desde Google Sheets v\u00eda repo-script.js\n\n     \u25ba EFECTOS INCLUIDOS:\n       \u00b7 Hero a pantalla completa con parallax\n       \u00b7 Scroll-snap en secciones principales\n       \u00b7 Reveal (fade + slide) al entrar en viewport\n       \u00b7 Contadores animados en estad\u00edsticas\n       \u00b7 Carrusel horizontal de \u00e1reas de investigaci\u00f3n\n       \u00b7 Barra de b\u00fasqueda sticky\n\n     \u25ba CAMBIAR LA IMAGEN DEL HERO:\n       Busca  --hero-img  en la l\u00ednea ~30 y pon tu URL\n==================================================== -->\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Be+Vietnam+Pro:wght@300;400;500;600;700;800;900&amp;display=swap\" rel=\"stylesheet\">\n\n<style>\n.utla-repo*,.utla-repo*::before,.utla-repo*::after{box-sizing:border-box;margin:0;padding:0;}\n.utla-repo{\n  --azul:#003153;--azul-2:#00406b;--azul-dk:#001f36;\n  --burdeos:#6d222e;--burdeos-lite:#f5e8ea;\n  --celeste:#81c3d7;--gris-bg:#f2f5f8;--gris-line:#e2e8f0;\n  --texto:#1c2b3a;--texto-2:#4a5f72;\n  --verde:#226f54;--morado:#5c4c91;--teal:#1d7a96;\n\n  \/* \u2193\u2193\u2193 IMAGEN DEL HERO \u2193\u2193\u2193 *\/\n  --hero-img:url('https:\/\/utla.edu.sv\/2026\/wp-content\/uploads\/2026\/05\/University-4.jpg.jpeg');\n\n  font-family:'Be Vietnam Pro',sans-serif;color:var(--texto);\n  width:100vw!important;max-width:100vw!important;min-width:100vw!important;\n  position:relative!important;left:50%!important;right:50%!important;\n  margin-left:-50vw!important;margin-right:-50vw!important;\n  overflow-x:hidden;background:var(--gris-bg);\n  z-index:1;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 REVEAL AL HACER SCROLL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.rv{opacity:0;transform:translateY(38px);transition:opacity .85s cubic-bezier(.22,.61,.36,1),transform .85s cubic-bezier(.22,.61,.36,1);}\n.rv.seen{opacity:1;transform:none;}\n.rv-d1{transition-delay:.09s;} .rv-d2{transition-delay:.18s;}\n.rv-d3{transition-delay:.27s;} .rv-d4{transition-delay:.36s;}\n@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none;}}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 HERO PARALLAX A PANTALLA COMPLETA \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-hero{\n  min-height:100vh;display:flex;align-items:center;\n  padding:0 7%;position:relative;overflow:hidden;\n  background:var(--azul-dk);\n  scroll-snap-align:start;\n}\n.repo-hero-bg{\n  position:absolute;inset:-10% 0;\n  background-image:var(--hero-img);\n  background-size:cover;background-position:center;\n  will-change:transform;z-index:0;\n}\n.repo-hero::after{\n  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;\n  background:linear-gradient(130deg,rgba(0,31,54,.93) 0%,rgba(0,49,83,.86) 48%,rgba(109,34,46,.62) 100%);\n}\n.repo-hero-ring{\n  position:absolute;right:-90px;top:12%;width:340px;height:340px;\n  border:54px solid rgba(129,195,215,.1);border-radius:50%;z-index:2;pointer-events:none;\n}\n.repo-hero-inner{max-width:1200px;margin:0 auto;width:100%;position:relative;z-index:3;padding:120px 0 90px;}\n.repo-eyebrow{\n  display:inline-flex;align-items:center;gap:9px;padding:7px 16px;border-radius:999px;\n  background:rgba(0,30,55,.45);border:1px solid rgba(129,195,215,.42);\n  font-size:10.5px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;\n  color:#b6e3f0;margin-bottom:26px;backdrop-filter:blur(8px);\n}\n.repo-eyebrow::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--celeste);}\n.repo-hero h1{\n  font-size:clamp(34px,6.4vw,74px);font-weight:900;color:#fff;\n  line-height:.99;letter-spacing:-.042em;margin-bottom:24px;max-width:15ch;\n  text-shadow:0 4px 30px rgba(0,15,30,.65),0 2px 8px rgba(0,0,0,.45);\n}\n.repo-hero h1 em{font-style:normal;color:var(--celeste);}\n.repo-hero p{\n  font-size:clamp(14.5px,1.6vw,17.5px);color:rgba(255,255,255,.9);\n  line-height:1.78;max-width:580px;\n  text-shadow:0 2px 16px rgba(0,15,30,.7);\n}\n.repo-scroll-cue{\n  position:absolute;bottom:34px;left:50%;transform:translateX(-50%);\n  z-index:4;display:flex;flex-direction:column;align-items:center;gap:9px;\n  color:rgba(255,255,255,.62);font-size:9.5px;font-weight:700;\n  letter-spacing:.22em;text-transform:uppercase;\n}\n.repo-scroll-cue span{\n  width:1px;height:42px;\n  background:linear-gradient(to bottom,rgba(129,195,215,.9),transparent);\n  animation:repoCue 2.1s ease-in-out infinite;\n}\n@keyframes repoCue{0%,100%{opacity:.25;transform:scaleY(.5);transform-origin:top;}50%{opacity:1;transform:scaleY(1);transform-origin:top;}}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BANDA DE ESTAD\u00cdSTICAS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-stats-band{\n  background:var(--azul);padding:68px 7%;position:relative;overflow:hidden;\n  scroll-snap-align:start;\n}\n.repo-stats-band::before{\n  content:'';position:absolute;left:-60px;bottom:-110px;\n  width:260px;height:260px;border:44px solid rgba(109,34,46,.2);\n  border-radius:50%;pointer-events:none;\n}\n.repo-stats{\n  max-width:1200px;margin:0 auto;position:relative;z-index:1;\n  display:grid;grid-template-columns:repeat(4,1fr);gap:0;\n}\n.repo-stat{\n  padding:8px 26px;border-left:1px solid rgba(255,255,255,.14);\n}\n.repo-stat:first-child{border-left:none;padding-left:0;}\n.repo-stat strong{\n  display:block;font-size:clamp(38px,5.2vw,60px);font-weight:900;\n  color:#fff;letter-spacing:-.05em;line-height:.94;margin-bottom:12px;\n}\n.repo-stat span{\n  font-size:10.5px;font-weight:700;color:var(--celeste);\n  text-transform:uppercase;letter-spacing:.17em;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 CARRUSEL DE \u00c1REAS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-areas{\n  padding:88px 0 80px;background:#fff;overflow:hidden;\n  scroll-snap-align:start;\n}\n.repo-areas-head{max-width:1200px;margin:0 auto 34px;padding:0 7%;}\n.repo-kicker{\n  display:flex;align-items:center;gap:12px;\n  font-size:10px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;\n  color:var(--burdeos);margin-bottom:14px;\n}\n.repo-kicker::before{content:'';width:30px;height:2px;background:var(--burdeos);}\n.repo-areas-head h2{\n  font-size:clamp(24px,3.6vw,40px);font-weight:900;color:var(--azul);\n  letter-spacing:-.035em;line-height:1.08;margin-bottom:10px;\n}\n.repo-areas-head p{font-size:14.5px;color:var(--texto-2);line-height:1.72;max-width:560px;}\n.repo-areas-track{\n  display:flex;gap:18px;overflow-x:auto;padding:4px 7% 26px;\n  scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;\n  scrollbar-width:thin;scrollbar-color:var(--gris-line) transparent;\n}\n.repo-areas-track::-webkit-scrollbar{height:5px;}\n.repo-areas-track::-webkit-scrollbar-track{background:var(--gris-bg);border-radius:99px;}\n.repo-areas-track::-webkit-scrollbar-thumb{background:var(--gris-line);border-radius:99px;}\n.repo-areas-track::-webkit-scrollbar-thumb:hover{background:var(--celeste);}\n.repo-area-card{\n  flex:0 0 clamp(228px,25vw,290px);scroll-snap-align:start;\n  background:var(--azul);border-radius:18px;padding:28px 24px 24px;\n  min-height:218px;display:flex;flex-direction:column;\n  position:relative;overflow:hidden;cursor:pointer;\n  transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s;\n}\n.repo-area-card:hover{transform:translateY(-7px);box-shadow:0 22px 48px rgba(0,49,83,.26);}\n.repo-area-card::after{\n  content:'';position:absolute;right:-34px;top:-34px;\n  width:118px;height:118px;border:22px solid rgba(255,255,255,.08);\n  border-radius:50%;pointer-events:none;\n}\n.repo-area-card.a1{background:linear-gradient(145deg,var(--azul),var(--azul-2));}\n.repo-area-card.a2{background:linear-gradient(145deg,var(--burdeos),#8f2f3e);}\n.repo-area-card.a3{background:linear-gradient(145deg,var(--verde),#2f8f6c);}\n.repo-area-card.a4{background:linear-gradient(145deg,var(--teal),#2694ae);}\n.repo-area-card.a5{background:linear-gradient(145deg,var(--morado),#7461ab);}\n.repo-area-num{\n  font-size:10px;font-weight:800;letter-spacing:.2em;\n  color:rgba(255,255,255,.5);margin-bottom:auto;position:relative;z-index:1;\n}\n.repo-area-name{\n  font-size:17.5px;font-weight:800;color:#fff;line-height:1.26;\n  letter-spacing:-.02em;margin:22px 0 10px;position:relative;z-index:1;\n}\n.repo-area-count{\n  font-size:11.5px;font-weight:700;color:rgba(255,255,255,.72);\n  display:flex;align-items:center;gap:7px;position:relative;z-index:1;\n}\n.repo-area-count::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--celeste);}\n.repo-areas-hint{\n  max-width:1200px;margin:0 auto;padding:0 7%;\n  font-size:11px;color:var(--texto-2);font-weight:600;\n  display:flex;align-items:center;gap:8px;\n}\n.repo-areas-hint svg{width:15px;height:15px;fill:var(--celeste);}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BUSCADOR STICKY \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-search-sec{background:var(--gris-bg);padding:76px 0 0;}\n.repo-search-head{max-width:1200px;margin:0 auto 28px;padding:0 7%;}\n.repo-search-head h2{\n  font-size:clamp(24px,3.6vw,40px);font-weight:900;color:var(--azul);\n  letter-spacing:-.035em;line-height:1.08;margin-bottom:10px;\n}\n.repo-search-head p{font-size:14.5px;color:var(--texto-2);line-height:1.72;max-width:560px;}\n.repo-toolbar-wrap{\n  position:sticky;top:0;z-index:40;background:var(--gris-bg);\n  padding:16px 0;border-bottom:1px solid transparent;\n  transition:box-shadow .25s,border-color .25s;\n}\n.repo-toolbar-wrap.stuck{\n  box-shadow:0 6px 24px rgba(0,49,83,.09);border-bottom-color:var(--gris-line);\n}\n.repo-toolbar{\n  max-width:1200px;margin:0 auto;padding:0 7%;\n  display:grid;grid-template-columns:1.7fr 1fr 1fr;gap:12px;\n}\n.repo-input,.repo-select{\n  width:100%;border:1px solid var(--gris-line);border-radius:13px;\n  padding:14px 17px;background:#fff;font-family:'Be Vietnam Pro',sans-serif;\n  font-size:14px;color:var(--texto);outline:none;\n  box-shadow:0 4px 14px rgba(0,49,83,.05);\n  transition:border-color .2s,box-shadow .2s;appearance:none;\n}\n.repo-input:focus,.repo-select:focus{border-color:var(--azul-2);box-shadow:0 0 0 3px rgba(0,64,107,.12);}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 LOADING \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-loading{max-width:1200px;margin:56px auto;padding:0 7%;text-align:center;color:var(--texto-2);font-size:13.5px;font-weight:600;}\n.repo-spinner{width:38px;height:38px;border:3px solid var(--gris-line);border-top-color:var(--azul);border-radius:50%;animation:repo-spin .8s linear infinite;margin:0 auto 16px;}\n@keyframes repo-spin{to{transform:rotate(360deg);}}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 GRID DE PROYECTOS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-grid{\n  max-width:1200px;margin:34px auto 0;padding:0 7%;\n  display:grid;grid-template-columns:repeat(3,1fr);gap:22px;\n}\n.repo-card{\n  background:#fff;border:1px solid var(--gris-line);border-radius:20px;\n  overflow:hidden;display:flex;flex-direction:column;cursor:pointer;\n  transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s,border-color .3s;\n  opacity:0;transform:translateY(26px);\n  animation:repoCardIn .6s cubic-bezier(.22,.61,.36,1) forwards;\n}\n@keyframes repoCardIn{to{opacity:1;transform:none;}}\n.repo-card:nth-child(1){animation-delay:.04s} .repo-card:nth-child(2){animation-delay:.1s}\n.repo-card:nth-child(3){animation-delay:.16s} .repo-card:nth-child(4){animation-delay:.22s}\n.repo-card:nth-child(5){animation-delay:.28s} .repo-card:nth-child(6){animation-delay:.34s}\n.repo-card:nth-child(7){animation-delay:.4s}  .repo-card:nth-child(8){animation-delay:.46s}\n.repo-card:nth-child(9){animation-delay:.52s} .repo-card:nth-child(10){animation-delay:.58s}\n.repo-card:hover,.repo-card:focus{\n  transform:translateY(-8px);box-shadow:0 26px 56px rgba(0,49,83,.17);\n  border-color:var(--celeste);outline:none;\n}\n.repo-thumb{height:186px;position:relative;overflow:hidden;background:linear-gradient(140deg,var(--azul),var(--azul-2));}\n.repo-thumb.c-burdeos{background:linear-gradient(140deg,var(--burdeos),#a03040);}\n.repo-thumb.c-verde{background:linear-gradient(140deg,var(--verde),#4a9d74);}\n.repo-thumb.c-morado{background:linear-gradient(140deg,var(--morado),#8a72c0);}\n.repo-thumb.c-teal{background:linear-gradient(140deg,var(--teal),#3aa0ba);}\n.repo-thumb img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transition:transform .55s cubic-bezier(.22,.61,.36,1);}\n.repo-card:hover .repo-thumb img{transform:scale(1.07);}\n.repo-thumb::before{content:'';position:absolute;width:150px;height:150px;right:-44px;top:-44px;background:rgba(255,255,255,.13);border-radius:50%;pointer-events:none;z-index:1;}\n.repo-thumb::after{content:'';position:absolute;width:190px;height:190px;left:-86px;bottom:-116px;border:2px solid rgba(255,255,255,.17);border-radius:50%;pointer-events:none;z-index:1;}\n.repo-thumb-badge{position:absolute;top:15px;left:15px;background:rgba(0,25,45,.42);border:1px solid rgba(255,255,255,.3);color:#fff;padding:6px 13px;border-radius:999px;font-size:11px;font-weight:900;letter-spacing:.07em;z-index:2;backdrop-filter:blur(6px);}\n.repo-thumb-lines{position:absolute;left:15px;right:15px;bottom:19px;display:grid;gap:8px;z-index:2;}\n.repo-thumb-lines span{display:block;height:7px;border-radius:999px;background:rgba(255,255,255,.48);}\n.repo-thumb-lines span:nth-child(2){width:72%;}\n.repo-thumb-lines span:nth-child(3){width:50%;background:rgba(255,255,255,.24);}\n.repo-card-body{padding:19px;display:flex;flex-direction:column;flex:1;}\n.repo-card-meta{display:flex;justify-content:space-between;gap:8px;margin-bottom:11px;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.11em;color:var(--texto-2);}\n.repo-card h2{margin:0 0 11px;font-size:15px;font-weight:800;color:var(--azul)!important;line-height:1.32;letter-spacing:-.016em;}\n.repo-card p{font-size:12.5px;color:var(--texto-2);line-height:1.68;margin-bottom:14px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}\n.repo-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;}\n.repo-chips span{padding:5px 10px;border-radius:999px;background:var(--gris-bg);color:var(--azul);font-weight:700;font-size:10.5px;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 VAC\u00cdO \/ ERROR \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-msg{display:none;max-width:1200px;margin:28px auto 0;padding:0 7%;}\n.repo-msg-inner{text-align:center;padding:52px 40px;border:1px dashed var(--gris-line);border-radius:20px;background:#fff;color:var(--texto-2);font-weight:700;font-size:14px;}\n.repo-msg.active{display:block;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 PAGINACI\u00d3N \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-pagination{max-width:1200px;margin:44px auto 0;padding:0 7% 88px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;}\n.repo-pagination.hidden{display:none;}\n.repo-page-btn{min-width:42px;height:42px;padding:0 13px;border:1px solid var(--gris-line);background:#fff;color:var(--azul)!important;font-family:'Be Vietnam Pro',sans-serif;font-size:13.5px;font-weight:700;border-radius:11px;cursor:pointer;transition:background .18s,color .18s,border-color .18s,transform .18s;display:inline-flex;align-items:center;justify-content:center;gap:6px;}\n.repo-page-btn:hover:not(:disabled){background:#fff;border-color:var(--celeste);transform:translateY(-2px);}\n.repo-page-btn.active{background:var(--azul);color:#fff!important;border-color:var(--azul);}\n.repo-page-btn:disabled{opacity:.35;cursor:not-allowed;}\n.repo-page-dots{color:var(--texto-2);font-weight:700;padding:0 4px;}\n.repo-page-info{width:100%;text-align:center;font-size:11.5px;font-weight:600;color:var(--texto-2);margin-top:14px;letter-spacing:.02em;}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 MODAL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;background:rgba(0,20,40,.72);padding:20px;z-index:99998;backdrop-filter:blur(5px);}\n.repo-modal.active{display:flex;animation:repoFade .26s ease;}\n@keyframes repoFade{from{opacity:0}to{opacity:1}}\n.repo-modal-card{width:min(880px,100%);max-height:92vh;overflow-y:auto;background:#fff;border-radius:24px;box-shadow:0 36px 90px rgba(0,0,0,.34);animation:repoRise .34s cubic-bezier(.22,.61,.36,1);}\n@keyframes repoRise{from{transform:translateY(26px) scale(.98);opacity:0}to{transform:none;opacity:1}}\n.repo-modal-header{padding:32px 32px 28px;background:linear-gradient(135deg,var(--azul),var(--azul-2));position:relative;border-radius:24px 24px 0 0;overflow:hidden;}\n.repo-modal-header::after{content:'';position:absolute;right:-38px;top:-38px;width:140px;height:140px;border:26px solid rgba(109,34,46,.28);border-radius:50%;pointer-events:none;}\n.repo-modal-header h2{margin:0;font-size:clamp(17px,2.6vw,24px);font-weight:900;line-height:1.24;max-width:760px;padding-right:46px;color:#fff!important;-webkit-text-fill-color:#fff;position:relative;z-index:1;letter-spacing:-.025em;}\n.repo-modal-close{position:absolute;right:18px;top:18px;border:none;background:rgba(255,255,255,.17);color:#fff!important;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:18px;font-weight:900;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s;z-index:2;}\n.repo-modal-close:hover{background:rgba(109,34,46,.8);transform:rotate(90deg);}\n.repo-modal-img{width:100%;max-height:280px;object-fit:cover;display:block;}\n.repo-modal-body{padding:26px;display:grid;gap:16px;}\n.repo-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}\n.repo-info{background:var(--gris-bg);border:1px solid var(--gris-line);border-radius:14px;padding:16px;}\n.repo-info.full{grid-column:1\/-1;}\n.repo-info small{display:block;font-size:9.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--texto-2)!important;margin-bottom:7px;}\n.repo-info strong{font-size:13.5px;color:var(--texto)!important;line-height:1.6;font-weight:600;}\n.repo-info.full strong{display:block;}\n#rmSummary{text-align:justify;text-justify:inter-word;}\n.repo-modal-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px;}\n.repo-btn{border:none;border-radius:12px;padding:12px 22px;cursor:pointer;font-family:'Be Vietnam Pro',sans-serif;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:7px;transition:transform .18s,background .18s;}\n.repo-btn-primary{background:var(--azul);color:#fff!important;}\n.repo-btn-primary:hover{background:var(--azul-2);transform:translateY(-2px);}\n.repo-btn-secondary{background:#fff;color:var(--azul)!important;border:1px solid var(--gris-line);}\n.repo-btn-secondary:hover{background:var(--gris-bg);transform:translateY(-2px);}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 CIERRE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.repo-close{background:var(--burdeos);padding:72px 7%;text-align:center;position:relative;overflow:hidden;}\n.repo-close::after{content:'';position:absolute;left:8%;top:-50px;width:170px;height:170px;border:32px solid rgba(255,255,255,.07);border-radius:50%;pointer-events:none;}\n.repo-close-quote{font-size:clamp(19px,3.2vw,32px);font-weight:800;color:#fff;line-height:1.34;max-width:660px;margin:0 auto 14px;font-style:italic;letter-spacing:-.025em;position:relative;z-index:1;}\n.repo-close-attr{font-size:10px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.52);position:relative;z-index:1;}\n\n@media(max-width:1100px){\n  .repo-grid{grid-template-columns:repeat(2,1fr);}\n  .repo-stats{grid-template-columns:repeat(2,1fr);gap:26px 0;}\n  .repo-stat:nth-child(3){border-left:none;padding-left:0;}\n}\n@media(max-width:860px){\n  .repo-toolbar{grid-template-columns:1fr;}\n}\n@media(max-width:620px){\n  .repo-grid{grid-template-columns:1fr;}\n  .repo-stats{grid-template-columns:1fr;gap:28px;}\n  .repo-stat{border-left:none;padding-left:0;}\n  .repo-info-grid{grid-template-columns:1fr;}\n  .repo-page-btn{min-width:38px;height:38px;padding:0 10px;font-size:12.5px;}\n  .repo-hero{min-height:88vh;}\n  .repo-hero-inner{padding:100px 0 80px;}\n}\n<\/style>\n\n<div class=\"utla-repo\" id=\"utlaRepo\">\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 HERO \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <section class=\"repo-hero\">\n    <div class=\"repo-hero-bg\" id=\"repoHeroBg\"><\/div>\n    <div class=\"repo-hero-ring\"><\/div>\n    <div class=\"repo-hero-inner\">\n      <div class=\"repo-eyebrow rv\">Unidad de Investigaci\u00f3n e Innovaci\u00f3n<\/div>\n      <h1 class=\"rv rv-d1\">Proyectos de<br><em>Investigaci\u00f3n Institucional<\/em><\/h1>\n      <p class=\"rv rv-d2\">Proyectos, estudios y publicaciones desarrollados por el equipo investigador de la Universidad T\u00e9cnica Latinoamericana.<\/p>\n    <\/div>\n    <div class=\"repo-scroll-cue\">\n      Despl\u00e1zate\n      <span><\/span>\n    <\/div>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 ESTAD\u00cdSTICAS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <section class=\"repo-stats-band\">\n    <div class=\"repo-stats\">\n      <div class=\"repo-stat rv\"><strong id=\"repoCount\">\u2014<\/strong><span>Proyectos<\/span><\/div>\n      <div class=\"repo-stat rv rv-d1\"><strong id=\"repoPublished\">\u2014<\/strong><span>Publicados<\/span><\/div>\n      <div class=\"repo-stat rv rv-d2\"><strong id=\"repoAuthors\">\u2014<\/strong><span>Investigadores<\/span><\/div>\n      <div class=\"repo-stat rv rv-d3\"><strong id=\"repoYears\">\u2014<\/strong><span>A\u00f1os activos<\/span><\/div>\n    <\/div>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 CARRUSEL DE \u00c1REAS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <section class=\"repo-areas\" id=\"repoAreasSec\" style=\"display:none;\">\n    <div class=\"repo-areas-head\">\n      <div class=\"repo-kicker rv\">L\u00edneas de trabajo<\/div>\n      <h2 class=\"rv rv-d1\">\u00c1reas de Investigaci\u00f3n<\/h2>\n      <p class=\"rv rv-d2\">Las disciplinas en las que la UTLA concentra su producci\u00f3n cient\u00edfica y sus proyectos de innovaci\u00f3n.<\/p>\n    <\/div>\n    <div class=\"repo-areas-track\" id=\"repoAreasTrack\"><\/div>\n    <div class=\"repo-areas-hint rv\">\n      <svg viewBox=\"0 0 24 24\"><path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"\/><\/svg>\n      Desliza para ver todas las \u00e1reas\n    <\/div>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BUSCADOR + GRID \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <section class=\"repo-search-sec\">\n    <div class=\"repo-search-head\">\n      <div class=\"repo-kicker rv\">Repositorio<\/div>\n      <h2 class=\"rv rv-d1\">Explora los proyectos<\/h2>\n      <p class=\"rv rv-d2\">Busca por t\u00edtulo, autor, \u00e1rea o palabras clave, y filtra por tipo de publicaci\u00f3n o a\u00f1o.<\/p>\n    <\/div>\n\n    <div class=\"repo-toolbar-wrap\" id=\"repoToolbarWrap\">\n      <div class=\"repo-toolbar\">\n        <input class=\"repo-input\" id=\"repoSearch\" type=\"search\" placeholder=\"\ud83d\udd0d  Buscar por t\u00edtulo, autor, \u00e1rea, palabras clave\u2026\" oninput=\"repoFilter()\">\n        <select class=\"repo-select\" id=\"repoType\" onchange=\"repoFilter()\"><option value=\"\">Todos los tipos<\/option><\/select>\n        <select class=\"repo-select\" id=\"repoYear\" onchange=\"repoFilter()\"><option value=\"\">Todos los a\u00f1os<\/option><\/select>\n      <\/div>\n    <\/div>\n\n    <div class=\"repo-loading\" id=\"repoLoading\">\n      <div class=\"repo-spinner\"><\/div>\n      Cargando repositorio\u2026\n    <\/div>\n\n    <div class=\"repo-grid\" id=\"repoGrid\"><\/div>\n\n    <div class=\"repo-msg\" id=\"repoEmpty\"><div class=\"repo-msg-inner\">No se encontraron proyectos con los filtros aplicados.<\/div><\/div>\n    <div class=\"repo-msg\" id=\"repoError\"><div class=\"repo-msg-inner\">\u26a0\ufe0f No se pudo cargar el repositorio. Verifica que la hoja de Google Sheets est\u00e9 publicada correctamente.<\/div><\/div>\n\n    <div class=\"repo-pagination hidden\" id=\"repoPagination\"><\/div>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 CIERRE \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <section class=\"repo-close\">\n    <p class=\"repo-close-quote rv\">&#8220;Hacia el desarrollo a trav\u00e9s de la formaci\u00f3n integral&#8221;<\/p>\n    <p class=\"repo-close-attr rv rv-d1\">Universidad T\u00e9cnica Latinoamericana \u00b7 Investigaci\u00f3n e Innovaci\u00f3n<\/p>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 MODAL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"repo-modal\" id=\"repoModal\" onclick=\"if(event.target===this)repoClose()\">\n    <div class=\"repo-modal-card\">\n      <div class=\"repo-modal-header\">\n        <button class=\"repo-modal-close\" onclick=\"repoClose()\">\u2715<\/button>\n        <h2 id=\"rmTitle\"><\/h2>\n      <\/div>\n      <img decoding=\"async\" class=\"repo-modal-img\" id=\"rmImg\" src=\"\" alt=\"\" style=\"display:none;\">\n      <div class=\"repo-modal-body\">\n        <div class=\"repo-info-grid\">\n          <div class=\"repo-info\"><small>Autor\u00eda<\/small><strong id=\"rmAuthor\"><\/strong><\/div>\n          <div class=\"repo-info\"><small>Tipo y a\u00f1o<\/small><strong id=\"rmType\"><\/strong><\/div>\n          <div class=\"repo-info\"><small>\u00c1rea<\/small><strong id=\"rmArea\"><\/strong><\/div>\n          <div class=\"repo-info\"><small>L\u00ednea de investigaci\u00f3n<\/small><strong id=\"rmLine\"><\/strong><\/div>\n        <\/div>\n        <div class=\"repo-info full\"><small>Resumen<\/small><strong id=\"rmSummary\"><\/strong><\/div>\n        <div class=\"repo-info full\">\n          <small>Palabras clave<\/small>\n          <div class=\"repo-chips\" id=\"rmKeywords\"><\/div>\n        <\/div>\n        <div class=\"repo-modal-actions\">\n          <a class=\"repo-btn repo-btn-primary\" id=\"rmRepo\" href=\"#\" target=\"_blank\" rel=\"noopener\">\n            <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"><\/path><\/svg>\n            Abrir repositorio\n          <\/a>\n          <button class=\"repo-btn repo-btn-secondary\" onclick=\"repoCopy()\">\n            <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"><\/path><\/svg>\n            Copiar referencia\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<!-- Script que alimenta el repositorio desde Google Sheets -->\n<script src=\"https:\/\/utla.edu.sv\/2026\/repo-script.js\"><\/script>\n\n<!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 EFECTOS DE DESPLAZAMIENTO \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n<script>\n(function(){\n  var root = document.getElementById('utlaRepo');\n  if(!root) return;\n  var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/* \u2500\u2500 1. REVEAL AL ENTRAR EN VIEWPORT \u2500\u2500 *\/\n  function observeReveals(){\n    var items = root.querySelectorAll('.rv:not(.seen)');\n    if(!('IntersectionObserver' in window)){\n      items.forEach(function(el){ el.classList.add('seen'); });\n      return;\n    }\n    var io = new IntersectionObserver(function(entries){\n      entries.forEach(function(e){\n        if(e.isIntersecting){ e.target.classList.add('seen'); io.unobserve(e.target); }\n      });\n    }, {threshold:0.12, rootMargin:'0px 0px -8% 0px'});\n    items.forEach(function(el){ io.observe(el); });\n  }\n  observeReveals();\n\n  \/* \u2500\u2500 2. PARALLAX DEL HERO \u2500\u2500 *\/\n  var heroBg = document.getElementById('repoHeroBg');\n  var ticking = false;\n  function parallax(){\n    if(!heroBg || reduce) return;\n    var y = window.pageYOffset;\n    if(y < window.innerHeight * 1.3){\n      heroBg.style.transform = 'translate3d(0,' + (y * 0.32) + 'px,0) scale(1.06)';\n    }\n    ticking = false;\n  }\n  window.addEventListener('scroll', function(){\n    if(!ticking){ window.requestAnimationFrame(parallax); ticking = true; }\n  }, {passive:true});\n  parallax();\n\n  \/* \u2500\u2500 3. SOMBRA EN BARRA STICKY \u2500\u2500 *\/\n  var tb = document.getElementById('repoToolbarWrap');\n  if(tb){\n    var sentinel = document.createElement('div');\n    sentinel.style.cssText = 'position:absolute;height:1px;width:1px;';\n    tb.parentNode.insertBefore(sentinel, tb);\n    if('IntersectionObserver' in window){\n      new IntersectionObserver(function(e){\n        tb.classList.toggle('stuck', !e[0].isIntersecting);\n      }, {threshold:0}).observe(sentinel);\n    }\n  }\n\n  \/* \u2500\u2500 4. CONTADORES ANIMADOS \u2500\u2500 *\/\n  var statIds = ['repoCount','repoPublished','repoAuthors','repoYears'];\n  var counted = {};\n  function animateCount(el){\n    var target = parseInt(el.textContent, 10);\n    if(isNaN(target) || counted[el.id]) return;\n    counted[el.id] = true;\n    if(reduce){ el.textContent = target; return; }\n    var dur = 1100, t0 = null;\n    function step(ts){\n      if(!t0) t0 = ts;\n      var p = Math.min((ts - t0) \/ dur, 1);\n      var eased = 1 - Math.pow(1 - p, 3);\n      el.textContent = Math.round(target * eased);\n      if(p < 1) requestAnimationFrame(step);\n    }\n    requestAnimationFrame(step);\n  }\n  function watchStats(){\n    if(!('IntersectionObserver' in window)) return;\n    var io = new IntersectionObserver(function(entries){\n      entries.forEach(function(e){\n        if(e.isIntersecting) animateCount(e.target);\n      });\n    }, {threshold:0.5});\n    statIds.forEach(function(id){\n      var el = document.getElementById(id);\n      if(el) io.observe(el);\n    });\n  }\n\n  \/* \u2500\u2500 5. CARRUSEL DE \u00c1REAS (desde los datos del Sheet) \u2500\u2500 *\/\n  var areaTries = 0;\n  function buildAreas(){\n    areaTries++;\n    if(typeof repoData === 'undefined' || !repoData || !repoData.length){\n      if(areaTries < 60) return setTimeout(buildAreas, 250);\n      return;\n    }\n    var counts = {};\n    repoData.forEach(function(p){\n      var a = (p.Area || '').trim();\n      if(a) counts[a] = (counts[a] || 0) + 1;\n    });\n    var areas = Object.keys(counts).sort(function(a,b){ return counts[b] - counts[a]; });\n    if(!areas.length) return;\n\n    var track = document.getElementById('repoAreasTrack');\n    var sec   = document.getElementById('repoAreasSec');\n    if(!track || !sec) return;\n\n    track.innerHTML = areas.map(function(name, i){\n      var n = counts[name];\n      var num = (i + 1 < 10 ? '0' : '') + (i + 1);\n      return '<article class=\"repo-area-card a' + ((i % 5) + 1) + '\" data-area=\"' + name.replace(\/\"\/g,'&quot;') + '\">'\n           + '<div class=\"repo-area-num\">' + num + '<\/div>'\n           + '<div class=\"repo-area-name\">' + name + '<\/div>'\n           + '<div class=\"repo-area-count\">' + n + (n === 1 ? ' proyecto' : ' proyectos') + '<\/div>'\n           + '<\/article>';\n    }).join('');\n\n    \/* Al hacer clic en un \u00e1rea, filtra el repositorio *\/\n    track.querySelectorAll('.repo-area-card').forEach(function(card){\n      card.addEventListener('click', function(){\n        var input = document.getElementById('repoSearch');\n        if(!input) return;\n        input.value = card.getAttribute('data-area');\n        if(typeof repoFilter === 'function') repoFilter();\n        var dest = document.getElementById('repoToolbarWrap');\n        if(dest) window.scrollTo({top: dest.offsetTop - 10, behavior:'smooth'});\n      });\n    });\n\n    sec.style.display = '';\n    observeReveals();\n    watchStats();\n  }\n  setTimeout(buildAreas, 400);\n\n  \/* Re-observar reveals cuando el grid cambie *\/\n  var grid = document.getElementById('repoGrid');\n  if(grid && 'MutationObserver' in window){\n    new MutationObserver(function(){ observeReveals(); }).observe(grid, {childList:true});\n  }\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unidad de Investigaci\u00f3n e Innovaci\u00f3n Proyectos deInvestigaci\u00f3n Institucional Proyectos, estudios y publicaciones desarrollados por el equipo investigador de la Universidad T\u00e9cnica Latinoamericana. Despl\u00e1zate \u2014Proyectos \u2014Publicados \u2014Investigadores \u2014A\u00f1os activos L\u00edneas de trabajo \u00c1reas de Investigaci\u00f3n Las disciplinas en las que la UTLA concentra su producci\u00f3n cient\u00edfica y sus proyectos de innovaci\u00f3n. Desliza para ver todas las [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"no-title","meta":{"footnotes":""},"class_list":["post-7532","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/pages\/7532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/comments?post=7532"}],"version-history":[{"count":13,"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/pages\/7532\/revisions"}],"predecessor-version":[{"id":7873,"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/pages\/7532\/revisions\/7873"}],"wp:attachment":[{"href":"https:\/\/utla.edu.sv\/2026\/wp-json\/wp\/v2\/media?parent=7532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}