{"id":5548,"date":"2026-03-16T09:37:30","date_gmt":"2026-03-16T08:37:30","guid":{"rendered":"https:\/\/www.lavillehuchet.com\/elaia-metadatas\/"},"modified":"2026-07-17T15:25:12","modified_gmt":"2026-07-17T13:25:12","slug":"elaia-metadatas","status":"publish","type":"page","link":"https:\/\/www.lavillehuchet.com\/fr\/elaia-metadatas\/","title":{"rendered":"D\u00e9couvrez autour de vous"},"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\":\"TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Parc aquatique ext\u00e9rieur du Domaine de la Ville Huchet\",\"description\":\"Profitez d'un parc aquatique ext\u00e9rieur avec toboggans, pataugeoire et jeux d'eau pour toute la famille.\",\"url\":\"https:\/\/www.lavillehuchet.com\/fr\/piscines\",\"image\":\"https:\/\/www.lavillehuchet.com\/images\/piscine-exterieure.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.6475,\"longitude\":-2.0194},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"Activit\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Domaine de la Ville Huchet, Rue de la Passag\u00e8re, 35400 Saint-Malo\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Horaires\",\"value\":\"Ouvert pendant la saison estivale, horaires variables selon les conditions m\u00e9t\u00e9orologiques\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Mini-golf th\u00e9m\u00e9 Corsaires\",\"description\":\"Un parcours de mini-golf sur le th\u00e8me des corsaires, avec canons, tonneaux et boulets, pour une partie en famille ou entre amis.\",\"url\":\"https:\/\/www.lavillehuchet.com\/fr\/animations-et-loisirs\",\"image\":\"https:\/\/www.lavillehuchet.com\/images\/minigolf-corsaire.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.6475,\"longitude\":-2.0194},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"Activit\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Domaine de la Ville Huchet, Rue de la Passag\u00e8re, 35400 Saint-Malo\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Horaires\",\"value\":\"Ouvert toute la saison\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Club enfants\",\"description\":\"Un club pour les enfants de 5 \u00e0 10 ans, proposant des ateliers cr\u00e9atifs et des jeux en journ\u00e9e, pendant les vacances d'\u00e9t\u00e9.\",\"url\":\"https:\/\/www.lavillehuchet.com\/fr\/animations-et-loisirs\",\"image\":\"https:\/\/www.lavillehuchet.com\/images\/club-enfants.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.6475,\"longitude\":-2.0194},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"Activit\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Domaine de la Ville Huchet, Rue de la Passag\u00e8re, 35400 Saint-Malo\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Horaires\",\"value\":\"Ouvert pendant les vacances d'\u00e9t\u00e9, horaires variables\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Balades en bateau sur la Rance\",\"description\":\"Profitez de croisi\u00e8res en bateau sur la Rance, de Saint-Malo \u00e0 Dinan, pour d\u00e9couvrir la r\u00e9gion sous un autre angle.\",\"url\":\"https:\/\/www.lavillehuchet.com\/fr\/aux-alentours\",\"image\":\"https:\/\/www.lavillehuchet.com\/images\/balade-bateau-rance.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.6475,\"longitude\":-2.0194},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"Activit\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Saint-Malo, 35400 Saint-Malo\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"10\"},{\"@type\":\"PropertyValue\",\"name\":\"Horaires\",\"value\":\"Selon les horaires des compagnies de croisi\u00e8re\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Plage du Sillon\",\"description\":\"Une grande plage de sable fin, id\u00e9ale pour la baignade, les sports nautiques et les promenades en bord de mer.\",\"url\":\"https:\/\/www.lavillehuchet.com\/fr\/aux-alentours\",\"image\":\"https:\/\/www.lavillehuchet.com\/images\/plage-du-sillon.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.6475,\"longitude\":-2.0194},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"Plage\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Saint-Malo, 35400 Saint-Malo\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"6\"},{\"@type\":\"PropertyValue\",\"name\":\"Horaires\",\"value\":\"Acc\u00e8s libre\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Saint-Malo\",\"description\":\"Cit\u00e9 corsaire embl\u00e9matique, Saint-Malo est r\u00e9put\u00e9e pour ses remparts, ses plages de sable fin et son riche patrimoine historique. ([lavillehuchet.com](https:\/\/www.lavillehuchet.com\/fr\/aux-alentours?utm_source=openai))\",\"url\":\"https:\/\/www.lavillehuchet.com\/fr\/aux-alentours\",\"image\":\"https:\/\/www.lavillehuchet.com\/images\/saint-malo.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.6482,\"longitude\":-2.026},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie \/ Type\",\"value\":\"Ville\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Saint-Malo, France\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"P\u00e9riode id\u00e9ale\",\"value\":\"Toute l'ann\u00e9e\"},{\"@type\":\"PropertyValue\",\"name\":\"Points d'int\u00e9r\u00eat\",\"value\":\"Intra-muros, remparts, plage du Sillon, Cit\u00e9 Corsaire.\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Cancale\",\"description\":\"Port de p\u00eache r\u00e9put\u00e9 pour ses hu\u00eetres, Cancale offre des panoramas sur la baie du Mont-Saint-Michel et des sp\u00e9cialit\u00e9s culinaires \u00e0 base de fruits de mer. ([lavillehuchet.com](https:\/\/www.lavillehuchet.com\/fr\/aux-alentours?utm_source=openai))\",\"url\":\"https:\/\/www.tourism-cancale.fr\/\",\"image\":\"https:\/\/www.tourism-cancale.fr\/images\/cancale.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.538,\"longitude\":-1.85},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie \/ Type\",\"value\":\"Ville\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Cancale, France\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"13\"},{\"@type\":\"PropertyValue\",\"name\":\"P\u00e9riode id\u00e9ale\",\"value\":\"Printemps et \u00e9t\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Points d'int\u00e9r\u00eat\",\"value\":\"Port de la Houle, d\u00e9gustation d'hu\u00eetres, Pointe du Grouin.\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Dinan\",\"description\":\"Petite Cit\u00e9 de Caract\u00e8re, Dinan s\u00e9duit par ses ruelles pav\u00e9es, ses maisons \u00e0 pans de bois et son ch\u00e2teau m\u00e9di\u00e9val. ([navaway.fr](https:\/\/navaway.fr\/les-plus-beaux-villages-a-decouvrir-autour-de-saint-malo\/?utm_source=openai))\",\"url\":\"https:\/\/www.tourisme-dinan.com\/\",\"image\":\"https:\/\/www.tourisme-dinan.com\/images\/dinan.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.45,\"longitude\":-2.05},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie \/ Type\",\"value\":\"Ville\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Dinan, France\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"20\"},{\"@type\":\"PropertyValue\",\"name\":\"P\u00e9riode id\u00e9ale\",\"value\":\"Toute l'ann\u00e9e\"},{\"@type\":\"PropertyValue\",\"name\":\"Points d'int\u00e9r\u00eat\",\"value\":\"Ch\u00e2teau de Dinan, rue du Jerzual, remparts.\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Saint-Suliac\",\"description\":\"Class\u00e9 parmi les Plus Beaux Villages de France, Saint-Suliac est un charmant port de p\u00eache sur la rive droite de l'estuaire de la Rance. ([fr.wikipedia.org](https:\/\/fr.wikipedia.org\/wiki\/Saint-Suliac?utm_source=openai))\",\"url\":\"https:\/\/www.saint-suliac.fr\/\",\"image\":\"https:\/\/www.saint-suliac.fr\/images\/saint-suliac.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.566,\"longitude\":-2.016},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie \/ Type\",\"value\":\"Village\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Saint-Suliac, France\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"10\"},{\"@type\":\"PropertyValue\",\"name\":\"P\u00e9riode id\u00e9ale\",\"value\":\"Printemps et \u00e9t\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Points d'int\u00e9r\u00eat\",\"value\":\"Port de Saint-Suliac, \u00e9glise Saint-Suliac, ruelles pittoresques.\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Dinard\",\"description\":\"Station baln\u00e9aire du XIX\u1d49 si\u00e8cle, Dinard est connue pour ses villas Belle \u00c9poque, ses plages et ses festivals. ([lavillehuchet.com](https:\/\/www.lavillehuchet.com\/fr\/aux-alentours?utm_source=openai))\",\"url\":\"https:\/\/www.tourisme-dinard.com\/\",\"image\":\"https:\/\/www.tourisme-dinard.com\/images\/dinard.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.636,\"longitude\":-2.05},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie \/ Type\",\"value\":\"Ville\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Dinard, France\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance approximative (km)\",\"value\":\"15\"},{\"@type\":\"PropertyValue\",\"name\":\"P\u00e9riode id\u00e9ale\",\"value\":\"Printemps et \u00e9t\u00e9\"},{\"@type\":\"PropertyValue\",\"name\":\"Points d'int\u00e9r\u00eat\",\"value\":\"Plage de l'\u00c9cluse, promenade du Clair de Lune, festival du film britannique.\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"randonn\u00e9es p\u00e9destres\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Circuit du Parc de la Higourdais\",\"description\":\"Ce circuit de 7,3 km traverse le Parc de la Higourdais, offrant une promenade agr\u00e9able en pleine nature.\",\"url\":\"https:\/\/www.saint-malo-tourisme.com\/explorer-notre-destination\/expeditions-nature\/balades-pedestre\/promenades-randonnees\/\",\"image\":\"https:\/\/www.saint-malo-tourisme.com\/sites\/default\/files\/styles\/large\/public\/2023-02\/Parc%20de%20la%20Higourdais%20Epiniac.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.5167,\"longitude\":-1.8667},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"randonn\u00e9e p\u00e9destre\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Epiniac\"},{\"@type\":\"PropertyValue\",\"name\":\"Longueur (km)\",\"value\":\"7.3\"},{\"@type\":\"PropertyValue\",\"name\":\"Difficult\u00e9\",\"value\":\"expert\"},{\"@type\":\"PropertyValue\",\"name\":\"Saison recommand\u00e9e\",\"value\":\"printemps, \u00e9t\u00e9, automne\"},{\"@type\":\"PropertyValue\",\"name\":\"Acc\u00e8s transport public\",\"value\":\"Non\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"La pointe du Meinga\",\"description\":\"Cette randonn\u00e9e de 15 km vous emm\u00e8ne jusqu'\u00e0 la pointe du Meinga, offrant des vues imprenables sur la mer et les paysages environnants.\",\"url\":\"https:\/\/www.saint-malo-tourisme.com\/explorer-notre-destination\/expeditions-nature\/balades-pedestre\/promenades-randonnees\/\",\"image\":\"https:\/\/www.saint-malo-tourisme.com\/sites\/default\/files\/styles\/large\/public\/2023-02\/Pointe%20du%20Meinga%20Saint-Coulomb.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.65,\"longitude\":-1.975},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"randonn\u00e9e p\u00e9destre\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Saint-Coulomb\"},{\"@type\":\"PropertyValue\",\"name\":\"Longueur (km)\",\"value\":\"15\"},{\"@type\":\"PropertyValue\",\"name\":\"Difficult\u00e9\",\"value\":\"difficile\"},{\"@type\":\"PropertyValue\",\"name\":\"Saison recommand\u00e9e\",\"value\":\"printemps, \u00e9t\u00e9, automne\"},{\"@type\":\"PropertyValue\",\"name\":\"Acc\u00e8s transport public\",\"value\":\"Non\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Circuit des Deux Vall\u00e9es\",\"description\":\"Ce circuit de 8,5 km traverse les vall\u00e9es de la Rance et du Couesnon, offrant une promenade paisible en campagne.\",\"url\":\"https:\/\/www.saint-malo-tourisme.com\/explorer-notre-destination\/expeditions-nature\/balades-pedestre\/promenades-randonnees\/\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.5,\"longitude\":-1.6167},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"randonn\u00e9e p\u00e9destre\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Saint-Broladre\"},{\"@type\":\"PropertyValue\",\"name\":\"Longueur (km)\",\"value\":\"8.5\"},{\"@type\":\"PropertyValue\",\"name\":\"Difficult\u00e9\",\"value\":\"facile\"},{\"@type\":\"PropertyValue\",\"name\":\"Saison recommand\u00e9e\",\"value\":\"printemps, \u00e9t\u00e9, automne\"},{\"@type\":\"PropertyValue\",\"name\":\"Acc\u00e8s transport public\",\"value\":\"Non\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Circuit du Clos Chapelle\",\"description\":\"Cette randonn\u00e9e de 14,5 km vous emm\u00e8ne \u00e0 travers des paysages vari\u00e9s, entre for\u00eat et campagne.\",\"url\":\"https:\/\/www.saint-malo-tourisme.com\/explorer-notre-destination\/expeditions-nature\/balades-pedestre\/promenades-randonnees\/\",\"image\":\"https:\/\/www.saint-malo-tourisme.com\/sites\/default\/files\/styles\/large\/public\/2023-02\/Circuit%20du%20Clos%20Chapelle%20Baguer-Morvan.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.4,\"longitude\":-1.8},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"randonn\u00e9e p\u00e9destre\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Baguer-Morvan\"},{\"@type\":\"PropertyValue\",\"name\":\"Longueur (km)\",\"value\":\"14.5\"},{\"@type\":\"PropertyValue\",\"name\":\"Difficult\u00e9\",\"value\":\"moyen\"},{\"@type\":\"PropertyValue\",\"name\":\"Saison recommand\u00e9e\",\"value\":\"printemps, \u00e9t\u00e9, automne\"},{\"@type\":\"PropertyValue\",\"name\":\"Acc\u00e8s transport public\",\"value\":\"Non\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Circuit Nomino\u00eb\",\"description\":\"Ce circuit de 8 km vous emm\u00e8ne sur les traces de Nomino\u00eb, duc de Bretagne, offrant une promenade historique et pittoresque.\",\"url\":\"https:\/\/www.saint-malo-tourisme.com\/explorer-notre-destination\/expeditions-nature\/balades-pedestre\/promenades-randonnees\/\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":48.5,\"longitude\":-1.7},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"randonn\u00e9e p\u00e9destre\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"Dol-de-Bretagne\"},{\"@type\":\"PropertyValue\",\"name\":\"Longueur (km)\",\"value\":\"8\"},{\"@type\":\"PropertyValue\",\"name\":\"Difficult\u00e9\",\"value\":\"facile\"},{\"@type\":\"PropertyValue\",\"name\":\"Saison recommand\u00e9e\",\"value\":\"printemps, \u00e9t\u00e9, automne\"},{\"@type\":\"PropertyValue\",\"name\":\"Acc\u00e8s transport public\",\"value\":\"Non\"}]}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"Thing\",\"name\":\"Randonn\u00e9e sur le GR34C proche du camping, elle commence au cimeti\u00e8re de bateaux de la Passag\u00e8re \u00e0 2km du camping\",\"description\":\"Le GR34C fait le tour de la Rance au d\u00e9part de la Passag\u00e8re (cimeti\u00e8re bateaux). Il traverse au pont Saint Hubert et repasse au barrage de la Rance. L'une des plus belles parties est La Passag\u00e8re - Saint Suliac\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Cat\u00e9gorie\",\"value\":\"randonn\u00e9e p\u00e9destre\"},{\"@type\":\"PropertyValue\",\"name\":\"Localisation\",\"value\":\"En bord de Rance rive droite, d\u00e9part le cimeti\u00e8re de bateaux de la Passag\u00e8re jusqu'\u00e0 Saint Suliac\"},{\"@type\":\"PropertyValue\",\"name\":\"Longueur (km)\",\"value\":\"15\"},{\"@type\":\"PropertyValue\",\"name\":\"Difficult\u00e9\",\"value\":\"moyen\"}]}}]}]}<\/script>\n\n  \n  <!-- Injection des labels pour le JS (modal) -->\n  <script>\n    var emFieldLabels = {\"name\":\"Nom\",\"category\":\"Cat\\u00e9gorie\",\"location\":\"Localisation\",\"description\":\"Description\",\"distance_km\":\"Distance approximative (km)\",\"opening_hours\":\"Horaires\",\"category_type\":\"Cat\\u00e9gorie \\\/ Type\",\"best_time_to_visit\":\"P\\u00e9riode id\\u00e9ale\",\"attractions\":\"Points d'int\\u00e9r\\u00eat\",\"length_km\":\"Longueur (km)\",\"difficulty\":\"Difficult\\u00e9\",\"best_season\":\"Saison recommand\\u00e9e\",\"access_public_transport\":\"Acc\\u00e8s transport public\"};\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\">16 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\">16<\/strong><\/div>\n            <div class=\"em-stat\">Affich\u00e9s : <strong id=\"em-stat-visible\">16<\/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=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\" class=\"em-filter-type\" checked><span>TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<\/span><\/label>\n                          <label class=\"em-filter-check\"><input type=\"checkbox\" value=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\" class=\"em-filter-type\" checked><span>Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<\/span><\/label>\n                          <label class=\"em-filter-check\"><input type=\"checkbox\" value=\"randonnees-pedestres\" class=\"em-filter-type\" checked><span>randonn\u00e9es p\u00e9destres<\/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\">16<\/span><\/button>\n                          <button class=\"em-tab\" data-filter=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\">TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<span class=\"em-tab-count\">5<\/span><\/button>\n                          <button class=\"em-tab\" data-filter=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\">Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<span class=\"em-tab-count\">5<\/span><\/button>\n                          <button class=\"em-tab\" data-filter=\"randonnees-pedestres\">randonn\u00e9es p\u00e9destres<span class=\"em-tab-count\">6<\/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=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\">\n                      <span class=\"em-map-legend-dot\" style=\"background:#0891b2;\"><\/span>\n                      TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)                    <\/div>\n                                                          <div class=\"em-map-legend-item\" data-type=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\">\n                      <span class=\"em-map-legend-dot\" style=\"background:#db2777;\"><\/span>\n                      Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet                    <\/div>\n                                                          <div class=\"em-map-legend-item\" data-type=\"randonnees-pedestres\">\n                      <span class=\"em-map-legend-dot\" style=\"background:#65a30d;\"><\/span>\n                      randonn\u00e9es p\u00e9destres                    <\/div>\n                                  <\/div>\n              <\/div>\n            <\/div>\n          \n          <div class=\"em-cards\" id=\"em-cards\">\n                          <article class=\"em-card\"\n                data-type=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\"\n                data-features=\"\"\n                data-name=\"parc aquatique ext\u00e9rieur du domaine de la ville huchet\"\n                data-json=\"{&quot;name&quot;:&quot;Parc aquatique ext\\u00e9rieur du Domaine de la Ville Huchet&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/piscine-exterieure.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/piscines&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Parc aquatique ext\\u00e9rieur du Domaine de la Ville Huchet&quot;,&quot;category&quot;:&quot;Activit\\u00e9&quot;,&quot;location&quot;:&quot;Domaine de la Ville Huchet, Rue de la Passag\\u00e8re, 35400 Saint-Malo&quot;,&quot;description&quot;:&quot;Profitez d&#039;un parc aquatique ext\\u00e9rieur avec toboggans, pataugeoire et jeux d&#039;eau pour toute la famille.&quot;,&quot;distance_km&quot;:0,&quot;opening_hours&quot;:&quot;Ouvert pendant la saison estivale, horaires variables selon les conditions m\\u00e9t\\u00e9orologiques&quot;,&quot;latitude&quot;:&quot;48.6475000&quot;,&quot;longitude&quot;:&quot;-2.0194000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/piscines&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/piscine-exterieure.jpg&quot;},&quot;category&quot;:&quot;TOP 5 activit\\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)&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:\/\/www.lavillehuchet.com\/images\/piscine-exterieure.jpg\" alt=\"Parc aquatique ext\u00e9rieur du Domaine de la Ville Huchet\" 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-default\">TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Parc aquatique ext\u00e9rieur du Domaine de la Ville Huchet<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">Activit\u00e9<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Domaine de la Ville Huchet, Rue de la Passag\u00e8re, 35400 Saint<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Horaires :<\/span>\n                        <span class=\"em-card-field-value\">Ouvert pendant la saison estivale, horaires variables selon <\/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=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\"\n                data-features=\"\"\n                data-name=\"mini-golf th\u00e9m\u00e9 corsaires\"\n                data-json=\"{&quot;name&quot;:&quot;Mini-golf th\\u00e9m\\u00e9 Corsaires&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/minigolf-corsaire.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/animations-et-loisirs&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Mini-golf th\\u00e9m\\u00e9 Corsaires&quot;,&quot;category&quot;:&quot;Activit\\u00e9&quot;,&quot;location&quot;:&quot;Domaine de la Ville Huchet, Rue de la Passag\\u00e8re, 35400 Saint-Malo&quot;,&quot;description&quot;:&quot;Un parcours de mini-golf sur le th\\u00e8me des corsaires, avec canons, tonneaux et boulets, pour une partie en famille ou entre amis.&quot;,&quot;distance_km&quot;:0,&quot;opening_hours&quot;:&quot;Ouvert toute la saison&quot;,&quot;latitude&quot;:&quot;48.6475000&quot;,&quot;longitude&quot;:&quot;-2.0194000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/animations-et-loisirs&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/minigolf-corsaire.jpg&quot;},&quot;category&quot;:&quot;TOP 5 activit\\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)&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:\/\/www.lavillehuchet.com\/images\/minigolf-corsaire.jpg\" alt=\"Mini-golf th\u00e9m\u00e9 Corsaires\" 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-default\">TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Mini-golf th\u00e9m\u00e9 Corsaires<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">Activit\u00e9<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Domaine de la Ville Huchet, Rue de la Passag\u00e8re, 35400 Saint<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Horaires :<\/span>\n                        <span class=\"em-card-field-value\">Ouvert toute la saison<\/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=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\"\n                data-features=\"\"\n                data-name=\"club enfants\"\n                data-json=\"{&quot;name&quot;:&quot;Club enfants&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/club-enfants.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/animations-et-loisirs&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Club enfants&quot;,&quot;category&quot;:&quot;Activit\\u00e9&quot;,&quot;location&quot;:&quot;Domaine de la Ville Huchet, Rue de la Passag\\u00e8re, 35400 Saint-Malo&quot;,&quot;description&quot;:&quot;Un club pour les enfants de 5 \\u00e0 10 ans, proposant des ateliers cr\\u00e9atifs et des jeux en journ\\u00e9e, pendant les vacances d&#039;\\u00e9t\\u00e9.&quot;,&quot;distance_km&quot;:0,&quot;opening_hours&quot;:&quot;Ouvert pendant les vacances d&#039;\\u00e9t\\u00e9, horaires variables&quot;,&quot;latitude&quot;:&quot;48.6475000&quot;,&quot;longitude&quot;:&quot;-2.0194000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/animations-et-loisirs&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/club-enfants.jpg&quot;},&quot;category&quot;:&quot;TOP 5 activit\\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)&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:\/\/www.lavillehuchet.com\/images\/club-enfants.jpg\" alt=\"Club enfants\" 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-default\">TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Club enfants<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">Activit\u00e9<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Domaine de la Ville Huchet, Rue de la Passag\u00e8re, 35400 Saint<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Horaires :<\/span>\n                        <span class=\"em-card-field-value\">Ouvert pendant les vacances d&#039;\u00e9t\u00e9, horaires variables<\/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=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\"\n                data-features=\"\"\n                data-name=\"balades en bateau sur la rance\"\n                data-json=\"{&quot;name&quot;:&quot;Balades en bateau sur la Rance&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/balade-bateau-rance.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Balades en bateau sur la Rance&quot;,&quot;category&quot;:&quot;Activit\\u00e9&quot;,&quot;location&quot;:&quot;Saint-Malo, 35400 Saint-Malo&quot;,&quot;description&quot;:&quot;Profitez de croisi\\u00e8res en bateau sur la Rance, de Saint-Malo \\u00e0 Dinan, pour d\\u00e9couvrir la r\\u00e9gion sous un autre angle.&quot;,&quot;distance_km&quot;:10,&quot;opening_hours&quot;:&quot;Selon les horaires des compagnies de croisi\\u00e8re&quot;,&quot;latitude&quot;:&quot;48.6475000&quot;,&quot;longitude&quot;:&quot;-2.0194000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/balade-bateau-rance.jpg&quot;},&quot;category&quot;:&quot;TOP 5 activit\\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)&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:\/\/www.lavillehuchet.com\/images\/balade-bateau-rance.jpg\" alt=\"Balades en bateau sur la Rance\" 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-default\">TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Balades en bateau sur la Rance<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">Activit\u00e9<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Malo, 35400 Saint-Malo<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance approximative (km) :<\/span>\n                        <span class=\"em-card-field-value\">10<\/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=\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\"\n                data-features=\"\"\n                data-name=\"plage du sillon\"\n                data-json=\"{&quot;name&quot;:&quot;Plage du Sillon&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/plage-du-sillon.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Plage du Sillon&quot;,&quot;category&quot;:&quot;Plage&quot;,&quot;location&quot;:&quot;Saint-Malo, 35400 Saint-Malo&quot;,&quot;description&quot;:&quot;Une grande plage de sable fin, id\\u00e9ale pour la baignade, les sports nautiques et les promenades en bord de mer.&quot;,&quot;distance_km&quot;:6,&quot;opening_hours&quot;:&quot;Acc\\u00e8s libre&quot;,&quot;latitude&quot;:&quot;48.6475000&quot;,&quot;longitude&quot;:&quot;-2.0194000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/plage-du-sillon.jpg&quot;},&quot;category&quot;:&quot;TOP 5 activit\\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)&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:\/\/www.lavillehuchet.com\/images\/plage-du-sillon.jpg\" alt=\"Plage du Sillon\" 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-default\">TOP 5 activit\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Plage du Sillon<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">Plage<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Malo, 35400 Saint-Malo<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance approximative (km) :<\/span>\n                        <span class=\"em-card-field-value\">6<\/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=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\"\n                data-features=\"\"\n                data-name=\"saint-malo\"\n                data-json=\"{&quot;name&quot;:&quot;Saint-Malo&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/saint-malo.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Saint-Malo&quot;,&quot;category_type&quot;:&quot;Ville&quot;,&quot;location&quot;:&quot;Saint-Malo, France&quot;,&quot;description&quot;:&quot;Cit\\u00e9 corsaire embl\\u00e9matique, Saint-Malo est r\\u00e9put\\u00e9e pour ses remparts, ses plages de sable fin et son riche patrimoine historique. ([lavillehuchet.com](https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours?utm_source=openai))&quot;,&quot;distance_km&quot;:0,&quot;best_time_to_visit&quot;:&quot;Toute l&#039;ann\\u00e9e&quot;,&quot;attractions&quot;:&quot;Intra-muros, remparts, plage du Sillon, Cit\\u00e9 Corsaire.&quot;,&quot;latitude&quot;:&quot;48.6482000&quot;,&quot;longitude&quot;:&quot;-2.0260000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.lavillehuchet.com\\\/images\\\/saint-malo.jpg&quot;},&quot;category&quot;:&quot;Top 5 des villes et villages \\u00e0 visiter autour du Domaine de la Ville Huchet&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:\/\/www.lavillehuchet.com\/images\/saint-malo.jpg\" alt=\"Saint-Malo\" 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-default\">Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Saint-Malo<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-purple\">Ville<\/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\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Malo, France<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">P\u00e9riode id\u00e9ale :<\/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\">Points d&#039;int\u00e9r\u00eat :<\/span>\n                        <span class=\"em-card-field-value\">Intra-muros, remparts, plage du Sillon, Cit\u00e9 Corsaire.<\/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=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\"\n                data-features=\"\"\n                data-name=\"cancale\"\n                data-json=\"{&quot;name&quot;:&quot;Cancale&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.tourism-cancale.fr\\\/images\\\/cancale.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourism-cancale.fr\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Cancale&quot;,&quot;category_type&quot;:&quot;Ville&quot;,&quot;location&quot;:&quot;Cancale, France&quot;,&quot;description&quot;:&quot;Port de p\\u00eache r\\u00e9put\\u00e9 pour ses hu\\u00eetres, Cancale offre des panoramas sur la baie du Mont-Saint-Michel et des sp\\u00e9cialit\\u00e9s culinaires \\u00e0 base de fruits de mer. ([lavillehuchet.com](https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours?utm_source=openai))&quot;,&quot;distance_km&quot;:13,&quot;best_time_to_visit&quot;:&quot;Printemps et \\u00e9t\\u00e9&quot;,&quot;attractions&quot;:&quot;Port de la Houle, d\\u00e9gustation d&#039;hu\\u00eetres, Pointe du Grouin.&quot;,&quot;latitude&quot;:&quot;48.5380000&quot;,&quot;longitude&quot;:&quot;-1.8500000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourism-cancale.fr\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.tourism-cancale.fr\\\/images\\\/cancale.jpg&quot;},&quot;category&quot;:&quot;Top 5 des villes et villages \\u00e0 visiter autour du Domaine de la Ville Huchet&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:\/\/www.tourism-cancale.fr\/images\/cancale.jpg\" alt=\"Cancale\" 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-default\">Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Cancale<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-purple\">Ville<\/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\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Cancale, France<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance approximative (km) :<\/span>\n                        <span class=\"em-card-field-value\">13<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">P\u00e9riode id\u00e9ale :<\/span>\n                        <span class=\"em-card-field-value\">Printemps et \u00e9t\u00e9<\/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=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\"\n                data-features=\"\"\n                data-name=\"dinan\"\n                data-json=\"{&quot;name&quot;:&quot;Dinan&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.tourisme-dinan.com\\\/images\\\/dinan.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-dinan.com\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Dinan&quot;,&quot;category_type&quot;:&quot;Ville&quot;,&quot;location&quot;:&quot;Dinan, France&quot;,&quot;description&quot;:&quot;Petite Cit\\u00e9 de Caract\\u00e8re, Dinan s\\u00e9duit par ses ruelles pav\\u00e9es, ses maisons \\u00e0 pans de bois et son ch\\u00e2teau m\\u00e9di\\u00e9val. ([navaway.fr](https:\\\/\\\/navaway.fr\\\/les-plus-beaux-villages-a-decouvrir-autour-de-saint-malo\\\/?utm_source=openai))&quot;,&quot;distance_km&quot;:20,&quot;best_time_to_visit&quot;:&quot;Toute l&#039;ann\\u00e9e&quot;,&quot;attractions&quot;:&quot;Ch\\u00e2teau de Dinan, rue du Jerzual, remparts.&quot;,&quot;latitude&quot;:&quot;48.4500000&quot;,&quot;longitude&quot;:&quot;-2.0500000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-dinan.com\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.tourisme-dinan.com\\\/images\\\/dinan.jpg&quot;},&quot;category&quot;:&quot;Top 5 des villes et villages \\u00e0 visiter autour du Domaine de la Ville Huchet&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:\/\/www.tourisme-dinan.com\/images\/dinan.jpg\" alt=\"Dinan\" 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-default\">Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Dinan<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-purple\">Ville<\/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\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Dinan, France<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance approximative (km) :<\/span>\n                        <span class=\"em-card-field-value\">20<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">P\u00e9riode id\u00e9ale :<\/span>\n                        <span class=\"em-card-field-value\">Toute l&#039;ann\u00e9e<\/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=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\"\n                data-features=\"\"\n                data-name=\"saint-suliac\"\n                data-json=\"{&quot;name&quot;:&quot;Saint-Suliac&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-suliac.fr\\\/images\\\/saint-suliac.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-suliac.fr\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Saint-Suliac&quot;,&quot;category_type&quot;:&quot;Village&quot;,&quot;location&quot;:&quot;Saint-Suliac, France&quot;,&quot;description&quot;:&quot;Class\\u00e9 parmi les Plus Beaux Villages de France, Saint-Suliac est un charmant port de p\\u00eache sur la rive droite de l&#039;estuaire de la Rance. ([fr.wikipedia.org](https:\\\/\\\/fr.wikipedia.org\\\/wiki\\\/Saint-Suliac?utm_source=openai))&quot;,&quot;distance_km&quot;:10,&quot;best_time_to_visit&quot;:&quot;Printemps et \\u00e9t\\u00e9&quot;,&quot;attractions&quot;:&quot;Port de Saint-Suliac, \\u00e9glise Saint-Suliac, ruelles pittoresques.&quot;,&quot;latitude&quot;:&quot;48.5660000&quot;,&quot;longitude&quot;:&quot;-2.0160000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-suliac.fr\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-suliac.fr\\\/images\\\/saint-suliac.jpg&quot;},&quot;category&quot;:&quot;Top 5 des villes et villages \\u00e0 visiter autour du Domaine de la Ville Huchet&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:\/\/www.saint-suliac.fr\/images\/saint-suliac.jpg\" alt=\"Saint-Suliac\" 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-default\">Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Saint-Suliac<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-purple\">Village<\/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\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Suliac, France<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance approximative (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\">P\u00e9riode id\u00e9ale :<\/span>\n                        <span class=\"em-card-field-value\">Printemps et \u00e9t\u00e9<\/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=\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\"\n                data-features=\"\"\n                data-name=\"dinard\"\n                data-json=\"{&quot;name&quot;:&quot;Dinard&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.tourisme-dinard.com\\\/images\\\/dinard.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-dinard.com\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Dinard&quot;,&quot;category_type&quot;:&quot;Ville&quot;,&quot;location&quot;:&quot;Dinard, France&quot;,&quot;description&quot;:&quot;Station baln\\u00e9aire du XIX\\u1d49 si\\u00e8cle, Dinard est connue pour ses villas Belle \\u00c9poque, ses plages et ses festivals. ([lavillehuchet.com](https:\\\/\\\/www.lavillehuchet.com\\\/fr\\\/aux-alentours?utm_source=openai))&quot;,&quot;distance_km&quot;:15,&quot;best_time_to_visit&quot;:&quot;Printemps et \\u00e9t\\u00e9&quot;,&quot;attractions&quot;:&quot;Plage de l&#039;\\u00c9cluse, promenade du Clair de Lune, festival du film britannique.&quot;,&quot;latitude&quot;:&quot;48.6360000&quot;,&quot;longitude&quot;:&quot;-2.0500000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.tourisme-dinard.com\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.tourisme-dinard.com\\\/images\\\/dinard.jpg&quot;},&quot;category&quot;:&quot;Top 5 des villes et villages \\u00e0 visiter autour du Domaine de la Ville Huchet&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:\/\/www.tourisme-dinard.com\/images\/dinard.jpg\" alt=\"Dinard\" 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-default\">Top 5 des villes et villages \u00e0 visiter autour du Domaine de la Ville Huchet<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Dinard<\/h3>\n\n                  <!-- Tags r\u00e9sum\u00e9s (max 4) -->\n                  <div class=\"em-card-tags\">\n                                            <span class=\"em-tag em-tag-purple\">Ville<\/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\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Dinard, France<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Distance approximative (km) :<\/span>\n                        <span class=\"em-card-field-value\">15<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">P\u00e9riode id\u00e9ale :<\/span>\n                        <span class=\"em-card-field-value\">Printemps et \u00e9t\u00e9<\/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=\"randonnees-pedestres\"\n                data-features=\"\"\n                data-name=\"circuit du parc de la higourdais\"\n                data-json=\"{&quot;name&quot;:&quot;Circuit du Parc de la Higourdais&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Parc%20de%20la%20Higourdais%20Epiniac.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Circuit du Parc de la Higourdais&quot;,&quot;category&quot;:&quot;randonn\\u00e9e p\\u00e9destre&quot;,&quot;location&quot;:&quot;Epiniac&quot;,&quot;length_km&quot;:7.3,&quot;difficulty&quot;:&quot;expert&quot;,&quot;description&quot;:&quot;Ce circuit de 7,3 km traverse le Parc de la Higourdais, offrant une promenade agr\\u00e9able en pleine nature.&quot;,&quot;best_season&quot;:&quot;printemps, \\u00e9t\\u00e9, automne&quot;,&quot;access_public_transport&quot;:&quot;Non&quot;,&quot;latitude&quot;:&quot;48.5167000&quot;,&quot;longitude&quot;:&quot;-1.8667000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Parc%20de%20la%20Higourdais%20Epiniac.jpg&quot;},&quot;category&quot;:&quot;randonn\\u00e9es p\\u00e9destres&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:\/\/www.saint-malo-tourisme.com\/sites\/default\/files\/styles\/large\/public\/2023-02\/Parc%20de%20la%20Higourdais%20Epiniac.jpg\" alt=\"Circuit du Parc de la Higourdais\" 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-default\">randonn\u00e9es p\u00e9destres<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Circuit du Parc de la Higourdais<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">randonn\u00e9e p\u00e9destre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Epiniac<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Longueur (km) :<\/span>\n                        <span class=\"em-card-field-value\">7.3<\/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=\"randonnees-pedestres\"\n                data-features=\"\"\n                data-name=\"la pointe du meinga\"\n                data-json=\"{&quot;name&quot;:&quot;La pointe du Meinga&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Pointe%20du%20Meinga%20Saint-Coulomb.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;La pointe du Meinga&quot;,&quot;category&quot;:&quot;randonn\\u00e9e p\\u00e9destre&quot;,&quot;location&quot;:&quot;Saint-Coulomb&quot;,&quot;length_km&quot;:15,&quot;difficulty&quot;:&quot;difficile&quot;,&quot;description&quot;:&quot;Cette randonn\\u00e9e de 15 km vous emm\\u00e8ne jusqu&#039;\\u00e0 la pointe du Meinga, offrant des vues imprenables sur la mer et les paysages environnants.&quot;,&quot;best_season&quot;:&quot;printemps, \\u00e9t\\u00e9, automne&quot;,&quot;access_public_transport&quot;:&quot;Non&quot;,&quot;latitude&quot;:&quot;48.6500000&quot;,&quot;longitude&quot;:&quot;-1.9750000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Pointe%20du%20Meinga%20Saint-Coulomb.jpg&quot;},&quot;category&quot;:&quot;randonn\\u00e9es p\\u00e9destres&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:\/\/www.saint-malo-tourisme.com\/sites\/default\/files\/styles\/large\/public\/2023-02\/Pointe%20du%20Meinga%20Saint-Coulomb.jpg\" alt=\"La pointe du Meinga\" 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-default\">randonn\u00e9es p\u00e9destres<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">La pointe du Meinga<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">randonn\u00e9e p\u00e9destre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Coulomb<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Longueur (km) :<\/span>\n                        <span class=\"em-card-field-value\">15<\/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=\"randonnees-pedestres\"\n                data-features=\"\"\n                data-name=\"circuit des deux vall\u00e9es\"\n                data-json=\"{&quot;name&quot;:&quot;Circuit des Deux Vall\\u00e9es&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Circuit%20des%20Deux%20Vall\\u00e9es%20Saint-Broladre.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Circuit des Deux Vall\\u00e9es&quot;,&quot;category&quot;:&quot;randonn\\u00e9e p\\u00e9destre&quot;,&quot;location&quot;:&quot;Saint-Broladre&quot;,&quot;length_km&quot;:8.5,&quot;difficulty&quot;:&quot;facile&quot;,&quot;description&quot;:&quot;Ce circuit de 8,5 km traverse les vall\\u00e9es de la Rance et du Couesnon, offrant une promenade paisible en campagne.&quot;,&quot;best_season&quot;:&quot;printemps, \\u00e9t\\u00e9, automne&quot;,&quot;access_public_transport&quot;:&quot;Non&quot;,&quot;latitude&quot;:&quot;48.5000000&quot;,&quot;longitude&quot;:&quot;-1.6167000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Circuit%20des%20Deux%20Vall\\u00e9es%20Saint-Broladre.jpg&quot;},&quot;category&quot;:&quot;randonn\\u00e9es p\\u00e9destres&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                                      <div class=\"em-card-placeholder\">\ud83d\udcf7 Pas d'image<\/div>\n                                    <span class=\"em-card-badge badge-default\">randonn\u00e9es p\u00e9destres<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Circuit des Deux Vall\u00e9es<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">randonn\u00e9e p\u00e9destre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Saint-Broladre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Longueur (km) :<\/span>\n                        <span class=\"em-card-field-value\">8.5<\/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=\"randonnees-pedestres\"\n                data-features=\"\"\n                data-name=\"circuit du clos chapelle\"\n                data-json=\"{&quot;name&quot;:&quot;Circuit du Clos Chapelle&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Circuit%20du%20Clos%20Chapelle%20Baguer-Morvan.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Circuit du Clos Chapelle&quot;,&quot;category&quot;:&quot;randonn\\u00e9e p\\u00e9destre&quot;,&quot;location&quot;:&quot;Baguer-Morvan&quot;,&quot;length_km&quot;:14.5,&quot;difficulty&quot;:&quot;moyen&quot;,&quot;description&quot;:&quot;Cette randonn\\u00e9e de 14,5 km vous emm\\u00e8ne \\u00e0 travers des paysages vari\\u00e9s, entre for\\u00eat et campagne.&quot;,&quot;best_season&quot;:&quot;printemps, \\u00e9t\\u00e9, automne&quot;,&quot;access_public_transport&quot;:&quot;Non&quot;,&quot;latitude&quot;:&quot;48.4000000&quot;,&quot;longitude&quot;:&quot;-1.8000000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Circuit%20du%20Clos%20Chapelle%20Baguer-Morvan.jpg&quot;},&quot;category&quot;:&quot;randonn\\u00e9es p\\u00e9destres&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:\/\/www.saint-malo-tourisme.com\/sites\/default\/files\/styles\/large\/public\/2023-02\/Circuit%20du%20Clos%20Chapelle%20Baguer-Morvan.jpg\" alt=\"Circuit du Clos Chapelle\" 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-default\">randonn\u00e9es p\u00e9destres<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Circuit du Clos Chapelle<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">randonn\u00e9e p\u00e9destre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Baguer-Morvan<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Longueur (km) :<\/span>\n                        <span class=\"em-card-field-value\">14.5<\/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=\"randonnees-pedestres\"\n                data-features=\"\"\n                data-name=\"circuit nomino\u00eb\"\n                data-json=\"{&quot;name&quot;:&quot;Circuit Nomino\\u00eb&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Circuit%20Nomino\\u00eb%20Dol-de-Bretagne.jpg&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Circuit Nomino\\u00eb&quot;,&quot;category&quot;:&quot;randonn\\u00e9e p\\u00e9destre&quot;,&quot;location&quot;:&quot;Dol-de-Bretagne&quot;,&quot;length_km&quot;:8,&quot;difficulty&quot;:&quot;facile&quot;,&quot;description&quot;:&quot;Ce circuit de 8 km vous emm\\u00e8ne sur les traces de Nomino\\u00eb, duc de Bretagne, offrant une promenade historique et pittoresque.&quot;,&quot;best_season&quot;:&quot;printemps, \\u00e9t\\u00e9, automne&quot;,&quot;access_public_transport&quot;:&quot;Non&quot;,&quot;latitude&quot;:&quot;48.5000000&quot;,&quot;longitude&quot;:&quot;-1.7000000&quot;,&quot;link&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/explorer-notre-destination\\\/expeditions-nature\\\/balades-pedestre\\\/promenades-randonnees\\\/&quot;,&quot;image&quot;:&quot;https:\\\/\\\/www.saint-malo-tourisme.com\\\/sites\\\/default\\\/files\\\/styles\\\/large\\\/public\\\/2023-02\\\/Circuit%20Nomino\\u00eb%20Dol-de-Bretagne.jpg&quot;},&quot;category&quot;:&quot;randonn\\u00e9es p\\u00e9destres&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                                      <div class=\"em-card-placeholder\">\ud83d\udcf7 Pas d'image<\/div>\n                                    <span class=\"em-card-badge badge-default\">randonn\u00e9es p\u00e9destres<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Circuit Nomino\u00eb<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">randonn\u00e9e p\u00e9destre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">Dol-de-Bretagne<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Longueur (km) :<\/span>\n                        <span class=\"em-card-field-value\">8<\/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=\"randonnees-pedestres\"\n                data-features=\"\"\n                data-name=\"randonn\u00e9e sur le gr34c proche du camping, elle commence au cimeti\u00e8re de bateaux de la passag\u00e8re \u00e0 2km du camping\"\n                data-json=\"{&quot;name&quot;:&quot;Randonn\\u00e9e sur le GR34C proche du camping, elle commence au cimeti\\u00e8re de bateaux de la Passag\\u00e8re \\u00e0 2km du camping&quot;,&quot;image&quot;:&quot;&quot;,&quot;link&quot;:&quot;&quot;,&quot;data&quot;:{&quot;name&quot;:&quot;Randonn\\u00e9e sur le GR34C proche du camping, elle commence au cimeti\\u00e8re de bateaux de la Passag\\u00e8re \\u00e0 2km du camping&quot;,&quot;category&quot;:&quot;randonn\\u00e9e p\\u00e9destre&quot;,&quot;location&quot;:&quot;En bord de Rance rive droite, d\\u00e9part le cimeti\\u00e8re de bateaux de la Passag\\u00e8re jusqu&#039;\\u00e0 Saint Suliac&quot;,&quot;length_km&quot;:&quot;15&quot;,&quot;difficulty&quot;:&quot;moyen&quot;,&quot;description&quot;:&quot;Le GR34C fait le tour de la Rance au d\\u00e9part de la Passag\\u00e8re (cimeti\\u00e8re bateaux). Il traverse au pont Saint Hubert et repasse au barrage de la Rance. L&#039;une des plus belles parties est La Passag\\u00e8re - Saint Suliac&quot;,&quot;best_season&quot;:&quot;&quot;,&quot;access_public_transport&quot;:&quot;&quot;},&quot;category&quot;:&quot;randonn\\u00e9es p\\u00e9destres&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                                      <div class=\"em-card-placeholder\">\ud83d\udcf7 Pas d'image<\/div>\n                                    <span class=\"em-card-badge badge-default\">randonn\u00e9es p\u00e9destres<\/span>\n                <\/div>\n\n                <!-- Contenu de la card -->\n                <div class=\"em-card-body\">\n                  <h3 class=\"em-card-title\">Randonn\u00e9e sur le GR34C proche du camping, elle commence au cimeti\u00e8re de bateaux de la Passag\u00e8re \u00e0 2km du camping<\/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\">Cat\u00e9gorie :<\/span>\n                        <span class=\"em-card-field-value\">randonn\u00e9e p\u00e9destre<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Localisation :<\/span>\n                        <span class=\"em-card-field-value\">En bord de Rance rive droite, d\u00e9part le cimeti\u00e8re de bateaux<\/span>\n                      <\/div>\n                                          <div class=\"em-card-field\">\n                        <span class=\"em-card-field-label\">Longueur (km) :<\/span>\n                        <span class=\"em-card-field-value\">15<\/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\":48.6475,\"lng\":-2.0194,\"name\":\"Parc aquatique ext\\u00e9rieur du Domaine de la Ville Huchet\",\"type\":\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\",\"idx\":0},{\"lat\":48.6475,\"lng\":-2.0194,\"name\":\"Mini-golf th\\u00e9m\\u00e9 Corsaires\",\"type\":\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\",\"idx\":1},{\"lat\":48.6475,\"lng\":-2.0194,\"name\":\"Club enfants\",\"type\":\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\",\"idx\":2},{\"lat\":48.6475,\"lng\":-2.0194,\"name\":\"Balades en bateau sur la Rance\",\"type\":\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\",\"idx\":3},{\"lat\":48.6475,\"lng\":-2.0194,\"name\":\"Plage du Sillon\",\"type\":\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\",\"idx\":4},{\"lat\":48.6482,\"lng\":-2.026,\"name\":\"Saint-Malo\",\"type\":\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\",\"idx\":5},{\"lat\":48.538,\"lng\":-1.85,\"name\":\"Cancale\",\"type\":\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\",\"idx\":6},{\"lat\":48.45,\"lng\":-2.05,\"name\":\"Dinan\",\"type\":\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\",\"idx\":7},{\"lat\":48.566,\"lng\":-2.016,\"name\":\"Saint-Suliac\",\"type\":\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\",\"idx\":8},{\"lat\":48.636,\"lng\":-2.05,\"name\":\"Dinard\",\"type\":\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\",\"idx\":9},{\"lat\":48.5167,\"lng\":-1.8667,\"name\":\"Circuit du Parc de la Higourdais\",\"type\":\"randonnees-pedestres\",\"idx\":10},{\"lat\":48.65,\"lng\":-1.975,\"name\":\"La pointe du Meinga\",\"type\":\"randonnees-pedestres\",\"idx\":11},{\"lat\":48.5,\"lng\":-1.6167,\"name\":\"Circuit des Deux Vall\\u00e9es\",\"type\":\"randonnees-pedestres\",\"idx\":12},{\"lat\":48.4,\"lng\":-1.8,\"name\":\"Circuit du Clos Chapelle\",\"type\":\"randonnees-pedestres\",\"idx\":13},{\"lat\":48.5,\"lng\":-1.7,\"name\":\"Circuit Nomino\\u00eb\",\"type\":\"randonnees-pedestres\",\"idx\":14}];\n        var categoryColorMap = {\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\":\"#0891b2\",\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\":\"#db2777\",\"randonnees-pedestres\":\"#65a30d\"};\n        var categoryLabelMap = {\"top-5-activites-autour-du-domaine-de-la-ville-huchet-saint-malo\":\"TOP 5 activit\\u00e9s autour du Domaine de la Ville Huchet (Saint-Malo)\",\"top-5-des-villes-et-villages-a-visiter-autour-du-domaine-de-la-ville-huchet\":\"Top 5 des villes et villages \\u00e0 visiter autour du Domaine de la Ville Huchet\",\"randonnees-pedestres\":\"randonn\\u00e9es p\\u00e9destres\"};\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":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","inline_featured_image":false,"gt_fse_maillage_image":"","gt_fse_maillage_titre":"D\u00e9couvrez autour de vous","gt_fse_maillage_alt":"D\u00e9couvrez autour de vous","gt_fse_maillage_resume":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-5548","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/pages\/5548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/comments?post=5548"}],"version-history":[{"count":1,"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/pages\/5548\/revisions"}],"predecessor-version":[{"id":5550,"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/pages\/5548\/revisions\/5550"}],"wp:attachment":[{"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/media?parent=5548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/categories?post=5548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lavillehuchet.com\/fr\/wp-json\/wp\/v2\/tags?post=5548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}