{"id":25571,"date":"2025-12-01T17:39:39","date_gmt":"2025-12-01T22:39:39","guid":{"rendered":"https:\/\/cbf-trubudget.com\/?page_id=25571"},"modified":"2026-06-15T20:36:22","modified_gmt":"2026-06-16T00:36:22","slug":"news","status":"publish","type":"page","link":"https:\/\/caribbeanbiodiversityfund.org\/es\/news\/","title":{"rendered":"Noticias"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"25571\" class=\"elementor elementor-25571\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-cc71eb3 elementor-section-height-full elementor-section-content-middle animated-slow elementor-section-boxed elementor-section-height-default elementor-section-items-middle elementor-invisible\" data-id=\"cc71eb3\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;animation&quot;:&quot;fadeIn&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/youtu.be\\\/CnYva-EofuE&quot;,&quot;background_play_on_mobile&quot;:&quot;yes&quot;,&quot;background_privacy_mode&quot;:&quot;yes&quot;,&quot;shape_divider_bottom&quot;:&quot;wave-brush&quot;}\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-background-video-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-background-video-embed\" role=\"presentation\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t<div class=\"elementor-shape elementor-shape-bottom\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 283.5 27.8\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" d=\"M283.5,9.7c0,0-7.3,4.3-14,4.6c-6.8,0.3-12.6,0-20.9-1.5c-11.3-2-33.1-10.1-44.7-5.7\ts-12.1,4.6-18,7.4c-6.6,3.2-20,9.6-36.6,9.3C131.6,23.5,99.5,7.2,86.3,8c-1.4,0.1-6.6,0.8-10.5,2c-3.8,1.2-9.4,3.8-17,4.7\tc-3.2,0.4-8.3,1.1-14.2,0.9c-1.5-0.1-6.3-0.4-12-1.6c-5.7-1.2-11-3.1-15.8-3.7C6.5,9.2,0,10.8,0,10.8V0h283.5V9.7z M260.8,11.3\tc-0.7-1-2-0.4-4.3-0.4c-2.3,0-6.1-1.2-5.8-1.1c0.3,0.1,3.1,1.5,6,1.9C259.7,12.2,261.4,12.3,260.8,11.3z M242.4,8.6\tc0,0-2.4-0.2-5.6-0.9c-3.2-0.8-10.3-2.8-15.1-3.5c-8.2-1.1-15.8,0-15.1,0.1c0.8,0.1,9.6-0.6,17.6,1.1c3.3,0.7,9.3,2.2,12.4,2.7\tC239.9,8.7,242.4,8.6,242.4,8.6z M185.2,8.5c1.7-0.7-13.3,4.7-18.5,6.1c-2.1,0.6-6.2,1.6-10,2c-3.9,0.4-8.9,0.4-8.8,0.5\tc0,0.2,5.8,0.8,11.2,0c5.4-0.8,5.2-1.1,7.6-1.6C170.5,14.7,183.5,9.2,185.2,8.5z M199.1,6.9c0.2,0-0.8-0.4-4.8,1.1\tc-4,1.5-6.7,3.5-6.9,3.7c-0.2,0.1,3.5-1.8,6.6-3C197,7.5,199,6.9,199.1,6.9z M283,6c-0.1,0.1-1.9,1.1-4.8,2.5s-6.9,2.8-6.7,2.7\tc0.2,0,3.5-0.6,7.4-2.5C282.8,6.8,283.1,5.9,283,6z M31.3,11.6c0.1-0.2-1.9-0.2-4.5-1.2s-5.4-1.6-7.8-2C15,7.6,7.3,8.5,7.7,8.6\tC8,8.7,15.9,8.3,20.2,9.3c2.2,0.5,2.4,0.5,5.7,1.6S31.2,11.9,31.3,11.6z M73,9.2c0.4-0.1,3.5-1.6,8.4-2.6c4.9-1.1,8.9-0.5,8.9-0.8\tc0-0.3-1-0.9-6.2-0.3S72.6,9.3,73,9.2z M71.6,6.7C71.8,6.8,75,5.4,77.3,5c2.3-0.3,1.9-0.5,1.9-0.6c0-0.1-1.1-0.2-2.7,0.2\tC74.8,5.1,71.4,6.6,71.6,6.7z M93.6,4.4c0.1,0.2,3.5,0.8,5.6,1.8c2.1,1,1.8,0.6,1.9,0.5c0.1-0.1-0.8-0.8-2.4-1.3\tC97.1,4.8,93.5,4.2,93.6,4.4z M65.4,11.1c-0.1,0.3,0.3,0.5,1.9-0.2s2.6-1.3,2.2-1.2s-0.9,0.4-2.5,0.8C65.3,10.9,65.5,10.8,65.4,11.1\tz M34.5,12.4c-0.2,0,2.1,0.8,3.3,0.9c1.2,0.1,2,0.1,2-0.2c0-0.3-0.1-0.5-1.6-0.4C36.6,12.8,34.7,12.4,34.5,12.4z M152.2,21.1\tc-0.1,0.1-2.4-0.3-7.5-0.3c-5,0-13.6-2.4-17.2-3.5c-3.6-1.1,10,3.9,16.5,4.1C150.5,21.6,152.3,21,152.2,21.1z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M269.6,18c-0.1-0.1-4.6,0.3-7.2,0c-7.3-0.7-17-3.2-16.6-2.9c0.4,0.3,13.7,3.1,17,3.3\tC267.7,18.8,269.7,18,269.6,18z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M227.4,9.8c-0.2-0.1-4.5-1-9.5-1.2c-5-0.2-12.7,0.6-12.3,0.5c0.3-0.1,5.9-1.8,13.3-1.2\tS227.6,9.9,227.4,9.8z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M204.5,13.4c-0.1-0.1,2-1,3.2-1.1c1.2-0.1,2,0,2,0.3c0,0.3-0.1,0.5-1.6,0.4\tC206.4,12.9,204.6,13.5,204.5,13.4z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M201,10.6c0-0.1-4.4,1.2-6.3,2.2c-1.9,0.9-6.2,3.1-6.1,3.1c0.1,0.1,4.2-1.6,6.3-2.6\tS201,10.7,201,10.6z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M154.5,26.7c-0.1-0.1-4.6,0.3-7.2,0c-7.3-0.7-17-3.2-16.6-2.9c0.4,0.3,13.7,3.1,17,3.3\tC152.6,27.5,154.6,26.8,154.5,26.7z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M41.9,19.3c0,0,1.2-0.3,2.9-0.1c1.7,0.2,5.8,0.9,8.2,0.7c4.2-0.4,7.4-2.7,7-2.6\tc-0.4,0-4.3,2.2-8.6,1.9c-1.8-0.1-5.1-0.5-6.7-0.4S41.9,19.3,41.9,19.3z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M75.5,12.6c0.2,0.1,2-0.8,4.3-1.1c2.3-0.2,2.1-0.3,2.1-0.5c0-0.1-1.8-0.4-3.4,0\tC76.9,11.5,75.3,12.5,75.5,12.6z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M15.6,13.2c0-0.1,4.3,0,6.7,0.5c2.4,0.5,5,1.9,5,2c0,0.1-2.7-0.8-5.1-1.4\tC19.9,13.7,15.7,13.3,15.6,13.2z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5116a14\" data-id=\"5116a14\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f2eaa52 elementor-widget elementor-widget-eael-breadcrumbs\" data-id=\"f2eaa52\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-breadcrumbs.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"eael-breadcrumbs\">\n\t\t\t<div class=\"eael-breadcrumbs__content\"><a href=\"https:\/\/caribbeanbiodiversityfund.org\/es\">Home<\/a> <span class=\"eael-breadcrumb-separator\">\/<\/span> <span class = \"eael-current\">P\u00e1gina<\/span><\/div>\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a85a3d1 elementor-widget elementor-widget-text-editor\" data-id=\"a85a3d1\" 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>With over 1,600 threatened species, the Caribbean is one of the most critically endangered hotspots in the world. Stay up-to-date with how we are sustaining our natural resources.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-01935d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"01935d7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-86d1894\" data-id=\"86d1894\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-cb36e31 elementor-widget elementor-widget-spacer\" data-id=\"cb36e31\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-9c5a542 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9c5a542\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0eee79e\" data-id=\"0eee79e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ded2643 elementor-widget elementor-widget-elementskit-heading\" data-id=\"ded2643\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"elementskit-heading.default\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" ><div class=\"ekit-heading elementskit-section-title-wraper text_left   ekit_heading_tablet-   ekit_heading_mobile-\"><h2 class=\"ekit-heading--title elementskit-section-title \">News & Blog<\/h2><div class=\"ekit_heading_separetor_wraper ekit_heading_elementskit-border-divider ekit-dotted\"><div class=\"elementskit-border-divider ekit-dotted\"><\/div><\/div><h4 class=\"ekit-heading--subtitle elementskit-section-subtitle  \">\n\t\t\t\t\t\tSharing from the Caribbean region where innovative solutions are being used to create a more sustainable environment for all.\n\t\t\t\t\t<\/h4><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e81af2 elementor-widget elementor-widget-html\" data-id=\"8e81af2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"cbf-news-archive-widget\" aria-label=\"CBF News and Press Releases\">\n  <div class=\"cbf-news-widget-inner\">\n\n    <div id=\"cbf-news-tabs\" class=\"cbf-news-tabs\">\n      <div class=\"cbf-news-loading\" style=\"height:42px;\"><\/div>\n    <\/div>\n\n    <div id=\"cbf-news-grid\" class=\"cbf-news-grid\">\n      <div class=\"cbf-news-loading\">Loading news...<\/div>\n    <\/div>\n\n    <div id=\"cbf-news-pagination\" class=\"cbf-news-pagination\"><\/div>\n\n  <\/div>\n<\/section>\n\n<style>\n  .cbf-news-archive-widget {\n    font-family: \"Outfit\", Arial, sans-serif;\n    width: 100%;\n    padding: 30px 0 60px;\n    color: #333333;\n  }\n\n  .cbf-news-widget-inner {\n    width: min(1240px, 100%);\n    margin: 0 auto;\n    padding: 0 20px;\n  }\n\n  \/* \u2500\u2500 Filter tabs \u2500\u2500 *\/\n\n  .cbf-news-tabs {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    margin-bottom: 28px;\n  }\n\n  .cbf-news-tab-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 9px 18px;\n    border-radius: 999px;\n    border: 1.5px solid rgba(31, 74, 148, 0.22);\n    background: #ffffff;\n    color: #1F4A94;\n    font-family: \"Outfit\", Arial, sans-serif;\n    font-size: 13px;\n    font-weight: 800;\n    letter-spacing: 0.03em;\n    cursor: pointer;\n    transition: all 0.22s ease;\n  }\n\n  .cbf-news-tab-btn:hover {\n    border-color: #1F4A94;\n    background: rgba(31, 74, 148, 0.06);\n  }\n\n  .cbf-news-tab-btn.is-active {\n    background: #1F4A94;\n    color: #ffffff;\n    border-color: #1F4A94;\n  }\n\n  .cbf-news-tab-count {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-width: 20px;\n    height: 20px;\n    padding: 0 5px;\n    border-radius: 999px;\n    font-size: 11px;\n    font-weight: 900;\n  }\n\n  .cbf-news-tab-btn:not(.is-active) .cbf-news-tab-count {\n    background: rgba(31, 74, 148, 0.1);\n    color: #1F4A94;\n  }\n\n  .cbf-news-tab-btn.is-active .cbf-news-tab-count {\n    background: rgba(255, 255, 255, 0.22);\n    color: #ffffff;\n  }\n\n  \/* \u2500\u2500 Grid \u2500\u2500 *\/\n\n  .cbf-news-grid {\n    display: grid;\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n    gap: 24px;\n    align-items: start;\n  }\n\n  .cbf-news-card {\n    background: #ffffff;\n    border: 1px solid rgba(31, 74, 148, 0.12);\n    border-radius: 18px;\n    overflow: hidden;\n    box-shadow: 0 14px 34px rgba(31, 74, 148, 0.08);\n    transition: transform 0.28s ease, box-shadow 0.28s ease;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .cbf-news-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 22px 50px rgba(31, 74, 148, 0.14);\n  }\n\n  .cbf-news-image-link {\n    display: block;\n    text-decoration: none !important;\n  }\n\n  .cbf-news-image {\n    position: relative;\n    min-height: 210px;\n    background-size: cover;\n    background-position: center;\n    background-color: #E6E6E6;\n  }\n\n  .cbf-news-badge {\n    position: absolute;\n    top: 14px;\n    left: 14px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    background: #1F4A94;\n    color: #ffffff;\n    border-radius: 999px;\n    padding: 8px 12px;\n    font-size: 12px;\n    font-weight: 800;\n    line-height: 1;\n    letter-spacing: 0.04em;\n    text-transform: uppercase;\n    box-shadow: 0 8px 22px rgba(0, 0, 0, 0.18);\n  }\n\n  .cbf-news-content {\n    padding: 20px;\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n  }\n\n  .cbf-news-meta {\n    display: flex;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 7px;\n    color: #4D4D4D;\n    font-size: 13px;\n    font-weight: 700;\n    margin-bottom: 12px;\n  }\n\n  .cbf-meta-dot {\n    color: #418344;\n  }\n\n  .cbf-news-title {\n    margin: 0 0 12px;\n    font-size: 20px;\n    line-height: 1.2;\n    font-weight: 900;\n    letter-spacing: -0.02em;\n  }\n\n  .cbf-news-title a {\n    color: #1F4A94;\n    text-decoration: none !important;\n  }\n\n  .cbf-news-title a:hover {\n    color: #418344;\n  }\n\n  .cbf-news-excerpt {\n    color: #4D4D4D;\n    font-size: 15px;\n    line-height: 1.55;\n    margin: 0 0 18px;\n    flex: 1;\n  }\n\n  .cbf-news-read-more {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    background: #418344;\n    color: #ffffff !important;\n    border-radius: 999px;\n    padding: 10px 15px;\n    font-size: 14px;\n    font-weight: 800;\n    text-decoration: none !important;\n    transition: background 0.25s ease, transform 0.25s ease;\n  }\n\n  .cbf-news-read-more:hover {\n    background: #1F4A94;\n    transform: translateY(-2px);\n  }\n\n  \/* \u2500\u2500 Pagination \u2500\u2500 *\/\n\n  .cbf-news-pagination {\n    margin-top: 42px;\n    display: flex;\n    justify-content: center;\n    flex-wrap: wrap;\n    gap: 8px;\n  }\n\n  .cbf-news-page-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-width: 42px;\n    min-height: 42px;\n    padding: 10px 14px;\n    border-radius: 999px;\n    background: #ffffff;\n    border: 1px solid rgba(31, 74, 148, 0.18);\n    color: #1F4A94;\n    font-size: 14px;\n    font-weight: 800;\n    text-decoration: none !important;\n    cursor: pointer;\n    transition: all 0.25s ease;\n  }\n\n  .cbf-news-page-btn:hover,\n  .cbf-news-page-btn.is-active {\n    background: #1F4A94;\n    color: #ffffff;\n    border-color: #1F4A94;\n  }\n\n  \/* \u2500\u2500 States \u2500\u2500 *\/\n\n  .cbf-news-loading,\n  .cbf-news-empty {\n    grid-column: 1 \/ -1;\n    background: #ffffff;\n    border: 1px solid rgba(31, 74, 148, 0.12);\n    border-radius: 18px;\n    padding: 28px;\n    color: #4D4D4D;\n    box-shadow: 0 14px 34px rgba(31, 74, 148, 0.08);\n  }\n\n  \/* \u2500\u2500 Responsive \u2500\u2500 *\/\n\n  @media (max-width: 1100px) {\n    .cbf-news-grid {\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n    }\n  }\n\n  @media (max-width: 820px) {\n    .cbf-news-grid {\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n  }\n\n  @media (max-width: 560px) {\n    .cbf-news-widget-inner {\n      padding: 0 16px;\n    }\n\n    .cbf-news-grid {\n      grid-template-columns: 1fr;\n      gap: 18px;\n    }\n\n    .cbf-news-image {\n      min-height: 220px;\n    }\n\n    .cbf-news-title {\n      font-size: 20px;\n    }\n  }\n<\/style>\n\n<script>\n  (function () {\n    const grid          = document.getElementById(\"cbf-news-grid\");\n    const pagination    = document.getElementById(\"cbf-news-pagination\");\n    const tabsContainer = document.getElementById(\"cbf-news-tabs\");\n\n    if (!grid || !pagination || !tabsContainer) return;\n\n    const POSTS_PER_PAGE = 16;\n\n    \/\/ \u2500\u2500 TAB DEFINITIONS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    \/\/ To add a new tab, add an entry with the matching WordPress category slug.\n    \/\/ \"all\" is a reserved slug that fetches across every other slug combined.\n    const TABS = [\n      { label: \"All\",            slug: \"all\" },\n      { label: \"CBF News\",       slug: \"news\" },\n      { label: \"Press Releases\", slug: \"press-release\" },\n    ];\n    \/\/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    const ALL_SLUGS = TABS\n      .filter(function (t) { return t.slug !== \"all\"; })\n      .map(function (t) { return t.slug; });\n\n    let currentPage = 1;\n    let totalPages  = 1;\n    let activeSlug  = \"all\";\n    let categoryMap = {};\n    let countCache  = {};\n\n    \/\/ \u2500\u2500 UTILITIES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    function stripHtml(html) {\n      const temp = document.createElement(\"div\");\n      temp.innerHTML = html || \"\";\n      return temp.textContent || temp.innerText || \"\";\n    }\n\n    function decodeHtml(html) {\n      const txt = document.createElement(\"textarea\");\n      txt.innerHTML = html || \"\";\n      return txt.value;\n    }\n\n    function trimWords(text, limit) {\n      const words = text.trim().split(\/\\s+\/);\n      if (words.length <= limit) return text;\n      return words.slice(0, limit).join(\" \") + \"...\";\n    }\n\n    function estimateReadingTime(content) {\n      const clean = stripHtml(content);\n      const words = clean.trim().split(\/\\s+\/).filter(Boolean).length;\n      return Math.max(1, Math.ceil(words \/ 200)) + \" min read\";\n    }\n\n    function formatDate(dateString) {\n      const date = new Date(dateString);\n      return date.toLocaleDateString(\"en-US\", {\n        year: \"numeric\",\n        month: \"long\",\n        day: \"numeric\"\n      });\n    }\n\n    function getBadge(post) {\n      if (!post.categories || !post.categories.length) return \"CBF News\";\n      for (const id of post.categories) {\n        const cat = categoryMap[id];\n        if (cat && cat.slug === \"press-release\") return \"Press Release\";\n        if (cat && cat.slug === \"news\") return \"CBF News\";\n      }\n      return \"CBF News\";\n    }\n\n    function getImage(post) {\n      if (\n        post._embedded &&\n        post._embedded[\"wp:featuredmedia\"] &&\n        post._embedded[\"wp:featuredmedia\"][0] &&\n        post._embedded[\"wp:featuredmedia\"][0].source_url\n      ) {\n        return post._embedded[\"wp:featuredmedia\"][0].source_url;\n      }\n      return \"https:\/\/caribbeanbiodiversityfund.org\/wp-content\/uploads\/2023\/09\/cbf-logo.png\";\n    }\n\n    \/\/ \u2500\u2500 CATEGORY RESOLUTION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    function fetchCategories() {\n      return fetch(\"\/wp-json\/wp\/v2\/categories?slug=\" + ALL_SLUGS.join(\",\") + \"&per_page=100\")\n        .then(function (r) {\n          if (!r.ok) throw new Error(\"Category fetch failed.\");\n          return r.json();\n        })\n        .then(function (categories) {\n          categories.forEach(function (cat) {\n            categoryMap[cat.id] = cat;\n          });\n          if (!Object.keys(categoryMap).length) {\n            throw new Error(\"No matching categories found.\");\n          }\n        });\n    }\n\n    \/\/ \u2500\u2500 TAB COUNTS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    \/\/ Fetches post totals via X-WP-Total header. Cached after first load.\n\n    function fetchCountForSlug(slug) {\n      if (countCache[slug] !== undefined) {\n        return Promise.resolve(countCache[slug]);\n      }\n\n      const ids = slug === \"all\"\n        ? Object.keys(categoryMap).join(\",\")\n        : Object.values(categoryMap)\n            .filter(function (c) { return c.slug === slug; })\n            .map(function (c) { return c.id; })\n            .join(\",\");\n\n      if (!ids) return Promise.resolve(0);\n\n      return fetch(\"\/wp-json\/wp\/v2\/posts?categories=\" + ids + \"&per_page=1&page=1\")\n        .then(function (r) {\n          const total = parseInt(r.headers.get(\"X-WP-Total\"), 10) || 0;\n          countCache[slug] = total;\n          return total;\n        })\n        .catch(function () { return 0; });\n    }\n\n    function loadTabCounts() {\n      const promises = TABS.map(function (tab) {\n        return fetchCountForSlug(tab.slug).then(function (count) {\n          return { slug: tab.slug, count: count };\n        });\n      });\n\n      return Promise.all(promises).then(function (results) {\n        const counts = {};\n        results.forEach(function (r) { counts[r.slug] = r.count; });\n        return counts;\n      });\n    }\n\n    \/\/ \u2500\u2500 TAB RENDERING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    function renderTabs(counts) {\n      tabsContainer.innerHTML = TABS.map(function (tab) {\n        const count  = counts[tab.slug] !== undefined ? counts[tab.slug] : \"\";\n        const active = tab.slug === activeSlug ? \"is-active\" : \"\";\n        return `\n          <button class=\"cbf-news-tab-btn ${active}\" data-slug=\"${tab.slug}\">\n            ${tab.label}\n            ${count !== \"\" ? `<span class=\"cbf-news-tab-count\">${count}<\/span>` : \"\"}\n          <\/button>\n        `;\n      }).join(\"\");\n\n      tabsContainer.querySelectorAll(\".cbf-news-tab-btn\").forEach(function (btn) {\n        btn.addEventListener(\"click\", function () {\n          const slug = this.getAttribute(\"data-slug\");\n          if (slug === activeSlug) return;\n          activeSlug  = slug;\n          currentPage = 1;\n          tabsContainer.querySelectorAll(\".cbf-news-tab-btn\").forEach(function (b) {\n            b.classList.toggle(\"is-active\", b.getAttribute(\"data-slug\") === activeSlug);\n          });\n          fetchPosts();\n        });\n      });\n    }\n\n    \/\/ \u2500\u2500 POST RENDERING \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    function renderPosts(posts) {\n      if (!posts.length) {\n        grid.innerHTML = `\n          <div class=\"cbf-news-empty\">\n            No posts found for this category. Confirm that posts are tagged under the correct slug.\n          <\/div>\n        `;\n        return;\n      }\n\n      grid.innerHTML = posts.map(function (post) {\n        const title       = decodeHtml(post.title && post.title.rendered ? post.title.rendered : \"Untitled\");\n        const link        = post.link;\n        const image       = getImage(post);\n        const badge       = getBadge(post);\n        const date        = formatDate(post.date);\n        const readingTime = estimateReadingTime(post.content && post.content.rendered ? post.content.rendered : \"\");\n        const excerpt     = trimWords(stripHtml(post.excerpt && post.excerpt.rendered ? post.excerpt.rendered : \"\"), 22);\n\n        return `\n          <article class=\"cbf-news-card\">\n            <a href=\"${link}\" class=\"cbf-news-image-link\" aria-label=\"${title}\">\n              <div class=\"cbf-news-image\" style=\"background-image: url('${image}');\">\n                <span class=\"cbf-news-badge\">${badge}<\/span>\n              <\/div>\n            <\/a>\n            <div class=\"cbf-news-content\">\n              <div class=\"cbf-news-meta\">\n                <span>${date}<\/span>\n                <span class=\"cbf-meta-dot\">\u2022<\/span>\n                <span>${readingTime}<\/span>\n              <\/div>\n              <h3 class=\"cbf-news-title\">\n                <a href=\"${link}\">${title}<\/a>\n              <\/h3>\n              <p class=\"cbf-news-excerpt\">${excerpt}<\/p>\n              <a href=\"${link}\" class=\"cbf-news-read-more\">Read More<\/a>\n            <\/div>\n          <\/article>\n        `;\n      }).join(\"\");\n    }\n\n    \/\/ \u2500\u2500 PAGINATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    function renderPagination() {\n      pagination.innerHTML = \"\";\n      if (totalPages <= 1) return;\n\n      const buttons = [];\n\n      if (currentPage > 1) {\n        buttons.push({ label: \"Previous\", page: currentPage - 1, active: false });\n      }\n\n      for (let i = 1; i <= totalPages; i++) {\n        if (i === 1 || i === totalPages || Math.abs(i - currentPage) <= 2) {\n          buttons.push({ label: i, page: i, active: i === currentPage });\n        }\n      }\n\n      if (currentPage < totalPages) {\n        buttons.push({ label: \"Next\", page: currentPage + 1, active: false });\n      }\n\n      pagination.innerHTML = buttons.map(function (b) {\n        return `\n          <button class=\"cbf-news-page-btn ${b.active ? \"is-active\" : \"\"}\" data-page=\"${b.page}\">\n            ${b.label}\n          <\/button>\n        `;\n      }).join(\"\");\n\n      pagination.querySelectorAll(\".cbf-news-page-btn\").forEach(function (btn) {\n        btn.addEventListener(\"click\", function () {\n          const page = parseInt(this.getAttribute(\"data-page\"), 10);\n          if (!page || page === currentPage) return;\n          currentPage = page;\n          fetchPosts();\n          const top = document.querySelector(\".cbf-news-archive-widget\").getBoundingClientRect().top + window.pageYOffset - 120;\n          window.scrollTo({ top: top, behavior: \"smooth\" });\n        });\n      });\n    }\n\n    \/\/ \u2500\u2500 POST FETCH \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    function getCategoryIdsForActiveSlug() {\n      if (activeSlug === \"all\") {\n        return Object.keys(categoryMap).join(\",\");\n      }\n      return Object.values(categoryMap)\n        .filter(function (c) { return c.slug === activeSlug; })\n        .map(function (c) { return c.id; })\n        .join(\",\");\n    }\n\n    function fetchPosts() {\n      grid.innerHTML    = `<div class=\"cbf-news-loading\">Loading news...<\/div>`;\n      pagination.innerHTML = \"\";\n\n      const ids = getCategoryIdsForActiveSlug();\n\n      if (!ids) {\n        grid.innerHTML = `<div class=\"cbf-news-empty\">No category IDs resolved for this tab.<\/div>`;\n        return;\n      }\n\n      const url =\n        \"\/wp-json\/wp\/v2\/posts?categories=\" + ids +\n        \"&per_page=\" + POSTS_PER_PAGE +\n        \"&page=\"     + currentPage +\n        \"&_embed=1\"  +\n        \"&orderby=date\" +\n        \"&order=desc\";\n\n      fetch(url)\n        .then(function (r) {\n          if (!r.ok) throw new Error(\"Post fetch failed.\");\n          totalPages = parseInt(r.headers.get(\"X-WP-TotalPages\"), 10) || 1;\n          return r.json();\n        })\n        .then(function (posts) {\n          renderPosts(posts);\n          renderPagination();\n        })\n        .catch(function () {\n          grid.innerHTML = `\n            <div class=\"cbf-news-empty\">\n              Unable to load posts. Confirm the REST API is enabled and category slugs exist.\n            <\/div>\n          `;\n        });\n    }\n\n    \/\/ \u2500\u2500 INIT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n    fetchCategories()\n      .then(loadTabCounts)\n      .then(renderTabs)\n      .then(fetchPosts)\n      .catch(function () {\n        tabsContainer.innerHTML = \"\";\n        grid.innerHTML = `\n          <div class=\"cbf-news-empty\">\n            Unable to load categories. Confirm that the category slugs exist in WordPress.\n          <\/div>\n        `;\n      });\n\n  })();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-8b96339 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8b96339\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-800efb8\" data-id=\"800efb8\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b121e82 elementor-widget elementor-widget-spacer\" data-id=\"b121e82\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Home \/ Page With over 1,600 threatened species, the Caribbean is one of the most critically endangered hotspots in the world. Stay up-to-date with how we are sustaining our natural [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"_EventAllDay":false,"_EventTimezone":"","_EventStartDate":"","_EventEndDate":"","_EventStartDateUTC":"","_EventEndDateUTC":"","_EventShowMap":false,"_EventShowMapLink":false,"_EventURL":"","_EventCost":"","_EventCostDescription":"","_EventCurrencySymbol":"","_EventCurrencyCode":"","_EventCurrencyPosition":"","_EventDateTimeSeparator":"","_EventTimeRangeSeparator":"","_EventOrganizerID":[],"_EventVenueID":[],"_OrganizerEmail":"","_OrganizerPhone":"","_OrganizerWebsite":"","_VenueAddress":"","_VenueCity":"","_VenueCountry":"","_VenueProvince":"","_VenueState":"","_VenueZip":"","_VenuePhone":"","_VenueURL":"","_VenueStateProvince":"","_VenueLat":"","_VenueLng":"","_VenueShowMap":false,"_VenueShowMapLink":false,"_tribe_blocks_recurrence_rules":"","_tribe_blocks_recurrence_description":"","_tribe_blocks_recurrence_exclusions":"","footnotes":""},"class_list":["post-25571","page","type-page","status-publish","hentry","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/pages\/25571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/comments?post=25571"}],"version-history":[{"count":67,"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/pages\/25571\/revisions"}],"predecessor-version":[{"id":31812,"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/pages\/25571\/revisions\/31812"}],"wp:attachment":[{"href":"https:\/\/caribbeanbiodiversityfund.org\/es\/wp-json\/wp\/v2\/media?parent=25571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}