{"id":2142,"date":"2026-03-24T17:04:00","date_gmt":"2026-03-24T16:04:00","guid":{"rendered":"https:\/\/agripedia.ch\/klima\/collection-de-mesures-dattenuation-et-dadaptation-au-changement-climatique\/"},"modified":"2026-06-03T12:11:11","modified_gmt":"2026-06-03T10:11:11","slug":"collection-de-mesures-dattenuation-et-dadaptation-au-changement-climatique","status":"publish","type":"page","link":"https:\/\/agripedia.ch\/klima\/fr\/collection-de-mesures-dattenuation-et-dadaptation-au-changement-climatique\/","title":{"rendered":"Liste des mesures d&rsquo;att\u00e9nuation et d&rsquo;adaptation"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La liste de leviers d&rsquo;action\/mesures d&rsquo;att\u00e9nuation et d&rsquo;adaptation au changement climatique offre un aper\u00e7u des mesures efficaces de r\u00e9duction des GES et d&rsquo;adaptation de la production agricole. Pour chaque option d\u2019action, vous trouverez des informations sur son impact, des conseils de mise en \u0153uvre ainsi que des informations compl\u00e9mentaires, des possibilit\u00e9s de soutien et des exemples pratiques. Le contenu est r\u00e9guli\u00e8rement mis \u00e0 jour et compl\u00e9t\u00e9. Les mesures qui n\u2019ont pas encore \u00e9t\u00e9 \u00e9labor\u00e9es sont r\u00e9pertori\u00e9es, mais apparaissent en gris. Vous pouvez \u00e0 tout moment soumettre vos commentaires concernant des mesures suppl\u00e9mentaires, des ajouts ou des corrections : <a href=\"https:\/\/forms.office.com\/Pages\/ResponsePage.aspx?id=UT_M3bTw8kWtJhU36pdaSL05Sty819pBgRYt4lEhBytUMUI3WEVKSTQyOEk4OEwzSUZRM0M5WlE0Ty4u\" title=\"\">Formulaire de feedback<\/a><\/p>\n\n\n\n<div style=\"height:19px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-getwid-accordion has-icon-left\" data-active-element=\"none\">\n<div class=\"wp-block-getwid-accordion__header-wrapper\"><span class=\"wp-block-getwid-accordion__header\"><a href=\"#\"><span class=\"wp-block-getwid-accordion__header-title\">Remarques concernant l\u2019utilisation et l&rsquo;approche m\u00e9thodologique<\/span><span class=\"wp-block-getwid-accordion__icon is-active\"><i class=\"fas fa-plus\"><\/i><\/span><span class=\"wp-block-getwid-accordion__icon is-passive\"><i class=\"fas fa-minus\"><\/i><\/span><\/a><\/span><\/div><div class=\"wp-block-getwid-accordion__content-wrapper\"><div class=\"wp-block-getwid-accordion__content\">\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>Notes sur la valeur informative et l&rsquo;utilisation<\/strong><\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">La liste de mesures offre une premi\u00e8re \u00e9valuation indicative des mesures possibles dans le domaine de l&rsquo;att\u00e9nuation et de l&rsquo;adaptation au changement climatique. Elle fournit une estimation du potentiel de r\u00e9duction des GES ainsi que des cons\u00e9quences en termes d&rsquo;investissement et de co\u00fbts associ\u00e9s aux mesures. Ces donn\u00e9es se fondent sur l&rsquo;\u00e9tat actuel des connaissances et sont adapt\u00e9es \u00e0 mesure que de nouvelles d\u00e9couvertes scientifiques ou des donn\u00e9es actualis\u00e9es seront disponibles. L&rsquo;impact climatique r\u00e9el ainsi que les co\u00fbts peuvent varier consid\u00e9rablement en fonction de la structure de l&rsquo;exploitation, de son emplacement et de la mise en \u0153uvre, et doivent toujours \u00eatre estim\u00e9s au cas par cas ou calcul\u00e9s \u00e0 l&rsquo;aide d&rsquo;un bilan. Aucune d\u00e9claration, recommandation ou exigence contraignante ne peut \u00eatre d\u00e9duite des estimations pr\u00e9sent\u00e9es. La liste de mesures ne remplace pas un bilan climatique individuel d&rsquo;une exploitation.<\/p>\n\n\n\n<div style=\"height:10px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>S\u00e9lection des mesures<\/strong><\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">Le pr\u00e9sent recueil de mesures s&rsquo;appuie sur une liste de mesures \u00e9labor\u00e9e dans le cadre du projet europ\u00e9en <a href=\"https:\/\/climatefarmdemo.eu\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Climate Farm Demo<\/a> par les instituts de recherche <a href=\"https:\/\/www.fibl.org\/de\/\" target=\"_blank\" rel=\"noopener\" title=\"\">FiBL Suisse<\/a> et <a href=\"https:\/\/www.arvalis.fr\/about-us\" target=\"_blank\" rel=\"noopener\" title=\"\">Arvalis (France)<\/a>. Toutes les mesures figurant sur la liste ont \u00e9t\u00e9 examin\u00e9es quant \u00e0 leur applicabilit\u00e9 \u00e0 l&rsquo;agriculture suisse et seules les mesures appropri\u00e9es ont \u00e9t\u00e9 s\u00e9lectionn\u00e9es. En compl\u00e9ment, des mesures issues de projets suisses pertinents ont \u00e9t\u00e9 prises en compte et la liste a \u00e9t\u00e9 \u00e9largie en cons\u00e9quence. Des suggestions de mesures suppl\u00e9mentaires peuvent \u00eatre soumises \u00e0 tout moment \u00e0 AGRIDEA.<\/p>\n\n\n\n<div style=\"height:12px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>\u00c9laboration du contenu<\/strong><\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">AGRIDEA a \u00e9labor\u00e9 le contenu des diff\u00e9rentes mesures (description, mise en \u0153uvre, d\u00e9fis, impact sur le climat et donn\u00e9es sur les co\u00fbts) sur la base d&rsquo;une recherche bibliographique et de sources, ainsi que d&rsquo;entretiens avec des experts internes et externes s\u00e9lectionn\u00e9s.<\/p>\n\n\n\n<div style=\"height:8px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>Effet sur la protection du climat<\/strong> <strong>\/ Potentiel de r\u00e9duction des GES<\/strong><\/p>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">L&rsquo;\u00e9valuation de l&rsquo;impact sur la r\u00e9duction des \u00e9missions de GES au niveau de l&rsquo;exploitation (GES en <strong>CO\u2082eq<\/strong>) s&rsquo;appuie sur les sources indiqu\u00e9es \u00e0 chaque fois pour la mesure. Ces sources comprennent \u00e0 la fois des \u00e9tudes et des \u00e9valuations de donn\u00e9es provenant d&rsquo;outils de bilan (CAP&rsquo;2ER). Afin de faciliter la comparaison, les impacts sur le climat ont \u00e9t\u00e9 class\u00e9s en cat\u00e9gories qualitatives (faible\/non av\u00e9r\u00e9, moyen, important, tr\u00e8s important). AGRIDEA a d\u00e9fini les cat\u00e9gories et leurs valeurs limites sur la base des fourchettes d&rsquo;impact consid\u00e9r\u00e9es, dans le but de d\u00e9limiter judicieusement les mesures les unes des autres en fonction de leur potentiel de r\u00e9duction des GES au niveau de l&rsquo;exploitation. Lorsque les donn\u00e9es sur l&rsquo;impact ne sont disponibles qu&rsquo;au niveau de l&rsquo;unit\u00e9 (par ex. au niveau de l&rsquo;animal) ou d&rsquo;une branche de production, une estimation compl\u00e9mentaire de l&rsquo;impact au niveau de l&rsquo;exploitation a \u00e9t\u00e9 effectu\u00e9e et indiqu\u00e9e dans le texte. Cette \u00e9valuation est bas\u00e9e sur des r\u00e9partitions typiques des \u00e9missions de GES au sein des types d&rsquo;exploitations agricoles (bovins, grandes cultures).<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-getwid-accordion__header-wrapper\"><span class=\"wp-block-getwid-accordion__header\"><a href=\"#\"><span class=\"wp-block-getwid-accordion__header-title\">Historique des versions<\/span><span class=\"wp-block-getwid-accordion__icon is-active\"><i class=\"fas fa-plus\"><\/i><\/span><span class=\"wp-block-getwid-accordion__icon is-passive\"><i class=\"fas fa-minus\"><\/i><\/span><\/a><\/span><\/div><div class=\"wp-block-getwid-accordion__content-wrapper\"><div class=\"wp-block-getwid-accordion__content\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column has-small-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\">\n<p class=\"wp-block-paragraph\"><strong>Version 1.1<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column has-small-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<ul class=\"wp-block-list\">\n<li>Structure de base et filtres (att\u00e9nuation du changement climatique, adaptation, 13 filtres th\u00e9matiques)<\/li>\n\n\n\n<li>Contenu en allemand pour 26 mesures s\u00e9lectionn\u00e9es (description, mise en \u0153uvre, investissements\/co\u00fbts, impact, liens vers d&rsquo;autres sites, sources).<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column has-small-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\">\n<p class=\"wp-block-paragraph\"><strong>Version 1.2 (actuelle)<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column has-small-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<ul class=\"wp-block-list\">\n<li>Traduction en fran\u00e7ais<\/li>\n\n\n\n<li>Description des avantages suppl\u00e9mentaires \/ co-b\u00e9n\u00e9fices (texte courant)<\/li>\n\n\n\n<li>Effet\/co\u00fbt : Pop-ups de l\u00e9gende (in-texte)<\/li>\n\n\n\n<li>Indication de l&rsquo;applicabilit\u00e9 par mesure (p. ex. branche de production, cat\u00e9gorie animale)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column has-small-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\">\n<p class=\"wp-block-paragraph\"><strong>Version 2 (~Q3)<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column has-small-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<ul class=\"wp-block-list\">\n<li>Paquet de mesures 2 (+25 mesures)<\/li>\n\n\n\n<li>Conformit\u00e9 aux normes bio<\/li>\n\n\n\n<li>Lien financements \/ projets \/ contributions<\/li>\n\n\n\n<li>Filtres suppl\u00e9mentaires sur les syst\u00e8mes de production et les programmes<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\">\n<p class=\"has-small-font-size wp-block-paragraph\"><strong>Version 3 (~fin 2026)<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:75%\">\n<ul class=\"wp-block-list\">\n<li class=\"has-small-font-size\">Paquet de mesures 3 (+25 mesures)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n\n\n\n<div style=\"height:40px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"background-color: #ffffff; padding: 20px; font-size: 0.8em;\">\n\n  <p style=\"font-style: italic;\">\n    <strong>Important :<\/strong> Le recueil de mesures fournit une premi\u00e8re estimation du potentiel de r\u00e9duction des \u00e9missions de gaz \u00e0 effet de serre, des investissements associ\u00e9s aux mesures et des \u00e9ventuels co\u00fbts r\u00e9currents. Ces donn\u00e9es sont bas\u00e9es sur la litt\u00e9rature disponible actuellement et peuvent \u00eatre adapt\u00e9es en fonction des nouvelles connaissances. L&rsquo;impact effectif peut varier et les cons\u00e9quences financi\u00e8res doivent toujours \u00eatre \u00e9valu\u00e9es pour chaque entreprise. L&rsquo;\u00e9valuation ne donne pas lieu \u00e0 des exigences contraignantes.   \n  <\/p>\n\n<p><strong>L\u00e9gende :<\/strong><\/p>\n\n  \n<div style=\"  display: flex; gap: 20px; flex-wrap: wrap;  \">\n\n  <figure style=\"flex: 1 1 300px; margin: 0;\">\n    <img decoding=\"async\" src=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/Legende-Impact_FR.png\" style=\"width: 100%; height: auto;\"\/>\n  <\/figure>\n\n  <figure style=\"flex: 1 1 300px; margin: 0;\">\n    <img decoding=\"async\" src=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/Legende-Couts_FR.png\" style=\"width: 100%; height: auto;\"\/>\n  <\/figure>\n\n<\/div>\n\n\n<\/div>\n\n\n\n<div style=\"height:43px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Bo\u00eete \u00e0 outils des mesures<\/title>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/xlsx@0.18.5\/dist\/xlsx.full.min.js\"><\/script>\n\n<style>\n:root{\n  --maxw:1100px;\n  --blue:#008bcc;\n  --blue-dark:#0074ab;\n  --blue-soft:#d9edf6;\n  --green:#8fd694;\n  --orange:#d18a24;\n}\n\n*{box-sizing:border-box;}\n\nbody{\n  margin:0;\n  padding:20px;\n  font-family:Arial,sans-serif;\n  background:#f5f5f5;\n  color:#333;\n}\n\n.tool-wrap{\n  max-width:var(--maxw);\n  margin:0 auto;\n}\n\n#searchInput{\n  display:block;\n  width:100%;\n  padding:12px 14px;\n  font-size:16px;\n  border:2px solid var(--blue);\n  border-radius:8px;\n  background:#fff;\n}\n\n#oderLabel{\n  margin:14px 0 16px;\n  font-size:16px;\n  font-weight:bold;\n  color:var(--blue);\n}\n\n.filter-box{\n  max-width:var(--maxw);\n  margin:0 auto 24px;\n  border-radius:18px;\n  overflow:hidden;\n  background:var(--blue-soft);\n}\n\n.filter-header{\n  background:var(--blue);\n  color:#fff;\n  padding:16px 20px;\n  font-size:16px;\n  font-weight:bold;\n}\n\n.filter-content{\n  padding:16px 18px 12px;\n}\n\n.top-filters{\n  display:flex;\n  gap:20px 30px;\n  align-items:center;\n  flex-wrap:wrap;\n  margin-bottom:18px;\n}\n\n.top-filters-left{\n  display:flex;\n  gap:30px;\n  align-items:center;\n  flex-wrap:wrap;\n}\n\n.result-count{\n  font-size:14px;\n  font-weight:bold;\n  color:#006b9c;\n  white-space:nowrap;\n  text-align:right;\n  margin-top:18px;\n}\n\n.toggle-label{\n  display:flex;\n  align-items:center;\n  gap:12px;\n  font-weight:bold;\n  color:#666;\n  font-size:15px;\n}\n\n.toggle-switch{\n  position:relative;\n  width:40px;\n  height:22px;\n  flex:0 0 auto;\n}\n\n.toggle-switch input{\n  opacity:0;\n  width:0;\n  height:0;\n}\n\n.slider{\n  position:absolute;\n  inset:0;\n  background:#bfbfbf;\n  border-radius:20px;\n  transition:.25s;\n  cursor:pointer;\n}\n\n.slider:before{\n  content:\"\";\n  position:absolute;\n  width:16px;\n  height:16px;\n  left:3px;\n  top:3px;\n  border-radius:50%;\n  background:#fff;\n  transition:.25s;\n}\n\n.toggle-switch input:checked + .slider{\n  background:var(--blue);\n}\n\n.toggle-switch input:checked + .slider:before{\n  transform:translateX(18px);\n}\n\n.categories{\n  display:grid;\n  grid-template-columns:repeat(5,minmax(0,1fr));\n  gap:16px;\n  margin-top:10px;\n}\n\n.category-card{\n  background:var(--blue);\n  color:#fff;\n  border:3px solid transparent;\n  border-radius:14px;\n  min-height:118px;\n  padding:12px 10px;\n  display:flex;\n  flex-direction:column;\n  align-items:center;\n  justify-content:center;\n  text-align:center;\n  cursor:pointer;\n  transition:.15s;\n  font-weight:bold;\n  line-height:1.15;\n}\n\n.category-card:hover{\n  transform:translateY(-1px);\n}\n\n.category-card.selected{\n  border-color:#ffc400;\n}\n\n.category-card img{\n  width:58px;\n  height:58px;\n  object-fit:contain;\n  margin-bottom:10px;\n}\n\n.category-card .cat-label{\n  font-size:15px;\n}\n\n.results{\n  max-width:var(--maxw);\n  margin:0 auto 40px;\n  display:flex;\n  flex-direction:column;\n  gap:22px;\n}\n\n.no-results{\n  background:#fff;\n  border:1px solid #f0c4c4;\n  color:#7d4d4d;\n  padding:24px;\n  border-radius:10px;\n  text-align:center;\n  font-size:16px;\n}\n\n.card{\n  background:#fff;\n  border-radius:10px;\n  overflow:visible;\n  box-shadow:0 1px 4px rgba(0,0,0,.08);\n}\n\n.card.active-card .card-header{\n  background:var(--blue);\n  color:#fff;\n}\n\n.card.inactive-card .card-header{\n  background:#a9a9a9;\n  color:#fff;\n}\n\n.card-header{\n  padding:14px 18px;\n  font-size:17px;\n  font-weight:bold;\n  line-height:1.25;\n}\n\n.card-body{\n  padding:16px 22px 20px;\n}\n\n.inactive-body{\n  background:#f3f3f3;\n  color:#444;\n  font-style:italic;\n  padding:14px 18px;\n  font-size:13px;\n}\n\n.description{\n  margin-bottom:20px;\n}\n\n.description-head{\n  display:flex;\n  justify-content:space-between;\n  align-items:flex-start;\n  gap:12px;\n  margin-bottom:8px;\n}\n\n.description-head h4{\n  margin:0;\n  font-size:13px;\n  font-weight:bold;\n  color:#222;\n}\n\n.description p{\n  margin:0;\n  line-height:1.42;\n  font-size:13px;\n}\n\n.applicable-for{\n  margin:8px 0 14px;\n  font-size:13px;\n  color:#333;\n}\n\n.badges{\n  display:flex;\n  gap:8px;\n  flex-wrap:wrap;\n  justify-content:flex-end;\n}\n\n.badge{\n  display:inline-block;\n  padding:4px 8px;\n  border-radius:6px;\n  font-size:12px;\n  font-weight:bold;\n  color:#fff;\n  background:var(--green);\n}\n\n.badge.adapt{\n  background:var(--orange);\n}\n\n.impact-row{\n  display:grid;\n  grid-template-columns:180px 1fr;\n  gap:10px 18px;\n  align-items:start;\n  margin:18px 0 0;\n}\n\n.impact-left{\n  display:flex;\n  flex-direction:column;\n  align-items:flex-start;\n  gap:6px;\n}\n\n.impact-label{\n  font-weight:bold;\n  color:#222;\n  font-size:13px;\n  display:flex;\n  align-items:center;\n  gap:5px;\n}\n\n.impact-scale{\n  display:flex;\n  align-items:center;\n  gap:1px;\n  min-height:24px;\n  white-space:nowrap;\n}\n\n.impact-text{\n  font-size:13px;\n  line-height:1.38;\n}\n\n.meta-icon-img{\n  width:20px;\n  height:20px;\n  object-fit:contain;\n}\n\n.icon-faded{\n  opacity:.25;\n}\n\n.scale-sep{\n  font-weight:bold;\n  color:#666;\n  margin:0 1px;\n  font-size:13px;\n}\n\n.legend-wrap{\n  position:relative;\n  display:inline-flex;\n  align-items:center;\n  z-index:20;\n}\n\n.legend-info{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  width:15px;\n  height:15px;\n  border-radius:50%;\n  background:#d9d9d9;\n  color:#666;\n  font-size:10px;\n  font-weight:bold;\n  cursor:help;\n}\n\n.legend-popup{\n  display:none;\n  position:absolute;\n  left:0;\n  top:24px;\n  z-index:9999;\n  width:520px;\n  max-width:85vw;\n  background:#fff;\n  color:#222;\n  border:1px solid #ddd;\n  border-radius:6px;\n  box-shadow:0 4px 14px rgba(0,0,0,.18);\n  padding:16px;\n  font-size:13px;\n  line-height:1.35;\n  font-weight:normal;\n}\n\n.legend-wrap:hover .legend-popup{\n  display:block;\n}\n\n.legend-heading{\n  display:block;\n  margin-bottom:12px;\n}\n\n.legend-heading strong{\n  font-weight:bold;\n}\n\n.legend-heading span{\n  font-size:12px;\n  color:#333;\n}\n\n.legend-row{\n  display:grid;\n  grid-template-columns:72px 1fr;\n  gap:10px;\n  align-items:center;\n  margin:8px 0;\n  min-height:32px;\n}\n\n.legend-icons{\n  display:flex;\n  flex-direction:row;\n  align-items:center;\n  gap:1px;\n  white-space:nowrap;\n  min-width:72px;\n}\n\n.legend-icons img,\n.legend-icons .meta-icon-img{\n  display:inline-block;\n  width:20px;\n  height:20px;\n  margin:0;\n  padding:0;\n  vertical-align:middle;\n}\n\n.benefits{\n  margin-top:18px;\n  margin-bottom:16px;\n}\n\n.benefits h4{\n  margin:0 0 8px;\n  font-size:13px;\n  color:#222;\n}\n\n.benefit-list{\n  display:flex;\n  flex-wrap:wrap;\n  gap:8px 14px;\n}\n\n.benefit-item{\n  display:inline-flex;\n  align-items:center;\n  gap:6px;\n  color:var(--blue);\n  font-weight:bold;\n  font-size:13px;\n}\n\n.benefit-item img{\n  width:26px;\n  height:26px;\n  object-fit:contain;\n}\n\n.benefits-header{\n  display:grid;\n  grid-template-columns:180px 1fr;\n  gap:16px;\n  align-items:start;\n  margin-bottom:10px;\n}\n\n.benefits-header h4{\n  margin:0;\n  font-size:13px;\n  color:#222;\n}\n\n.benefits-expl{\n  font-size:13px;\n  line-height:1.45;\n  color:#333;\n}\n\n.accordion-group{\n  display:flex;\n  flex-direction:column;\n  gap:8px;\n  margin-top:8px;\n}\n\n.accordion{\n  border-radius:4px;\n  overflow:hidden;\n}\n\n.acc-toggle{\n  width:100%;\n  border:none;\n  background:var(--blue);\n  color:#fff;\n  cursor:pointer;\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  padding:8px 12px;\n  font-size:13px;\n  font-weight:bold;\n  text-align:left;\n}\n\n.acc-label{\n  display:flex;\n  align-items:center;\n  gap:8px;\n}\n\n.acc-icon{\n  transition:transform .2s;\n}\n\n.accordion.open .acc-icon{\n  transform:rotate(180deg);\n}\n\n.acc-content{\n  display:none;\n  background:#e9f6fb;\n  padding:10px 12px;\n  line-height:1.45;\n  font-size:13px;\n}\n\n.accordion.open .acc-content{\n  display:block;\n}\n\n.acc-content ul{\n  margin:0;\n  padding-left:18px;\n}\n\n.acc-content li{\n  margin:7px 0;\n}\n\n.acc-content p{\n  margin:6px 0;\n}\n\n.link-title{\n  font-weight:bold;\n  display:block;\n  margin-bottom:2px;\n}\n\na{\n  color:var(--blue-dark);\n  overflow-wrap:anywhere;\n  word-break:break-word;\n}\n\nbutton{\n  text-transform:none;\n}\n\n@media(max-width:980px){\n  .categories{grid-template-columns:repeat(4,minmax(0,1fr));}\n}\n\n@media(max-width:820px){\n  .impact-row,\n  .benefits-header{\n    grid-template-columns:1fr;\n  }\n\n  .description-head{\n    flex-direction:column;\n  }\n\n  .badges{\n    justify-content:flex-start;\n  }\n\n  .categories{\n    grid-template-columns:repeat(3,minmax(0,1fr));\n  }\n}\n\n@media(max-width:620px){\n  .categories{grid-template-columns:repeat(2,minmax(0,1fr));}\n}\n<\/style>\n\n<div class=\"tool-wrap\">\n  <input type=\"text\" id=\"searchInput\" placeholder=\"Rechercher une mesure...\">\n  <div id=\"oderLabel\">ou<\/div>\n<\/div>\n\n<div class=\"filter-box\">\n  <div class=\"filter-header\">S\u00e9lectionner les mesures par th\u00e8me (s\u00e9lection multiple possible)<\/div>\n  <div class=\"filter-content\">\n    <div class=\"top-filters\">\n      <div class=\"top-filters-left\">\n        <label class=\"toggle-label\">\n          Mesures de protection du climat\n          <div class=\"toggle-switch\">\n            <input type=\"checkbox\" id=\"filterKlimaschutz\" checked=\"\">\n            <span class=\"slider\"><\/span>\n          <\/div>\n        <\/label>\n\n        <label class=\"toggle-label\">\n          Mesures d\u2019adaptation \n          <div class=\"toggle-switch\">\n            <input type=\"checkbox\" id=\"filterAnpassung\" checked=\"\">\n            <span class=\"slider\"><\/span>\n          <\/div>\n        <\/label>\n\n        <label class=\"toggle-label\">\n          Mesures bio uniquement\n          <div class=\"toggle-switch\">\n            <input type=\"checkbox\" id=\"filterBio\">\n            <span class=\"slider\"><\/span>\n          <\/div>\n        <\/label>\n      <\/div>\n    <\/div>\n\n    <div class=\"categories\" id=\"categoryContainer\"><\/div>\n\n    <div id=\"resultCount\" class=\"result-count\"><\/div>\n  <\/div>\n<\/div>\n\n<div id=\"results\" class=\"results\"><\/div>\n\n<script>\nconst EXCEL_FILE = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/05\/2026_Massnahmenliste-2-fr.xlsx\";\n\nconst CATEGORY_ICON_MAP = {\n  \"Grandes cultures\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Ackerbau.png\",\n  \"Cultures sp\u00e9ciales\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Spezialkulturen.png\",\n  \"Utilisation des terres\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Landnutzung.png\",\n  \"Eau\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Wasser.png\",\n  \"\u00c9nergie\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Energie.png\",\n  \"B\u00e2timents \/ Machines\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Gebaeude_Maschinen.png\",\n  \"Production laiti\u00e8re\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Milchproduktion-1.png\",\n  \"Bovins viande\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Fleischrinder.png\",\n  \"Porcs\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Schweine.png\",\n  \"Volaille\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Gefluegel.png\",\n  \"Abeilles\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Bienen.png\",\n  \"Engrais de ferme\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Hofduenger.png\",\n  \"Planification de l'exploitation\": \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Betriebsplanung.png\"\n};\n\nconst ICON_BIODIV  = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Biodiversitaet.png\";\nconst ICON_BODEN   = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Bodengesundheit.png\";\nconst ICON_DIVERS  = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Diversifizierung.png\";\nconst ICON_WASSER  = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Effiziente-Wassernutzung.png\";\nconst ICON_EROSION = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Erosionsschutz.png\";\nconst ICON_KOSTEN  = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Kosteneinsparung.png\";\nconst ICON_LUFT    = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Luftqualitaet.png\";\nconst ICON_TIER    = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/03\/Tiergesundheit.png\";\n\nconst ICON_LEAF = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2025\/11\/leaf_icone.svg\";\nconst ICON_COIN = \"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2025\/11\/coin_icone.svg\";\n\nconst COLS = {\n  nr: [\"N\u00b0\", \"No\", \"Nr.\"],\n  status: [\"Statut Affichage dans Agripedia (Inactif = gris sans d\u00e9tails, Actif = bleu avec d\u00e9tails)\"],\n  category: [\"Cat\u00e9gorie\", \"Categorie\"],\n  title: [\"Nom\"],\n  bio: [\"Mesure conforme au bio\"],\n  klim: [\"Mesure de protection du climat\"],\n  adapt: [\"Mesure d'adaptation au changement climatique\", \"Mesure d\u2019adaptation au changement climatique\"],\n  beschreibung: [\"Description\"],\n  schritte: [\"\u00c9tapes pour une mise en \u0153uvre r\u00e9ussie\", \"Etapes pour une mise en oeuvre reussie\"],\n  herausforderungen: [\"D\u00e9fis\", \"Defis\"],\n  wirkung: [\"Impact climat (0 \u00e0 3)\", \"Impact climat\"],\n  wirkungErkl: [\"Explication de l'impact climat\", \"Explication de l\u2019impact climat\"],\n  kosten: [\"Investissements \/ Co\u00fbts (0 \u00e0 3)\", \"Investissements \/ Co\u00fbts\", \"Investissements \/ Couts\"],\n  kostenErkl: [\"Explication des investissements \/ co\u00fbts\", \"Explication des investissements \/ couts\"],\n  biodiv: [\"Biodiversit\u00e9\", \"Biodiversite\"],\n  tierwohl: [\"Bien-\u00eatre\", \"Bien-etre\", \"Bien-\u00eatre animal\"],\n  luft: [\"Qualit\u00e9 de l'air\", \"Qualite de l'air\"],\n  erosion: [\"Lutte contre l'\u00e9rosion\", \"Lutte contre l\u2019erosion\", \"Lutte contre l'erosion\"],\n  boden: [\"Sant\u00e9 des sols\", \"Sante des sols\"],\n  diversifizierung: [\"Diversification\"],\n  wasserNachh: [\"Utilisation durable de l'eau\", \"Utilisation durable de l\u2019eau\"],\n  kostenEinspar: [\"R\u00e9duction des co\u00fbts\", \"Reduction des couts\"],\n  cobenefitsExpl: [\"Explication des co-b\u00e9n\u00e9fices\"],\n  info: [\"Informations et fiches techniques\"],\n  quellen: [\"Bibliographie \/ Sources\"]\n};\n\nlet data = [];\nlet selectedCategories = new Set();\nlet allCategories = [];\n\nconst categoryContainer = document.getElementById(\"categoryContainer\");\n\nfunction normalizeString(v){\n  return String(v ?? \"\").trim();\n}\n\nfunction normalizeKey(s){\n  return String(s || \"\")\n    .toLowerCase()\n    .normalize(\"NFD\")\n    .replace(\/[\\u0300-\\u036f]\/g, \"\")\n    .replace(\/[\\n\\r]+\/g, \" \")\n    .replace(\/\\s+\/g, \" \")\n    .replace(\/[\u2019']\/g, \"'\")\n    .trim();\n}\n\nfunction getValue(row, possibleNames){\n  const keys = Object.keys(row);\n  for(const name of possibleNames){\n    const wanted = normalizeKey(name);\n    const found = keys.find(k => normalizeKey(k) === wanted);\n    if(found) return row[found];\n  }\n  return \"\";\n}\n\nfunction isYes(v){\n  const s = normalizeString(v).toLowerCase();\n  return s === \"oui\" || s === \"ja\" || s === \"x\" || s === \"1\" || s === \"true\";\n}\n\nfunction isBioYes(v){\n  const s = normalizeString(v).toLowerCase();\n  return s === \"oui\" || s === \"ja\";\n}\n\nfunction isActiveStatus(v){\n  return normalizeString(v).toLowerCase() === \"actif\";\n}\n\nfunction isInactiveStatus(v){\n  return normalizeString(v).toLowerCase() === \"inactif\";\n}\n\nfunction isNoDataValue(v){\n  const s = normalizeString(v).toLowerCase();\n  return s === \"n\/a\" || s === \"na\" || s === \"n.a.\";\n}\n\nfunction escapeHtml(text){\n  const div = document.createElement(\"div\");\n  div.textContent = String(text || \"\");\n  return div.innerHTML;\n}\n\nfunction linkify(text){\n  if(!text) return \"\";\n  return String(text).replace(\/(https?:\\\/\\\/[^\\s<]+)\/g, url =>\n    `<a href=\"${url}\" target=\"_blank\" rel=\"noopener\">${url}<\/a>`\n  );\n}\n\nfunction cleanData(raw){\n  return raw.map(row => {\n    const cleaned = {};\n    Object.keys(row).forEach(k => {\n      cleaned[String(k).trim()] = typeof row[k] === \"string\" ? row[k].trim() : row[k];\n    });\n    return cleaned;\n  });\n}\n\nfunction splitCategories(catValue){\n  if(!catValue) return [];\n\n  return String(catValue)\n    .split(\",\")\n    .map(s => s.trim())\n    .filter(Boolean)\n    .map(cat => {\n      const low = normalizeKey(cat);\n\n      if(low.includes(\"production laitiere\")) return \"Production laiti\u00e8re\";\n      if(low.includes(\"bovins viande\")) return \"Bovins viande\";\n      if(low.includes(\"planification\")) return \"Planification de l'exploitation\";\n      if(low.includes(\"porcs\")) return \"Porcs\";\n      if(low.includes(\"volaille\")) return \"Volaille\";\n      if(low.includes(\"grandes cultures\")) return \"Grandes cultures\";\n      if(low.includes(\"cultures speciales\")) return \"Cultures sp\u00e9ciales\";\n      if(low.includes(\"utilisation des terres\")) return \"Utilisation des terres\";\n      if(low === \"eau\" || low.includes(\"eau\")) return \"Eau\";\n      if(low.includes(\"energie\")) return \"\u00c9nergie\";\n      if(low.includes(\"abeilles\")) return \"Abeilles\";\n      if(low.includes(\"batiments\") || low.includes(\"machines\")) return \"B\u00e2timents \/ Machines\";\n      if(low.includes(\"engrais\") || low.includes(\"fumier\")) return \"Engrais de ferme\";\n\n      return cat;\n    });\n}\n\nfunction uniqueCategoriesFromData(rows){\n  const preferredOrder = [\n    \"Grandes cultures\",\n    \"Cultures sp\u00e9ciales\",\n    \"Utilisation des terres\",\n    \"Eau\",\n    \"\u00c9nergie\",\n    \"B\u00e2timents \/ Machines\",\n    \"Production laiti\u00e8re\",\n    \"Bovins viande\",\n    \"Porcs\",\n    \"Volaille\",\n    \"Abeilles\",\n    \"Engrais de ferme\",\n    \"Planification de l'exploitation\"\n  ];\n\n  const set = new Set();\n\n  rows.forEach(r => {\n    splitCategories(getValue(r, COLS.category)).forEach(c => set.add(c));\n  });\n\n  const found = Array.from(set);\n  const ordered = preferredOrder.filter(c => found.includes(c));\n  const extra = found.filter(c => !preferredOrder.includes(c)).sort((a,b) => a.localeCompare(b, \"fr\"));\n\n  return [...ordered, ...extra];\n}\n\nfunction getCategoryIconHtml(name){\n  const src = CATEGORY_ICON_MAP[name] || \"\";\n  if(!src) return \"\";\n  return `<img decoding=\"async\" src=\"${src}\" alt=\"${escapeHtml(name)}\" loading=\"lazy\">`;\n}\n\nfunction renderCategories(){\n  categoryContainer.innerHTML = \"\";\n\n  allCategories.forEach(name => {\n    const card = document.createElement(\"div\");\n    card.className = \"category-card\" + (selectedCategories.has(name) ? \" selected\" : \"\");\n    card.innerHTML = `\n      ${getCategoryIconHtml(name)}\n      <div class=\"cat-label\">${escapeHtml(name)}<\/div>\n    `;\n\n    card.addEventListener(\"click\", () => {\n      if(selectedCategories.has(name)){\n        selectedCategories.delete(name);\n      }else{\n        selectedCategories.add(name);\n      }\n      renderCategories();\n      filterData();\n    });\n\n    categoryContainer.appendChild(card);\n  });\n}\n\nfunction parseRangeValue(v){\n  const s = String(v ?? \"\").trim();\n  if(!s || isNoDataValue(s)) return null;\n\n  const normalized = s\n    .replace(\/\\s+to\\s+\/gi, \"-\")\n    .replace(\/\\s+bis\\s+\/gi, \"-\")\n    .replace(\/[\u2013\u2014]\/g, \"-\")\n    .replace(\/\\s+\/g, \"\");\n\n  if(!normalized || normalized.toLowerCase() === \"n\/a\") return null;\n\n  if(normalized === \"0\"){\n    return {from:0,to:0,isRange:false,isZero:true};\n  }\n\n  const rangeMatch = normalized.match(\/^(\\d+)-(\\d+)$\/);\n  if(rangeMatch){\n    let from = parseInt(rangeMatch[1],10);\n    let to = parseInt(rangeMatch[2],10);\n\n    if(isNaN(from) || isNaN(to)) return null;\n\n    from = Math.max(1,Math.min(3,from));\n    to = Math.max(1,Math.min(3,to));\n\n    if(from > to) [from,to] = [to,from];\n\n    return {from,to,isRange:true,isZero:false};\n  }\n\n  const singleMatch = normalized.match(\/^\\d+$\/);\n  if(singleMatch){\n    const n = Math.max(0,Math.min(3,parseInt(singleMatch[0],10)));\n    return {from:n,to:n,isRange:false,isZero:n === 0};\n  }\n\n  return null;\n}\n\nfunction buildScaleHtml(type, rawValue){\n  const parsed = parseRangeValue(rawValue);\n  const icon = type === \"leaf\" ? ICON_LEAF : ICON_COIN;\n\n  if(!parsed) return \"\";\n\n  if(parsed.isZero){\n    return `\n      <img decoding=\"async\" src=\"${icon}\" class=\"meta-icon-img icon-faded\" alt=\"\">\n      <img decoding=\"async\" src=\"${icon}\" class=\"meta-icon-img icon-faded\" alt=\"\">\n      <img decoding=\"async\" src=\"${icon}\" class=\"meta-icon-img icon-faded\" alt=\"\">\n    `;\n  }\n\n  if(parsed.isRange && parsed.from !== parsed.to){\n    let leftHtml = \"\";\n    let rightHtml = \"\";\n\n    for(let i=1;i<=3;i++){\n      leftHtml += `<img decoding=\"async\" src=\"${icon}\" class=\"meta-icon-img ${i <= parsed.from ? \"\" : \"icon-faded\"}\" alt=\"\">`;\n    }\n\n    for(let i=1;i<=3;i++){\n      rightHtml += `<img decoding=\"async\" src=\"${icon}\" class=\"meta-icon-img ${i <= parsed.to ? \"\" : \"icon-faded\"}\" alt=\"\">`;\n    }\n\n    return `${leftHtml}<span class=\"scale-sep\">-<\/span>${rightHtml}`;\n  }\n\n  let html = \"\";\n  for(let i=1;i<=3;i++){\n    html += `<img decoding=\"async\" src=\"${icon}\" class=\"meta-icon-img ${i <= parsed.to ? \"\" : \"icon-faded\"}\" alt=\"\">`;\n  }\n\n  return html;\n}\n\nfunction climateLegendHtml(){\n  return `\n    <span class=\"legend-wrap\">\n      <span class=\"legend-info\">?<\/span>\n      <span class=\"legend-popup\">\n        <span class=\"legend-heading\">\n          <strong>Impact climat<\/strong>\n          <span>(potentiel de r\u00e9duction des GES au niveau de l\u2019exploitation, en %, base CO\u2082eq)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"leaf\",0)}<\/span>\n          <span>Faible potentiel de r\u00e9duction (&lt; 1 % ou incertain\/controvers\u00e9)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"leaf\",1)}<\/span>\n          <span>Potentiel de r\u00e9duction moyen (~ 1 \u2013 4 %)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"leaf\",2)}<\/span>\n          <span>Grand potentiel de r\u00e9duction (~ 4 \u2013 10 %)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"leaf\",3)}<\/span>\n          <span>Tr\u00e8s grand potentiel de r\u00e9duction (&gt; 10 %) ou stockage<\/span>\n        <\/span>\n      <\/span>\n    <\/span>\n  `;\n}\n\nfunction costLegendHtml(){\n  return `\n    <span class=\"legend-wrap\">\n      <span class=\"legend-info\">?<\/span>\n      <span class=\"legend-popup\">\n        <span class=\"legend-heading\">\n          <strong>Investissements, co\u00fbts<\/strong>\n          <span>(estimation des investissements uniques + co\u00fbts r\u00e9currents en CHF)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"coin\",0)}<\/span>\n          <span>Aucun<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"coin\",1)}<\/span>\n          <span>Faible (&lt; 1000 CHF unique et\/ou &lt; 200 CHF par an)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"coin\",2)}<\/span>\n          <span>Moyen (1000 \u2013 5000 CHF unique et\/ou 200 \u2013 1000 CHF par an)<\/span>\n        <\/span>\n\n        <span class=\"legend-row\">\n          <span class=\"legend-icons\">${buildScaleHtml(\"coin\",3)}<\/span>\n          <span>\u00c9lev\u00e9 (&gt; 5000 CHF unique et\/ou &gt; 1000 CHF par an)<\/span>\n        <\/span>\n      <\/span>\n    <\/span>\n  `;\n}\n\nfunction formatAccordionContent(text){\n  if(!text) return \"\";\n\n  const lines = String(text).replace(\/\\r\/g,\"\").split(\"\\n\").map(s => s.trim());\n  let html = \"\";\n  let listItems = [];\n\n  function flushList(){\n    if(listItems.length){\n      html += `<ul>${listItems.join(\"\")}<\/ul>`;\n      listItems = [];\n    }\n  }\n\n  lines.forEach(line => {\n    if(!line){\n      flushList();\n      return;\n    }\n\n    const isBullet = \/^[-\u2022*]\\s*\/.test(line);\n\n    if(isBullet){\n      listItems.push(`<li>${linkify(line.replace(\/^[-\u2022*]\\s*\/,\"\"))}<\/li>`);\n    }else{\n      flushList();\n      html += `<p>${linkify(line)}<\/p>`;\n    }\n  });\n\n  flushList();\n  return html;\n}\n\nfunction formatInfoPairs(text){\n  if(!text) return \"\";\n\n  const lines = String(text)\n    .replace(\/\\r\/g,\"\")\n    .split(\"\\n\")\n    .map(s => s.trim())\n    .filter(Boolean);\n\n  if(!lines.length) return \"\";\n\n  let html = \"<ul>\";\n\n  for(let i=0;i<lines.length;i++){\n    const line = lines[i];\n    const next = lines[i + 1] || \"\";\n    const currentIsUrl = \/^https?:\\\/\\\/\/i.test(line);\n    const nextIsUrl = \/^https?:\\\/\\\/\/i.test(next);\n\n    if(currentIsUrl){\n      html += `<li><a href=\"${line}\" target=\"_blank\" rel=\"noopener\">${line}<\/a><\/li>`;\n      continue;\n    }\n\n    if(nextIsUrl){\n      html += `\n        <li>\n          <a class=\"link-title\" href=\"${next}\" target=\"_blank\" rel=\"noopener\">${escapeHtml(line)}<\/a>\n        <\/li>\n      `;\n      i++;\n    }else{\n      html += `<li>${linkify(line)}<\/li>`;\n    }\n  }\n\n  html += \"<\/ul>\";\n  return html;\n}\n\nfunction formatSimpleContent(text){\n  if(!text) return \"\";\n\n  const parts = String(text)\n    .split(\/[\\r\\n]+\/)\n    .map(s => s.trim())\n    .filter(Boolean);\n\n  if(!parts.length) return \"\";\n  if(parts.length === 1) return `<p>${linkify(parts[0])}<\/p>`;\n\n  return `<ul>${parts.map(p => `<li>${linkify(p.replace(\/^[-\u2022*]\\s*\/,\"\"))}<\/li>`).join(\"\")}<\/ul>`;\n}\n\nfunction createAccordion(title, content){\n  if(!content) return \"\";\n\n  return `\n    <div class=\"accordion\">\n      <button type=\"button\" class=\"acc-toggle\">\n        <span class=\"acc-label\">\n          <span class=\"acc-icon\">\u25be<\/span>\n          <span>${title}<\/span>\n        <\/span>\n      <\/button>\n      <div class=\"acc-content\">${content}<\/div>\n    <\/div>\n  `;\n}\n\nfunction getBenefitItems(r){\n  const items = [];\n\n  if(isYes(getValue(r,COLS.biodiv))) items.push({label:\"Biodiversit\u00e9\", icon:ICON_BIODIV});\n  if(isYes(getValue(r,COLS.tierwohl))) items.push({label:\"Bien-\u00eatre animal\", icon:ICON_TIER});\n  if(isYes(getValue(r,COLS.luft))) items.push({label:\"Qualit\u00e9 de l'air\", icon:ICON_LUFT});\n  if(isYes(getValue(r,COLS.erosion))) items.push({label:\"Lutte contre l'\u00e9rosion\", icon:ICON_EROSION});\n  if(isYes(getValue(r,COLS.boden))) items.push({label:\"Sant\u00e9 des sols\", icon:ICON_BODEN});\n  if(isYes(getValue(r,COLS.diversifizierung))) items.push({label:\"Diversification\", icon:ICON_DIVERS});\n  if(isYes(getValue(r,COLS.wasserNachh))) items.push({label:\"Utilisation durable de l'eau\", icon:ICON_WASSER});\n  if(isYes(getValue(r,COLS.kostenEinspar))) items.push({label:\"R\u00e9duction des co\u00fbts\", icon:ICON_KOSTEN});\n\n  return items;\n}\n\nfunction rowMatchesSelectedCategories(row){\n  if(!selectedCategories.size) return false;\n\n  const rowCats = splitCategories(getValue(row,COLS.category));\n  if(!rowCats.length) return false;\n\n  return rowCats.some(c => selectedCategories.has(c));\n}\n\nfunction filterData(){\n  const txt = document.getElementById(\"searchInput\").value.trim().toLowerCase();\n  const filterK = document.getElementById(\"filterKlimaschutz\").checked;\n  const filterA = document.getElementById(\"filterAnpassung\").checked;\n  const filterBio = document.getElementById(\"filterBio\").checked;\n\n  let res = data.filter(r => {\n    const title = normalizeString(getValue(r,COLS.title));\n    if(!title) return false;\n\n    const searchableText = [\n      getValue(r,COLS.title),\n      getValue(r,COLS.category),\n      getValue(r,COLS.beschreibung),\n      getValue(r,COLS.schritte),\n      getValue(r,COLS.herausforderungen),\n      getValue(r,COLS.wirkungErkl),\n      getValue(r,COLS.kostenErkl),\n      getValue(r,COLS.info),\n      getValue(r,COLS.quellen)\n    ].map(v => normalizeString(v).toLowerCase()).join(\" \");\n\n    if(txt && !searchableText.includes(txt)) return false;\n    if(!txt && !rowMatchesSelectedCategories(r)) return false;\n\n    if(filterBio && !isBioYes(getValue(r, COLS.bio))) return false;\n\n    const isK = isYes(getValue(r,COLS.klim));\n    const isA = isYes(getValue(r,COLS.adapt));\n\n    if(!filterK && !filterA) return false;\n\n    if(isK || isA){\n      if(!((filterK && isK) || (filterA && isA))) return false;\n    }\n\n    return true;\n  });\n\n  res.sort((a,b) => {\n    const aActive = isActiveStatus(getValue(a,COLS.status)) ? 0 : 1;\n    const bActive = isActiveStatus(getValue(b,COLS.status)) ? 0 : 1;\n\n    if(aActive !== bActive) return aActive - bActive;\n\n    const nrA = parseFloat(getValue(a,COLS.nr));\n    const nrB = parseFloat(getValue(b,COLS.nr));\n\n    if(!isNaN(nrA) && !isNaN(nrB)) return nrA - nrB;\n\n    return normalizeString(getValue(a,COLS.title)).localeCompare(normalizeString(getValue(b,COLS.title)), \"fr\");\n  });\n\n  renderResults(res);\n}\n\nfunction renderResults(list){\n  const out = document.getElementById(\"results\");\n  const countBox = document.getElementById(\"resultCount\");\n\n  if(countBox){\n    countBox.textContent = `${list.length} sur ${data.length} mesures affich\u00e9es`;\n  }\n\n  out.innerHTML = \"\";\n\n  if(!list.length){\n    out.innerHTML = `\n      <div class=\"no-results\">\n        <b style=\"color:#FF0000;\">\n          Veuillez s\u00e9lectionner au moins un th\u00e8me ou utiliser le champ de recherche pour afficher des mesures.\n        <\/b>\n      <\/div>`;\n    return;\n  }\n\n  list.forEach(r => {\n    const title = normalizeString(getValue(r,COLS.title));\n    const status = normalizeString(getValue(r,COLS.status));\n\n    const isActive = isActiveStatus(status);\n    const isInactive = isInactiveStatus(status);\n    const showAsActive = isActive || !isInactive;\n\n    const card = document.createElement(\"div\");\n    card.className = \"card \" + (showAsActive ? \"active-card\" : \"inactive-card\");\n\n    if(!showAsActive){\n      card.innerHTML = `\n        <div class=\"card-header\">${escapeHtml(title)}<\/div>\n        <div class=\"inactive-body\">Contenus en cours d\u2019\u00e9laboration<\/div>\n      `;\n      out.appendChild(card);\n      return;\n    }\n\n    const benefits = getBenefitItems(r);\n    const wirkungScale = buildScaleHtml(\"leaf\", getValue(r,COLS.wirkung));\n    const kostenScale = buildScaleHtml(\"coin\", getValue(r,COLS.kosten));\n\n    const beschrHtml = `\n      <div class=\"description\">\n        <div class=\"description-head\">\n          <h4>Description<\/h4>\n          <div class=\"badges\">\n            ${isYes(getValue(r,COLS.klim)) ? `<span class=\"badge\">Protection du climat<\/span>` : \"\"}\n            ${isYes(getValue(r,COLS.adapt)) ? `<span class=\"badge adapt\">Adaptation<\/span>` : \"\"}\n          <\/div>\n        <\/div>\n\n        <div class=\"applicable-for\">\n          <strong>Applicable pour :<\/strong> ${splitCategories(getValue(r,COLS.category)).map(escapeHtml).join(\", \")}\n        <\/div>\n\n        ${getValue(r,COLS.beschreibung) ? `<p>${linkify(getValue(r,COLS.beschreibung))}<\/p>` : \"\"}\n      <\/div>\n    `;\n\n    const impactHtml = `\n      ${wirkungScale ? `\n        <div class=\"impact-row\">\n          <div class=\"impact-left\">\n            <div class=\"impact-label\">\n              Impact climat\n              ${climateLegendHtml()}\n            <\/div>\n            <div class=\"impact-scale\">${wirkungScale}<\/div>\n          <\/div>\n          <div class=\"impact-text\">${linkify(getValue(r,COLS.wirkungErkl))}<\/div>\n        <\/div>\n      ` : \"\"}\n\n      ${kostenScale ? `\n        <div class=\"impact-row\">\n          <div class=\"impact-left\">\n            <div class=\"impact-label\">\n              Investissements \/ Co\u00fbts\n              ${costLegendHtml()}\n            <\/div>\n            <div class=\"impact-scale\">${kostenScale}<\/div>\n          <\/div>\n          <div class=\"impact-text\">${linkify(getValue(r,COLS.kostenErkl))}<\/div>\n        <\/div>\n      ` : \"\"}\n    `;\n\n    const benefitsExplanation = getValue(r, COLS.cobenefitsExpl);\n\n    const benefitsHtml = (benefits.length || benefitsExplanation) ? `\n      <div class=\"benefits\">\n\n        <div class=\"benefits-header\">\n          <h4>Co-b\u00e9n\u00e9fices<\/h4>\n\n          ${benefitsExplanation ? `\n            <div class=\"benefits-expl\">\n              ${linkify(benefitsExplanation)}\n            <\/div>\n          ` : \"\"}\n        <\/div>\n\n        ${benefits.length ? `\n          <div class=\"benefit-list\">\n            ${benefits.map(b => `\n              <span class=\"benefit-item\">\n                <img decoding=\"async\" src=\"${b.icon}\" alt=\"${escapeHtml(b.label)}\" onerror=\"this.style.display='none'\">\n                <span>${escapeHtml(b.label)}<\/span>\n              <\/span>\n            `).join(\"\")}\n          <\/div>\n        ` : \"\"}\n\n      <\/div>\n    ` : \"\";\n\n    card.innerHTML = `\n      <div class=\"card-header\">${escapeHtml(title)}<\/div>\n      <div class=\"card-body\">\n        ${beschrHtml}\n        ${impactHtml}\n        ${benefitsHtml}\n        <div class=\"accordion-group\">\n          ${createAccordion(\"\u00c9tapes pour une mise en \u0153uvre r\u00e9ussie\", formatAccordionContent(getValue(r,COLS.schritte)))}\n          ${createAccordion(\"D\u00e9fis\", formatAccordionContent(getValue(r,COLS.herausforderungen)))}\n          ${createAccordion(\"Informations et fiches techniques\", formatInfoPairs(getValue(r,COLS.info)))}\n          ${createAccordion(\"Bibliographie \/ Sources\", formatSimpleContent(getValue(r,COLS.quellen)))}\n        <\/div>\n      <\/div>\n    `;\n\n    out.appendChild(card);\n  });\n\n  bindAccordionEvents();\n}\n\nfunction bindAccordionEvents(){\n  document.querySelectorAll(\".acc-toggle\").forEach(btn => {\n    btn.onclick = function(e){\n      e.preventDefault();\n      e.stopPropagation();\n\n      const accordion = this.closest(\".accordion\");\n      if(accordion) accordion.classList.toggle(\"open\");\n    };\n  });\n}\n\n[\"searchInput\",\"filterKlimaschutz\",\"filterAnpassung\",\"filterBio\"].forEach(id => {\n  const el = document.getElementById(id);\n  el.addEventListener(id === \"searchInput\" ? \"input\" : \"change\", filterData);\n});\n\nfetch(EXCEL_FILE)\n  .then(r => {\n    if(!r.ok) throw new Error(\"Le fichier Excel n\u2019a pas pu \u00eatre charg\u00e9.\");\n    return r.arrayBuffer();\n  })\n  .then(buf => {\n    const wb = XLSX.read(buf,{type:\"array\"});\n\n    const preferredSheet = wb.SheetNames.includes(\"Ensemble de mesures 1\")\n      ? \"Ensemble de mesures 1\"\n      : wb.SheetNames[1];\n\n    const sheet = wb.Sheets[preferredSheet];\n\n    data = cleanData(XLSX.utils.sheet_to_json(sheet, {\n      defval:\"\",\n      raw:false\n    }));\n\n    allCategories = uniqueCategoriesFromData(data);\n    renderCategories();\n    filterData();\n\n    console.log(\"Feuille charg\u00e9e :\", preferredSheet);\n    console.log(\"Nombre de lignes :\", data.length);\n    console.log(\"Cat\u00e9gories trouv\u00e9es :\", allCategories);\n    console.log(\"Colonnes trouv\u00e9es :\", Object.keys(data[0] || {}));\n  })\n  .catch(err => {\n    console.error(err);\n    document.getElementById(\"results\").innerHTML =\n      `<div class=\"no-results\">Erreur lors du chargement du fichier Excel.<\/div>`;\n  });\n<\/script>\n\n\n\n<div style=\"height:221px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group agripedia-impressum is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group agripedia-impressum-header is-layout-flow wp-block-group-is-layout-flow\">\n<h5 class=\"wp-block-heading\">Mentions l\u00e9gales<\/h5>\n<\/div>\n\n\n\n<div class=\"wp-block-group agripedia-impressum-content is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u00c9laboration du contenu :<\/strong><\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image alignleft size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"776\" height=\"277\" src=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/05\/agridea_logo_RGB_transparent_2x.png\" alt=\"\" class=\"wp-image-2209\" style=\"aspect-ratio:2.7368793072981092;width:197px;height:auto\" srcset=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/05\/agridea_logo_RGB_transparent_2x.png 776w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/05\/agridea_logo_RGB_transparent_2x-300x107.png 300w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/05\/agridea_logo_RGB_transparent_2x-768x274.png 768w\" sizes=\"auto, (max-width: 776px) 100vw, 776px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n\n\n<div style=\"height:59px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"no-space wp-block-paragraph\"><strong><strong>Bases issues des travaux des acteurs \/ projets suivants :<\/strong><\/strong><\/p>\n\n\n\n<div class=\"wp-block-columns are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image alignleft size-large is-resized\"><a href=\"www.fibl.org\/fr\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-1024x429.png\" alt=\"\" class=\"wp-image-2078\" style=\"aspect-ratio:2.387252839713925;width:143px;height:auto\" srcset=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-1024x429.png 1024w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-300x126.png 300w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-768x322.png 768w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-1536x644.png 1536w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-2048x859.png 2048w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-1200x503.png 1200w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/fibl-logo-1980x830.png 1980w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image alignleft size-large is-resized\"><a href=\"https:\/\/climatefarmdemo.eu\/\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"622\" src=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-1024x622.png\" alt=\"\" class=\"wp-image-2080\" style=\"aspect-ratio:1.6465025726602698;width:155px;height:auto\" srcset=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-1024x622.png 1024w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-300x182.png 300w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-768x466.png 768w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-1536x932.png 1536w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-2048x1243.png 2048w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-1200x728.png 1200w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/CFD-colour-transparrent-background-1980x1202.png 1980w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image alignleft size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"215\" src=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-1024x215.jpg\" alt=\"\" class=\"wp-image-2083\" srcset=\"https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-1024x215.jpg 1024w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-300x63.jpg 300w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-768x161.jpg 768w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-1536x322.jpg 1536w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-2048x430.jpg 2048w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-1200x252.jpg 1200w, https:\/\/agripedia.ch\/klima\/wp-content\/uploads\/sites\/66\/2026\/04\/EN-Funded-by-the-EU-PANTONE-1980x415.jpg 1980w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La liste de leviers d&rsquo;action\/mesures d&rsquo;att\u00e9nuation et d&rsquo;adaptation au changement climatique offre un aper\u00e7u des mesures efficaces de r\u00e9duction des GES et d&rsquo;adaptation de la production agricole. Pour chaque option d\u2019action, vous trouverez des informations sur son impact, des conseils de mise en \u0153uvre ainsi que des informations compl\u00e9mentaires, des possibilit\u00e9s de soutien et des [&hellip;]<\/p>\n","protected":false},"author":927,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_sb_is_suggestion_mode":false,"_sb_show_suggestion_boards":false,"_sb_show_comment_boards":false,"_sb_suggestion_history":"","_sb_update_block_changes":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-2142","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/pages\/2142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/users\/927"}],"replies":[{"embeddable":true,"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/comments?post=2142"}],"version-history":[{"count":33,"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/pages\/2142\/revisions"}],"predecessor-version":[{"id":2406,"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/pages\/2142\/revisions\/2406"}],"wp:attachment":[{"href":"https:\/\/agripedia.ch\/klima\/fr\/wp-json\/wp\/v2\/media?parent=2142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}