{"id":7849,"date":"2026-02-03T13:59:15","date_gmt":"2026-02-03T13:59:15","guid":{"rendered":"https:\/\/masdenadal.com\/elaia-metadatas\/"},"modified":"2026-02-03T13:59:15","modified_gmt":"2026-02-03T13:59:15","slug":"elaia-metadatas","status":"publish","type":"page","link":"https:\/\/masdenadal.com\/en\/elaia-metadatas\/","title":{"rendered":"Find out more"},"content":{"rendered":"\n\n\n<style>\n  html {\n    scroll-behavior: smooth;\n  }\n\n  .em-wrap.em-mobile-filters-open {\n    z-index: 100000 !important;\n  }\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     BASE \u2014 Layout principal et typographie\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  .em-wrap {\n    position: relative !important;\n    z-index: 10 !important;\n    isolation: isolate;\n\n    display: flex;\n    flex-direction: column;\n    \/* Hauteur auto : la page coule naturellement et le footer du th\u00e8me suit le contenu.\n       Anciennement height:calc(100vh - --em-header-offset) qui for\u00e7ait un viewport entier\n       et faisait appara\u00eetre le footer \u00e0 un endroit bizarre. *\/\n\n    font-family: 'Inter', -apple-system, sans-serif !important;\n    color: #0f172a;\n    max-width: 1400px;\n    margin: 0 auto;\n    padding: 0 24px 40px;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  .em-wrap * {\n    box-sizing: border-box;\n  }\n\n  \/* \u2500\u2500\u2500 Header \u2014 Titre + barre de recherche \u2500\u2500\u2500 *\/\n  .em-header {\n    padding: 40px 0 24px;\n    display: flex;\n    align-items: flex-end;\n    justify-content: space-between;\n    gap: 16px;\n    flex-wrap: wrap;\n    flex-shrink: 0;\n    \/* le header ne se compresse pas *\/\n  }\n\n  .em-header-title {\n    font-size: 24px !important;\n    font-weight: 800 !important;\n    margin: 0 !important;\n    color: #0f172a;\n  }\n\n  .em-header-sub {\n    font-size: 14px;\n    color: #64748b;\n    margin: 4px 0 0;\n  }\n\n  \/* \u2500\u2500\u2500 Recherche \u2014 Champ avec ic\u00f4ne loupe \u2500\u2500\u2500 *\/\n  .em-search-wrap {\n    position: relative;\n  }\n\n  .em-sidebar .em-search-wrap {\n    margin-top: 16px;\n  }\n\n  .em-search-icon {\n    position: absolute;\n    left: 12px;\n    top: 50%;\n    transform: translateY(-50%);\n    width: 16px;\n    height: 16px;\n    color: #94a3b8;\n    pointer-events: none;\n  }\n\n  .em-search {\n    width: 100% !important;\n    padding: 10px 16px 10px 36px !important;\n    font-size: 14px !important;\n    font-family: inherit;\n    border: 1px solid #e2e8f0 !important;\n    border-radius: 12px !important;\n    background: #fff !important;\n    color: #0f172a;\n    outline: none;\n  }\n\n  .em-search:focus {\n    border-color: #3b82f6 !important;\n    box-shadow: 0 0 0 3px #3b82f618 !important;\n  }\n\n  .em-search::placeholder {\n    color: #94a3b8;\n  }\n\n  .em-main {\n    flex: 1;\n    min-width: 0;\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n  \/* \u2500\u2500\u2500 Onglets \u2014 Filtrage par cat\u00e9gorie \u2500\u2500\u2500 *\/\n  \/* --em-header-offset est calcul\u00e9 au runtime par le JS (hauteur d'un header sticky\/fix\u00e9 du th\u00e8me, sinon 0) *\/\n  .em-tabs {\n    display: flex !important;\n    flex-wrap: wrap;\n    gap: 8px;\n    flex-shrink: 0;\n  }\n\n  \/* Overlay opaque sous le header du th\u00e8me, affich\u00e9 uniquement pendant le scroll \u2014 masque les cards qui d\u00e9filent \u00e0 travers un header semi-transparent *\/\n  #em-header-overlay {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    height: var(--em-header-offset, 0px);\n    pointer-events: none;\n    opacity: 0;\n    transition: opacity 0.15s;\n  }\n\n  html.em-scrolled #em-header-overlay {\n    opacity: 1;\n  }\n\n  .em-tab {\n    flex: 0 1 auto;\n    max-width: 100%;\n    padding: 8px 16px;\n    border-radius: 8px;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    border: 1px solid #e2e8f0;\n    background: #fff;\n    color: #64748b;\n    transition: all 0.15s;\n    font-family: inherit;\n    white-space: normal;\n    overflow-wrap: anywhere;\n    text-align: left;\n  }\n\n  .em-tab:hover {\n    border-color: #cbd5e1;\n  }\n\n  .em-tab.active {\n    background: #3b82f6 !important;\n    color: #fff !important;\n    border-color: #3b82f6 !important;\n  }\n\n  .em-tab-count {\n    margin-left: 6px;\n    font-size: 12px;\n    opacity: 0.7;\n  }\n\n  .em-main-body {\n    display: flex;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     CARTE \u2014 Leaflet + l\u00e9gende + marqueurs\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  .em-map-section {\n    \/* margin-bottom: 24px; *\/\n    isolation: isolate;\n  }\n\n  .em-map-section--hidden {\n    display: none;\n  }\n\n  .em-map-wrap {\n    border-radius: 16px;\n    overflow: hidden;\n    border: 1px solid #e2e8f0;\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n  }\n\n  .em-map {\n    height: 420px;\n    width: 100%;\n  }\n\n  \/* Personnalisation des popups Leaflet *\/\n  .em-map .leaflet-popup-content-wrapper {\n    border-radius: 12px;\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n    padding: 0;\n    overflow: hidden;\n  }\n\n  .em-map .leaflet-popup-content {\n    margin: 0;\n    min-width: 200px;\n  }\n\n  .em-map .leaflet-popup-tip {\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\n  }\n\n  .em-map-popup {\n    padding: 12px 14px;\n  }\n\n  .em-map-popup-name {\n    font-size: 14px;\n    font-weight: 700;\n    color: #0f172a;\n    margin: 0 0 4px;\n    line-height: 1.3;\n  }\n\n  .em-map-popup-cat {\n    font-size: 11px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.3px;\n    margin: 0 0 8px;\n  }\n\n  .em-map-popup-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 12px;\n    font-weight: 600;\n    color: #3b82f6;\n    cursor: pointer;\n    background: none;\n    border: none;\n    padding: 0;\n    font-family: inherit;\n  }\n\n  .em-map-popup-btn:hover {\n    text-decoration: underline;\n  }\n\n  \/* L\u00e9gende de la carte *\/\n  .em-map-legend {\n    display: flex;\n    gap: 16px;\n    padding: 10px 16px;\n    background: #fff;\n    border-top: 1px solid #e2e8f0;\n    flex-wrap: wrap;\n  }\n\n  .em-map-legend-item {\n    display: flex;\n    min-width: 0;\n    max-width: 100%;\n    align-items: center;\n    gap: 6px;\n    font-size: 12px;\n    font-weight: 600;\n    color: #64748b;\n    cursor: pointer;\n    transition: opacity 0.15s;\n    overflow-wrap: anywhere;\n  }\n\n  .em-map-legend-item:hover {\n    opacity: 0.7;\n  }\n\n  .em-map-legend-item--off {\n    opacity: 0.3;\n  }\n\n  .em-map-legend-item--off .em-map-legend-dot {\n    background: #cbd5e1 !important;\n    box-shadow: none !important;\n  }\n\n  .em-map-legend-dot {\n    width: 10px;\n    height: 10px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.08);\n  }\n\n  \/* Bouton toggle carte *\/\n  .em-map-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 8px 14px;\n    border-radius: 8px;\n    border: 1px solid #e2e8f0;\n    background: #fff;\n    color: #64748b;\n    font-size: 13px;\n    font-weight: 600;\n    cursor: pointer;\n    font-family: inherit;\n    transition: all 0.15s;\n    margin-bottom: 16px;\n  }\n\n  .em-map-toggle:hover {\n    border-color: #3b82f6;\n    color: #3b82f6;\n  }\n\n  .em-map-toggle.active {\n    background: #3b82f6;\n    color: #fff;\n    border-color: #3b82f6;\n  }\n\n  \/* Quand le bouton Carte est plac\u00e9 dans la barre des onglets, alignement avec .em-tab *\/\n  .em-tabs .em-map-toggle {\n    font-size: 14px;\n    padding: 8px 16px;\n    margin-bottom: 0;\n    flex-shrink: 0;\n  }\n\n  \/* Marqueurs personnalis\u00e9s SVG *\/\n  .em-marker {\n    transition: transform 0.15s ease;\n  }\n\n  .em-marker:hover {\n    transform: scale(1.3);\n    z-index: 1000 !important;\n  }\n\n  .em-marker--active {\n    transform: scale(1.4);\n    z-index: 1000 !important;\n  }\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     LAYOUT \u2014 Sidebar filtres + grille cards\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  .em-layout {\n    display: flex;\n    min-width: 0;\n    width: 100%;\n    gap: 24px;\n    align-items: flex-start;\n    scroll-margin-top: calc(var(--em-header-offset, 0px) + 16px);\n  }\n\n  .em-sidebar {\n    flex: 0 0 285px;\n    position: sticky;\n    top: calc(var(--em-header-offset, 0px) + 24px);\n    align-self: flex-start;\n    max-height: calc(100vh - var(--em-header-offset, 0px) - 48px);\n    overflow-y: auto;\n    scroll-behavior: smooth;\n  }\n\n\n  \/* \u2500\u2500\u2500 Filtres lat\u00e9raux \u2500\u2500\u2500 *\/\n  .em-filters {\n    background: #fff;\n    border-radius: 12px;\n    padding: 20px;\n    border: 1px solid #e2e8f0;\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n  }\n\n  .em-filters-title {\n    width: 100%;\n    padding: 0;\n    border: 0;\n    background: none;\n    text-align: left;\n    font-family: inherit;\n    font-size: 15px !important;\n    font-weight: 700 !important;\n    margin: 0 0 16px !important;\n    color: #0f172a;\n  }\n\n  .em-filters-title-main {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n\n  .em-filters-title-icon {\n    width: 18px;\n    height: 18px;\n    flex-shrink: 0;\n  }\n\n  .em-filters-title-hint {\n    display: none;\n  }\n\n  .em-filter-group {\n    margin-bottom: 18px;\n  }\n\n  .em-filter-group:last-child {\n    margin-bottom: 0;\n  }\n\n  .em-filter-label {\n    display: block;\n    font-size: 12px;\n    font-weight: 700;\n    color: #94a3b8;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    margin-bottom: 8px;\n  }\n\n  .em-filter-check {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 5px 0;\n    cursor: pointer;\n  }\n\n  .em-filter-check input[type=\"checkbox\"] {\n    cursor: pointer;\n    accent-color: #3b82f6;\n    width: 15px;\n    height: 15px;\n  }\n\n  .em-filter-check span {\n    font-size: 13px;\n    color: #64748b;\n    font-weight: 500;\n  }\n\n  .em-filter-reset {\n    width: 100%;\n    padding: 10px;\n    background: #0f172a;\n    color: #fff;\n    border: none;\n    border-radius: 8px;\n    font-size: 13px;\n    font-weight: 600;\n    cursor: pointer;\n    font-family: inherit;\n    margin-top: 16px;\n  }\n\n  .em-filter-reset:hover {\n    background: #000;\n  }\n\n  \/* \u2500\u2500\u2500 Compteurs \u2500\u2500\u2500 *\/\n  .em-stats {\n    display: flex;\n    gap: 8px;\n    margin-bottom: 20px;\n    flex-wrap: wrap;\n    justify-content: center;\n  }\n\n  .em-stat {\n    background: #fff;\n    border: 1px solid #e2e8f0;\n    border-radius: 8px;\n    padding: 8px 14px;\n    font-size: 13px;\n    color: #64748b;\n  }\n\n  .em-stat strong {\n    color: #0f172a;\n    font-weight: 700;\n    margin-left: 4px;\n  }\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     CARDS \u2014 Grille de fiches m\u00e9tadonn\u00e9es\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  .em-cards {\n    display: grid !important;\n    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;\n    gap: 20px !important;\n  }\n\n  .em-card {\n    background: #fff !important;\n    border: 1px solid #e2e8f0 !important;\n    border-radius: 12px !important;\n    overflow: hidden !important;\n    cursor: pointer;\n    transition: all 0.2s;\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n    display: block !important;\n  }\n\n  .em-card.em-hidden {\n    display: none !important;\n  }\n\n  .em-card:hover {\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.07) !important;\n    transform: translateY(-2px);\n    border-color: #3b82f6 !important;\n  }\n\n  .em-card--highlight {\n    box-shadow: 0 0 0 3px #3b82f6 !important;\n  }\n\n  \/* Image de la card *\/\n  .em-card-img-wrap {\n    position: relative;\n  }\n\n  .em-card-img {\n    width: 100% !important;\n    height: 160px !important;\n    object-fit: cover !important;\n    display: block !important;\n    background: #f1f5f9;\n  }\n\n  .em-card-placeholder {\n    width: 100%;\n    height: 160px;\n    background: linear-gradient(135deg, #f1f5f9, #e2e8f0);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #94a3b8;\n    font-size: 14px;\n    font-weight: 500;\n  }\n\n  .em-card-badge {\n    position: absolute;\n    top: 10px;\n    left: 10px;\n    max-width: calc(100% - 20px);\n    padding: 4px 10px;\n    border-radius: 6px;\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.3px;\n    backdrop-filter: blur(8px);\n    white-space: normal;\n    overflow-wrap: anywhere;\n    line-height: 1.25;\n  }\n\n  \/* Badges de cat\u00e9gorie (couleurs par type) *\/\n  .badge-accom {\n    background: rgba(16, 185, 129, 0.9);\n    color: #fff;\n  }\n\n  .badge-city {\n    background: rgba(59, 130, 246, 0.9);\n    color: #fff;\n  }\n\n  .badge-activity {\n    background: rgba(168, 85, 247, 0.9);\n    color: #fff;\n  }\n\n  .badge-event {\n    background: rgba(239, 68, 68, 0.9);\n    color: #fff;\n  }\n\n  .badge-restaurant {\n    background: rgba(245, 158, 11, 0.9);\n    color: #fff;\n  }\n\n  .badge-service {\n    background: rgba(99, 102, 241, 0.9);\n    color: #fff;\n  }\n\n  .badge-default {\n    background: rgba(100, 116, 139, 0.9);\n    color: #fff;\n  }\n\n  \/* Contenu de la card *\/\n  .em-card-body {\n    padding: 16px;\n  }\n\n  .em-card-title {\n    font-size: 15px !important;\n    font-weight: 700 !important;\n    margin: 0 0 8px !important;\n    color: #0f172a;\n    line-height: 1.3;\n  }\n\n  .em-card-tags {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 5px;\n    margin-bottom: 10px;\n  }\n\n  .em-tag {\n    display: inline-flex;\n    align-items: center;\n    gap: 3px;\n    padding: 3px 8px;\n    border-radius: 5px;\n    font-size: 11px;\n    font-weight: 600;\n    background: #f1f5f9;\n    color: #64748b;\n  }\n\n  .em-tag-blue {\n    background: #dbeafe;\n    color: #1e40af;\n  }\n\n  .em-tag-green {\n    background: #d1fae5;\n    color: #065f46;\n  }\n\n  .em-tag-orange {\n    background: #fed7aa;\n    color: #92400e;\n  }\n\n  .em-tag-purple {\n    background: #ede9fe;\n    color: #6b21a8;\n  }\n\n  \/* Champs r\u00e9sum\u00e9s visibles sur la card *\/\n  .em-card-fields {\n    margin-bottom: 10px;\n  }\n\n  .em-card-field {\n    display: flex;\n    gap: 6px;\n    font-size: 12px;\n    margin-bottom: 4px;\n  }\n\n  .em-card-field-label {\n    color: #94a3b8;\n    flex-shrink: 0;\n  }\n\n  .em-card-field-value {\n    color: #0f172a;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  \/* Pied de card *\/\n  .em-card-footer {\n    padding-top: 10px;\n    border-top: 1px solid #e2e8f0;\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 12px;\n    font-weight: 600;\n    color: #3b82f6;\n  }\n\n  .em-card-footer svg {\n    width: 14px;\n    height: 14px;\n    transition: transform 0.15s;\n  }\n\n  .em-card:hover .em-card-footer svg {\n    transform: translateX(2px);\n  }\n\n  \/* \u00c9tat vide *\/\n  .em-empty {\n    text-align: center;\n    padding: 60px 20px;\n    color: #64748b;\n  }\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     MODAL \u2014 D\u00e9tail d'une fiche\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  .em-modal-overlay {\n    position: fixed;\n    inset: 0;\n    background: rgba(0, 0, 0, 0.5);\n    backdrop-filter: blur(4px);\n    z-index: 99999;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 16px;\n    animation: emFadeIn 0.2s ease;\n  }\n\n  @keyframes emFadeIn {\n    from {\n      opacity: 0\n    }\n\n    to {\n      opacity: 1\n    }\n  }\n\n  .em-modal {\n    background: #fff;\n    border-radius: 16px;\n    max-width: 640px;\n    width: 100%;\n    max-height: 85vh;\n    overflow: hidden;\n    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.08);\n    display: flex;\n    flex-direction: column;\n    animation: emSlideUp 0.25s ease;\n  }\n\n  @keyframes emSlideUp {\n    from {\n      opacity: 0;\n      transform: translateY(20px)\n    }\n\n    to {\n      opacity: 1;\n      transform: translateY(0)\n    }\n  }\n\n  \/* Modal avec image *\/\n  .em-modal-img-wrap {\n    position: relative;\n    flex-shrink: 0;\n  }\n\n  .em-modal-img {\n    width: 100%;\n    height: 220px;\n    object-fit: cover;\n    display: block;\n  }\n\n  .em-modal-img-gradient {\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(to top, rgba(0, 0, 0, 0.4), transparent);\n  }\n\n  .em-modal-img-info {\n    position: absolute;\n    bottom: 16px;\n    left: 20px;\n    right: 20px;\n  }\n\n  .em-modal-img-cat {\n    font-size: 12px;\n    font-weight: 500;\n    color: rgba(255, 255, 255, 0.8);\n    margin: 0 0 4px;\n  }\n\n  .em-modal-img-title {\n    font-size: 20px;\n    font-weight: 800;\n    color: #fff;\n    margin: 0;\n  }\n\n  .em-modal-close {\n    position: absolute;\n    top: 12px;\n    right: 12px;\n    width: 32px;\n    height: 32px;\n    border-radius: 50%;\n    background: rgba(0, 0, 0, 0.4);\n    color: #fff;\n    border: none;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 16px;\n  }\n\n  .em-modal-close:hover {\n    background: rgba(0, 0, 0, 0.6);\n  }\n\n  \/* Modal sans image *\/\n  .em-modal-header-noimg {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 20px 24px;\n    border-bottom: 1px solid #e2e8f0;\n  }\n\n  .em-modal-header-noimg-cat {\n    font-size: 12px;\n    color: #94a3b8;\n    margin: 0 0 2px;\n  }\n\n  .em-modal-header-noimg-title {\n    font-size: 18px;\n    font-weight: 800;\n    color: #0f172a;\n    margin: 0;\n  }\n\n  .em-modal-close-noimg {\n    width: 32px;\n    height: 32px;\n    border-radius: 8px;\n    border: none;\n    cursor: pointer;\n    color: #94a3b8;\n    background: none;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 16px;\n  }\n\n  .em-modal-close-noimg:hover {\n    background: #f1f5f9;\n    color: #0f172a;\n  }\n\n  \/* Corps et entr\u00e9es de la modal *\/\n  .em-modal-body {\n    padding: 20px 24px;\n    overflow-y: auto;\n    flex: 1;\n    scroll-behavior: smooth;\n  }\n\n  .em-modal-entry {\n    margin-bottom: 16px;\n  }\n\n  .em-modal-entry-label {\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    color: #94a3b8;\n    margin: 0 0 4px;\n  }\n\n  .em-modal-entry-value {\n    font-size: 14px;\n    color: #0f172a;\n    margin: 0;\n    line-height: 1.5;\n    white-space: pre-line;\n  }\n\n  \/* Badge date d'\u00e9v\u00e9nement *\/\n  .em-modal-event {\n    display: inline-flex;\n    align-items: center;\n    padding: 6px 12px;\n    margin-bottom: 16px;\n    background: #fff7ed;\n    color: #c2410c;\n    border-radius: 8px;\n    font-size: 13px;\n    font-weight: 600;\n  }\n\n  \/* Player vid\u00e9o *\/\n  .em-modal-video-wrap {\n    position: relative;\n    width: 100%;\n    padding-top: 56.25%;\n    overflow: hidden;\n    border-radius: 8px;\n    background: #000;\n  }\n\n  .em-modal-video-wrap iframe {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n  }\n\n  .em-modal-video-file {\n    width: 100%;\n    border-radius: 8px;\n    background: #000;\n    display: block;\n  }\n\n  \/* Galerie d'images *\/\n  .em-modal-gallery {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 8px;\n  }\n\n  @media (min-width: 480px) {\n    .em-modal-gallery {\n      grid-template-columns: repeat(4, 1fr);\n    }\n  }\n\n  .em-modal-gallery-item {\n    display: block;\n    aspect-ratio: 1 \/ 1;\n    border-radius: 8px;\n    overflow: hidden;\n    border: 1px solid #e2e8f0;\n    background: #f1f5f9;\n    transition: transform .15s ease, border-color .15s ease;\n  }\n\n  .em-modal-gallery-item:hover {\n    transform: scale(1.03);\n    border-color: #cbd5e1;\n  }\n\n  .em-modal-gallery-item img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n  }\n\n  \/* Documents PDF *\/\n  .em-modal-docs {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    gap: 6px;\n  }\n\n  .em-modal-doc {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 8px 12px;\n    border: 1px solid #fce7f3;\n    background: rgba(253, 242, 248, .6);\n    color: #be185d;\n    border-radius: 8px;\n    text-decoration: none;\n    font-size: 14px;\n    transition: border-color .15s ease, background .15s ease;\n  }\n\n  .em-modal-doc:hover {\n    border-color: #f9a8d4;\n    background: #fdf2f8;\n  }\n\n  .em-modal-doc svg {\n    flex-shrink: 0;\n  }\n\n  .em-modal-doc-name {\n    flex: 1;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    font-weight: 500;\n  }\n\n  .em-modal-doc-type {\n    flex-shrink: 0;\n    padding: 2px 6px;\n    background: #fce7f3;\n    color: #be185d;\n    border-radius: 4px;\n    font-size: 10px;\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: .04em;\n  }\n\n  \/* Questions fr\u00e9quentes *\/\n  .em-modal-faq {\n    margin-top: 16px;\n    padding-top: 16px;\n    border-top: 1px solid #e2e8f0;\n  }\n\n  .em-modal-faq-item {\n    margin-top: 12px;\n    border: 1px solid #e2e8f0;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #f8fafc;\n  }\n\n  .em-modal-faq-q {\n    padding: 10px 12px;\n    font-size: 13px;\n    font-weight: 600;\n    color: #0f172a;\n  }\n\n  .em-modal-faq-a {\n    padding: 10px 12px;\n    font-size: 13px;\n    color: #475569;\n    line-height: 1.5;\n    border-top: 1px solid #e2e8f0;\n    background: #fff;\n    white-space: pre-line;\n  }\n\n  .em-modal-faq-a-empty {\n    color: #94a3b8;\n    font-style: italic;\n  }\n\n  \/* Pied de modal *\/\n  .em-modal-footer {\n    padding: 16px 24px;\n    border-top: 1px solid #e2e8f0;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  .em-modal-link {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    font-size: 14px;\n    font-weight: 600;\n    color: #3b82f6;\n    text-decoration: none;\n  }\n\n  .em-modal-link:hover {\n    opacity: 0.8;\n  }\n\n  .em-modal-close-btn {\n    padding: 8px 16px;\n    font-size: 14px;\n    font-weight: 500;\n    color: #64748b;\n    background: none;\n    border: none;\n    cursor: pointer;\n    font-family: inherit;\n  }\n\n  .em-modal-close-btn:hover {\n    color: #0f172a;\n  }\n\n  \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     RESPONSIVE\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n  @media (max-width: 1024px) {\n    .em-layout {\n      flex-direction: column;\n    }\n\n    .em-sidebar {\n      flex-basis: auto;\n      height: auto;\n      position: static;\n      width: 100%;\n      max-height: none;\n      overflow: visible;\n    }\n\n    \/* Sidebar collapsible sur mobile *\/\n    .em-sidebar {\n      order: -1;\n    }\n\n    .em-filters {\n      padding: 14px;\n    }\n\n    .em-filters-title {\n      font-size: 14px !important;\n      margin-bottom: 0 !important;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    .em-filters-title-hint {\n      display: block;\n      margin-top: 2px;\n      font-size: 12px;\n      line-height: 1.3;\n      font-weight: 500;\n      color: #64748b;\n    }\n\n    .em-filters-title::after {\n      content: 'Fermer';\n      margin-left: 12px;\n      font-size: 12px;\n      font-weight: 700;\n      color: #3b82f6;\n    }\n\n    .em-filters.collapsed .em-filters-title::after {\n      content: 'Ouvrir \u2192';\n      transform: none;\n    }\n\n    .em-filters.collapsed {\n      padding: 0;\n      border-color: #3b82f655;\n      background: #3b82f618;\n      box-shadow: none;\n    }\n\n    .em-filters.collapsed .em-filters-title {\n      padding: 14px 16px;\n    }\n\n    .em-filters.collapsed .em-stats,\n    .em-filters.collapsed .em-filter-group,\n    .em-filters.collapsed .em-filter-reset,\n    .em-filters.collapsed .em-search-wrap {\n      display: none;\n    }\n  }\n\n  @media (max-width: 720px) {\n    html.em-filters-open,\n    html.em-filters-open body {\n      overflow: hidden !important;\n    }\n\n    .em-wrap {\n      padding: 0 12px;\n    }\n\n    .em-header {\n      \/* flex-direction: column;\n      align-items: stretch; *\/\n      padding: 24px 0 16px;\n      gap: 12px;\n    }\n\n    .em-header-title {\n      font-size: 20px !important;\n    }\n\n    .em-search-wrap {\n      width: 100%;\n    }\n\n    .em-tabs {\n      gap: 6px;\n      margin-bottom: 16px;\n    }\n\n    .em-tab {\n      padding: 6px 12px;\n      font-size: 13px;\n    }\n\n    .em-tabs .em-map-toggle {\n      padding: 6px 12px;\n      font-size: 13px;\n    }\n\n    .em-filter-backdrop {\n      position: fixed;\n      inset: 0;\n      z-index: 100000;\n      background: rgba(15, 23, 42, 0.48);\n      opacity: 0;\n      visibility: hidden;\n      transition: opacity 0.2s ease, visibility 0.2s ease;\n    }\n\n    .em-filter-backdrop.is-visible {\n      opacity: 1;\n      visibility: visible;\n    }\n\n    .em-filters:not(.collapsed) {\n      position: fixed;\n      z-index: 100001;\n      top: max(16px, env(safe-area-inset-top));\n      right: 12px;\n      bottom: max(16px, env(safe-area-inset-bottom));\n      left: 12px;\n      max-height: none;\n      overflow-y: auto;\n      overscroll-behavior: contain;\n      scroll-behavior: smooth;\n      box-shadow: 0 24px 60px rgba(15, 23, 42, 0.24);\n    }\n\n    .em-filters:not(.collapsed) .em-filters-title {\n      position: sticky;\n      top: -14px;\n      z-index: 1;\n      margin: -14px -14px 16px !important;\n      padding: 14px;\n      background: #fff;\n      border-bottom: 1px solid #e2e8f0;\n    }\n\n    .em-filters:not(.collapsed) .em-filters-title::after {\n      content: '\u2715';\n      transform: none;\n      font-size: 16px;\n    }\n\n    \/* Carte mobile *\/\n    .em-map {\n      height: 280px;\n    }\n\n    .em-map-wrap {\n      border-radius: 12px;\n    }\n\n    .em-map-legend {\n      gap: 10px;\n      padding: 8px 12px;\n    }\n\n    .em-map-legend-item {\n      font-size: 11px;\n    }\n\n\n\n    \/* Cards mobile *\/\n    .em-cards {\n      grid-template-columns: 1fr !important;\n      gap: 14px !important;\n    }\n\n    .em-card-img,\n    .em-card-placeholder {\n      height: 140px !important;\n    }\n\n    .em-card-body {\n      padding: 12px;\n    }\n\n    .em-card-title {\n      font-size: 14px !important;\n    }\n\n    .em-card-tags {\n      gap: 4px;\n    }\n\n    .em-tag {\n      font-size: 10px;\n      padding: 2px 6px;\n    }\n\n    \/* Compteurs compacts *\/\n    .em-stats {\n      gap: 8px;\n      margin-bottom: 14px;\n    }\n\n    .em-stat {\n      padding: 6px 10px;\n      font-size: 12px;\n    }\n\n    \/* Modal \u2192 bottom sheet sur mobile *\/\n    .em-modal-overlay {\n      align-items: flex-end;\n      padding: 0;\n    }\n\n    .em-modal {\n      border-radius: 16px 16px 0 0;\n      max-height: 90vh;\n      max-width: 100%;\n      animation: emSlideUpMobile 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n    }\n\n    @keyframes emSlideUpMobile {\n      from {\n        transform: translateY(100%);\n      }\n\n      to {\n        transform: translateY(0);\n      }\n    }\n\n    .em-modal-img {\n      height: 180px;\n    }\n\n    .em-modal-body {\n      padding: 16px;\n    }\n\n    .em-modal-footer {\n      padding: 12px 16px;\n    }\n\n    .em-modal-entry-value {\n      font-size: 13px;\n    }\n  }\n\n  @media (max-width: 380px) {\n    .em-map {\n      height: 220px;\n    }\n\n    .em-card-img,\n    .em-card-placeholder {\n      height: 120px !important;\n    }\n\n    .em-card-fields {\n      display: none;\n    }\n  }\n<\/style>\n\n\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"ItemList\",\"name\":\"Villes aux alentours\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"City\",\"name\":\"Cajarc\",\"url\":\"https:\/\/www.tourisme-lot.com\/cajarc\",\"image\":\"https:\/\/woody.cloudly.space\/app\/uploads\/lot-tourisme\/2020\/12\/thumbs\/web21-190916174831-village-de-cajarc-christophe-bouthe-agence-vent-dautan-1920x960-crop-1615992091.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.47,\"longitude\":1.8783},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"10\"},{\"@type\":\"PropertyValue\",\"name\":\"Temps en voiture (min)\",\"value\":\"15\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieux \/ Activit\u00e9s incontournables\",\"value\":\"Place de la Halle, \u00c9glise Saint-Pierre, Mus\u00e9e de l'Artisanat\"},{\"@type\":\"PropertyValue\",\"name\":\"March\u00e9s \/ \u00e9v\u00e9nements locaux\",\"value\":\"March\u00e9 hebdomadaire le vendredi matin, F\u00eate de la Saint-Jean en juin\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ sp\u00e9cialit\u00e9s\",\"value\":\"Truffade, Aligot, Viande de boeuf de l'Aubrac\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Charmant village m\u00e9di\u00e9val avec des ruelles pittoresques et une belle vue sur la vall\u00e9e du Lot.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Cajarc, 46160\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"City\",\"name\":\"Saint-Cirq-Lapopie\",\"url\":\"https:\/\/masdenadal.com\/tourisme-saint-cirq-lapopie\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/village-medieval-saint-cirq-lapopie.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.4167,\"longitude\":1.6167},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"15\"},{\"@type\":\"PropertyValue\",\"name\":\"Temps en voiture (min)\",\"value\":\"20\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieux \/ Activit\u00e9s incontournables\",\"value\":\"Place du Sombral, \u00c9glise Saint-Cirq, Ch\u00e2teau de Saint-Cirq-Lapopie\"},{\"@type\":\"PropertyValue\",\"name\":\"March\u00e9s \/ \u00e9v\u00e9nements locaux\",\"value\":\"March\u00e9 artisanal le dimanche matin, F\u00eate de la Saint-Cirq en ao\u00fbt\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ sp\u00e9cialit\u00e9s\",\"value\":\"C\u00e8pes, Foie gras, Vin de Cahors\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Class\u00e9 parmi les plus beaux villages de France, offrant des panoramas exceptionnels sur la vall\u00e9e du Lot.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Saint-Cirq-Lapopie, 46330\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"City\",\"name\":\"Figeac\",\"url\":\"https:\/\/masdenadal.com\/tourisme-figeac\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/camping-pres-de-figeac.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.6167,\"longitude\":2.049},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"25\"},{\"@type\":\"PropertyValue\",\"name\":\"Temps en voiture (min)\",\"value\":\"30\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieux \/ Activit\u00e9s incontournables\",\"value\":\"Place Champollion, Mus\u00e9e Champollion, H\u00f4tel de la Monnaie\"},{\"@type\":\"PropertyValue\",\"name\":\"March\u00e9s \/ \u00e9v\u00e9nements locaux\",\"value\":\"March\u00e9 couvert tous les samedis matin, Festival de la Musique en juillet\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ sp\u00e9cialit\u00e9s\",\"value\":\"Truffade, C\u00e8pes, Vin de Cahors\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Ville d'art et d'histoire, berceau de Jean-Fran\u00e7ois Champollion, offrant un riche patrimoine architectural.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Figeac, 46100\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"City\",\"name\":\"Cahors\",\"url\":\"https:\/\/masdenadal.com\/tourisme-cahors\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/cahors-lot.png\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.45,\"longitude\":1.4444},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"43\"},{\"@type\":\"PropertyValue\",\"name\":\"Temps en voiture (min)\",\"value\":\"47\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieux \/ Activit\u00e9s incontournables\",\"value\":\"Pont Valentr\u00e9, Cath\u00e9drale Saint-\u00c9tienne, Place Fran\u00e7ois Mitterrand\"},{\"@type\":\"PropertyValue\",\"name\":\"March\u00e9s \/ \u00e9v\u00e9nements locaux\",\"value\":\"March\u00e9 couvert tous les mercredis et samedis matin, Festival de Jazz en juillet\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ sp\u00e9cialit\u00e9s\",\"value\":\"Vin de Cahors, Foie gras, Truffade\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Pr\u00e9fecture du Lot, r\u00e9put\u00e9e pour son vin et son patrimoine m\u00e9di\u00e9val.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Cahors, 46000\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"City\",\"name\":\"Lacapelle-Marival\",\"url\":\"https:\/\/www.tourisme-lot.com\/lacapelle-marival\/\",\"image\":\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/24\/Chateau_lacapelle_marival_facade_sud_2.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.6167,\"longitude\":1.8833},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"33\"},{\"@type\":\"PropertyValue\",\"name\":\"Temps en voiture (min)\",\"value\":\"37\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieux \/ Activit\u00e9s incontournables\",\"value\":\"Ch\u00e2teau de Lacapelle-Marival, \u00c9glise Saint-Pierre, Place de la Mairie\"},{\"@type\":\"PropertyValue\",\"name\":\"March\u00e9s \/ \u00e9v\u00e9nements locaux\",\"value\":\"March\u00e9 hebdomadaire le mardi matin, F\u00eate de la Saint-Pierre en juillet\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ sp\u00e9cialit\u00e9s\",\"value\":\"Truffade, C\u00e8pes, Viande de boeuf de l'Aubrac\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Petit village charmant avec un riche patrimoine historique et une belle place centrale.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Lacapelle-Marival, 46120\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Activit\u00e9s et lieux recommand\u00e9s\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"TouristAttraction\",\"name\":\"Randonn\u00e9e dans le Parc Naturel des Causses du Quercy\",\"url\":\"https:\/\/masdenadal.com\/tourisme-lot\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/parc-nature-des-causses-de-quercy.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.4262,\"longitude\":1.7365},\"location\":{\"@type\":\"Place\",\"name\":\"Sauliac-sur-C\u00e9l\u00e9\"},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.)\",\"value\":\"nature\"},{\"@type\":\"PropertyValue\",\"name\":\"Ville \/ Zone\",\"value\":\"Sauliac-sur-C\u00e9l\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Dur\u00e9e moyenne\",\"value\":\"variable\"},{\"@type\":\"PropertyValue\",\"name\":\"Tarif (si payant)\",\"value\":\"gratuit\"},{\"@type\":\"PropertyValue\",\"name\":\"R\u00e9servation n\u00e9cessaire ?\",\"value\":\"non\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Explorez les sentiers du Parc Naturel des Causses du Quercy pour d\u00e9couvrir une faune et une flore exceptionnelles.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"400, Chemin du Mas de Nadal, 2245, Route de Blars, 46330 \u2013 Sauliac-sur-C\u00e9l\u00e9\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"TouristAttraction\",\"name\":\"Baignade au bord de la rivi\u00e8re C\u00e9l\u00e9\",\"url\":\"https:\/\/masdenadal.com\/plages-rivieres-lot\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/riviere-plage.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.4262,\"longitude\":1.7365},\"location\":{\"@type\":\"Place\",\"name\":\"Sauliac-sur-C\u00e9l\u00e9\"},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.)\",\"value\":\"nature\"},{\"@type\":\"PropertyValue\",\"name\":\"Ville \/ Zone\",\"value\":\"Sauliac-sur-C\u00e9l\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Dur\u00e9e moyenne\",\"value\":\"variable\"},{\"@type\":\"PropertyValue\",\"name\":\"Tarif (si payant)\",\"value\":\"gratuit\"},{\"@type\":\"PropertyValue\",\"name\":\"R\u00e9servation n\u00e9cessaire ?\",\"value\":\"non\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Profitez des plages naturelles le long de la rivi\u00e8re C\u00e9l\u00e9 pour une baignade rafra\u00eechissante.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"400, Chemin du Mas de Nadal, 2245, Route de Blars, 46330 \u2013 Sauliac-sur-C\u00e9l\u00e9\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"TouristAttraction\",\"name\":\"Visite du village m\u00e9di\u00e9val de Saint-Cirq-Lapopie\",\"url\":\"https:\/\/masdenadal.com\/tourisme-saint-cirq-lapopie\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/village-medieval-saint-cirq-lapopie.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.4167,\"longitude\":1.6167},\"location\":{\"@type\":\"Place\",\"name\":\"Saint-Cirq-Lapopie\"},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.)\",\"value\":\"culture\"},{\"@type\":\"PropertyValue\",\"name\":\"Ville \/ Zone\",\"value\":\"Saint-Cirq-Lapopie\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"10\"},{\"@type\":\"PropertyValue\",\"name\":\"Dur\u00e9e moyenne\",\"value\":\"2 heures\"},{\"@type\":\"PropertyValue\",\"name\":\"Tarif (si payant)\",\"value\":\"gratuit\"},{\"@type\":\"PropertyValue\",\"name\":\"R\u00e9servation n\u00e9cessaire ?\",\"value\":\"non\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Explorez les ruelles pittoresques de ce village perch\u00e9 offrant des vues imprenables sur la vall\u00e9e du Lot.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Saint-Cirq-Lapopie, 46330\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"TouristAttraction\",\"name\":\"Piscine du camping Mas de Nadal\",\"url\":\"https:\/\/masdenadal.com\/camping-piscine-chauffee-lot\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/piscine-en-fin-de-journee.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.4264,\"longitude\":1.7365},\"location\":{\"@type\":\"Place\",\"name\":\"Sauliac-sur-C\u00e9l\u00e9\"},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.)\",\"value\":\"Loisir aquatique\"},{\"@type\":\"PropertyValue\",\"name\":\"Ville \/ Zone\",\"value\":\"Sauliac-sur-C\u00e9l\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Dur\u00e9e moyenne\",\"value\":\"Variable\"},{\"@type\":\"PropertyValue\",\"name\":\"Tarif (si payant)\",\"value\":\"Inclus dans le tarif du s\u00e9jour\"},{\"@type\":\"PropertyValue\",\"name\":\"R\u00e9servation n\u00e9cessaire ?\",\"value\":\"Non\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Profitez d'une piscine ext\u00e9rieure chauff\u00e9e \u00e0 d\u00e9bordement avec une belle terrasse et des bains de soleil. Id\u00e9ale pour se d\u00e9tendre apr\u00e8s une journ\u00e9e d'activit\u00e9s.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"400, Chemin du Mas de Nadal, 2245, Route de Blars, 46330 \u2013 Sauliac-sur-C\u00e9l\u00e9\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"\u00c9v\u00e9nements recommand\u00e9s\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Event\",\"name\":\"Mariage au Mas de Nadal\",\"description\":\"Un domaine hors du temps, rien que pour vous\\n\\nLe Mas de Nadal, c\u2019est une bulle naturelle au c\u0153ur du Lot.\\nUn lieu \u00e0 taille humaine, entour\u00e9 de verdure, o\u00f9 l\u2019on se sent imm\u00e9diatement ailleurs.\\n\\nSite enti\u00e8rement privatisable\\nEnvironnement calme et s\u00e9curis\u00e9\\nLieu pi\u00e9ton\\nClairi\u00e8res, for\u00eat, grands espaces ouverts\\nAtmosph\u00e8re intime et chaleureuse\\nIci, vos invit\u00e9s ne sont pas dans une salle impersonnelle.\\nIls vivent une exp\u00e9rience.\\n\\nUn mariage au Mas de Nadal, c\u2019est :\\n\\nLa nature comme d\u00e9cor\\nLes lumi\u00e8res sous les arbres\\nUne soir\u00e9e qui se prolonge sous les \u00e9toiles\",\"url\":\"https:\/\/masdenadal.com\/location-evenement-lot\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/lounge-evenementiel-mas-de-nadal.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.426,\"longitude\":1.616},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Date \/ P\u00e9riode\",\"value\":\"Toute l'ann\u00e9e\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieu (ville)\",\"value\":\"Sauliac sur C\u00e9l\u00e9 \"},{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.)\",\"value\":\"Mariage\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Mas de Nadal, 46330 Saint-Cirq-Lapopie, France\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Event\",\"name\":\"Mariages au Mas de Nadal\",\"description\":\"C\u00e9l\u00e9bration de mariages dans un cadre atypique avec privatisation du domaine et h\u00e9bergements en lodges.\",\"url\":\"https:\/\/masdenadal.com\/location-evenement-lot\/\",\"image\":\"https:\/\/masdenadal.com\/wp-content\/uploads\/2026\/01\/911-scaled.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":44.426,\"longitude\":1.616},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Date \/ P\u00e9riode\",\"value\":\"Toute l'ann\u00e9e\"},{\"@type\":\"PropertyValue\",\"name\":\"Lieu (ville)\",\"value\":\"Saint-Cirq-Lapopie\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance depuis le camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.)\",\"value\":\"Mariage\"},{\"@type\":\"PropertyValue\",\"name\":\"Astuce ou commentaire\",\"value\":\"Un lieu unique pour un mariage inoubliable.\"},{\"@type\":\"PropertyValue\",\"name\":\"Adresse compl\u00e8te\",\"value\":\"Mas de Nadal, 46330 Saint-Cirq-Lapopie, France\"}]}}]}]}<\/script>\n\n  \n  <!-- Injection des labels pour le JS (modal) -->\n  <script>\n    var emFieldLabels = {\"name\":\"Nom de l'\\u00e9v\\u00e9nement\",\"distance_kilometers\":\"Distance depuis le camping (km)\",\"driving_time_minutes\":\"Temps en voiture (min)\",\"must_see_places\":\"Lieux \\\/ Activit\\u00e9s incontournables\",\"markets_local_events\":\"March\\u00e9s \\\/ \\u00e9v\\u00e9nements locaux\",\"restaurants_specialities\":\"Restaurants \\\/ sp\\u00e9cialit\\u00e9s\",\"comment\":\"Astuce ou commentaire\",\"link\":\"Lien\",\"image\":\"Image \\\/ Photo (URL)\",\"address\":\"Adresse compl\\u00e8te\",\"gps_coordinates_longitude\":\"Coordonn\\u00e9es GPS Longitude\",\"gps_coordinates_latitude\":\"Coordonn\\u00e9es GPS Latitude\",\"type\":\"Type d\\u2019\\u00e9v\\u00e9nement (march\\u00e9, festival, sport, etc.)\",\"place\":\"Ville \\\/ Zone\",\"distance_km\":\"Distance depuis le camping (km)\",\"duration\":\"Dur\\u00e9e moyenne\",\"price\":\"Tarif (si payant)\",\"booking_necessary\":\"R\\u00e9servation n\\u00e9cessaire ?\",\"date_period\":\"Date \\\/ P\\u00e9riode\",\"location\":\"Lieu (ville)\",\"description\":\"Description rapide\"};\n  <\/script>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     HTML \u2014 Interface principale\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n\n  <div class=\"em-wrap\">\n\n    <!-- \u2500\u2500\u2500 Header : titre \u2500\u2500\u2500 -->\n    <div class=\"em-header\">\n      <div>\n        <h1 class=\"em-header-title\">D\u00e9couvrez autour de vous<\/h1>\n        <p class=\"em-header-sub\">11 fiche(s) dans 3 cat\u00e9gorie(s)<\/p>\n      <\/div>\n      <button class=\"em-map-toggle active\" id=\"em-map-toggle\">\ud83d\udccd Carte<\/button>\n    <\/div>\n\n\n\n    <!-- \u2500\u2500\u2500 Layout principal : sidebar filtres + grille de cards \u2500\u2500\u2500 -->\n    <div class=\"em-layout\">\n\n      <!-- Sidebar \u2014 Filtres par type et \u00e9quipements -->\n      <aside class=\"em-sidebar\">\n        <div class=\"em-filters collapsed\">\n          <button type=\"button\" class=\"em-filters-title\" aria-expanded=\"false\">\n            <span>\n              <span class=\"em-filters-title-main\">\n                <svg class=\"em-filters-title-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n                  <path d=\"M4 6h16M7 12h10M10 18h4\"><\/path>\n                <\/svg>\n                <span>Filtres<\/span>\n              <\/span>\n              <span class=\"em-filters-title-hint\">Affiner les r\u00e9sultats par type ou \u00e9quipement<\/span>\n            <\/span>\n          <\/button>\n          <div class=\"em-stats\">\n\n            <div class=\"em-stat\">Total : <strong id=\"em-stat-total\">11<\/strong><\/div>\n            <div class=\"em-stat\">Affich\u00e9s : <strong id=\"em-stat-visible\">11<\/strong><\/div>\n          <\/div>\n          <div class=\"em-filter-group\">\n            <label class=\"em-filter-label\">Type<\/label>\n                          <label class=\"em-filter-check\"><input type=\"checkbox\" value=\"city\" class=\"em-filter-type\" checked><span>Villes aux alentours<\/span><\/label>\n                          <label class=\"em-filter-check\"><input type=\"checkbox\" value=\"activity\" class=\"em-filter-type\" checked><span>Activit\u00e9s et lieux recommand\u00e9s<\/span><\/label>\n                          <label class=\"em-filter-check\"><input type=\"checkbox\" value=\"event\" class=\"em-filter-type\" checked><span>\u00c9v\u00e9nements recommand\u00e9s<\/span><\/label>\n                      <\/div>\n          \n          <!-- \u2500\u2500\u2500 Recherche (sous les filtres) \u2500\u2500\u2500 -->\n          <div class=\"em-search-wrap\">\n            <svg class=\"em-search-icon\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n              <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"><\/path>\n            <\/svg>\n            <input type=\"text\" class=\"em-search\" id=\"em-search\" placeholder=\"Rechercher une fiche...\">\n          <\/div>\n          <button class=\"em-filter-reset\" id=\"em-reset-filters\">R\u00e9initialiser<\/button>\n        <\/div>\n      <\/aside>\n\n      <!-- Contenu principal \u2014 Compteurs + grille de cards -->\n      <main class=\"em-main\">\n\n        <!-- \u2500\u2500\u2500 Onglets de cat\u00e9gories (affich\u00e9s si > 1 cat\u00e9gorie) \u2500\u2500\u2500 -->\n                  <div class=\"em-tabs\" id=\"em-tabs\">\n\n            <button class=\"em-tab active\" data-filter=\"all\">Tout<span class=\"em-tab-count\">11<\/span><\/button>\n                          <button class=\"em-tab\" data-filter=\"city\">Villes aux alentours<span class=\"em-tab-count\">5<\/span><\/button>\n                          <button class=\"em-tab\" data-filter=\"activity\">Activit\u00e9s et lieux recommand\u00e9s<span class=\"em-tab-count\">4<\/span><\/button>\n                          <button class=\"em-tab\" data-filter=\"event\">\u00c9v\u00e9nements recommand\u00e9s<span class=\"em-tab-count\">2<\/span><\/button>\n                      <\/div>\n        \n        <div class=\"em-main-body\">\n          <!-- \u2500\u2500\u2500 Carte interactive (affich\u00e9e si des points GPS existent) \u2500\u2500\u2500 -->\n                      <div class=\"em-map-section\">\n              <div class=\"em-map-wrap\" id=\"em-map-wrap\">\n                <div id=\"em-map\" class=\"em-map\"><\/div>\n                <div class=\"em-map-legend\">\n                                                          <div class=\"em-map-legend-item\" data-type=\"city\">\n                      <span class=\"em-map-legend-dot\" style=\"background:#3b82f6;\"><\/span>\n                      Villes aux alentours                    <\/div>\n                                                          <div class=\"em-map-legend-item\" data-type=\"activity\">\n                      <span class=\"em-map-legend-dot\" style=\"background:#a855f7;\"><\/span>\n                      Activit\u00e9s et lieux recommand\u00e9s                    <\/div>\n                                                          <div class=\"em-map-legend-item\" data-type=\"event\">\n                      <span class=\"em-map-legend-dot\" style=\"background:#ef4444;\"><\/span>\n                      \u00c9v\u00e9nements recommand\u00e9s                    <\/div>\n                                  <\/div>\n              <\/div>\n            <\/div>\n          \n          <div class=\"em-cards\" id=\"em-cards\">\n                          <article class=\"em-card\"\n                data-type=\"city\"\n                data-features=\"\"\n                data-name=\"cajarc\"\n                data-json=\"{&quot;name&quot;:&quot;Cajarc&quot;,&quot;image&quot;:&quot;https:\\\/\\\/woody.cloudly.space\\\/app\\\/uploads\\\/lot-tourisme\\\/2020\\\/12\\\/thumbs\\\/web21-190916174831-village-de-cajarc-christophe-bouthe-agence-vent-dautan-1920x960-crop-1615992091.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-lot.com\\\/cajarc&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Cajarc&quot;,&quot;distance_kilometers&quot;:10,&quot;driving_time_minutes&quot;:15,&quot;must_see_places&quot;:&quot;Place de la Halle, \\u00c9glise Saint-Pierre, Mus\\u00e9e de l&#039;Artisanat&quot;,&quot;markets_local_events&quot;:&quot;March\\u00e9 hebdomadaire le vendredi matin, F\\u00eate de la Saint-Jean en juin&quot;,&quot;restaurants_specialities&quot;:&quot;Truffade, Aligot, Viande de boeuf de l&#039;Aubrac&quot;,&quot;comment&quot;:&quot;Charmant village m\\u00e9di\\u00e9val avec des ruelles pittoresques et une belle vue sur la vall\\u00e9e du Lot.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-lot.com\\\/cajarc&quot;,&quot;image&quot;:&quot;https:\\\/\\\/woody.cloudly.space\\\/app\\\/uploads\\\/lot-tourisme\\\/2020\\\/12\\\/thumbs\\\/web21-190916174831-village-de-cajarc-christophe-bouthe-agence-vent-dautan-1920x960-crop-1615992091.jpg&quot;,&quot;address&quot;:&quot;Cajarc, 46160&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.8783&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4700&quot;},&quot;category&quot;:&quot;Villes aux alentours&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/woody.cloudly.space\/app\/uploads\/lot-tourisme\/2020\/12\/thumbs\/web21-190916174831-village-de-cajarc-christophe-bouthe-agence-vent-dautan-1920x960-crop-1615992091.jpg\" alt=\"Cajarc\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-city\">Villes aux alentours<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Cajarc<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-blue\">10 km<\/span>\n                                            <span class=\"em-tag em-tag-orange\">15 min<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieux \/ Activit\u00e9s incontournables :<\/span>\n                        <span class=\"em-card-field-value\">Place de la Halle, \u00c9glise Saint-Pierre, Mus\u00e9e de l&#039;Artisanat<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">March\u00e9s \/ \u00e9v\u00e9nements locaux :<\/span>\n                        <span class=\"em-card-field-value\">March\u00e9 hebdomadaire le vendredi matin, F\u00eate de la Saint-Jean<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Restaurants \/ sp\u00e9cialit\u00e9s :<\/span>\n                        <span class=\"em-card-field-value\">Truffade, Aligot, Viande de boeuf de l&#039;Aubrac<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"city\"\n                data-features=\"\"\n                data-name=\"saint-cirq-lapopie\"\n                data-json=\"{&quot;name&quot;:&quot;Saint-Cirq-Lapopie&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/village-medieval-saint-cirq-lapopie.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-saint-cirq-lapopie\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Saint-Cirq-Lapopie&quot;,&quot;distance_kilometers&quot;:15,&quot;driving_time_minutes&quot;:20,&quot;must_see_places&quot;:&quot;Place du Sombral, \\u00c9glise Saint-Cirq, Ch\\u00e2teau de Saint-Cirq-Lapopie&quot;,&quot;markets_local_events&quot;:&quot;March\\u00e9 artisanal le dimanche matin, F\\u00eate de la Saint-Cirq en ao\\u00fbt&quot;,&quot;restaurants_specialities&quot;:&quot;C\\u00e8pes, Foie gras, Vin de Cahors&quot;,&quot;comment&quot;:&quot;Class\\u00e9 parmi les plus beaux villages de France, offrant des panoramas exceptionnels sur la vall\\u00e9e du Lot.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-saint-cirq-lapopie\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/village-medieval-saint-cirq-lapopie.webp&quot;,&quot;address&quot;:&quot;Saint-Cirq-Lapopie, 46330&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.6167&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4167&quot;},&quot;category&quot;:&quot;Villes aux alentours&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/village-medieval-saint-cirq-lapopie.webp\" alt=\"Saint-Cirq-Lapopie\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-city\">Villes aux alentours<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Saint-Cirq-Lapopie<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-blue\">15 km<\/span>\n                                            <span class=\"em-tag em-tag-orange\">20 min<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieux \/ Activit\u00e9s incontournables :<\/span>\n                        <span class=\"em-card-field-value\">Place du Sombral, \u00c9glise Saint-Cirq, Ch\u00e2teau de Saint-Cirq-L<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">March\u00e9s \/ \u00e9v\u00e9nements locaux :<\/span>\n                        <span class=\"em-card-field-value\">March\u00e9 artisanal le dimanche matin, F\u00eate de la Saint-Cirq en<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Restaurants \/ sp\u00e9cialit\u00e9s :<\/span>\n                        <span class=\"em-card-field-value\">C\u00e8pes, Foie gras, Vin de Cahors<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"city\"\n                data-features=\"\"\n                data-name=\"figeac\"\n                data-json=\"{&quot;name&quot;:&quot;Figeac&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/camping-pres-de-figeac.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-figeac\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Figeac&quot;,&quot;distance_kilometers&quot;:25,&quot;driving_time_minutes&quot;:30,&quot;must_see_places&quot;:&quot;Place Champollion, Mus\\u00e9e Champollion, H\\u00f4tel de la Monnaie&quot;,&quot;markets_local_events&quot;:&quot;March\\u00e9 couvert tous les samedis matin, Festival de la Musique en juillet&quot;,&quot;restaurants_specialities&quot;:&quot;Truffade, C\\u00e8pes, Vin de Cahors&quot;,&quot;comment&quot;:&quot;Ville d&#039;art et d&#039;histoire, berceau de Jean-Fran\\u00e7ois Champollion, offrant un riche patrimoine architectural.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-figeac\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/camping-pres-de-figeac.webp&quot;,&quot;address&quot;:&quot;Figeac, 46100&quot;,&quot;gps_coordinates_longitude&quot;:&quot;2.0490&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.6167&quot;},&quot;category&quot;:&quot;Villes aux alentours&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/camping-pres-de-figeac.webp\" alt=\"Figeac\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-city\">Villes aux alentours<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Figeac<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-blue\">25 km<\/span>\n                                            <span class=\"em-tag em-tag-orange\">30 min<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieux \/ Activit\u00e9s incontournables :<\/span>\n                        <span class=\"em-card-field-value\">Place Champollion, Mus\u00e9e Champollion, H\u00f4tel de la Monnaie<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">March\u00e9s \/ \u00e9v\u00e9nements locaux :<\/span>\n                        <span class=\"em-card-field-value\">March\u00e9 couvert tous les samedis matin, Festival de la Musiqu<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Restaurants \/ sp\u00e9cialit\u00e9s :<\/span>\n                        <span class=\"em-card-field-value\">Truffade, C\u00e8pes, Vin de Cahors<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"city\"\n                data-features=\"\"\n                data-name=\"cahors\"\n                data-json=\"{&quot;name&quot;:&quot;Cahors&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/cahors-lot.png&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-cahors\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Cahors&quot;,&quot;distance_kilometers&quot;:&quot;43&quot;,&quot;driving_time_minutes&quot;:&quot;47&quot;,&quot;must_see_places&quot;:&quot;Pont Valentr\\u00e9, Cath\\u00e9drale Saint-\\u00c9tienne, Place Fran\\u00e7ois Mitterrand&quot;,&quot;markets_local_events&quot;:&quot;March\\u00e9 couvert tous les mercredis et samedis matin, Festival de Jazz en juillet&quot;,&quot;restaurants_specialities&quot;:&quot;Vin de Cahors, Foie gras, Truffade&quot;,&quot;comment&quot;:&quot;Pr\\u00e9fecture du Lot, r\\u00e9put\\u00e9e pour son vin et son patrimoine m\\u00e9di\\u00e9val.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-cahors\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/cahors-lot.png&quot;,&quot;address&quot;:&quot;Cahors, 46000&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.4444&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4500&quot;},&quot;category&quot;:&quot;Villes aux alentours&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/cahors-lot.png\" alt=\"Cahors\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-city\">Villes aux alentours<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Cahors<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-blue\">43 km<\/span>\n                                            <span class=\"em-tag em-tag-orange\">47 min<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieux \/ Activit\u00e9s incontournables :<\/span>\n                        <span class=\"em-card-field-value\">Pont Valentr\u00e9, Cath\u00e9drale Saint-\u00c9tienne, Place Fran\u00e7ois Mitt<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">March\u00e9s \/ \u00e9v\u00e9nements locaux :<\/span>\n                        <span class=\"em-card-field-value\">March\u00e9 couvert tous les mercredis et samedis matin, Festival<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Restaurants \/ sp\u00e9cialit\u00e9s :<\/span>\n                        <span class=\"em-card-field-value\">Vin de Cahors, Foie gras, Truffade<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"city\"\n                data-features=\"\"\n                data-name=\"lacapelle-marival\"\n                data-json=\"{&quot;name&quot;:&quot;Lacapelle-Marival&quot;,&quot;image&quot;:&quot;https:\\\/\\\/upload.wikimedia.org\\\/wikipedia\\\/commons\\\/2\\\/24\\\/Chateau_lacapelle_marival_facade_sud_2.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-lot.com\\\/lacapelle-marival\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Lacapelle-Marival&quot;,&quot;distance_kilometers&quot;:&quot;33&quot;,&quot;driving_time_minutes&quot;:&quot;37&quot;,&quot;must_see_places&quot;:&quot;Ch\\u00e2teau de Lacapelle-Marival, \\u00c9glise Saint-Pierre, Place de la Mairie&quot;,&quot;markets_local_events&quot;:&quot;March\\u00e9 hebdomadaire le mardi matin, F\\u00eate de la Saint-Pierre en juillet&quot;,&quot;restaurants_specialities&quot;:&quot;Truffade, C\\u00e8pes, Viande de boeuf de l&#039;Aubrac&quot;,&quot;comment&quot;:&quot;Petit village charmant avec un riche patrimoine historique et une belle place centrale.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-lot.com\\\/lacapelle-marival\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/upload.wikimedia.org\\\/wikipedia\\\/commons\\\/2\\\/24\\\/Chateau_lacapelle_marival_facade_sud_2.jpg&quot;,&quot;address&quot;:&quot;Lacapelle-Marival, 46120&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.8833&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.6167&quot;},&quot;category&quot;:&quot;Villes aux alentours&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/24\/Chateau_lacapelle_marival_facade_sud_2.jpg\" alt=\"Lacapelle-Marival\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-city\">Villes aux alentours<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Lacapelle-Marival<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-blue\">33 km<\/span>\n                                            <span class=\"em-tag em-tag-orange\">37 min<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieux \/ Activit\u00e9s incontournables :<\/span>\n                        <span class=\"em-card-field-value\">Ch\u00e2teau de Lacapelle-Marival, \u00c9glise Saint-Pierre, Place de <\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">March\u00e9s \/ \u00e9v\u00e9nements locaux :<\/span>\n                        <span class=\"em-card-field-value\">March\u00e9 hebdomadaire le mardi matin, F\u00eate de la Saint-Pierre <\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Restaurants \/ sp\u00e9cialit\u00e9s :<\/span>\n                        <span class=\"em-card-field-value\">Truffade, C\u00e8pes, Viande de boeuf de l&#039;Aubrac<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"activity\"\n                data-features=\"\"\n                data-name=\"randonn\u00e9e dans le parc naturel des causses du quercy\"\n                data-json=\"{&quot;name&quot;:&quot;Randonn\\u00e9e dans le Parc Naturel des Causses du Quercy&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/parc-nature-des-causses-de-quercy.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-lot\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Randonn\\u00e9e dans le Parc Naturel des Causses du Quercy&quot;,&quot;type&quot;:&quot;nature&quot;,&quot;place&quot;:&quot;Sauliac-sur-C\\u00e9l\\u00e9&quot;,&quot;distance_km&quot;:&quot;0&quot;,&quot;duration&quot;:&quot;variable&quot;,&quot;price&quot;:&quot;gratuit&quot;,&quot;booking_necessary&quot;:&quot;non&quot;,&quot;comment&quot;:&quot;Explorez les sentiers du Parc Naturel des Causses du Quercy pour d\\u00e9couvrir une faune et une flore exceptionnelles.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-lot\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/parc-nature-des-causses-de-quercy.webp&quot;,&quot;address&quot;:&quot;400, Chemin du Mas de Nadal, 2245, Route de Blars, 46330 \\u2013 Sauliac-sur-C\\u00e9l\\u00e9&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.7365&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4262&quot;},&quot;category&quot;:&quot;Activit\\u00e9s et lieux recommand\\u00e9s&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/parc-nature-des-causses-de-quercy.webp\" alt=\"Randonn\u00e9e dans le Parc Naturel des Causses du Quercy\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-activity\">Activit\u00e9s et lieux recommand\u00e9s<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Randonn\u00e9e dans le Parc Naturel des Causses du Quercy<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-green\">gratuit<\/span>\n                                            <span class=\"em-tag em-tag-blue\">Sauliac-sur-C\u00e9l\u00e9<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.) :<\/span>\n                        <span class=\"em-card-field-value\">nature<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Dur\u00e9e moyenne :<\/span>\n                        <span class=\"em-card-field-value\">variable<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">R\u00e9servation n\u00e9cessaire ? :<\/span>\n                        <span class=\"em-card-field-value\">non<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"activity\"\n                data-features=\"\"\n                data-name=\"baignade au bord de la rivi\u00e8re c\u00e9l\u00e9\"\n                data-json=\"{&quot;name&quot;:&quot;Baignade au bord de la rivi\\u00e8re C\\u00e9l\\u00e9&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/riviere-plage.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/plages-rivieres-lot\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Baignade au bord de la rivi\\u00e8re C\\u00e9l\\u00e9&quot;,&quot;type&quot;:&quot;nature&quot;,&quot;place&quot;:&quot;Sauliac-sur-C\\u00e9l\\u00e9&quot;,&quot;distance_km&quot;:&quot;0&quot;,&quot;duration&quot;:&quot;variable&quot;,&quot;price&quot;:&quot;gratuit&quot;,&quot;booking_necessary&quot;:&quot;non&quot;,&quot;comment&quot;:&quot;Profitez des plages naturelles le long de la rivi\\u00e8re C\\u00e9l\\u00e9 pour une baignade rafra\\u00eechissante.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/plages-rivieres-lot\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/riviere-plage.webp&quot;,&quot;address&quot;:&quot;400, Chemin du Mas de Nadal, 2245, Route de Blars, 46330 \\u2013 Sauliac-sur-C\\u00e9l\\u00e9&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.7365&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4262&quot;},&quot;category&quot;:&quot;Activit\\u00e9s et lieux recommand\\u00e9s&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/riviere-plage.webp\" alt=\"Baignade au bord de la rivi\u00e8re C\u00e9l\u00e9\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-activity\">Activit\u00e9s et lieux recommand\u00e9s<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Baignade au bord de la rivi\u00e8re C\u00e9l\u00e9<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-green\">gratuit<\/span>\n                                            <span class=\"em-tag em-tag-blue\">Sauliac-sur-C\u00e9l\u00e9<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.) :<\/span>\n                        <span class=\"em-card-field-value\">nature<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Dur\u00e9e moyenne :<\/span>\n                        <span class=\"em-card-field-value\">variable<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">R\u00e9servation n\u00e9cessaire ? :<\/span>\n                        <span class=\"em-card-field-value\">non<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"activity\"\n                data-features=\"\"\n                data-name=\"visite du village m\u00e9di\u00e9val de saint-cirq-lapopie\"\n                data-json=\"{&quot;name&quot;:&quot;Visite du village m\\u00e9di\\u00e9val de Saint-Cirq-Lapopie&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/village-medieval-saint-cirq-lapopie.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-saint-cirq-lapopie\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Visite du village m\\u00e9di\\u00e9val de Saint-Cirq-Lapopie&quot;,&quot;type&quot;:&quot;culture&quot;,&quot;place&quot;:&quot;Saint-Cirq-Lapopie&quot;,&quot;distance_km&quot;:&quot;10&quot;,&quot;duration&quot;:&quot;2 heures&quot;,&quot;price&quot;:&quot;gratuit&quot;,&quot;booking_necessary&quot;:&quot;non&quot;,&quot;comment&quot;:&quot;Explorez les ruelles pittoresques de ce village perch\\u00e9 offrant des vues imprenables sur la vall\\u00e9e du Lot.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/tourisme-saint-cirq-lapopie\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2024\\\/12\\\/village-medieval-saint-cirq-lapopie.webp&quot;,&quot;address&quot;:&quot;Saint-Cirq-Lapopie, 46330&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.6167&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4167&quot;},&quot;category&quot;:&quot;Activit\\u00e9s et lieux recommand\\u00e9s&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2024\/12\/village-medieval-saint-cirq-lapopie.webp\" alt=\"Visite du village m\u00e9di\u00e9val de Saint-Cirq-Lapopie\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-activity\">Activit\u00e9s et lieux recommand\u00e9s<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Visite du village m\u00e9di\u00e9val de Saint-Cirq-Lapopie<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-green\">gratuit<\/span>\n                                            <span class=\"em-tag em-tag-blue\">Saint-Cirq-Lapopie<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.) :<\/span>\n                        <span class=\"em-card-field-value\">culture<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance depuis le camping (km) :<\/span>\n                        <span class=\"em-card-field-value\">10<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Dur\u00e9e moyenne :<\/span>\n                        <span class=\"em-card-field-value\">2 heures<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"activity\"\n                data-features=\"\"\n                data-name=\"piscine du camping mas de nadal\"\n                data-json=\"{&quot;name&quot;:&quot;Piscine du camping Mas de Nadal&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/piscine-en-fin-de-journee.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/camping-piscine-chauffee-lot\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Piscine du camping Mas de Nadal&quot;,&quot;type&quot;:&quot;Loisir aquatique&quot;,&quot;place&quot;:&quot;Sauliac-sur-C\\u00e9l\\u00e9&quot;,&quot;distance_km&quot;:&quot;0&quot;,&quot;duration&quot;:&quot;Variable&quot;,&quot;price&quot;:&quot;Inclus dans le tarif du s\\u00e9jour&quot;,&quot;booking_necessary&quot;:&quot;Non&quot;,&quot;comment&quot;:&quot;Profitez d&#039;une piscine ext\\u00e9rieure chauff\\u00e9e \\u00e0 d\\u00e9bordement avec une belle terrasse et des bains de soleil. Id\\u00e9ale pour se d\\u00e9tendre apr\\u00e8s une journ\\u00e9e d&#039;activit\\u00e9s.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/camping-piscine-chauffee-lot\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/piscine-en-fin-de-journee.webp&quot;,&quot;address&quot;:&quot;400, Chemin du Mas de Nadal, 2245, Route de Blars, 46330 \\u2013 Sauliac-sur-C\\u00e9l\\u00e9&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.7365&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4264&quot;},&quot;category&quot;:&quot;Activit\\u00e9s et lieux recommand\\u00e9s&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/piscine-en-fin-de-journee.webp\" alt=\"Piscine du camping Mas de Nadal\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-activity\">Activit\u00e9s et lieux recommand\u00e9s<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Piscine du camping Mas de Nadal<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-green\">Inclus dans le tarif du s\u00e9jour<\/span>\n                                            <span class=\"em-tag em-tag-blue\">Sauliac-sur-C\u00e9l\u00e9<\/span>\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.) :<\/span>\n                        <span class=\"em-card-field-value\">Loisir aquatique<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Dur\u00e9e moyenne :<\/span>\n                        <span class=\"em-card-field-value\">Variable<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">R\u00e9servation n\u00e9cessaire ? :<\/span>\n                        <span class=\"em-card-field-value\">Non<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"event\"\n                data-features=\"\"\n                data-name=\"mariage au mas de nadal\"\n                data-json=\"{&quot;name&quot;:&quot;Mariage au Mas de Nadal&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/lounge-evenementiel-mas-de-nadal.webp&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/location-evenement-lot\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Mariage au Mas de Nadal&quot;,&quot;date_period&quot;:&quot;Toute l&#039;ann\\u00e9e&quot;,&quot;location&quot;:&quot;Sauliac sur C\\u00e9l\\u00e9 &quot;,&quot;distance_km&quot;:&quot;0&quot;,&quot;description&quot;:&quot;Un domaine hors du temps, rien que pour vous\\n\\nLe Mas de Nadal, c\\u2019est une bulle naturelle au c\\u0153ur du Lot.\\nUn lieu \\u00e0 taille humaine, entour\\u00e9 de verdure, o\\u00f9 l\\u2019on se sent imm\\u00e9diatement ailleurs.\\n\\nSite enti\\u00e8rement privatisable\\nEnvironnement calme et s\\u00e9curis\\u00e9\\nLieu pi\\u00e9ton\\nClairi\\u00e8res, for\\u00eat, grands espaces ouverts\\nAtmosph\\u00e8re intime et chaleureuse\\nIci, vos invit\\u00e9s ne sont pas dans une salle impersonnelle.\\nIls vivent une exp\\u00e9rience.\\n\\nUn mariage au Mas de Nadal, c\\u2019est :\\n\\nLa nature comme d\\u00e9cor\\nLes lumi\\u00e8res sous les arbres\\nUne soir\\u00e9e qui se prolonge sous les \\u00e9toiles&quot;,&quot;type&quot;:&quot;Mariage&quot;,&quot;comment&quot;:&quot;&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/location-evenement-lot\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/lounge-evenementiel-mas-de-nadal.webp&quot;,&quot;address&quot;:&quot;Mas de Nadal, 46330 Saint-Cirq-Lapopie, France&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.6160&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4260&quot;},&quot;category&quot;:&quot;\\u00c9v\\u00e9nements recommand\\u00e9s&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2025\/01\/lounge-evenementiel-mas-de-nadal.webp\" alt=\"Mariage au Mas de Nadal\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-event\">\u00c9v\u00e9nements recommand\u00e9s<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Mariage au Mas de Nadal<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Date \/ P\u00e9riode :<\/span>\n                        <span class=\"em-card-field-value\">Toute l&#039;ann\u00e9e<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieu (ville) :<\/span>\n                        <span class=\"em-card-field-value\">Sauliac sur C\u00e9l\u00e9 <\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.) :<\/span>\n                        <span class=\"em-card-field-value\">Mariage<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                          <article class=\"em-card\"\n                data-type=\"event\"\n                data-features=\"\"\n                data-name=\"mariages au mas de nadal\"\n                data-json=\"{&quot;name&quot;:&quot;Mariages au Mas de Nadal&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/911-scaled.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/location-evenement-lot\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Mariages au Mas de Nadal&quot;,&quot;date_period&quot;:&quot;Toute l&#039;ann\\u00e9e&quot;,&quot;location&quot;:&quot;Saint-Cirq-Lapopie&quot;,&quot;distance_km&quot;:&quot;0&quot;,&quot;description&quot;:&quot;C\\u00e9l\\u00e9bration de mariages dans un cadre atypique avec privatisation du domaine et h\\u00e9bergements en lodges.&quot;,&quot;type&quot;:&quot;Mariage&quot;,&quot;comment&quot;:&quot;Un lieu unique pour un mariage inoubliable.&quot;,&quot;link&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/location-evenement-lot\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/masdenadal.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/911-scaled.jpg&quot;,&quot;address&quot;:&quot;Mas de Nadal, 46330 Saint-Cirq-Lapopie, France&quot;,&quot;gps_coordinates_longitude&quot;:&quot;1.6160&quot;,&quot;gps_coordinates_latitude&quot;:&quot;44.4260&quot;},&quot;category&quot;:&quot;\\u00c9v\\u00e9nements recommand\\u00e9s&quot;,&quot;faq&quot;:[],&quot;event&quot;:&quot;&quot;,&quot;video_url&quot;:&quot;&quot;,&quot;video_embed&quot;:null,&quot;documents&quot;:[],&quot;gallery&quot;:[]}\">\n\n                <!-- Image + badge cat\u00e9gorie -->\n                <div class=\"em-card-img-wrap\">\n                                      <img decoding=\"async\" class=\"em-card-img\" src=\"https:\/\/masdenadal.com\/wp-content\/uploads\/2026\/01\/911-scaled.jpg\" alt=\"Mariages au Mas de Nadal\" loading=\"lazy\" onerror=\"this.style.setProperty('display','none','important');this.nextElementSibling.style.display='flex';\">\n                    <div class=\"em-card-placeholder\" style=\"display:none;\">\ud83d\udcf7 Image indisponible<\/div>\n                                    <span class=\"em-card-badge badge-event\">\u00c9v\u00e9nements recommand\u00e9s<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Mariages au Mas de Nadal<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                                          <\/div>\n\n                  <!-- Champs suppl\u00e9mentaires (max 3) -->\n                  <div class=\"em-card-fields\">\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Date \/ P\u00e9riode :<\/span>\n                        <span class=\"em-card-field-value\">Toute l&#039;ann\u00e9e<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Lieu (ville) :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Cirq-Lapopie<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Type d\u2019\u00e9v\u00e9nement (march\u00e9, festival, sport, etc.) :<\/span>\n                        <span class=\"em-card-field-value\">Mariage<\/span>\n                      <\/div>\n                                      <\/div>\n\n                  <!-- Lien vers le d\u00e9tail -->\n                  <div class=\"em-card-footer\">\n                    <span>Voir le d\u00e9tail<\/span>\n                    <svg fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3\"><\/path>\n                    <\/svg>\n                  <\/div>\n                <\/div>\n              <\/article>\n                      <\/div>\n\n          <!-- \u00c9tat vide (aucun r\u00e9sultat apr\u00e8s filtrage) -->\n          <div class=\"em-empty\" id=\"em-empty\" style=\"display:none;\">\n            <p><strong>Aucun r\u00e9sultat<\/strong><br>Modifiez vos filtres pour voir plus de r\u00e9sultats<\/p>\n          <\/div>\n        <\/div>\n      <\/main>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n     JAVASCRIPT \u2014 Filtres, modal, carte Leaflet\n     \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\n\n  <script>\n    (function() {\n      'use strict';\n\n      \/\/ Labels des champs (inject\u00e9s depuis PHP)\n      var FIELD_LABELS = window.emFieldLabels || {};\n\n      \/\/ Cl\u00e9s exclues de la modal (donn\u00e9es internes \/ d\u00e9j\u00e0 affich\u00e9es)\n      var EXCLUDED_KEYS = [\n        'name', 'image', 'images', 'image_url', 'link', 'site_officiel',\n        'gps_coordinates_latitude', 'gps_coordinates_longitude',\n        'latitude', 'longitude', 'latitude_deg', 'longitude_deg',\n        'address', 'available_image_urls'\n      ];\n\n      \/**\n       * Retourne le label lisible d'un champ\n       * Utilise les labels API si disponibles, sinon formate la cl\u00e9\n       *\/\n      function getFieldLabel(key) {\n        if (FIELD_LABELS[key]) return FIELD_LABELS[key];\n        \/\/ Suffixe legacy `_xxxxxxx` (7 alphanum) \u2014 cf. em_field_label() c\u00f4t\u00e9 PHP.\n        var cleaned = key.replace(\/_[a-z0-9]{7}$\/i, '');\n        if (FIELD_LABELS[cleaned]) return FIELD_LABELS[cleaned];\n        return cleaned.replace(\/_\/g, ' ').replace(\/^\\w\/, function(c) {\n          return c.toUpperCase();\n        });\n      }\n\n      \/**\n       * \u00c9chappe le HTML pour \u00e9viter les injections XSS\n       *\/\n      function escapeHtml(str) {\n        if (!str) return '';\n        var div = document.createElement('div');\n        div.textContent = str;\n        return div.innerHTML;\n      }\n\n      \/**\n       * Normalise une cha\u00eene pour une recherche insensible aux accents et \u00e0 la casse\n       * \"Caf\u00e9\" \u2192 \"cafe\" | \"H\u00f4tel\" \u2192 \"hotel\" | \"BI\u00c8RE\" \u2192 \"biere\"\n       *\/\n      function stripAccents(str) {\n        return (str || '').toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, '');\n      }\n\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n      \/\/ FILTRES \u2014 Onglets, checkboxes, recherche\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n      var activeCategoryFilter = 'all';\n      var searchQuery = '';\n\n      \/**\n       * Applique tous les filtres actifs (cat\u00e9gorie, type, \u00e9quipements, recherche)\n       * Met \u00e0 jour la visibilit\u00e9 des cards et les compteurs\n       *\/\n      function applyFilters() {\n        var selectedTypes = Array.from(document.querySelectorAll('.em-filter-type:checked')).map(function(cb) {\n          return cb.value;\n        });\n        var selectedFeatures = Array.from(document.querySelectorAll('.em-filter-feat:checked')).map(function(cb) {\n          return cb.value;\n        });\n        var cards = document.querySelectorAll('.em-card');\n        var visibleCount = 0;\n        var normalizedQuery = stripAccents(searchQuery);\n\n        cards.forEach(function(card) {\n          var cardType = card.getAttribute('data-type');\n          var cardFeatures = (card.getAttribute('data-features') || '').split(',').filter(Boolean);\n          var cardName = card.getAttribute('data-name') || '';\n\n          \/\/ V\u00e9rifier chaque crit\u00e8re de filtre\n          var matchesCategory = (activeCategoryFilter === 'all' || activeCategoryFilter === cardType);\n          var matchesType = selectedTypes.indexOf(cardType) !== -1;\n          var matchesSearch = (normalizedQuery === '' || stripAccents(cardName).indexOf(normalizedQuery) !== -1);\n\n          var isVisible = matchesCategory && matchesType && matchesSearch;\n\n          \/\/ Filtre \u00e9quipements (uniquement pour les h\u00e9bergements)\n          if (isVisible && (cardType === 'accommodation' || cardType === 'accomodation') && selectedFeatures.length > 0) {\n            isVisible = selectedFeatures.every(function(feat) {\n              return cardFeatures.indexOf(feat) !== -1;\n            });\n          }\n\n          card.classList.toggle('em-hidden', !isVisible);\n          if (isVisible) visibleCount++;\n        });\n\n        \/\/ Mise \u00e0 jour des compteurs\n        document.getElementById('em-stat-visible').textContent = visibleCount;\n        document.getElementById('em-empty').style.display = visibleCount === 0 ? 'block' : 'none';\n\n        \/\/ Mise \u00e0 jour des marqueurs de la carte\n        if (typeof updateMapMarkers === 'function') {\n          updateMapMarkers(activeCategoryFilter === 'all' ? selectedTypes : [activeCategoryFilter]);\n        }\n\n        \/\/ Sync visuel de la l\u00e9gende carte avec les filtres actifs\n        document.querySelectorAll('.em-map-legend-item').forEach(function(item) {\n          var type = item.getAttribute('data-type');\n          var matchesCategory = (activeCategoryFilter === 'all' || activeCategoryFilter === type);\n          var matchesType = selectedTypes.indexOf(type) !== -1;\n          item.classList.toggle('em-map-legend-item--off', !(matchesCategory && matchesType));\n        });\n\n        \/\/ Masque le groupe \u00e9quipements si accommodation n'est pas dans les filtres actifs\n        var featGroup = document.querySelector('.em-filter-group .em-filter-label');\n        var equipGroup = Array.from(document.querySelectorAll('.em-filter-group')).find(function(g) {\n          return g.querySelector('.em-filter-feat');\n        });\n\n        if (equipGroup) {\n          var accomActive = (activeCategoryFilter === 'all' || activeCategoryFilter === 'accommodation' || activeCategoryFilter === 'accomodation') &&\n            selectedTypes.some(function(t) {\n              return t === 'accommodation' || t === 'accomodation';\n            });\n          equipGroup.style.display = accomActive ? '' : 'none';\n        }\n      }\n\n      \/**\n       * Synchronise les checkboxes Type avec l'onglet actif\n       * \"all\" \u2192 toutes coch\u00e9es | type X \u2192 seule la checkbox X coch\u00e9e\n       *\/\n      function syncTypeCheckboxesFromTab() {\n        document.querySelectorAll('.em-filter-type').forEach(function(cb) {\n          cb.checked = (activeCategoryFilter === 'all') || (cb.value === activeCategoryFilter);\n        });\n      }\n\n      \/**\n       * Synchronise l'onglet actif avec l'\u00e9tat des checkboxes Type\n       * Toutes coch\u00e9es \u2192 \"all\" | exactement une \u2192 onglet de ce type | sous-ensemble \u2192 aucun onglet (cas personnalis\u00e9)\n       *\/\n      function syncTabsFromTypeCheckboxes() {\n        var typeCbs = Array.from(document.querySelectorAll('.em-filter-type'));\n        var checked = typeCbs.filter(function(cb) {\n          return cb.checked;\n        });\n        var matchingTab = null;\n        if (checked.length === typeCbs.length) matchingTab = 'all';\n        else if (checked.length === 1) matchingTab = checked[0].value;\n        \/\/ sous-ensemble : matchingTab reste null \u2192 aucun onglet n'est actif, le filtre logique tombe sur 'all'\n        activeCategoryFilter = matchingTab || 'all';\n        document.querySelectorAll('.em-tab').forEach(function(t) {\n          t.classList.toggle('active', t.getAttribute('data-filter') === matchingTab);\n        });\n      }\n\n      \/**\n       * Replace le d\u00e9but du layout sous l'\u00e9ventuel header sticky du th\u00e8me.\n       *\/\n      function scrollToLayoutTop() {\n        var layout = document.querySelector('.em-layout');\n        if (!layout) return;\n\n        var headerOffset = parseFloat(\n          getComputedStyle(document.documentElement).getPropertyValue('--em-header-offset')\n        ) || 0;\n        var top = window.scrollY + layout.getBoundingClientRect().top - headerOffset - 16;\n\n        window.scrollTo({\n          top: Math.max(0, top),\n          behavior: 'smooth'\n        });\n      }\n\n      \/\/ \u2500\u2500\u2500 Onglets de cat\u00e9gories \u2500\u2500\u2500\n      document.querySelectorAll('.em-tab').forEach(function(tab) {\n        tab.addEventListener('click', function() {\n          document.querySelectorAll('.em-tab').forEach(function(t) {\n            t.classList.remove('active');\n          });\n          tab.classList.add('active');\n          activeCategoryFilter = tab.getAttribute('data-filter');\n          syncTypeCheckboxesFromTab();\n\n          \/\/ Reset \u00e9quipements si on revient sur \"Tout\" ou un onglet non-accommodation\n          if (activeCategoryFilter !== 'accommodation' && activeCategoryFilter !== 'accomodation') {\n            document.querySelectorAll('.em-filter-feat').forEach(function(cb) {\n              cb.checked = false;\n            });\n          }\n\n          applyFilters();\n          scrollToLayoutTop();\n        });\n      });\n\n      \/\/ \u2500\u2500\u2500 Checkboxes filtres \u2500\u2500\u2500\n      document.querySelectorAll('.em-filter-type, .em-filter-feat').forEach(function(checkbox) {\n        checkbox.addEventListener('change', function() {\n          if (checkbox.classList.contains('em-filter-type')) {\n            syncTabsFromTypeCheckboxes();\n\n            \/\/ Reset \u00e9quipements si accommodation n'est plus le seul type s\u00e9lectionn\u00e9\n            var selectedTypes = Array.from(document.querySelectorAll('.em-filter-type:checked')).map(function(cb) {\n              return cb.value;\n            });\n            var onlyAccom = selectedTypes.every(function(t) {\n              return t === 'accommodation' || t === 'accomodation';\n            });\n            if (!onlyAccom) {\n              document.querySelectorAll('.em-filter-feat').forEach(function(cb) {\n                cb.checked = false;\n              });\n            }\n          }\n\n          \/\/ Si \u00e9quipement coch\u00e9 \u2192 active l'onglet accommodation\n          if (checkbox.classList.contains('em-filter-feat') && checkbox.checked) {\n            activeCategoryFilter = 'accommodation';\n\n            \/\/ Coche uniquement accommodation dans les types\n            document.querySelectorAll('.em-filter-type').forEach(function(cb) {\n              cb.checked = cb.value === 'accommodation' || cb.value === 'accomodation';\n            });\n\n            \/\/ Active l'onglet visuellement\n            document.querySelectorAll('.em-tab').forEach(function(t) {\n              var filter = t.getAttribute('data-filter');\n              t.classList.toggle('active', filter === 'accommodation' || filter === 'accomodation');\n            });\n          }\n\n          applyFilters();\n          scrollToLayoutTop();\n        });\n      });\n\n      \/\/ \u2500\u2500\u2500 L\u00e9gende carte cliquable : toggle de la checkbox Type correspondante \u2500\u2500\u2500\n      \/\/ R\u00e9utilise la pipeline checkbox (sync onglets + applyFilters via dispatchEvent)\n      document.querySelectorAll('.em-map-legend-item').forEach(function(item) {\n        item.addEventListener('click', function() {\n          var type = item.getAttribute('data-type');\n          var typeCb = Array.from(document.querySelectorAll('.em-filter-type')).find(function(cb) {\n            return cb.value === type;\n          });\n          if (typeCb) {\n            typeCb.checked = !typeCb.checked;\n            typeCb.dispatchEvent(new Event('change'));\n          }\n        });\n      });\n\n      \/\/ \u2500\u2500\u2500 Barre de recherche \u2500\u2500\u2500\n      var searchInput = document.getElementById('em-search');\n      if (searchInput) {\n        searchInput.addEventListener('input', function(e) {\n          searchQuery = e.target.value;\n          applyFilters();\n        });\n      }\n\n      \/\/ \u2500\u2500\u2500 Bouton r\u00e9initialiser \u2500\u2500\u2500\n      var resetButton = document.getElementById('em-reset-filters');\n      if (resetButton) {\n        resetButton.addEventListener('click', function() {\n          document.querySelectorAll('.em-filter-type').forEach(function(cb) {\n            cb.checked = true;\n          });\n          document.querySelectorAll('.em-filter-feat').forEach(function(cb) {\n            cb.checked = false;\n          });\n          if (searchInput) searchInput.value = '';\n          searchQuery = '';\n          activeCategoryFilter = 'all';\n\n          \/\/ Remettre l'onglet \"Tout\" actif\n          document.querySelectorAll('.em-tab').forEach(function(t) {\n            t.classList.remove('active');\n          });\n          var allTab = document.querySelector('.em-tab[data-filter=\"all\"]');\n          if (allTab) allTab.classList.add('active');\n\n          applyFilters();\n        });\n      }\n\n      \/\/ Application initiale des filtres\n      applyFilters();\n\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n      \/\/ MODAL \u2014 D\u00e9tail d'une fiche\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n      \/\/ Clic sur une card \u2192 ouvrir la modal\n      document.querySelectorAll('.em-card').forEach(function(card) {\n        card.addEventListener('click', function() {\n          var cardData = JSON.parse(card.getAttribute('data-json'));\n          openDetailModal(cardData);\n        });\n      });\n\n      \/**\n       * Ouvre la modal de d\u00e9tail pour une fiche\n       * Affiche l'image (si disponible), les champs et le lien externe\n       *\/\n      function openDetailModal(item) {\n        var entries = Object.entries(item.data || {}).filter(function(entry) {\n          return EXCLUDED_KEYS.indexOf(entry[0]) === -1 &&\n            entry[1] && entry[1] !== '' &&\n            typeof entry[1] !== 'object';\n        }).map(function(entry) {\n          var value = entry[1];\n          if (value === true || value === 'true') value = 'Oui';\n          else if (value === false || value === 'false') value = 'Non';\n          return {\n            label: getFieldLabel(entry[0]),\n            value: String(value)\n          };\n        });\n\n        var hasImage = item.image && item.image.indexOf('http') === 0;\n        var html = '<div class=\"em-modal\">';\n\n        if (hasImage) {\n          html += '<div class=\"em-modal-img-wrap\">' +\n            '<img decoding=\"async\" class=\"em-modal-img\" src=\"' + escapeHtml(item.image) + '\" alt=\"' + escapeHtml(item.name) + '\" onerror=\"this.style.display=\\'none\\'\">' +\n            '<div class=\"em-modal-img-gradient\"><\/div>' +\n            '<button class=\"em-modal-close\" data-close>&times;<\/button>' +\n            '<div class=\"em-modal-img-info\">' +\n            '<p class=\"em-modal-img-cat\">' + escapeHtml(item.category || '') + '<\/p>' +\n            '<h3 class=\"em-modal-img-title\">' + escapeHtml(item.name) + '<\/h3>' +\n            '<\/div><\/div>';\n        } else {\n          html += '<div class=\"em-modal-header-noimg\"><div>' +\n            '<p class=\"em-modal-header-noimg-cat\">' + escapeHtml(item.category || '') + '<\/p>' +\n            '<h3 class=\"em-modal-header-noimg-title\">' + escapeHtml(item.name) + '<\/h3>' +\n            '<\/div><button class=\"em-modal-close-noimg\" data-close>&times;<\/button><\/div>';\n        }\n\n        html += '<div class=\"em-modal-body\">';\n\n        \/\/ Badge date d'\u00e9v\u00e9nement\n        if (item.event) {\n          html += '<div class=\"em-modal-event\">' +\n            '<svg width=\"14\" height=\"14\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"1.8\" style=\"vertical-align:middle;margin-right:6px\">' +\n            '<path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6.75 3v2.25M17.25 3v2.25M3.75 18.75V7.5a2.25 2.25 0 012.25-2.25h12a2.25 2.25 0 012.25 2.25v11.25m-16.5 0A2.25 2.25 0 006 21h12a2.25 2.25 0 002.25-2.25m-16.5 0V11.25h16.5v7.5M3.75 11.25h16.5\"\/><\/svg>' +\n            escapeHtml(item.event) + '<\/div>';\n        }\n\n        \/\/ Champs g\u00e9n\u00e9riques\n        entries.forEach(function(entry) {\n          html += '<div class=\"em-modal-entry\">' +\n            '<p class=\"em-modal-entry-label\">' + escapeHtml(entry.label) + '<\/p>' +\n            '<p class=\"em-modal-entry-value\">' + escapeHtml(entry.value) + '<\/p>' +\n            '<\/div>';\n        });\n\n        \/\/ Vid\u00e9o (iframe ou <video>)\n        if (item.video_url) {\n          html += '<div class=\"em-modal-entry\"><p class=\"em-modal-entry-label\">Vid\u00e9o<\/p>';\n          var embed = item.video_embed;\n          if (embed && (embed.type === 'youtube' || embed.type === 'vimeo')) {\n            html += '<div class=\"em-modal-video-wrap\"><iframe src=\"' + escapeHtml(embed.src) + '\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen referrerpolicy=\"strict-origin-when-cross-origin\"><\/iframe><\/div>';\n          } else if (embed && embed.type === 'file') {\n            html += '<video src=\"' + escapeHtml(embed.src) + '\" controls preload=\"metadata\" class=\"em-modal-video-file\"><\/video>';\n          } else {\n            html += '<a href=\"' + escapeHtml(item.video_url) + '\" target=\"_blank\" rel=\"noopener\" class=\"em-modal-link\">' + escapeHtml(item.video_url) + '<\/a>';\n          }\n          html += '<\/div>';\n        }\n\n        \/\/ Galerie d'images (template has_gallery=true)\n        if (Array.isArray(item.gallery) && item.gallery.length > 0) {\n          html += '<div class=\"em-modal-entry\"><p class=\"em-modal-entry-label\">Galerie (' + item.gallery.length + ')<\/p>' +\n            '<div class=\"em-modal-gallery\">';\n          item.gallery.forEach(function(imgUrl) {\n            if (typeof imgUrl !== 'string' || imgUrl === '') return;\n            html += '<a href=\"' + escapeHtml(imgUrl) + '\" target=\"_blank\" rel=\"noopener\" class=\"em-modal-gallery-item\">' +\n              '<img decoding=\"async\" src=\"' + escapeHtml(imgUrl) + '\" alt=\"\" loading=\"lazy\" \/><\/a>';\n          });\n          html += '<\/div><\/div>';\n        }\n\n        \/\/ Documents PDF (template has_documents=true)\n        if (Array.isArray(item.documents) && item.documents.length > 0) {\n          html += '<div class=\"em-modal-entry\"><p class=\"em-modal-entry-label\">Documents (' + item.documents.length + ')<\/p>' +\n            '<ul class=\"em-modal-docs\">';\n          item.documents.forEach(function(doc) {\n            if (!doc || typeof doc !== 'object' || !doc.url) return;\n            var docName = doc.nom || 'Document';\n            var docType = (doc.type || '').toString().toLowerCase();\n            html += '<li><a href=\"' + escapeHtml(doc.url) + '\" target=\"_blank\" rel=\"noopener\" class=\"em-modal-doc\">' +\n              '<svg width=\"16\" height=\"16\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">' +\n              '<path fill-rule=\"evenodd\" d=\"M4 4a2 2 0 0 1 2-2h4.586A2 2 0 0 1 12 2.586L15.414 6A2 2 0 0 1 16 7.414V16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4Z\" clip-rule=\"evenodd\" \/><\/svg>' +\n              '<span class=\"em-modal-doc-name\">' + escapeHtml(docName) + '<\/span>' +\n              (docType ? '<span class=\"em-modal-doc-type\">' + escapeHtml(docType) + '<\/span>' : '') +\n              '<\/a><\/li>';\n          });\n          html += '<\/ul><\/div>';\n        }\n\n        \/\/ Questions fr\u00e9quentes\n        if (Array.isArray(item.faq) && item.faq.length > 0) {\n          html += '<div class=\"em-modal-faq\">' +\n            '<p class=\"em-modal-entry-label\">Questions fr\u00e9quentes (' + item.faq.length + ')<\/p>';\n          item.faq.forEach(function(qa) {\n            html += '<div class=\"em-modal-faq-item\">' +\n              '<div class=\"em-modal-faq-q\">' + escapeHtml(qa.question) + '<\/div>' +\n              '<div class=\"em-modal-faq-a' + (qa.answer ? '' : ' em-modal-faq-a-empty') + '\">' +\n              escapeHtml(qa.answer || 'Pas encore de r\u00e9ponse.') +\n              '<\/div><\/div>';\n          });\n          html += '<\/div>';\n        }\n\n        html += '<\/div>';\n\n        html += '<div class=\"em-modal-footer\">';\n        if (item.link && item.link.indexOf('http') === 0) {\n          html += '<a href=\"' + escapeHtml(item.link) + '\" target=\"_blank\" rel=\"noopener\" class=\"em-modal-link\">Ouvrir le lien &rarr;<\/a>';\n        } else {\n          html += '<span><\/span>';\n        }\n        html += '<button class=\"em-modal-close-btn\" data-close>Fermer<\/button><\/div><\/div>';\n\n        var overlay = document.createElement('div');\n        overlay.className = 'em-modal-overlay';\n        overlay.innerHTML = html;\n        document.body.appendChild(overlay);\n\n        \/\/ Bloque le scroll arri\u00e8re-plan\n        document.body.style.overflow = 'hidden';\n\n        function closeModal() {\n          document.body.style.overflow = '';\n          overlay.remove();\n        }\n\n        overlay.querySelectorAll('[data-close]').forEach(function(btn) {\n          btn.addEventListener('click', closeModal);\n        });\n        overlay.addEventListener('click', function(e) {\n          if (e.target === overlay) closeModal();\n        });\n        document.addEventListener('keydown', function escapeHandler(e) {\n          if (e.key === 'Escape') {\n            closeModal();\n            document.removeEventListener('keydown', escapeHandler);\n          }\n        });\n      }\n\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n      \/\/ CARTE LEAFLET \u2014 Marqueurs + interactions\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n      var initLeafletTries = 0;\n      function initLeafletMap() {\n        var mapElement = document.getElementById('em-map');\n        \/\/ Si le div n'est pas encore pars\u00e9 (script d\u00e9plac\u00e9 par un optimiseur) ou si Leaflet\n        \/\/ est encore en train de se charger (defer\/async), on retente. Cap \u00e0 100 essais (~10s).\n        if (!mapElement || typeof L === 'undefined') {\n          if (++initLeafletTries > 100) return;\n          return setTimeout(initLeafletMap, 100);\n        }\n\n        \/\/ Initialisation de la carte\n        var map = L.map(mapElement, {\n          zoomControl: false,\n          attributionControl: false,\n          scrollWheelZoom: false,\n        }).setView([46.6, 1.9], 6);\n\n        \/\/ Tuiles en premier\n        L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/voyager\/{z}\/{x}\/{y}{r}.png', {\n          maxZoom: 19,\n          subdomains: 'abcd'\n        }).addTo(map);\n\n        \/\/ Contr\u00f4les UI ensuite\n        L.control.zoom({\n          position: 'topright'\n        }).addTo(map);\n        L.control.attribution({\n            position: 'bottomright',\n            prefix: false\n          })\n          .addAttribution('&copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OSM<\/a> &copy; <a href=\"https:\/\/carto.com\/\">CARTO<\/a>')\n          .addTo(map);\n\n        \/\/ Bouton de recentrage\n        L.Control.Recenter = L.Control.extend({\n          onAdd: function() {\n            const container = L.DomUtil.create('div', 'leaflet-bar leaflet-control');\n            const btn = L.DomUtil.create('a', '', container);\n            btn.innerHTML = '<svg width=\"16\" height=\"16\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"3\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 2v3M12 19v3M2 12h3M19 12h3\"\/><\/svg>';\n            btn.href = '#';\n            btn.title = 'Recentrer la carte';\n            btn.style.display = 'flex';\n            btn.style.alignItems = 'center';\n            btn.style.justifyContent = 'center';\n            L.DomEvent.on(btn, 'click', function(e) {\n              L.DomEvent.preventDefault(e);\n              if (allBounds.length > 1) map.fitBounds(allBounds, {\n                padding: [40, 40]\n              });\n              else if (allBounds.length === 1) map.setView(allBounds[0], 13);\n            });\n            return container;\n          }\n        });\n        new L.Control.Recenter({\n          position: 'topright'\n        }).addTo(map);\n\n        \/\/ Donn\u00e9es inject\u00e9es depuis PHP\n        var gpsPoints = [{\"lat\":44.47,\"lng\":1.8783,\"name\":\"Cajarc\",\"type\":\"city\",\"idx\":0},{\"lat\":44.4167,\"lng\":1.6167,\"name\":\"Saint-Cirq-Lapopie\",\"type\":\"city\",\"idx\":1},{\"lat\":44.6167,\"lng\":2.049,\"name\":\"Figeac\",\"type\":\"city\",\"idx\":2},{\"lat\":44.45,\"lng\":1.4444,\"name\":\"Cahors\",\"type\":\"city\",\"idx\":3},{\"lat\":44.6167,\"lng\":1.8833,\"name\":\"Lacapelle-Marival\",\"type\":\"city\",\"idx\":4},{\"lat\":44.4262,\"lng\":1.7365,\"name\":\"Randonn\\u00e9e dans le Parc Naturel des Causses du Quercy\",\"type\":\"activity\",\"idx\":5},{\"lat\":44.4262,\"lng\":1.7365,\"name\":\"Baignade au bord de la rivi\\u00e8re C\\u00e9l\\u00e9\",\"type\":\"activity\",\"idx\":6},{\"lat\":44.4167,\"lng\":1.6167,\"name\":\"Visite du village m\\u00e9di\\u00e9val de Saint-Cirq-Lapopie\",\"type\":\"activity\",\"idx\":7},{\"lat\":44.4264,\"lng\":1.7365,\"name\":\"Piscine du camping Mas de Nadal\",\"type\":\"activity\",\"idx\":8},{\"lat\":44.426,\"lng\":1.616,\"name\":\"Mariage au Mas de Nadal\",\"type\":\"event\",\"idx\":9},{\"lat\":44.426,\"lng\":1.616,\"name\":\"Mariages au Mas de Nadal\",\"type\":\"event\",\"idx\":10}];\n        var categoryColorMap = {\"city\":\"#3b82f6\",\"activity\":\"#a855f7\",\"event\":\"#ef4444\"};\n        var categoryLabelMap = {\"city\":\"Villes aux alentours\",\"activity\":\"Activit\\u00e9s et lieux recommand\\u00e9s\",\"event\":\"\\u00c9v\\u00e9nements recommand\\u00e9s\"};\n\n        var markers = []; \/\/ Tous les marqueurs [{marker, type, latLng, idx}]\n        var allBounds = []; \/\/ Coordonn\u00e9es pour le fitBounds initial\n        var activeMarker = null; \/\/ Marqueur actuellement s\u00e9lectionn\u00e9\n\n        \/**\n         * Cr\u00e9e une ic\u00f4ne SVG circulaire pour un marqueur Leaflet\n         * @param {string} color  \u2014 Couleur de remplissage\n         * @param {number} size   \u2014 Diam\u00e8tre du cercle int\u00e9rieur (d\u00e9faut: 12)\n         *\/\n        function createMarkerIcon(color, size) {\n          size = size || 12;\n          var outerSize = size + 8;\n          var center = outerSize \/ 2;\n          return L.divIcon({\n            className: 'em-marker',\n            html: '<svg width=\"' + outerSize + '\" height=\"' + outerSize + '\" viewBox=\"0 0 ' + outerSize + ' ' + outerSize + '\">' +\n              '<circle cx=\"' + center + '\" cy=\"' + center + '\" r=\"' + (size \/ 2 + 2) + '\" fill=\"white\" opacity=\"0.9\"\/>' +\n              '<circle cx=\"' + center + '\" cy=\"' + center + '\" r=\"' + (size \/ 2) + '\" fill=\"' + color + '\"\/>' +\n              '<\/svg>',\n            iconSize: [outerSize, outerSize],\n            iconAnchor: [center, center],\n            popupAnchor: [0, -(size \/ 2 + 6)]\n          });\n        }\n\n        \/\/ \u2500\u2500\u2500 Placement des marqueurs sur la carte \u2500\u2500\u2500\n        gpsPoints.forEach(function(point) {\n          var color = categoryColorMap[point.type] || '#6b7280';\n          var catLabel = categoryLabelMap[point.type] || point.type;\n          var icon = createMarkerIcon(color, 12);\n          var marker = L.marker([point.lat, point.lng], {\n            icon: icon\n          }).addTo(map);\n\n          \/\/ Popup au clic\n          var popupHtml = '<div class=\"em-map-popup\">' +\n            '<p class=\"em-map-popup-name\">' + escapeHtml(point.name) + '<\/p>' +\n            '<p class=\"em-map-popup-cat\" style=\"color:' + color + '\">' + escapeHtml(catLabel) + '<\/p>' +\n            '<button class=\"em-map-popup-btn\" data-card-idx=\"' + point.idx + '\">Voir la fiche \u2192<\/button>' +\n            '<\/div>';\n          marker.bindPopup(popupHtml, {\n            closeButton: false,\n            minWidth: 180\n          });\n\n          \/\/ Highlight du marqueur actif\n          marker.on('click', function() {\n            if (activeMarker && activeMarker.getElement()) activeMarker.getElement().classList.remove('em-marker--active');\n            if (marker.getElement()) marker.getElement().classList.add('em-marker--active');\n            activeMarker = marker;\n          });\n\n          \/\/ Bouton \"Voir la fiche\" dans la popup\n          marker.on('popupopen', function() {\n            var popupBtn = document.querySelector('.em-map-popup-btn[data-card-idx=\"' + point.idx + '\"]');\n            if (popupBtn) {\n              popupBtn.addEventListener('click', function() {\n                var allCards = document.querySelectorAll('.em-card');\n                var targetCard = allCards[point.idx];\n                if (targetCard) {\n                  var cardData = JSON.parse(targetCard.getAttribute('data-json'));\n                  openDetailModal(cardData);\n                }\n                map.closePopup();\n              });\n            }\n          });\n\n          markers.push({\n            marker: marker,\n            type: point.type,\n            latLng: [point.lat, point.lng],\n            idx: point.idx\n          });\n          allBounds.push([point.lat, point.lng]);\n        });\n\n        \/\/ Cadrage initial de la carte\n        if (allBounds.length > 1) map.fitBounds(allBounds, {\n          padding: [40, 40]\n        });\n        else if (allBounds.length === 1) map.setView(allBounds[0], 13);\n        setTimeout(function() {\n          map.invalidateSize();\n        }, 100);\n\n        \/\/ \u2500\u2500\u2500 Interaction cards \u2194 marqueurs (hover) \u2500\u2500\u2500\n        document.querySelectorAll('.em-card').forEach(function(card, cardIndex) {\n          card.addEventListener('mouseenter', function() {\n            markers.forEach(function(m) {\n              if (m.idx === cardIndex) {\n                m.marker.setIcon(createMarkerIcon(categoryColorMap[m.type] || '#6b7280', 18));\n                m.marker.setZIndexOffset(1000);\n              }\n            });\n          });\n          card.addEventListener('mouseleave', function() {\n            markers.forEach(function(m) {\n              if (m.idx === cardIndex) {\n                m.marker.setIcon(createMarkerIcon(categoryColorMap[m.type] || '#6b7280', 12));\n                m.marker.setZIndexOffset(0);\n              }\n            });\n          });\n        });\n\n        \/**\n         * Met \u00e0 jour la visibilit\u00e9 des marqueurs selon les types s\u00e9lectionn\u00e9s\n         * Appel\u00e9 par applyFilters() quand les filtres changent\n         *\/\n        window.updateMapMarkers = function(visibleTypes) {\n          var visibleBounds = [];\n          markers.forEach(function(m) {\n            if (visibleTypes.indexOf(m.type) !== -1) {\n              if (!map.hasLayer(m.marker)) map.addLayer(m.marker);\n              visibleBounds.push(m.latLng);\n            } else {\n              if (map.hasLayer(m.marker)) map.removeLayer(m.marker);\n            }\n          });\n\n          var hasPoints = visibleBounds.length > 0;\n          var mapSection = document.querySelector('.em-map-section');\n          var mapToggleBtn = document.getElementById('em-map-toggle');\n\n          if (mapSection) mapSection.style.display = hasPoints ? '' : 'none';\n          if (mapToggleBtn) {\n            mapToggleBtn.disabled = !hasPoints;\n            mapToggleBtn.style.opacity = hasPoints ? '' : '0.4';\n            mapToggleBtn.style.cursor = hasPoints ? '' : 'not-allowed';\n            \/\/ Ne touche pas \u00e0 .active \u2014 c'est le listener toggle qui le g\u00e8re\n          }\n\n          if (visibleBounds.length > 1) map.fitBounds(visibleBounds, {\n            padding: [40, 40],\n            maxZoom: 14\n          });\n          else if (visibleBounds.length === 1) map.setView(visibleBounds[0], 13);\n        };\n\n        \/\/ \u2500\u2500\u2500 Toggle visibilit\u00e9 de la carte \u2500\u2500\u2500\n        var mapToggle = document.getElementById('em-map-toggle');\n        var mapWrapper = document.getElementById('em-map-wrap');\n        if (mapToggle && mapWrapper) {\n          mapToggle.addEventListener('click', function() {\n            if (mapToggle.disabled) return;\n            var isVisible = mapWrapper.style.display !== 'none';\n            mapWrapper.style.display = isVisible ? 'none' : '';\n            mapToggle.classList.toggle('active', !isVisible);\n            if (!isVisible) setTimeout(function() {\n              map.invalidateSize();\n            }, 100);\n          });\n        }\n\n      }\n      initLeafletMap();\n\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n      \/\/ MOBILE \/ TABLETTE \u2014 Sidebar filtres collapsible\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n      \/**\n       * Sur mobile et tablette (\u22641024px), la sidebar filtres est repli\u00e9e par d\u00e9faut\n       * Un clic sur le titre la d\u00e9plie\/replie\n       *\/\n      function initMobileFilters() {\n        var filtersContainer = document.querySelector('.em-filters');\n        var filtersTitle = document.querySelector('.em-filters-title');\n        if (!filtersContainer || !filtersTitle) return;\n\n        var wrap = filtersContainer.closest('.em-wrap');\n        var backdrop = document.createElement('div');\n        backdrop.className = 'em-filter-backdrop';\n        filtersContainer.parentNode.insertBefore(backdrop, filtersContainer);\n\n        function isMobileOverlay() {\n          return window.innerWidth <= 720;\n        }\n\n        function setFiltersOpen(isOpen) {\n          filtersContainer.classList.toggle('collapsed', !isOpen);\n          filtersTitle.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n          backdrop.classList.toggle('is-visible', isOpen && isMobileOverlay());\n          document.documentElement.classList.toggle('em-filters-open', isOpen && isMobileOverlay());\n          if (wrap) wrap.classList.toggle('em-mobile-filters-open', isOpen && isMobileOverlay());\n        }\n\n        if (window.innerWidth <= 1024) {\n          setFiltersOpen(false);\n        } else {\n          setFiltersOpen(true);\n        }\n\n        filtersTitle.addEventListener('click', function() {\n          if (window.innerWidth <= 1024) {\n            setFiltersOpen(filtersContainer.classList.contains('collapsed'));\n          }\n        });\n\n        backdrop.addEventListener('click', function() {\n          setFiltersOpen(false);\n        });\n\n        document.addEventListener('keydown', function(event) {\n          if (event.key === 'Escape' && !filtersContainer.classList.contains('collapsed')) {\n            setFiltersOpen(false);\n          }\n        });\n\n        window.addEventListener('resize', function() {\n          if (window.innerWidth > 1024) {\n            setFiltersOpen(true);\n          } else if (window.innerWidth > 720) {\n            backdrop.classList.remove('is-visible');\n            document.documentElement.classList.remove('em-filters-open');\n            if (wrap) wrap.classList.remove('em-mobile-filters-open');\n          } else if (!filtersContainer.classList.contains('collapsed')) {\n            backdrop.classList.add('is-visible');\n            document.documentElement.classList.add('em-filters-open');\n            if (wrap) wrap.classList.add('em-mobile-filters-open');\n          }\n        });\n      }\n\n      initMobileFilters();\n\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n      \/\/ OFFSET HEADER TH\u00c8ME \u2014 D\u00e9tecte un header sticky\/fix\u00e9 + injecte un overlay opaque sous celui-ci pour les th\u00e8mes au header semi-transparent\n      \/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n      var HEADER_SELECTORS = 'header, .site-header, #masthead, #header, .header, .navbar, .nav-bar, body > nav, body > .top-bar';\n\n      \/\/ Inject l'overlay opaque dans le body (au niveau racine, \u00e9vite les pi\u00e8ges de stacking context si le th\u00e8me a un transform sur un anc\u00eatre)\n      if (!document.getElementById('em-header-overlay')) {\n        var overlay = document.createElement('div');\n        overlay.id = 'em-header-overlay';\n        document.body.appendChild(overlay);\n      }\n\n      function updateThemeHeaderOffset() {\n        var bottom = 0;\n        document.querySelectorAll(HEADER_SELECTORS).forEach(function(el) {\n          var style = window.getComputedStyle(el);\n          if (style.position !== 'fixed' && style.position !== 'sticky') return;\n          var rect = el.getBoundingClientRect();\n          if (rect.top <= 50 && rect.bottom > bottom) bottom = rect.bottom;\n        });\n        document.documentElement.style.setProperty('--em-header-offset', Math.max(0, bottom) + 'px');\n      }\n\n      function updateScrolledClass() {\n        document.documentElement.classList.toggle('em-scrolled', window.scrollY > 0);\n      }\n\n      updateThemeHeaderOffset();\n      updateScrolledClass();\n\n      window.addEventListener('resize', updateThemeHeaderOffset);\n\n      var headerTicking = false;\n      window.addEventListener('scroll', function() {\n        if (headerTicking) return;\n        headerTicking = true;\n        requestAnimationFrame(function() {\n          updateThemeHeaderOffset();\n          updateScrolledClass();\n          headerTicking = false;\n        });\n      }, {\n        passive: true\n      });\n\n    })();\n  <\/script>\n\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_gt_ctv_global_id":"","_gt_ctv_id_group":false,"inline_featured_image":false,"gt_fse_maillage_image":"","gt_fse_maillage_titre":"Find out more","gt_fse_maillage_alt":"Find out more","gt_fse_maillage_resume":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-7849","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/pages\/7849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/comments?post=7849"}],"version-history":[{"count":0,"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/pages\/7849\/revisions"}],"wp:attachment":[{"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/media?parent=7849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/categories?post=7849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/masdenadal.com\/en\/wp-json\/wp\/v2\/tags?post=7849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}