{"id":8143,"date":"2026-09-25T13:58:32","date_gmt":"2026-09-25T13:58:32","guid":{"rendered":"https:\/\/lagosdigital.cl\/comunidad\/?page_id=8143"},"modified":"2026-10-28T19:44:10","modified_gmt":"2026-10-28T19:44:10","slug":"proyectos","status":"publish","type":"page","link":"https:\/\/lagosdigital.cl\/comunidad\/proyectos\/","title":{"rendered":"Proyectos"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8143\" class=\"elementor elementor-8143\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34e6bc8 e-flex e-con-boxed e-con e-parent\" data-id=\"34e6bc8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f9138cc e-con-full e-flex e-con e-child\" data-id=\"f9138cc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-816f1af elementor-widget elementor-widget-heading\" data-id=\"816f1af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Proyectos y alianzas<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21d7ef5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"21d7ef5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25f427f elementor-widget elementor-widget-text-editor\" data-id=\"25f427f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Conoce nuestras iniciativas y redes de colaboraci\u00f3n. Filtra para descubrir c\u00f3mo cada proyecto conecta, prepara y moviliza a la sociedad civil.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a76cfcc e-con-full e-flex e-con e-parent\" data-id=\"a76cfcc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90e325a elementor-widget elementor-widget-html\" data-id=\"90e325a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>Proyectos y Alianzas \u2013 Comunidad de Organizaciones Solidarias<\/title>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Raleway:wght@500;600;700;800&family=Open+Sans:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n  :root{\r\n    --orange:#E57100; --orange-deep:#B85A00;\r\n    --navy:#064F70; --navy-deep:#043B54;\r\n    --yellow:#FBB601; --cream:#FFF9F1;\r\n    --text:#4A5560; --line:rgba(6,79,112,.14);\r\n    --radius-md:20px;\r\n    --shadow:0 18px 40px -24px rgba(6,79,112,.4);\r\n    --maxw:1180px; --ease:cubic-bezier(.22,1,.36,1);\r\n    --f-head:'Raleway',system-ui,sans-serif;\r\n    --f-body:'Open Sans',system-ui,sans-serif;\r\n  }\r\n  *{box-sizing:border-box;}\r\n  @media (prefers-reduced-motion: reduce){\r\n    *{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important;}\r\n  }\r\n  #main{font-family:var(--f-body);color:var(--text);line-height:1.65;-webkit-font-smoothing:antialiased;}\r\n  #main h1,#main h2,#main h3,#main h4,\r\n  #main .filter-pill,#main .subfilter-pill,#main .btn,#main .step-label,#main .detail-year,#main .g-more,#main .block-title{font-family:var(--f-head) !important;}\r\n  #main h2,#main h3{line-height:1.15;margin:0;letter-spacing:0;}\r\n  #main p{margin:0;}\r\n  #main ul{margin:0;padding:0;list-style:none;}\r\n  #main a{text-decoration:none;}\r\n  #main img{max-width:100%;display:block;}\r\n  #main button{cursor:pointer;}\r\n  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px;}\r\n  :focus-visible{outline:3px solid var(--orange);outline-offset:3px;border-radius:6px;}\r\n  .icon{width:1em;height:1em;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}\r\n  .icon .dot{fill:currentColor;stroke:none;}\r\n\r\n  \/* BOT\u00d3N PRINCIPAL (azul del sitio) *\/\r\n  .btn{display:inline-flex;align-items:center;gap:9px;padding:11px 22px;border-radius:100px;font-weight:700;font-size:.88rem;white-space:nowrap;transition:.25s var(--ease);}\r\n  .btn svg{width:15px;height:15px;transition:transform .25s;}\r\n  .btn:hover svg{transform:translateX(3px);}\r\n\r\n  \/* FILTROS *\/\r\n  .filters-sec{position:sticky;top:0;z-index:40;background:#fff;border-bottom:1px solid var(--line);padding:22px 0;}\r\n  .filter-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;}\r\n  .filter-pill{display:inline-flex;align-items:center;gap:10px;padding:9px 20px 9px 10px;border-radius:100px;font-weight:600;font-size:.92rem;transition:.25s var(--ease);}\r\n  .filter-pill .pill-ico{width:32px;height:32px;border-radius:50%;background:var(--cream);color:var(--orange);display:flex;align-items:center;justify-content:center;transition:.25s var(--ease);flex-shrink:0;}\r\n  .filter-pill .pill-ico svg{width:18px;height:18px;}\r\n  .subfilter-wrap{max-height:0;overflow:hidden;transition:max-height .4s var(--ease);}\r\n  .subfilter-wrap.open{max-height:90px;}\r\n  .subfilter-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;padding-top:16px;margin-top:16px;border-top:1px dashed var(--line);}\r\n  .subfilter-pill{padding:8px 18px;border-radius:100px;font-weight:600;font-size:.85rem;transition:.2s;}\r\n\r\n  \/* DETALLE *\/\r\n  .detail-sec{background:var(--cream);padding:52px 0 96px;}\r\n  .detail-panel{max-width:920px;margin:0 auto;}\r\n  .detail-panel.enter{animation:panelIn .5s var(--ease);}\r\n  @keyframes panelIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}\r\n  .detail-head{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:18px;margin-bottom:26px;}\r\n  .detail-logo{background:#fff;border:1px solid var(--line);border-radius:22px;padding:18px 32px;box-shadow:var(--shadow);display:inline-flex;align-items:center;justify-content:center;}\r\n  .detail-logo img{max-height:84px;max-width:260px;width:auto;height:auto;object-fit:contain;}\r\n  .detail-ico{width:64px;height:64px;border-radius:50%;background:#fff;border:2px solid var(--line);color:var(--orange);display:flex;align-items:center;justify-content:center;flex-shrink:0;}\r\n  .detail-ico.spin{animation:iconPop .5s var(--ease);}\r\n  @keyframes iconPop{0%{transform:scale(.7) rotate(-14deg);opacity:0;}100%{transform:scale(1) rotate(0);opacity:1;}}\r\n  .detail-ico svg{width:32px;height:32px;}\r\n  #main .detail-title h2{font-size:clamp(1.7rem,3vw,2.3rem);font-weight:600;color:var(--orange);}\r\n  .mark{position:relative;display:inline-block;}\r\n  .mark::after{content:\"\";position:absolute;left:0;bottom:-.06em;width:100%;height:.17em;background:var(--yellow);border-radius:4px;transform:scaleX(0);transform-origin:left;animation:drawMark .7s var(--ease) .3s forwards;}\r\n  @keyframes drawMark{to{transform:scaleX(1);}}\r\n  .detail-year{display:inline-flex;margin-top:12px;padding:3px 14px;border-radius:100px;background:#fff;border:1px solid var(--line);color:var(--navy);font-weight:600;font-size:.78rem;}\r\n  .detail-stack{display:flex;flex-direction:column;gap:22px;}\r\n  .detail-gallery{margin-top:34px;}\r\n  .detail-block{background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);padding:24px 28px;box-shadow:var(--shadow);}\r\n  #main .block-title{font-size:1.1rem;font-weight:700;color:var(--orange);margin-bottom:10px;}\r\n  .block-intro{font-size:.95rem;margin-bottom:12px;}\r\n  .bl-text p{font-size:.97rem;}\r\n  .bl-text p + p{margin-top:10px;}\r\n  .detail-linkbtn{text-align:left;}\r\n\r\n  \/* listas (vi\u00f1etas por defecto; numeradas solo si el orden importa) *\/\r\n  .bl-list{display:flex;flex-direction:column;gap:11px;counter-reset:n;}\r\n  .bl-list li{position:relative;padding-left:24px;font-size:.95rem;opacity:0;transform:translateY(8px);animation:blockUp .5s var(--ease) forwards;}\r\n  .bl-list li::before{content:\"\";position:absolute;left:2px;top:.62em;width:8px;height:8px;border-radius:50%;background:var(--orange);}\r\n  .bl-list.numbered li{counter-increment:n;}\r\n  .bl-list.numbered li::before{content:counter(n) \".\";width:auto;height:auto;background:none;top:0;left:0;color:var(--navy);font-family:var(--f-head);font-weight:700;}\r\n  @keyframes blockUp{to{opacity:1;transform:translateY(0);}}\r\n\r\n  \/* pasos (solo para procesos con secuencia real) *\/\r\n  .bl-steps{display:flex;flex-direction:column;}\r\n  .bl-steps .step{padding:12px 0 12px 22px;border-left:2px solid var(--line);position:relative;opacity:0;transform:translateX(-10px);animation:stepIn .5s var(--ease) forwards;}\r\n  .bl-steps .step::before{content:\"\";position:absolute;left:-7px;top:18px;width:12px;height:12px;border-radius:50%;background:var(--orange);}\r\n  .bl-steps .step:last-child{border-left-color:transparent;}\r\n  @keyframes stepIn{to{opacity:1;transform:translateX(0);}}\r\n  #main .step-label{font-weight:700;font-size:1rem;color:var(--navy);}\r\n  .step-text{font-size:.93rem;margin-top:3px;}\r\n\r\n  \/* l\u00edneas de trabajo (apiladas, sin numeraci\u00f3n) *\/\r\n  .bl-cards .item{padding:16px 0;border-top:1px solid var(--line);opacity:0;transform:translateY(8px);animation:blockUp .5s var(--ease) forwards;}\r\n  .bl-cards .item:first-child{border-top:0;padding-top:4px;}\r\n  .bl-cards .item:last-child{padding-bottom:0;}\r\n  .bl-pairs{display:flex;flex-direction:column;gap:12px;}\r\n  .pair-card{background:var(--cream);border-radius:14px;padding:16px 18px;}\r\n\r\n  \/* galer\u00eda *\/\r\n  .gallery-grid{--gap:14px;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--gap);}\r\n  .gallery-grid .g-item{flex:0 0 calc((100% - 2 * var(--gap)) \/ 3);}\r\n  .gallery-grid.c1 .g-item{flex-basis:min(100%,560px);aspect-ratio:16\/10;}\r\n  .gallery-grid.c2 .g-item,.gallery-grid.c4 .g-item{flex-basis:calc((100% - var(--gap)) \/ 2);}\r\n  .g-hidden{display:none;}\r\n  .g-broken{background:linear-gradient(135deg,#fff,var(--cream));}\r\n  .g-item{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:4\/3;background:#fff;cursor:zoom-in;box-shadow:var(--shadow);}\r\n  .g-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease);}\r\n  .g-item:hover img{transform:scale(1.07);}\r\n  .g-more{position:absolute;inset:0;background:rgba(6,79,112,.62);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.4rem;transition:background .25s;}\r\n  .g-item:hover .g-more{background:rgba(229,113,0,.8);}\r\n  .g-item .g-zoom{position:absolute;bottom:10px;right:10px;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;opacity:0;transition:.25s;}\r\n  .g-item:hover .g-zoom{opacity:1;}\r\n  .g-item .g-zoom svg{width:15px;height:15px;color:var(--navy);}\r\n  .no-gallery{border:1.5px dashed var(--line);border-radius:16px;padding:34px 20px;text-align:center;font-size:.9rem;background:#fff;}\r\n\r\n  \/* lightbox *\/\r\n  .lightbox{position:fixed;inset:0;background:rgba(4,30,44,.93);z-index:99999;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:.3s;}\r\n  .lightbox.open{opacity:1;visibility:visible;}\r\n  .lightbox img{max-width:min(86vw,900px);max-height:80vh;border-radius:14px;box-shadow:0 30px 60px rgba(0,0,0,.5);}\r\n  .lb-close,.lb-prev,.lb-next{position:absolute;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:.2s;cursor:pointer;}\r\n  .lb-close{top:24px;right:24px;}\r\n  .lb-close svg{width:18px;height:18px;}\r\n  .lb-prev{left:20px;top:50%;transform:translateY(-50%);}\r\n  .lb-next{right:20px;top:50%;transform:translateY(-50%);}\r\n  .lb-prev svg,.lb-next svg{width:20px;height:20px;}\r\n\r\n  @media (max-width:960px){\r\n    .gallery-grid .g-item{flex-basis:calc((100% - var(--gap)) \/ 2);}\r\n  }\r\n  @media (max-width:560px){\r\n    .detail-block{padding:20px;}\r\n    .filter-pill{font-size:.84rem;padding-right:14px;}\r\n  }\r\n\r\n  \/* ===== Botones: color y hover propios (anulan el estilo del tema del sitio) ===== *\/\r\n  #main .btn-primary,#main .btn-primary:focus{background:var(--navy) !important;color:#fff !important;border:2px solid transparent !important;box-shadow:none !important;}\r\n  #main .btn-primary:hover{background:var(--navy-deep) !important;color:#fff !important;border-color:var(--orange) !important;}\r\n  #main .filter-pill,#main .filter-pill:hover,#main .filter-pill:focus{background:#fff !important;color:var(--text) !important;border:1.5px solid var(--line) !important;box-shadow:none !important;}\r\n  #main .filter-pill:hover,#main .filter-pill:focus-visible{border-color:var(--orange) !important;color:var(--navy) !important;}\r\n  #main .filter-pill.active,#main .filter-pill.active:hover,#main .filter-pill.active:focus{background:var(--navy) !important;color:#fff !important;border-color:var(--navy) !important;}\r\n  #main .filter-pill.active:hover{border-color:var(--orange) !important;}\r\n  #main .filter-pill.active .pill-ico{background:var(--orange);color:#fff;}\r\n  #main .subfilter-pill,#main .subfilter-pill:hover,#main .subfilter-pill:focus{background:var(--cream) !important;color:var(--text) !important;border:1.5px solid transparent !important;box-shadow:none !important;}\r\n  #main .subfilter-pill:hover,#main .subfilter-pill:focus-visible{border-color:var(--orange) !important;color:var(--navy) !important;}\r\n  #main .subfilter-pill.active,#main .subfilter-pill.active:hover,#main .subfilter-pill.active:focus{background:var(--orange) !important;color:#fff !important;border-color:var(--orange) !important;}\r\n  #main .g-item,#main .g-item:hover,#main .g-item:focus{background:#fff !important;border:0 !important;padding:0 !important;}\r\n  #lightbox .lb-close,#lightbox .lb-prev,#lightbox .lb-next{background:rgba(255,255,255,.14) !important;color:#fff !important;border:0 !important;}\r\n  #lightbox .lb-close:hover,#lightbox .lb-prev:hover,#lightbox .lb-next:hover{background:var(--orange) !important;}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<svg style=\"display:none\" aria-hidden=\"true\">\r\n<defs>\r\n<symbol id=\"i-arrow\" viewBox=\"0 0 24 24\"><line x1=\"4\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"13 6 19 12 13 18\"\/><\/symbol>\r\n<symbol id=\"i-close\" viewBox=\"0 0 24 24\"><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><\/symbol>\r\n<symbol id=\"i-zoom\" viewBox=\"0 0 24 24\"><circle cx=\"10.5\" cy=\"10.5\" r=\"6.5\"\/><line x1=\"20\" y1=\"20\" x2=\"15.3\" y2=\"15.3\"\/><line x1=\"10.5\" y1=\"7.5\" x2=\"10.5\" y2=\"13.5\"\/><line x1=\"7.5\" y1=\"10.5\" x2=\"13.5\" y2=\"10.5\"\/><\/symbol>\r\n<symbol id=\"i-shield\" viewBox=\"0 0 48 48\"><path d=\"M24 6L38 11V22C38 32 32 38 24 42C16 38 10 32 10 22V11Z\"\/><line x1=\"24\" y1=\"18\" x2=\"24\" y2=\"28\"\/><line x1=\"19\" y1=\"23\" x2=\"29\" y2=\"23\"\/><\/symbol>\r\n<symbol id=\"i-megaphone\" viewBox=\"0 0 48 48\"><path d=\"M8 22V28C8 30 9.5 31 11.5 31H14L22 38V12L14 19H11.5C9.5 19 8 20 8 22Z\"\/><path d=\"M22 12L34 7V33L22 28\"\/><path d=\"M14 31L16 40\"\/><path d=\"M38 18C40 20 40 24 38 26\" stroke-linecap=\"round\"\/><\/symbol>\r\n<symbol id=\"i-doorheart\" viewBox=\"0 0 48 48\"><path d=\"M12 40V14C12 10 15 8 19 8H29C33 8 36 10 36 14V40\"\/><line x1=\"8\" y1=\"40\" x2=\"40\" y2=\"40\"\/><path d=\"M24 26C22.5 24 19 24.3 19 27.3C19 30 24 33 24 33C24 33 29 30 29 27.3C29 24.3 25.5 24 24 26Z\"\/><\/symbol>\r\n<symbol id=\"i-roots\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"12\" r=\"5\"\/><line x1=\"24\" y1=\"17\" x2=\"24\" y2=\"26\"\/><path d=\"M24 26C24 26 14 28 11 38\"\/><path d=\"M24 26C24 26 34 28 37 38\"\/><path d=\"M24 26C24 26 24 32 24 42\"\/><\/symbol>\r\n<symbol id=\"i-hands\" viewBox=\"0 0 48 48\"><path d=\"M8 26C8 20 12 15 18 15C21 15 23 16.5 24 18\"\/><path d=\"M40 26C40 20 36 15 30 15C27 15 25 16.5 24 18\"\/><circle class=\"dot\" cx=\"24\" cy=\"18\" r=\"2\"\/><path d=\"M8 26C8 33 14 39 24 39C34 39 40 33 40 26\"\/><path d=\"M18 27L24 31L30 27\"\/><\/symbol>\r\n<symbol id=\"i-childheart\" viewBox=\"0 0 48 48\"><circle cx=\"24\" cy=\"12\" r=\"6\"\/><path d=\"M12 40C12 30 17 25 24 25C31 25 36 30 36 40\"\/><path d=\"M24 30C22.5 28 19.5 28.3 19.5 31.3C19.5 34 24 37 24 37C24 37 28.5 34 28.5 31.3C28.5 28.3 25.5 28 24 30Z\"\/><\/symbol>\r\n<symbol id=\"i-keydoor\" viewBox=\"0 0 48 48\"><circle cx=\"15\" cy=\"24\" r=\"7\"\/><line x1=\"21\" y1=\"24\" x2=\"40\" y2=\"24\"\/><line x1=\"33\" y1=\"24\" x2=\"33\" y2=\"30\"\/><line x1=\"38\" y1=\"24\" x2=\"38\" y2=\"29\"\/><\/symbol>\r\n<symbol id=\"i-homeline\" viewBox=\"0 0 48 48\"><path d=\"M9 24L24 10L39 24\"\/><path d=\"M14 21V38H34V21\"\/><line x1=\"6\" y1=\"40\" x2=\"42\" y2=\"40\"\/><\/symbol>\r\n<\/defs>\r\n<\/svg>\r\n\r\n<main id=\"main\">\r\n  <section class=\"filters-sec\">\r\n    <div class=\"wrap\">\r\n      <div class=\"filter-row\" id=\"filterRow\" role=\"tablist\" aria-label=\"Filtrar proyectos\"><\/div>\r\n      <div class=\"subfilter-wrap\" id=\"subfilterWrap\">\r\n        <div class=\"subfilter-row\" id=\"subfilterRow\" role=\"tablist\" aria-label=\"Proyectos Juntos\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"detail-sec\">\r\n    <div class=\"wrap\">\r\n      <div class=\"detail-panel\" id=\"detailPanel\"><\/div>\r\n    <\/div>\r\n  <\/section>\r\n<\/main>\r\n\r\n<div class=\"lightbox\" id=\"lightbox\">\r\n  <button class=\"lb-close\" id=\"lbClose\" aria-label=\"Cerrar\"><svg class=\"icon\"><use href=\"#i-close\"\/><\/svg><\/button>\r\n  <button class=\"lb-prev\" id=\"lbPrev\" aria-label=\"Anterior\"><svg class=\"icon\"><use href=\"#i-arrow\" style=\"transform:scaleX(-1)\"\/><\/svg><\/button>\r\n  <img decoding=\"async\" id=\"lbImg\" src=\"\" alt=\"\">\r\n  <button class=\"lb-next\" id=\"lbNext\" aria-label=\"Siguiente\"><svg class=\"icon\"><use href=\"#i-arrow\"\/><\/svg><\/button>\r\n<\/div>\r\n\r\n<script>\r\n\/* ============ DATOS ============ *\/\r\nconst PROJECTS = [\r\n  \/* 1. Movidos x Chile *\/\r\n  {\r\n    id:'movidos', icon:'i-shield', logo:'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/10\/Movidos.png', name:'MovidosxChile', year:2017,\r\n    purpose:['Articular a organizaciones para responder coordinados frente a desastres en Chile.'],\r\n    link:{label:'movidosxchile.cl', url:'https:\/\/www.movidosxchile.cl'},\r\n    blocks:[\r\n      {type:'list', title:'Modelo de Trabajo', intro:'Desarrollamos nuestro trabajo en cuatro l\u00edneas de acci\u00f3n:', items:[\r\n        'Desde la coordinaci\u00f3n social, aportando al fortalecimiento de la red y la vinculaci\u00f3n con el territorio.',\r\n        'Desde la coordinaci\u00f3n log\u00edstica, conectando necesidades con recursos y coordinando la movilizaci\u00f3n de ayuda humanitaria.',\r\n        'Desde la coordinaci\u00f3n comunicacional, concientizando e informando.',\r\n        'Desde la coordinaci\u00f3n de alianzas, vinculando al Estado, las organizaciones de la sociedad civil y el sector privado.'\r\n      ]},\r\n      {type:'steps', title:'C\u00f3mo lo hacemos', items:[\r\n        {label:'Conectando', text:'Organizaciones, comunidades, entes p\u00fablicos y privados.'},\r\n        {label:'Preparando', text:'Fortalecemos las capacidades de organizaciones y comunidades para estar mejor preparadas frente a las amenazas y reducir sus posibles impactos.'},\r\n        {label:'Movilizando', text:'Las capacidades y recursos para preparar y responder en emergencias y desastres.'}\r\n      ]}\r\n    ],\r\n    images:[\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Movidos-1.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Movidos-2-scaled.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Movidos-3-scaled.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Movidos-4-scaled.jpg'\r\n    ]\r\n  },\r\n  \/* 2. D\u00eda del Patrimonio Social *\/\r\n  {\r\n    id:'dps', icon:'i-doorheart', logo:'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/10\/DPS.png', name:'D\u00eda del Patrimonio Social', year:2024,\r\n    purpose:['Celebrar nuestro Patrimonio Social: la solidaridad. Un reconocimiento al aporte de miles de personas, organizaciones, instituciones y empresas que trabajan diariamente por el bienestar colectivo.'],\r\n    link:{label:'diadelpatrimoniosocial.cl', url:'https:\/\/diadelpatrimoniosocial.cl\/'},\r\n    blocks:[\r\n      {type:'text', title:'\u00bfQu\u00e9 es?', text:['Una iniciativa ciudadana que busca reconocer, visibilizar y celebrar que dar est\u00e1 en nuestra naturaleza. Promueve acciones concretas de colaboraci\u00f3n, voluntariado y compromiso con el bien com\u00fan.']},\r\n      {type:'list', title:'C\u00f3mo lo hacemos', items:[\r\n        'Convocando actividades solidarias en todo el pa\u00eds.',\r\n        'Movilizando a organizaciones de la sociedad civil, empresas, instituciones educativas y ciudadan\u00eda.',\r\n        'Difundiendo historias e iniciativas que inspiran compromiso social.',\r\n        'Promoviendo la colaboraci\u00f3n entre distintos actores para abordar desaf\u00edos comunes.'\r\n      ]},\r\n      {type:'text', title:'Impacto', text:['Desde su creaci\u00f3n, miles de personas y organizaciones se han sumado a esta celebraci\u00f3n a trav\u00e9s de voluntariado, encuentros comunitarios, cuidado del medioambiente e iniciativas educativas en distintos territorios del pa\u00eds.']},\r\n      {type:'text', title:'Aliados', text:['Impulsado por la Comunidad de Organizaciones Solidarias junto a una amplia red de fundaciones, empresas, instituciones y medios de comunicaci\u00f3n comprometidos con una sociedad m\u00e1s solidaria.']}\r\n    ],\r\n    images:[\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/DPS-scaled.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/DPS-2-scaled.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/DPS-3-scaled.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/DPS-4-scaled.jpg'\r\n    ]\r\n  },\r\n  \/* 3. Coterr\u00e1neos *\/\r\n  {\r\n    id:'coterraneos', icon:'i-roots', logo:'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/10\/Coterraneos.png', name:'Coterr\u00e1neos', year:2022,\r\n    purpose:['Promovemos la vitalidad de cada territorio, donde apreciando y potenciando la riqueza de nuestras comunidades, nos ocupamos de resolver los desaf\u00edos con mayor agencia y de manera sostenible, aportando as\u00ed a que Chile florezca.'],\r\n    link:{label:'coterraneos.cl', url:'https:\/\/coterraneos.cl\/'},\r\n    blocks:[\r\n      {type:'text', title:'Somos', text:[\r\n        'Personas y organizaciones de distintos rincones de Chile, unidas por la convicci\u00f3n de que cada territorio puede ser el mejor lugar para convivir, crecer y so\u00f1ar en comunidad.',\r\n        'Somos el movimiento de Fundaciones Territoriales en Chile.'\r\n      ]},\r\n      {type:'list', title:'C\u00f3mo lo hacemos', items:[\r\n        'Acompa\u00f1amos humana y t\u00e9cnicamente a quienes desarrollan Fundaciones Territoriales.',\r\n        'Sostenemos espacios seguros para que profundicen en sus procesos de experimentaci\u00f3n, innovaci\u00f3n, y pilotaje de iniciativas, con confianza.',\r\n        'Secundamos el proceso para que los grupos y organizaciones locales avancen desde la autonom\u00eda y la agencia.'\r\n      ]}\r\n    ],\r\n    images:[\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Coterraneos-1.png',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Coterraneos-2.png',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Coterraneos-3.png',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Coterraneos-4.png'\r\n    ]\r\n  },\r\n  \/* 4. Comunicaci\u00f3n y Pobreza *\/\r\n  {\r\n    id:'pobreza', icon:'i-megaphone', logo:'https:\/\/comunicacionypobreza.cl\/wp-content\/uploads\/2020\/12\/logo-cyp-color.png', name:'Comunicaci\u00f3n y Pobreza', year:2004,\r\n    purpose:[\r\n      'La alianza Comunicaci\u00f3n y Pobreza est\u00e1 integrada por la Comunidad de Organizaciones Solidarias, la Fundaci\u00f3n Superaci\u00f3n de la Pobreza - Servicio Pa\u00eds, Am\u00e9rica Solidaria, Colunga, 3xi y Avina.',\r\n      'Buscamos generar un cambio de mirada que permita acercar a la opini\u00f3n p\u00fablica a una comprensi\u00f3n m\u00e1s integral del fen\u00f3meno de la pobreza y las estrategias para superarla, sin prejuicios y sin discriminaci\u00f3n.'\r\n    ],\r\n    link:{label:'comunicacionypobreza.cl', url:'https:\/\/comunicacionypobreza.cl\/'},\r\n    blocks:[\r\n      {type:'list', title:'Modelo de Trabajo', items:[\r\n        'Investigaci\u00f3n de las tendencias informativas respecto al tratamiento de los temas pobreza y exclusi\u00f3n en los medios de comunicaci\u00f3n y en la opini\u00f3n p\u00fablica.',\r\n        'Promoci\u00f3n de la vinculaci\u00f3n de los medios de comunicaci\u00f3n, los expertos, la ciudadan\u00eda organizada y los organismos p\u00fablicos con los temas asociados a la pobreza y la exclusi\u00f3n social, a trav\u00e9s del debate en seminarios, conversatorios o talleres.',\r\n        'Distinci\u00f3n de periodistas que contribuyan -a trav\u00e9s de sus trabajos informativos- a cambiar la mirada sobre la pobreza y la exclusi\u00f3n social en la opini\u00f3n p\u00fablica.'\r\n      ]}\r\n    ],\r\n    images:[\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Pobreza-y-Comunicacion.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Pobreza-y-comunicacion-2.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Pobreza-y-comunicacion-3.jpg',\r\n      'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/06\/Pobreza-y-comunicacion-4.jpg'\r\n    ]\r\n  },\r\n  \/* 5. Proyectos Juntos *\/\r\n  {\r\n    id:'juntos', icon:'i-hands', name:'Proyectos Juntos', isGroup:true,\r\n    sub:[\r\n      {\r\n        id:'infancia', icon:'i-childheart', name:'Juntos x la Infancia', year:2017,\r\n        purpose:['Impactamos positivamente en el bienestar de ni\u00f1os, ni\u00f1as y adolescentes que est\u00e1n en cuidados alternativos, a trav\u00e9s de alianzas de colaboraci\u00f3n. Creemos en una sociedad que se hace cargo, en conjunto, de asegurar un mejor presente y futuro para la infancia a lo largo del pa\u00eds.'],\r\n        link:{label:'juntosporlainfancia.cl', url:'https:\/\/www.juntosporlainfancia.cl\/'},\r\n        blocks:[\r\n          {type:'cards', title:'L\u00edneas de trabajo', items:[\r\n            {label:'Alianzas 1+1', text:'Conectamos empresas con residencias de protecci\u00f3n para construir alianzas de colaboraci\u00f3n a largo plazo. Elaboramos planes de trabajo anuales que responden a las necesidades de cada residencia y movilizan los recursos de las empresas. As\u00ed, contribuimos a mejorar las condiciones de cuidado y el bienestar de los ni\u00f1os, ni\u00f1as y adolescentes.'},\r\n            {label:'Apoyo a J\u00f3venes', text:'Acompa\u00f1amos a j\u00f3venes que est\u00e1n por egresar o ya egresaron de residencias en su transici\u00f3n hacia la vida adulta. Articulamos alianzas y redes que fortalecen sus habilidades para una autonom\u00eda progresiva. Adem\u00e1s, impulsamos acciones para visibilizar y mejorar las condiciones en que enfrentan este proceso.'},\r\n            {label:'Fortalecimiento Organizacional', text:'Fortalecemos las competencias de quienes lideran las organizaciones que forman parte de nuestra red. Generamos espacios para compartir experiencias y mejorar sus capacidades de gesti\u00f3n. Con ello, contribuimos a fortalecer a las organizaciones responsables del cuidado de ni\u00f1os, ni\u00f1as y adolescentes.'}\r\n          ]}\r\n        ],\r\n        images:[\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-1.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-2.jpeg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-2.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-3.jpeg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-3-scaled.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-4-scaled.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-12-scaled.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-11-scaled.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-10.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-9.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-infancia-8.jpg'\r\n        ]\r\n      },\r\n      {\r\n        id:'reinsercion', icon:'i-keydoor', name:'Juntos x la Reinserci\u00f3n', year:'2018',\r\n        purpose:['Busca disminuir la reincidencia delictual generando m\u00e1s y mejores oportunidades de reinserci\u00f3n para personas privadas de libertad. Articula una red de m\u00e1s de 50 organizaciones de la sociedad civil, emprendimientos y programas municipales, que trabajan desde distintos \u00e1mbitos y territorios por una reinserci\u00f3n social efectiva en Chile.'],\r\n        link:{label:'juntosporlareinsercion.cl', url:'https:\/\/www.juntosporlareinsercion.cl\/'},\r\n        blocks:[\r\n          {type:'steps', title:'Modelo de Trabajo', items:[\r\n            {label:'Vinculando', text:'Invitamos a organizaciones de la sociedad civil y emprendimientos que trabajan por la reinserci\u00f3n social a unirse a la red y articularse con otros actores relevantes.'},\r\n            {label:'Fortaleciendo', text:'Somos un equipo de soporte que apoya en intermediaci\u00f3n laboral, consecuci\u00f3n de recursos, difusi\u00f3n y alianzas que fortalezcan a las organizaciones.'},\r\n            {label:'Voz com\u00fan para incidir', text:'Construimos una voz com\u00fan para realizar propuestas y observaciones a las pol\u00edticas p\u00fablicas relacionadas con la reinserci\u00f3n social.'}\r\n          ]}\r\n        ],\r\n        images:[\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-reinsercion-1-scaled.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-reinsercion-2.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-reinsercion-3.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-por-la-reinsercion-1.jpeg',\r\n          'https:\/\/lagosdigital.cl\/comunidad\/wp-content\/uploads\/2026\/10\/julio-2026-encuentro-del-prejuicio-a-la-oportunidad-scaled.jpeg'\r\n        ]\r\n      },\r\n      {\r\n        id:'calle', icon:'i-homeline', name:'Juntos en la Calle', year:'2019',\r\n        purpose:['Solucionar la situaci\u00f3n de calle a trav\u00e9s de una red territorial articulada que cuente con el apoyo empresarial y dialogue con el sector p\u00fablico para potenciar los talentos, entregar herramientas y co-construir soluciones concretas para abordar el problema de quienes viven en situaci\u00f3n de calle.'],\r\n        blocks:[\r\n          {type:'list', title:'Modelo de Trabajo', intro:'Invitamos a las empresas a encontrarse y vincularse con las personas que viven en la calle, co-laborando con las fundaciones que trabajan por la superaci\u00f3n de este problema, en los siguientes \u00e1mbitos:', items:[\r\n            'Estrategia, dise\u00f1o organizacional y apoyo a la gesti\u00f3n.',\r\n            'Formaci\u00f3n y capacitaci\u00f3n de equipos t\u00e9cnicos.',\r\n            'Desarrollo de innovaci\u00f3n.',\r\n            'Inclusi\u00f3n laboral de personas en situaci\u00f3n de calle.',\r\n            'Mejoras en infraestructura e inmuebles.'\r\n          ]},\r\n          {type:'pairs', title:'\u00bfCon qui\u00e9n trabajamos?', items:[\r\n            {label:'Sociedad Civil', text:'Fundaciones y corporaciones sin fines de lucro que reportan su estado de resultados auditado y trabajan por la superaci\u00f3n de la situaci\u00f3n de calle. Hasta el momento contamos con 7.'},\r\n            {label:'Empresas', text:'Territorialmente cercanas y\/o motivadas en apoyar en alguna de las \u00e1reas de trabajo.'}\r\n          ]}\r\n        ],\r\n        images:[\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-en-la-calle-1.jpeg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-en-la-calle-5-scaled.jpg',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-en-la-Calle-1.png',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-en-la-Calle-2.png',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-en-la-Calle-3.png',\r\n          'https:\/\/comunidad-org.cl\/wp-content\/uploads\/2026\/10\/Juntos-en-la-Calle-4.png'\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n];\r\n\r\nconst MAIN = PROJECTS;\r\nlet activeMainId = MAIN[0].id;\r\nlet activeSubId = null;\r\n\r\n\/* ============ FILTROS ============ *\/\r\nconst filterRow = document.getElementById('filterRow');\r\nMAIN.forEach(p => {\r\n  const pill = document.createElement('button');\r\n  pill.className = 'filter-pill';\r\n  pill.dataset.id = p.id;\r\n  pill.setAttribute('role','tab');\r\n  pill.innerHTML = `<span class=\"pill-ico\"><svg class=\"icon\"><use href=\"#${p.icon}\"\/><\/svg><\/span>${p.name}`;\r\n  pill.addEventListener('click', () => selectMain(p.id));\r\n  filterRow.appendChild(pill);\r\n});\r\n\r\nconst subfilterWrap = document.getElementById('subfilterWrap');\r\nconst subfilterRow = document.getElementById('subfilterRow');\r\n\r\nfunction selectMain(id, keepSub){\r\n  activeMainId = id;\r\n  const proj = MAIN.find(p => p.id === id);\r\n  document.querySelectorAll('.filter-pill').forEach(el => el.classList.toggle('active', el.dataset.id === id));\r\n\r\n  if(proj.isGroup){\r\n    subfilterRow.innerHTML = '';\r\n    proj.sub.forEach(s => {\r\n      const sp = document.createElement('button');\r\n      sp.className = 'subfilter-pill';\r\n      sp.dataset.id = s.id;\r\n      sp.textContent = s.name;\r\n      sp.addEventListener('click', () => { activeSubId = s.id; renderSubActive(); renderDetail(s); });\r\n      subfilterRow.appendChild(sp);\r\n    });\r\n    subfilterWrap.classList.add('open');\r\n    activeSubId = (keepSub && proj.sub.some(s => s.id === activeSubId)) ? activeSubId : proj.sub[0].id;\r\n    renderSubActive();\r\n    renderDetail(proj.sub.find(s => s.id === activeSubId));\r\n  } else {\r\n    subfilterWrap.classList.remove('open');\r\n    activeSubId = null;\r\n    renderDetail(proj);\r\n  }\r\n}\r\nfunction renderSubActive(){\r\n  subfilterRow.querySelectorAll('.subfilter-pill').forEach(el => el.classList.toggle('active', el.dataset.id === activeSubId));\r\n}\r\n\r\n\/* ============ DETALLE ============ *\/\r\nconst detailPanel = document.getElementById('detailPanel');\r\nconst reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\nfunction blockHTML(block, offset){\r\n  let inner = `<h3 class=\"block-title\">${block.title}<\/h3>`;\r\n  if(block.type === 'list'){\r\n    inner += (block.intro ? `<p class=\"block-intro\">${block.intro}<\/p>` : '') +\r\n      `<ul class=\"bl-list${block.numbered ? ' numbered' : ''}\">` +\r\n      block.items.map((it,i) => `<li style=\"animation-delay:${(offset+i)*70}ms\">${it}<\/li>`).join('') + `<\/ul>`;\r\n  } else if(block.type === 'steps'){\r\n    inner += `<div class=\"bl-steps\">` +\r\n      block.items.map((it,i) => `<div class=\"step\" style=\"animation-delay:${(offset+i)*90}ms\"><div class=\"step-label\">${it.label}<\/div><p class=\"step-text\">${it.text}<\/p><\/div>`).join('') + `<\/div>`;\r\n  } else if(block.type === 'cards'){\r\n    inner += `<div class=\"bl-cards\">` +\r\n      block.items.map((it,i) => `<div class=\"item\" style=\"animation-delay:${(offset+i)*90}ms\"><div class=\"step-label\">${it.label}<\/div><p class=\"step-text\">${it.text}<\/p><\/div>`).join('') + `<\/div>`;\r\n  } else if(block.type === 'pairs'){\r\n    inner += `<div class=\"bl-pairs\">` +\r\n      block.items.map(it => `<div class=\"pair-card\"><div class=\"step-label\">${it.label}<\/div><p class=\"step-text\">${it.text}<\/p><\/div>`).join('') + `<\/div>`;\r\n  } else if(block.type === 'text'){\r\n    inner += `<div class=\"bl-text\">${block.text.map(t => `<p>${t}<\/p>`).join('')}<\/div>`;\r\n  }\r\n  return `<div class=\"detail-block\">${inner}<\/div>`;\r\n}\r\n\r\nfunction markLastWord(name){\r\n  const parts = name.split(' ');\r\n  const last = parts.pop();\r\n  return (parts.length ? parts.join(' ') + ' ' : '') + `<span class=\"mark\">${last}<\/span>`;\r\n}\r\n\r\nlet currentImages = [];\r\nlet lbIndex = 0;\r\n\r\nfunction renderDetail(proj){\r\n  const galleryHTML = (!proj.images || proj.images.length === 0)\r\n    ? `<div class=\"no-gallery\">Este proyecto a\u00fan no cuenta con registro fotogr\u00e1fico publicado.<\/div>`\r\n    : `<div class=\"gallery-grid\">` +\r\n        proj.images.map(src => `<button class=\"g-item\" data-src=\"${src}\" aria-label=\"Ampliar imagen\"><img src=\"${src}\" alt=\"${proj.name}\" referrerpolicy=\"no-referrer\" decoding=\"async\" onerror=\"imgFallback(this)\"><span class=\"g-zoom\"><svg class=\"icon\"><use href=\"#i-zoom\"\/><\/svg><\/span><\/button>`).join('') +\r\n      `<\/div>`;\r\n\r\n  const headVisual = proj.logo\r\n    ? `<div class=\"detail-logo\"><img decoding=\"async\" src=\"${proj.logo}\" alt=\"Logo ${proj.name}\" referrerpolicy=\"no-referrer\" onerror=\"this.closest('.detail-logo').remove()\"><\/div>`\r\n    : `<div class=\"detail-ico ${reduceMotion ? '' : 'spin'}\"><svg class=\"icon\"><use href=\"#${proj.icon}\"\/><\/svg><\/div>`;\r\n\r\n  detailPanel.innerHTML = `\r\n    <div class=\"detail-head\">\r\n      ${headVisual}\r\n      <div class=\"detail-title\">\r\n        <h2>${markLastWord(proj.name)}<\/h2>\r\n        <span class=\"detail-year\">A\u00f1o inicio: ${proj.year}<\/span>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"detail-stack\">\r\n      ${proj.link ? `<div class=\"detail-linkbtn\"><a class=\"btn btn-primary\" href=\"${proj.link.url}\" target=\"_blank\" rel=\"noopener\">${proj.link.label} <svg class=\"icon\"><use href=\"#i-arrow\"\/><\/svg><\/a><\/div>` : ''}\r\n      ${blockHTML({type:'text', title:'Prop\u00f3sito', text:proj.purpose}, 0)}\r\n      ${proj.blocks.map((b,i) => blockHTML(b, i*2)).join('')}\r\n    <\/div>\r\n    <div class=\"detail-gallery\">${galleryHTML}<\/div>\r\n  `;\r\n  detailPanel.classList.remove('enter');\r\n  void detailPanel.offsetWidth;\r\n  detailPanel.classList.add('enter');\r\n\r\n  const grid = detailPanel.querySelector('.gallery-grid');\r\n  if(grid){\r\n    grid.addEventListener('click', e => { const b = e.target.closest('.g-item'); if(b) openLightbox(parseInt(b.dataset.idx,10)); });\r\n  }\r\n  layoutGallery();\r\n}\r\n\r\n\/* Si una foto falla, se reintenta una vez y, si persiste, se muestra un recuadro neutro (nunca se oculta la galer\u00eda). *\/\r\nfunction imgFallback(img){\r\n  if(!img.dataset.retried){\r\n    img.dataset.retried = '1';\r\n    const u = img.getAttribute('src');\r\n    setTimeout(() => { img.src = u + (u.includes('?') ? '&' : '?') + 'r=' + Date.now(); }, 400);\r\n    return;\r\n  }\r\n  img.style.visibility = 'hidden';\r\n  img.closest('.g-item').classList.add('g-broken');\r\n}\r\n\r\nconst GALLERY_MAX = 6;\r\nfunction layoutGallery(){\r\n  const grid = detailPanel.querySelector('.gallery-grid');\r\n  if(!grid){ currentImages = []; return; }\r\n  const items = [...grid.querySelectorAll('.g-item')];\r\n  if(!items.length){\r\n    grid.outerHTML = '<div class=\"no-gallery\">Este proyecto a\u00fan no cuenta con registro fotogr\u00e1fico publicado.<\/div>';\r\n    currentImages = []; return;\r\n  }\r\n  items.forEach((el,i) => {\r\n    el.classList.toggle('g-hidden', i >= GALLERY_MAX);\r\n    el.dataset.idx = i;\r\n    const old = el.querySelector('.g-more'); if(old) old.remove();\r\n  });\r\n  if(items.length > GALLERY_MAX){\r\n    const more = document.createElement('span');\r\n    more.className = 'g-more';\r\n    more.textContent = '+' + (items.length - GALLERY_MAX) + ' fotos';\r\n    items[GALLERY_MAX - 1].appendChild(more);\r\n  }\r\n  const visible = Math.min(items.length, GALLERY_MAX);\r\n  grid.className = 'gallery-grid c' + visible;\r\n  currentImages = items.map(el => el.dataset.src);\r\n}\r\n\r\n\/* ============ LIGHTBOX ============ *\/\r\nconst lightbox = document.getElementById('lightbox');\r\nconst lbImg = document.getElementById('lbImg');\r\nfunction openLightbox(i){ lbIndex = i; lbImg.src = currentImages[i]; lightbox.classList.add('open'); }\r\nfunction closeLightbox(){ lightbox.classList.remove('open'); }\r\nfunction stepLightbox(d){ lbIndex = (lbIndex + d + currentImages.length) % currentImages.length; lbImg.src = currentImages[lbIndex]; }\r\ndocument.getElementById('lbClose').addEventListener('click', closeLightbox);\r\ndocument.getElementById('lbPrev').addEventListener('click', () => stepLightbox(-1));\r\ndocument.getElementById('lbNext').addEventListener('click', () => stepLightbox(1));\r\nlightbox.addEventListener('click', e => { if(e.target === lightbox) closeLightbox(); });\r\ndocument.addEventListener('keydown', e => {\r\n  if(!lightbox.classList.contains('open')) return;\r\n  if(e.key === 'Escape') closeLightbox();\r\n  if(e.key === 'ArrowRight') stepLightbox(1);\r\n  if(e.key === 'ArrowLeft') stepLightbox(-1);\r\n});\r\n\r\n\/* ============ INICIO ============ *\/\r\nselectMain(activeMainId);\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Proyectos y alianzas Conoce nuestras iniciativas y redes de colaboraci\u00f3n. Filtra para descubrir c\u00f3mo cada proyecto conecta, prepara y moviliza a la sociedad civil. Proyectos y Alianzas \u2013 Comunidad de Organizaciones Solidarias<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-8143","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/pages\/8143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/comments?post=8143"}],"version-history":[{"count":49,"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/pages\/8143\/revisions"}],"predecessor-version":[{"id":8619,"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/pages\/8143\/revisions\/8619"}],"wp:attachment":[{"href":"https:\/\/lagosdigital.cl\/comunidad\/wp-json\/wp\/v2\/media?parent=8143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}