{"id":46039,"date":"2026-01-29T10:35:09","date_gmt":"2026-01-29T15:35:09","guid":{"rendered":"https:\/\/seplan.ac.gov.br\/?page_id=46039"},"modified":"2026-05-14T14:04:50","modified_gmt":"2026-05-14T19:04:50","slug":"convenios-federais","status":"publish","type":"page","link":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/","title":{"rendered":"Conv\u00eanios Federais"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"46039\" class=\"elementor elementor-46039\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f53a935 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"f53a935\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-43a06ec elementor-widget elementor-widget-text-editor\" data-id=\"43a06ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/\">Portal de Conv\u00eanios Federais<\/a> \/<strong> Conv\u00eanios Federais<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aa0e93c e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"aa0e93c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ecbae73 elementor-widget elementor-widget-heading\" data-id=\"ecbae73\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Conv\u00eanios Federais<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48f30de elementor-widget elementor-widget-text-editor\" data-id=\"48f30de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"content text-truncate\">Acesse as informa\u00e7\u00f5es detalhadas sobre os conv\u00eanios federais destinadas ao Governo do Estado do Acre.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\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-d503e83 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"d503e83\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0222058 elementor-widget elementor-widget-shortcode\" data-id=\"0222058\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/papaparse@5.4.1\/papaparse.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/exceljs\/4.3.0\/exceljs.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.3.2\/papaparse.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/exceljs\/4.4.0\/exceljs.min.js\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf-autotable\/3.8.4\/jspdf.plugin.autotable.min.js\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.3.2\/papaparse.min.js\"><\/script>\r\n   \r\n    <style>\r\n      @import url(\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;600;700&display=swap\");\r\n\t\tp{\r\n\t\t\tmargin:0;\r\n\t\t\tpadding:0;\r\n\t\t}\r\n      body {\r\n        font-family: \"Inter\", sans-serif;\r\n        background-color: #f8fafc;\r\n      }\r\n\r\n      \/* Estiliza\u00e7\u00e3o da Scrollbar *\/\r\n      ::-webkit-scrollbar {\r\n        width: 6px;\r\n      }\r\n      ::-webkit-scrollbar-track {\r\n        background: #f1f1f1;\r\n      }\r\n      ::-webkit-scrollbar-thumb {\r\n        background: #cbd5e1;\r\n        border-radius: 10px;\r\n      }\r\n      ::-webkit-scrollbar-thumb:hover {\r\n        background: #94a3b8;\r\n      }\r\n\r\n      .glass-card {\r\n        background: rgba(255, 255, 255, 0.8);\r\n        backdrop-filter: blur(10px);\r\n        border: 1px solid rgba(255, 255, 255, 0.3);\r\n      }\r\n\r\n      .sidebar-item:hover {\r\n        background-color: #f1f5f9;\r\n      }\r\n\r\n      \/* Anima\u00e7\u00e3o suave para os cards *\/\r\n      .card-entry {\r\n        animation: slideUp 0.4s ease-out forwards;\r\n      }\r\n\r\n      @keyframes slideUp {\r\n        from {\r\n          opacity: 0;\r\n          transform: translateY(20px);\r\n        }\r\n        to {\r\n          opacity: 1;\r\n          transform: translateY(0);\r\n        }\r\n      }\r\n    <\/style>\r\n\r\n    <div class=\"h-16 flex items-center justify-end gap-2 z-10 shrink-0\">\r\n      <div class=\"flex-1\">\r\n        <div class=\"relative\">\r\n          <i class=\"fa fa-search absolute left-3 top-3 !text-gray-400 !text-xs\"><\/i>\r\n          <input\r\n            type=\"!text\"\r\n            id=\"searchBar\"\r\n            placeholder=\"Pesquisar livremente...\"\r\n            class=\"w-full !bg-gray-50 border border-gray-200 rounded-xl py-2.5 pl-9 pr-3 !text-sm focus:ring-2 focus:ring-sky-500 outline-none transition-all\"\r\n          \/>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"flex items-center gap-3\">\r\n        <button\r\n          onclick=\"cfToggleFilterModal()\"\r\n          class=\"flex items-center gap-2 px-4 py-2 !bg-slate-100 hover:!bg-slate-200 !text-slate-700 !rounded-xl transition-all font-semibold !text-sm\"\r\n        >\r\n          <i class=\"fa-solid fa-filter\"><\/i><p class=\"hidden md:flex\">\r\n\t\t\tFiltros Avan\u00e7ados\r\n\t\t\t<\/p> \r\n        <\/button>\r\n\r\n        <button\r\n          onclick=\"cfOpenColumnModal('excel')\"\r\n          class=\" p-0 md:p-2 !text-sky-700 hover:!bg-sky-50 !rounded-lg transition !bg-transparent\"\r\n        >\r\n          <i class=\"fa-solid fa-file-excel\"><\/i>\r\n        <\/button>\r\n        <button\r\n          onclick=\"cfOpenColumnModal('pdf')\"\r\n          class=\"p-0 md:p-2  !text-red-700 hover:!bg-red-50 !rounded-lg transition !bg-transparent\"\r\n        >\r\n          <i class=\"fa-solid fa-file-pdf\"><\/i>\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"filterModal\" class=\"fixed inset-0 z-[100] hidden items-center justify-center p-4\">\r\n      <div\r\n        onclick=\"cfToggleFilterModal()\"\r\n        class=\"absolute inset-0 bg-black\/60 backdrop-blur-sm\"\r\n      ><\/div>\r\n\r\n      <div\r\n        class=\"relative bg-white w-full max-w-2xl !rounded-3xl shadow-2xl overflow-hidden transform transition-all flex flex-col max-h-[90vh]\"\r\n        id=\"filterPanel\"\r\n      >\r\n        <div class=\"p-6 border-b flex justify-between items-center bg-white\">\r\n          <div>\r\n            <h3 class=\"font-bold text-gray-800 text-lg flex items-center gap-2\">\r\n              <i class=\"fa-solid fa-sliders text-sky-600\"><\/i> Filtros de Pesquisa\r\n            <\/h3>\r\n          <\/div>\r\n          <button\r\n            onclick=\"cfToggleFilterModal()\"\r\n            class=\"w-10 !bg-transparent h-10 flex items-center justify-center !rounded-full !text-gray-800 hover:!text-red-700 transition-colors\"\r\n          >\r\n            <i class=\"fa-solid fa-xmark text-xl\"><\/i>\r\n          <\/button>\r\n        <\/div>\r\n\r\n        <div class=\"flex-1 overflow-y-auto p-8 space-y-6\">\r\n          <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Executor<\/span>\r\n              <select\r\n                id=\"filterAutor\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Concedente<\/span>\r\n              <select\r\n                id=\"filterConcedente\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Munic\u00edpio<\/span>\r\n              <select\r\n                id=\"filterMunicipio\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Ano<\/span>\r\n              <select\r\n                id=\"filterAno\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Situa\u00e7\u00e3o do Instrumento<\/span>\r\n              <select\r\n                id=\"filterSituacao\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Obra<\/span>\r\n              <select\r\n                id=\"filterObra\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Cl\u00e1usula Suspensiva<\/span>\r\n              <select\r\n                id=\"filterClausula\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Origem do Recurso<\/span>\r\n              <select\r\n                id=\"filterOrigem\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Parlamentar<\/span>\r\n              <select\r\n                id=\"filterParlamentar\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n            <div class=\"space-y-1\">\r\n              <span class=\"text-[12px] font-bold text-gray-600\">Situa\u00e7\u00e3o da Execu\u00e7\u00e3o<\/span>\r\n              <select\r\n                id=\"filterSituacaoExecucao\"\r\n                class=\"w-full bg-gray-50 border border-gray-200 !rounded-xl p-3 text-sm outline-none focus:border-sky-500\"\r\n              ><\/select>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"p-6 bg-gray-50 border-t flex gap-4\">\r\n          <button\r\n            onclick=\"cfClearFilters()\"\r\n            class=\"px-6 py-3 text-xs font-bold !text-gray-500 hover:!text-red-600 transition-colors uppercase tracking-widest !bg-transparent\"\r\n          >\r\n            Limpar Filtros\r\n          <\/button>\r\n          <button\r\n            onclick=\"cfToggleFilterModal()\"\r\n            class=\"flex-1 py-3 !bg-sky-600 !text-white !rounded-xl font-bold text-sm hover:!bg-sky-700 shadow-lg transition-all uppercase tracking-widest\"\r\n          >\r\n            Aplicar e Visualizar\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"flex-1 flex flex-col overflow-hidden mt-2\">\r\n      <div class=\"flex-1 overflow-y-auto\">\r\n        <div id=\"loading\" class=\"flex flex-col items-center justify-center h-64 !text-sky-600\">\r\n          <div class=\"animate-spin rounded-full h-12 w-12 border-b-2 border-sky-600 mb-4\"><\/div>\r\n          <span class=\"font-medium animate-pulse\">Sincronizando dados...<\/span>\r\n        <\/div>\r\n\r\n        <div id=\"cardsContainer\" class=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-2\"><\/div>\r\n\r\n        <div id=\"pagination\" class=\"flex justify-center items-center gap-2 mt-12 mb-8\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div\r\n      id=\"detailModal\"\r\n      class=\"fixed inset-0 !bg-black\/50 items-center justify-center z-50 p-4 hidden\"\r\n    >\r\n      <div\r\n        class=\"!bg-white rounded-2xl w-full max-w-3xl max-h-[90vh] overflow-hidden shadow-2xl flex flex-col\"\r\n      >\r\n        <div id=\"modalContent\" class=\"p-8 overflow-y-auto\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <div id=\"columnModal\" class=\"fixed inset-0 bg-black\/60 hidden items-center justify-center z-50\">\r\n      <div class=\"bg-white rounded-2xl w-full max-w-xl p-6\">\r\n        <div class=\"flex gap-2 w-full justify-between items-center mb-4 border-b border-sky-700\">\r\n          <h3 class=\"font-black uppercase text-sm\">Selecionar colunas<\/h3>\r\n          <button\r\n            onclick=\"cfCloseColumnModal()\"\r\n            class=\"!text-gray-400 hover:!text-gray-600 !text-xl !bg-transparent\"\r\n          >\r\n            &times;\r\n          <\/button>\r\n        <\/div>\r\n\r\n        <div id=\"cfColumnList\" class=\"grid grid-cols-2 gap-2 max-h-64 overflow-y-auto mb-6\"><\/div>\r\n        <div class=\"flex justify-between items-center\">\r\n          <div class=\"flex gap-2 mt-2 mb-4\">\r\n            <button\r\n              onclick=\"cfSelectAllColumns()\"\r\n              class=\"!text-xs font-bold uppercase !bg-transparent !text-sky-600 hover:!text-sky-700\"\r\n            >\r\n              Selecionar todas\r\n            <\/button>\r\n\r\n            <button\r\n              onclick=\"cfClearColumns()\"\r\n              class=\"!text-xs font-bold uppercase !bg-transparent !text-red-600 hover:!text-red-700\"\r\n            >\r\n              Limpar sele\u00e7\u00e3o\r\n            <\/button>\r\n          <\/div>\r\n\r\n          <button\r\n            onclick=\"cfConfirmExport()\"\r\n            class=\"px-4 py-3 !text-xs !bg-sky-700 text-white !rounded-xl font-bold uppercase hover:!bg-sky-800\"\r\n          >\r\n            Exportar\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div\r\n      id=\"maisModal\"\r\n      class=\"fixed inset-0 !bg-black\/70 items-center justify-center z-[70] p-4 hidden\"\r\n    >\r\n      <div\r\n        class=\"!bg-white rounded-2xl w-full h-full max-w-6xl overflow-hidden shadow-2xl flex flex-col\"\r\n      >\r\n        <div class=\"p-4 border-b flex justify-between items-center\">\r\n          <span class=\"font-bold !text-gray-700\">Documento SEI<\/span>\r\n          <button onclick=\"cfCloseMaisModal()\" class=\"!text-2xl\">&times;<\/button>\r\n        <\/div>\r\n        <iframe id=\"maisFrame\" class=\"w-full flex-1 border-none\"><\/iframe>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n      const cfCsvUrl =\r\n        \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vTXL-twvUVAgOjYb6hbiOHV6XHKMan5RZB8PvoTMwEw0AhSLAymfVAce6_4TX8giJ0XtmM12oLSI6-K\/pub?gid=1466049382&single=true&output=csv\";\r\n\r\n      let cfDataGlobal = [];\r\n      let cfFilteredData = [];\r\n      let cfCurrentPage = 1;\r\n      const cfItemsPerPage = 20;\r\n      let cfExportType = null;\r\n\r\n      \/\/ --- INICIALIZA\u00c7\u00c3O ---\r\n      async function cfInit() {\r\n        try {\r\n          const response = await fetch(cfCsvUrl);\r\n          const csvtext = await response.text();\r\n\r\n          Papa.parse(csvtext, {\r\n            header: true,\r\n            skipEmptyLines: true,\r\n            complete: function (results) {\r\n              cfDataGlobal = results.data;\r\n              cfFilteredData = [...cfDataGlobal];\r\n\r\n              cfPopulateFilters(cfDataGlobal);\r\n              cfUpdateDashboard();\r\n\r\n              document.getElementById(\"loading\")?.classList.add(\"hidden\");\r\n              document.getElementById(\"pagination\")?.classList.remove(\"hidden\");\r\n            },\r\n          });\r\n        } catch (e) {\r\n          console.error(\"Erro na requisi\u00e7\u00e3o:\", e);\r\n          const loadingEl = document.getElementById(\"loading\");\r\n          if (loadingEl) loadingEl.innertext = \"Erro ao carregar dados.\";\r\n        }\r\n      }\r\n\r\n      \/\/ --- DASHBOARD E RENDERIZA\u00c7\u00c3O ---\r\n      function cfUpdateDashboard() {\r\n        cfRenderCards();\r\n        cfRenderPagination();\r\n        cfUpdateCount();\r\n      }\r\n\r\n      function cfFormatarReal(valor) {\r\n        if (!valor || valor === \"0\" || valor === \"null\") return \"R$ --\";\r\n        const numero =\r\n          typeof valor === \"string\"\r\n            ? Number(\r\n                valor\r\n                  .replace(\/[^\\d,-]\/g, \"\")\r\n                  .replace(\".\", \"\")\r\n                  .replace(\",\", \".\"),\r\n              )\r\n            : Number(valor);\r\n\r\n        return isNaN(numero)\r\n          ? \"R$ --\"\r\n          : numero.toLocaleString(\"pt-BR\", { style: \"currency\", currency: \"BRL\" });\r\n      }\r\n\r\n      function cfRenderCards() {\r\n        const container = document.getElementById(\"cardsContainer\");\r\n        if (!container) return;\r\n\r\n        const startIndex = (cfCurrentPage - 1) * cfItemsPerPage;\r\n        const paginatedData = cfFilteredData.slice(startIndex, startIndex + cfItemsPerPage);\r\n\r\n        container.innerHTML = paginatedData\r\n          .map((item) => {\r\n            const globalIndex = cfDataGlobal.indexOf(item);\r\n            \/\/ Identifica\u00e7\u00e3o visual: Se houver Cl\u00e1usula Suspensiva, usamos um alerta\r\n            const temClausula =\r\n              item[\"Cl\u00e1usula Suspensiva\"] && item[\"Cl\u00e1usula Suspensiva\"].toLowerCase() !== \"n\u00e3o\";\r\n\r\n            return `\r\n          <div class=\"card-entry !bg-white rounded-3xl overflow-hidden border-2 border-slate-100 hover:!border-sky-600 transition-all shadow-sm flex flex-col h-full\">\r\n              <div class=\"p-5 !bg-slate-50 border-b border-slate-100 flex justify-between items-center\">\r\n                  <span class=\"!text-[12px] font-black !text-slate-500 uppercase tracking-widest\">\r\n                      Conv\u00eanio ${item[\"Instrumento\"]}\/${item[\"Ano\"]}\r\n                  <\/span>\r\n                  <span class=\"px-2 py-1 rounded-md !text-[9px] font-bold ${\r\n                    temClausula ? \" !bg-sky-100 !text-sky-800\" : \"!bg-sky-100 !text-sky-800\"\r\n                  } uppercase\">\r\n\t\t\t\t\tSitua\u00e7\u00e3o: ${item[\"Situa\u00e7\u00e3o\"]}\r\n                  <\/span>\r\n              <\/div>\r\n\r\n              <div class=\"p-6 flex-1\">\r\n                  <h4 class=\"!text-sm font-black !text-slate-800 leading-tight uppercase mb-4 line-clamp-2 min-h-[35px]\">\r\n                      ${item[\"T\u00edtulo\"] || item[\"Objeto\"]}\r\n                  <\/h4>\r\n\r\n                  <div class=\"grid grid-cols-1 gap-3 mb-6\">\r\n                      <div class=\"flex items-center gap-2 !text-[12px] !text-slate-500\">\r\n                          <i class=\"fa-solid fa-landmark !text-sky-600 w-4\"><\/i>\r\n                          <span class=\"truncate\"><b>Executor:<\/b> ${item[\"Executor\"]}<\/span>\r\n                      <\/div>\r\n                      <div class=\"flex items-center gap-2 !text-[12px] !text-slate-500\">\r\n                          <i class=\"fa-solid fa-map-location-dot !text-sky-600 w-4\"><\/i>\r\n                          <span><b>Modalidade do Instrumento:<\/b> ${item[\"Modalidade\"]}<\/span>\r\n                      <\/div>\r\n                  <\/div>\r\n\r\n                  <div class=\"!bg-sky-50\/50 rounded-2xl p-4 border !border-sky-100\/50 mt-auto\">\r\n                      <p class=\"!text-[9px] font-black !text-slate-800 uppercase mb-1\">Valor Total do Instrumento<\/p>\r\n                      <p class=\"!text-xl font-black !text-sky-900\">${cfFormatarReal(\r\n                        item[\"Total Previsto\"] || item[\"Previsto\"],\r\n                      )}<\/p>\r\n                  <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"p-6 pt-0 grid grid-cols-2 gap-3\">\r\n                  <button onclick=\"cfOpenModal(${globalIndex})\"\r\n                      class=\"!bg-sky-800 !text-white py-3 !rounded-xl font-bold !text-[12px] uppercase tracking-tighter hover:!bg-sky-950 transition-all\">\r\n                      Visualizar Dados\r\n                  <\/button>\r\n                  <a href=\"${item[\"Link de Acesso\"]}\" target=\"_blank\"\r\n                      class=\"flex items-center justify-center gap-1 border-2 border-slate-100 !rounded-xl !text-[12px] font-bold !text-slate-600 hover:!bg-slate-50 transition-all\"> Abrir na Transferegov <i class=\"fa-solid fa-external-link !text-[8px]\"><\/i>\r\n                  <\/a>\r\n              <\/div>\r\n          <\/div>`;\r\n          })\r\n          .join(\"\");\r\n      }\r\n      \/\/ --- FILTROS E PESQUISA ---\r\n      function cfFilterData() {\r\n        const filters = {\r\n          search: document.getElementById(\"searchBar\")?.value.toLowerCase() || \"\",\r\n          municipio: document.getElementById(\"filterMunicipio\")?.value || \"\",\r\n          concedente: document.getElementById(\"filterConcedente\")?.value || \"\",\r\n          modalidade: document.getElementById(\"filterModalidade\")?.value || \"\",\r\n          situacao: document.getElementById(\"filterSituacao\")?.value || \"\",\r\n          autor: document.getElementById(\"filterAutor\")?.value || \"\",\r\n          ano: document.getElementById(\"filterAno\")?.value || \"\",\r\n          obra: document.getElementById(\"filterObra\")?.value || \"\",\r\n          clausula: document.getElementById(\"filterClausula\")?.value || \"\",\r\n          origem: document.getElementById(\"filterOrigem\")?.value || \"\",\r\n          parlamentar: document.getElementById(\"filterParlamentar\")?.value || \"\",\r\n          situacaoExecucao: document.getElementById(\"filterSituacaoExecucao\")?.value || \"\",\r\n        };\r\n\r\n        cfFilteredData = cfDataGlobal.filter((d) => {\r\n          const matchesSearch = Object.values(d).some((v) =>\r\n            String(v).toLowerCase().includes(filters.search),\r\n          );\r\n          const matchesMunicipio = !filters.municipio || d[\"Abrang\u00eancia\"] === filters.municipio;\r\n          const matchesModalidade = !filters.modalidade || d[\"Modalidade\"] === filters.modalidade;\r\n          const matchesConcedente = !filters.concedente || d[\"Concedente\"] === filters.concedente;\r\n          const matchesSituacao = !filters.situacao || d[\"Situa\u00e7\u00e3o\"] === filters.situacao;\r\n          const matchesAutor = !filters.autor || d[\"Executor\"] === filters.autor;\r\n          const matchesAno = !filters.ano || d[\"Ano\"] === filters.ano;\r\n          const matchesObra = !filters.obra || d[\"Obra\"] === filters.obra;\r\n          const matchesClausula =\r\n            !filters.clausula || d[\"Cl\u00e1usula Suspensiva\"] === filters.clausula;\r\n          const matchesOrigem = !filters.origem || d[\"Origem do Recurso\"] === filters.origem;\r\n          const matchesParlamentar =\r\n            !filters.parlamentar || d[\"Parlamentar\"] === filters.parlamentar;\r\n          const matchesSituacaoExecucao =\r\n            !filters.situacaoExecucao || d[\"Situa\u00e7\u00e3o da Execu\u00e7\u00e3o\"] === filters.situacaoExecucao;\r\n\r\n          return (\r\n            matchesSearch &&\r\n            matchesMunicipio &&\r\n            matchesModalidade &&\r\n            matchesConcedente &&\r\n            matchesSituacao &&\r\n            matchesAutor &&\r\n            matchesAno &&\r\n            matchesObra &&\r\n            matchesClausula &&\r\n            matchesOrigem &&\r\n            matchesParlamentar &&\r\n            matchesSituacaoExecucao\r\n          );\r\n        });\r\n\r\n        cfCurrentPage = 1;\r\n        cfUpdateDashboard();\r\n      }\r\n\r\n      function cfPopulateFilters(data) {\r\n        const getUnique = (col) => [...new Set(data.map((d) => d[col]))].filter(Boolean).sort();\r\n        const fill = (id, list, label) => {\r\n          const el = document.getElementById(id);\r\n          if (!el) return;\r\n          el.innerHTML = `<option value=\"\">${label}<\/option>`;\r\n          list.forEach((v) => el.add(new Option(v, v)));\r\n        };\r\n\r\n        fill(\"filterMunicipio\", getUnique(\"Abrang\u00eancia\"), \"Todos os munic\u00edpios\");\r\n        fill(\"filterAutor\", getUnique(\"Executor\"), \"Todos os executores\");\r\n        fill(\"filterAno\", getUnique(\"Ano\"), \"Todos os anos\");\r\n        fill(\"filterModalidade\", getUnique(\"Modalidade\"), \"Todas as modalidades\");\r\n        fill(\"filterConcedente\", getUnique(\"Concedente\"), \"Todos os concedentes\");\r\n        fill(\"filterSituacao\", getUnique(\"Situa\u00e7\u00e3o\"), \"Todas as situa\u00e7\u00f5es\");\r\n        fill(\"filterObra\", getUnique(\"Obra\"), \"Todos\");\r\n        fill(\"filterClausula\", getUnique(\"Cl\u00e1usula Suspensiva\"), \"Todas as cl\u00e1usulas\");\r\n        fill(\"filterOrigem\", getUnique(\"Origem do Recurso\"), \"Todas as origens\");\r\n        fill(\"filterParlamentar\", getUnique(\"Parlamentar\"), \"Todos os parlamentares\");\r\n        fill(\r\n          \"filterSituacaoExecucao\",\r\n          getUnique(\"Situa\u00e7\u00e3o da Execu\u00e7\u00e3o\"),\r\n          \"Todas as situa\u00e7\u00f5es de execu\u00e7\u00e3o\",\r\n        );\r\n      }\r\n\r\n      function cfClearFilters() {\r\n        [\r\n          \"searchBar\",\r\n          \"filterMunicipio\",\r\n          \"filterAutor\",\r\n          \"filterAno\",\r\n          \"filterConcedente\",\r\n          \"filterModalidade\",\r\n          \"filterSituacao\",\r\n          \"filterObra\",\r\n          \"filterClausula\",\r\n          \"filterOrigem\",\r\n          \"filterParlamentar\",\r\n          \"filterSituacaoExecucao\",\r\n        ].forEach((id) => {\r\n          const el = document.getElementById(id);\r\n          if (el) el.value = \"\";\r\n        });\r\n        cfFilterData();\r\n      }\r\n\r\n      \/\/ --- MODAL DE DETALHES E ABAS ---\r\n      function cfOpenModal(index) {\r\n        const item = cfDataGlobal[index];\r\n        const val = (field) => (item[field] && item[field] !== \"null\" ? item[field] : \"---\");\r\n\r\n        document.getElementById(\"modalContent\").innerHTML = `\r\n          <div class=\"flex justify-between items-start mb-6\">\r\n              <div class=\"flex-1\">\r\n                  <div class=\"flex items-center gap-2 mb-1\">\r\n                      <div class=\"w-2 h-2 rounded-full !bg-sky-600 animate-pulse\"><\/div>\r\n                      <span class=\"!text-[12px] font-black !text-sky-600 uppercase tracking-widest\">${val(\r\n                        \"Modalidade\",\r\n                      )}<\/span>\r\n                  <\/div>\r\n                  <h2 class=\"!text-xl font-black !text-slate-800 leading-tight uppercase\">${val(\r\n                    \"T\u00edtulo\",\r\n                  )}<\/h2>\r\n              <\/div>\r\n              <button onclick=\"cfCloseModal()\" class=\"!text-2xl !text-slate-300 hover:!text-red-500 transition-colors !bg-transparent\">&times;<\/button>\r\n          <\/div>\r\n\r\n          <div class=\"flex !bg-slate-100 p-1 rounded-xl mb-6\">\r\n              <button class=\"tabBtn flex-1 py-2 !text-[12px] font-black uppercase !rounded-lg transition-all !bg-transparent\" onclick=\"cfSwitchTab('geral')\" id=\"tab-geral\">Geral<\/button>\r\n              <button class=\"tabBtn flex-1 py-2 !text-[12px] font-black uppercase !rounded-lg transition-all !bg-transparent\" onclick=\"cfSwitchTab('financeiro')\" id=\"tab-financeiro\">Execu\u00e7\u00e3o Financeira<\/button>\r\n          <\/div>\r\n\r\n          <div class=\"tabContent\" id=\"content-geral\">\r\n              <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n                  <div class=\"col-span-full p-4 !bg-slate-50 rounded-2xl border border-slate-100\">\r\n                      <p class=\"!text-[12px] font-black !text-slate-400 uppercase mb-1\">Objeto do Conv\u00eanio<\/p>\r\n                      <p class=\"!text-sm !text-slate-700 leading-relaxed font-medium\">${val(\r\n                        \"Objeto\",\r\n                      )}<\/p>\r\n                  <\/div>\r\n                  ${cfRenderInfoRow(\"Instrumento\/Ano\", `${val(\"Instrumento\")} \/ ${val(\"Ano\")}`)}\r\n                  ${cfRenderInfoRow(\"Vig\u00eancia\", val(\"Vig\u00eancia\"))}\r\n                  ${cfRenderInfoRow(\"Concedente\", val(\"Concedente\"))}\r\n                  ${cfRenderInfoRow(\"Executor\", val(\"Executor\"))}\r\n                  ${cfRenderInfoRow(\"Cl\u00e1usula Suspensiva\", val(\"Cl\u00e1usula Suspensiva\"))}\r\n\t\t  ${cfRenderInfoRow(\"Limite da Suspensiva\", val(\"Limite da Suspensiva\"))}\r\n                  ${cfRenderInfoRow(\"Origem do Recurso\", val(\"Origem do Recurso\"))}\r\n                  ${cfRenderInfoRow(\"Parlamentar\", val(\"Parlamentar\"))}\r\n                  ${cfRenderInfoRow(\"Situa\u00e7\u00e3o da Execu\u00e7\u00e3o\", val(\"Situa\u00e7\u00e3o da Execu\u00e7\u00e3o\"))}\r\n                  ${cfRenderInfoRow(\"N\u00ba da Emenda\", val(\"N\u00b0 da Emenda\"))}\r\n                  ${cfRenderInfoRow(\"Obra\", val(\"Obra\"))}\r\n\t\t\t\t${cfRenderInfoRow(\"\u00c1rea Tem\u00e1tica\", val(\"\u00c1rea Tem\u00e1tica\"))}\r\n              <\/div>\r\n          <\/div>\r\n\r\n         <div class=\"tabContent hidden\" id=\"content-financeiro\">\r\n              <div class=\"space-y-6\">\r\n                  <div class=\"p-5 rounded-2xl border-2 border-slate-100 !bg-slate-50\/50\">\r\n                      <h5 class=\"!text-[12px] font-black !text-slate-800 uppercase mb-4 flex items-center gap-2\">\r\n                          <i class=\"fa-solid fa-calculator !text-slate-600\"><\/i> Valor Total\r\n                      <\/h5>\r\n                      <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n                          ${cfRenderFinanceBox(\"Total Previsto\", item[\"Total Previsto\"])}\r\n                          ${cfRenderFinanceBox(\"Total Liberado\", item[\"Total Liberado\"])}\r\n                          ${cfRenderFinanceBox(\"Total Executado\", item[\"Total Executado\"])}\r\n                          ${cfRenderFinanceBox(\"Total Saldo\", item[\"Total Saldo\"])}\r\n                      <\/div>\r\n                  <\/div>\r\n\r\n                  <div class=\"p-5 rounded-2xl border-2 !border-emerald-100 !bg-emerald-100\/20\">\r\n                      <h5 class=\"!text-[12px] font-black !text-emerald-800 uppercase mb-4 flex items-center gap-2\">\r\n                          <i class=\"fa-solid fa-building-columns !text-emerald-600\"><\/i> Valor Repasse\r\n                      <\/h5>\r\n                      <div class=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\r\n                          ${cfRenderFinanceBox(\"Repasse Previsto\", item[\"Repasse Previsto\"])}\r\n                          ${cfRenderFinanceBox(\"Repasse Liberado\", item[\"Repasse Liberado\"])}\r\n                          ${cfRenderFinanceBox(\"Repasse Executado\", item[\"Repasse Executado\"])}\r\n\t\t   \t\t\t\t${cfRenderFinanceBox(\"Repasse Saldo\", item[\"Repasse Saldo\"])}\r\n                      <\/div>\r\n                  <\/div>\r\n\r\n                  <div class=\"p-5 rounded-2xl border-2 !border-sky-100 !bg-sky-50\/80\">\r\n                      <h5 class=\"!text-[12px] font-black !text-sky-800 uppercase mb-4 flex items-center gap-2\">\r\n                          <i class=\"fa-solid fa-hand-holding-dollar !text-sky-600\"><\/i> Valor Contrapartida\r\n                      <\/h5>\r\n                      <div class=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n                          ${cfRenderFinanceBox(\r\n                            \"Contrapartida Previsto\",\r\n                            item[\"Contrapartida Previsto\"],\r\n                          )}\r\n                          ${cfRenderFinanceBox(\r\n                            \"Contrapartida Liberado\",\r\n                            item[\"Contrapartida Liberado\"],\r\n                          )}\r\n                          ${cfRenderFinanceBox(\r\n                            \"Contrapartida Executado\",\r\n                            item[\"Contrapartida Executado\"],\r\n                          )}\r\n\t\t  \t\t\t\t${cfRenderFinanceBox(\"Contrapartida Saldo\", item[\"Contrapartida Saldo\"])}\r\n                          <\/div>\r\n                  <\/div>\r\n              <\/div>\r\n          <\/div>\r\n      `;\r\n\r\n        \/\/ Abrir modal e definir aba inicial\r\n        document.getElementById(\"detailModal\").classList.replace(\"hidden\", \"flex\");\r\n        cfSwitchTab(\"geral\");\r\n      }\r\n\r\n      \/\/ Fun\u00e7\u00f5es auxiliares de renderiza\u00e7\u00e3o interna do Modal\r\n      function cfRenderInfoRow(label, value) {\r\n        return `\r\n          <div class=\"p-3 border-b border-slate-50\">\r\n              <span class=\"!text-[9px] font-black !text-slate-400 uppercase block mb-0.5\">${label}<\/span>\r\n              <span class=\"!text-xs font-bold !text-slate-700\">${value}<\/span>\r\n          <\/div>\r\n      `;\r\n      }\r\n\r\n      function cfRenderFinanceBox(label, value, colorClass = \"!text-slate-800\") {\r\n        return `\r\n    <div class=\"bg-white p-3 rounded-xl border border-slate-100 shadow-sm\">\r\n        <span class=\"text-[8px] font-black text-slate-400 uppercase block mb-1\">${label}<\/span>\r\n        <span class=\"text-xs font-black ${colorClass}\">${cfFormatarReal(value)}<\/span>\r\n    <\/div>`;\r\n      }\r\n\r\n      function cfSwitchTab(tab) {\r\n        document.querySelectorAll(\".tabContent\").forEach((sec) => sec.classList.add(\"hidden\"));\r\n        document.querySelectorAll(\".tabBtn\").forEach((btn) => {\r\n          btn.classList.remove(\"!text-sky-600\", \"!border-sky-600\", \"!border\");\r\n          btn.classList.add(\"!text-gray-500\");\r\n        });\r\n        const activeContent = document.getElementById(\"content-\" + tab);\r\n        const activeTab = document.getElementById(\"tab-\" + tab);\r\n        if (activeContent) activeContent.classList.remove(\"hidden\");\r\n        if (activeTab) activeTab.classList.add(\"!text-sky-600\", \"!border-sky-600\", \"!border\");\r\n      }\r\n\r\n      function cfCloseModal() {\r\n        const modal = document.getElementById(\"detailModal\");\r\n        if (modal) {\r\n          modal.classList.replace(\"flex\", \"hidden\");\r\n          document.body.style.overflow = \"auto\";\r\n        }\r\n      }\r\n\r\n      function cfToggleFilterModal() {\r\n        const modal = document.getElementById(\"filterModal\");\r\n\r\n        if (modal.classList.contains(\"hidden\")) {\r\n          \/\/ ABRIR\r\n          modal.classList.remove(\"hidden\");\r\n          modal.classList.add(\"flex\");\r\n          document.body.style.overflow = \"hidden\";\r\n        } else {\r\n          \/\/ FECHAR\r\n          modal.classList.add(\"hidden\");\r\n          modal.classList.remove(\"flex\");\r\n          document.body.style.overflow = \"auto\";\r\n        }\r\n      }\r\n\r\n      \/\/ --- PAGINA\u00c7\u00c3O E CONTADORES ---\r\n      function cfRenderPagination() {\r\n        const totalPages = Math.ceil(cfFilteredData.length \/ cfItemsPerPage);\r\n        const pagination = document.getElementById(\"pagination\");\r\n        if (!pagination || totalPages <= 1) {\r\n          if (pagination) pagination.innerHTML = \"\";\r\n          return;\r\n        }\r\n\r\n        let html = `<button onclick=\"cfGoToPage(1)\" class=\"px-3 py-1 border !rounded ${\r\n          cfCurrentPage === 1 ? \"opacity-50\" : \"\"\r\n        }\">\u00ab<\/button>`;\r\n        for (\r\n          let i = Math.max(1, cfCurrentPage - 2);\r\n          i <= Math.min(totalPages, cfCurrentPage + 2);\r\n          i++\r\n        ) {\r\n          html += `<button onclick=\"cfGoToPage(${i})\" class=\"px-3 py-1 border !rounded ${\r\n            i === cfCurrentPage ? \"!bg-sky-600 !text-white\" : \"\"\r\n          }\">${i}<\/button>`;\r\n        }\r\n        html += `<button onclick=\"cfGoToPage(${totalPages})\" class=\"px-3 py-1 border !rounded ${\r\n          cfCurrentPage === totalPages ? \"opacity-50\" : \"\"\r\n        }\">\u00bb<\/button>`;\r\n        pagination.innerHTML = html;\r\n      }\r\n\r\n      function cfGoToPage(page) {\r\n        cfCurrentPage = page;\r\n        cfUpdateDashboard();\r\n        window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n      }\r\n\r\n      function cfUpdateCount() {\r\n        const el = document.getElementById(\"resultadoCount\");\r\n        if (el)\r\n          el.innertext = `${cfFilteredData.length} ${\r\n            cfFilteredData.length === 1 ? \"Resultado\" : \"Resultados\"\r\n          }`;\r\n      }\r\n\r\n      \/\/ --- EXPORTA\u00c7\u00c3O (EXCEL \/ PDF) ---\r\n      function cfExcelColumnName(index1Based) {\r\n        let n = index1Based;\r\n        let s = \"\";\r\n        while (n > 0) {\r\n          const mod = (n - 1) % 26;\r\n          s = String.fromCharCode(65 + mod) + s;\r\n          n = Math.floor((n - 1) \/ 26);\r\n        }\r\n        return s;\r\n      }\r\n\r\n      function cfTryParsePtbrNumber(val) {\r\n        if (val === null || val === undefined) return null;\r\n        if (typeof val === \"number\") return Number.isFinite(val) ? val : null;\r\n\r\n        const raw = String(val).trim();\r\n        if (!raw || raw === \"null\" || raw === \"--\" || raw === \"---\") return null;\r\n\r\n        \/\/ Ex.: \"R$ 1.234,56\" -> 1234.56\r\n        const num = parseFloat(\r\n          raw\r\n            .replace(\/\\s\/g, \"\")\r\n            .replace(\/[R$\\u00A0]\/g, \"\")\r\n            .replace(\/\\.\/g, \"\")\r\n            .replace(\",\", \".\")\r\n            .replace(\/[^\\d.-]\/g, \"\"),\r\n        );\r\n        return Number.isFinite(num) ? num : null;\r\n      }\r\n\r\n      function cfLooksLikeMoneyColumn(colName) {\r\n        const n = String(colName || \"\").toLowerCase();\r\n        return (\r\n          n.includes(\"valor\") ||\r\n          n.includes(\"total\") ||\r\n          n.includes(\"previsto\") ||\r\n          n.includes(\"liberado\") ||\r\n          n.includes(\"executado\") ||\r\n          n.includes(\"saldo\") ||\r\n          n.includes(\"repasse\") ||\r\n          n.includes(\"contrapartida\")\r\n        );\r\n      }\r\n\r\n      async function cfExportExcelSelected(selectedColumns) {\r\n        if (!window.ExcelJS) {\r\n          alert(\"Biblioteca ExcelJS n\u00e3o carregou. Verifique sua conex\u00e3o e tente novamente.\");\r\n          return;\r\n        }\r\n\r\n        const workbook = new ExcelJS.Workbook();\r\n        const worksheet = workbook.addWorksheet(\"Conv\u00eanios\");\r\n\r\n        \/\/ 1) T\u00edtulo\r\n        const title = \"Conv\u00eanios Federais - SEPLAN\/AC\";\r\n        const titleRow = worksheet.addRow([title]);\r\n        const lastCol = cfExcelColumnName(Math.max(1, selectedColumns.length));\r\n        worksheet.mergeCells(`A1:${lastCol}1`);\r\n        titleRow.font = { name: \"Arial\", size: 12, bold: true, italic: true };\r\n        worksheet.addRow([]);\r\n\r\n        \/\/ 2) Cabe\u00e7alho\r\n        const headerRow = worksheet.addRow(selectedColumns);\r\n        headerRow.eachCell((cell) => {\r\n          cell.fill = { type: \"pattern\", pattern: \"solid\", fgColor: { argb: \"FF0891B2\" } }; \/\/ sky\r\n          cell.font = { color: { argb: \"FFFFFFFF\" }, bold: true };\r\n          cell.alignment = { vertical: \"middle\", horizontal: \"center\", wrapText: true };\r\n          cell.border = {\r\n            top: { style: \"thin\" },\r\n            left: { style: \"thin\" },\r\n            bottom: { style: \"thin\" },\r\n            right: { style: \"thin\" },\r\n          };\r\n        });\r\n\r\n        \/\/ 3) Dados\r\n        cfFilteredData.forEach((item) => {\r\n          const rowValues = selectedColumns.map((col) => {\r\n            const v = item?.[col];\r\n\r\n            if (cfLooksLikeMoneyColumn(col)) {\r\n              const parsed = cfTryParsePtbrNumber(v);\r\n              return parsed === null ? v || \"--\" : parsed;\r\n            }\r\n\r\n            const s = v === null || v === undefined || v === \"\" || v === \"null\" ? \"--\" : v;\r\n            return s;\r\n          });\r\n\r\n          const dataRow = worksheet.addRow(rowValues);\r\n\r\n          \/\/ Moeda e links clic\u00e1veis\r\n          selectedColumns.forEach((col, idx) => {\r\n            const cell = dataRow.getCell(idx + 1);\r\n\r\n            if (cfLooksLikeMoneyColumn(col) && typeof cell.value === \"number\") {\r\n              cell.numFmt = '\"R$ \"#,##0.00';\r\n            }\r\n\r\n            const cellText = String(cell.value ?? \"\");\r\n            if (cellText.startsWith(\"http\")) {\r\n              cell.value = { text: \"Abrir Link\", hyperlink: cellText };\r\n              cell.font = { color: { argb: \"FF0000FF\" }, underline: true };\r\n            }\r\n          });\r\n        });\r\n\r\n        \/\/ Largura padr\u00e3o\r\n        worksheet.columns.forEach((column) => {\r\n          column.width = 22;\r\n        });\r\n\r\n        const buffer = await workbook.xlsx.writeBuffer();\r\n        const blob = new Blob([buffer], {\r\n          type: \"application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n        });\r\n        const link = document.createElement(\"a\");\r\n        link.href = URL.createObjectURL(blob);\r\n        link.download = \"convenios_federais.xlsx\";\r\n        link.click();\r\n      }\r\n\r\n      async function cfExportPDFSelected(selectedColumns) {\r\n        const MAX_COLUNAS_PDF = 12;\r\n\r\n        if (!window.jspdf?.jsPDF) {\r\n          alert(\"Biblioteca jsPDF n\u00e3o carregou. Verifique sua conex\u00e3o e tente novamente.\");\r\n          return;\r\n        }\r\n\r\n        if (selectedColumns.length > MAX_COLUNAS_PDF) {\r\n          alert(\r\n            `O PDF suporta no m\u00e1ximo ${MAX_COLUNAS_PDF} colunas para manter a legibilidade. Voc\u00ea selecionou ${selectedColumns.length}.\\n\\nPor favor, remova algumas colunas ou utilize a exporta\u00e7\u00e3o para Excel.`,\r\n          );\r\n          return;\r\n        }\r\n\r\n        const { jsPDF } = window.jspdf;\r\n        const doc = new jsPDF(\"landscape\", \"pt\", \"a4\");\r\n        const pageWidth = doc.internal.pageSize.getWidth();\r\n        \/\/ --- T\u00edtulo no Canto Esquerdo ---\r\n        doc.setFontSize(16);\r\n        doc.setFont(\"helvetica\", \"bold\");\r\n        \/\/ --- Adicionando o Logotipo ---\r\n        const imgUrl =\r\n          \"https:\/\/seplan.ac.gov.br\/wp-content\/uploads\/2025\/02\/4-horizontal-verde-conjunto.png\";\r\n        const imgWidth = 120; \/\/ Largura da imagem\r\n        const imgX = pageWidth - imgWidth - 10; \/\/ Largura total - largura da imagem - margem\r\n        try {\r\n          \/\/ Usamos altura 0 para manter a propor\u00e7\u00e3o (evita achatar)\r\n          doc.addImage(imgUrl, \"PNG\", imgX, 15, imgWidth, 0);\r\n        } catch (e) {\r\n          console.warn(\"Erro ao carregar imagem:\", e);\r\n        }\r\n\r\n        const termosLongos = [\r\n          \"Link\",\r\n          \"URL\",\r\n          \"Notifica\u00e7\u00e3o\",\r\n          \"Termo\",\r\n          \"Parecer\",\r\n          \"Espelho\",\r\n          \"Descri\u00e7\u00e3o\",\r\n          \"Objeto\",\r\n          \"Plano\",\r\n          \"Nome\",\r\n        ];\r\n\r\n        const body = cfFilteredData.map((item) =>\r\n          selectedColumns.map((col) => {\r\n            const v = item?.[col];\r\n\r\n            if (String(v ?? \"\").startsWith(\"http\")) return \"Abrir link\";\r\n\r\n            if (cfLooksLikeMoneyColumn(col)) {\r\n              const parsed = cfTryParsePtbrNumber(v);\r\n              return parsed === null ? v || \"R$ --\" : cfFormatarReal(parsed);\r\n            }\r\n\r\n            return v === null || v === undefined || v === \"\" || v === \"null\" ? \"--\" : String(v);\r\n          }),\r\n        );\r\n\r\n        let columnStyles = {};\r\n        selectedColumns.forEach((name, index) => {\r\n          if (termosLongos.some((t) => name.includes(t))) {\r\n            columnStyles[index] = { cellWidth: 80 };\r\n          } else if (name.includes(\"N\u00ba\") || name.includes(\"Ano\")) {\r\n            columnStyles[index] = { cellWidth: \"auto\" };\r\n          }\r\n        });\r\n\r\n        doc.autoTable({\r\n          head: [selectedColumns],\r\n          body,\r\n          startY: 70, \/\/ Come\u00e7a abaixo da imagem e t\u00edtulo\r\n          theme: \"grid\",\r\n          headStyles: {\r\n            fillColor: [8, 145, 178], \/\/ sky\r\n            textColor: 255,\r\n            fontSize: 8,\r\n            fontStyle: \"bold\",\r\n            halign: \"left\",\r\n          },\r\n          styles: { fontSize: 7, cellPadding: 2, overflow: \"linebreak\", valign: \"middle\" },\r\n          columnStyles: columnStyles,\r\n          alternateRowStyles: { fillColor: [240, 240, 240] },\r\n          margin: { top: 20, bottom: 20, left: 10, right: 10 },\r\n          didDrawCell: (data) => {\r\n            const cellText = data.cell.text && data.cell.text[0] ? data.cell.text[0] : \"\";\r\n            if (cellText.startsWith(\"http\")) {\r\n              const rowIndex = data.row.index;\r\n              const colName = selectedColumns[data.column.index];\r\n              const urlReal = filteredData[rowIndex][colName];\r\n\r\n              if (urlReal && String(urlReal).startsWith(\"http\")) {\r\n                doc.link(data.cell.x, data.cell.y, data.cell.width, data.cell.height, {\r\n                  url: urlReal,\r\n                });\r\n                doc.setTextColor(0, 0, 255);\r\n              }\r\n            }\r\n          },\r\n        });\r\n\r\n        doc.save(\"convenios_federais.pdf\");\r\n      }\r\n\r\n      \/\/ --- MODAL DE COLUNAS (EXPORTA\u00c7\u00c3O) ---\r\n      function cfOpenColumnModal(type) {\r\n        cfExportType = type;\r\n        const cfColumnList = document.getElementById(\"cfColumnList\");\r\n        if (!cfColumnList) return;\r\n        cfColumnList.innerHTML = \"\";\r\n\r\n        \/\/ Colunas marcadas por padr\u00e3o (se existirem no CSV)\r\n        const colunasPadrao = [\r\n          \"Instrumento\",\r\n          \"Ano\",\r\n          \"Executor\",\r\n          \"Concedente\",\r\n          \"T\u00edtulo\",\r\n          \"Objeto\",\r\n          \"Situa\u00e7\u00e3o\",\r\n          \"Parlamentar\",\r\n          \"Situa\u00e7\u00e3o da Execu\u00e7\u00e3o\",\r\n          \"Total Previsto\",\r\n          \"Total Liberado\",\r\n          \"Total Executado\",\r\n          \"Link de Acesso\",\r\n        ];\r\n\r\n        if (cfDataGlobal.length > 0) {\r\n          const columns = Object.keys(cfDataGlobal[0] || {});\r\n\r\n          columns.forEach((col) => {\r\n            const isChecked = colunasPadrao.includes(col);\r\n\r\n            const label = document.createElement(\"label\");\r\n            label.className =\r\n              \"flex items-center gap-2 text-xs text-gray-700 cursor-pointer hover:bg-gray-50 p-1 rounded\";\r\n\r\n            label.innerHTML = `\r\n              <input type=\"checkbox\" class=\"cfColCheck\" value=\"${col}\" ${\r\n                isChecked ? \"checked\" : \"\"\r\n              } onchange=\"cfValidatePdfLimit(this)\">\r\n              <span class=\"truncate\">${col}<\/span>\r\n            `;\r\n\r\n            cfColumnList.appendChild(label);\r\n          });\r\n        }\r\n\r\n        \/\/ Se for PDF, garante no m\u00e1ximo 12 colunas j\u00e1 na abertura\r\n        if (cfExportType === \"pdf\") {\r\n          const checked = Array.from(document.querySelectorAll(\".cfColCheck:checked\"));\r\n          if (checked.length > 12) {\r\n            checked.slice(12).forEach((el) => (el.checked = false));\r\n          }\r\n        }\r\n\r\n        document.getElementById(\"columnModal\")?.classList.replace(\"hidden\", \"flex\");\r\n        document.body.style.overflow = \"hidden\";\r\n      }\r\n\r\n      function cfValidatePdfLimit(checkbox) {\r\n        if (cfExportType !== \"pdf\") return;\r\n        const selectedCount = document.querySelectorAll(\".cfColCheck:checked\").length;\r\n        if (selectedCount > 12) {\r\n          alert(\r\n            \"Para exporta\u00e7\u00e3o em PDF, o limite m\u00e1ximo \u00e9 de 12 colunas para garantir a legibilidade.\",\r\n          );\r\n          checkbox.checked = false;\r\n        }\r\n      }\r\n\r\n      function cfGetSelectedColumns() {\r\n        return Array.from(document.querySelectorAll(\".cfColCheck:checked\")).map((c) => c.value);\r\n      }\r\n\r\n      function cfCloseColumnModal() {\r\n        document.getElementById(\"columnModal\")?.classList.replace(\"flex\", \"hidden\");\r\n        document.body.style.overflow = \"auto\";\r\n      }\r\n\r\n      function cfConfirmExport() {\r\n        const selected = cfGetSelectedColumns();\r\n        if (!selected.length) {\r\n          alert(\"Selecione pelo menos uma coluna!\");\r\n          return;\r\n        }\r\n\r\n        cfCloseColumnModal();\r\n\r\n        if (cfExportType === \"excel\") cfExportExcelSelected(selected);\r\n        else cfExportPDFSelected(selected);\r\n      }\r\n\r\n      function efSelectAllColumns() {\r\n        const checks = document.querySelectorAll(\"cfColumnList input[type=checkbox]\");\r\n\r\n        let count = 0;\r\n\r\n        checks.forEach((c) => {\r\n          if (efExportType === \"pdf\") {\r\n            if (count < 12) {\r\n              c.checked = true;\r\n              count++;\r\n            } else {\r\n              c.checked = false;\r\n            }\r\n          } else {\r\n            c.checked = true;\r\n          }\r\n        });\r\n\r\n        if (efExportType === \"pdf\") {\r\n          alert(\"Para PDF, apenas as 12 primeiras colunas foram selecionadas.\");\r\n        }\r\n      }\r\n\r\n      function efClearColumns() {\r\n        const checks = document.querySelectorAll(\"#cfColumnList input[type=checkbox]\");\r\n        checks.forEach((c) => (c.checked = false));\r\n      }\r\n\r\n      \/\/ --- MODAL \"MAIS\" (IFRAME) ---\r\n      function cfCloseMaisModal() {\r\n        const modal = document.getElementById(\"maisModal\");\r\n        if (!modal) return;\r\n        modal.classList.replace(\"flex\", \"hidden\");\r\n        document.body.style.overflow = \"auto\";\r\n\r\n        const frame = document.getElementById(\"maisFrame\");\r\n        if (frame) frame.src = \"about:blank\";\r\n      }\r\n\r\n      \/\/ --- LISTENERS GLOBAIS ---\r\n      document.addEventListener(\"DOMContentLoaded\", () => {\r\n        cfInit();\r\n\r\n        \/\/ Atribui eventos de input nos filtros\r\n        document.querySelectorAll(\"input, select\").forEach((el) => {\r\n          el.addEventListener(\"input\", cfFilterData);\r\n        });\r\n\r\n        \/\/ Clique fora do modal para fechar\r\n        window.onclick = (e) => {\r\n          if (e.target.id === \"detailModal\") cfCloseModal();\r\n          if (e.target.id === \"columnModal\") cfCloseColumnModal();\r\n          if (e.target.id === \"maisModal\") cfCloseMaisModal();\r\n        };\r\n      });\r\n    <\/script>\r\n\r\n<\/div>\n\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Portal de Conv\u00eanios Federais \/ Conv\u00eanios Federais Conv\u00eanios Federais Acesse as informa\u00e7\u00f5es detalhadas sobre os conv\u00eanios federais destinadas ao Governo do Estado do Acre.<\/p>\n","protected":false},"author":30,"featured_media":49262,"parent":20970,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_eb_attr":"","neve_meta_sidebar":"","neve_meta_container":"full-width","neve_meta_enable_content_width":"on","neve_meta_content_width":90,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","h5ap_radio_sources":[],"footnotes":""},"class_list":["post-46039","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Conv\u00eanios Federais - Seplan - Acre<\/title>\n<meta name=\"description\" content=\"Confira Conv\u00eanios Federais no Seplan - Acre com dados atualizados e informa\u00e7\u00f5es completas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Conv\u00eanios Federais - Seplan - Acre\" \/>\n<meta property=\"og:description\" content=\"Confira Conv\u00eanios Federais no Seplan - Acre com dados atualizados e informa\u00e7\u00f5es completas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/\" \/>\n<meta property=\"og:site_name\" content=\"Seplan - Acre\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/seplan.acre\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-14T19:04:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/seplan.ac.gov.br\/wp-content\/uploads\/2022\/06\/padrao-img-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1475\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@SeplanAcre\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/\",\"url\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/\",\"name\":\"Conv\u00eanios Federais - Seplan - Acre\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/seplan.ac.gov.br\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/padrao-img-scaled.png\",\"datePublished\":\"2026-01-29T15:35:09+00:00\",\"dateModified\":\"2026-05-14T19:04:50+00:00\",\"description\":\"Confira Conv\u00eanios Federais no Seplan - Acre com dados atualizados e informa\u00e7\u00f5es completas.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/#primaryimage\",\"url\":\"https:\\\/\\\/seplan.ac.gov.br\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/padrao-img-scaled.png\",\"contentUrl\":\"https:\\\/\\\/seplan.ac.gov.br\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/padrao-img-scaled.png\",\"width\":2560,\"height\":1475,\"caption\":\"Banner com fundo verde e a logo ao centro para ser imagem de destaque nos posts e nas paginas que n\u00e3o tiverem.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/convenios-federais\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/seplan.ac.gov.br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gest\u00e3o Estrat\u00e9gica de Recursos\",\"item\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Conv\u00eanios\",\"item\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Portal de Conv\u00eanios Federais\",\"item\":\"https:\\\/\\\/seplan.ac.gov.br\\\/gestao-estrategica-de-recursos\\\/convenios\\\/portal-de-convenios-federais\\\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Conv\u00eanios Federais\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/#website\",\"url\":\"https:\\\/\\\/seplan.ac.gov.br\\\/\",\"name\":\"Seplan - Acre\",\"description\":\"Secretaria de Estado de Planejamento - Acre\",\"publisher\":{\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/#organization\"},\"alternateName\":\"Seplan\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/seplan.ac.gov.br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/#organization\",\"name\":\"Secretaria de Estado de Planejamento - Seplan - Acre\",\"alternateName\":\"Seplan\",\"url\":\"https:\\\/\\\/seplan.ac.gov.br\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Secretaria de Estado de Planejamento - Seplan - Acre\"},\"image\":{\"@id\":\"https:\\\/\\\/seplan.ac.gov.br\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/seplan.acre\",\"https:\\\/\\\/x.com\\\/SeplanAcre\",\"https:\\\/\\\/www.instagram.com\\\/seplan.acre\\\/\",\"https:\\\/\\\/www.youtube.com\\\/SeplanAcre\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Conv\u00eanios Federais - Seplan - Acre","description":"Confira Conv\u00eanios Federais no Seplan - Acre com dados atualizados e informa\u00e7\u00f5es completas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/","og_locale":"pt_BR","og_type":"article","og_title":"Conv\u00eanios Federais - Seplan - Acre","og_description":"Confira Conv\u00eanios Federais no Seplan - Acre com dados atualizados e informa\u00e7\u00f5es completas.","og_url":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/","og_site_name":"Seplan - Acre","article_publisher":"https:\/\/www.facebook.com\/seplan.acre","article_modified_time":"2026-05-14T19:04:50+00:00","og_image":[{"width":2560,"height":1475,"url":"https:\/\/seplan.ac.gov.br\/wp-content\/uploads\/2022\/06\/padrao-img-scaled.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@SeplanAcre","twitter_misc":{"Est. tempo de leitura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/","url":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/","name":"Conv\u00eanios Federais - Seplan - Acre","isPartOf":{"@id":"https:\/\/seplan.ac.gov.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/#primaryimage"},"image":{"@id":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/#primaryimage"},"thumbnailUrl":"https:\/\/seplan.ac.gov.br\/wp-content\/uploads\/2022\/06\/padrao-img-scaled.png","datePublished":"2026-01-29T15:35:09+00:00","dateModified":"2026-05-14T19:04:50+00:00","description":"Confira Conv\u00eanios Federais no Seplan - Acre com dados atualizados e informa\u00e7\u00f5es completas.","breadcrumb":{"@id":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/#primaryimage","url":"https:\/\/seplan.ac.gov.br\/wp-content\/uploads\/2022\/06\/padrao-img-scaled.png","contentUrl":"https:\/\/seplan.ac.gov.br\/wp-content\/uploads\/2022\/06\/padrao-img-scaled.png","width":2560,"height":1475,"caption":"Banner com fundo verde e a logo ao centro para ser imagem de destaque nos posts e nas paginas que n\u00e3o tiverem."},{"@type":"BreadcrumbList","@id":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/convenios-federais\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/seplan.ac.gov.br\/"},{"@type":"ListItem","position":2,"name":"Gest\u00e3o Estrat\u00e9gica de Recursos","item":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/"},{"@type":"ListItem","position":3,"name":"Conv\u00eanios","item":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/"},{"@type":"ListItem","position":4,"name":"Portal de Conv\u00eanios Federais","item":"https:\/\/seplan.ac.gov.br\/gestao-estrategica-de-recursos\/convenios\/portal-de-convenios-federais\/"},{"@type":"ListItem","position":5,"name":"Conv\u00eanios Federais"}]},{"@type":"WebSite","@id":"https:\/\/seplan.ac.gov.br\/#website","url":"https:\/\/seplan.ac.gov.br\/","name":"Seplan - Acre","description":"Secretaria de Estado de Planejamento - Acre","publisher":{"@id":"https:\/\/seplan.ac.gov.br\/#organization"},"alternateName":"Seplan","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/seplan.ac.gov.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/seplan.ac.gov.br\/#organization","name":"Secretaria de Estado de Planejamento - Seplan - Acre","alternateName":"Seplan","url":"https:\/\/seplan.ac.gov.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/seplan.ac.gov.br\/#\/schema\/logo\/image\/","url":"","contentUrl":"","caption":"Secretaria de Estado de Planejamento - Seplan - Acre"},"image":{"@id":"https:\/\/seplan.ac.gov.br\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/seplan.acre","https:\/\/x.com\/SeplanAcre","https:\/\/www.instagram.com\/seplan.acre\/","https:\/\/www.youtube.com\/SeplanAcre"]}]}},"_links":{"self":[{"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/pages\/46039","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/comments?post=46039"}],"version-history":[{"count":10,"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/pages\/46039\/revisions"}],"predecessor-version":[{"id":51946,"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/pages\/46039\/revisions\/51946"}],"up":[{"embeddable":true,"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/pages\/20970"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/media\/49262"}],"wp:attachment":[{"href":"https:\/\/seplan.ac.gov.br\/wp-json\/wp\/v2\/media?parent=46039"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}