{"id":29024,"date":"2024-07-29T14:54:02","date_gmt":"2024-07-29T15:54:02","guid":{"rendered":"https:\/\/www.guidaeuroprogettazione.eu\/?page_id=29024"},"modified":"2026-01-27T15:33:38","modified_gmt":"2026-01-27T16:33:38","slug":"portail-des-appels-doffres","status":"publish","type":"page","link":"https:\/\/euknow.it\/fr\/portail-des-appels-doffres\/","title":{"rendered":"Portail des appels d&rsquo;offres"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"29024\" class=\"elementor elementor-29024 elementor-28990\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7f5939d left-cut bg-bis e-flex e-con-boxed e-con e-parent\" data-id=\"7f5939d\" data-element_type=\"container\" data-e-type=\"container\" id=\"heroIcona\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-75caa89 e-con-full e-flex e-con e-child\" data-id=\"75caa89\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2b30604 e-con-full e-flex e-con e-child\" data-id=\"2b30604\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<!-- dce invisible element bea0a5c -->\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e01974e e-con-full e-flex e-con e-child\" data-id=\"e01974e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f007ae elementor-widget elementor-widget-heading\" data-id=\"2f007ae\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Portail des appels d&rsquo;offres<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5b1ba3 elementor-widget elementor-widget-text-editor\" data-id=\"d5b1ba3\" 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>Une s\u00e9lection d&rsquo;appels sur les programmes de coop\u00e9ration europ\u00e9enne, nationale, r\u00e9gionale et territoriale<\/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-7d1b730 e-con-full e-flex e-con e-child\" data-id=\"7d1b730\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a692321 elementor-widget elementor-widget-image\" data-id=\"a692321\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1\" height=\"1\" src=\"https:\/\/euknow.it\/wp-content\/uploads\/2025\/11\/eu-bandi.svg\" class=\"attachment-large size-large wp-image-36289\" alt=\"\" \/>\t\t\t\t\t\t\t\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-976b454 e-con-full e-flex e-con e-parent\" data-id=\"976b454\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-0946ef4 e-flex e-con-boxed e-con e-child\" data-id=\"0946ef4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4b7138f e-con-full e-flex e-con e-child\" data-id=\"4b7138f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-240b751 e-con-full e-flex e-con e-child\" data-id=\"240b751\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b7bb9b elementor-widget elementor-widget-text-editor\" data-id=\"2b7bb9b\" 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>Il est possible de trier les appels par type de programme (respectivement, UE, PR, PN, PCT), par programme, par d\u00e9lai et par date de publication dans notre guide.<\/p><p>L&rsquo;outil de recherche permet \u00e9galement de rechercher n&rsquo;importe quel mot (programme, r\u00e9gion ou mot dans le titre de l&rsquo;appel).<\/p><p>Nous vous recommandons \u00e9galement de vous r\u00e9f\u00e9rer aux pages officielles, car notre analyse n&rsquo;est pas exhaustive.<\/p><p>Pour d&rsquo;autres opportunit\u00e9s, veuillez consulter le portail Infobandi.net de CSVnet, la plateforme cr\u00e9\u00e9e par les centres de services volontaires en collaboration avec Acri.<\/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-53a5095 e-con-full e-flex e-con e-child\" data-id=\"53a5095\" data-element_type=\"container\" data-e-type=\"container\">\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 class=\"elementor-element elementor-element-ba4564d elementor-widget__width-initial elementor-widget-tablet__width-inherit elementor-absolute bandiCaro elementor-pagination-type-bullets elementor-pagination-position-outside elementor-widget elementor-widget-n-carousel\" data-id=\"ba4564d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;carousel_items&quot;:[{&quot;slide_title&quot;:&quot;Slide #1&quot;,&quot;_id&quot;:&quot;df948bf&quot;},{&quot;slide_title&quot;:&quot;Slide #2&quot;,&quot;_id&quot;:&quot;b0bafad&quot;},{&quot;slide_title&quot;:&quot;Slide #3&quot;,&quot;_id&quot;:&quot;8fd876d&quot;}],&quot;slides_to_show&quot;:&quot;2&quot;,&quot;slides_to_show_tablet&quot;:&quot;1&quot;,&quot;slides_to_scroll&quot;:&quot;1&quot;,&quot;slides_to_scroll_tablet&quot;:&quot;1&quot;,&quot;_position&quot;:&quot;absolute&quot;,&quot;slides_to_show_mobile&quot;:&quot;1&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;infinite&quot;:&quot;yes&quot;,&quot;speed&quot;:500,&quot;offset_sides&quot;:&quot;none&quot;,&quot;pagination&quot;:&quot;bullets&quot;,&quot;image_spacing_custom&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;image_spacing_custom_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;image_spacing_custom_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-carousel swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carosello\" dir=\"ltr\">\n\t\t\t<div class=\"swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"1\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 sur 3\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-af220e1 e-flex e-con-boxed e-con e-child\" data-id=\"af220e1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-aab5e7b e-con-full e-flex e-con e-child\" data-id=\"aab5e7b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4a7fdb2 elementor-widget elementor-widget-heading\" data-id=\"4a7fdb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Appels d'offres europ\u00e9ens \n(Financement et appels d'offres)<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-819b7e9 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"819b7e9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/ec.europa.eu\/info\/funding-tenders\/opportunities\/portal\/screen\/opportunities\/calls-for-proposals\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"2\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 sur 3\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c14bcda e-flex e-con-boxed e-con e-child\" data-id=\"c14bcda\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f0b9292 e-con-full e-flex e-con e-child\" data-id=\"f0b9292\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-64d29e6 elementor-widget elementor-widget-heading\" data-id=\"64d29e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Appels r\u00e9gionaux et nationaux\n(OpenCoesione)<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-c2c4380 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"c2c4380\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/opencoesione.gov.it\/it\/opportunita_2021_2027\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"3\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 sur 3\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d38fa0b e-flex e-con-boxed e-con e-child\" data-id=\"d38fa0b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4142092 e-con-full e-flex e-con e-child\" data-id=\"4142092\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f66a4ac elementor-widget elementor-widget-heading\" data-id=\"f66a4ac\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Appels CSVnet \n(Infobandi.net)<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-1a86f95 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"1a86f95\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/infobandi.csvnet.it\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-66609cc e-flex e-con-boxed e-con e-parent\" data-id=\"66609cc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a8fa619 e-con-full e-flex e-con e-child\" data-id=\"a8fa619\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c7d6637 elementor-widget elementor-widget-heading\" data-id=\"c7d6637\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">BANDI<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3719f9c elementor-widget elementor-widget-shortcode\" data-id=\"3719f9c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<style>\n\/* Euro Programs Tracker Styles *\/\n.ept-container {\n    background: white;\n    font-family: system-ui, -apple-system, sans-serif;\n    color: #1f2937;\n    max-width: 100%;\n    margin: 0 auto;\n    padding: 0;\n}\n.ept-header { margin-bottom: 2.5rem; }\n.ept-title { \n    font-size: 1.875rem; \n    font-weight: 700; \n    color: #5B50A0; \n    margin-bottom: 0.5rem; \n}\n.ept-subtitle { color: #6b7280; }\n\n\/* Filtri *\/\n.ept-filters {\n    display: flex;\n    flex-direction: column;\n    gap: 1.5rem;\n    margin-bottom: 2rem;\n    align-items: flex-end;\n}\n@media (min-width: 768px) {\n    .ept-filters { flex-direction: row; gap: 2rem; }\n}\n.ept-filter-group { flex: 1; width: 100%; position: relative; }\n.ept-filter-group.ept-filter-search { flex: 2; }\n.ept-filter-wrapper { position: relative; }\n.ept-filter-icon {\n    position: absolute;\n    left: 0;\n    top: 50%;\n    transform: translateY(-50%);\n    color: #3b82f6;\n    width: 1.5rem;\n    height: 1.5rem;\n    pointer-events: none;\n}\n#ept-container .ept-filter-select, .ept-filter-input {\n    width: 100%;\n    padding: 0.5rem 1rem 0.5rem 2rem!important;\n    border: none!important;\n    border-bottom: 2px solid #3b82f6!important;\n    background: transparent;\n    color: #374151;\n    font-size: 1rem;\n    outline: none;\n    min-height: 42px;\n    border-radius: 0!important;\n}\n#ept-container .ept-filter-select { appearance: none; cursor: pointer; }\n#ept-container .ept-filter-input::placeholder { color: #9ca3af; }\n#ept-container .ept-filter-input[readonly] { cursor: pointer; }\n\n\/* Daterangepicker Custom Styles *\/\n.daterangepicker {\n    width: 620px !important;\n}\n.daterangepicker .drp-buttons .btn {\n    font-size: 16px!important;\n    padding: 8px 12px!important;\n    border-radius: 0!important;\n}\n@media(max-width:619px){\n    .daterangepicker, .daterangepicker.show-calendar .drp-calendar {\n        width: 100% !important;\n    }\n}\n\n\/* Tabella *\/\n.ept-table-container {\n    overflow-x: auto;\n    box-shadow: 0 1px 3px rgba(0,0,0,0.1);\n    margin-bottom: 2rem;\n}\n.ept-table {\n    width: 100%;\n    text-align: left;\n    border-collapse: collapse;\n}\n.ept-table {\n    font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n    font-variant-numeric: normal;\n    font-feature-settings: \"frac\" 0 !important;\n}\n\n.ept-table thead tr {\n    background: #5B50A0;\n    color: white;\n    text-transform: uppercase;\n    font-size: 0.875rem;\n    letter-spacing: 0.05em;\n    font-weight: 600;\n}\n.ept-table th {\n    padding: 1rem;\n    border-right: 1px solid #6f64b8;\n    white-space: nowrap;\n}\n.ept-table th:last-child { border-right: none; }\n.ept-table th.sortable {\n    cursor: pointer;\n    user-select: none;\n    position: relative;\n    padding-right: 2rem;\n}\n.ept-table th.sortable:hover {\n    background: #6f64b8;\n}\n.ept-table th.sortable::after {\n    content: '';\n    position: absolute;\n    right: 0.5rem;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 0;\n    height: 0;\n    border-left: 5px solid transparent;\n    border-right: 5px solid transparent;\n    opacity: 0.3;\n}\n.ept-table th.sortable.sort-asc::after {\n    border-bottom: 5px solid white;\n    opacity: 1;\n}\n.ept-table th.sortable.sort-desc::after {\n    border-top: 5px solid white;\n    opacity: 1;\n}\n.ept-table tbody tr {\n    border-bottom: 1px solid #e5e7eb;\n    transition: background-color 0.15s;\n}\n.ept-table tbody tr:hover { background-color: #dbeafe !important; }\n.ept-table tbody tr.ept-row-even { background: white; }\n.ept-table tbody tr.ept-row-odd { background: #F3F4FB; }\n.ept-table td { padding: 1rem; vertical-align: top; }\n.ept-table td.ept-date-special { color: #9ca3af; font-style: italic; }\n\n\/* Loading *\/\n.ept-loading {\n    padding: 3rem;\n    text-align: center;\n    background: #f9fafb;\n}\n.ept-spinner {\n    display: inline-block;\n    width: 3rem;\n    height: 3rem;\n    border: 2px solid transparent;\n    border-bottom-color: #2563eb;\n    border-radius: 50%;\n    animation: ept-spin 1s linear infinite;\n}\n@keyframes ept-spin {\n    0% { transform: rotate(0deg); }\n    100% { transform: rotate(360deg); }\n}\n\n\/* No results *\/\n.ept-no-results {\n    padding: 2rem;\n    text-align: center;\n    background: #f9fafb;\n    color: #6b7280;\n    border: 1px solid #e5e7eb;\n    border-radius: 0.5rem;\n}\n\n\/* Paginazione *\/\n.ept-pagination {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 1rem;\n    padding-top: 1rem;\n    border-top: 1px solid #e5e7eb;\n}\n.ept-pagination-info { color: #6b7280; font-size: 0.875rem; }\n.ept-pagination-controls {\n    display: flex;\n    align-items: center;\n    gap: 1.5rem;\n}\n.ept-items-per-page {\n    display: flex;\n    align-items: center;\n    gap: 0.5rem;\n}\n.ept-items-per-page label { color: #6b7280; font-size: 0.875rem; }\n.ept-items-per-page select {\n    padding: 0.375rem 2rem 0.375rem 0.75rem;\n    border: 1px solid #d1d5db;\n    border-radius: 0;\n    background: white;\n    color: #374151;\n    font-size: 0.875rem;\n    cursor: pointer;\n}\n.ept-page-buttons {\n    display: flex;\n    align-items: center;\n    gap: 0.5rem;\n}\n.ept-page-btn {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 2rem;\n    height: 2rem;\n    border: 1px solid #d1d5db;\n    border-radius: 0.375rem;\n    background: white;\n    cursor: pointer;\n    padding: 0;\n    border: 0;\n}\n.ept-page-btn svg {\n    width: 32px;\n    height: 32px;\n}\n.ept-page-btn:hover, .ept-page-btn:focus {\n    background: #f3f4f6;\n    border-color: #9ca3af;\n}\n.ept-page-btn:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n}\n.ept-pagination-controls button:focus {\n    background-color: none;\n}\n.ept-page-numbers { display: flex; gap: 0.25rem; }\n.ept-page-number {\n    min-width: 2rem;\n    height: 2rem;\n    padding: 0 0.5rem;\n    border: 1px solid transparent;\n    border-radius: 0.375rem;\n    background: transparent;\n    color: #6b7280;\n    font-size: 20px;\n    cursor: pointer;\n    border-radius: 0;\n    height: 40px;\n    width: 40px;\n}\n.ept-page-number:hover {\n    background: #f3f4f6;\n    color: #374151;\n}\n.ept-page-number.active {\n    background: #3b82f6;\n    color: white;\n    font-weight: 500;\n}\n<\/style>\n\n<div id=\"ept-container\" class=\"ept-container\" data-csv-url=\"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vQ-eQIG6cwj6Ur24ZzDAS22nwy8CjIXgrJjXl2wJqSMoqt_rxvduLjU5CCgqEfHSlvmTSRW2amoyGpt\/pub?gid=2090149575&amp;single=true&amp;output=csv\" data-items-per-page=\"10\">\n    \n\n    <!-- Filters -->\n    <div class=\"ept-filters\">\n        <div class=\"ept-filter-group\">\n            <div class=\"ept-filter-wrapper\">\n                <svg class=\"ept-filter-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n                <\/svg>\n                <select id=\"ept-category-filter\" class=\"ept-filter-select\">\n                    <option value=\"\">Description du programme<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n        \n        <div class=\"ept-filter-group ept-filter-search\">\n            <div class=\"ept-filter-wrapper\">\n                <svg class=\"ept-filter-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <circle cx=\"11\" cy=\"11\" r=\"8\"><\/circle>\n                    <path d=\"m21 21-4.35-4.35\"><\/path>\n                <\/svg>\n                <input type=\"text\" id=\"ept-search-filter\" class=\"ept-filter-input\" placeholder=\"Recherche d&#039;informations\">\n            <\/div>\n        <\/div>\n        \n        <div class=\"ept-filter-group\">\n            <div class=\"ept-filter-wrapper\">\n                <svg class=\"ept-filter-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                    <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"><\/rect>\n                    <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"><\/line>\n                    <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"><\/line>\n                    <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"><\/line>\n                <\/svg>\n                <input type=\"text\" id=\"ept-date-range-filter\" class=\"ept-filter-input\" placeholder=\"Scadenza de donn\u00e9es\" readonly>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n    <!-- Table Container -->\n    <div class=\"ept-table-container\">\n        <div class=\"ept-loading\">\n            <div class=\"ept-spinner\"><\/div>\n        <\/div>\n        \n        <table class=\"ept-table\" style=\"display: none;\">\n            <thead>\n                <tr>\n                    <th>TIPO<\/th>\n                    <th>PROGRAMMA<\/th>\n                    <th>BANDO\/LINK<\/th>\n                    <th class=\"sortable\" data-sort=\"expirationDate\">SCADENZA<\/th>\n                    <th class=\"sortable\" data-sort=\"updateDate\">AGGIORNAMENTO<\/th>\n                <\/tr>\n            <\/thead>\n            <tbody id=\"ept-table-body\"><\/tbody>\n        <\/table>\n        \n        <div class=\"ept-no-results\" style=\"display: none;\">\n            Aucun r\u00e9sultat n'a \u00e9t\u00e9 obtenu.        <\/div>\n    <\/div>\n    \n    <!-- Pagination -->\n    <div class=\"ept-pagination\" style=\"display: none;\">\n        <div class=\"ept-pagination-info\">\n            <span id=\"ept-pagination-text\"><\/span>\n            \n            <div class=\"ept-items-per-page\">\n<!--                 <label>Mostra:<\/label> -->\n                <select id=\"ept-items-per-page\">\n                    <option value=\"10\">10<\/option>\n                    <option value=\"25\">25<\/option>\n                    <option value=\"50\">50<\/option>\n                    <option value=\"100\">100<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n        \n        <div class=\"ept-pagination-controls\">\n            \n            \n            <div class=\"ept-page-buttons\">\n                <button id=\"ept-prev-page\" class=\"ept-page-btn\">\n                    <svg width=\"18\" height=\"32\" viewBox=\"0 0 18 32\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t<path d=\"M0.756275 13.5797C0.895152 13.3775 1.05516 13.1873 1.23631 13.0061L14.2455 0L17.663 3.41456L5.07957 15.995L7.49483 18.4103L17.66 28.5754L14.2424 31.99L1.23631 18.9839C1.05516 18.8027 0.895152 18.6125 0.756275 18.4103C-0.252092 16.9641 -0.252092 15.0259 0.756275 13.5797Z\" fill=\"#0072DA\"><\/path>\n\t\t\t\t\t<\/svg>\n                <\/button>\n                \n                <div id=\"ept-page-numbers\" class=\"ept-page-numbers\"><\/div>\n                \n                <button id=\"ept-next-page\" class=\"ept-page-btn\">\n                    <svg width=\"18\" height=\"32\" viewBox=\"0 0 18 32\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t<path d=\"M16.9037 18.4103C16.7649 18.6125 16.6049 18.8027 16.4237 18.9839L3.41758 31.99L0 28.5754L12.5804 15.995L10.1652 13.5797L0 3.41456L3.41758 0L16.4237 13.0061C16.6049 13.1873 16.7649 13.3775 16.9037 13.5797C17.9121 15.0259 17.9121 16.9641 16.9037 18.4103Z\" fill=\"#0072DA\"><\/path>\n\t\t\t\t\t<\/svg>\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n    \n<\/div>\n\n<script>\nvar eptTranslations = {\"tipologiaProgramma\":\"Description du programme\",\"visualizzati\":\"Visualizzati\",\"di\":\"di\",\"risultati\":\"risultati\",\"applica\":\"Applica\",\"cancella\":\"Cancella\",\"da\":\"Da\",\"a\":\"A\",\"personalizzato\":\"Personalizzato\",\"settimana\":\"S\",\"giorni\":[\"Do\",\"Lu\",\"Ma\",\"Me\",\"Gi\",\"Ve\",\"Sa\"],\"mesi\":[\"Gennaio\",\"Febbraio\",\"Marzo\",\"Aprile\",\"Maggio\",\"Giugno\",\"Luglio\",\"Agosto\",\"Settembre\",\"Ottobre\",\"Novembre\",\"Dicembre\"],\"rangeDaScadenza\":\"Range data scadenza\",\"finoA\":\"Fino a\"};\n<\/script>\n\n<script>\n(function() {\n    'use strict';\n\n    \/\/ Configurazione\n    const CONFIG = { preserveLinks: false };\n    \n    \/\/ Stato\n    const state = {\n        data: [],\n        filteredData: [],\n        currentPage: 1,\n        itemsPerPage: 10,\n        filters: { search: '', category: '', dateFrom: '', dateTo: '' },\n        sort: { column: null, direction: null }\n    };\n    \n    \/\/ Elementi DOM\n    let elements = {};\n    \n    \/\/ Init\n    document.addEventListener('DOMContentLoaded', function() {\n        console.log('EPT: Inizializzazione...');\n        initializeElements();\n        attachEventListeners();\n        loadData();\n    });\n    \n    function initializeElements() {\n        elements = {\n            container: document.getElementById('ept-container'),\n            table: document.querySelector('.ept-table'),\n            tbody: document.getElementById('ept-table-body'),\n            loading: document.querySelector('.ept-loading'),\n            noResults: document.querySelector('.ept-no-results'),\n            pagination: document.querySelector('.ept-pagination'),\n            searchInput: document.getElementById('ept-search-filter'),\n            categorySelect: document.getElementById('ept-category-filter'),\n            dateRangeInput: document.getElementById('ept-date-range-filter'),\n            paginationText: document.getElementById('ept-pagination-text'),\n            itemsPerPage: document.getElementById('ept-items-per-page'),\n            prevBtn: document.getElementById('ept-prev-page'),\n            nextBtn: document.getElementById('ept-next-page'),\n            pageNumbers: document.getElementById('ept-page-numbers')\n        };\n\n        const itemsPerPageAttr = elements.container.getAttribute('data-items-per-page');\n        if (itemsPerPageAttr) {\n            state.itemsPerPage = parseInt(itemsPerPageAttr);\n            elements.itemsPerPage.value = state.itemsPerPage;\n        }\n    }\n    \n    function attachEventListeners() {\n        elements.searchInput.addEventListener('input', debounce(handleSearchChange, 300));\n        elements.categorySelect.addEventListener('change', handleCategoryChange);\n\n        \/\/ Initialize daterangepicker\n        jQuery(elements.dateRangeInput).daterangepicker({\n            autoUpdateInput: false,\n            locale: {\n                format: 'DD\/MM\/YYYY',\n                separator: ' - ',\n                applyLabel: eptTranslations.applica,\n                cancelLabel: eptTranslations.cancella,\n                fromLabel: eptTranslations.da,\n                toLabel: eptTranslations.a,\n                customRangeLabel: eptTranslations.personalizzato,\n                weekLabel: eptTranslations.settimana,\n                daysOfWeek: eptTranslations.giorni,\n                monthNames: eptTranslations.mesi,\n                firstDay: 1\n            },\n            opens: 'left'\n        });\n\n        jQuery(elements.dateRangeInput).on('apply.daterangepicker', function(ev, picker) {\n            jQuery(this).val(picker.startDate.format('DD\/MM\/YYYY') + ' - ' + picker.endDate.format('DD\/MM\/YYYY'));\n            state.filters.dateFrom = picker.startDate.format('YYYY-MM-DD');\n            state.filters.dateTo = picker.endDate.format('YYYY-MM-DD');\n            state.currentPage = 1;\n            applyFilters();\n        });\n\n        jQuery(elements.dateRangeInput).on('cancel.daterangepicker', function(ev, picker) {\n            jQuery(this).val('');\n            state.filters.dateFrom = '';\n            state.filters.dateTo = '';\n            state.currentPage = 1;\n            applyFilters();\n        });\n\n        \/\/ Sort columns\n        document.querySelectorAll('.ept-table th.sortable').forEach(function(th) {\n            th.addEventListener('click', function() {\n                handleSort(this.getAttribute('data-sort'));\n            });\n        });\n\n        elements.itemsPerPage.addEventListener('change', handleItemsPerPageChange);\n        elements.prevBtn.addEventListener('click', handlePrevPage);\n        elements.nextBtn.addEventListener('click', handleNextPage);\n    }\n    \n    function loadData() {\n        console.log('EPT: Caricamento dati...');\n        const csvUrl = elements.container.getAttribute('data-csv-url');\n        \n        if (csvUrl && csvUrl.trim() !== '') {\n            fetchFromCSV(csvUrl);\n        } else if (typeof eptSettings !== 'undefined') {\n            fetchFromAjax();\n        } else {\n            useMockData();\n        }\n    }\n    \n    function fetchFromCSV(url) {\n        console.log('EPT: Fetch CSV da', url);\n        fetch(url)\n            .then(response => response.text())\n            .then(text => {\n                const data = parseCSV(text);\n                handleDataLoaded(data);\n            })\n            .catch(error => {\n                console.error('EPT: Errore CSV', error);\n                useMockData();\n            });\n    }\n    \n    function fetchFromAjax() {\n        console.log('EPT: Fetch via AJAX');\n        const formData = new FormData();\n        formData.append('action', 'ept_fetch_data');\n        formData.append('nonce', '2dc4b62009');\n        formData.append('csv_url', elements.container.getAttribute('data-csv-url') || '');\n        \n        fetch('https:\/\/euknow.it\/wp-admin\/admin-ajax.php', {\n            method: 'POST',\n            body: formData\n        })\n        .then(response => response.json())\n        .then(result => {\n            if (result.success) {\n                handleDataLoaded(result.data);\n            } else {\n                useMockData();\n            }\n        })\n        .catch(error => {\n            console.error('EPT: Errore AJAX', error);\n            useMockData();\n        });\n    }\n    \n    function useMockData() {\n        console.log('EPT: Uso mock data');\n        const mockData = [{\"id\":\"1\",\"type\":\"P.UE\",\"program\":\"Europa Digitale\",\"callTitle\":\"Bando di esempio 1\",\"callTitlePlain\":\"Bando di esempio 1\",\"expirationDate\":\"30\\\/12\\\/2025\",\"updateDate\":\"15\\\/11\\\/2024\"},{\"id\":\"2\",\"type\":\"P.NAZ\",\"program\":\"PNRR\",\"callTitle\":\"Bando di esempio 2\",\"callTitlePlain\":\"Bando di esempio 2\",\"expirationDate\":\"n.d.\",\"updateDate\":\"20\\\/11\\\/2024\"}];\n        handleDataLoaded(mockData);\n    }\n    \n    function parseCSV(csvText) {\n        const lines = csvText.split('\\n');\n        const data = [];\n        \n        \/\/ Debug: vediamo la prima riga (header)\n        if (lines.length > 0) {\n            console.log('EPT: Header CSV:', lines[0]);\n        }\n        \n        for (let i = 1; i < lines.length; i++) {\n            const line = lines[i].trim();\n            if (line === '') continue;\n            \n            const values = parseCSVLine(line);\n            \n            \/\/ Debug prima riga di dati\n            if (i === 1) {\n                console.log('EPT: Prima riga dati:', values);\n                console.log('EPT: Numero colonne:', values.length);\n            }\n            \n            \/\/ IMPORTANTE: Le colonne sono esattamente 5, partendo da indice 0\n            \/\/ 0 = TIPO, 1 = PROGRAMMA, 2 = BANDO, 3 = SCADENZA, 4 = AGGIORNAMENTO\n            const callTitleRaw = values[2] || '';\n            data.push({\n                id: 'row-' + i,\n                type: cleanData(values[0]) || '',       \/\/ Colonna 0: TIPO\n                program: cleanData(values[1]) || '',    \/\/ Colonna 1: PROGRAMMA\n\t\t\t\tcallTitle: cleanData(callTitleRaw, false, true) || '',  \/\/ Colonna 2: BANDO, preserva HTML\/link\n                callTitlePlain: cleanData(callTitleRaw, false, false) || '', \/\/ Versione plain text per ricerca\n                expirationDate: cleanData(values[3], true) || '', \/\/ Colonna 3: SCADENZA\n                updateDate: cleanData(values[4], true) || ''      \/\/ Colonna 4: AGGIORNAMENTO\n            });\n        }\n        \n        return data;\n    }\n    \n    function parseCSVLine(line) {\n        const result = [];\n        let current = '';\n        let inQuotes = false;\n        \n        for (let i = 0; i < line.length; i++) {\n            const char = line[i];\n            const nextChar = line[i + 1];\n            \n            if (char === '\"') {\n                if (inQuotes && nextChar === '\"') {\n                    current += '\"';\n                    i++;\n                } else {\n                    inQuotes = !inQuotes;\n                }\n            } else if (char === ',' && !inQuotes) {\n                result.push(current);\n                current = '';\n            } else {\n                current += char;\n            }\n        }\n        \n        result.push(current);\n        return result;\n    }\n    \n\tfunction cleanData(value, isDateField = false, preserveHtml = false) {\n\t    if (!value) return '';\n\n\t    value = value.trim().replace(\/^\"|\"$\/g, '');\n\n\t    \/\/ Campo data\n\t    if (isDateField) {\n\t        \/\/ Previeni interpretazione come frazione\n\t        value = value.replace(\/\\s+\/g, '').trim();\n\n\t        \/\/ Se \u00e8 nel formato dd\/mm\/yyyy lo lasciamo cos\u00ec\n\t        if (\/^\\d{1,2}\\\/\\d{1,2}\\\/\\d{4}$\/.test(value)) {\n\t            return value;\n\t        }\n\n\t        \/\/ Per valori speciali tipo \"n.d.\"\n\t        return value;\n\t    }\n\n\t    \/\/ Converti HYPERLINK di Google Sheets in HTML\n\t    \/\/ Formato: =HYPERLINK(\"url\", \"testo\") oppure =HYPERLINK(\"url\";\"testo\")\n\t    const hyperlinkRegex = \/=HYPERLINK\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*[,;]\\s*[\"']([^\"']+)[\"']\\s*\\)\/i;\n\t    const hyperlinkMatch = value.match(hyperlinkRegex);\n\t    if (hyperlinkMatch && preserveHtml) {\n\t        const url = hyperlinkMatch[1];\n\t        const label = hyperlinkMatch[2];\n\t        value = '<a href=\"' + url + '\" target=\"_blank\" rel=\"noopener noreferrer\">' + label + '<\/a>';\n\t    } else if (hyperlinkMatch && !preserveHtml) {\n\t        \/\/ Se non preserviamo HTML, restituiamo solo il testo\n\t        value = hyperlinkMatch[2];\n\t    }\n\n\t    \/\/ Campo testo\n\t    if (!preserveHtml) {\n\t        \/\/ Togli <a> mantenendo solo il testo interno\n\t        const linkRegex = \/<a[^>]*href=[\"']([^\"']*)[\"'][^>]*>([^<]*)<\\\/a>\/gi;\n\t        value = value.replace(linkRegex, '$2');\n\t        \/\/ Togli tutti gli altri tag\n\t        value = value.replace(\/<[^>]*>\/g, '');\n\t    }\n\n\t    \/\/ Decodifica entit\u00e0 HTML\n\t    const textarea = document.createElement('textarea');\n\t    textarea.innerHTML = value;\n\t    value = textarea.value;\n\n\t    \/\/ Normalizza spazi\n\t    value = value.replace(\/\\s+\/g, ' ').trim();\n\n\t    return value;\n\t}\n\n    \n    function handleDataLoaded(data) {\n        console.log('EPT: Dati caricati', data.length, 'righe');\n        if (data.length > 0) {\n            console.log('EPT: Prima riga esempio:', data[0]);\n        }\n        state.data = data;\n        populateCategoryFilter();\n        applyFilters();\n        hideLoading();\n    }\n    \n    function populateCategoryFilter() {\n        const programs = [...new Set(state.data.map(item => item.program))].sort();\n\n        elements.categorySelect.innerHTML = '<option value=\"\">' + eptTranslations.tipologiaProgramma + '<\/option>';\n\n        programs.forEach(program => {\n            const option = document.createElement('option');\n            option.value = program;\n            option.textContent = program;\n            elements.categorySelect.appendChild(option);\n        });\n    }\n    \n    function handleSearchChange(e) {\n        state.filters.search = e.target.value;\n        state.currentPage = 1;\n        applyFilters();\n    }\n\n    function handleCategoryChange(e) {\n        state.filters.category = e.target.value;\n        state.currentPage = 1;\n        applyFilters();\n    }\n\n    function handleSort(column) {\n        if (state.sort.column === column) {\n            \/\/ Toggle direction\n            if (state.sort.direction === 'asc') {\n                state.sort.direction = 'desc';\n            } else if (state.sort.direction === 'desc') {\n                state.sort.direction = null;\n                state.sort.column = null;\n            } else {\n                state.sort.direction = 'asc';\n            }\n        } else {\n            state.sort.column = column;\n            state.sort.direction = 'asc';\n        }\n\n        updateSortIcons();\n        state.currentPage = 1;\n        renderTable();\n        updatePagination();\n    }\n\n    function updateSortIcons() {\n        document.querySelectorAll('.ept-table th.sortable').forEach(function(th) {\n            th.classList.remove('sort-asc', 'sort-desc');\n            if (th.getAttribute('data-sort') === state.sort.column) {\n                if (state.sort.direction === 'asc') {\n                    th.classList.add('sort-asc');\n                } else if (state.sort.direction === 'desc') {\n                    th.classList.add('sort-desc');\n                }\n            }\n        });\n    }\n\n    function sortData(data) {\n        if (!state.sort.column || !state.sort.direction) {\n            return data;\n        }\n\n        return [...data].sort(function(a, b) {\n            const dateA = parseItalianDate(a[state.sort.column]);\n            const dateB = parseItalianDate(b[state.sort.column]);\n\n            \/\/ Gestisci date non valide (mettile alla fine)\n            if (!dateA && !dateB) return 0;\n            if (!dateA) return 1;\n            if (!dateB) return -1;\n\n            const comparison = dateA - dateB;\n            return state.sort.direction === 'asc' ? comparison : -comparison;\n        });\n    }\n\n    function applyFilters() {\n        state.filteredData = state.data.filter(item => {\n            const searchLower = state.filters.search.toLowerCase();\n            const matchesSearch = !state.filters.search ||\n                item.program.toLowerCase().includes(searchLower) ||\n                item.callTitlePlain.toLowerCase().includes(searchLower) ||\n                item.type.toLowerCase().includes(searchLower);\n\n            const matchesCategory = !state.filters.category ||\n                item.program === state.filters.category;\n\n            let matchesDateRange = true;\n            const itemDate = parseItalianDate(item.expirationDate);\n\n            \/\/ Solo se la data di scadenza \u00e8 valida, applico i filtri\n            if (itemDate) {\n                \/\/ Se c'\u00e8 una data \"da\", controllo che la scadenza sia >= dateFrom\n                if (state.filters.dateFrom) {\n                    const dateFrom = new Date(state.filters.dateFrom);\n                    if (itemDate < dateFrom) {\n                        matchesDateRange = false;\n                    }\n                }\n\n                \/\/ Se c'\u00e8 una data \"a\", controllo che la scadenza sia <= dateTo\n                if (state.filters.dateTo) {\n                    const dateTo = new Date(state.filters.dateTo);\n                    if (itemDate > dateTo) {\n                        matchesDateRange = false;\n                    }\n                }\n            } else {\n                \/\/ Se la data di scadenza non \u00e8 valida (es. \"n.d.\"),\n                \/\/ e c'\u00e8 almeno un filtro data attivo, escludo il record\n                if (state.filters.dateFrom || state.filters.dateTo) {\n                    matchesDateRange = false;\n                }\n            }\n\n            return matchesSearch && matchesCategory && matchesDateRange;\n        });\n\n        renderTable();\n        updatePagination();\n    }\n    \n    function parseItalianDate(dateStr) {\n        if (!dateStr) return null;\n        \n        dateStr = dateStr.trim();\n        \n        const nonDateValues = ['n.d.', 'n.d', 'nd', 'n\/d', 'non definita', 'da definire', '-', ''];\n        if (nonDateValues.some(v => dateStr.toLowerCase() === v.toLowerCase())) {\n            return null;\n        }\n        \n        const parts = dateStr.split('\/');\n        if (parts.length !== 3) return null;\n        \n        const day = parseInt(parts[0]);\n        const month = parseInt(parts[1]) - 1;\n        const year = parseInt(parts[2]);\n        \n        if (isNaN(day) || isNaN(month) || isNaN(year)) {\n            return null;\n        }\n        \n        if (day < 1 || day > 31 || month < 0 || month > 11 || year < 1900 || year > 2100) {\n            return null;\n        }\n        \n        return new Date(year, month, day);\n    }\n    \n    function renderTable() {\n        \/\/ Applica l'ordinamento ai dati filtrati\n        const sortedData = sortData(state.filteredData);\n\n        const startIndex = (state.currentPage - 1) * state.itemsPerPage;\n        const endIndex = startIndex + state.itemsPerPage;\n        const pageData = sortedData.slice(startIndex, endIndex);\n\n        if (pageData.length === 0) {\n            elements.table.style.display = 'none';\n            elements.noResults.style.display = 'block';\n            elements.pagination.style.display = 'none';\n            return;\n        }\n        \n        elements.table.style.display = 'table';\n        elements.noResults.style.display = 'none';\n        elements.pagination.style.display = 'flex';\n        \n        elements.tbody.innerHTML = '';\n        \n        pageData.forEach((item, index) => {\n            const row = document.createElement('tr');\n            const isEven = (startIndex + index) % 2 === 0;\n            row.className = isEven ? 'ept-row-even' : 'ept-row-odd';\n            \n            const expirationDisplay = formatDateForDisplay(item.expirationDate);\n            const updateDisplay = formatDateForDisplay(item.updateDate);\n            \n            const callTitleHtml = buildCallTitleCell(item.callTitle);\n\n\t\t\trow.innerHTML =\n\t\t\t    '<td>' + escapeHtml(item.type) + '<\/td>' +\n\t\t\t    '<td>' + escapeHtml(item.program) + '<\/td>' +\n\t\t\t    \/\/'<td>' + item.callTitle + '<\/td>' +\n\t\t\t    '<td>' + callTitleHtml + '<\/td>' +\n\t\t\t    '<td class=\"' + (isSpecialDate(item.expirationDate) ? 'ept-date-special' : '') + '\">' +\n\t\t\t        escapeHtml(expirationDisplay) + '<\/td>' +\n\t\t\t    '<td class=\"' + (isSpecialDate(item.updateDate) ? 'ept-date-special' : '') + '\">' +\n\t\t\t        escapeHtml(updateDisplay) + '<\/td>';\n\n\n            \n            elements.tbody.appendChild(row);\n        });\n        \/\/ Forza target=\"_blank\" su tutti i link nella tabella\n\t\telements.tbody.querySelectorAll('a').forEach(function(a) {\n\t\t    a.setAttribute('target', '_blank');\n\t\t    a.setAttribute('rel', 'noopener noreferrer');\n\t\t});\n    }\n    \n    function formatDateForDisplay(dateStr) {\n        if (!dateStr) return '';\n        dateStr = dateStr.replace(\/\\s+\/g, ' ').trim();\n        if (\/\\d+\\s*\\\/\\s*\\d+\\s*\\\/\\s*\\d+\/.test(dateStr)) {\n            return dateStr.replace(\/\\s\/g, '');\n        }\n        return dateStr;\n    }\n    \n    function isSpecialDate(dateStr) {\n        if (!dateStr) return false;\n        const specialValues = ['n.d.', 'n.d', 'nd', 'n\/d', 'non definita', 'da definire', '-'];\n        return specialValues.some(v => dateStr.toLowerCase().includes(v.toLowerCase()));\n    }\n    \n    function updatePagination() {\n        const totalPages = Math.ceil(state.filteredData.length \/ state.itemsPerPage);\n        const startItem = (state.currentPage - 1) * state.itemsPerPage + 1;\n        const endItem = Math.min(state.currentPage * state.itemsPerPage, state.filteredData.length);\n        \n        elements.paginationText.textContent =\n            eptTranslations.visualizzati + ' ' + startItem + '-' + endItem + ' ' + eptTranslations.di + ' ' + state.filteredData.length + ' ' + eptTranslations.risultati;\n        \n        elements.prevBtn.disabled = state.currentPage === 1;\n        elements.nextBtn.disabled = state.currentPage === totalPages;\n        \n        renderPageNumbers(totalPages);\n    }\n    \n    function renderPageNumbers(totalPages) {\n        elements.pageNumbers.innerHTML = '';\n        \n        let startPage = Math.max(1, state.currentPage - 3);\n        let endPage = Math.min(totalPages, startPage + 6);\n        \n        if (endPage - startPage < 6) {\n            startPage = Math.max(1, endPage - 6);\n        }\n        \n        for (let i = startPage; i <= endPage; i++) {\n            const btn = document.createElement('button');\n            btn.className = 'ept-page-number';\n            btn.textContent = i;\n            \n            if (i === state.currentPage) {\n                btn.classList.add('active');\n            }\n            \n            btn.addEventListener('click', function() { goToPage(i); });\n            elements.pageNumbers.appendChild(btn);\n        }\n    }\n    \n    function handleItemsPerPageChange(e) {\n        state.itemsPerPage = parseInt(e.target.value);\n        state.currentPage = 1;\n        renderTable();\n        updatePagination();\n    }\n    \n    function handlePrevPage() {\n        if (state.currentPage > 1) {\n            state.currentPage--;\n            renderTable();\n            updatePagination();\n        }\n    }\n    \n    function handleNextPage() {\n        const totalPages = Math.ceil(state.filteredData.length \/ state.itemsPerPage);\n        if (state.currentPage < totalPages) {\n            state.currentPage++;\n            renderTable();\n            updatePagination();\n        }\n    }\n    \n    function goToPage(page) {\n        state.currentPage = page;\n        renderTable();\n        updatePagination();\n    }\n    \n    function hideLoading() {\n        elements.loading.style.display = 'none';\n    }\n    \n    function escapeHtml(text) {\n        const div = document.createElement('div');\n        div.textContent = text;\n        return div.innerHTML;\n    }\n    \n    function debounce(func, wait) {\n        let timeout;\n        return function executedFunction(...args) {\n            const context = this;\n            clearTimeout(timeout);\n            timeout = setTimeout(function() {\n                func.apply(context, args);\n            }, wait);\n        };\n    }\n    \n    function buildCallTitleCell(value) {\n\t    if (!value) return '';\n\t\n\t    \/\/ Caso 1: arriva gi\u00e0 con <a href=\"...\"> dal backend (via AJAX\/PHP)\n\t    if (value.includes('<a')) {\n\t        return value;\n\t    }\n\t\n\t    \/\/ Caso 2: nel CSV c'\u00e8 un URL in chiaro dentro il testo\n\t    const urlMatch = value.match(\/https?:\\\/\\\/[^\\s]+\/);\n\t    if (urlMatch) {\n\t        const url = urlMatch[0];\n\t        \/\/ Se la cella \u00e8 solo l'URL, uso quello come label,\n\t        \/\/ altrimenti mostro tutto il testo ma uso l'URL come href\n\t        const label = value.trim() === url ? url : value.trim();\n\t        return (\n\t            '<a href=\"' + escapeHtml(url) + '\" target=\"_blank\" rel=\"noopener noreferrer\">' +\n\t                escapeHtml(label) +\n\t            '<\/a>'\n\t        );\n\t    }\n\t\n\t    \/\/ Caso 3: niente URL, solo testo normale\n\t    return escapeHtml(value);\n\t}\n\n    \n})();\n<\/script>\n\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<div class=\"elementor-element elementor-element-4ecd99f e-flex e-con-boxed e-con e-parent\" data-id=\"4ecd99f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e5ee420 elementor-widget elementor-widget-heading\" data-id=\"e5ee420\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">CE DONT NOUS PARLONS<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7c8343a e-con-full e-flex e-con e-child\" data-id=\"7c8343a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-10fb291 elementor-widget elementor-widget-heading\" data-id=\"10fb291\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Toutes nos id\u00e9es<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c0b2f15 e-con-full e-flex e-con e-child\" data-id=\"c0b2f15\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c2d5302 newsSubPage elementor-pagination-type-bullets elementor-pagination-position-outside elementor-widget elementor-widget-n-carousel\" data-id=\"c2d5302\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;carousel_items&quot;:[{&quot;slide_title&quot;:&quot;Slide #1&quot;,&quot;_id&quot;:&quot;1944aa6&quot;},{&quot;slide_title&quot;:&quot;Slide #2&quot;,&quot;_id&quot;:&quot;5e585cc&quot;},{&quot;slide_title&quot;:&quot;Slide #3&quot;,&quot;_id&quot;:&quot;fa266b7&quot;},{&quot;slide_title&quot;:&quot;Slide #4&quot;,&quot;_id&quot;:&quot;562b1ee&quot;},{&quot;slide_title&quot;:&quot;Slide #5&quot;,&quot;_id&quot;:&quot;754c8ab&quot;},{&quot;slide_title&quot;:&quot;Slide #6&quot;,&quot;_id&quot;:&quot;8360bce&quot;},{&quot;slide_title&quot;:&quot;Slide #7&quot;,&quot;_id&quot;:&quot;7b1c124&quot;}],&quot;slides_to_show&quot;:&quot;2&quot;,&quot;image_spacing_custom&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:30,&quot;sizes&quot;:[]},&quot;slides_to_scroll&quot;:&quot;2&quot;,&quot;slides_to_show_tablet&quot;:&quot;2&quot;,&quot;slides_to_show_mobile&quot;:&quot;1&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;infinite&quot;:&quot;yes&quot;,&quot;speed&quot;:500,&quot;offset_sides&quot;:&quot;none&quot;,&quot;pagination&quot;:&quot;bullets&quot;,&quot;image_spacing_custom_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;image_spacing_custom_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-carousel swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carosello\" dir=\"ltr\">\n\t\t\t<div class=\"swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"1\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-13a3942 e-flex e-con-boxed e-con e-child\" data-id=\"13a3942\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fbb1045 e-con-full e-flex e-con e-child\" data-id=\"fbb1045\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5360749 elementor-widget elementor-widget-heading\" data-id=\"5360749\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Glossaire<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a3c7a22 elementor-widget elementor-widget-spacer\" data-id=\"a3c7a22\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-d0b39a4 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"d0b39a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/glossaire\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"2\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0e4dfaf e-flex e-con-boxed e-con e-child\" data-id=\"0e4dfaf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-827e0eb e-con-full e-flex e-con e-child\" data-id=\"827e0eb\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-409c7fd elementor-widget elementor-widget-heading\" data-id=\"409c7fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Questions et r\u00e9ponses<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f889012 elementor-widget elementor-widget-spacer\" data-id=\"f889012\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-9fa29c4 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"9fa29c4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/questions-et-reponses\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"3\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d4f8696 e-flex e-con-boxed e-con e-child\" data-id=\"d4f8696\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-0b68c88 e-con-full e-flex e-con e-child\" data-id=\"0b68c88\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7755c2a elementor-widget elementor-widget-heading\" data-id=\"7755c2a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Portail des appels d'offres<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-277ef6f elementor-widget elementor-widget-spacer\" data-id=\"277ef6f\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-aa5253f elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"aa5253f\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/portail-des-appels-doffres\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"4\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"4 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-be2f106 e-flex e-con-boxed e-con e-child\" data-id=\"be2f106\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-9b94b71 e-con-full e-flex e-con e-child\" data-id=\"9b94b71\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a3dcdd elementor-widget elementor-widget-heading\" data-id=\"1a3dcdd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Audio et vid\u00e9o<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ee905d elementor-widget elementor-widget-spacer\" data-id=\"9ee905d\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-184d493 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"184d493\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/formation\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"5\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"5 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-254a374 e-flex e-con-boxed e-con e-child\" data-id=\"254a374\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-714b209 e-con-full e-flex e-con e-child\" data-id=\"714b209\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b63a088 elementor-widget elementor-widget-heading\" data-id=\"b63a088\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Actualit\u00e9s<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c81e99f elementor-widget elementor-widget-spacer\" data-id=\"c81e99f\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-f896330 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"f896330\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/actualites\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"6\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"6 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7532d08 e-flex e-con-boxed e-con e-child\" data-id=\"7532d08\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a825524 e-con-full e-flex e-con e-child\" data-id=\"a825524\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-89b80eb elementor-widget elementor-widget-heading\" data-id=\"89b80eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Histoires<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c32c786 elementor-widget elementor-widget-spacer\" data-id=\"c32c786\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-ec374d4 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"ec374d4\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/histoires\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"7\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"7 sur 7\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ab0e770 e-flex e-con-boxed e-con e-child\" data-id=\"ab0e770\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-170ce0a e-con-full e-flex e-con e-child\" data-id=\"170ce0a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-326fdf7 elementor-widget elementor-widget-heading\" data-id=\"326fdf7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\"><a href=\"#\">Tous les articles<\/a><\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e497009 elementor-widget elementor-widget-spacer\" data-id=\"e497009\" 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<div data-dce-background-color=\"#FFFFFF\" class=\"elementor-element elementor-element-94c08e8 elementor-absolute btnDefault viola elementor-widget elementor-widget-button\" data-id=\"94c08e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/euknow.it\/fr\/archives\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">En savoir plus<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Une s\u00e9lection d&rsquo;appels sur les programmes de coop\u00e9ration europ\u00e9enne, nationale, r\u00e9gionale et territoriale Il est possible de trier les appels par type de programme (respectivement, UE, PR, PN, PCT), par programme, par d\u00e9lai et par date de publication dans notre guide. L&rsquo;outil de recherche permet \u00e9galement de rechercher n&rsquo;importe quel mot (programme, r\u00e9gion ou mot [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"page-tag":[2159],"class_list":["post-29024","page","type-page","status-publish","hentry","page-tag-approfondimenti-fr"],"acf":[],"_links":{"self":[{"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/pages\/29024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/comments?post=29024"}],"version-history":[{"count":5,"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/pages\/29024\/revisions"}],"predecessor-version":[{"id":41032,"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/pages\/29024\/revisions\/41032"}],"wp:attachment":[{"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/media?parent=29024"}],"wp:term":[{"taxonomy":"page-tag","embeddable":true,"href":"https:\/\/euknow.it\/fr\/wp-json\/wp\/v2\/page-tag?post=29024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}