{"id":860,"date":"2025-07-09T13:41:52","date_gmt":"2025-07-09T17:41:52","guid":{"rendered":"https:\/\/enpistedev.wpenginepowered.com\/events\/"},"modified":"2026-01-12T17:03:41","modified_gmt":"2026-01-12T22:03:41","slug":"events","status":"publish","type":"page","link":"https:\/\/enpiste.qc.ca\/en\/events\/","title":{"rendered":"Events"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"860\" class=\"elementor elementor-860 elementor-81\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5a307e8 e-flex e-con-boxed e-con e-parent\" data-id=\"5a307e8\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-13d0ba7 e-flex e-con-boxed e-con e-parent\" data-id=\"13d0ba7\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b717769 e-con-full e-flex e-con e-child\" data-id=\"b717769\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-ff7b70b e-con-full e-flex e-con e-child\" data-id=\"ff7b70b\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-48bc820 e-con-full e-flex e-con e-child\" data-id=\"48bc820\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cefe66f elementor-widget elementor-widget-heading\" data-id=\"cefe66f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Events<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f62cbce elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"f62cbce\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Discover the highlights of community life and industry meetings.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-475154f e-con-full e-flex e-con e-child\" data-id=\"475154f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6054bfa elementor-widget elementor-widget-image\" data-id=\"6054bfa\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"683\" height=\"1024\" src=\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg\" class=\"attachment-large size-large wp-image-4212\" alt=\"\" srcset=\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg 683w, https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-200x300.jpg 200w, https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-768x1152.jpg 768w, https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-1024x1536.jpg 1024w, https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-1365x2048.jpg 1365w, https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-scaled.jpg 1707w\" sizes=\"(max-width: 683px) 100vw, 683px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5ce9feb elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"5ce9feb\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><span data-sheets-root=\"1\">Bekka Rose | Le Monast\u00e8re \u00a9 Caroline Thibeault<\/span><\/p>\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-d5df1f2 e-flex e-con-boxed e-con e-parent\" data-id=\"d5df1f2\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a5845be elementor-widget elementor-widget-shortcode\" data-id=\"a5845be\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t<div class=\"acf-event-feat-app\" data-cpt=\"evenement\" data-lang=\"en\" data-button=\"no\">\n\t\t<div class=\"acf-event-feat-header\">\n\t\t\t\t\t\t\t<h2 class=\"acf-event-feat-title\">Featured Events<\/h2>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"acf-event-feat-grid\"><\/div>\n\t\t<div class=\"acf-event-feat-swiper swiper\" style=\"display:none;\">\n\t\t\t<div class=\"swiper-wrapper\"><\/div>\n\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t<\/div>\n\t<\/div>\n\n\t<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/swiper@11\/swiper-bundle.min.css\" \/>\n\t<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/swiper@11\/swiper-bundle.min.js\"><\/script>\n\n\t<style>\n\t.acf-event-feat-header {\n\t  display: flex;\n\t  justify-content: space-between;\n\t  align-items: center;\n\t  margin-bottom: 30px;\n\t}\n\t.acf-event-feat-title {\n\t  color: #D30C8C;\n\t  font-family: \"TikTok Sans\" !important;\n\t  font-size: 32px !important;\n\t  font-style: normal;\n\t  font-weight: 600 !important;\n\t  line-height: 35px;\n\t  margin: 0;\n\t  flex: 0 0 30%;\n\t  min-width: 200px;\n\t}\n\t\n\t.acf-event-feat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 30px; }\n\t@media screen and (min-width:1024px) {\n\t\t.acf-event-feat-grid.one-card .acf-img-container { width:40%; height:100%; }\n\t}\n\t.acf-categories { display:flex; flex-wrap:wrap; gap:8px; }\n\t.acf-category { padding:4px 6px; color:#455A64; font-family:\"TikTok Sans\" !important; font-size:10px !important; font-weight:400 !important; line-height:12px; border-radius:100px; white-space:nowrap; background-color:#cfd8dc80; }\n\t.acf-event-feat-grid.one-card { grid-template-columns:1fr; margin:0 auto 30px; }\n\t.acf-event-feat-grid.two-cards { grid-template-columns:repeat(2, 1fr); }\n\t.acf-event-feat-grid.three-cards { grid-template-columns:repeat(3, 1fr); }\n\t@media (max-width:1023px) {\n\t\t.acf-event-feat-grid.two-cards { grid-template-columns:repeat(2, 1fr); }\n\t\t.acf-event-feat-grid.one-card { grid-template-columns:1fr; max-width:none; margin:0 0 30px; }\n\t\t.acf-event-feat-grid.three-cards { grid-template-columns:repeat(2, 1fr); }\n\t}\n\t@media (max-width:767px) {\n\t\t.acf-event-feat-grid { grid-template-columns:1fr; }\n\t\t.acf-event-feat-grid.one-card { max-width:none; margin:0 0 30px; }\n\t}\n\t.acf-card-wrapper { display:flex; flex-direction:column; }\n\t.acf-card { height:100%; display:flex; flex-direction:column; border-radius:12px; text-decoration:none; color:inherit; transition:box-shadow .3s; background:#F5F6F7; box-shadow:8px 8px 12px 0 rgba(231,231,233,.6)!important; min-height:200px; }\n\t.acf-card:hover { box-shadow:8px 8px 12px 0 rgba(160,160,167,.5)!important; }\n\t@media (min-width:1024px) {\n\t\t.acf-event-feat-grid.one-card .acf-card { flex-direction:row; min-height:300px; max-height:350px; }\n\t\t.acf-event-feat-grid.one-card .acf-img { width:100%!important; height:100%!important; border-radius:12px 0 0 12px!important; object-fit:cover; }\n\t\t.acf-event-feat-grid.one-card .acf-body { width:50%; padding:24px; justify-content:flex-start; }\n\t\t.acf-event-feat-grid.one-card .acf-date-title-excerpt { gap:12px; }\n\t\t.acf-event-feat-grid.one-card .acf-title { font-size:28px!important; line-height:32px; }\n\t\t.acf-event-feat-grid.one-card .acf-excerpt { font-size:16px!important; line-height:24px; }\n\t}\n\t.acf-img-container { position:relative; width:100%; height:170px; border-radius:12px 12px 0 0; overflow:hidden; }\n\t.acf-img { width:100%; height:100%; object-fit:cover; border-radius:12px 12px 0 0; }\n\t.acf-nom-prenom { position:absolute; bottom:0; left:0; color:#FFF; font-family:\"TikTok Sans\" !important; font-size:10px !important; font-weight:400 !important; line-height:12px; padding:0 0 6px 12px; }\n\t.acf-body { flex:1; display:flex; flex-direction:column; padding:16px; justify-content:space-between; }\n\t.acf-date-title-excerpt { display:flex; flex-direction:column; gap:8px; }\n\t.acf-date { color:#666; font-family:\"TikTok Sans\" !important; font-size:12px !important; font-weight:400 !important; line-height:16px; }\n\t.acf-title { color:#333; font-family:\"TikTok Sans\" !important; font-size:18px !important; font-weight:600 !important; line-height:24px; margin:0; }\n\t.acf-excerpt { color:#666; font-family:\"TikTok Sans\" !important; font-size:14px !important; font-weight:400 !important; line-height:20px; margin:0; }\n\t.acf-event-feat-swiper { width:100%; overflow:hidden; }\n\t.acf-event-feat-swiper .swiper-wrapper { display:flex; align-items:stretch; }\n\t.acf-event-feat-swiper .swiper-slide { height:auto; display:flex; flex-direction:column; }\n\t.acf-event-feat-swiper.tablet-3 .swiper-slide { width:calc(50% - 10px)!important; flex-shrink:0; }\n\t.acf-event-feat-swiper.tablet-3 .acf-card-wrapper, .acf-event-feat-swiper.mobile-2 .acf-card-wrapper, .acf-event-feat-swiper.mobile-3 .acf-card-wrapper { height:100%; }\n\t.acf-event-feat-swiper.mobile-2 .swiper-slide, .acf-event-feat-swiper.mobile-3 .swiper-slide { width:100%!important; flex-shrink:0; }\n\t.acf-event-feat-swiper .swiper-pagination { position:relative; margin-top:20px; text-align:center; }\n\t.acf-event-feat-swiper .swiper-pagination-bullet { width:8px; height:8px; background:#CFD8DC; opacity:.5; margin:0 4px; border-radius:50%; cursor:pointer; }\n\t.acf-event-feat-swiper .swiper-pagination-bullet-active { opacity:1; background:#455A64; }\n\t.acf-event-feat-button-container { margin: 0; }\n\t.acf-event-feat-button { display: inline-flex; align-items: center; padding: 8px 0; background: transparent; text-decoration: none; border-radius: 0; border-bottom: 1px solid #323332; font-family: \"TikTok Sans\", sans-serif; font-size: 14px; font-weight: 400; line-height: 1.2; color: #323332; transition: color 0.3s, border-color 0.3s; }\n\t.acf-event-feat-button-text { margin-right: 10px; }\n\t.acf-event-feat-button-arrow { width: auto; height: auto; transition: filter 0.3s; }\n\t.acf-event-feat-button:hover { color: #D30C8C; border-bottom-color: #D30C8C; }\n\t.acf-event-feat-button:hover .acf-event-feat-button-arrow { filter: brightness(0) saturate(100%) invert(23%) sepia(95%) saturate(5000%) hue-rotate(310deg) brightness(0.85) contrast(1); }\n\t\n\t\/* Styles sp\u00e9cifiques UNIQUEMENT pour les pages de publications *\/\n\t\/* Ces styles ne s'appliquent que quand les classes .with-image ou .without-image sont pr\u00e9sentes *\/\n\t\n\t\/* Min-height sp\u00e9cifique pour les publications *\/\n\t.acf-event-feat-app.acf-publications-page .acf-card {\n\t\tmin-height: 200px !important;\n        transition: box-shadow .3s;\n        background: #F5F6F7;\n        box-shadow: 8px 8px 12px 0 rgba(231, 231, 233, .6) !important;\n\t}\n\t\n\t\/* Styles pour la structure des publications - plus sp\u00e9cifiques *\/\n\t.acf-event-feat-app.acf-publications-page .acf-header-group {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\tgap: 0 !important;\n\t\tpadding: 16px 16px 0 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-content-group {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\tgap: 8px !important;\n\t\tpadding: 0 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-card .acf-body {\n\t\tpadding: 0 !important;\n\t\tgap: 16px !important;\n\t\tjustify-content: flex-start !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t}\n\n\t.acf-event-feat-app.acf-publications-page .acf-card .acf-plus-holder {\n\t\tpadding: 0 16px 16px 16px !important;\n\t\tmargin-top: auto !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-img-container {\n\t\theight: 120px !important;\n\t\tborder-radius: 0 !important;\n\t\toverflow: hidden !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-img {\n\t\theight: 120px !important;\n\t\tborder-radius: 0 !important;\n\t\twidth: 100% !important;\n\t\tobject-fit: cover !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-title-publieur-group {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\tgap: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-img-container.acf-no-image {\n\t\tdisplay: none !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-ville-date {\n\t\tdisplay: flex !important;\n\t\tgap: 3px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-ville {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-ville::after {\n\t\tcontent: \", \" !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-title {\n\t\tfont-size: 18px !important;\n\t\tfont-weight: 600 !important;\n\t\tmargin: 0 !important;\n\t\tcolor: #333 !important;\n\t\tline-height: 1.3 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-date {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t\talign-self: flex-end;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-excerpt {\n\t\tcolor: #666 !important;\n\t\tfont-size: 14px !important;\n\t\tline-height: 1.4 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t\/* Layouts adaptatifs pour les publications *\/\n\t\n\t\/* Styles de debug supprim\u00e9s - Design final propre *\/\n\t\n\t\/* 1 card avec image : layout horizontal sur desktop\/tablette *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-card {\n\t\tflex-direction: row !important;\n\t\tmin-height: 200px !important;\n\t\tmax-height: 350px !important;\n\t\tdisplay: flex !important;\n\t\talign-items: stretch !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-img-container {\n\t\tflex: 0 0 40% !important;\n\t\theight: 100% !important;\n\t\tborder-radius: 12px 0 0 12px !important;\n\t\toverflow: hidden !important;\n\t\tposition: relative !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-img {\n\t\twidth: 100% !important;\n\t\theight: 100% !important;\n\t\tborder-radius: 12px 0 0 12px !important;\n\t\tobject-fit: cover !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-body {\n\t\tflex: 1 !important;\n\t\tpadding: 24px !important;\n\t\tjustify-content: space-between !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-date-title-excerpt {\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\tgap: 12px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-title {\n\t\tfont-size: 28px !important;\n\t\tline-height: 32px !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-excerpt {\n\t\tfont-size: 16px !important;\n\t\tline-height: 24px !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t\/* 1 card sans image : layout vertical avec hauteur min *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.without-image .acf-card {\n\t\tmin-height: 200px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.without-image .acf-body {\n\t\tpadding: 20px !important;\n\t\theight: 100% !important;\n\t\tjustify-content: space-between !important;\n\t}\n\t\n\t\/* 2+ cards : layout grille standard avec structure comme \"ici\" *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards {\n\t\tgrid-template-columns: repeat(2, 1fr) !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards {\n\t\tgrid-template-columns: repeat(3, 1fr) !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards {\n\t\tgrid-template-columns: repeat(3, 1fr) !important;\n\t}\n\t\n\t\/* Styles pour les 2+ cards avec structure comme \"ici\" *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-card,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-card,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-card {\n\t\tflex-direction: column !important;\n\t\tmin-height: 200px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-img-container,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-img-container,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-img-container {\n\t\theight: 120px !important;\n\t\tborder-radius: 0 !important;\n\t\toverflow: hidden !important;\n\t\tposition: relative !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-img,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-img,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-img {\n\t\twidth: 100% !important;\n\t\theight: 120px !important;\n\t\tborder-radius: 0 !important;\n\t\tobject-fit: cover !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-body,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-body,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-body {\n\t\tflex: 1 !important;\n\t\tpadding: 0 !important;\n\t\tjustify-content: space-between !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-header-group,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-header-group,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-header-group {\n\t\tpadding: 16px 16px 0 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-content-group,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-content-group,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-content-group {\n\t\tgap: 8px !important;\n\t\tpadding: 0 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-plus-holder,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-plus-holder,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-plus-holder {\n\t\tpadding: 0 16px 16px 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-title,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-title,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-title {\n\t\tfont-size: 22px !important;\n\t\tfont-weight: 600 !important;\n\t\tline-height: 24px !important;\n\t\tmargin: 0 !important;\n\t\tcolor: #333 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards .acf-excerpt,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards .acf-excerpt,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards .acf-excerpt {\n\t\tfont-size: 14px !important;\n\t\tfont-weight: 400 !important;\n\t\tline-height: 20px !important;\n\t\tmargin: 0 !important;\n\t\tcolor: #666 !important;\n\t}\n\t\n\t\/* Styles pour le carrousel (swiper) - copie exacte des styles 2+ cards *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .swiper-slide {\n\t\theight: auto !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-card-wrapper {\n\t\theight: 100% !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-card {\n\t\tflex-direction: column !important;\n\t\tmin-height: 200px !important;\n\t\tdisplay: flex !important;\n\t\tbackground: #F5F6F7 !important;\n\t\tborder-radius: 12px !important;\n\t\toverflow: hidden !important;\n\t\tbox-shadow: 8px 8px 12px 0 rgba(231, 231, 233, .6) !important;\n\t\theight: 100% !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-img-container {\n\t\theight: 120px !important;\n\t\tborder-radius: 0 !important;\n\t\toverflow: hidden !important;\n\t\tposition: relative !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-img {\n\t\twidth: 100% !important;\n\t\theight: 120px !important;\n\t\tborder-radius: 0 !important;\n\t\tobject-fit: cover !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-body {\n\t\tflex: 1 !important;\n\t\tpadding: 0 !important;\n\t\tjustify-content: space-between !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-header-group {\n\t\tpadding: 16px 16px 0 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-content-group {\n\t\tgap: 8px !important;\n\t\tpadding: 0 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-plus-holder {\n\t\tpadding: 0 16px 16px 16px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-title {\n\t\tfont-size: 22px !important;\n\t\tfont-weight: 600 !important;\n\t\tline-height: 24px !important;\n\t\tmargin: 0 !important;\n\t\tcolor: #333 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-excerpt {\n\t\tfont-size: 14px !important;\n\t\tfont-weight: 400 !important;\n\t\tline-height: 20px !important;\n\t\tmargin: 0 !important;\n\t\tcolor: #666 !important;\n\t}\n\t\n\t\/* Styles suppl\u00e9mentaires pour le carrousel - copie des styles 2+ cards *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-date {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-name-publieur {\n\t\tfont-size: 14px !important;\n\t\tfont-weight: 600 !important;\n\t\tcolor: #333 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-entreprise-role {\n\t\tdisplay: flex !important;\n\t\tgap: 4px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-entreprise,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-role-publieur {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-ville-date {\n\t\tdisplay: flex !important;\n\t\tgap: 3px !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-ville {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-ville::after {\n\t\tcontent: \", \" !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-categories {\n\t\tdisplay: flex !important;\n\t\tgap: 8px !important;\n\t\tflex-wrap: wrap !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-category {\n\t\tfont-size: 12px !important;\n\t\tpadding: 4px 8px !important;\n\t\tbackground-color:#cfd8dc80 !important;\n\t\tborder-radius: 100px !important;\n\t\tcolor: #666 !important;\n\t}\n\t\n\t\/* Styles sp\u00e9cifiques pour forcer l'alignement parfait du carrousel avec la grid *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .swiper-wrapper {\n\t\talign-items: stretch !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .swiper-slide {\n\t\theight: auto !important;\n\t\tdisplay: flex !important;\n\t\tflex-direction: column !important;\n\t\talign-items: stretch !important;\n\t}\n\t\n\t\/* S'assurer que les cards du carrousel ont la m\u00eame hauteur *\/\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-card {\n\t\theight: 100% !important;\n\t\tmin-height: 200px !important;\n\t}\n\t\n\t\/* Forcer les m\u00eames styles que la grid pour tous les \u00e9l\u00e9ments *\/\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-name-publieur {\n\t\tfont-size: 14px !important;\n\t\tfont-weight: 600 !important;\n\t\tcolor: #333 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-entreprise-role {\n\t\tdisplay: flex !important;\n\t\tgap: 8px !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-entreprise,\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-role-publieur {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-ville-date {\n\t\tdisplay: flex !important;\n\t\tgap: 3px !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-ville {\n\t\tfont-size: 12px !important;\n\t\tcolor: #666 !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-ville::after {\n\t\tcontent: \", \" !important;\n\t}\n\t\n\t.acf-event-feat-app.acf-publications-page .acf-event-feat-swiper .acf-categories {\n\t\tdisplay: flex !important;\n\t\tgap: 8px !important;\n\t\tflex-wrap: wrap !important;\n\t\tmargin: 0 !important;\n\t}\n\t\n\t\n\t\/* Responsive pour les layouts des publications *\/\n\t@media (max-width: 1023px) {\n\t\t\/* 1 card avec image : layout vertical sur tablette *\/\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-card {\n\t\t\tflex-direction: column !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-img-container {\n\t\t\tflex: none !important;\n\t\t\theight: 120px !important;\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-img {\n\t\t\theight: 120px !important;\n\t\t\tborder-radius: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.one-card.with-image .acf-body {\n\t\t\tpadding: 16px !important;\n\t\t}\n\t\t\n\t\t\/* 2+ cards sur tablette *\/\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.two-cards {\n\t\t\tgrid-template-columns: repeat(2, 1fr) !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.three-cards {\n\t\t\tgrid-template-columns: repeat(2, 1fr) !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid.multiple-cards {\n\t\t\tgrid-template-columns: repeat(2, 1fr) !important;\n\t\t}\n\t\t\n\t}\n\t\n\t@media (max-width: 767px) {\n\t\t\/* Tous les layouts sur mobile : 1 colonne *\/\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid {\n\t\t\tgrid-template-columns: 1fr !important;\n\t\t}\n\t\t\n\t\t\/* Force l'application des styles pour les pages de publications en mobile *\/\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-card-wrapper {\n\t\t\twidth: 100% !important;\n\t\t}\n\t\t\n\t\t\/* Styles unifi\u00e9s pour TOUTES les cards en mobile (1, 2, 3+) *\/\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-card {\n\t\t\tflex-direction: column !important;\n\t\t\tmin-height: 200px !important;\n\t\t\tdisplay: flex !important;\n\t\t\tbackground: white !important;\n\t\t\tborder-radius: 12px !important;\n\t\t\toverflow: hidden !important;\n\t\t\tbox-shadow: 0 2px 8px rgba(0,0,0,0.1) !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-img-container {\n\t\t\theight: 170px !important;\n\t\t\tborder-radius: 12px 12px 0 0 !important;\n\t\t\toverflow: hidden !important;\n\t\t\tposition: relative !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-img {\n\t\t\twidth: 100% !important;\n\t\t\theight: 100% !important;\n\t\t\tborder-radius: 12px 12px 0 0 !important;\n\t\t\tobject-fit: cover !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-body {\n\t\t\tflex: 1 !important;\n\t\t\tpadding: 0 !important;\n\t\t\tjustify-content: space-between !important;\n\t\t\tdisplay: flex !important;\n\t\t\tflex-direction: column !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-header-group {\n\t\t\tpadding: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-content-group {\n\t\t\tgap: 8px !important;\n\t\t\tpadding: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-plus-holder {\n\t\t\tpadding: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-title {\n\t\t\tfont-size: 22px !important;\n\t\t\tfont-weight: 600 !important;\n\t\t\tline-height: 24px !important;\n\t\t\tmargin: 0 !important;\n\t\t\tcolor: #333 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-excerpt {\n\t\t\tfont-size: 14px !important;\n\t\t\tfont-weight: 400 !important;\n\t\t\tline-height: 20px !important;\n\t\t\tmargin: 0 !important;\n\t\t\tcolor: #666 !important;\n\t\t}\n\t\t\n\t\t\/* Styles suppl\u00e9mentaires pour le mobile - pages de publications *\/\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-date {\n\t\t\tfont-size: 12px !important;\n\t\t\tcolor: #666 !important;\n\t\t\tmargin: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-name-publieur {\n\t\t\tfont-size: 14px !important;\n\t\t\tfont-weight: 600 !important;\n\t\t\tcolor: #333 !important;\n\t\t\tmargin: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-entreprise-role {\n\t\t\tdisplay: flex !important;\n\t\t\tgap: 4px !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-entreprise,\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-role-publieur {\n\t\t\tfont-size: 12px !important;\n\t\t\tcolor: #666 !important;\n\t\t\tmargin: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-ville-date {\n\t\t\tdisplay: flex !important;\n\t\t\tgap: 3px !important;\n\t\t\tmargin: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-ville {\n\t\t\tfont-size: 12px !important;\n\t\t\tcolor: #666 !important;\n\t\t\tmargin: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-ville::after {\n\t\t\tcontent: \", \" !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-categories {\n\t\t\tdisplay: flex !important;\n\t\t\tgap: 8px !important;\n\t\t\tflex-wrap: wrap !important;\n\t\t\tmargin: 0 !important;\n\t\t}\n\t\t\n\t\t.acf-event-feat-app.acf-publications-page .acf-event-feat-grid .acf-category {\n\t\t\tfont-size: 12px !important;\n\t\t\tpadding: 4px 8px !important;\n\t\t\tbackground-color: #f0f0f0 !important;\n\t\t\tborder-radius: 4px !important;\n\t\t\tcolor: #666 !important;\n\t\t}\n\t\t\n\t}\n\t<\/style>\n\n\t<script>\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t\tdocument.querySelectorAll(\".acf-event-feat-app\").forEach((app) => {\n\t\t\tconst cpt = app.dataset.cpt;\n\t\t\tconst lang = app.dataset.lang || (window.location.pathname.indexOf('\/en') !== -1 ? 'en' : 'fr');\n\t\t\tconst gridEl = app.querySelector(\".acf-event-feat-grid\");\n\t\t\tconst swiperContainer = app.querySelector(\".acf-event-feat-swiper\");\n\t\t\tconst swiperWrapper = swiperContainer.querySelector(\".swiper-wrapper\");\n\t\t\tlet swiper = null;\n\n\t\t\t\/\/ Fonction pour obtenir le message \"aucun r\u00e9sultat\" selon la page\n\t\t\tfunction getNoContentMessage() {\n\t\t\t\tconst path = window.location.pathname;\n\t\t\t\t\n\t\t\t\t\/\/ D\u00e9tection de la page selon l'URL\n\t\t\t\tif (path.includes('\/evenements') || path.includes('\/events')) {\n\t\t\t\t\treturn lang === 'en' ? 'No event found' : 'Aucun \u00e9v\u00e9nement trouv\u00e9';\n\t\t\t\t} else if (path.includes('\/nouvelles') || path.includes('\/news')) {\n\t\t\t\t\treturn lang === 'en' ? 'No news found' : 'Aucune nouvelle trouv\u00e9e';\n\t\t\t\t} else if (path.includes('\/communiques-de-presse') || path.includes('\/press-releases')) {\n\t\t\t\t\treturn lang === 'en' ? 'No press release found' : 'Aucun communiqu\u00e9 de presse trouv\u00e9';\n\t\t\t\t} else if (path.includes('\/rapports') || path.includes('\/reports')) {\n\t\t\t\t\treturn lang === 'en' ? 'No report found' : 'Aucun rapport trouv\u00e9';\n\t\t\t\t} else if (path.includes('\/valorisations') || path.includes('\/valuation')) {\n\t\t\t\t\treturn lang === 'en' ? 'No valuation found' : 'Aucune valorisation trouv\u00e9e';\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\/\/ Pas de fallback voulu\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\t\/\/ Libell\u00e9s dynamiques\n\t\t\tconst LABELS = {\n\t\t\t\tlearnMore: lang === 'en' ? 'Learn more' : 'En savoir plus',\n\t\t\t\tnoImage:   lang === 'en' ? 'No image'   : 'Aucune image',\n\t\t\t\tnoContent: getNoContentMessage(),\n\t\t\t};\n\n\t\t\t\/\/ Utils\n\t\t\tfunction normalize(str) {\n\t\t\t\treturn (str || \"\").toString().normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g, \"\").toLowerCase();\n\t\t\t}\n\n\t\t\t\/\/ Format date selon langue : \"16 avril 2026\" (FR) ou \"April 16 2026\" (EN). Si ville\/info avant : \", \"\n\t\t\tfunction formatDateFull(iso) {\n\t\t\t\tconst d = new Date(iso);\n\t\t\t\tif (lang === 'en') {\n\t\t\t\t\tconst m = d.toLocaleString('en-US', { month: 'long' });\n\t\t\t\t\treturn `${m} ${String(d.getDate()).padStart(2, '0')} ${d.getFullYear()}`;\n\t\t\t\t}\n\t\t\t\treturn d.toLocaleDateString(\"fr-FR\", { day: \"2-digit\", month: \"long\", year: \"numeric\" });\n\t\t\t}\n\n\t\t\t\/\/ R\u00e9cup\u00e9rer cat\u00e9gories (exclut uncategorized id=1\/84)\n\t\t\tfunction getPostCategories(post) {\n\t\t\t\t\/\/ Si _embedded pr\u00e9sent\n\t\t\t\tif (post._embedded && post._embedded['wp:term']) {\n\t\t\t\t\tconst out = [];\n\t\t\t\t\tpost._embedded['wp:term'].forEach(group => {\n\t\t\t\t\t\tgroup.forEach(term => {\n\t\t\t\t\t\t\tif (term.taxonomy === 'category' && term.id !== 1 && term.id !== 84) {\n\t\t\t\t\t\t\t\tout.push(term.name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\treturn Promise.resolve(out);\n\t\t\t\t}\n\t\t\t\t\/\/ Fallback: fetch single avec _embed\n\t\t\t\treturn fetch(`\/wp-json\/wp\/v2\/${cpt}\/${post.id}?lang=${lang}&acf_format=standard&_embed=wp:term`)\n\t\t\t\t\t.then(r => r.ok ? r.json() : null)\n\t\t\t\t\t.then(fp => {\n\t\t\t\t\t\tif (!fp || !fp._embedded || !fp._embedded['wp:term']) return [];\n\t\t\t\t\t\tconst out = [];\n\t\t\t\t\t\tfp._embedded['wp:term'].forEach(group => {\n\t\t\t\t\t\t\tgroup.forEach(term => {\n\t\t\t\t\t\t\t\tif (term.taxonomy === 'category' && term.id !== 1 && term.id !== 84) {\n\t\t\t\t\t\t\t\t\tout.push(term.name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn out;\n\t\t\t\t\t})\n\t\t\t\t\t.catch(() => []);\n\t\t\t}\n\n\/\/ V\u00e9rifier si le post a le tag \"a-la-une\" (id=33) ou \"headlines\" (id=52)\nfunction hasALaUneTag(post) {\n\t\/\/ 1) Champ natif 'tags' si pr\u00e9sent (plus fiable et l\u00e9ger)\n\tif (Array.isArray(post.tags) && post.tags.length) {\n\t\treturn post.tags.includes(33) || post.tags.includes(52);\n\t}\n\t\/\/ 2) Fallback via _embedded wp:term\n\tif (post._embedded && post._embedded['wp:term']) {\n\t\tfor (const group of post._embedded['wp:term']) {\n\t\t\tfor (const term of group) {\n\t\t\t\tif (term.taxonomy === 'post_tag' && (term.id === 33 || term.id === 52)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n\t\t\tfunction getPostVille(post) {\n\t\t\t\tconst acf = post.acf || {};\n\t\t\t\tconst ville = acf.lieu_de_levenement || acf.ville_de_levenement || \"\";\n\t\t\t\tif (!ville) return \"\";\n\t\t\t\tconst clean = ville.endsWith(',') ? ville.slice(0,-1) : ville;\n\t\t\t\treturn clean.trim() ? (clean + (lang === 'en' ? ' ' : ' ')) : \"\";\n\t\t\t}\n\n\t\t\tfunction getPostDate(post) {\n\t\t\t\t\/\/ Priorit\u00e9 1: Utiliser date_devenement si elle existe\n\t\t\t\t\/\/ V\u00e9rifier aussi les variantes possibles du nom du champ\n\t\t\t\tconst dateEvent = post.acf && (\n\t\t\t\t\tpost.acf.date_devenement || \n\t\t\t\t\tpost.acf.date_de_l_evenement || \n\t\t\t\t\tpost.acf['date-devenement'] ||\n\t\t\t\t\tpost.acf['date_de_l_evenement']\n\t\t\t\t);\n\t\t\t\t\n\t\t\t\tif (dateEvent !== undefined && dateEvent !== null && dateEvent !== '') {\n\t\t\t\t\tlet raw = dateEvent;\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Convertir en string si c'est un nombre\n\t\t\t\t\tif (typeof raw === 'number') {\n\t\t\t\t\t\traw = raw.toString();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Si c'est d\u00e9j\u00e0 une date format\u00e9e (contient des lettres comme \"d\u00e9cembre\", \"janvier\", etc.)\n\t\t\t\t\t\/\/ ou si c'est une date format\u00e9e en fran\u00e7ais\/anglais, on la retourne telle quelle\n\t\t\t\t\tif (typeof raw === 'string') {\n\t\t\t\t\t\t\/\/ V\u00e9rifier si c'est d\u00e9j\u00e0 une date format\u00e9e (contient des mois en lettres)\n\t\t\t\t\t\tconst moisFr = ['janvier', 'f\u00e9vrier', 'mars', 'avril', 'mai', 'juin', 'juillet', 'ao\u00fbt', 'septembre', 'octobre', 'novembre', 'd\u00e9cembre'];\n\t\t\t\t\t\tconst moisEn = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\n\t\t\t\t\t\tconst rawLower = raw.toLowerCase();\n\t\t\t\t\t\tconst contientMois = moisFr.some(m => rawLower.includes(m)) || moisEn.some(m => rawLower.includes(m));\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (contientMois) {\n\t\t\t\t\t\t\t\/\/ Date d\u00e9j\u00e0 format\u00e9e, on la retourne telle quelle\n\t\t\t\t\t\t\treturn raw;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Format YYYYMMDD (ex: \"20251210\")\n\t\t\t\t\t\tif (\/^\\d{8}$\/.test(raw)) {\n\t\t\t\t\t\t\tconst y = parseInt(raw.substring(0,4), 10);\n\t\t\t\t\t\t\tconst m = parseInt(raw.substring(4,6), 10);\n\t\t\t\t\t\t\tconst d = parseInt(raw.substring(6,8), 10);\n\t\t\t\t\t\t\tconst dt = new Date(y, m-1, d);\n\t\t\t\t\t\t\tif (!isNaN(dt.getTime())) {\n\t\t\t\t\t\t\t\treturn formatDateFull(dt.toISOString());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Format YYYY-MM-DD ou autres formats ISO\n\t\t\t\t\t\tif (raw.includes('-')) {\n\t\t\t\t\t\t\tconst dt = new Date(raw);\n\t\t\t\t\t\t\tif (!isNaN(dt.getTime())) {\n\t\t\t\t\t\t\t\treturn formatDateFull(dt.toISOString());\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Essayer de parser comme date directement\n\t\t\t\t\tconst dt = new Date(raw);\n\t\t\t\t\tif (!isNaN(dt.getTime())) {\n\t\t\t\t\t\treturn formatDateFull(dt.toISOString());\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Si on arrive ici et que raw est une string non vide, on la retourne telle quelle\n\t\t\t\t\t\/\/ (au cas o\u00f9 c'est une date format\u00e9e qu'on n'a pas d\u00e9tect\u00e9e)\n\t\t\t\t\tif (typeof raw === 'string' && raw.trim() !== '') {\n\t\t\t\t\t\treturn raw;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\/\/ Fallback: Utiliser la date du post\n\t\t\t\treturn formatDateFull(post.date);\n\t\t\t}\n\n\t\t\tfunction getPostNomPrenom(post) {\n\t\t\t\treturn (post.acf && post.acf.nom_prenom) ? post.acf.nom_prenom : \"\";\n\t\t\t}\n\n\t\t\t\/\/ Fonctions pour r\u00e9cup\u00e9rer les champs ACF sp\u00e9cifiques aux publications\n\t\t\tfunction getPostACF(post, fieldName) {\n\t\t\t\treturn (post.acf && post.acf[fieldName]) ? post.acf[fieldName] : \"\";\n\t\t\t}\n\n\t\t\tasync function getPostACFTranslated(post, fieldName) {\n\t\t\t\tif (!post.acf || !post.acf[fieldName]) return \"\";\n\t\t\t\tconst field = post.acf[fieldName];\n\t\t\t\tif (typeof field === 'string') return field;\n\t\t\t\tif (typeof field === 'object' && field[lang]) return field[lang];\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\tfunction getLang() {\n\t\t\t\treturn lang;\n\t\t\t}\n\n\t\t\tfunction getPostImage(post) {\n\t\t\t\tif (post._embedded && post._embedded[\"wp:featuredmedia\"] && post._embedded[\"wp:featuredmedia\"][0]) {\n\t\t\t\t\tconst media = post._embedded[\"wp:featuredmedia\"][0];\n\t\t\t\t\treturn Promise.resolve(media.source_url || media.guid?.rendered || media.url || \"\");\n\t\t\t\t}\n\t\t\t\tif (post.featured_media) {\n\t\t\t\t\treturn fetch(`\/wp-json\/wp\/v2\/media\/${post.featured_media}?_cb=${Date.now()}`)\n\t\t\t\t\t\t.then(r => r.ok ? r.json() : null)\n\t\t\t\t\t\t.then(m => (m && (m.source_url || \"\")) || \"\")\n\t\t\t\t\t\t.catch(() => \"\");\n\t\t\t\t}\n\t\t\t\treturn Promise.resolve(\"\");\n\t\t\t}\n\n\t\t\tasync function makeCardHTML(p, totalCards = 1) {\n\t\t\t\tconst [img, categories] = await Promise.all([ getPostImage(p), getPostCategories(p) ]);\n\t\t\t\tconst ville = getPostVille(p);\n\t\t\t\tconst dateLabel = getPostDate(p);\n\t\t\t\tconst nomPrenom = getPostNomPrenom(p);\n\n\t\t\t\t\/\/ D\u00e9tecter si c'est une page de publications\n\t\t\t\tconst isPublications = window.location.pathname.includes('\/publications') || \n\t\t\t\t\twindow.location.pathname.includes('\/en\/publications');\n\t\t\t\t\n\t\t\t\t\/\/ R\u00e9cup\u00e9rer les champs ACF sp\u00e9cifiques aux publications\n\t\t\t\tlet namePublieur = '';\n\t\t\t\tlet entreprise = '';\n\t\t\t\tlet roleDuPublieur = '';\n\t\t\t\t\n\t\t\t\tif (isPublications) {\n\t\t\t\t\tconst currentLang = getLang();\n\t\t\t\t\t\n\t\t\t\t\t\/\/ R\u00e9cup\u00e9rer les champs ACF pour les publications (version synchrone)\n\t\t\t\t\tnamePublieur = currentLang === 'en' ? \n\t\t\t\t\t\t(getPostACF(p, 'name-publieur') || getPostACF(p, 'name_publieur') || getPostACF(p, 'nom-publieur') || getPostACF(p, 'nom_publieur')) : \n\t\t\t\t\t\t(getPostACF(p, 'name-publieur') || getPostACF(p, 'name_publieur') || getPostACF(p, 'nom-publieur') || getPostACF(p, 'nom_publieur'));\n\t\t\t\t\t\t\n\t\t\t\t\tentreprise = currentLang === 'en' ? \n\t\t\t\t\t\t(getPostACF(p, 'entreprise') || getPostACF(p, 'company') || getPostACF(p, 'societe')) : \n\t\t\t\t\t\t(getPostACF(p, 'entreprise') || getPostACF(p, 'company') || getPostACF(p, 'societe'));\n\t\t\t\t\t\t\n\t\t\t\t\troleDuPublieur = currentLang === 'en' ? \n\t\t\t\t\t\t(getPostACF(p, 'role-du-publieur') || getPostACF(p, 'role_du_publieur') || getPostACF(p, 'role-publieur') || getPostACF(p, 'role_publieur') || getPostACF(p, 'poste')) : \n\t\t\t\t\t\t(getPostACF(p, 'role-du-publieur') || getPostACF(p, 'role_du_publieur') || getPostACF(p, 'role-publieur') || getPostACF(p, 'role_publieur') || getPostACF(p, 'poste'));\n\t\t\t\t}\n\n\t\t\t\tconst cats = categories.filter(c => {\n\t\t\t\t\tconst t = (c||'').toLowerCase();\n\t\t\t\t\treturn !(t.includes('uncategorized') || t.includes('non cat\u00e9goris\u00e9') || t.includes('non categorise'));\n\t\t\t\t});\n\t\t\t\tconst categoriesHTML = cats.length\n\t\t\t\t\t? `<div style=\"display:flex; gap:8px; flex-wrap:wrap;\" class=\"acf-categories\">${cats.map(cat => `<span class=\"acf-category\">${cat}<\/span>`).join(\"\")}<\/div>`\n\t\t\t\t\t: \"\";\n\n\t\t\t\tconst nomPrenomHTML = nomPrenom ? `<div class=\"acf-nom-prenom\">\u00a9 ${nomPrenom}<\/div>` : \"\";\n\t\t\t\t\n\t\t\t\t\/\/ HTML sp\u00e9cifique pour les publications\n\t\t\t\tif (isPublications) {\n\t\t\t\t\t\/\/ HTML des informations publieur\n\t\t\t\t\tconst publieurHTML = namePublieur ? `\n\t\t\t\t\t\t<div class=\"acf-publieur-info\">\n\t\t\t\t\t\t\t<div class=\"acf-name-publieur\">${namePublieur}<\/div>\n\t\t\t\t\t\t\t<div class=\"acf-entreprise-role\">\n\t\t\t\t\t\t\t\t${entreprise ? `<div class=\"acf-entreprise\">${entreprise}<\/div>` : ''}\n\t\t\t\t\t\t\t\t${roleDuPublieur ? `<div class=\"acf-role-publieur\">${roleDuPublieur}<\/div>` : ''}\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t` : '';\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Gestion de l'excerpt pour les publications\n\t\t\t\t\tlet excerptText = p.excerpt?.rendered || \"\";\n\t\t\t\t\tlet excerptHTML = '';\n\t\t\t\t\t\n\t\t\t\t\t\/\/ V\u00e9rifier si on a un excerpt valide\n\t\t\t\t\tconst tempDiv = document.createElement('div');\n\t\t\t\t\ttempDiv.innerHTML = excerptText;\n\t\t\t\t\tconst cleanText = tempDiv.textContent || tempDiv.innerText || '';\n\t\t\t\t\tconst hasValidExcerpt = cleanText.trim().length > 0;\n\t\t\t\t\t\n\t\t\t\t\tif (hasValidExcerpt) {\n\t\t\t\t\t\t\/\/ Limitation de l'excerpt UNIQUEMENT pour les pages de publications\n\t\t\t\t\t\tif (isPublications) {\n\t\t\t\t\t\t\t\/\/ D\u00e9terminer la limite selon le nombre de cards et la pr\u00e9sence d'image\n\t\t\t\t\t\t\tlet characterLimit = 0;\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (img) {\n\t\t\t\t\t\t\t\t\/\/ Avec image : limiter selon le nombre de cards\n\t\t\t\t\t\t\t\tif (totalCards === 1) {\n\t\t\t\t\t\t\t\t\tcharacterLimit = 206;\n\t\t\t\t\t\t\t\t} else if (totalCards === 2) {\n\t\t\t\t\t\t\t\t\tcharacterLimit = 186;\n\t\t\t\t\t\t\t\t} else if (totalCards === 3) {\n\t\t\t\t\t\t\t\t\tcharacterLimit = 166;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcharacterLimit = 166; \/\/ Par d\u00e9faut pour 3+ cards\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\/\/ Sans image : afficher tout l'excerpt\n\t\t\t\t\t\t\t\tcharacterLimit = cleanText.length;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\/\/ Appliquer la limite\n\t\t\t\t\t\t\tif (cleanText.length > characterLimit) {\n\t\t\t\t\t\t\t\texcerptText = cleanText.substring(0, characterLimit) + '...';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\texcerptText = cleanText;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\/\/ Pour les autres pages : excerpt complet\n\t\t\t\t\t\t\texcerptText = cleanText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\texcerptHTML = `<div class=\"acf-excerpt\">${excerptText}<\/div>`;\n\t\t\t\t\t}\n\n\t\t\t\t\t\/\/ Si page publications et PAS d'excerpt, forcer la hauteur 100% sur l'image et son conteneur\n\t\t\t\t\tlet imageContainerStyle = '';\n\t\t\t\t\tlet imgStyle = '';\n\t\t\t\t\tif (isPublications && !hasValidExcerpt && img) {\n\t\t\t\t\t\timageContainerStyle = ' style=\"height:100% !important;\"';\n\t\t\t\t\t\timgStyle = ' style=\"height:100% !important;width:100%;object-fit:cover;\"';\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Classe pour masquer le conteneur d'image si pas d'image\n\t\t\t\t\tconst imageContainerClass = img ? 'acf-img-container' : 'acf-img-container acf-no-image';\n\t\t\t\t\t\n\t\t\t\t\tconst villeHTML = ville ? `<div class=\"acf-ville\">${ville}<\/div>` : '';\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Structure diff\u00e9rente selon le nombre de cards\n\t\t\t\t\tif (totalCards === 1) {\n\t\t\t\t\t\t\/\/ 1 card : structure sp\u00e9ciale avec titre et publieur group\u00e9s\n\t\t\t\t\t\t\tconst finalHTML = `\n\t\t\t\t\t\t\t<div class=\"acf-card-wrapper\">\n\t\t\t\t\t\t\t\t<div class=\"acf-card\" data-post-id=\"${p.id}\" onclick=\"window.location.href='${p.link}'\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"${imageContainerClass}\"${imageContainerStyle}>\n\t\t\t\t\t\t\t\t\t\t\t${img ? `<img class=\\\"acf-img\\\" src=\\\"${img}\\\" alt=\\\"${p.title?.rendered || ''}\\\"${imgStyle}>` : ''}\n\t\t\t\t\t\t\t\t\t\t${nomPrenomHTML}\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"acf-body\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"acf-date-title-excerpt\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"acf-date\">${ville ? ville.trim() + ', ' : ''}${dateLabel}<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"acf-title-publieur-group\">\n\t\t\t\t\t\t\t\t\t\t\t\t<h3 class=\"acf-title\">${p.title?.rendered || \"\"}<\/h3>\n\t\t\t\t\t\t\t\t\t\t\t\t${publieurHTML}\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t${categoriesHTML}\n\t\t\t\t\t\t\t\t\t\t\t${excerptHTML}\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"acf-plus\" data-post-id=\"${p.id}\">...<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t`;\n\t\t\t\t\t\treturn finalHTML;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\/\/ 2+ cards : structure standard comme dans \"ici\"\n\t\t\t\t\t\t\tconst finalHTML = `\n\t\t\t\t\t\t\t<div class=\"acf-card-wrapper\">\n\t\t\t\t\t\t\t\t<div class=\"acf-card\" data-post-id=\"${p.id}\" onclick=\"window.location.href='${p.link}'\">\n\t\t\t\t\t\t\t\t\t<div class=\"acf-body\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"acf-header-group\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"acf-title\">${p.title?.rendered || \"\"}<\/div>\n\t\t\t\t\t\t\t\t\t\t\t${publieurHTML}\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"${imageContainerClass}\"${imageContainerStyle}>\n\t\t\t\t\t\t\t\t\t\t\t\t${img ? `<img class=\\\"acf-img\\\" src=\\\"${img}\\\" alt=\\\"${p.title?.rendered || ''}\\\"${imgStyle}>` : ''}\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"acf-content-group\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"acf-ville-date\">\n\t\t\t\t\t\t\t\t\t\t\t\t${villeHTML}\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"acf-date\">${dateLabel}<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t${categoriesHTML}\n\t\t\t\t\t\t\t\t\t\t\t${excerptHTML}\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"acf-plus-holder\" data-post-id=\"${p.id}\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"acf-plus\" data-post-id=\"${p.id}\">...<\/div>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t`;\n\t\t\t\t\t\treturn finalHTML;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t\/\/ HTML standard pour les autres types de contenu\n\t\t\t\tconst imageHTML = img\n\t\t\t\t\t? `<img decoding=\"async\" class=\"acf-img\" src=\"${img}\" alt=\"\">`\n\t\t\t\t\t: `<div class=\"acf-img-placeholder\" style=\"width: 100%; height: 170px; background: #E0E0E0; display: flex; align-items: center; justify-content: center; border-radius: 12px 12px 0 0; color: #999;\">${LABELS.noImage}<\/div>`;\n\n\t\t\t\treturn `\n\t\t\t\t\t<div class=\"acf-card-wrapper\">\n\t\t\t\t\t\t<a href=\"${p.link}\" class=\"acf-card\">\n\t\t\t\t\t\t\t<div class=\"acf-img-container\">\n\t\t\t\t\t\t\t\t${imageHTML}\n\t\t\t\t\t\t\t\t${nomPrenomHTML}\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"acf-body\">\n\t\t\t\t\t\t\t\t<div class=\"acf-date-title-excerpt\">\n\t\t\t\t\t\t\t\t\t<div class=\"acf-date\">${ville ? ville.trim() + ', ' : ''}${dateLabel}<\/div>\n\t\t\t\t\t\t\t\t\t${categoriesHTML}\n\t\t\t\t\t\t\t\t\t<h3 class=\"acf-title\">${p.title.rendered}<\/h3>\n\t\t\t\t\t\t\t\t\t<p class=\"acf-excerpt\">${p.excerpt.rendered}<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"acf-plus\" data-post-id=\"${p.id}\">...<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n\t\t\t\t`;\n\t\t\t}\n\n\t\t\t\/\/ Fetch posts (bilingue, limite, embed, ACF standard) + filtre tag c\u00f4t\u00e9 API\nasync function fetchPosts() {\n\ttry {\n\t\tconst TAG_ID = (lang === 'en') ? 52 : 33; \/\/ EN=headlines(52) \/ FR=a-la-une(33)\n\t\tconst url =\n\t\t\t`\/wp-json\/wp\/v2\/${cpt}` +\n\t\t\t`?lang=${lang}` +\n\t\t\t`&per_page=100` +\n\t\t\t`&acf_format=standard` +\n\t\t\t`&_embed=wp:featuredmedia,wp:term` +\n\t\t\t`&tags=${TAG_ID}` + \/\/ filtre serveur \"\u00e0 la une\"\n\t\t\t`&_fields=id,title,excerpt,link,date,acf,featured_media,_embedded,tags` + \/\/ inclure 'tags'\n\t\t\t`&_cb=${Date.now()}`;\n\n\t\tconst response = await fetch(url, { cache: 'no-store', headers: { 'Cache-Control': 'no-cache' } });\n\t\tif (!response.ok) return [];\n\n\t\tconst posts = await response.json();\n\n\t\t\/\/ Fallback s\u00e9curit\u00e9 au cas o\u00f9 le filtre serveur serait inop\u00e9rant\n\t\tconst aLaUneOnly = posts.filter(p => hasALaUneTag(p));\n\n\t\t\/\/ Exclure les posts dont toutes les cat\u00e9gories sont uncategorized\n\t\treturn aLaUneOnly.filter(p => {\n\t\t\tconst groups = (p._embedded && p._embedded['wp:term']) ? p._embedded['wp:term'] : [];\n\t\t\tlet hasValid = false;\n\t\t\tgroups.forEach(g => g.forEach(t => {\n\t\t\t\tif (t.taxonomy === 'category' && t.id !== 1 && t.id !== 84) hasValid = true;\n\t\t\t}));\n\t\t\treturn hasValid || !groups.length;\n\t\t});\n\t} catch {\n\t\treturn [];\n\t}\n}\n\n\t\t\tfunction destroySwiper() { if (swiper) { swiper.destroy(true,true); swiper = null; } }\n\n\t\t\t\/\/ Version sp\u00e9ciale de hydrateDynamicButtons pour les publications\n\t\t\tasync function hydrateDynamicButtonsForPublications(container) {\n\t\t\t\tconst buttons = container.querySelectorAll('.acf-plus[data-post-id]');\n\t\t\t\t\n\t\t\t\tfor (const btn of buttons) {\n\t\t\t\t\tconst postId = btn.dataset.postId;\n\t\t\t\t\tif (!postId) continue;\n\t\t\t\t\t\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst fd = new FormData();\n\t\t\t\t\t\tfd.append('action', 'get_button_plus_dynamique');\n\t\t\t\t\t\tfd.append('post_id', postId);\n\t\t\t\t\t\tfd.append('text', '');\n\t\t\t\t\t\tfd.append('custom_class', 'acf-plus');\n\t\t\t\t\t\tfd.append('lang', getLang());\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst resp = await fetch('\/wp-admin\/admin-ajax.php', { \n\t\t\t\t\t\t\tmethod: 'POST', \n\t\t\t\t\t\t\tbody: fd, \n\t\t\t\t\t\t\tcredentials: 'same-origin', \n\t\t\t\t\t\t\tcache: 'no-store', \n\t\t\t\t\t\t\theaders: { 'Cache-Control': 'no-cache' } \n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (resp.ok) {\n\t\t\t\t\t\t\tconst plusHTML = await resp.text();\n\t\t\t\t\t\t\tif (plusHTML && plusHTML.trim() !== '' && plusHTML.includes('button-plus-dynamique')) {\n\t\t\t\t\t\t\t\tbtn.outerHTML = plusHTML;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\/\/ Fallback si pas de r\u00e9ponse valide\n\t\t\t\t\t\t\t\tconst buttonText = getLang() === 'en' ? 'Learn more' : 'En savoir plus';\n\t\t\t\t\t\t\t\tbtn.outerHTML = `\n\t\t\t\t\t\t\t\t\t<div class=\"button-plus-dynamique acf-plus\" data-post-id=\"${postId}\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"plus-icon\">\n\t\t\t\t\t\t\t\t\t\t\t<svg width=\"21\" height=\"22\" viewBox=\"0 0 21 22\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"M10.5 1.5V20.5M1 11H20\" stroke=\"#D30C8C\" stroke-width=\"1.56\" stroke-miterlimit=\"10\" stroke-linecap=\"round\"\/>\n\t\t\t\t\t\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t<div class=\"text-arrow\">\n\t\t\t\t\t\t\t\t\t\t\t<span>${buttonText}<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<svg width=\"14\" height=\"13\" viewBox=\"0 0 14 13\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\t\t\t\t\t\t\t\t\t\t\t\t<path d=\"M13.6998 6.80031L8.49413 12.0059C8.41448 12.0856 8.30645 12.1303 8.19381 12.1303C8.08116 12.1303 7.97313 12.0856 7.89348 12.0059C7.81383 11.9263 7.76908 11.8183 7.76908 11.7056C7.76908 11.593 7.81383 11.4849 7.89348 11.4053L12.3743 6.92445L0.585584 6.92445C0.475604 6.92057 0.371424 6.87415 0.294992 6.79497C0.218561 6.71579 0.175845 6.61004 0.175845 6.49999C0.175845 6.38994 0.218561 6.28419 0.294992 6.20501C0.371424 6.12583 0.475605 6.07941 0.585586 6.07553L12.3743 6.07553L7.89348 1.59469C7.81383 1.51504 7.76908 1.40701 7.76908 1.29436C7.76908 1.18172 7.81383 1.07369 7.89348 0.99404C7.97313 0.914389 8.08116 0.869641 8.19381 0.869641C8.30645 0.869641 8.41448 0.914389 8.49413 0.99404L13.6998 6.19967C13.7794 6.27932 13.8242 6.38735 13.8242 6.49999C13.8242 6.61263 13.7794 6.72066 13.6998 6.80031Z\" fill=\"#D30C8C\"\/>\n\t\t\t\t\t\t\t\t\t\t\t<\/svg>\n\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tasync function renderGrid(posts) {\n\t\t\t\tswiperContainer.style.display = \"none\";\n\t\t\t\tgridEl.style.display = \"grid\";\n\t\t\t\t\n\t\t\t\tconst totalCards = posts.length;\n\t\t\t\tconst cardsHTML = await Promise.all(posts.map(p => makeCardHTML(p, totalCards)));\n\t\t\t\tconst finalHTML = cardsHTML.join(\"\");\n\t\t\t\t\n\t\t\t\tgridEl.innerHTML = finalHTML;\n\n\t\t\t\tgridEl.className = \"acf-event-feat-grid\";\n\t\t\t\t\n\t\t\t\t\/\/ Logique sp\u00e9ciale UNIQUEMENT pour les pages de publications\n\t\t\t\tconst isPublications = window.location.pathname.includes('\/publications') || \n\t\t\t\t\twindow.location.pathname.includes('\/en\/publications');\n\t\t\t\t\n\t\t\t\tif (isPublications) {\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Debug du carrousel - essayer plusieurs fois\n\t\t\t\t\tconst debugSwiper = () => {\n\t\t\t\t\t\tconst swiperContainer = app.querySelector('.acf-event-feat-swiper');\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (swiperContainer) {\n\t\t\t\t\t\t\tconst cards = swiperContainer.querySelectorAll('.acf-card');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (cards.length > 0) {\n\t\t\t\t\t\t\t\tconst firstCard = cards[0];\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tconst imgContainer = firstCard.querySelector('.acf-img-container');\n\t\t\t\t\t\t\t\tif (imgContainer) {\n\t\t\t\t\t\t\t\t\t\/\/ Image container exists\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tconst body = firstCard.querySelector('.acf-body');\n\t\t\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\t\t\/\/ Body exists\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Essayer plusieurs fois avec des d\u00e9lais diff\u00e9rents\n\t\t\t\t\tsetTimeout(debugSwiper, 1000);\n\t\t\t\t\tsetTimeout(debugSwiper, 3000);\n\t\t\t\t\tsetTimeout(debugSwiper, 5000);\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Debug suppl\u00e9mentaire pour v\u00e9rifier si le carrousel existe\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst allElements = app.querySelectorAll('*');\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst swiperElements = app.querySelectorAll('[class*=\"swiper\"]');\n\t\t\t\t\t\tswiperElements.forEach((el, index) => {\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst cardElements = app.querySelectorAll('.acf-card');\n\t\t\t\t\t\tcardElements.forEach((el, index) => {\n\t\t\t\t\t\t});\n\t\t\t\t\t}, 2000);\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Debug final pour v\u00e9rifier l'\u00e9tat complet\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst grid = app.querySelector('.acf-event-feat-grid');\n\t\t\t\t\t\tif (grid) {\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tconst swiper = app.querySelector('.acf-event-feat-swiper');\n\t\t\t\t\t\tif (swiper) {\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 4000);\n\t\t\t\t\t\n\t\t\t\t\tconst totalCards = posts.length;\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Debug: v\u00e9rifier les posts et leurs images\n\t\t\t\t\t\n\t\t\t\t\tconst cardsWithImages = posts.filter(p => p.featured_media && p.featured_media > 0).length;\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Debug suppl\u00e9mentaire pour v\u00e9rifier la d\u00e9tection des images\n\t\t\t\t\tconst cardsWithoutImages = totalCards - cardsWithImages;\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\/\/ Ajouter des classes CSS selon le nombre de cards et la pr\u00e9sence d'images\n\t\t\t\t\tif (totalCards === 1 && cardsWithImages === 1) {\n\t\t\t\t\t\t\/\/ 1 card avec image : layout horizontal sur desktop\/tablette, vertical sur mobile\n\t\t\t\t\t\tgridEl.classList.add(\"one-card\", \"with-image\");\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Les styles CSS s'appliquent automatiquement via les classes\n\t\t\t\t\t} else if (totalCards === 1 && cardsWithoutImages === 1) {\n\t\t\t\t\t\t\/\/ 1 card sans image : layout vertical avec hauteur min\n\t\t\t\t\t\tgridEl.classList.add(\"one-card\", \"without-image\");\n\t\t\t\t\t\t\n\t\t\t\t\t\t\/\/ Appliquer les styles inline pour forcer l'application\n\t\t\t\t\t\tconst card = gridEl.querySelector('.acf-card');\n\t\t\t\t\t\tif (card) {\n\t\t\t\t\t\t\tcard.style.minHeight = '200px';\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (totalCards === 2) {\n\t\t\t\t\t\t\/\/ 2 cards : layout grille standard\n\t\t\t\t\t\tgridEl.classList.add(\"two-cards\");\n\t\t\t\t\t\tgridEl.style.gridTemplateColumns = 'repeat(2, 1fr)';\n\t\t\t\t\t} else if (totalCards === 3) {\n\t\t\t\t\t\t\/\/ 3 cards : layout grille standard\n\t\t\t\t\t\tgridEl.classList.add(\"three-cards\");\n\t\t\t\t\t\tgridEl.style.gridTemplateColumns = 'repeat(3, 1fr)';\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\/\/ Plus de 3 cards : layout grille standard\n\t\t\t\t\t\tgridEl.classList.add(\"multiple-cards\");\n\t\t\t\t\t\tgridEl.style.gridTemplateColumns = 'repeat(3, 1fr)';\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\/\/ Logique ORIGINALE pour toutes les autres pages (inchang\u00e9e)\n\t\t\t\t\tif (posts.length === 1) gridEl.classList.add(\"one-card\");\n\t\t\t\t\telse if (posts.length === 2) gridEl.classList.add(\"two-cards\");\n\t\t\t\t\telse if (posts.length === 3) gridEl.classList.add(\"three-cards\");\n\t\t\t\t}\n\n\t\t\t\t\/\/ Ex\u00e9cuter hydrateDynamicButtons pour toutes les pages\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (isPublications) {\n\t\t\t\t\t\t\/\/ Version sp\u00e9ciale pour les publications qui ne remplace pas le contenu\n\t\t\t\t\t\thydrateDynamicButtonsForPublications(gridEl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thydrateDynamicButtons(gridEl);\n\t\t\t\t\t}\n\t\t\t\t}, 50);\n\t\t\t}\n\n\t\t\tasync function renderSwiper(posts, variantClass) {\n\t\t\t\tgridEl.style.display = \"none\";\n\t\t\t\tgridEl.innerHTML = \"\";\n\t\t\t\tdestroySwiper();\n\t\t\t\tswiperContainer.style.display = \"block\";\n\t\t\t\tswiperContainer.className = \"acf-event-feat-swiper swiper\";\n\t\t\t\tif (variantClass) swiperContainer.classList.add(variantClass);\n\t\t\t\t\n\t\t\t\t\/\/ V\u00e9rifier si c'est une page de publications\n\t\t\t\tconst isPublications = window.location.pathname.includes('\/publications') || \n\t\t\t\t\twindow.location.pathname.includes('\/en\/publications');\n\n\t\t\t\tconst totalCards = posts.length;\n\t\t\t\tconst cardsHTML = await Promise.all(posts.map(p => makeCardHTML(p, totalCards)));\n\t\t\t\tswiperWrapper.innerHTML = cardsHTML.map(html => `<div class=\"swiper-slide\">${html}<\/div>`).join(\"\");\n\n\t\t\t\tlet config = {\n\t\t\t\t\tloop:false, freeMode:false, slidesPerView:1, spaceBetween:20, speed:500,\n\t\t\t\t\tcenteredSlides:false, centeredSlidesBounds:false, observer:true, observeParents:true,\n\t\t\t\t\tpagination:{ el: swiperContainer.querySelector('.swiper-pagination'), clickable:true, type:'bullets' }\n\t\t\t\t};\n\t\t\t\tif (variantClass === 'tablet-3') { config.slidesPerView = 2; }\n\t\t\t\tif (variantClass === 'mobile-2' || variantClass === 'mobile-3') { config.slidesPerView = 1; }\n\n\t\t\t\tswiper = new Swiper(swiperContainer, config);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (swiper) { swiper.update(); swiper.updateSlides(); }\n\t\t\t\t\tsetTimeout(() => hydrateDynamicButtons(swiperContainer), 50);\n\t\t\t\t}, 100);\n\t\t\t}\n\n\t\t\tfunction hydrateDynamicButtons(rootEl) {\n\t\t\t\trootEl.querySelectorAll(\"[data-post-id]\").forEach((container) => {\n\t\t\t\t\tif (container._loaded) return;\n\t\t\t\t\tcontainer._loaded = true;\n\t\t\t\t\tconst postId = container.dataset.postId;\n\t\t\t\t\tconst text = encodeURIComponent(LABELS.learnMore);\n\t\t\t\t\tfetch(\"\/wp-admin\/admin-ajax.php\", {\n\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\theaders: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\n\t\t\t\t\t\tbody: `action=get_button_plus_dynamique&post_id=${postId}&text=${text}&custom_class=acf-button-plus&lang=${lang}`,\n\t\t\t\t\t})\n\t\t\t\t\t\t.then((r) => r.text())\n\t\t\t\t\t\t.then((html) => {\n\t\t\t\t\t\t\t\/\/ V\u00e9rifier si c'est une page de publications\n\t\t\t\t\t\t\tconst isPublications = window.location.pathname.includes('\/publications') || \n\t\t\t\t\t\t\t\twindow.location.pathname.includes('\/en\/publications');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (isPublications) {\n\t\t\t\t\t\t\t\t\/\/ Pour les publications, remplacer seulement le bouton, pas tout le contenu\n\t\t\t\t\t\t\t\tconst buttonContainer = container.querySelector('.acf-plus, .acf-plus-holder');\n\t\t\t\t\t\t\t\tif (buttonContainer) {\n\t\t\t\t\t\t\t\t\tbuttonContainer.innerHTML = html;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontainer.innerHTML = html;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\/\/ Pour les autres pages, comportement original\n\t\t\t\t\t\t\t\tcontainer.innerHTML = html;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tconst card = container.closest(\".acf-card\");\n\t\t\t\t\t\t\tconst button = container.querySelector(\".button-plus-dynamique\");\n\t\t\t\t\t\t\tif (card && button) {\n\t\t\t\t\t\t\t\tcard.addEventListener(\"mouseenter\", () => button.classList.add(\"hover\"));\n\t\t\t\t\t\t\t\tcard.addEventListener(\"mouseleave\", () => button.classList.remove(\"hover\"));\n\t\t\t\t\t\t\t\tbutton.style.pointerEvents = \"none\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.catch(() => { \n\t\t\t\t\t\t\tconst isPublications = window.location.pathname.includes('\/publications') || \n\t\t\t\t\t\t\t\twindow.location.pathname.includes('\/en\/publications');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tif (isPublications) {\n\t\t\t\t\t\t\t\tconst buttonContainer = container.querySelector('.acf-plus, .acf-plus-holder');\n\t\t\t\t\t\t\t\tif (buttonContainer) {\n\t\t\t\t\t\t\t\t\tbuttonContainer.innerHTML = `<button class=\"fallback-button\">${LABELS.learnMore}<\/button>`;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcontainer.innerHTML = `<button class=\"fallback-button\">${LABELS.learnMore}<\/button>`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontainer.innerHTML = `<button class=\"fallback-button\">${LABELS.learnMore}<\/button>`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tasync function decideAndRender(posts) {\n\t\t\t\tconst w = window.innerWidth;\n\t\t\t\tif (w >= 1024) return await renderGrid(posts);\n\t\t\t\tif (w >= 768) return (posts.length <= 2) ? await renderGrid(posts) : await renderSwiper(posts, 'tablet-3');\n\t\t\t\treturn (posts.length === 1) ? await renderGrid(posts) : await renderSwiper(posts, posts.length === 2 ? 'mobile-2' : 'mobile-3');\n\t\t\t}\n\n\t\t\tasync function init() {\n\t\t\t\t\/\/ Ajouter la classe pour les styles sp\u00e9cifiques aux publications d\u00e8s le d\u00e9but\n\t\t\t\tconst isPublications = window.location.pathname.includes('\/publications') || \n\t\t\t\t\twindow.location.pathname.includes('\/en\/publications');\n\t\t\t\t\n\t\t\t\tif (isPublications) {\n\t\t\t\t\tapp.classList.add(\"acf-publications-page\");\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst posts = await fetchPosts();\n\t\t\t\tif (posts.length > 0) { await decideAndRender(posts); }\n\t\t\t\telse { gridEl.innerHTML = LABELS.noContent ? `<p>${LABELS.noContent}<\/p>` : ''; }\n\t\t\t}\n\n\t\t\tlet resizeTimeout;\n\t\t\twindow.addEventListener('resize', () => {\n\t\t\t\tclearTimeout(resizeTimeout);\n\t\t\t\tresizeTimeout = setTimeout(async () => {\n\t\t\t\t\tconst posts = await fetchPosts();\n\t\t\t\t\tif (posts.length > 0) { await decideAndRender(posts); }\n\t\t\t\t}, 250);\n\t\t\t});\n\n\t\t\tinit();\n\t\t});\n\t});\n\t<\/script>\n\t<\/div>\n\t\t\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-f963b33 e-flex e-con-boxed e-con e-parent\" data-id=\"f963b33\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b11d651 elementor-widget elementor-widget-shortcode\" data-id=\"b11d651\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"evenements-archive-app\" data-cpt=\"evenement\" data-lang=\"en\">\n    <div class=\"evenements-archive-header\">\n        <h2 class=\"evenements-archive-title\">Every Events<\/h2>\n        <div class=\"evenements-archive-filters-recherche\">\n            <div class=\"evenements-archive-filters\">\n                <input type=\"text\" class=\"evenements-search\" placeholder=\"Search...\">\n                <div class=\"evenements-dropdown evenements-format-dropdown\">\n                <div class=\"evenements-dropdown-trigger\">\n                    <span class=\"evenements-dropdown-text\">Format<\/span>\n                    <svg class=\"evenements-dropdown-arrow\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\"><path d=\"M1 0.857143L5.33333 5.5L10 0.5\" stroke=\"#323332\"\/><\/svg>\n                <\/div>\n                <div class=\"evenements-dropdown-menu\"><\/div>\n                <\/div>\n                <div class=\"evenements-dropdown evenements-date-dropdown\">\n                <div class=\"evenements-dropdown-trigger\">\n                    <span class=\"evenements-dropdown-text\">Date<\/span>\n                    <svg class=\"evenements-dropdown-arrow\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\"><path d=\"M1 0.857143L5.33333 5.5L10 0.5\" stroke=\"#323332\"\/><\/svg>\n                <\/div>\n                <div class=\"evenements-dropdown-menu\">\n                    <div class=\"evenements-date-custom\">\n                        <div class=\"evenements-date-inputs\">\n                            <div class=\"evenements-date-field\">\n                                <label>From<\/label>\n                                <input type=\"date\" class=\"evenements-date-from\" value=\"\" placeholder=\"jj\/mm\/aaaa\">\n                            <\/div>\n                            <span class=\"evenements-date-separator\">-<\/span>\n                            <div class=\"evenements-date-field\">\n                                <label>To<\/label>\n                                <input type=\"date\" class=\"evenements-date-to\" value=\"\" placeholder=\"jj\/mm\/aaaa\">\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"evenements-date-presets\">\n                        <div class=\"evenements-dropdown-item-date\" data-value=\"7\" data-type=\"preset\"><span class=\"evenements-dropdown-text\">New<\/span><\/div>\n                        <div class=\"evenements-dropdown-item-date\" data-value=\"30\" data-type=\"preset\"><span class=\"evenements-dropdown-text\">Last month<\/span><\/div>\n                        <div class=\"evenements-dropdown-item-date\" data-value=\"364\" data-type=\"preset\"><span class=\"evenements-dropdown-text\">Last year<\/span><\/div>\n                    <\/div>\n                    <div class=\"evenements-date-actions\">\n                        <button class=\"evenements-date-apply\">Apply<\/button>\n                        <button class=\"evenements-date-reset\">Reset<\/button>\n                    <\/div>\n                <\/div>\n                <\/div>\n            <\/div>\n            <button class=\"evenements-submit\">Search<\/button>\n            <\/div>\n        \n    <\/div>\n\n    <div class=\"evenements-archive-list\"><\/div>\n    <div class=\"evenements-load-more-container\" style=\"display: none;\">\n        <button class=\"evenements-load-more\">See more Events<\/button>\n    <\/div>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    document.querySelectorAll('.evenements-archive-app').forEach((app) => {\n        const listEl = app.querySelector('.evenements-archive-list');\n        const loadMoreContainer = app.querySelector('.evenements-load-more-container');\n        const loadMoreBtn = app.querySelector('.evenements-load-more');\n        const submitBtn = app.querySelector('.evenements-submit');\n        const cpt = app.dataset.cpt || 'evenement';\n        const getLang = () => app.dataset.lang || (location.pathname.indexOf('\/en') !== -1 ? 'en' : 'fr');\n\n        let allPosts = [];\n        let filtered = [];\n        let currentPage = 1;\n        const perPage = 6;\n        let selectedFormat = '';\n        let selectedDateFilter = null; \/\/ preset days back\n        let selectedDateFrom = \"\";\n        let selectedDateTo = \"\";\n        const searchInput = app.querySelector('.evenements-search');\n\n        function normalize(str){\n            return (str||\"\")\n                .toString()\n                .normalize('NFD')\n                .replace(\/[\\u0300-\\u036f]\/g,'')\n                .toLowerCase();\n        }\n\n        \/\/ Format date unifi\u00e9 cards : \"16 avril 2026\" (FR) ou \"April 16, 2026\" (EN). Si ville avant : \", \"\n        function formatDisplayDate(dateInput, lang=null) {\n            if (!dateInput) return '';\n            const d = new Date(dateInput);\n            if (!isNaN(d.getTime())) {\n                if ((lang||getLang())==='en') {\n                    return d.toLocaleString('en-US',{ month:'long', day:'2-digit', year:'numeric' });\n                }\n                return d.toLocaleDateString('fr-FR', { day:'2-digit', month:'long', year:'numeric' });\n            }\n            return String(dateInput);\n        }\n\n        function parseFlexibleDate(e) {\n            if (!e) return null; let d = new Date(e); if (!isNaN(d.getTime())) return d;\n            const str = String(e).toLowerCase().replace(\/\\.\/g,'').trim();\n            const m = str.match(\/(\\d{1,2})\\s+([a-z\u00e9\u00fb\u00ee\u00f4\u00e0\u00e8\u00f9\u00e7]+)\\s+(\\d{4})\/i);\n            if (m) {\n                const day = parseInt(m[1],10); const year = parseInt(m[3],10);\n                const names = ['janvier','f\u00e9vrier','fevrier','mars','avril','mai','juin','juillet','ao\u00fbt','aout','septembre','octobre','novembre','d\u00e9cembre','decembre','jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec','january','february','march','april','may','june','july','august','september','october','november','december'];\n                const idx = names.indexOf(m[2]);\n                const map = {0:0,1:1,2:1,3:2,4:3,5:4,6:5,7:6,8:7,9:8,10:9,11:10,12:11,13:11,14:0,15:1,16:2,17:3,18:4,19:5,20:6,21:7,22:8,23:9,24:10,25:11,26:0,27:1,28:2,29:3,30:4,31:5,32:6,33:7,34:8,35:9,36:10,37:11};\n                if (idx>-1) { const month = map[idx]; const nd = new Date(year, month, day); if (!isNaN(nd.getTime())) return nd; }\n            }\n            return null;\n        }\n\n        function getDateParts(dateInput) {\n            const lang = getLang();\n            let d = parseFlexibleDate(dateInput);\n            if (!d) return null;\n            d = new Date(d.getFullYear(), d.getMonth(), d.getDate());\n            const locale = lang==='en' ? 'en-US' : 'fr-FR';\n            let monthAbbrev = d.toLocaleString(locale, { month:'short' }).toUpperCase().replace(\/\\.\/g,'');\n            const dayNumber = d.getDate();\n            let weekdayAbbrev = d.toLocaleString(locale, { weekday:'short' }).replace(\/\\.\/g,'');\n            if (locale==='fr-FR') weekdayAbbrev = weekdayAbbrev.charAt(0).toUpperCase()+weekdayAbbrev.slice(1);\n            return { monthAbbrev, dayNumber, weekdayAbbrev };\n        }\n\n        async function getPostImage(post) {\n            if (post._embedded && post._embedded[\"wp:featuredmedia\"] && post._embedded[\"wp:featuredmedia\"][0]) {\n                const media = post._embedded[\"wp:featuredmedia\"][0];\n                return media.source_url || media.guid?.rendered || media.url || '';\n            }\n            if (post.featured_media) {\n                try {\n                    const ts = Date.now();\n                    const r = await fetch(`\/wp-json\/wp\/v2\/media\/${post.featured_media}?_cb=${ts}`, { credentials:'same-origin' });\n                    const m = await r.json();\n                    return m.source_url || '';\n                } catch(_) { return ''; }\n            }\n            return '';\n        }\n\n        async function getPostCategories(post) {\n            if (!post.categories || post.categories.length===0) return [];\n            try {\n                const names = await Promise.all(post.categories.map(async (id)=>{\n                    if (id===1 || id===84) return null; \/\/ uncategorized\n                    const ts = Date.now();\n                    const resp = await fetch(`\/wp-json\/wp\/v2\/categories\/${id}?lang=${getLang()}&_cb=${ts}`, { credentials:'same-origin' });\n                    if (!resp.ok) return null; const c = await resp.json(); return c.name;\n                }));\n                return names.filter(Boolean);\n            } catch(_) { return []; }\n        }\n\n        \/\/ City cache and fetch (matches logic in 'ici')\n        const cityCache = new Map();\n        async function getPostCityCached(post, forceLang = null) {\n            const lang = forceLang || getLang();\n            const cacheKey = post.id;\n            if (cityCache.has(cacheKey)) return cityCache.get(cacheKey);\n            try {\n                const ts = Date.now();\n                const url = `\/wp-json\/wp\/v2\/${cpt}\/${post.id}?lang=${lang}&acf_format=standard&_cb=${ts}`;\n                const resp = await fetch(url, { cache: 'no-store', headers: { 'Cache-Control': 'no-cache' }, credentials: 'same-origin' });\n                if (!resp.ok) { cityCache.set(cacheKey, \"\"); return \"\"; }\n                const data = await resp.json();\n                const city1 = (data?.acf?.['ville_de_levenement'] ?? \"\");\n                const city2 = city1 || (data?.acf?.['lieu_de_levenement'] ?? \"\");\n                const ville = (typeof city2 === 'string') ? city2.trim() : (city2?.rendered || city2?.name || \"\").toString().trim();\n                cityCache.set(cacheKey, ville);\n                return ville;\n            } catch (_) { cityCache.set(cacheKey, \"\"); return \"\"; }\n        }\n\n        async function getEventDate(post) {\n            try {\n                const ts = Date.now();\n                const url = `\/wp-json\/wp\/v2\/${cpt}\/${post.id}?lang=${getLang()}&acf_format=standard&_cb=${ts}`;\n                const resp = await fetch(url, { credentials:'same-origin' });\n                if (resp.ok) {\n                    const data = await resp.json();\n                    const val = data?.acf?.date_devenement || post.date;\n                    return val || post.date;\n                }\n            } catch(_) {}\n            return post.date;\n        }\n\n        async function fetchPosts() {\n            listEl.innerHTML = '';\n            const ts = Date.now();\n            const base = `\/wp-json\/wp\/v2\/${cpt}?per_page=100&acf_format=standard&_embed&_cb=${ts}`;\n            const url = getLang()==='en' ? `${base}&lang=en` : base;\n            const resp = await fetch(url, { credentials:'same-origin' });\n            const posts = resp.ok ? await resp.json() : [];\n            allPosts = posts.filter(p => (p.categories||[]).some(id => id!==1 && id!==84));\n            await populateFormats();\n            await applyFilters();\n        }\n\n        async function populateFormats() {\n            const cont = app.querySelector('.evenements-format-dropdown .evenements-dropdown-menu');\n            if (!cont) return;\n            const formats = new Set();\n            for (const p of allPosts) {\n                const cats = await getPostCategories(p); cats.forEach(c=>c&&formats.add(c));\n            }\n            const resetText = getLang()==='en' ? 'Reset' : 'R\u00e9initialiser';\n            const items = [`<div class=\"evenements-dropdown-item\" data-value=\"\"><span class=\"evenements-dropdown-text\">${resetText}<\/span><svg class=\"evenements-radio\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\"><circle cx=\"7.5\" cy=\"8\" r=\"7\" stroke=\"#323332\"\/><\/svg><\/div>`]\n                .concat(Array.from(formats).map(f=>`\n                    <div class=\"evenements-dropdown-item\" data-value=\"${f}\">\n                        <span class=\"evenements-dropdown-text\">${f}<\/span>\n                        <svg class=\"evenements-radio\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\"><circle cx=\"7.5\" cy=\"8\" r=\"7\" stroke=\"#323332\"\/><\/svg>\n                    <\/div>`));\n            cont.innerHTML = items.join('');\n            syncFormatSelection();\n        }\n\n        function syncFormatSelection() {\n            const cont = app.querySelector('.evenements-format-dropdown .evenements-dropdown-menu');\n            if (!cont) return;\n            const val = selectedFormat || '';\n            cont.querySelectorAll('.evenements-dropdown-item').forEach(el=>{\n                const ev = el.getAttribute('data-value') || '';\n                el.classList.toggle('selected', ev === val);\n            });\n            ddText('.evenements-format-dropdown', val || (getLang()==='en'?'Format':'Format'));\n        }\n\n        function syncDateSelection() {\n            const cont = app.querySelector('.evenements-date-dropdown .evenements-dropdown-menu');\n            if (!cont) return;\n            if (selectedDateFilter && selectedDateFilter !== 'custom') {\n                cont.querySelectorAll('.evenements-dropdown-item-date').forEach(el=>{\n                    el.classList.toggle('selected', el.getAttribute('data-value') === String(selectedDateFilter));\n                });\n            } else {\n                cont.querySelectorAll('.evenements-dropdown-item-date').forEach(el=> el.classList.remove('selected'));\n            }\n        }\n\n        async function applyFilters() {\n            let results = [...allPosts];\n            const q = normalize(searchInput?.value?.trim() || '');\n            if (q) {\n                results = results.filter((p)=>{\n                    const title = normalize(p.title?.rendered||'');\n                    const excerpt = normalize(p.excerpt?.rendered||'');\n                    return title.includes(q) || excerpt.includes(q);\n                });\n            }\n            if (selectedFormat) {\n                const filtered = [];\n                for (const p of results) {\n                    const cats = await getPostCategories(p);\n                    if (cats.includes(selectedFormat)) filtered.push(p);\n                }\n                results = filtered;\n            }\n\n            if (selectedDateFilter === 'custom' && selectedDateFrom && selectedDateTo) {\n                const fromDate = new Date(selectedDateFrom); fromDate.setHours(0,0,0,0);\n                const toDate = new Date(selectedDateTo); toDate.setHours(23,59,59,999);\n                const filteredByRange = [];\n                for (const p of results) {\n                    const ev = await getEventDate(p); const d = parseFlexibleDate(ev) || new Date(ev);\n                    if (!isNaN(d.getTime()) && d>=fromDate && d<=toDate) filteredByRange.push(p);\n                }\n                results = filteredByRange;\n            } else if (selectedDateFilter && selectedDateFilter !== 'custom') {\n                \/\/ Presets: align with \"ici\" intention for recency, but exclude future events\n                const days = parseInt(selectedDateFilter,10);\n                const nowEnd = new Date(); nowEnd.setHours(23,59,59,999);\n                const cutoff = new Date(); cutoff.setHours(0,0,0,0); cutoff.setDate(cutoff.getDate() - days);\n                const filteredByPreset = [];\n                for (const p of results) {\n                    const ev = await getEventDate(p); const d = parseFlexibleDate(ev) || new Date(ev);\n                    if (!isNaN(d.getTime()) && d>=cutoff && d<=nowEnd) filteredByPreset.push(p);\n                }\n                results = filteredByPreset;\n            }\n\n            \/\/ sort: future events first (soonest first), then past events (most recent first)\n            const withDates = await Promise.all(results.map(async (p)=>({ post:p, d: parseFlexibleDate(await getEventDate(p)) || new Date(await getEventDate(p)) })));\n            const todayStart = new Date(); todayStart.setHours(0,0,0,0);\n            const toDayOnly = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());\n            const future = withDates.filter(({d}) => !isNaN(d.getTime()) && toDayOnly(d) >= todayStart);\n            const past = withDates.filter(({d}) => !isNaN(d.getTime()) && toDayOnly(d) < todayStart);\n            const noDate = withDates.filter(({d}) => isNaN(d.getTime()));\n            future.sort((a,b)=>a.d-b.d);\n            past.sort((a,b)=>b.d-a.d);\n            filtered = [...future, ...past, ...noDate].map(x=>x.post);\n            currentPage = 1;\n            render();\n        }\n\n        async function render(append=false) {\n            if (!append) listEl.innerHTML='';\n            const slice = filtered.slice(0, currentPage*perPage);\n            if (!append && slice.length === 0) {\n                const msg = getLang()==='en' ? 'No event found' : 'Aucun \u00e9v\u00e9nement trouv\u00e9';\n                listEl.innerHTML = `<p>${msg}<\/p>`;\n                if (loadMoreContainer) loadMoreContainer.style.display='none';\n                return;\n            }\n            const html = await Promise.all(slice.map(async (p)=>{\n                const img = await getPostImage(p);\n                const cats = await getPostCategories(p);\n                const ev = await getEventDate(p);\n                const parts = getDateParts(ev);\n                const formatted = formatDisplayDate(ev);\n                const ville = await getPostCityCached(p);\n                const villeHTML = ville ? `<div class=\"evenements-ville\">${ville}<\/div>` : '';\n                const dateHTML = formatted ? `<div class=\"evenements-date\">${formatted}<\/div>` : '';\n                const eventDateObj = parseFlexibleDate(ev) || new Date(ev);\n                const todayStart = new Date(); todayStart.setHours(0,0,0,0);\n                const isPast = eventDateObj && !isNaN(eventDateObj.getTime()) && (new Date(eventDateObj.getFullYear(), eventDateObj.getMonth(), eventDateObj.getDate()) < todayStart);\n                const pastLabel = getLang()==='en' ? 'Event passed' : '\u00c9v\u00e9nement pass\u00e9';\n                const overlayHTML = isPast ? `<div class=\"evenements-card-overlay\"><span class=\"evenements-card-overlay-text\">${pastLabel}<\/span><\/div>` : '';\n                \/\/ Build excerpt like in 'ici' (simple rendering of post excerpt)\n                let excerptHTML = '';\n                if (p.excerpt && p.excerpt.rendered) {\n                    excerptHTML = `<div class=\"evenements-excerpt\">${p.excerpt.rendered}<\/div>`;\n                }\n                \/\/ Dynamic plus button (scoped)\n                const buttonText = getLang()==='en' ? 'Learn more' : 'En savoir plus';\n                const plusHTML = `\n                    <div class=\\\"button-plus-dynamique evenements-plus\\\" data-post-id=\\\"${p.id}\\\"> \n                        <div class=\\\"plus-icon\\\">\\n                            <svg width=\\\"21\\\" height=\\\"22\\\" viewBox=\\\"0 0 21 22\\\" fill=\\\"none\\\" xmlns=\\\"http:\/\/www.w3.org\/2000\/svg\\\">\\n                                <path d=\\\"M10.5 1.5V20.5M1 11H20\\\" stroke=\\\"#D30C8C\\\" stroke-width=\\\"1.56\\\" stroke-miterlimit=\\\"10\\\" stroke-linecap=\\\"round\\\"\/>\\n                            <\/svg>\\n                        <\/div>\n                        <div class=\\\"text-arrow\\\">\\n                            <span>${buttonText}<\/span>\\n                            <svg width=\\\"14\\\" height=\\\"13\\\" viewBox=\\\"0 0 14 13\\\" fill=\\\"none\\\" xmlns=\\\"http:\/\/www.w3.org\/2000\/svg\\\">\\n                                <path d=\\\"M13.6998 6.80031L8.49413 12.0059C8.41448 12.0856 8.30645 12.1303 8.19381 12.1303C8.08116 12.1303 7.97313 12.0856 7.89348 12.0059C7.81383 11.9263 7.76908 11.8183 7.76908 11.7056C7.76908 11.593 7.81383 11.4849 7.89348 11.4053L12.3743 6.92445L0.585584 6.92445C0.475604 6.92057 0.371424 6.87415 0.294992 6.79497C0.218561 6.71579 0.175845 6.61004 0.175845 6.49999C0.175845 6.38994 0.218561 6.28419 0.294992 6.20501C0.371424 6.12583 0.475605 6.07941 0.585586 6.07553L12.3743 6.07553L7.89348 1.59469C7.81383 1.51504 7.76908 1.40701 7.76908 1.29436C7.76908 1.18172 7.81383 1.07369 7.89348 0.99404C7.97313 0.914389 8.08116 0.869641 8.19381 0.869641C8.30645 0.869641 8.41448 0.914389 8.49413 0.99404L13.6998 6.19967C13.7794 6.27932 13.8242 6.38735 13.8242 6.49999C13.8242 6.61263 13.7794 6.72066 13.6998 6.80031Z\\\" fill=\\\"#D30C8C\\\"\/>\\n                            <\/svg>\\n                        <\/div>\n                    <\/div>`;\n                let imageHTML = '';\n                if (img) {\n                    imageHTML = `<img decoding=\"async\" class=\"evenements-img\" src=\"${img}\" alt=\"${p.title?.rendered||''}\">`+\n                        (parts ? `\n                        <div class=\"evenements-date-badge\">\n                            <div class=\"evenements-date-badge-top\"><span class=\"evenements-date-badge-month\">${parts.monthAbbrev}<\/span><\/div>\n                            <div class=\"evenements-date-badge-bottom\">\n                                <span class=\"evenements-date-badge-day\">${parts.dayNumber}<\/span>\n                                <span class=\"evenements-date-badge-week\">${parts.weekdayAbbrev}<\/span>\n                            <\/div>\n                        <\/div>` : '');\n                } else {\n                    imageHTML = `<div class=\"evenements-img-placeholder\"><\/div>`;\n                }\n\n                const tags = cats.length ? `<div class=\\\"evenements-tags\\\">${cats.map(c=>`<span class=\"evenements-chip\">${c}<\/span>`).join('')}<\/div>` : '';\n                return `\n                <div class=\"evenements-card ${isPast ? 'evenements-card--past' : ''}\" data-post-id=\"${p.id}\" onclick=\"window.location.href='${p.link}'\" tabindex=\"0\" aria-label=\"${(p.title?.rendered||'').replace(\/\"\/g,'&quot;')}\">\n                    ${overlayHTML}\n                    <div class=\"evenements-img-container\">${imageHTML}<\/div>\n                    <div class=\"evenements-body\">\n                        <div class=\"evenements-ville-date\">${villeHTML}${dateHTML}<\/div>\n                        <div class=\"evenements-title\">${p.title?.rendered||''}<\/div>\n                        ${excerptHTML}\n                        <div class=\\\"evenements-plus-tags\\\">${tags}<div class=\\\"evenements-plus-holder\\\" data-post-id=\\\"${p.id}\\\">${plusHTML}<\/div><\/div>\n                    <\/div>\n                <\/div>`;\n            }));\n            listEl.innerHTML = html.join('');\n            if (loadMoreContainer) {\n                if (filtered.length > currentPage*perPage) { loadMoreContainer.style.display='block'; loadMoreBtn.disabled=false; }\n                else { loadMoreContainer.style.display='none'; }\n            }\n        }\n\n        \/\/ dropdown interactions\n        app.addEventListener('click', (e)=>{\n            const trigger = e.target.closest('.evenements-dropdown-trigger');\n            if (trigger && app.contains(trigger)) {\n                const dd = trigger.closest('.evenements-dropdown');\n                const was = dd.classList.contains('active');\n                app.querySelectorAll('.evenements-dropdown').forEach(d=>d.classList.remove('active'));\n                if (!was) dd.classList.add('active');\n                \/\/ ensure selected state reflects current values when opening\n                if (dd.classList.contains('evenements-format-dropdown')) syncFormatSelection();\n                if (dd.classList.contains('evenements-date-dropdown')) syncDateSelection();\n                return;\n            }\n            const item = e.target.closest('.evenements-dropdown-item');\n            if (item) {\n                selectedFormat = item.dataset.value || '';\n                ddText('.evenements-format-dropdown', selectedFormat || (getLang()==='en'?'Format':'Format'));\n                applyFilters();\n                syncFormatSelection();\n                return;\n            }\n            const preset = e.target.closest('.evenements-dropdown-item-date');\n            if (preset) {\n                selectedDateFilter = preset.dataset.value;\n                const labelText = preset.querySelector('.evenements-dropdown-text')?.textContent || (getLang()==='en' ? 'Date' : 'Date');\n                ddText('.evenements-date-dropdown', labelText);\n                \/\/ mark active\n                app.querySelectorAll('.evenements-dropdown-item-date').forEach(el=>{\n                    el.classList.toggle('selected', el===preset);\n                });\n                applyFilters();\n                return;\n            }\n        });\n\n        function ddText(sel, text){ const el = app.querySelector(`${sel} .evenements-dropdown-text`); if (el) el.textContent = text; }\n\n        if (loadMoreBtn) loadMoreBtn.addEventListener('click', ()=>{ currentPage++; render(true); });\n\n        if (searchInput) {\n            searchInput.addEventListener('input', ()=>{ applyFilters(); });\n        }\n\n        if (submitBtn) {\n            submitBtn.addEventListener('click', ()=>{ applyFilters(); });\n        }\n\n        \/\/ Date filter interactions\n        app.addEventListener('click', (e) => {\n            const dateItem = e.target.closest('.evenements-dropdown-item-date');\n            if (dateItem) {\n                const value = dateItem.dataset.value;\n                const type = dateItem.dataset.type;\n                if (type === 'preset') {\n                    selectedDateFilter = value;\n                    selectedDateFrom = \"\";\n                    selectedDateTo = \"\";\n                }\n                app.querySelectorAll('.evenements-dropdown-item-date').forEach(item => {\n                    item.classList.toggle('selected', item.dataset.value === value);\n                });\n            }\n        });\n\n        const applyBtn = app.querySelector('.evenements-date-apply');\n        const resetBtn = app.querySelector('.evenements-date-reset');\n        if (applyBtn) {\n            applyBtn.addEventListener('click', () => {\n                const fromInput = app.querySelector('.evenements-date-from');\n                const toInput = app.querySelector('.evenements-date-to');\n                if (fromInput && toInput && fromInput.value && toInput.value) {\n                    selectedDateFilter = 'custom';\n                    selectedDateFrom = fromInput.value;\n                    selectedDateTo = toInput.value;\n                    const lang = getLang();\n                    const fromLabel = fromInput.value;\n                    const toLabel = toInput.value;\n                    const text = lang==='en' ? `From ${fromLabel} - To ${toLabel}` : `Du ${fromLabel} - Au ${toLabel}`;\n                    ddText('.evenements-date-dropdown', text);\n                    applyFilters();\n                }\n            });\n        }\n        if (resetBtn) {\n            resetBtn.addEventListener('click', () => {\n                selectedDateFilter = null;\n                selectedDateFrom = \"\";\n                selectedDateTo = \"\";\n                const fromInput = app.querySelector('.evenements-date-from');\n                const toInput = app.querySelector('.evenements-date-to');\n                if (fromInput) fromInput.value = \"\";\n                if (toInput) toInput.value = \"\";\n                app.querySelectorAll('.evenements-dropdown-item-date').forEach(item => item.classList.remove('selected'));\n                ddText('.evenements-date-dropdown', getLang()==='en' ? 'Date' : 'Date');\n                applyFilters();\n            });\n        }\n\n        \/\/ Force-only for events page: if not on \/evenements or \/en\/events, do nothing\n        const path = location.pathname.toLowerCase();\n        if (!(path.includes('\/evenements') || path.includes('\/en\/events'))) { return; }\n\n        fetchPosts();\n    });\n});\n<\/script>\n\n<style>\n\/* Scope: evenements *\/\n.evenements-archive-title { color:#D30C8C; font-family:\"TikTok Sans\" !important; font-size:32px !important; font-weight:600 !important; margin:0; }\n.evenements-archive-header { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:24px; }\n.evenements-archive-filters-recherche { display:flex; flex:0 0 60%; margin-left:auto; gap:16px; }\n.evenements-archive-filters { display:flex; align-items:center; background:#F5F6F7; border-radius:8px; padding:8px 12px; gap:20px; width:100%; }\n.evenements-search { flex:1; min-width:200px; padding:0 0 0 40px !important; border:none !important; outline:none !important; box-shadow:none !important; border-radius:25px; font-size:14px; color:#323332; background:transparent; -webkit-appearance:none; -moz-appearance:none; appearance:none; background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M18.9881 18.6236L14.1712 13.8067C15.5448 12.227 16.2514 10.1758 16.1421 8.08528C16.0328 5.9948 15.1161 4.02842 13.5852 2.60065C12.0544 1.17287 10.0289 0.395254 7.93592 0.431707C5.8429 0.46816 3.84579 1.31584 2.36557 2.79605C0.885357 4.27627 0.0376792 6.27338 0.00122609 8.3664C-0.035227 10.4594 0.742392 12.4848 2.17016 14.0157C3.59794 15.5466 5.56432 16.4633 7.6548 16.5726C9.74529 16.6819 11.7966 15.9753 13.3762 14.6017L18.1931 19.4186C18.2997 19.5179 18.4407 19.572 18.5865 19.5694C18.7322 19.5669 18.8712 19.5078 18.9743 19.4048C19.0774 19.3017 19.1364 19.1627 19.139 19.017C19.1415 18.8712 19.0874 18.7302 18.9881 18.6236ZM1.15308 8.52106C1.15308 7.14895 1.55996 5.80766 2.32226 4.66679C3.08456 3.52593 4.16805 2.63673 5.43571 2.11165C6.70338 1.58656 8.09828 1.44918 9.44402 1.71686C10.7898 1.98455 12.0259 2.64528 12.9961 3.61551C13.9664 4.58574 14.6271 5.82188 14.8948 7.16762C15.1625 8.51337 15.0251 9.90827 14.5 11.1759C13.9749 12.4436 13.0857 13.5271 11.9448 14.2894C10.804 15.0517 9.46269 15.4586 8.09058 15.4586C6.25133 15.4563 4.48804 14.7247 3.18749 13.4241C1.88694 12.1236 1.15531 10.3603 1.15308 8.52106Z' fill='%23000'\/%3E%3C\/svg%3E\"); background-repeat:no-repeat; background-position:12px center; background-size:16px; }\n.evenements-search:focus { outline:none !important; box-shadow:none !important; border:none !important; }\n.evenements-submit { align-self:center; padding:10px 12px; border:none; border-radius:8px; background:rgba(211,12,140,0.10); color:#D30C8C; font-family:\"TikTok Sans\" !important; font-size:16px !important; font-weight:300 !important; line-height:20px; cursor:pointer; transition:background .3s; white-space:nowrap; flex:0 0 auto; }\n.evenements-submit:hover { background: rgba(211, 12, 140, 0.30); }\n\n.evenements-dropdown { display:flex; position:relative; }\n.evenements-dropdown-trigger {     position: relative; display:flex;    align-items: center; gap: 8px;\n    flex: 0 0 auto;\n    cursor: pointer; }\n.evenements-dropdown-trigger::after { content:''; position:absolute; left:0; right:0; bottom:-2px; height:1px; background:#333; transform:scaleX(0); transition:transform .2s; }\n.evenements-dropdown.active .evenements-dropdown-trigger::after { transform:scaleX(1); }\n.evenements-dropdown-arrow { transition: transform .2s; }\n.evenements-dropdown.active .evenements-dropdown-arrow { transform: rotate(180deg); }\n.evenements-dropdown-menu { position:absolute; top:100%; right:0; background:#ECEFF1; border-radius:12px; padding:16px; margin-top:20px; min-width:250px; opacity:0; visibility:hidden; transform:translateY(-10px); transition:all .2s; z-index:1000; }\n.evenements-dropdown.active .evenements-dropdown-menu { opacity:1; visibility:visible; transform:translateY(0); }\n.evenements-dropdown-item, .evenements-dropdown-item-date { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:10px 12px; border-radius:8px; cursor:pointer; }\n.evenements-dropdown-item:hover { background: rgba(211,12,140,.10); }\n.evenements-dropdown-item-date { background: rgba(211,12,140,.10); }\n.evenements-dropdown-item-date:hover { background: rgba(211,12,140,.30); }\n.evenements-dropdown-item.selected { background: rgba(211,12,140,.10); }\n.evenements-dropdown-item-date.selected { background: rgba(211,12,140,.30); }\n.evenements-dropdown-text { color:#323332; font-family:\"TikTok Sans\" !important; font-size:14px !important; font-weight:300 !important; }\n.evenements-dropdown-item-date .evenements-dropdown-text { text-align:center; flex:1; }\n.evenements-date-helper { color:#607D8B; font-family:\"TikTok Sans\" !important; font-size:12px !important; font-weight:300 !important; margin-top:6px; }\n\n.evenements-date-custom { margin-bottom:16px; }\n.evenements-date-inputs { display:flex; align-items:center; gap:4px; margin-bottom:0; }\n.evenements-date-field { display:flex; flex-direction:column; gap:4px; }\n.evenements-date-field label { color:#323332; font-family:\"TikTok Sans\" !important; font-size:14px !important; font-weight:400 !important; line-height:16px; }\n.evenements-date-field input[type=\"date\"] { padding:10px 12px; border:1px solid #B0BEC5; border-radius:4px; color:#323332; font-family:\"TikTok Sans\" !important; font-size:12px !important; font-weight:400 !important; line-height:14px; background:transparent; }\n.evenements-date-separator { color:#323332; font-size:18px; font-weight:500; margin-top:20px; }\n.evenements-date-presets { margin-bottom:24px; display:flex; gap:8px; flex-direction:column; }\n.evenements-date-actions { display:flex; flex-direction:column; gap:8px; }\n.evenements-date-apply, .evenements-date-reset { padding:12px 16px !important; border:none; border-radius:8px !important; font-family:\"TikTok Sans\" !important; font-size:16px !important; font-weight:300 !important; line-height:20px; cursor:pointer; transition:all .2s; width:100%; }\n.evenements-date-apply { background: rgba(211, 12, 140, 0.10); color:#D30C8C; }\n.evenements-date-apply:hover { background: rgba(211, 12, 140, 0.30); color:#D30C8C; }\n.evenements-date-reset { background: rgba(255, 255, 255, 0.55); color:#D30C8C; }\n.evenements-date-reset:hover { color:#9B0C68; background-color: rgba(255, 255, 255, 0.95); }\n\n.evenements-archive-list { display:grid; grid-template-columns: repeat(3, 1fr); gap:20px; }\n.evenements-card { display:flex; flex-direction:column; background:#F5F6F7; border-radius:12px; box-shadow: 8px 8px 12px 0 rgba(231,231,233,.60) !important; overflow:hidden; cursor:pointer; min-height:380px; transition: box-shadow .3s; }\n.evenements-card:hover { box-shadow: 8px 8px 12px 0 rgba(160,160,167,.50) !important; }\n.evenements-card { position:relative; }\n.evenements-card-overlay { position:absolute; inset:0; background:rgba(0,0,0,.45); border-radius:12px; display:flex; align-items:center; justify-content:center; z-index:15; pointer-events:none; }\n.evenements-card-overlay-text { color:#fff; font-family:\"TikTok Sans\" !important; font-size:18px !important; font-weight:600 !important; text-transform:uppercase; letter-spacing:.05em; text-shadow:0 1px 2px rgba(0,0,0,.3); }\n.evenements-img-container { position:relative; width:100%; display:flex;}\n.evenements-img { width:100%; height:170px !important; object-fit:cover; border-radius:12px 12px 0 0 !important; }\n.evenements-img-placeholder { width:100%; height:170px; background:#E0E0E0; border-radius:12px 12px 0 0; }\n.evenements-body { display:flex; flex-direction:column; gap:8px; padding:16px; }\n.evenements-date { color:#323332; font-family:\"TikTok Sans\" !important; font-size:10px !important; font-weight:400 !important; }\n.evenements-ville-date { display:flex; align-items:center; gap:3px; flex-wrap:wrap; }\n.evenements-ville { color:#323332; font-family:\"TikTok Sans\" !important; font-size:10px !important; font-weight:400 !important; line-height:12px; display:flex; align-items:center; }\n.evenements-ville::after { content: \", \"; } \/* Format unifi\u00e9 : ville, 16 avril 2026 *\/\n.evenements-title { color:#323332; font-family:\"TikTok Sans\" !important; font-size:22px !important; font-weight:600 !important; line-height:24px; }\n.evenements-excerpt { color:#607D8B; font-family:\"TikTok Sans\" !important; font-size:14px !important; font-weight:300 !important; line-height:16px; }\n.evenements-tags { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }\n.evenements-chip { padding:4px 6px; background:#CFD8DC; color:#455A64; border-radius:100px; font-family:\"TikTok Sans\" !important; font-size:10px !important; }\n\n\/* Plus button (scoped) *\/\n.evenements-plus-tags { display:flex; flex-wrap:nowrap; justify-content:space-between; align-items:center; }\n.evenements-plus-holder { display:flex; align-items:center; }\n.evenements-card .button-plus-dynamique { display:inline-block !important; cursor:pointer !important; position:relative !important; pointer-events:auto !important; z-index:10 !important; }\n.evenements-card--past .button-plus-dynamique { z-index:5 !important; }\n.evenements-card .button-plus-dynamique .plus-icon { display:inline-flex !important; align-items:center !important; justify-content:center !important; width:37px !important; height:37px !important; background-color:#FAE6F3 !important; border-radius:8px !important; transition:all .3s ease !important; }\n.evenements-card .button-plus-dynamique .text-arrow { display:none !important; align-items:center !important; gap:8px !important; padding:8px 12px !important; background-color:rgba(211,12,140,.10) !important; border-radius:8px !important; color:#D30C8C !important; font-family:\"TikTok Sans\", sans-serif !important; font-size:14px !important; font-weight:400 !important; white-space:nowrap !important; transition: background-color .3s ease !important; }\n.evenements-card .button-plus-dynamique:hover .plus-icon { display:none !important; }\n.evenements-card .button-plus-dynamique:hover .text-arrow { display:inline-flex !important; background-color:rgba(211,12,140,.30) !important; }\n.evenements-card:hover .button-plus-dynamique .plus-icon { display:none !important; }\n.evenements-card:hover .button-plus-dynamique .text-arrow { display:inline-flex !important; background-color:rgba(211,12,140,.30) !important; }\n.evenements-plus-holder:hover .button-plus-dynamique .plus-icon { display:none !important; }\n.evenements-plus-holder:hover .button-plus-dynamique .text-arrow { display:inline-flex !important; background-color:rgba(211,12,140,.30) !important; }\n.evenements-card .button-plus-dynamique:focus .plus-icon { display:none !important; }\n.evenements-card .button-plus-dynamique:focus .text-arrow { display:inline-flex !important; background-color:rgba(211,12,140,.30) !important; }\n\n\/* Date badge (overlay) *\/\n.evenements-date-badge { position:absolute; top:8px; right:8px; width:52px; border-radius:8px; overflow:hidden; box-shadow:0 2px 6px rgba(0,0,0,.15); z-index:3; }\n.evenements-date-badge-top { border-radius:8px 8px 0 0; background: var(--ui-design-1, #D30C8C); backdrop-filter: blur(20px); display:flex; padding:4px; flex-direction:column; justify-content:center; align-items:center; }\n.evenements-date-badge-bottom { border-radius:0 0 8px 8px; background: var(--ui-design-18, #F5F6F7); display:flex; padding:6px; flex-direction:column; justify-content:center; align-items:center; }\n.evenements-date-badge-month { color:#ECEFF1; font-family:\"TikTok Sans\"; font-size:14px; font-weight:400; line-height:16px; }\n.evenements-date-badge-day { color:#D30C8C; font-family:\"TikTok Sans\"; font-size:18px; font-weight:700; line-height:22px; }\n.evenements-date-badge-week { color:#B0BEC5; font-family:\"TikTok Sans\"; font-size:10px; font-weight:400; line-height:12px; }\n\n.evenements-load-more-container { text-align:center; margin-top:24px; }\n.evenements-load-more { padding:10px 12px !important; border:none; border-bottom:1px solid #323332; background:transparent; color:#323332; border-radius:0 !important; font-family:\"TikTok Sans\" !important; font-size:14px !important; cursor:pointer; }\n.evenements-load-more:hover { border-color:#D30C8C; color:#D30C8C; }\n\n@media (max-width: 992px){ .evenements-archive-list{ grid-template-columns: repeat(2,1fr); } }\n@media (max-width: 768px){ .evenements-archive-list{ grid-template-columns: 1fr; } }\n\n\/* Responsive tweaks to match 'ici' *\/\n@media (max-width: 992px) {\n.evenements-archive-filters { width:85%; }\n.evenements-search { min-width:150px; }\n.evenements-dropdown { width:100px; }\n}\n@media (max-width: 768px) {\n.evenements-archive-filters { flex-direction:column; gap:10px; }\n.evenements-search { min-width:100%; margin-right:0; margin-bottom:5px; }\n.evenements-dropdown { width:100%; }\n.evenements-archive-filters-recherche { margin-left:0; }\n}\n<\/style>\n<\/div>\n\t\t\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>Events Discover the highlights of community life and industry meetings. Bekka Rose | Le Monast\u00e8re \u00a9 Caroline Thibeault<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-860","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Events - En Piste<\/title>\n<meta name=\"description\" content=\"Events: discover the workshops, forums, residencies and meetings of the circus community offered by En Piste.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/enpiste.qc.ca\/en\/events\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Events - En Piste\" \/>\n<meta property=\"og:description\" content=\"Events: discover the workshops, forums, residencies and meetings of the circus community offered by En Piste.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/enpiste.qc.ca\/en\/events\/\" \/>\n<meta property=\"og:site_name\" content=\"En Piste\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/EnPiste1\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-12T22:03:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1707\" \/>\n\t<meta property=\"og:image:height\" content=\"2560\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/enpiste.qc.ca\/en\/events\/\",\"url\":\"https:\/\/enpiste.qc.ca\/en\/events\/\",\"name\":\"Events - En Piste\",\"isPartOf\":{\"@id\":\"https:\/\/enpiste.qc.ca\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/enpiste.qc.ca\/en\/events\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/enpiste.qc.ca\/en\/events\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg\",\"datePublished\":\"2025-07-09T17:41:52+00:00\",\"dateModified\":\"2026-01-12T22:03:41+00:00\",\"description\":\"Events: discover the workshops, forums, residencies and meetings of the circus community offered by En Piste.\",\"breadcrumb\":{\"@id\":\"https:\/\/enpiste.qc.ca\/en\/events\/#breadcrumb\"},\"inLanguage\":\"en-CA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/enpiste.qc.ca\/en\/events\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/enpiste.qc.ca\/en\/events\/#primaryimage\",\"url\":\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg\",\"contentUrl\":\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/enpiste.qc.ca\/en\/events\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/enpiste.qc.ca\/en\/homepage\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Events\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/enpiste.qc.ca\/#website\",\"url\":\"https:\/\/enpiste.qc.ca\/\",\"name\":\"En piste\",\"description\":\"un art vivant, une communaut\u00e9 engag\u00e9e\",\"publisher\":{\"@id\":\"https:\/\/enpiste.qc.ca\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/enpiste.qc.ca\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-CA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/enpiste.qc.ca\/#organization\",\"name\":\"En piste\",\"url\":\"https:\/\/enpiste.qc.ca\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-CA\",\"@id\":\"https:\/\/enpiste.qc.ca\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/10\/Vector.png\",\"contentUrl\":\"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/10\/Vector.png\",\"width\":337,\"height\":93,\"caption\":\"En piste\"},\"image\":{\"@id\":\"https:\/\/enpiste.qc.ca\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/EnPiste1\/\",\"https:\/\/www.linkedin.com\/in\/en-piste-regroupement-national-des-arts-du-cirque-821171144\/\",\"https:\/\/www.instagram.com\/enpistecirque\/?hl=fr-ca\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Events - En Piste","description":"Events: discover the workshops, forums, residencies and meetings of the circus community offered by En Piste.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/enpiste.qc.ca\/en\/events\/","og_locale":"en_US","og_type":"article","og_title":"Events - En Piste","og_description":"Events: discover the workshops, forums, residencies and meetings of the circus community offered by En Piste.","og_url":"https:\/\/enpiste.qc.ca\/en\/events\/","og_site_name":"En Piste","article_publisher":"https:\/\/www.facebook.com\/EnPiste1\/","article_modified_time":"2026-01-12T22:03:41+00:00","og_image":[{"width":1707,"height":2560,"url":"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-scaled.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/enpiste.qc.ca\/en\/events\/","url":"https:\/\/enpiste.qc.ca\/en\/events\/","name":"Events - En Piste","isPartOf":{"@id":"https:\/\/enpiste.qc.ca\/#website"},"primaryImageOfPage":{"@id":"https:\/\/enpiste.qc.ca\/en\/events\/#primaryimage"},"image":{"@id":"https:\/\/enpiste.qc.ca\/en\/events\/#primaryimage"},"thumbnailUrl":"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg","datePublished":"2025-07-09T17:41:52+00:00","dateModified":"2026-01-12T22:03:41+00:00","description":"Events: discover the workshops, forums, residencies and meetings of the circus community offered by En Piste.","breadcrumb":{"@id":"https:\/\/enpiste.qc.ca\/en\/events\/#breadcrumb"},"inLanguage":"en-CA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/enpiste.qc.ca\/en\/events\/"]}]},{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/enpiste.qc.ca\/en\/events\/#primaryimage","url":"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg","contentUrl":"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/11\/2025_BeckyRose_01-683x1024.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/enpiste.qc.ca\/en\/events\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/enpiste.qc.ca\/en\/homepage\/"},{"@type":"ListItem","position":2,"name":"Events"}]},{"@type":"WebSite","@id":"https:\/\/enpiste.qc.ca\/#website","url":"https:\/\/enpiste.qc.ca\/","name":"En piste","description":"un art vivant, une communaut\u00e9 engag\u00e9e","publisher":{"@id":"https:\/\/enpiste.qc.ca\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/enpiste.qc.ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-CA"},{"@type":"Organization","@id":"https:\/\/enpiste.qc.ca\/#organization","name":"En piste","url":"https:\/\/enpiste.qc.ca\/","logo":{"@type":"ImageObject","inLanguage":"en-CA","@id":"https:\/\/enpiste.qc.ca\/#\/schema\/logo\/image\/","url":"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/10\/Vector.png","contentUrl":"https:\/\/enpiste.qc.ca\/wp-content\/uploads\/2025\/10\/Vector.png","width":337,"height":93,"caption":"En piste"},"image":{"@id":"https:\/\/enpiste.qc.ca\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/EnPiste1\/","https:\/\/www.linkedin.com\/in\/en-piste-regroupement-national-des-arts-du-cirque-821171144\/","https:\/\/www.instagram.com\/enpistecirque\/?hl=fr-ca"]}]}},"_links":{"self":[{"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/pages\/860","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/comments?post=860"}],"version-history":[{"count":0,"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/pages\/860\/revisions"}],"wp:attachment":[{"href":"https:\/\/enpiste.qc.ca\/en\/wp-json\/wp\/v2\/media?parent=860"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}