{"id":10106,"date":"2026-10-20T15:01:59","date_gmt":"2026-10-20T13:01:59","guid":{"rendered":"https:\/\/www.campingdespins.fr\/elaia-metadatas-2\/"},"modified":"2026-10-20T15:01:59","modified_gmt":"2026-10-20T13:01:59","slug":"elaia-metadatas","status":"publish","type":"page","link":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/","title":{"rendered":"Discover around you"},"content":{"rendered":"\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"ItemList\",\"name\":\"Villes aux alentours\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Soulac-sur-Mer\",\"url\":\"https:\/\/www.soulac-sur-mer.fr\",\"image\":\"https:\/\/www.guide-bordeaux-gironde.com\/_bibli\/articlesPage_rte\/195\/rte_images\/soulac-sur-mer-front-de-mer.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.51241,\"longitude\":-1.1257553},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Driving time (min)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Must-see places \/ activities\",\"value\":\"Plage centrale, Basilique Notre-Dame, Villas typiques, Mus\u00e9e d\u2019Art et d\u2019Arch\u00e9ologie\"},{\"@type\":\"PropertyValue\",\"name\":\"Markets \/ local events\",\"value\":\"March\u00e9s diurnes et nocturnes\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ local specialties\",\"value\":\"Sp\u00e9cialit\u00e9s de fruits de mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Station baln\u00e9aire familiale avec une belle plage et des activit\u00e9s vari\u00e9es\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Soulac-sur-Mer, 33780 Soulac-sur-Mer, France\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Montalivet-les-Bains\",\"url\":\"https:\/\/www.montalivet-les-bains.com\",\"image\":\"https:\/\/www.vendaysmontalivet.com\/assets\/images\/index-meta.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.3797156,\"longitude\":-1.1504745},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"16.2\"},{\"@type\":\"PropertyValue\",\"name\":\"Driving time (min)\",\"value\":\"19\"},{\"@type\":\"PropertyValue\",\"name\":\"Must-see places \/ activities\",\"value\":\"Plages immacul\u00e9es, March\u00e9 en plein air\"},{\"@type\":\"PropertyValue\",\"name\":\"Markets \/ local events\",\"value\":\"March\u00e9 en plein air\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ local specialties\",\"value\":\"Produits artisanaux, V\u00eatements, D\u00e9lices culinaires locaux\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Ambiance d\u00e9contract\u00e9e avec un march\u00e9 r\u00e9put\u00e9 et de belles plages\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Montalivet-les-Bains, 33930 Vendays-Montalivet, France\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Le Verdon-sur-Mer\",\"url\":\"https:\/\/www.leverdon-sur-mer.fr\",\"image\":\"https:\/\/www.campingduvieuxmoulin.fr\/wp-content\/uploads\/2025\/05\/verdon-sur-mer.png\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5480053,\"longitude\":-1.0608673},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"14.3\"},{\"@type\":\"PropertyValue\",\"name\":\"Driving time (min)\",\"value\":\"16\"},{\"@type\":\"PropertyValue\",\"name\":\"Must-see places \/ activities\",\"value\":\"Port M\u00e9doc, Plages sur l'estuaire et l'oc\u00e9an\"},{\"@type\":\"PropertyValue\",\"name\":\"Markets \/ local events\",\"value\":\"March\u00e9s locaux\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ local specialties\",\"value\":\"Fruits de mer, Cuisine locale\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Petit port charmant avec des plages vari\u00e9es et un acc\u00e8s facile \u00e0 Royan\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Le Verdon-sur-Mer, 33123 Le Verdon-sur-Mer, France\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"La Palmyre\",\"url\":\"https:\/\/www.lapalmyre.com\",\"image\":\"https:\/\/www.deuxieme-adresse.com\/wp-content\/uploads\/prl-vendee-foret-plage.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.6858361,\"longitude\":-1.1662364},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"30\"},{\"@type\":\"PropertyValue\",\"name\":\"Driving time (min)\",\"value\":\"35\"},{\"@type\":\"PropertyValue\",\"name\":\"Must-see places \/ activities\",\"value\":\"Zoo de La Palmyre, Plages de la C\u00f4te sauvage, For\u00eat de la Coubre\"},{\"@type\":\"PropertyValue\",\"name\":\"Markets \/ local events\",\"value\":\"March\u00e9s locaux\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ local specialties\",\"value\":\"Fruits de mer, Cuisine r\u00e9gionale\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Station baln\u00e9aire r\u00e9put\u00e9e pour son zoo et ses plages sauvages\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"La Palmyre, 17570 Les Mathes, France\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Royan\",\"url\":\"https:\/\/www.royan.fr\",\"image\":\"https:\/\/www.royanatlantique.fr\/app\/uploads\/2022\/07\/grande-conche-royan-%C2%A9-thierry-avan.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.625,\"longitude\":-1.016667},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"25\"},{\"@type\":\"PropertyValue\",\"name\":\"Driving time (min)\",\"value\":\"39\"},{\"@type\":\"PropertyValue\",\"name\":\"Must-see places \/ activities\",\"value\":\"Grand Conche Beach, Pontaillac Beach, Chay Beach, Foncillon Beach\"},{\"@type\":\"PropertyValue\",\"name\":\"Markets \/ local events\",\"value\":\"Day and night markets\"},{\"@type\":\"PropertyValue\",\"name\":\"Restaurants \/ local specialties\",\"value\":\"Seafood, local cuisine\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Lively seaside resort with many beaches and activities\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Royan, 17200 Royan, France\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Activit\u00e9s et lieux recommand\u00e9s\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Le Verdon-sur-Mer Local Market\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b9057727ce.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"local market\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Le Verdon-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"14.3\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"2 hours\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"Non\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Small local market with fresh seafood and regional specialties. Charming small port with a pleasant setting for strolling.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Le Verdon-sur-Mer, 33123 Le Verdon-sur-Mer, France\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Montalivet-les-Bains Outdoor Market\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/0e984838-45a7-49dd-b9b8-311f0271b53b.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.3796674,\"longitude\":-1.1499596},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"local market\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Montalivet-les-Bains\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"16.2\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"2 to 3 hours\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"Non\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Renowned outdoor market for its handcrafted products, clothing, and local culinary specialties. Perfect for a relaxing stroll and local shopping.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Montalivet-les-Bains, 33930 Vendays-Montalivet, France\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Golf at Balata Golf Practice\",\"url\":\"https:\/\/www.campingdespins.fr\/blog\/activites\/\",\"image\":\"https:\/\/nwscdn.com\/media\/catalog\/product\/cache\/h900xw900\/1\/5\/15mm_artificial_turf_golf_practice_mat_for_all_weather_conditions.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.435196,\"longitude\":-1.10637},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"sports\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"4,6\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"variable\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"oui\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Come discover golf or improve your skills in a natural and preserved setting. The Balata Golf Practice association offers lessons, outings, and competitions for all levels.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Montalivet Paintball\",\"url\":\"https:\/\/www.campingdespins.fr\/blog\/activites\/\",\"image\":\"https:\/\/www.paintball-montalivet.com\/images\/terrain-paintball\/90km-bordeaux.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.3746987,\"longitude\":-1.1375455},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"sports\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Montalivet-les-Bains\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"15\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"2 hours\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"oui\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Come alone or with a team to Montalivet Paintball. Various scenarios are imagined for your enjoyment and that of children. Camping clients benefit from a preferential rate.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Montalivet-les-Bains, France\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Parachuting over Soulac-sur-Mer\",\"url\":\"https:\/\/www.campingdespins.fr\/blog\/activites\/\",\"image\":\"https:\/\/img.adrenactive.com\/img\/3527\/800_600\/3527-18855-saut-en-parachute-soulac-sur-mer-800.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.496728,\"longitude\":-1.077014},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"sport\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"1 hour\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"oui\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Adrenaline lovers will discover our breathtaking landscape from above while flying over Soulac-sur-Mer. Landing at Arros beach, a small piece of paradise.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}]}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"Thing\",\"name\":\"Horseback Riding at Silver Stud Farm\",\"url\":\"https:\/\/www.campingdespins.fr\/blog\/activites\/\",\"image\":\"https:\/\/static.wixstatic.com\/media\/61128a_fd6422a4d31a4216aba03a7c3d5cde96~mv2.jpg\/v1\/fill\/w_560,h_400,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto\/61128a_fd6422a4d31a4216aba03a7c3d5cde96~mv2.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.4799483,\"longitude\":-1.119821},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"sports\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"1 hour\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"oui\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Just a stone's throw from the campsite, the Silver Stud Farm riding center offers initiation sessions, forest walks, or beach rides.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}]}},{\"@type\":\"ListItem\",\"position\":7,\"item\":{\"@type\":\"Thing\",\"name\":\"Hiking in the Landes Forest\",\"url\":\"https:\/\/www.campingdespins.fr\/tourisme-soulac-sur-mer\/tourisme-activites-soulac-sur-mer\/\",\"image\":\"https:\/\/woody.cloudly.space\/app\/uploads\/cotelandesnature\/2021\/12\/thumbs\/saintgirons-dsc-0279sophiepawlak-640x640.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.4837971,\"longitude\":-1.1267853},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"nature\"},{\"@type\":\"PropertyValue\",\"name\":\"City \/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"0\"},{\"@type\":\"PropertyValue\",\"name\":\"Average duration\",\"value\":\"2-3 hours\"},{\"@type\":\"PropertyValue\",\"name\":\"Reservation necessary?\",\"value\":\"non\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Use mobile apps like Komoot or Wikiloc to discover new trails, find exceptional viewpoints, and observe rich fauna and flora.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"\u00c9v\u00e9nements recommand\u00e9s\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Royan Architecture Photo Contest Exhibition\",\"description\":\"Exhibition showcasing works from the photo contest on the theme of \\\"color\\\".\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b5a12aee72.png\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.620178,\"longitude\":-1.033324},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Date \/ Period\",\"value\":\"October 18 - December 24, 2025\"},{\"@type\":\"PropertyValue\",\"name\":\"Location (city)\",\"value\":\"Royan\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"27\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Exhibition\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Discover at CIAP, ground floor of the Conference Palace.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"CIAP, ground floor of the Conference Palace, 42 av des Congr\u00e8s, Royan\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Jazz at the Palace - Baptiste Herbin Trio \\\"Django\\\"\",\"description\":\"Jazz concert with Baptiste Herbin Trio performing \\\"Django\\\".\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b5e2b395e7.png\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.620178,\"longitude\":-1.033324},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Date \/ Period\",\"value\":\"November 29, 2025\"},{\"@type\":\"PropertyValue\",\"name\":\"Location (city)\",\"value\":\"Royan\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"27\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Concert\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"A must-attend event for jazz lovers.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"42 avenue des Congr\u00e8s, Le Palais, Royan\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Giant Cluedo\",\"description\":\"A life-sized investigation at the CIAP of Royan to solve a mysterious theft.\",\"image\":\"https:\/\/lh4.googleusercontent.com\/8-uJlhFGc0q3f85pBqFFd9aSb0pjGcY4wBIJ93raboQvKsAs1A_JDJEiGfQsd0c7hXbaNK18S-Egt8bk6F-IJfaNVSIsHpDebMQ5r7ZpVXWSyK-yE3HbFtfLZf8Z2e8ld2HtwUS4j2BaPR9hXKQYprAedpRp0f6u3P7saWgI05oVgEU1FS2iZZM_Ug9Caw\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.620178,\"longitude\":-1.033324},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Date \/ Period\",\"value\":\"November 29, 2025\"},{\"@type\":\"PropertyValue\",\"name\":\"Location (city)\",\"value\":\"Royan\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"27\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Jeu\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"Come test your detective skills as a team.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"CIAP, ground floor of the Palace, 42 av des Congr\u00e8s, Royan\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Classic Weekend - Arthur Hinnewinkel\",\"description\":\"Classical concert with pianist Arthur Hinnewinkel.\",\"url\":\"https:\/\/www.france-voyage.com\/evenements\/soulac-sur-mer-commune-11753.htm\",\"image\":\"https:\/\/encrypted-tbn0.gstatic.com\/images?q=tbn:ANd9GcQJ9zuYFrTs8Sh3CYMwV-fwX5Tz7Kl5FRHczQ\\u0026s\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.620178,\"longitude\":-1.033324},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Date \/ Period\",\"value\":\"December 6, 2025\"},{\"@type\":\"PropertyValue\",\"name\":\"Location (city)\",\"value\":\"Royan\"},{\"@type\":\"PropertyValue\",\"name\":\"Distance from camping (km)\",\"value\":\"27\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Concert\"},{\"@type\":\"PropertyValue\",\"name\":\"Tip or comment\",\"value\":\"An opportunity to listen to a promising artist in an intimate setting.\"},{\"@type\":\"PropertyValue\",\"name\":\"Full address\",\"value\":\"42 avenue des Congr\u00e8s, Le Palais, Royan\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Practical information\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Themed Evenings and Concerts\",\"description\":\"Family and festive evenings including concerts, themed nights, blind tests, family activities like Piki Disco and cocktail games.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/concert-soulac-1.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"All audiences\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\" Mainly on Friday evenings, weekly during the summer season\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Stage and activity area of the campsite\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Various Sports Activities\",\"description\":\"Various sports activities offered by the entertainment team, including fitness, cross-training, p\u00e9tanque, beach volleyball.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/beach-volley-soulac.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"All ages\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"According to the entertainment schedule\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Camping sports fields and areas\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Treasure Hunt\",\"description\":\"An adventure organized by the animation team, perfect for children and families, offering a fun and playful scavenger hunt.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/chasse-tresor-soulac.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"Children and families\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"July and August\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Camping and surroundings\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Sports Tournaments and Challenges\",\"description\":\"Organization of sports tournaments and fun challenges such as inter-camp tournaments and water games inspired by Koh-Lanta.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b5fde2e946.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"All ages\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"According to activity schedule, in high season\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Sports fields of the campsite\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Yoga and Aquagym Classes\",\"description\":\"Yoga and aquagym classes offered by the animation team, with massage available upon request. These activities promote relaxation and well-being.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2024\/08\/yoga-soulac.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"Adults and children\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"Yoga: Monday 9:30 am, Thursday 12:15 pm, Friday 6:30 pm, Sunday 6:00 pm\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Swimming pool and sports hall of the campsite\"}]}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"Thing\",\"name\":\"Children's Club\",\"description\":\"The children's club offers creative activities such as painting and drawing, outdoor games, treasure hunts, snacks, and carnivals. Managed by qualified animators, it operates 7 days a week during the high season.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/soulac-club-enfants-1.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"Children from 6 years old\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"July and August, sessions of at least 2 hours\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Camping des Pins, children's club area\"}]}},{\"@type\":\"ListItem\",\"position\":7,\"item\":{\"@type\":\"Thing\",\"name\":\"Night Walk\",\"description\":\"Guided night walk organized, allowing you to discover the surroundings under a different atmosphere.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b606799e41.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"Adults\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"According to schedule\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Departure from the campsite\"}]}},{\"@type\":\"ListItem\",\"position\":8,\"item\":{\"@type\":\"Thing\",\"name\":\"Boom Party and Mini Disco\",\"description\":\"Activities for children including boom party, mini disco, and small parties with music and dance suitable for ages.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/soulac-animation-enfant.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"Children\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"In the evening, according to schedule\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Children's activity area of the campsite\"}]}},{\"@type\":\"ListItem\",\"position\":9,\"item\":{\"@type\":\"Thing\",\"name\":\"Aquatournoi and Blowgun\",\"description\":\"Water tournament and blowgun shooting sessions offered for children and adults, combining sport and relaxation.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b7494ab3dc.png\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Target audience\",\"value\":\"All ages\"},{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"According to schedule\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Swimming pool and water play area of the campsite\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Infrastructures\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Restaurant\",\"description\":\"On-site restaurant offering meals and drinks in a friendly setting, integrated into the Nicoll\u2019s Camp camping experience.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/soulac-restaurant.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Catering\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"Near the main entrance of the camping site\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible for people with reduced mobility and children\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Camping pitches\",\"description\":\"Approximately 70 shaded pitches, marked out by hedges, with an average area of 80 m\u00b2. The pitches are in premium, high comfort, and nature ranges, accommodating up to 6 people.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/gironde-louer-emplacement.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Pitches\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"Various pitches spread across the campsite\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible for children, not all equipped with electricity, bring adapters and extension cords\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Accueil \/ Reception\",\"description\":\"Main reception point for reservations, information, and camper assistance.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2022\/02\/camping-des-pins.png\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Service\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"At the entrance of the campsite\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible to persons with reduced mobility\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Heated swimming pool\",\"description\":\"Heated pool available for campers, offering a space for relaxation and aquatic leisure.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/soulac-piscine.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.484555,\"longitude\":-1.126622},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Aquatic area\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"Close to reception and common areas\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible to children, parental supervision recommended\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Playground\",\"description\":\"Play area equipped for children, with ping-pong, mini-football, and p\u00e9tanque.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/soulac-jeux-enfants.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Leisure\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"Near accommodations and common areas\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible to children under parental supervision\"}]}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"Thing\",\"name\":\"Outdoor parking\",\"description\":\"Outdoor parking for residents and visitors' vehicles, the campsite being pedestrian-only internally.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b90b8af34d.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Parking\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"At the entrance of the campsite, outside\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible for people with reduced mobility\"}]}},{\"@type\":\"ListItem\",\"position\":7,\"item\":{\"@type\":\"Thing\",\"name\":\"Gourmet Grocery\",\"description\":\"Small gourmet grocery offering essential and local products for campers.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b82c93cc11.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of facility\",\"value\":\"Commerce\"},{\"@type\":\"PropertyValue\",\"name\":\"Location within the campsite\",\"value\":\"Near the reception\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible to all\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Services\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Bike Rental\",\"description\":\"Bike rental to promote sustainable mobility and enjoy the nearby bike paths.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/soulac-location-velo.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"Available during the campground's opening hours.\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Prices on request at the reception.\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact\",\"value\":\"Campground reception\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Linen and towel rental\",\"description\":\"Rental service for bed sheets and towels for more comfort during your stay.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/location-drap-soulac-1.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"Available throughout the camping season.\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Bed sheet rental: \u20ac12 \/ bed; Towel kit: \u20ac10 \/ person.\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact\",\"value\":\"At the camping reception\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Restaurant \/ Snack \/ Bar\",\"description\":\"The campsite offers a restaurant, snack bar, and lounge. The restaurant serves homemade cuisine, emphasizing local and seasonal products. The snack bar offers takeaway pizzas and fries. The bar offers cocktails and happy hours with drinks on the terrace.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/soulac-restaurant.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"Snack open 12pm-2pm and 6:30pm-10pm in July\/August. Restaurant open every evening in high season until 10pm, and on Thursday, Friday, Saturday in low season. Bar open day and night.\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Prices vary depending on dishes, children's menus available.\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact\",\"value\":\"On-site at the campsite\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Laundry\",\"description\":\"The campsite provides a laundry equipped with a washing machine and a dryer for the comfort of campers.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/location-kit-bebe-soulac.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Hours\",\"value\":\"9am-8pm in high season, 9am-5:30pm in low season\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Not specified\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Baby Kit Rental\",\"description\":\"Rental of available baby chairs or cribs, with weekly or nightly rates.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/location-kit-bebe-soulac.jpg\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"\u20ac14 per week or \u20ac5 per night\"}]}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"Thing\",\"name\":\"Bread and pastry deposit\",\"description\":\"Enjoy a bread and pastry deposit service every morning to start the day with fresh products. Prices are to be checked directly at the reception of the campsite.\\nReservation mandatory the day before.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/04\/vente-viennoisseries-soulac-3.jpg\"}}]},{\"@type\":\"ItemList\",\"name\":\"Baignade\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Na\u00efades Beach\",\"description\":\"Natural sandy beach popular for swimming, relaxing, and water activities such as surfing and bodyboarding.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/9b72a1d0-3276-43f3-b8e4-1a5197eecce6.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5033,\"longitude\":-1.1352},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of swimming\",\"value\":\"Seaside beach\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible on foot or by bike from the campsite, facilities adapted for PMR.\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact Hours\",\"value\":\"Supervised bathing generally until 7 p.m.\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Free.\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Am\u00e9lie Beach\",\"description\":\"Public sandy beach located about 1.8 km from the campsite, ideal for swimming and water activities.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b909b69503.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.4712821,\"longitude\":-1.1567571},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of swimming\",\"value\":\"Seaside Beach\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Accessible by bike or on foot, with facilities for PWD.\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact Hours\",\"value\":\"Swimming allowed until 7 PM.\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Free.\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Olives Beach\",\"description\":\"Popular natural beach, part of a recreational area with entertainment and water sports such as surfing and bodyboarding.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b90a62d77e.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5184233,\"longitude\":-1.1257456},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Type of swimming\",\"value\":\"Seaside beach\"},{\"@type\":\"PropertyValue\",\"name\":\"Accessibility\",\"value\":\"Easily accessible by foot or bike, wheelchair accessible.\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact Hours\",\"value\":\"Supervision and swimming until 7 PM.\"},{\"@type\":\"PropertyValue\",\"name\":\"Rate\",\"value\":\"Free.\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Activit\u00e9s, foires \\u0026 march\u00e9s\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Cordouan Lighthouse\",\"description\":\"Visit the famous lighthouse located at the entrance of the Gironde estuary, accessible by boat from Soulac-sur-Mer.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/phare-cordouan-gironde.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5866324,\"longitude\":-1.1730866},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Cordouan Lighthouse\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Gironde Estuary\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Cultural visit \/ Boat\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"3 to 4 hours\"}]}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"Thing\",\"name\":\"Local Market of Soulac-sur-Mer\",\"description\":\"Market where you can find oysters from M\u00e9doc, shrimps, fresh local products, open every morning.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2026\/04\/Marche-Soulac-sur-Mer.webp\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5056972,\"longitude\":-1.124382},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Local Market of Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Soulac-sur-Mer centre\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Local market, gastronomy\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"1 to 2 hours\"}]}},{\"@type\":\"ListItem\",\"position\":3,\"item\":{\"@type\":\"Thing\",\"name\":\"Bike rides on the V\u00e9lodyss\u00e9e\",\"description\":\"The campsite is connected to the V\u00e9lodyss\u00e9e cycling network, ideal for bike rides and exploring the coast around Soulac-sur-Mer.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/velo-soulac.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.497638,\"longitude\":-1.116894},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Bike rides on the V\u00e9lodyss\u00e9e\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Soulac-sur-Mer, Gironde\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Cycling tourism\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"Half-day to full day\"}]}},{\"@type\":\"ListItem\",\"position\":4,\"item\":{\"@type\":\"Thing\",\"name\":\"Citadelle de Blaye\",\"description\":\"An imposing fortress listed as a UNESCO World Heritage site, offering guided tours and panoramic views of the estuary.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/citadelle-blaye-1.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.1293292,\"longitude\":-0.6661214},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Citadelle de Blaye\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Blaye\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Cultural visit\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"2 to 3 hours\"}]}},{\"@type\":\"ListItem\",\"position\":5,\"item\":{\"@type\":\"Thing\",\"name\":\"Parc accrobranche et base de loisirs\",\"description\":\"Adventure park with treetop course for children and adults, located in the nearby region.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/03\/accrobranche-soulac-sur-mer.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.4,\"longitude\":-1.05},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Parc accrobranche et base de loisirs\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"R\u00e9gion M\u00e9doc\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Leisure \/ Adventure\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"3 to 4 hours\"}]}},{\"@type\":\"ListItem\",\"position\":6,\"item\":{\"@type\":\"Thing\",\"name\":\"Water sports center\",\"description\":\"Various water activities on the coast, including surfing, windsurfing, kitesurfing, and stand-up paddleboarding.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/sport-nautique-soulac-1.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5165,\"longitude\":-1.1246},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Water sports center\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Littoral de Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Watersports\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"Half-day to full day\"}]}},{\"@type\":\"ListItem\",\"position\":7,\"item\":{\"@type\":\"Thing\",\"name\":\"Oceanic beaches of Soulac-sur-Mer\",\"description\":\"Natural beaches suitable for swimming, surfing, and other water sports such as windsurfing or kitesurfing.\",\"image\":\"https:\/\/elaia-public.s3.fr-par.scw.cloud\/metadata_images\/image_6a4b809930b8e.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.5116642,\"longitude\":-1.1326218},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Oceanic beaches of Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Soulac-sur-Mer, Gironde\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Beach \\u0026 water sports\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"Half-day or longer\"}]}},{\"@type\":\"ListItem\",\"position\":8,\"item\":{\"@type\":\"Thing\",\"name\":\"Hiking and MTB Trails\",\"description\":\"Coastal and forest trails suitable for all families and hikers around Soulac and M\u00e9doc.\",\"image\":\"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/05\/vtt-sport-gironde-1.jpg\",\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":45.352,\"longitude\":-1.115},\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Title\",\"value\":\"Hiking and MTB Trails\"},{\"@type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Soulac-sur-Mer et M\u00e9doc\"},{\"@type\":\"PropertyValue\",\"name\":\"Type of activity\",\"value\":\"Hiking, mountain biking\"},{\"@type\":\"PropertyValue\",\"name\":\"Approximate duration\",\"value\":\"1 to 4 hours\"}]}}]},{\"@type\":\"ItemList\",\"name\":\"Contact\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"Thing\",\"name\":\"Contact Camping des Pins\",\"additionalProperty\":[{\"@type\":\"PropertyValue\",\"name\":\"Email Address\",\"value\":\"contact@campingdespins.fr\"},{\"@type\":\"PropertyValue\",\"name\":\"Phone Number\",\"value\":\"+33 (0)5 56 09 82 52\"},{\"@type\":\"PropertyValue\",\"name\":\"Postal Address\",\"value\":\"213 Passage De Formose - 33780 Soulac-sur-Mer\"},{\"@type\":\"PropertyValue\",\"name\":\"Contact Hours\",\"value\":\"Reception hours generally from 9 am to 7 pm, to be confirmed with the campsite\"}]}}]}]}<\/script>\n<style>\n  .mv-wrap {\n    --mv-accent: #2e5e45;\n    --mv-accent-soft: #2e5e451a;\n    --mv-cream: #faf7f2;\n    --mv-line: #ebe5da;\n    --mv-muted: #6b6559;\n    --mv-header: 0px;\n    font-family: 'Inter', -apple-system, sans-serif;\n    color: #1f2a24;\n    max-width: 1440px;\n    margin: 0 auto;\n    padding: 0 24px 56px;\n    box-sizing: border-box;\n  }\n\n  .mv-wrap *,\n  .mv-wrap *::before,\n  .mv-wrap *::after,\n  .mv-modal-overlay *,\n  .mv-modal-overlay *::before,\n  .mv-modal-overlay *::after {\n    box-sizing: border-box;\n  }\n\n  .mv-wrap button,\n  .mv-wrap input,\n  .mv-modal-overlay button {\n    font-family: 'Inter', -apple-system, sans-serif;\n  }\n\n  .mv-icon {\n    display: inline-flex;\n    width: 1em;\n    height: 1em;\n    flex-shrink: 0;\n  }\n\n  .mv-icon svg {\n    width: 100%;\n    height: 100%;\n  }\n\n  \/* \u2500\u2500\u2500 Bandeau \u2500\u2500\u2500 *\/\n  .mv-hero {\n    position: relative;\n    overflow: hidden;\n    margin: 16px 0 24px;\n    padding: 56px 48px;\n    border-radius: 24px;\n    background: var(--mv-cream);\n    background-size: cover;\n    background-position: center right;\n  }\n\n  .mv-hero::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(90deg, rgba(250, 247, 242, 0.97) 0%, rgba(250, 247, 242, 0.88) 38%, rgba(250, 247, 242, 0.2) 70%, rgba(250, 247, 242, 0) 100%);\n  }\n\n  .mv-hero-inner {\n    position: relative;\n    max-width: 560px;\n  }\n\n  .mv-hero-title {\n    margin: 0 0 12px !important;\n    font-size: clamp(30px, 4vw, 48px) !important;\n    line-height: 1.1 !important;\n    color: #1c2b22 !important;\n  }\n\n  .mv-hero-text {\n    margin: 0 0 20px !important;\n    font-size: 17px;\n    line-height: 1.55;\n    color: #3b4a40;\n  }\n\n  .mv-hero-chip {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    padding: 9px 16px;\n    border-radius: 999px;\n    background: #fff;\n    box-shadow: 0 2px 8px rgba(31, 42, 36, 0.1);\n    font-size: 14px;\n    color: #3b4a40;\n  }\n\n  .mv-hero-chip strong {\n    color: #1c2b22;\n  }\n\n  \/* \u2500\u2500\u2500 Recherche + distance \u2500\u2500\u2500 *\/\n  .mv-controls {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n    margin-bottom: 14px;\n  }\n\n  .mv-search {\n    position: relative;\n    flex: 1 1 360px;\n  }\n\n  .mv-search .mv-icon {\n    position: absolute;\n    left: 18px;\n    top: 50%;\n    transform: translateY(-50%);\n    font-size: 18px;\n    color: var(--mv-muted);\n  }\n\n  .mv-search input {\n    width: 100% !important;\n    height: 50px;\n    padding: 0 18px 0 48px !important;\n    border: 1px solid var(--mv-line) !important;\n    border-radius: 999px !important;\n    background: #fff !important;\n    font-size: 15px !important;\n    color: #1f2a24;\n    outline: none;\n    box-shadow: 0 1px 3px rgba(31, 42, 36, 0.05);\n  }\n\n  .mv-search input:focus {\n    border-color: var(--mv-accent) !important;\n    box-shadow: 0 0 0 3px var(--mv-accent-soft) !important;\n  }\n\n  .mv-seg {\n    display: inline-flex;\n    padding: 4px;\n    gap: 2px;\n    border: 1px solid var(--mv-line);\n    border-radius: 999px;\n    background: #fff;\n  }\n\n  .mv-seg button {\n    padding: 0 18px;\n    height: 40px;\n    border: 0;\n    border-radius: 999px;\n    background: transparent;\n    color: #3b4a40;\n    font-size: 14px;\n    font-weight: 600;\n    cursor: pointer;\n    white-space: nowrap;\n    transition: all 0.15s;\n  }\n\n  .mv-seg button:hover {\n    background: var(--mv-cream);\n  }\n\n  .mv-seg button.is-active {\n    background: var(--mv-accent);\n    color: #fff;\n  }\n\n  \/* \u2500\u2500\u2500 Cat\u00e9gories \u2500\u2500\u2500 *\/\n  \/* Cat\u00e9gories : une seule ligne qui d\u00e9file, fl\u00e8ches + fondu sur les bords *\/\n  .mv-cats-wrap {\n    position: relative;\n    margin-bottom: 18px;\n  }\n\n  .mv-cats {\n    display: flex;\n    flex-wrap: nowrap;\n    gap: 8px;\n    overflow-x: auto;\n    scroll-behavior: smooth;\n    scrollbar-width: none;\n    padding: 2px 0;\n  }\n\n  .mv-cats::-webkit-scrollbar {\n    display: none;\n  }\n\n  .mv-cat {\n    flex-shrink: 0;\n  }\n\n  .mv-cats-arrow {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    z-index: 1;\n    display: none;\n    align-items: center;\n    width: 64px;\n    padding: 0;\n    border: 0;\n    cursor: pointer;\n    font-size: 20px;\n    color: #1f2a24;\n  }\n\n  .mv-cats-arrow span {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: 36px;\n    height: 36px;\n    border: 1px solid var(--mv-line);\n    border-radius: 50%;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(31, 42, 36, 0.12);\n  }\n\n  .mv-cats-arrow--left {\n    left: 0;\n    justify-content: flex-start;\n    background: linear-gradient(90deg, #fff 45%, rgba(255, 255, 255, 0));\n  }\n\n  .mv-cats-arrow--right {\n    right: 0;\n    justify-content: flex-end;\n    background: linear-gradient(270deg, #fff 45%, rgba(255, 255, 255, 0));\n  }\n\n  .mv-cats-wrap.can-left .mv-cats-arrow--left,\n  .mv-cats-wrap.can-right .mv-cats-arrow--right {\n    display: flex;\n  }\n\n  .mv-cat {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 9px 16px;\n    border: 1px solid var(--mv-line);\n    border-radius: 999px;\n    background: #fff;\n    color: #2f3b33;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: all 0.15s;\n  }\n\n  .mv-cat .mv-icon {\n    font-size: 17px;\n    color: var(--mv-cat);\n  }\n\n  .mv-cat:hover {\n    border-color: #d6cdbd;\n  }\n\n  .mv-cat.is-active {\n    background: var(--mv-accent);\n    border-color: var(--mv-accent);\n    color: #fff;\n  }\n\n  .mv-cat.is-active .mv-icon {\n    color: #fff;\n  }\n\n  \/* \u2500\u2500\u2500 Barre compteur + liste\/carte \u2500\u2500\u2500 *\/\n  .mv-bar {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 12px;\n    margin-bottom: 16px;\n  }\n\n  .mv-count {\n    margin: 0 !important;\n    font-size: 15px;\n    color: var(--mv-muted);\n  }\n\n  .mv-count strong {\n    color: #1f2a24;\n  }\n\n  \/* \u2500\u2500\u2500 Layout liste + carte \u2500\u2500\u2500 *\/\n  .mv-layout {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) minmax(340px, 38%);\n    gap: 24px;\n    align-items: start;\n  }\n\n  .mv-layout.is-list {\n    grid-template-columns: minmax(0, 1fr);\n  }\n\n  .mv-layout.is-list .mv-map-panel {\n    display: none;\n  }\n\n  .mv-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n    \/* dense : la fiche \u00ab \u00c0 la une \u00bb (2 colonnes) ne laisse pas de trou sur grand \u00e9cran *\/\n    grid-auto-flow: dense;\n    gap: 18px;\n  }\n\n  \/* Colonne carte (sticky) : carte carr\u00e9e + fiche du rep\u00e8re cliqu\u00e9 en dessous *\/\n  .mv-map-panel {\n    position: sticky;\n    top: calc(var(--mv-header) + 16px);\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n  }\n\n  .mv-map {\n    width: 100%;\n    aspect-ratio: 1 \/ 1;\n    max-height: max(300px, calc(100vh - var(--mv-header) - 290px));\n    \/* Certains th\u00e8mes rouvrent le d\u00e9bordement des cartes Leaflet : les tuiles\n       d\u00e9passaient alors de la page (camping de la Croze). On rogne quoi qu'il arrive. *\/\n    overflow: hidden !important;\n    contain: paint;\n    border: 1px solid var(--mv-line);\n    border-radius: 20px;\n    background: var(--mv-cream);\n  }\n\n  .mv-preview-hint {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    padding: 16px 18px;\n    border: 1px dashed #d6cdbd;\n    border-radius: 16px;\n    color: var(--mv-muted);\n    font-size: 14px;\n  }\n\n  .mv-preview-hint .mv-icon {\n    font-size: 20px;\n    color: var(--mv-accent);\n  }\n\n  \/* Fiche compacte (horizontale) sous la carte \u2014 s\u00e9lecteurs doubl\u00e9s pour\n     passer devant les r\u00e8gles .mv-card d\u00e9finies plus bas *\/\n  .mv-card.mv-card--mini {\n    flex-direction: row;\n    min-height: 0;\n    border-radius: 16px;\n  }\n\n  .mv-card.mv-card--mini:hover {\n    transform: none;\n  }\n\n  .mv-card.mv-card--mini .mv-card-media {\n    flex: 0 0 120px;\n    width: 120px;\n    aspect-ratio: auto;\n    min-height: 120px;\n  }\n\n  .mv-card.mv-card--mini .mv-card-noimg {\n    font-size: 28px;\n  }\n\n  .mv-card.mv-card--mini .mv-card-body {\n    gap: 4px;\n    min-width: 0;\n    padding: 10px 14px;\n  }\n\n  .mv-card.mv-card--mini .mv-card-title {\n    font-size: 16px !important;\n    -webkit-line-clamp: 1;\n  }\n\n  .mv-card.mv-card--mini .mv-meta {\n    font-size: 12px;\n  }\n\n  .mv-card.mv-card--mini .mv-card-desc {\n    font-size: 13px;\n    -webkit-line-clamp: 2;\n  }\n\n  .mv-card.mv-card--mini .mv-card-foot {\n    padding-top: 2px;\n  }\n\n  .mv-card.mv-card--mini .mv-discover {\n    padding: 5px 12px;\n    font-size: 13px;\n  }\n\n  .mv-card.mv-card--mini .mv-pill {\n    position: static;\n    align-self: flex-start;\n    padding: 2px 10px;\n    font-size: 11px;\n    box-shadow: none;\n  }\n\n  \/* \u2500\u2500\u2500 Carte (fiche) \u2500\u2500\u2500 *\/\n  \/* La liste change brutalement de hauteur au clic sur une cat\u00e9gorie :\n     l'ancrage de d\u00e9filement du navigateur \u00ab corrigeait \u00bb alors la position et\n     contrariait le d\u00e9filement vers les filtres. *\/\n  #mv-app {\n    overflow-anchor: none;\n  }\n\n  .mv-card {\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    overflow: hidden;\n    border: 1px solid var(--mv-line);\n    border-radius: 18px;\n    background: #fff;\n    box-shadow: 0 1px 3px rgba(31, 42, 36, 0.05);\n    cursor: pointer;\n    transition: box-shadow 0.2s, transform 0.2s;\n  }\n\n  .mv-card:hover,\n  .mv-card.is-hover {\n    box-shadow: 0 12px 28px rgba(31, 42, 36, 0.12);\n    transform: translateY(-2px);\n  }\n\n  .mv-card-media {\n    position: relative;\n    \/* Hauteur fix\u00e9e par le format, jamais par la photo : sans flex-shrink ni\n       taille minimale de contenu, une photo en hauteur \u00e9tirait son cadre et\n       les cartes d'une m\u00eame rang\u00e9e n'avaient plus des images align\u00e9es. *\/\n    flex: 0 0 auto;\n    min-height: 0;\n    \/* Pas d'overflow: hidden ici : la pastille de cat\u00e9gorie est pos\u00e9e \u00e0 cheval\n       sur le bas de l'image. L'image, en absolu, ne d\u00e9borde pas de son cadre. *\/\n    aspect-ratio: 16 \/ 10;\n    background: var(--mv-cream);\n  }\n\n  .mv-card-media img {\n    position: absolute;\n    inset: 0;\n    display: block;\n    width: 100% !important;\n    max-width: none !important;\n    height: 100% !important;\n    object-fit: cover;\n  }\n\n  .mv-card-noimg {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    height: 100%;\n    font-size: 42px;\n    color: var(--mv-cat);\n    background: color-mix(in srgb, var(--mv-cat) 10%, var(--mv-cream));\n  }\n\n  .mv-pill {\n    display: inline-flex;\n    align-items: center;\n    padding: 4px 12px;\n    border-radius: 999px;\n    background: #fff;\n    background: color-mix(in srgb, var(--mv-cat) 14%, #fff);\n    color: var(--mv-cat);\n    font-size: 12px;\n    font-weight: 600;\n    white-space: nowrap;\n  }\n\n  .mv-card-media .mv-pill {\n    position: absolute;\n    left: 12px;\n    bottom: -12px;\n    background: color-mix(in srgb, var(--mv-cat) 12%, #fff);\n    box-shadow: 0 2px 6px rgba(31, 42, 36, 0.12);\n  }\n\n  .mv-card-body {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    gap: 7px;\n    padding: 22px 16px 16px;\n  }\n\n  .mv-card-title {\n    margin: 0 !important;\n    font-size: 18px !important;\n    line-height: 1.25 !important;\n    color: #1c2b22 !important;\n    display: -webkit-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n  }\n\n  .mv-meta {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    gap: 6px 12px;\n    margin: 0 !important;\n    font-size: 13px;\n    color: var(--mv-muted);\n  }\n\n  .mv-meta span {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n  }\n\n  .mv-card-desc {\n    margin: 0 !important;\n    font-size: 14px;\n    line-height: 1.5;\n    color: #4b5850;\n    display: -webkit-box;\n    -webkit-line-clamp: 3;\n    -webkit-box-orient: vertical;\n    overflow: hidden;\n  }\n\n  .mv-tags {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 6px;\n  }\n\n  .mv-tag {\n    padding: 3px 10px;\n    border-radius: 999px;\n    background: #f3efe8;\n    color: #4b5850;\n    font-size: 12px;\n    max-width: 100%;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .mv-card-foot {\n    display: flex;\n    justify-content: flex-end;\n    margin-top: auto;\n    padding-top: 6px;\n  }\n\n  .mv-discover {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 8px 16px;\n    border: 0;\n    border-radius: 999px;\n    background: #f7ebe0;\n    color: #1c2b22;\n    font-size: 14px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: background 0.15s;\n  }\n\n  .mv-card:hover .mv-discover {\n    background: #f1dcc9;\n  }\n\n  \/* Carte \u00ab \u00e0 la une \u00bb : grande, texte sur l'image *\/\n  .mv-card--featured {\n    grid-column: span 2;\n    min-height: 360px;\n  }\n\n  .mv-card--featured .mv-card-media {\n    position: absolute;\n    inset: 0;\n    aspect-ratio: auto;\n  }\n\n  .mv-card--featured .mv-card-media::after {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(90deg, rgba(20, 24, 20, 0.72) 0%, rgba(20, 24, 20, 0.35) 55%, rgba(20, 24, 20, 0.05) 100%);\n  }\n\n  .mv-card--featured .mv-card-body {\n    position: relative;\n    justify-content: flex-end;\n    max-width: 480px;\n    padding: 28px;\n    color: #fff;\n  }\n\n  .mv-card--featured .mv-card-title {\n    font-size: 30px !important;\n    color: #fff !important;\n  }\n\n  .mv-card--featured .mv-card-desc,\n  .mv-card--featured .mv-meta {\n    color: rgba(255, 255, 255, 0.9);\n  }\n\n  .mv-card--featured .mv-card-foot {\n    justify-content: flex-start;\n    margin-top: 8px;\n  }\n\n  .mv-card--featured .mv-discover {\n    background: #fff;\n  }\n\n  .mv-flag {\n    align-self: flex-start;\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 6px;\n    padding: 6px 12px;\n    border-radius: 999px;\n    background: #c2410c;\n    color: #fff;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 0.4px;\n    text-transform: uppercase;\n  }\n\n  \/* Pagination *\/\n  .mv-more {\n    display: flex;\n    flex-wrap: wrap;\n    justify-content: center;\n    align-items: center;\n    gap: 6px;\n    margin-top: 28px;\n  }\n\n  .mv-page {\n    min-width: 42px;\n    height: 42px;\n    padding: 0 12px;\n    border: 1px solid var(--mv-line);\n    border-radius: 999px;\n    background: #fff;\n    color: #2f3b33;\n    font-size: 14px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.15s;\n  }\n\n  .mv-page:hover:not(:disabled):not([aria-current=\"page\"]) {\n    border-color: var(--mv-accent);\n    color: var(--mv-accent);\n  }\n\n  .mv-page[aria-current=\"page\"] {\n    background: var(--mv-accent);\n    border-color: var(--mv-accent);\n    color: #fff;\n    cursor: default;\n  }\n\n  .mv-page:disabled {\n    opacity: 0.4;\n    cursor: not-allowed;\n  }\n\n  .mv-page-gap {\n    padding: 0 4px;\n    color: var(--mv-muted);\n  }\n\n  \/* Bouton \u00ab Revenir \u00e0 la vue d'ensemble \u00bb (visible apr\u00e8s un zoom \/ d\u00e9placement) *\/\n  .mv-map {\n    position: relative;\n  }\n\n  \/* Pas de gros contour noir au clic sur la carte ; contour visible au clavier seulement *\/\n  .mv-map.leaflet-container:focus {\n    outline: none;\n  }\n\n  .mv-map.leaflet-container:focus-visible {\n    outline: 3px solid var(--mv-accent);\n    outline-offset: 2px;\n  }\n\n  .mv-reset {\n    position: absolute;\n    top: 12px;\n    left: 12px;\n    z-index: 500;\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 8px 14px;\n    border: 0;\n    border-radius: 999px;\n    background: #fff;\n    color: #1c2b22;\n    font-family: 'Inter', -apple-system, sans-serif;\n    font-size: 13px;\n    font-weight: 600;\n    box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);\n    cursor: pointer;\n  }\n\n  .mv-reset[hidden] {\n    display: none;\n  }\n\n  .mv-reset:hover {\n    background: var(--mv-accent);\n    color: #fff;\n  }\n\n  .mv-reset .mv-icon {\n    font-size: 15px;\n  }\n\n  \/* Rep\u00e8re de l'\u00e9tablissement (\u00ab vous \u00eates ici \u00bb) *\/\n  .mv-home {\n    background: none;\n    border: none;\n    pointer-events: none;\n  }\n\n  .mv-home-pin {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 44px;\n    height: 44px;\n    border: 3px solid #fff;\n    border-radius: 50%;\n    background: #1c2b22;\n    color: #fff;\n    box-shadow: 0 0 0 5px rgba(28, 43, 34, 0.25), 0 4px 12px rgba(0, 0, 0, 0.35);\n  }\n\n  .mv-home-pin svg {\n    width: 22px;\n    height: 22px;\n  }\n\n  .mv-home-label.leaflet-tooltip {\n    padding: 5px 10px;\n    border: 0;\n    border-radius: 999px;\n    background: #1c2b22;\n    color: #fff;\n    font-family: 'Inter', -apple-system, sans-serif;\n    font-size: 12px;\n    font-weight: 700;\n    box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);\n  }\n\n  .mv-home-label.leaflet-tooltip-right::before {\n    border-right-color: #1c2b22;\n  }\n\n  .mv-btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    padding: 12px 26px;\n    border: 0;\n    border-radius: 999px;\n    background: var(--mv-accent);\n    color: #fff !important;\n    font-size: 15px;\n    font-weight: 600;\n    text-decoration: none !important;\n    cursor: pointer;\n    transition: filter 0.15s;\n  }\n\n  .mv-btn:hover {\n    filter: brightness(0.92);\n  }\n\n  .mv-empty {\n    grid-column: 1 \/ -1;\n    padding: 40px 20px;\n    border: 1px dashed #d6cdbd;\n    border-radius: 18px;\n    background: #fff;\n    color: var(--mv-muted);\n    text-align: center;\n  }\n\n  .mv-empty strong {\n    display: block;\n    margin-bottom: 4px;\n    color: #1f2a24;\n  }\n\n  \/* \u2500\u2500\u2500 Id\u00e9es selon vos envies \u2500\u2500\u2500 *\/\n  .mv-ideas {\n    margin-top: 48px;\n  }\n\n  .mv-ideas-head {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: baseline;\n    justify-content: space-between;\n    gap: 8px 24px;\n    margin-bottom: 16px;\n  }\n\n  .mv-ideas-title {\n    margin: 0 !important;\n    font-size: clamp(22px, 2.6vw, 30px) !important;\n    color: #1c2b22 !important;\n  }\n\n  .mv-ideas-sub {\n    margin: 0 !important;\n    color: var(--mv-muted);\n    font-size: 14px;\n  }\n\n  .mv-ideas-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));\n    gap: 16px;\n  }\n\n  .mv-idea {\n    display: flex;\n    align-items: stretch;\n    overflow: hidden;\n    min-height: 88px;\n    padding: 0;\n    border: 1px solid var(--mv-line);\n    border-radius: 16px;\n    background: #fff;\n    text-align: left;\n    cursor: pointer;\n    transition: box-shadow 0.2s;\n  }\n\n  .mv-idea:hover {\n    box-shadow: 0 8px 20px rgba(31, 42, 36, 0.1);\n  }\n\n  .mv-idea-img {\n    flex: 0 0 38%;\n    background: var(--mv-cream) center \/ cover no-repeat;\n  }\n\n  .mv-idea-body {\n    display: flex;\n    flex: 1;\n    align-items: center;\n    gap: 10px;\n    padding: 12px 14px;\n  }\n\n  .mv-idea-body .mv-icon {\n    font-size: 22px;\n    color: var(--mv-cat);\n  }\n\n  .mv-idea-text {\n    flex: 1;\n    min-width: 0;\n  }\n\n  .mv-idea-text strong {\n    display: block;\n    font-size: 14px;\n    color: #1c2b22;\n    line-height: 1.3;\n  }\n\n  .mv-idea-text span {\n    font-size: 13px;\n    color: var(--mv-muted);\n  }\n\n  \/* \u2500\u2500\u2500 Marqueurs carte \u2500\u2500\u2500 *\/\n  .mv-pin svg {\n    display: block;\n    overflow: visible;\n    transform-origin: 50% 100%;\n    transition: transform 0.15s ease;\n    filter: drop-shadow(0 2px 3px rgba(20, 24, 20, 0.35));\n  }\n\n  .mv-pin.is-hover svg {\n    transform: scale(1.3);\n  }\n\n  .mv-pin.is-selected svg {\n    transform: scale(1.4);\n    filter: drop-shadow(0 0 0 #fff) drop-shadow(0 3px 6px rgba(20, 24, 20, 0.45));\n  }\n\n  .mv-pin.is-selected {\n    z-index: 1001 !important;\n  }\n\n  \/* Pas de carr\u00e9 de focus Leaflet autour du rep\u00e8re cliqu\u00e9 *\/\n  .mv-pin:focus,\n  .mv-pin:focus-visible {\n    outline: none;\n  }\n\n  .mv-pin.is-hover {\n    z-index: 1000 !important;\n  }\n\n  .mv-cluster {\n    background: none;\n    border: none;\n  }\n\n  .mv-cluster span {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border: 3px solid #fff;\n    border-radius: 50%;\n    background: var(--mv-accent, #2e5e45);\n    color: #fff;\n    font-size: 13px;\n    font-weight: 700;\n    box-shadow: 0 3px 8px rgba(20, 24, 20, 0.3);\n  }\n\n\n  \/* \u2500\u2500\u2500 Modal \u2500\u2500\u2500 *\/\n  .mv-modal-overlay {\n    position: fixed !important;\n    inset: 0 !important;\n    z-index: 99999 !important;\n    max-width: none !important;\n    width: auto !important;\n    margin: 0 !important;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 20px;\n    background: rgba(20, 24, 20, 0.4);\n    backdrop-filter: blur(2px);\n  }\n\n  .mv-modal-overlay[hidden] {\n    display: none !important;\n  }\n\n  .mv-modal {\n    position: relative;\n    width: 100%;\n    max-width: 1080px;\n    max-height: calc(100vh - 32px);\n    overflow-y: auto;\n    border-radius: 22px;\n    background: #fff;\n    box-shadow: 0 24px 60px rgba(20, 24, 20, 0.3);\n    font-family: 'Inter', -apple-system, sans-serif;\n    color: #1f2a24;\n  }\n\n  \/* Cr\u00e9dit photo : discret sur la carte (\u00a9, auteur au survol), lisible en fiche. *\/\n  .mv-credit {\n    position: absolute;\n    top: 8px;\n    right: 8px;\n    z-index: 2;\n    max-width: calc(100% - 16px);\n    padding: 2px 7px;\n    border-radius: 999px;\n    background: rgba(0, 0, 0, 0.45);\n    color: #fff;\n    font-size: 11px;\n    line-height: 1.5;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    cursor: help;\n  }\n\n  .mv-card:hover .mv-credit::after,\n  .mv-credit:focus::after {\n    content: ' ' attr(data-credit);\n  }\n\n  \/* Bandeau : le cr\u00e9dit est \u00e9crit en clair (pas de survol sur une image de fond),\n     en bas \u00e0 droite, loin du titre. *\/\n  .mv-credit--hero {\n    top: auto;\n    bottom: 10px;\n    right: 12px;\n    max-width: 60%;\n    cursor: default;\n  }\n\n  .mv-modal-credit {\n    margin: 6px 2px 0 !important;\n    color: var(--mv-muted, #6b7280);\n    font-size: 12px !important;\n    line-height: 1.4 !important;\n  }\n\n  .mv-modal-img {\n    display: block;\n    width: 100%;\n    aspect-ratio: 4 \/ 3;\n    max-height: 52vh;\n    object-fit: cover;\n    border-radius: 14px;\n  }\n\n  \/* Modal large : contenu sur 2 colonnes (texte \/ m\u00e9dias) pour \u00e9viter de d\u00e9filer *\/\n  .mv-modal-cols {\n    display: grid;\n    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);\n    gap: 28px;\n    align-items: start;\n  }\n\n  \/* Colonne m\u00e9dias : reste visible pendant qu'on lit le texte *\/\n  .mv-modal-col--media {\n    position: sticky;\n    top: 0;\n  }\n\n  .mv-modal-body {\n    padding-top: 26px !important;\n  }\n\n  \/* Place pour le bouton de fermeture en haut \u00e0 droite *\/\n  .mv-modal-cols > .mv-modal-col:last-child {\n    padding-right: 36px;\n  }\n\n  .mv-modal-col {\n    display: flex;\n    flex-direction: column;\n    gap: 14px;\n    min-width: 0;\n  }\n\n  .mv-modal-actions {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n  }\n\n  .mv-btn--ghost {\n    background: #fff;\n    border: 1px solid var(--mv-line);\n    color: #1c2b22 !important;\n  }\n\n  .mv-btn--ghost:hover {\n    filter: none;\n    border-color: var(--mv-accent);\n  }\n\n  @media (max-width: 900px) {\n    .mv-modal-cols {\n      grid-template-columns: minmax(0, 1fr);\n      gap: 14px;\n    }\n\n    \/* Mobile : photo, puis texte, puis boutons \/ m\u00e9dias *\/\n    .mv-modal-cols {\n      display: flex;\n      flex-direction: column;\n    }\n\n    .mv-modal-col--media {\n      display: contents;\n    }\n\n    .mv-modal-col--media > .mv-modal-img {\n      order: -2;\n    }\n\n    .mv-modal-cols > .mv-modal-col:last-child {\n      order: -1;\n    }\n\n    .mv-modal-cols > .mv-modal-col:last-child {\n      padding-right: 0;\n    }\n  }\n\n  .mv-modal-body {\n    display: flex;\n    flex-direction: column;\n    gap: 14px;\n    padding: 22px 26px 26px;\n  }\n\n  .mv-modal-title {\n    margin: 0 !important;\n    font-size: 26px !important;\n    line-height: 1.2 !important;\n    color: #1c2b22 !important;\n  }\n\n  .mv-modal-desc {\n    margin: 0 !important;\n    font-size: 15px;\n    line-height: 1.65;\n    color: #4b5850;\n    white-space: pre-line;\n  }\n\n  .mv-modal-event {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    align-self: flex-start;\n    padding: 7px 12px;\n    border-radius: 10px;\n    background: var(--mv-accent-soft);\n    color: var(--mv-accent);\n    font-size: 14px;\n    font-weight: 600;\n  }\n\n  .mv-fields {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n    gap: 10px 20px;\n    padding: 14px 16px;\n    border-radius: 14px;\n    background: var(--mv-cream);\n  }\n\n  .mv-field span {\n    display: block;\n    margin-bottom: 2px;\n    font-size: 12px;\n    line-height: 1.35 !important;\n    color: var(--mv-muted);\n  }\n\n  .mv-field strong {\n    display: block;\n    font-size: 14px;\n    font-weight: 600;\n    line-height: 1.4 !important;\n    color: #1f2a24;\n    overflow-wrap: anywhere;\n  }\n\n  \/* \u2500\u2500\u2500 Agrandissement automatique par paliers (fiches tr\u00e8s remplies) \u2500\u2500\u2500\n     1. is-wide    : fen\u00eatre plus large, infos sur 3 colonnes, photo plus basse\n     2. is-compact : espacements et textes resserr\u00e9s *\/\n  .mv-modal.is-wide {\n    max-width: min(1320px, calc(100vw - 32px));\n  }\n\n  .mv-modal.is-wide .mv-fields {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n  }\n\n  .mv-modal.is-wide .mv-modal-img {\n    aspect-ratio: 16 \/ 10;\n    max-height: 36vh;\n  }\n\n  .mv-modal.is-compact .mv-modal-body {\n    gap: 10px;\n    padding: 18px 20px 20px !important;\n  }\n\n  .mv-modal.is-compact .mv-modal-col {\n    gap: 10px;\n  }\n\n  .mv-modal.is-compact .mv-modal-title {\n    font-size: 22px !important;\n  }\n\n  .mv-modal.is-compact .mv-modal-desc {\n    font-size: 14px;\n    line-height: 1.55;\n  }\n\n  .mv-modal.is-compact .mv-fields {\n    gap: 8px 16px;\n    padding: 12px 14px;\n  }\n\n  .mv-modal.is-compact .mv-field strong {\n    font-size: 13px;\n  }\n\n  .mv-modal.is-compact .mv-modal-img {\n    max-height: 30vh;\n  }\n\n  @media (max-width: 900px) {\n    .mv-modal.is-wide .mv-fields {\n      grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n    }\n  }\n\n  .mv-modal-sub {\n    margin: 4px 0 0 !important;\n    font-size: 13px;\n    font-weight: 700;\n    letter-spacing: 0.4px;\n    text-transform: uppercase;\n    color: var(--mv-muted);\n  }\n\n  .mv-gallery {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));\n    gap: 8px;\n  }\n\n  .mv-gallery img {\n    display: block;\n    width: 100%;\n    aspect-ratio: 1;\n    object-fit: cover;\n    border-radius: 10px;\n  }\n\n  .mv-docs a {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    padding: 8px 0;\n    color: var(--mv-accent);\n    font-weight: 600;\n    text-decoration: none;\n  }\n\n  .mv-video {\n    position: relative;\n    aspect-ratio: 16 \/ 9;\n    border-radius: 12px;\n    overflow: hidden;\n    background: #000;\n  }\n\n  .mv-video iframe,\n  .mv-video video {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n  }\n\n  .mv-faq details {\n    border-bottom: 1px solid var(--mv-line);\n    padding: 10px 0;\n  }\n\n  .mv-faq summary {\n    cursor: pointer;\n    font-size: 15px !important;\n    font-weight: 600;\n    line-height: 1.4 !important;\n    color: #1c2b22;\n  }\n\n  .mv-faq p {\n    margin: 8px 0 0 !important;\n    color: #4b5850;\n    line-height: 1.55;\n  }\n\n  .mv-modal-close {\n    position: absolute;\n    top: 12px;\n    right: 12px;\n    z-index: 2;\n    width: 40px;\n    height: 40px;\n    border: 0;\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.95);\n    color: #1f2a24;\n    font-size: 22px;\n    line-height: 1;\n    cursor: pointer;\n    box-shadow: 0 2px 6px rgba(20, 24, 20, 0.2);\n  }\n\n  \/* \u2500\u2500\u2500 Responsive \u2500\u2500\u2500 *\/\n  @media (max-width: 1100px) {\n    .mv-layout {\n      grid-template-columns: minmax(0, 1fr);\n    }\n\n    .mv-map-panel {\n      position: relative;\n      top: 0;\n      order: -1;\n    }\n\n    .mv-map {\n      aspect-ratio: 4 \/ 3;\n      max-height: 420px;\n    }\n  }\n\n  @media (max-width: 720px) {\n    .mv-wrap {\n      padding: 0 12px 40px;\n    }\n\n    .mv-hero {\n      padding: 36px 22px;\n      border-radius: 18px;\n    }\n\n    .mv-hero::before {\n      background: linear-gradient(180deg, rgba(250, 247, 242, 0.95), rgba(250, 247, 242, 0.8));\n    }\n\n    .mv-seg {\n      width: 100%;\n    }\n\n    .mv-seg button {\n      flex: 1;\n      padding: 0 8px;\n    }\n\n\n\n    .mv-card--featured {\n      grid-column: auto;\n      min-height: 320px;\n    }\n\n    .mv-card--featured .mv-card-title {\n      font-size: 24px !important;\n    }\n\n    .mv-modal-img {\n      height: 200px;\n    }\n  }\n<\/style>\n\n\n<div class=\"mv-wrap\" id=\"mv-app\">\n\n  <section class=\"mv-hero\" style=\"background-image:url(https:\/\/www.guide-bordeaux-gironde.com\/_bibli\/articlesPage_rte\/195\/rte_images\/soulac-sur-mer-front-de-mer.jpg)\">\n        <div class=\"mv-hero-inner\">\n      <h1 class=\"mv-hero-title\">Things to discover nearby<\/h1>\n      <p class=\"mv-hero-text\">Villages, beaches, walks, good addresses and experiences selected around your stay.<\/p>\n              <span class=\"mv-hero-chip\">\n          <span class=\"mv-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 21s-7-6.2-7-11.5a7 7 0 0 1 14 0C19 14.8 12 21 12 21z\"\/><circle cx=\"12\" cy=\"9.5\" r=\"2.5\"\/><\/svg><\/span>\n          Around <strong>Camping des Pins<\/strong>\n        <\/span>\n          <\/div>\n  <\/section>\n\n  <div class=\"mv-controls\">\n    <label class=\"mv-search\">\n      <span class=\"mv-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M21 21l-4.5-4.5\"\/><\/svg><\/span>\n      <input type=\"search\" id=\"mv-search\" placeholder=\"Search for a place, an activity, a village\u2026\" aria-label=\"Search\">\n    <\/label>\n          <div class=\"mv-seg\" role=\"group\" aria-label=\"Maximum distance\" id=\"mv-distance\">\n        <button type=\"button\" data-km=\"15\">15 km<\/button>\n        <button type=\"button\" data-km=\"30\">30 km<\/button>\n        <button type=\"button\" data-km=\"60\">60 km<\/button>\n        <button type=\"button\" data-km=\"0\" class=\"is-active\">All<\/button>\n      <\/div>\n      <\/div>\n\n  <div class=\"mv-cats-wrap\" id=\"mv-cats-wrap\">\n    <button type=\"button\" class=\"mv-cats-arrow mv-cats-arrow--left\" aria-label=\"Previous categories\"><span>\u2039<\/span><\/button>\n    <div class=\"mv-cats\" id=\"mv-cats\" role=\"group\" aria-label=\"Categories\"><\/div>\n    <button type=\"button\" class=\"mv-cats-arrow mv-cats-arrow--right\" aria-label=\"Next categories\"><span>\u203a<\/span><\/button>\n  <\/div>\n\n  <div class=\"mv-bar\">\n    <p class=\"mv-count\" id=\"mv-count\"><\/p>\n    <div class=\"mv-seg\" role=\"group\" aria-label=\"Display\" id=\"mv-view\">\n      <button type=\"button\" data-view=\"list\">List<\/button>\n      <button type=\"button\" data-view=\"map\" class=\"is-active\">Map<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"mv-layout\" id=\"mv-layout\">\n    <div>\n      <div class=\"mv-grid\" id=\"mv-grid\"><\/div>\n      <div class=\"mv-more\" id=\"mv-more\"><\/div>\n    <\/div>\n    <aside class=\"mv-map-panel\">\n      <div class=\"mv-map\" id=\"mv-map\"><\/div>\n      <div id=\"mv-preview\" aria-live=\"polite\"><\/div>\n    <\/aside>\n  <\/div>\n\n  <section class=\"mv-ideas\" id=\"mv-ideas\" aria-labelledby=\"mv-ideas-title\"><\/section>\n\n  <noscript>\n    <ul>\n              <li><strong>Soulac-sur-Mer<\/strong> \u2014 Station baln\u00e9aire familiale avec une belle plage et des activit\u00e9s vari\u00e9es<\/li>\n              <li><strong>Montalivet-les-Bains<\/strong> \u2014 Ambiance d\u00e9contract\u00e9e avec un march\u00e9 r\u00e9put\u00e9 et de belles plages<\/li>\n              <li><strong>Le Verdon-sur-Mer<\/strong> \u2014 Petit port charmant avec des plages vari\u00e9es et un acc\u00e8s facile \u00e0 Royan<\/li>\n              <li><strong>La Palmyre<\/strong> \u2014 Station baln\u00e9aire r\u00e9put\u00e9e pour son zoo et ses plages sauvages<\/li>\n              <li><strong>Royan<\/strong> \u2014 Lively seaside resort with many beaches and activities<\/li>\n              <li><strong>Le Verdon-sur-Mer Local Market<\/strong> \u2014 Small local market with fresh seafood and regional specialties. Charming small port with a pleasant setting for strolling.<\/li>\n              <li><strong>Montalivet-les-Bains Outdoor Market<\/strong> \u2014 Renowned outdoor market for its handcrafted products, clothing, and local culinary specialties. Perfect for a relaxing stroll and local shopping.<\/li>\n              <li><strong>Golf at Balata Golf Practice<\/strong> \u2014 Come discover golf or improve your skills in a natural and preserved setting. The Balata Golf Practice association offers lessons, outings, and competitions for all levels.<\/li>\n              <li><strong>Montalivet Paintball<\/strong> \u2014 Come alone or with a team to Montalivet Paintball. Various scenarios are imagined for your enjoyment and that of children. Camping clients benefit from a preferential rate.<\/li>\n              <li><strong>Parachuting over Soulac-sur-Mer<\/strong> \u2014 Adrenaline lovers will discover our breathtaking landscape from above while flying over Soulac-sur-Mer. Landing at Arros beach, a small piece of paradise.<\/li>\n              <li><strong>Horseback Riding at Silver Stud Farm<\/strong> \u2014 Just a stone&#039;s throw from the campsite, the Silver Stud Farm riding center offers initiation sessions, forest walks, or beach rides.<\/li>\n              <li><strong>Hiking in the Landes Forest<\/strong> \u2014 Use mobile apps like Komoot or Wikiloc to discover new trails, find exceptional viewpoints, and observe rich fauna and flora.<\/li>\n              <li><strong>Royan Architecture Photo Contest Exhibition<\/strong> \u2014 Exhibition showcasing works from the photo contest on the theme of &quot;color&quot;.<\/li>\n              <li><strong>Jazz at the Palace - Baptiste Herbin Trio &quot;Django&quot;<\/strong> \u2014 Jazz concert with Baptiste Herbin Trio performing &quot;Django&quot;.<\/li>\n              <li><strong>Giant Cluedo<\/strong> \u2014 A life-sized investigation at the CIAP of Royan to solve a mysterious theft.<\/li>\n              <li><strong>Classic Weekend - Arthur Hinnewinkel<\/strong> \u2014 Classical concert with pianist Arthur Hinnewinkel.<\/li>\n              <li><strong>Themed Evenings and Concerts<\/strong> \u2014 Family and festive evenings including concerts, themed nights, blind tests, family activities like Piki Disco and cocktail games.<\/li>\n              <li><strong>Various Sports Activities<\/strong> \u2014 Various sports activities offered by the entertainment team, including fitness, cross-training, p\u00e9tanque, beach volleyball.<\/li>\n              <li><strong>Treasure Hunt<\/strong> \u2014 An adventure organized by the animation team, perfect for children and families, offering a fun and playful scavenger hunt.<\/li>\n              <li><strong>Sports Tournaments and Challenges<\/strong> \u2014 Organization of sports tournaments and fun challenges such as inter-camp tournaments and water games inspired by Koh-Lanta.<\/li>\n              <li><strong>Yoga and Aquagym Classes<\/strong> \u2014 Yoga and aquagym classes offered by the animation team, with massage available upon request. These activities promote relaxation and well-being.<\/li>\n              <li><strong>Children&#039;s Club<\/strong> \u2014 The children&#039;s club offers creative activities such as painting and drawing, outdoor games, treasure hunts, snacks, and carnivals. Managed by qualified animators, it operates 7 days a week during the&hellip;<\/li>\n              <li><strong>Night Walk<\/strong> \u2014 Guided night walk organized, allowing you to discover the surroundings under a different atmosphere.<\/li>\n              <li><strong>Boom Party and Mini Disco<\/strong> \u2014 Activities for children including boom party, mini disco, and small parties with music and dance suitable for ages.<\/li>\n              <li><strong>Aquatournoi and Blowgun<\/strong> \u2014 Water tournament and blowgun shooting sessions offered for children and adults, combining sport and relaxation.<\/li>\n              <li><strong>Restaurant<\/strong> \u2014 On-site restaurant offering meals and drinks in a friendly setting, integrated into the Nicoll\u2019s Camp camping experience.<\/li>\n              <li><strong>Camping pitches<\/strong> \u2014 Approximately 70 shaded pitches, marked out by hedges, with an average area of 80 m\u00b2. The pitches are in premium, high comfort, and nature ranges, accommodating up to 6 people.<\/li>\n              <li><strong>Accueil \/ Reception<\/strong> \u2014 Main reception point for reservations, information, and camper assistance.<\/li>\n              <li><strong>Heated swimming pool<\/strong> \u2014 Heated pool available for campers, offering a space for relaxation and aquatic leisure.<\/li>\n              <li><strong>Playground<\/strong> \u2014 Play area equipped for children, with ping-pong, mini-football, and p\u00e9tanque.<\/li>\n              <li><strong>Outdoor parking<\/strong> \u2014 Outdoor parking for residents and visitors&#039; vehicles, the campsite being pedestrian-only internally.<\/li>\n              <li><strong>Gourmet Grocery<\/strong> \u2014 Small gourmet grocery offering essential and local products for campers.<\/li>\n              <li><strong>Bike Rental<\/strong> \u2014 Bike rental to promote sustainable mobility and enjoy the nearby bike paths.<\/li>\n              <li><strong>Linen and towel rental<\/strong> \u2014 Rental service for bed sheets and towels for more comfort during your stay.<\/li>\n              <li><strong>Restaurant \/ Snack \/ Bar<\/strong> \u2014 The campsite offers a restaurant, snack bar, and lounge. The restaurant serves homemade cuisine, emphasizing local and seasonal products. The snack bar offers takeaway pizzas and fries. The bar offers&hellip;<\/li>\n              <li><strong>Laundry<\/strong> \u2014 The campsite provides a laundry equipped with a washing machine and a dryer for the comfort of campers.<\/li>\n              <li><strong>Baby Kit Rental<\/strong> \u2014 Rental of available baby chairs or cribs, with weekly or nightly rates.<\/li>\n              <li><strong>Bread and pastry deposit<\/strong> \u2014 Enjoy a bread and pastry deposit service every morning to start the day with fresh products. Prices are to be checked directly at the reception of the campsite. Reservation mandatory&hellip;<\/li>\n              <li><strong>Na\u00efades Beach<\/strong> \u2014 Natural sandy beach popular for swimming, relaxing, and water activities such as surfing and bodyboarding.<\/li>\n              <li><strong>Am\u00e9lie Beach<\/strong> \u2014 Public sandy beach located about 1.8 km from the campsite, ideal for swimming and water activities.<\/li>\n              <li><strong>Olives Beach<\/strong> \u2014 Popular natural beach, part of a recreational area with entertainment and water sports such as surfing and bodyboarding.<\/li>\n              <li><strong>Cordouan Lighthouse<\/strong> \u2014 Visit the famous lighthouse located at the entrance of the Gironde estuary, accessible by boat from Soulac-sur-Mer.<\/li>\n              <li><strong>Local Market of Soulac-sur-Mer<\/strong> \u2014 Market where you can find oysters from M\u00e9doc, shrimps, fresh local products, open every morning.<\/li>\n              <li><strong>Bike rides on the V\u00e9lodyss\u00e9e<\/strong> \u2014 The campsite is connected to the V\u00e9lodyss\u00e9e cycling network, ideal for bike rides and exploring the coast around Soulac-sur-Mer.<\/li>\n              <li><strong>Citadelle de Blaye<\/strong> \u2014 An imposing fortress listed as a UNESCO World Heritage site, offering guided tours and panoramic views of the estuary.<\/li>\n              <li><strong>Parc accrobranche et base de loisirs<\/strong> \u2014 Adventure park with treetop course for children and adults, located in the nearby region.<\/li>\n              <li><strong>Water sports center<\/strong> \u2014 Various water activities on the coast, including surfing, windsurfing, kitesurfing, and stand-up paddleboarding.<\/li>\n              <li><strong>Oceanic beaches of Soulac-sur-Mer<\/strong> \u2014 Natural beaches suitable for swimming, surfing, and other water sports such as windsurfing or kitesurfing.<\/li>\n              <li><strong>Hiking and MTB Trails<\/strong> \u2014 Coastal and forest trails suitable for all families and hikers around Soulac and M\u00e9doc.<\/li>\n              <li><strong>Contact Camping des Pins<\/strong><\/li>\n          <\/ul>\n  <\/noscript>\n<\/div>\n\n<div class=\"mv-modal-overlay\" id=\"mv-modal\" hidden>\n  <div class=\"mv-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"mv-modal-title\">\n    <button type=\"button\" class=\"mv-modal-close\" id=\"mv-modal-close\" aria-label=\"Close\">\u00d7<\/button>\n    <div id=\"mv-modal-content\"><\/div>\n  <\/div>\n<\/div>\n\n<script>\n  (function() {\n    var ITEMS = [{\"id\":0,\"featurable\":true,\"type\":\"villes-aux-alentours\",\"name\":\"Soulac-sur-Mer\",\"image\":\"https:\\\/\\\/www.guide-bordeaux-gironde.com\\\/_bibli\\\/articlesPage_rte\\\/195\\\/rte_images\\\/soulac-sur-mer-front-de-mer.jpg\",\"credit\":\"\",\"description\":\"Station baln\\u00e9aire familiale avec une belle plage et des activit\\u00e9s vari\\u00e9es\",\"city\":\"\",\"address\":\"Soulac-sur-Mer, 33780 Soulac-sur-Mer, France\",\"km\":0,\"min\":0,\"lat\":45.51241,\"lng\":-1.1257553,\"tags\":[],\"fields\":[{\"label\":\"Distance from camping (km)\",\"value\":\"0\"},{\"label\":\"Driving time (min)\",\"value\":\"0\"},{\"label\":\"Must-see places \\\/ activities\",\"value\":\"Plage centrale, Basilique Notre-Dame, Villas typiques, Mus\\u00e9e d\\u2019Art et d\\u2019Arch\\u00e9ologie\"},{\"label\":\"Markets \\\/ local events\",\"value\":\"March\\u00e9s diurnes et nocturnes\"},{\"label\":\"Restaurants \\\/ local specialties\",\"value\":\"Sp\\u00e9cialit\\u00e9s de fruits de mer\"},{\"label\":\"Full address\",\"value\":\"Soulac-sur-Mer, 33780 Soulac-sur-Mer, France\"}],\"link\":\"https:\\\/\\\/www.soulac-sur-mer.fr\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":1,\"featurable\":true,\"type\":\"villes-aux-alentours\",\"name\":\"Montalivet-les-Bains\",\"image\":\"https:\\\/\\\/www.vendaysmontalivet.com\\\/assets\\\/images\\\/index-meta.jpg\",\"credit\":\"\",\"description\":\"Ambiance d\\u00e9contract\\u00e9e avec un march\\u00e9 r\\u00e9put\\u00e9 et de belles plages\",\"city\":\"\",\"address\":\"Montalivet-les-Bains, 33930 Vendays-Montalivet, France\",\"km\":16.2,\"min\":19,\"lat\":45.3797156,\"lng\":-1.1504745,\"tags\":[],\"fields\":[{\"label\":\"Distance from camping (km)\",\"value\":\"16.2\"},{\"label\":\"Driving time (min)\",\"value\":\"19\"},{\"label\":\"Must-see places \\\/ activities\",\"value\":\"Plages immacul\\u00e9es, March\\u00e9 en plein air\"},{\"label\":\"Markets \\\/ local events\",\"value\":\"March\\u00e9 en plein air\"},{\"label\":\"Restaurants \\\/ local specialties\",\"value\":\"Produits artisanaux, V\\u00eatements, D\\u00e9lices culinaires locaux\"},{\"label\":\"Full address\",\"value\":\"Montalivet-les-Bains, 33930 Vendays-Montalivet, France\"}],\"link\":\"https:\\\/\\\/www.montalivet-les-bains.com\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":2,\"featurable\":true,\"type\":\"villes-aux-alentours\",\"name\":\"Le Verdon-sur-Mer\",\"image\":\"https:\\\/\\\/www.campingduvieuxmoulin.fr\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/verdon-sur-mer.png\",\"credit\":\"\",\"description\":\"Petit port charmant avec des plages vari\\u00e9es et un acc\\u00e8s facile \\u00e0 Royan\",\"city\":\"\",\"address\":\"Le Verdon-sur-Mer, 33123 Le Verdon-sur-Mer, France\",\"km\":14.3,\"min\":16,\"lat\":45.5480053,\"lng\":-1.0608673,\"tags\":[],\"fields\":[{\"label\":\"Distance from camping (km)\",\"value\":\"14.3\"},{\"label\":\"Driving time (min)\",\"value\":\"16\"},{\"label\":\"Must-see places \\\/ activities\",\"value\":\"Port M\\u00e9doc, Plages sur l'estuaire et l'oc\\u00e9an\"},{\"label\":\"Markets \\\/ local events\",\"value\":\"March\\u00e9s locaux\"},{\"label\":\"Restaurants \\\/ local specialties\",\"value\":\"Fruits de mer, Cuisine locale\"},{\"label\":\"Full address\",\"value\":\"Le Verdon-sur-Mer, 33123 Le Verdon-sur-Mer, France\"}],\"link\":\"https:\\\/\\\/www.leverdon-sur-mer.fr\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":3,\"featurable\":true,\"type\":\"villes-aux-alentours\",\"name\":\"La Palmyre\",\"image\":\"https:\\\/\\\/www.deuxieme-adresse.com\\\/wp-content\\\/uploads\\\/prl-vendee-foret-plage.jpg\",\"credit\":\"\",\"description\":\"Station baln\\u00e9aire r\\u00e9put\\u00e9e pour son zoo et ses plages sauvages\",\"city\":\"\",\"address\":\"La Palmyre, 17570 Les Mathes, France\",\"km\":30,\"min\":35,\"lat\":45.6858361,\"lng\":-1.1662364,\"tags\":[],\"fields\":[{\"label\":\"Distance from camping (km)\",\"value\":\"30\"},{\"label\":\"Driving time (min)\",\"value\":\"35\"},{\"label\":\"Must-see places \\\/ activities\",\"value\":\"Zoo de La Palmyre, Plages de la C\\u00f4te sauvage, For\\u00eat de la Coubre\"},{\"label\":\"Markets \\\/ local events\",\"value\":\"March\\u00e9s locaux\"},{\"label\":\"Restaurants \\\/ local specialties\",\"value\":\"Fruits de mer, Cuisine r\\u00e9gionale\"},{\"label\":\"Full address\",\"value\":\"La Palmyre, 17570 Les Mathes, France\"}],\"link\":\"https:\\\/\\\/www.lapalmyre.com\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":4,\"featurable\":true,\"type\":\"villes-aux-alentours\",\"name\":\"Royan\",\"image\":\"https:\\\/\\\/www.royanatlantique.fr\\\/app\\\/uploads\\\/2022\\\/07\\\/grande-conche-royan-%C2%A9-thierry-avan.jpg\",\"credit\":\"\",\"description\":\"Lively seaside resort with many beaches and activities\",\"city\":\"\",\"address\":\"Royan, 17200 Royan, France\",\"km\":25,\"min\":39,\"lat\":45.625,\"lng\":-1.016667,\"tags\":[],\"fields\":[{\"label\":\"Distance from camping (km)\",\"value\":\"25\"},{\"label\":\"Driving time (min)\",\"value\":\"39\"},{\"label\":\"Must-see places \\\/ activities\",\"value\":\"Grand Conche Beach, Pontaillac Beach, Chay Beach, Foncillon Beach\"},{\"label\":\"Markets \\\/ local events\",\"value\":\"Day and night markets\"},{\"label\":\"Restaurants \\\/ local specialties\",\"value\":\"Seafood, local cuisine\"},{\"label\":\"Full address\",\"value\":\"Royan, 17200 Royan, France\"}],\"link\":\"https:\\\/\\\/www.royan.fr\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":5,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Le Verdon-sur-Mer Local Market\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b9057727ce.jpg\",\"credit\":\"\",\"description\":\"Small local market with fresh seafood and regional specialties. Charming small port with a pleasant setting for strolling.\",\"city\":\"\",\"address\":\"Le Verdon-sur-Mer, 33123 Le Verdon-sur-Mer, France\",\"km\":14.3,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Le Verdon-sur-Mer\",\"local market\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"local market\"},{\"label\":\"City \\\/ Area\",\"value\":\"Le Verdon-sur-Mer\"},{\"label\":\"Distance from camping (km)\",\"value\":\"14.3\"},{\"label\":\"Average duration\",\"value\":\"2 hours\"},{\"label\":\"Reservation necessary?\",\"value\":\"Non\"},{\"label\":\"Full address\",\"value\":\"Le Verdon-sur-Mer, 33123 Le Verdon-sur-Mer, France\"}],\"link\":\"\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":6,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Montalivet-les-Bains Outdoor Market\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/0e984838-45a7-49dd-b9b8-311f0271b53b.jpg\",\"credit\":\"\",\"description\":\"Renowned outdoor market for its handcrafted products, clothing, and local culinary specialties. Perfect for a relaxing stroll and local shopping.\",\"city\":\"\",\"address\":\"Montalivet-les-Bains, 33930 Vendays-Montalivet, France\",\"km\":16.2,\"min\":null,\"lat\":45.3796674,\"lng\":-1.1499596,\"tags\":[\"Montalivet-les-Bains\",\"local market\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"local market\"},{\"label\":\"City \\\/ Area\",\"value\":\"Montalivet-les-Bains\"},{\"label\":\"Distance from camping (km)\",\"value\":\"16.2\"},{\"label\":\"Average duration\",\"value\":\"2 to 3 hours\"},{\"label\":\"Reservation necessary?\",\"value\":\"Non\"},{\"label\":\"Full address\",\"value\":\"Montalivet-les-Bains, 33930 Vendays-Montalivet, France\"}],\"link\":\"\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":7,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Golf at Balata Golf Practice\",\"image\":\"https:\\\/\\\/nwscdn.com\\\/media\\\/catalog\\\/product\\\/cache\\\/h900xw900\\\/1\\\/5\\\/15mm_artificial_turf_golf_practice_mat_for_all_weather_conditions.jpg\",\"credit\":\"\",\"description\":\"Come discover golf or improve your skills in a natural and preserved setting. The Balata Golf Practice association offers lessons, outings, and competitions for all levels.\",\"city\":\"\",\"address\":\"Soulac-sur-Mer, France\",\"km\":4.6,\"min\":null,\"lat\":45.435196,\"lng\":-1.10637,\"tags\":[\"Soulac-sur-Mer\",\"sports\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"sports\"},{\"label\":\"City \\\/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"label\":\"Distance from camping (km)\",\"value\":\"4,6\"},{\"label\":\"Average duration\",\"value\":\"variable\"},{\"label\":\"Reservation necessary?\",\"value\":\"oui\"},{\"label\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}],\"link\":\"https:\\\/\\\/www.campingdespins.fr\\\/blog\\\/activites\\\/\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":8,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Montalivet Paintball\",\"image\":\"https:\\\/\\\/www.paintball-montalivet.com\\\/images\\\/terrain-paintball\\\/90km-bordeaux.jpg\",\"credit\":\"\",\"description\":\"Come alone or with a team to Montalivet Paintball. Various scenarios are imagined for your enjoyment and that of children. Camping clients benefit from a preferential rate.\",\"city\":\"\",\"address\":\"Montalivet-les-Bains, France\",\"km\":15,\"min\":null,\"lat\":45.3746987,\"lng\":-1.1375455,\"tags\":[\"Montalivet-les-Bains\",\"sports\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"sports\"},{\"label\":\"City \\\/ Area\",\"value\":\"Montalivet-les-Bains\"},{\"label\":\"Distance from camping (km)\",\"value\":\"15\"},{\"label\":\"Average duration\",\"value\":\"2 hours\"},{\"label\":\"Reservation necessary?\",\"value\":\"oui\"},{\"label\":\"Full address\",\"value\":\"Montalivet-les-Bains, France\"}],\"link\":\"https:\\\/\\\/www.campingdespins.fr\\\/blog\\\/activites\\\/\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":9,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Parachuting over Soulac-sur-Mer\",\"image\":\"https:\\\/\\\/img.adrenactive.com\\\/img\\\/3527\\\/800_600\\\/3527-18855-saut-en-parachute-soulac-sur-mer-800.jpg\",\"credit\":\"\",\"description\":\"Adrenaline lovers will discover our breathtaking landscape from above while flying over Soulac-sur-Mer. Landing at Arros beach, a small piece of paradise.\",\"city\":\"\",\"address\":\"Soulac-sur-Mer, France\",\"km\":0,\"min\":null,\"lat\":45.496728,\"lng\":-1.077014,\"tags\":[\"Soulac-sur-Mer\",\"sport\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"sport\"},{\"label\":\"City \\\/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"label\":\"Distance from camping (km)\",\"value\":\"0\"},{\"label\":\"Average duration\",\"value\":\"1 hour\"},{\"label\":\"Reservation necessary?\",\"value\":\"oui\"},{\"label\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}],\"link\":\"https:\\\/\\\/www.campingdespins.fr\\\/blog\\\/activites\\\/\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":10,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Horseback Riding at Silver Stud Farm\",\"image\":\"https:\\\/\\\/static.wixstatic.com\\\/media\\\/61128a_fd6422a4d31a4216aba03a7c3d5cde96~mv2.jpg\\\/v1\\\/fill\\\/w_560,h_400,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto\\\/61128a_fd6422a4d31a4216aba03a7c3d5cde96~mv2.jpg\",\"credit\":\"\",\"description\":\"Just a stone's throw from the campsite, the Silver Stud Farm riding center offers initiation sessions, forest walks, or beach rides.\",\"city\":\"\",\"address\":\"Soulac-sur-Mer, France\",\"km\":0,\"min\":null,\"lat\":45.4799483,\"lng\":-1.119821,\"tags\":[\"Soulac-sur-Mer\",\"sports\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"sports\"},{\"label\":\"City \\\/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"label\":\"Distance from camping (km)\",\"value\":\"0\"},{\"label\":\"Average duration\",\"value\":\"1 hour\"},{\"label\":\"Reservation necessary?\",\"value\":\"oui\"},{\"label\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}],\"link\":\"https:\\\/\\\/www.campingdespins.fr\\\/blog\\\/activites\\\/\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":11,\"featurable\":true,\"type\":\"activites-et-lieux-recommandes\",\"name\":\"Hiking in the Landes Forest\",\"image\":\"https:\\\/\\\/woody.cloudly.space\\\/app\\\/uploads\\\/cotelandesnature\\\/2021\\\/12\\\/thumbs\\\/saintgirons-dsc-0279sophiepawlak-640x640.jpg\",\"credit\":\"\",\"description\":\"Use mobile apps like Komoot or Wikiloc to discover new trails, find exceptional viewpoints, and observe rich fauna and flora.\",\"city\":\"\",\"address\":\"Soulac-sur-Mer, France\",\"km\":0,\"min\":null,\"lat\":45.4837971,\"lng\":-1.1267853,\"tags\":[\"Soulac-sur-Mer\",\"nature\"],\"fields\":[{\"label\":\"Type of facility\",\"value\":\"nature\"},{\"label\":\"City \\\/ Area\",\"value\":\"Soulac-sur-Mer\"},{\"label\":\"Distance from camping (km)\",\"value\":\"0\"},{\"label\":\"Average duration\",\"value\":\"2-3 hours\"},{\"label\":\"Reservation necessary?\",\"value\":\"non\"},{\"label\":\"Full address\",\"value\":\"Soulac-sur-Mer, France\"}],\"link\":\"https:\\\/\\\/www.campingdespins.fr\\\/tourisme-soulac-sur-mer\\\/tourisme-activites-soulac-sur-mer\\\/\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":12,\"featurable\":true,\"type\":\"evenements-recommandes\",\"name\":\"Royan Architecture Photo Contest Exhibition\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b5a12aee72.png\",\"credit\":\"\",\"description\":\"Exhibition showcasing works from the photo contest on the theme of \\\"color\\\".\",\"city\":\"\",\"address\":\"CIAP, ground floor of the Conference Palace, 42 av des Congr\\u00e8s, Royan\",\"km\":27,\"min\":null,\"lat\":45.620178,\"lng\":-1.033324,\"tags\":[\"Exhibition\"],\"fields\":[{\"label\":\"Date \\\/ Period\",\"value\":\"October 18 - December 24, 2025\"},{\"label\":\"Location (city)\",\"value\":\"Royan\"},{\"label\":\"Distance from camping (km)\",\"value\":\"27\"},{\"label\":\"Type of facility\",\"value\":\"Exhibition\"},{\"label\":\"Full address\",\"value\":\"CIAP, ground floor of the Conference Palace, 42 av des Congr\\u00e8s, Royan\"}],\"link\":\"\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":13,\"featurable\":true,\"type\":\"evenements-recommandes\",\"name\":\"Jazz at the Palace - Baptiste Herbin Trio \\\"Django\\\"\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b5e2b395e7.png\",\"credit\":\"\",\"description\":\"Jazz concert with Baptiste Herbin Trio performing \\\"Django\\\".\",\"city\":\"\",\"address\":\"42 avenue des Congr\\u00e8s, Le Palais, Royan\",\"km\":27,\"min\":null,\"lat\":45.620178,\"lng\":-1.033324,\"tags\":[\"Concert\"],\"fields\":[{\"label\":\"Date \\\/ Period\",\"value\":\"November 29, 2025\"},{\"label\":\"Location (city)\",\"value\":\"Royan\"},{\"label\":\"Distance from camping (km)\",\"value\":\"27\"},{\"label\":\"Type of facility\",\"value\":\"Concert\"},{\"label\":\"Full address\",\"value\":\"42 avenue des Congr\\u00e8s, Le Palais, Royan\"}],\"link\":\"\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":14,\"featurable\":true,\"type\":\"evenements-recommandes\",\"name\":\"Giant Cluedo\",\"image\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/8-uJlhFGc0q3f85pBqFFd9aSb0pjGcY4wBIJ93raboQvKsAs1A_JDJEiGfQsd0c7hXbaNK18S-Egt8bk6F-IJfaNVSIsHpDebMQ5r7ZpVXWSyK-yE3HbFtfLZf8Z2e8ld2HtwUS4j2BaPR9hXKQYprAedpRp0f6u3P7saWgI05oVgEU1FS2iZZM_Ug9Caw\",\"credit\":\"\",\"description\":\"A life-sized investigation at the CIAP of Royan to solve a mysterious theft.\",\"city\":\"\",\"address\":\"CIAP, ground floor of the Palace, 42 av des Congr\\u00e8s, Royan\",\"km\":27,\"min\":null,\"lat\":45.620178,\"lng\":-1.033324,\"tags\":[\"Jeu\"],\"fields\":[{\"label\":\"Date \\\/ Period\",\"value\":\"November 29, 2025\"},{\"label\":\"Location (city)\",\"value\":\"Royan\"},{\"label\":\"Distance from camping (km)\",\"value\":\"27\"},{\"label\":\"Type of facility\",\"value\":\"Jeu\"},{\"label\":\"Full address\",\"value\":\"CIAP, ground floor of the Palace, 42 av des Congr\\u00e8s, Royan\"}],\"link\":\"\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":15,\"featurable\":true,\"type\":\"evenements-recommandes\",\"name\":\"Classic Weekend - Arthur Hinnewinkel\",\"image\":\"https:\\\/\\\/encrypted-tbn0.gstatic.com\\\/images?q=tbn:ANd9GcQJ9zuYFrTs8Sh3CYMwV-fwX5Tz7Kl5FRHczQ&s\",\"credit\":\"\",\"description\":\"Classical concert with pianist Arthur Hinnewinkel.\",\"city\":\"\",\"address\":\"42 avenue des Congr\\u00e8s, Le Palais, Royan\",\"km\":27,\"min\":null,\"lat\":45.620178,\"lng\":-1.033324,\"tags\":[\"Concert\"],\"fields\":[{\"label\":\"Date \\\/ Period\",\"value\":\"December 6, 2025\"},{\"label\":\"Location (city)\",\"value\":\"Royan\"},{\"label\":\"Distance from camping (km)\",\"value\":\"27\"},{\"label\":\"Type of facility\",\"value\":\"Concert\"},{\"label\":\"Full address\",\"value\":\"42 avenue des Congr\\u00e8s, Le Palais, Royan\"}],\"link\":\"https:\\\/\\\/www.france-voyage.com\\\/evenements\\\/soulac-sur-mer-commune-11753.htm\",\"event\":\"\",\"faq\":[],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":16,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Themed Evenings and Concerts\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/concert-soulac-1.jpg\",\"credit\":\"\",\"description\":\"Family and festive evenings including concerts, themed nights, blind tests, family activities like Piki Disco and cocktail games.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Themed Evenings and Concerts\"},{\"label\":\"Target audience\",\"value\":\"All audiences\"},{\"label\":\"Hours\",\"value\":\" Mainly on Friday evenings, weekly during the summer season\"},{\"label\":\"Location\",\"value\":\"Stage and activity area of the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this animation?\",\"answer\":\"Usually several hours long.\"},{\"question\":\"Is reservation required to participate in this animation?\",\"answer\":\"Yes, some evenings require a reservation.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"\"},{\"question\":\"Is this animation free?\",\"answer\":\"Usually free, but some evenings may require a fee.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":17,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Various Sports Activities\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/beach-volley-soulac.jpg\",\"credit\":\"\",\"description\":\"Various sports activities offered by the entertainment team, including fitness, cross-training, p\\u00e9tanque, beach volleyball.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Various Sports Activities\"},{\"label\":\"Target audience\",\"value\":\"All ages\"},{\"label\":\"Hours\",\"value\":\"According to the entertainment schedule\"},{\"label\":\"Location\",\"value\":\"Camping sports fields and areas\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"How long is this activity?\",\"answer\":\"Varies depending on the activity, usually one hour.\"},{\"question\":\"Is reservation required to participate in this activity?\",\"answer\":\"No, free participation unless otherwise indicated.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"\"},{\"question\":\"Is this activity free?\",\"answer\":\"Gratuit.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":18,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Treasure Hunt\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/chasse-tresor-soulac.jpg\",\"credit\":\"\",\"description\":\"An adventure organized by the animation team, perfect for children and families, offering a fun and playful scavenger hunt.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Treasure Hunt\"},{\"label\":\"Target audience\",\"value\":\"Children and families\"},{\"label\":\"Hours\",\"value\":\"July and August\"},{\"label\":\"Location\",\"value\":\"Camping and surroundings\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"Variable duration, usually 1 to 2 hours.\"},{\"question\":\"Is prior reservation required to participate in this activity?\",\"answer\":\"No, free participation with optional registration.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"Suitable for children from 6 years old.\"},{\"question\":\"Is this activity paid?\",\"answer\":\"Free.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":19,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Sports Tournaments and Challenges\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b5fde2e946.jpg\",\"credit\":\"\",\"description\":\"Organization of sports tournaments and fun challenges such as inter-camp tournaments and water games inspired by Koh-Lanta.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Sports Tournaments and Challenges\"},{\"label\":\"Target audience\",\"value\":\"All ages\"},{\"label\":\"Hours\",\"value\":\"According to activity schedule, in high season\"},{\"label\":\"Location\",\"value\":\"Sports fields of the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"Variable depending on the tournament or challenge.\"},{\"question\":\"Is reservation required to participate in this activity?\",\"answer\":\"Not necessary, registration on-site possible.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"\"},{\"question\":\"Is this activity free?\",\"answer\":\"Gratuit.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":20,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Yoga and Aquagym Classes\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/yoga-soulac.jpg\",\"credit\":\"\",\"description\":\"Yoga and aquagym classes offered by the animation team, with massage available upon request. These activities promote relaxation and well-being.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Yoga and Aquagym Classes\"},{\"label\":\"Target audience\",\"value\":\"Adults and children\"},{\"label\":\"Hours\",\"value\":\"Yoga: Monday 9:30 am, Thursday 12:15 pm, Friday 6:30 pm, Sunday 6:00 pm\"},{\"label\":\"Location\",\"value\":\"Swimming pool and sports hall of the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"Variable duration depending on the class, generally about 1 hour.\"},{\"question\":\"Is reservation required to participate in this activity?\",\"answer\":\"Yes, booking is necessary for these classes.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"\"},{\"question\":\"Is this activity paid?\",\"answer\":\"Most activities are free, but some classes may require payment.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":21,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Children's Club\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/soulac-club-enfants-1.jpg\",\"credit\":\"\",\"description\":\"The children's club offers creative activities such as painting and drawing, outdoor games, treasure hunts, snacks, and carnivals. Managed by qualified animators, it operates 7 days a week during the high season.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Children's Club\"},{\"label\":\"Target audience\",\"value\":\"Children from 6 years old\"},{\"label\":\"Hours\",\"value\":\"July and August, sessions of at least 2 hours\"},{\"label\":\"Location\",\"value\":\"Camping des Pins, children's club area\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"Each session lasts a minimum of 2 hours.\"},{\"question\":\"Is reservation required to participate in this activity?\",\"answer\":\"Yes, advance registration is necessary due to limited numbers.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"6 years old.\"},{\"question\":\"Is this activity free of charge?\",\"answer\":\"Free.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":22,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Night Walk\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b606799e41.jpg\",\"credit\":\"\",\"description\":\"Guided night walk organized, allowing you to discover the surroundings under a different atmosphere.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Night Walk\"},{\"label\":\"Target audience\",\"value\":\"Adults\"},{\"label\":\"Hours\",\"value\":\"According to schedule\"},{\"label\":\"Location\",\"value\":\"Departure from the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"Variable, usually 1 to 2 hours.\"},{\"question\":\"Is it necessary to reserve to participate in this activity?\",\"answer\":\"Yes, registration recommended.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"From 12 years old.\"},{\"question\":\"Is this activity free?\",\"answer\":\"Free of charge.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":23,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Boom Party and Mini Disco\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/soulac-animation-enfant.jpg\",\"credit\":\"\",\"description\":\"Activities for children including boom party, mini disco, and small parties with music and dance suitable for ages.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Boom Party and Mini Disco\"},{\"label\":\"Target audience\",\"value\":\"Children\"},{\"label\":\"Hours\",\"value\":\"In the evening, according to schedule\"},{\"label\":\"Location\",\"value\":\"Children's activity area of the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"About 1 hour.\"},{\"question\":\"Is it necessary to reserve to participate in this activity?\",\"answer\":\"No, free participation.\"},{\"question\":\"Is there an minimum age to participate?\",\"answer\":\"From 6 years old.\"},{\"question\":\"Is this activity free?\",\"answer\":\"Free.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":24,\"featurable\":true,\"type\":\"infos-pratiques\",\"name\":\"Aquatournoi and Blowgun\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b7494ab3dc.png\",\"credit\":\"\",\"description\":\"Water tournament and blowgun shooting sessions offered for children and adults, combining sport and relaxation.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Aquatournoi and Blowgun\"},{\"label\":\"Target audience\",\"value\":\"All ages\"},{\"label\":\"Hours\",\"value\":\"According to schedule\"},{\"label\":\"Location\",\"value\":\"Swimming pool and water play area of the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the duration of this activity?\",\"answer\":\"Varies depending on the event.\"},{\"question\":\"Is it necessary to reserve to participate in this activity?\",\"answer\":\"Not necessary, registration on site is possible.\"},{\"question\":\"Is there a minimum age to participate?\",\"answer\":\"Suitable for children from 6 years old.\"},{\"question\":\"Is this activity paid?\",\"answer\":\"Free.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":25,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Restaurant\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/soulac-restaurant.jpg\",\"credit\":\"\",\"description\":\"On-site restaurant offering meals and drinks in a friendly setting, integrated into the Nicoll\\u2019s Camp camping experience.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Catering\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Restaurant\"},{\"label\":\"Type of facility\",\"value\":\"Catering\"},{\"label\":\"Location within the campsite\",\"value\":\"Near the main entrance of the camping site\"},{\"label\":\"Accessibility\",\"value\":\"Accessible for people with reduced mobility and children\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this infrastructure?\",\"answer\":\"The restaurant is open with varying hours, usually noon and evening, check at reception.\"},{\"question\":\"What is the fee to use this infrastructure?\",\"answer\":\"A la carte meals and drinks, prices vary depending on the selected menu.\"},{\"question\":\"What facilities are available at this infrastructure?\",\"answer\":\"Varied menu, drinks, outdoor terrace.\"},{\"question\":\"What are the access conditions for this infrastructure?\",\"answer\":\"Open to the public and to camping residents.\"},{\"question\":\"What is the maximum capacity of this infrastructure?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":26,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Camping pitches\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/gironde-louer-emplacement.jpg\",\"credit\":\"\",\"description\":\"Approximately 70 shaded pitches, marked out by hedges, with an average area of 80 m\\u00b2. The pitches are in premium, high comfort, and nature ranges, accommodating up to 6 people.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Pitches\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Camping pitches\"},{\"label\":\"Type of facility\",\"value\":\"Pitches\"},{\"label\":\"Location within the campsite\",\"value\":\"Various pitches spread across the campsite\"},{\"label\":\"Accessibility\",\"value\":\"Accessible for children, not all equipped with electricity, bring adapters and extension cords\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this infrastructure?\",\"answer\":\"The pitches are accessible from 12:00 on the day of arrival, with departure before 11:00 for premium pitches.\"},{\"question\":\"What is the fee to use this infrastructure?\",\"answer\":\"Rate according to the type of pitch and number of people; reservation with 30% deposit.\"},{\"question\":\"What equipment is available in this infrastructure?\",\"answer\":\"Electricity points available on some outlets (6A), access to sanitary blocks and camping facilities.\"},{\"question\":\"What are the access conditions to this infrastructure?\",\"answer\":\"Access reserved for campers with confirmed reservation; controlled by reception.\"},{\"question\":\"What is the maximum capacity of this facility?\",\"answer\":\"Each pitch can accommodate up to 6 people maximum (including babies).\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":27,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Accueil \\\/ Reception\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/camping-des-pins.png\",\"credit\":\"\",\"description\":\"Main reception point for reservations, information, and camper assistance.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Service\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Accueil \\\/ Reception\"},{\"label\":\"Type of facility\",\"value\":\"Service\"},{\"label\":\"Location within the campsite\",\"value\":\"At the entrance of the campsite\"},{\"label\":\"Accessibility\",\"value\":\"Accessible to persons with reduced mobility\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this facility?\",\"answer\":\"Open from 9 am to 1 pm and from 3 pm to 8 pm.\"},{\"question\":\"What is the fee to use this infrastructure?\",\"answer\":\"Free service for residents.\"},{\"question\":\"What facilities are available in this infrastructure?\",\"answer\":\"Tourist information, reservation management, phone assistance.\"},{\"question\":\"What are the access conditions for this infrastructure?\",\"answer\":\"Open access to residents and visitors during opening hours.\"},{\"question\":\"What is the maximum capacity of this infrastructure?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":28,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Heated swimming pool\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/soulac-piscine.jpg\",\"credit\":\"\",\"description\":\"Heated pool available for campers, offering a space for relaxation and aquatic leisure.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.484555,\"lng\":-1.126622,\"tags\":[\"Aquatic area\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Heated swimming pool\"},{\"label\":\"Type of facility\",\"value\":\"Aquatic area\"},{\"label\":\"Location within the campsite\",\"value\":\"Close to reception and common areas\"},{\"label\":\"Accessibility\",\"value\":\"Accessible to children, parental supervision recommended\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this facility?\",\"answer\":\"The heated pool is available according to the campground's opening hours, usually from 9 AM to 8 PM.\"},{\"question\":\"What is the fee to use this infrastructure?\",\"answer\":\"Using the pool is included in the stay fee.\"},{\"question\":\"What equipment is available in this infrastructure?\",\"answer\":\"Heated pool, relaxation areas around the pool.\"},{\"question\":\"What are the access conditions to this infrastructure?\",\"answer\":\"Access reserved for camping residents according to safety and hygiene rules.\"},{\"question\":\"What is the maximum capacity of this infrastructure?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":29,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Playground\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/soulac-jeux-enfants.jpg\",\"credit\":\"\",\"description\":\"Play area equipped for children, with ping-pong, mini-football, and p\\u00e9tanque.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Leisure\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Playground\"},{\"label\":\"Type of facility\",\"value\":\"Leisure\"},{\"label\":\"Location within the campsite\",\"value\":\"Near accommodations and common areas\"},{\"label\":\"Accessibility\",\"value\":\"Accessible to children under parental supervision\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this infrastructure?\",\"answer\":\"Open daily during the camping's opening hours.\"},{\"question\":\"What is the cost to use this infrastructure?\",\"answer\":\"Free for camping residents.\"},{\"question\":\"What equipment is available in this infrastructure?\",\"answer\":\"Ping-pong tables, mini-football field, p\\u00e9tanque court.\"},{\"question\":\"What are the access conditions for this infrastructure?\",\"answer\":\"Open access reserved for residents.\"},{\"question\":\"What is the maximum capacity of this facility?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":30,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Outdoor parking\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b90b8af34d.jpg\",\"credit\":\"\",\"description\":\"Outdoor parking for residents and visitors' vehicles, the campsite being pedestrian-only internally.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Parking\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Outdoor parking\"},{\"label\":\"Type of facility\",\"value\":\"Parking\"},{\"label\":\"Location within the campsite\",\"value\":\"At the entrance of the campsite, outside\"},{\"label\":\"Accessibility\",\"value\":\"Accessible for people with reduced mobility\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this facility?\",\"answer\":\"Open 24\\\/7.\"},{\"question\":\"What is the fee to use this infrastructure?\",\"answer\":\"Fee varies according to stay conditions, often included or flat rate.\"},{\"question\":\"What equipment is available in this infrastructure?\",\"answer\":\"Secure parking spaces.\"},{\"question\":\"What are the access conditions to this infrastructure?\",\"answer\":\"Reserved for camping residents and visitors.\"},{\"question\":\"What is the maximum capacity of this infrastructure?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":31,\"featurable\":true,\"type\":\"infrastructures\",\"name\":\"Gourmet Grocery\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b82c93cc11.jpg\",\"credit\":\"\",\"description\":\"Small gourmet grocery offering essential and local products for campers.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[\"Commerce\"],\"fields\":[{\"label\":\"Title\",\"value\":\"Gourmet Grocery\"},{\"label\":\"Type of facility\",\"value\":\"Commerce\"},{\"label\":\"Location within the campsite\",\"value\":\"Near the reception\"},{\"label\":\"Accessibility\",\"value\":\"Accessible to all\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this infrastructure?\",\"answer\":\"Our grocery store is open every day from 8 a.m. to 8 p.m. in July and August.\"},{\"question\":\"What is the price to use this facility?\",\"answer\":\"Prices vary depending on the products.\"},{\"question\":\"What equipment is available at this facility?\",\"answer\":\"Basic food products, regional products, drinks.\"},{\"question\":\"What are the access conditions for this facility?\",\"answer\":\"Accessible to residents and visitors of the campsite.\"},{\"question\":\"What is the maximum capacity of this facility?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":32,\"featurable\":false,\"type\":\"services\",\"name\":\"Bike Rental\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/soulac-location-velo.jpg\",\"credit\":\"\",\"description\":\"Bike rental to promote sustainable mobility and enjoy the nearby bike paths.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Bike Rental\"},{\"label\":\"Hours\",\"value\":\"Available during the campground's opening hours.\"},{\"label\":\"Rate\",\"value\":\"Prices on request at the reception.\"},{\"label\":\"Contact\",\"value\":\"Campground reception\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Is the service accessible to everyone?\",\"answer\":\"Accessible to all campers wishing to rent a bike.\"},{\"question\":\"Is it necessary to make a reservation to use this service?\",\"answer\":\"It is recommended to reserve to ensure availability.\"},{\"question\":\"What are the service hours?\",\"answer\":\"Service available during normal opening hours.\"},{\"question\":\"Is there a specific fee for this service?\",\"answer\":\"Fees vary depending on the rental duration.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":33,\"featurable\":false,\"type\":\"services\",\"name\":\"Linen and towel rental\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/location-drap-soulac-1.jpg\",\"credit\":\"\",\"description\":\"Rental service for bed sheets and towels for more comfort during your stay.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Linen and towel rental\"},{\"label\":\"Hours\",\"value\":\"Available throughout the camping season.\"},{\"label\":\"Rate\",\"value\":\"Bed sheet rental: \\u20ac12 \\\/ bed; Towel kit: \\u20ac10 \\\/ person.\"},{\"label\":\"Contact\",\"value\":\"At the camping reception\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Is the service accessible to everyone?\",\"answer\":\"Accessible to all customers wishing to rent linen.\"},{\"question\":\"Is it necessary to make a reservation to benefit from this service?\",\"answer\":\"Reservation possible at reception or in advance.\"},{\"question\":\"What are the opening hours of the service?\",\"answer\":\"Available during reception opening hours.\"},{\"question\":\"Is there a specific rate for this service?\",\"answer\":\"Rental rates: \\u20ac12 for sheets and \\u20ac10 for the toilet kit.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":34,\"featurable\":false,\"type\":\"services\",\"name\":\"Restaurant \\\/ Snack \\\/ Bar\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/soulac-restaurant.jpg\",\"credit\":\"\",\"description\":\"The campsite offers a restaurant, snack bar, and lounge. The restaurant serves homemade cuisine, emphasizing local and seasonal products. The snack bar offers takeaway pizzas and fries. The bar offers cocktails and happy hours with drinks on the terrace.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Restaurant \\\/ Snack \\\/ Bar\"},{\"label\":\"Hours\",\"value\":\"Snack open 12pm-2pm and 6:30pm-10pm in July\\\/August. Restaurant open every evening in high season until 10pm, and on Thursday, Friday, Saturday in low season. Bar open day and night.\"},{\"label\":\"Rate\",\"value\":\"Prices vary depending on dishes, children's menus available.\"},{\"label\":\"Contact\",\"value\":\"On-site at the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Le service est-il accessible \\u00e0 tous ?\",\"answer\":\"Le restaurant, snack et bar sont accessibles \\u00e0 tous les campeurs.\"},{\"question\":\"Faut-il r\\u00e9server pour b\\u00e9n\\u00e9ficier de ce service ?\",\"answer\":\"Il est pr\\u00e9f\\u00e9rable de r\\u00e9server pour le restaurant.\"},{\"question\":\"Quels sont les horaires d'ouverture du service ?\",\"answer\":\"Les horaires varient selon la saison, notamment en haute saison juillet-ao\\u00fbt.\"},{\"question\":\"Y a-t-il un tarif sp\\u00e9cifique pour ce service ?\",\"answer\":\"Menu enfants et options v\\u00e9g\\u00e9tariennes sont disponibles.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":35,\"featurable\":false,\"type\":\"services\",\"name\":\"Laundry\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/location-kit-bebe-soulac.jpg\",\"credit\":\"\",\"description\":\"The campsite provides a laundry equipped with a washing machine and a dryer for the comfort of campers.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Laundry\"},{\"label\":\"Hours\",\"value\":\"9am-8pm in high season, 9am-5:30pm in low season\"},{\"label\":\"Rate\",\"value\":\"Not specified\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Is the service accessible to everyone?\",\"answer\":\"\"},{\"question\":\"Is reservation needed to use this service?\",\"answer\":\"\"},{\"question\":\"What are the opening hours of the service?\",\"answer\":\"\"},{\"question\":\"Y a-t-il un tarif sp\\u00e9cifique pour ce service ?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":36,\"featurable\":false,\"type\":\"services\",\"name\":\"Baby Kit Rental\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/location-kit-bebe-soulac.jpg\",\"credit\":\"\",\"description\":\"Rental of available baby chairs or cribs, with weekly or nightly rates.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Baby Kit Rental\"},{\"label\":\"Rate\",\"value\":\"\\u20ac14 per week or \\u20ac5 per night\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Is the service accessible to everyone?\",\"answer\":\"\"},{\"question\":\"Is it necessary to make a reservation to benefit from this service?\",\"answer\":\"\"},{\"question\":\"What are the opening hours of the service?\",\"answer\":\"\"},{\"question\":\"Y a-t-il un tarif sp\\u00e9cifique pour ce service ?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":37,\"featurable\":false,\"type\":\"services\",\"name\":\"Bread and pastry deposit\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/vente-viennoisseries-soulac-3.jpg\",\"credit\":\"\",\"description\":\"Enjoy a bread and pastry deposit service every morning to start the day with fresh products. Prices are to be checked directly at the reception of the campsite.\\nReservation mandatory the day before.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Bread and pastry deposit\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Is the service accessible to everyone?\",\"answer\":\"\"},{\"question\":\"Is reservation needed to benefit from this service?\",\"answer\":\"\"},{\"question\":\"What are the opening hours of the service?\",\"answer\":\"\"},{\"question\":\"Is there a specific rate for this service?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":38,\"featurable\":true,\"type\":\"baignade\",\"name\":\"Na\\u00efades Beach\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/9b72a1d0-3276-43f3-b8e4-1a5197eecce6.jpg\",\"credit\":\"\",\"description\":\"Natural sandy beach popular for swimming, relaxing, and water activities such as surfing and bodyboarding.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.5033,\"lng\":-1.1352,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Na\\u00efades Beach\"},{\"label\":\"Type of swimming\",\"value\":\"Seaside beach\"},{\"label\":\"Accessibility\",\"value\":\"Accessible on foot or by bike from the campsite, facilities adapted for PMR.\"},{\"label\":\"Contact Hours\",\"value\":\"Supervised bathing generally until 7 p.m.\"},{\"label\":\"Rate\",\"value\":\"Free.\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What safety measures are in place for swimming?\",\"answer\":\"The beach is supervised by professionals, with designated swimming zones.\"},{\"question\":\"What facilities are available for bathers?\",\"answer\":\"Rescue stations, showers, nearby sanitary facilities, rental stations for water sports equipment.\"},{\"question\":\"How is the cleanliness of the bathing areas maintained?\",\"answer\":\"Local commitment to cleanliness, with waste collection and pollution prevention.\"},{\"question\":\"Is swimming accessible for persons with reduced mobility?\",\"answer\":\"Secure and adapted access for persons with reduced mobility.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":39,\"featurable\":true,\"type\":\"baignade\",\"name\":\"Am\\u00e9lie Beach\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b909b69503.jpg\",\"credit\":\"\",\"description\":\"Public sandy beach located about 1.8 km from the campsite, ideal for swimming and water activities.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.4712821,\"lng\":-1.1567571,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Am\\u00e9lie Beach\"},{\"label\":\"Type of swimming\",\"value\":\"Seaside Beach\"},{\"label\":\"Accessibility\",\"value\":\"Accessible by bike or on foot, with facilities for PWD.\"},{\"label\":\"Contact Hours\",\"value\":\"Swimming allowed until 7 PM.\"},{\"label\":\"Rate\",\"value\":\"Free.\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What safety measures are in place for swimming?\",\"answer\":\"The beach has a lifeguard post and swimming is supervised.\"},{\"question\":\"What facilities are available for swimmers?\",\"answer\":\"Restrooms and showers, rescue station, equipment for water activities.\"},{\"question\":\"How is the cleanliness of the swimming areas maintained?\",\"answer\":\"Efforts are made to keep the beach clean with trash bins and cleaning activities.\"},{\"question\":\"Is swimming accessible for people with reduced mobility?\",\"answer\":\"The beach is equipped to accommodate people with reduced mobility.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":40,\"featurable\":true,\"type\":\"baignade\",\"name\":\"Olives Beach\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b90a62d77e.jpg\",\"credit\":\"\",\"description\":\"Popular natural beach, part of a recreational area with entertainment and water sports such as surfing and bodyboarding.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.5184233,\"lng\":-1.1257456,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Olives Beach\"},{\"label\":\"Type of swimming\",\"value\":\"Seaside beach\"},{\"label\":\"Accessibility\",\"value\":\"Easily accessible by foot or bike, wheelchair accessible.\"},{\"label\":\"Contact Hours\",\"value\":\"Supervision and swimming until 7 PM.\"},{\"label\":\"Rate\",\"value\":\"Free.\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What safety measures are in place for swimming?\",\"answer\":\"Supervision provided with a designated and secure swimming zone.\"},{\"question\":\"What equipment is available for bathers?\",\"answer\":\"Rescue stations, sanitation facilities, showers, and rinsing areas.\"},{\"question\":\"How is the cleanliness of the swimming zones maintained?\",\"answer\":\"Regular maintenance and cleaning ensure cleanliness.\"},{\"question\":\"Are swimming facilities accessible to people with reduced mobility?\",\"answer\":\"Infrastructure for access for people with reduced mobility is available.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":41,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Cordouan Lighthouse\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/phare-cordouan-gironde.jpg\",\"credit\":\"\",\"description\":\"Visit the famous lighthouse located at the entrance of the Gironde estuary, accessible by boat from Soulac-sur-Mer.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.5866324,\"lng\":-1.1730866,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Gironde Estuary\"},{\"label\":\"Type of activity\",\"value\":\"Cultural visit \\\/ Boat\"},{\"label\":\"Approximate duration\",\"value\":\"3 to 4 hours\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours for this activity?\",\"answer\":\"\"},{\"question\":\"What is the cost to participate in this activity?\",\"answer\":\"\"},{\"question\":\"Is this activity accessible to people with reduced mobility?\",\"answer\":\"\"},{\"question\":\"What is the best time of year to enjoy this activity?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":42,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Local Market of Soulac-sur-Mer\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Marche-Soulac-sur-Mer.webp\",\"credit\":\"\",\"description\":\"Market where you can find oysters from M\\u00e9doc, shrimps, fresh local products, open every morning.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.5056972,\"lng\":-1.124382,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Soulac-sur-Mer centre\"},{\"label\":\"Type of activity\",\"value\":\"Local market, gastronomy\"},{\"label\":\"Approximate duration\",\"value\":\"1 to 2 hours\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this activity?\",\"answer\":\"Every morning, variable hours depending on the season.\"},{\"question\":\"What is the cost to participate in this activity?\",\"answer\":\"Free access, paid purchase depending on products.\"},{\"question\":\"Is this activity accessible to people with reduced mobility?\",\"answer\":\"Accessible to people with reduced mobility.\"},{\"question\":\"What is the best period to enjoy this activity?\",\"answer\":\"Year-round, especially spring and summer.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":43,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Bike rides on the V\\u00e9lodyss\\u00e9e\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/velo-soulac.jpg\",\"credit\":\"\",\"description\":\"The campsite is connected to the V\\u00e9lodyss\\u00e9e cycling network, ideal for bike rides and exploring the coast around Soulac-sur-Mer.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.497638,\"lng\":-1.116894,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Soulac-sur-Mer, Gironde\"},{\"label\":\"Type of activity\",\"value\":\"Cycling tourism\"},{\"label\":\"Approximate duration\",\"value\":\"Half-day to full day\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours for this activity?\",\"answer\":\"Open all year round, trails are accessible during the day.\"},{\"question\":\"What is the cost to participate in this activity?\",\"answer\":\"Free\"},{\"question\":\"Is this activity accessible to people with reduced mobility?\",\"answer\":\"Accessible to people with reduced mobility on adapted routes.\"},{\"question\":\"What is the best time to enjoy this activity?\",\"answer\":\"Spring to autumn to enjoy mild weather\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":44,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Citadelle de Blaye\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/citadelle-blaye-1.jpg\",\"credit\":\"\",\"description\":\"An imposing fortress listed as a UNESCO World Heritage site, offering guided tours and panoramic views of the estuary.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.1293292,\"lng\":-0.6661214,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Blaye\"},{\"label\":\"Type of activity\",\"value\":\"Cultural visit\"},{\"label\":\"Approximate duration\",\"value\":\"2 to 3 hours\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours for this activity?\",\"answer\":\"\"},{\"question\":\"What is the price to participate in this activity?\",\"answer\":\"\"},{\"question\":\"Is this activity accessible for people with reduced mobility?\",\"answer\":\"\"},{\"question\":\"What is the best time to enjoy this activity?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":45,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Parc accrobranche et base de loisirs\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/accrobranche-soulac-sur-mer.jpg\",\"credit\":\"\",\"description\":\"Adventure park with treetop course for children and adults, located in the nearby region.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.4,\"lng\":-1.05,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"R\\u00e9gion M\\u00e9doc\"},{\"label\":\"Type of activity\",\"value\":\"Leisure \\\/ Adventure\"},{\"label\":\"Approximate duration\",\"value\":\"3 to 4 hours\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours for this activity?\",\"answer\":\"\"},{\"question\":\"What is the cost to participate in this activity?\",\"answer\":\"\"},{\"question\":\"Is this activity accessible for people with reduced mobility?\",\"answer\":\"\"},{\"question\":\"What is the best time of year to enjoy this activity?\",\"answer\":\"\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":46,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Water sports center\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/sport-nautique-soulac-1.jpg\",\"credit\":\"\",\"description\":\"Various water activities on the coast, including surfing, windsurfing, kitesurfing, and stand-up paddleboarding.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.5165,\"lng\":-1.1246,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Littoral de Soulac-sur-Mer\"},{\"label\":\"Type of activity\",\"value\":\"Watersports\"},{\"label\":\"Approximate duration\",\"value\":\"Half-day to full day\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours of this activity?\",\"answer\":\"Generally 9am-6pm in summer season.\"},{\"question\":\"What is the cost to participate in this activity?\",\"answer\":\"Variable depending on the activity, around \\u20ac20-50.\"},{\"question\":\"Is this activity accessible for people with reduced mobility?\",\"answer\":\"May vary depending on the activity and equipment.\"},{\"question\":\"What is the best time to enjoy this activity?\",\"answer\":\"Summer, June to September.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":47,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Oceanic beaches of Soulac-sur-Mer\",\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b809930b8e.jpg\",\"credit\":\"\",\"description\":\"Natural beaches suitable for swimming, surfing, and other water sports such as windsurfing or kitesurfing.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.5116642,\"lng\":-1.1326218,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Soulac-sur-Mer, Gironde\"},{\"label\":\"Type of activity\",\"value\":\"Beach & water sports\"},{\"label\":\"Approximate duration\",\"value\":\"Half-day or longer\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"Quels sont les horaires d'ouverture de cette activit\\u00e9 ?\",\"answer\":\"Plages accessibles \\u00e0 toute heure, baignade surveill\\u00e9e en saison.\"},{\"question\":\"Quel est le tarif pour participer \\u00e0 cette activit\\u00e9 ?\",\"answer\":\"Acc\\u00e8s libre\"},{\"question\":\"Cette activit\\u00e9 est-elle accessible aux personnes \\u00e0 mobilit\\u00e9 r\\u00e9duite ?\",\"answer\":\"Acc\\u00e8s possible aux personnes \\u00e0 mobilit\\u00e9 r\\u00e9duite sur certaines plages.\"},{\"question\":\"Quelle est la meilleure p\\u00e9riode pour profiter de cette activit\\u00e9 ?\",\"answer\":\"\\u00c9t\\u00e9, de juin \\u00e0 septembre\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":48,\"featurable\":true,\"type\":\"activites-foires-marches\",\"name\":\"Hiking and MTB Trails\",\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/vtt-sport-gironde-1.jpg\",\"credit\":\"\",\"description\":\"Coastal and forest trails suitable for all families and hikers around Soulac and M\\u00e9doc.\",\"city\":\"\",\"address\":\"\",\"km\":null,\"min\":null,\"lat\":45.352,\"lng\":-1.115,\"tags\":[],\"fields\":[{\"label\":\"Location\",\"value\":\"Soulac-sur-Mer et M\\u00e9doc\"},{\"label\":\"Type of activity\",\"value\":\"Hiking, mountain biking\"},{\"label\":\"Approximate duration\",\"value\":\"1 to 4 hours\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What are the opening hours for this activity?\",\"answer\":\"Open year-round, day and night according to local arrangements.\"},{\"question\":\"What is the fee to participate in this activity?\",\"answer\":\"Free\"},{\"question\":\"Is this activity accessible to people with reduced mobility?\",\"answer\":\"Some portions adapted for people with reduced mobility.\"},{\"question\":\"What is the best time to enjoy this activity?\",\"answer\":\"Spring and autumn, avoiding summer heat.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]},{\"id\":49,\"featurable\":true,\"type\":\"contact\",\"name\":\"Contact Camping des Pins\",\"image\":\"\",\"credit\":\"\",\"description\":\"\",\"city\":\"\",\"address\":\"213 Passage De Formose - 33780 Soulac-sur-Mer\",\"km\":null,\"min\":null,\"lat\":null,\"lng\":null,\"tags\":[],\"fields\":[{\"label\":\"Title\",\"value\":\"Contact Camping des Pins\"},{\"label\":\"Email Address\",\"value\":\"contact@campingdespins.fr\"},{\"label\":\"Phone Number\",\"value\":\"+33 (0)5 56 09 82 52\"},{\"label\":\"Postal Address\",\"value\":\"213 Passage De Formose - 33780 Soulac-sur-Mer\"},{\"label\":\"Contact Hours\",\"value\":\"Reception hours generally from 9 am to 7 pm, to be confirmed with the campsite\"}],\"link\":\"\",\"event\":\"\",\"faq\":[{\"question\":\"What is the average response time?\",\"answer\":\"Responses are generally quick during reception opening hours.\"},{\"question\":\"What are the different contact methods available?\",\"answer\":\"By phone at +33 (0)5 56 09 82 52 or by email at contact@campingdespins.fr.\"},{\"question\":\"Is there technical support for emergencies?\",\"answer\":\"No specific technical support, the campsite reception handles on-site requests.\"}],\"video_url\":\"\",\"video_embed\":null,\"documents\":[],\"gallery\":[]}];\n    var CATS = {\"villes-aux-alentours\":{\"key\":\"villes-aux-alentours\",\"label\":\"Villes aux alentours\",\"adhoc\":false,\"color\":\"#c2410c\",\"count\":5,\"image\":\"https:\\\/\\\/www.guide-bordeaux-gironde.com\\\/_bibli\\\/articlesPage_rte\\\/195\\\/rte_images\\\/soulac-sur-mer-front-de-mer.jpg\"},\"activites-et-lieux-recommandes\":{\"key\":\"activites-et-lieux-recommandes\",\"label\":\"Activit\\u00e9s et lieux recommand\\u00e9s\",\"adhoc\":false,\"color\":\"#2563eb\",\"count\":7,\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b9057727ce.jpg\"},\"evenements-recommandes\":{\"key\":\"evenements-recommandes\",\"label\":\"\\u00c9v\\u00e9nements recommand\\u00e9s\",\"adhoc\":false,\"color\":\"#15803d\",\"count\":4,\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/image_6a4b5a12aee72.png\"},\"infos-pratiques\":{\"key\":\"infos-pratiques\",\"label\":\"Practical information\",\"adhoc\":true,\"color\":\"#be185d\",\"count\":9,\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/concert-soulac-1.jpg\"},\"infrastructures\":{\"key\":\"infrastructures\",\"label\":\"Infrastructures\",\"adhoc\":false,\"color\":\"#7c3aed\",\"count\":7,\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/soulac-restaurant.jpg\"},\"services\":{\"key\":\"services\",\"label\":\"Services\",\"adhoc\":false,\"color\":\"#0e7490\",\"count\":6,\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/04\\\/soulac-location-velo.jpg\"},\"baignade\":{\"key\":\"baignade\",\"label\":\"Baignade\",\"adhoc\":false,\"color\":\"#b45309\",\"count\":3,\"image\":\"https:\\\/\\\/elaia-public.s3.fr-par.scw.cloud\\\/metadata_images\\\/9b72a1d0-3276-43f3-b8e4-1a5197eecce6.jpg\"},\"activites-foires-marches\":{\"key\":\"activites-foires-marches\",\"label\":\"Activit\\u00e9s, foires & march\\u00e9s\",\"adhoc\":false,\"color\":\"#4d7c0f\",\"count\":8,\"image\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/05\\\/phare-cordouan-gironde.jpg\"},\"contact\":{\"key\":\"contact\",\"label\":\"Contact\",\"adhoc\":false,\"color\":\"#9f1239\",\"count\":1,\"image\":\"\"}};\n    \/\/ Textes d'interface dans la langue de la page (includes\/i18n.php)\n    var T = {\"hero_title\":\"Things to discover nearby\",\"hero_text\":\"Villages, beaches, walks, good addresses and experiences selected around your stay.\",\"around\":\"Around\",\"search_placeholder\":\"Search for a place, an activity, a village\\u2026\",\"search\":\"Search\",\"max_distance\":\"Maximum distance\",\"all\":\"All\",\"prev_categories\":\"Previous categories\",\"next_categories\":\"Next categories\",\"categories\":\"Categories\",\"display\":\"Display\",\"list\":\"List\",\"map\":\"Map\",\"close\":\"Close\",\"featured\":\"Featured\",\"discover\":\"Discover\",\"idea\":\"idea\",\"ideas\":\"ideas\",\"around_you\":\"around you\",\"no_result\":\"No results\",\"no_result_hint\":\"Try another search, category or distance.\",\"pagination\":\"Ideas pagination\",\"prev_page\":\"Previous page\",\"next_page\":\"Next page\",\"ideas_title\":\"Ideas to suit your mood\",\"ideas_sub\":\"Suggestions to plan your perfect stay.\",\"reset_view\":\"Back to the overview\",\"map_hint\":\"Click a marker on the map to show its details here.\",\"official_site\":\"Official website\",\"video\":\"Video\",\"gallery\":\"Gallery\",\"documents\":\"Documents\",\"faq\":\"Frequently asked questions\",\"no_answer\":\"No answer yet.\",\"see_on_maps\":\"View on Google Maps\",\"see_place_on_maps\":\"View the campsite on Google Maps\",\"yes\":\"Yes\",\"no\":\"No\",\"practical_info\":\"Practical information\",\"reviews\":\"reviews\",\"read_more\":\"Read more\",\"prev_review\":\"Previous review\",\"next_review\":\"Next review\",\"prev_item\":\"Previous\",\"next_item\":\"Next\",\"photo_credit\":\"Photo: %s\",\"directions\":\"Directions\",\"read_less\":\"Show less\",\"stars_out_of_5\":\"%s stars out of 5\",\"owner_reply\":\"Response from the owner\",\"customer\":\"Guest\",\"customer_reviews\":\"Guest reviews\",\"rating_label\":\"Rated %1$s out of 5, %2$s reviews \\u2014 see the reviews\",\"reviews_by\":\"Reviews presented by Elaia\",\"powered_by\":\"Powered by\",\"today\":\"Today\",\"today_lc\":\"today\",\"tomorrow\":\"Tomorrow\",\"until\":\"Until %s\",\"from_to\":\"From %1$s to %2$s\",\"registration\":\"Booking required\",\"full\":\"Full\",\"all_animations\":\"See all activities \\u2192\",\"ago_day\":\"%d day ago\",\"ago_days\":\"%d days ago\",\"ago_week\":\"%d week ago\",\"ago_weeks\":\"%d weeks ago\",\"ago_month\":\"%d month ago\",\"ago_months\":\"%d months ago\",\"ago_year\":\"%d year ago\",\"ago_years\":\"%d years ago\",\"anim_unavailable\":\"The programme is temporarily unavailable\",\"anim_eyebrow\":\"Enjoy unforgettable moments\",\"anim_title\":\"Activities & events\",\"anim_hero_text\":\"Find all current activities, this week's highlights and upcoming events during your stay.\",\"anim_sections\":\"Page sections\",\"anim_nav_today\":\"Today\",\"anim_nav_week\":\"This week\",\"anim_nav_upcoming\":\"Upcoming\",\"anim_nav_calendar\":\"Calendar\",\"anim_where\":\"Where?\",\"anim_onsite\":\"On site\",\"anim_nearby\":\"Nearby\",\"anim_no_onsite\":\"No on-site activity at the moment\",\"anim_no_nearby\":\"No nearby event at the moment\",\"anim_all_day\":\"All day\",\"anim_at\":\"at %s\",\"anim_see_detail\":\"see details\",\"anim_live\":\"Ongoing\",\"anim_onsite_spot\":\"On site \\u00b7 %s\",\"anim_badge_until\":\"Until\",\"anim_badge_from\":\"From\",\"anim_badge_today\":\"Today\",\"anim_filter_cat\":\"Filter by category\",\"anim_all_f\":\"All\",\"anim_prev_day\":\"Previous day\",\"anim_next_day\":\"Next day\",\"anim_today_title\":\"Today's activities\",\"anim_tomorrow_title\":\"Tomorrow's activities\",\"anim_day_title\":\"Activities on %s\",\"anim_relax_today\":\"A relaxing day today\",\"anim_nothing_day\":\"Nothing planned that day\",\"anim_next_on\":\"Next event on %s.\",\"anim_soon\":\"The programme will be updated soon.\",\"anim_see_day\":\"See that day\",\"anim_prev_acts\":\"Previous activities\",\"anim_next_acts\":\"Next activities\",\"anim_prev_week\":\"Previous week\",\"anim_next_week\":\"Next week\",\"anim_week_title\":\"This week's highlights\",\"anim_next_week_title\":\"Next week\",\"anim_week_of\":\"Week of %s\",\"anim_week_days\":\"Days of the week\",\"anim_today_paren\":\"(today)\",\"anim_activity\":\"%d activity\",\"anim_activities\":\"%d activities\",\"anim_nothing\":\"nothing planned\",\"anim_pick_day\":\"Select another day to see its programme.\",\"anim_sort\":\"Sort events\",\"anim_sort_date\":\"Sort by date\",\"anim_sort_name\":\"Sort by name\",\"anim_upcoming_title\":\"All upcoming events\",\"anim_no_upcoming\":\"No upcoming events\",\"anim_try_cat\":\"Try another category.\",\"anim_more\":\"See more events (%d)\",\"anim_hide_cal\":\"Hide the calendar\",\"anim_show_cal\":\"See the full calendar\",\"anim_cal_title\":\"Monthly calendar\",\"anim_cal_sub\":\"All of the month's events at a glance.\",\"anim_prev_month\":\"Previous month\",\"anim_next_month\":\"Next month\",\"anim_more_info\":\"More information\",\"anim_new_tab\":\"(new tab)\",\"date_locale\":\"en-GB\",\"page_faq\":\"FAQ\",\"page_metadatas\":\"Discover around you\",\"page_animations\":\"Activities and events\",\"page_corpus\":\"Practical information\",\"anim_event\":\"Event\"};\n    var DECIMAL = \".\";\n    function plural(n) { return n + ' ' + (n > 1 ? T.ideas : T.idea); }\n    var MAP = {\"tiles_url\":\"https:\\\/\\\/tile.openstreetmap.org\\\/{z}\\\/{x}\\\/{y}.png\",\"attribution\":\"&copy; <a href=\\\"https:\\\/\\\/www.openstreetmap.org\\\/copyright\\\">OpenStreetMap<\\\/a>\",\"home\":null};\n    var ACCENT = \"#2e5e45\";\n    var STEP = 12;\n    var BY_ID = {};\n    ITEMS.forEach(function(it) {\n      BY_ID[it.id] = it;\n    });\n\n    var app = document.getElementById('mv-app');\n    if (!app) return;\n\n    var state = { selected: null, page: 1, q: '', km: 0, cat: 'all', limit: STEP, view: window.matchMedia('(max-width: 1100px)').matches ? 'list' : 'map' };\n\n    \/\/ \u2550\u2550\u2550 Ic\u00f4nes (SVG statiques) + ic\u00f4ne d\u00e9duite de la cat\u00e9gorie \u2550\u2550\u2550\n    var ICONS = {\n      grid: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"4\" y=\"4\" width=\"6\" height=\"6\" rx=\"1\"\/><rect x=\"14\" y=\"4\" width=\"6\" height=\"6\" rx=\"1\"\/><rect x=\"4\" y=\"14\" width=\"6\" height=\"6\" rx=\"1\"\/><rect x=\"14\" y=\"14\" width=\"6\" height=\"6\" rx=\"1\"\/><\/svg>',\n      home: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"><path d=\"M3 11l9-7 9 7\"\/><path d=\"M5 10v10h14V10\"\/><path d=\"M10 20v-6h4v6\"\/><\/svg>',\n      beach: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M12 3a9 9 0 0 1 9 9H3a9 9 0 0 1 9-9z\"\/><path d=\"M12 12v9M8 21h8\"\/><\/svg>',\n      leaf: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 19c0-8 5-14 15-14 0 10-6 15-14 15\"\/><path d=\"M5 19l7-7\"\/><\/svg>',\n      family: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"8\" cy=\"6\" r=\"2.5\"\/><circle cx=\"16\" cy=\"6\" r=\"2.5\"\/><path d=\"M4 21v-6a4 4 0 0 1 8 0v6M12 21v-6a4 4 0 0 1 8 0v6\"\/><\/svg>',\n      food: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M7 3v8a2 2 0 0 0 4 0V3M9 11v10M17 3c-2 0-3 2-3 5s1 4 3 4v9\"\/><\/svg>',\n      shop: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"><path d=\"M4 9l1.5-5h13L20 9\"\/><path d=\"M4 9h16v2a3 3 0 0 1-6 0 3 3 0 0 1-4 0 3 3 0 0 1-6 0z\"\/><path d=\"M5 13v7h14v-7\"\/><\/svg>',\n      calendar: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"16\" rx=\"2\"\/><path d=\"M16 3v4M8 3v4M3 10h18\"\/><\/svg>',\n      wine: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M8 3h8l-.5 6a3.5 3.5 0 0 1-7 0z\"\/><path d=\"M12 13v8M8 21h8\"\/><\/svg>',\n      walk: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"13\" cy=\"4\" r=\"2\"\/><path d=\"M9 21l3-7 3 3v5M8 12l2-4 4 1 3 3\"\/><\/svg>',\n      bed: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M3 18V7M3 14h18v4M21 14v-3a3 3 0 0 0-3-3h-7v6\"\/><circle cx=\"7\" cy=\"11\" r=\"2\"\/><\/svg>',\n      pool: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M2 17c2 0 2-1.5 4-1.5S8 17 10 17s2-1.5 4-1.5 2 1.5 4 1.5 2-1.5 4-1.5M8 14V5a2 2 0 0 1 4 0M14 14V5a2 2 0 0 1 4 0M8 9h6\"\/><\/svg>',\n      info: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 11v6M12 7.5v.5\"\/><\/svg>',\n      pin: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 21s-7-6.2-7-11.5a7 7 0 0 1 14 0C19 14.8 12 21 12 21z\"\/><circle cx=\"12\" cy=\"9.5\" r=\"2.5\"\/><\/svg>',\n      car: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 17h14M5 17v2M19 17v2M4 13l2-6h12l2 6v4H4z\"\/><circle cx=\"8\" cy=\"14.5\" r=\"0.5\"\/><circle cx=\"16\" cy=\"14.5\" r=\"0.5\"\/><\/svg>',\n      clock: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 2\"\/><\/svg>',\n      star: '<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 3l2.8 5.7 6.2.9-4.5 4.4 1.1 6.2L12 17.3 6.4 20.2l1.1-6.2L3 9.6l6.2-.9z\"\/><\/svg>',\n      arrow: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>',\n      home: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3L3 19h18L12 3z\"\/><path d=\"M12 3v16M9 19l3-6 3 6\"\/><\/svg>',\n      reset: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 9V4h5M20 15v5h-5M4 4l6 6M20 20l-6-6M15 4h5v5M9 20H4v-5\"\/><\/svg>',\n      maps: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 4L3 6v14l6-2 6 2 6-2V4l-6 2-6-2z\"\/><path d=\"M9 4v14M15 6v14\"\/><\/svg>',\n      doc: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linejoin=\"round\"><path d=\"M6 3h8l4 4v14H6z\"\/><path d=\"M14 3v4h4\"\/><\/svg>'\n    };\n\n    var ICON_RULES = [\n      [\/ville|village|city|alentour\/, 'home'],\n      [\/plage|beach|mer\\b\/, 'beach'],\n      [\/nature|balade|rando|parc|jardin\/, 'leaf'],\n      [\/famil|enfant|kid\/, 'family'],\n      [\/restau|gastro|repas|snack|bar\\b\/, 'food'],\n      [\/march|boutique|commerce|shop\/, 'shop'],\n      [\/evenement|\u00e9v\u00e9nement|event|agenda|atelier|animation\/, 'calendar'],\n      [\/vin|boisson|cave|terroir|bodega\/, 'wine'],\n      [\/activit|sport|loisir|lieu\/, 'walk'],\n      [\/heberg|locatif|accom|mobil\/, 'bed'],\n      [\/piscine|pool|aqua|pataug\/, 'pool'],\n      [\/service|equipement|\u00e9quipement|info\/, 'info']\n    ];\n\n    function catIcon(key) {\n      var c = CATS[key];\n      var hay = (key + ' ' + (c ? c.label : '')).toLowerCase();\n      for (var i = 0; i < ICON_RULES.length; i++) {\n        if (ICON_RULES[i][0].test(hay)) return ICON_RULES[i][1];\n      }\n      return 'pin';\n    }\n\n    function el(tag, cls, text) {\n      var n = document.createElement(tag);\n      if (cls) n.className = cls;\n      if (text != null) n.textContent = text;\n      return n;\n    }\n\n    function icon(name) {\n      var s = el('span', 'mv-icon');\n      s.setAttribute('aria-hidden', 'true');\n      s.innerHTML = ICONS[name] || ICONS.pin;\n      return s;\n    }\n\n    function catColor(key) {\n      return CATS[key] ? CATS[key].color : ACCENT;\n    }\n\n    function norm(s) {\n      return (s || '').toLowerCase().normalize('NFD').replace(\/[\u0300-\u036f]\/g, '');\n    }\n\n    \/\/ \u2550\u2550\u2550 Filtrage \u2550\u2550\u2550\n    function filtered() {\n      var q = norm(state.q.trim());\n      return ITEMS.filter(function(it) {\n        if (state.cat !== 'all' && it.type !== state.cat) return false;\n        \/\/ Distance : seules les fiches qui ont une distance connue sont filtr\u00e9es\n        if (state.km && it.km !== null && it.km > state.km) return false;\n        if (q) {\n          var hay = norm([it.name, it.city, it.description, (CATS[it.type] || {}).label, it.tags.join(' ')].join(' '));\n          if (hay.indexOf(q) === -1) return false;\n        }\n        return true;\n      });\n    }\n\n    \/\/ \u2550\u2550\u2550 Cat\u00e9gories \u2550\u2550\u2550\n    function renderCats() {\n      var box = document.getElementById('mv-cats');\n      box.innerHTML = '';\n      var all = el('button', 'mv-cat' + (state.cat === 'all' ? ' is-active' : ''));\n      all.type = 'button';\n      all.appendChild(icon('grid'));\n      all.appendChild(document.createTextNode(T.all));\n      all.addEventListener('click', function() {\n        setCat('all');\n      });\n      box.appendChild(all);\n      Object.keys(CATS).forEach(function(key) {\n        var b = el('button', 'mv-cat' + (state.cat === key ? ' is-active' : ''));\n        b.type = 'button';\n        b.style.setProperty('--mv-cat', catColor(key));\n        b.appendChild(icon(catIcon(key)));\n        b.appendChild(document.createTextNode(CATS[key].label));\n        b.addEventListener('click', function() {\n          setCat(key);\n        });\n        box.appendChild(b);\n      });\n      updateCatArrows();\n      var active = box.querySelector('.is-active');\n      if (active && active.scrollIntoView && active.offsetLeft + active.offsetWidth > box.scrollLeft + box.clientWidth) {\n        box.scrollLeft = active.offsetLeft - 80;\n      }\n    }\n\n    \/\/ Fl\u00e8ches de la ligne de cat\u00e9gories (visibles seulement s'il reste \u00e0 d\u00e9filer)\n    var catsWrap = document.getElementById('mv-cats-wrap');\n    var catsRow = document.getElementById('mv-cats');\n\n    function updateCatArrows() {\n      var max = catsRow.scrollWidth - catsRow.clientWidth;\n      catsWrap.classList.toggle('can-left', catsRow.scrollLeft > 4);\n      catsWrap.classList.toggle('can-right', catsRow.scrollLeft < max - 4);\n    }\n    catsRow.addEventListener('scroll', updateCatArrows, { passive: true });\n    window.addEventListener('resize', updateCatArrows);\n    catsWrap.querySelector('.mv-cats-arrow--left').addEventListener('click', function() {\n      catsRow.scrollBy({ left: -catsRow.clientWidth * 0.7, behavior: 'smooth' });\n    });\n    catsWrap.querySelector('.mv-cats-arrow--right').addEventListener('click', function() {\n      catsRow.scrollBy({ left: catsRow.clientWidth * 0.7, behavior: 'smooth' });\n    });\n\n    function setCat(key) {\n      state.cat = key;\n      state.limit = STEP;\n      state.page = 1;\n      renderCats();\n      renderList();\n    }\n\n    \/\/ \u2550\u2550\u2550 Cartes \u2550\u2550\u2550\n    function picture(it) {\n      if (!it.image) {\n        var ph = el('div', 'mv-card-noimg');\n        ph.appendChild(icon(catIcon(it.type)));\n        return ph;\n      }\n      var img = el('img');\n      img.src = it.image;\n      img.alt = it.name;\n      img.loading = 'lazy';\n      img.onerror = function() {\n        img.replaceWith(picture({ type: it.type, image: '' }));\n      };\n      return img;\n    }\n\n    function metaLine(it) {\n      var m = el('p', 'mv-meta');\n      if (it.km !== null) {\n        var a = el('span');\n        a.appendChild(icon('car'));\n        a.appendChild(document.createTextNode(String(it.km).replace('.', DECIMAL) + ' km'));\n        m.appendChild(a);\n      }\n      if (it.min !== null) {\n        var b = el('span');\n        b.appendChild(icon('clock'));\n        b.appendChild(document.createTextNode(it.min + ' min'));\n        m.appendChild(b);\n      }\n      if (it.km === null && it.min === null && it.city) {\n        var c = el('span');\n        c.appendChild(icon('pin'));\n        c.appendChild(document.createTextNode(it.city));\n        m.appendChild(c);\n      }\n      return m.childNodes.length ? m : null;\n    }\n\n    function card(it, featured, mini) {\n      var c = el('article', 'mv-card' + (featured ? ' mv-card--featured' : '') + (mini ? ' mv-card--mini' : ''));\n      c.tabIndex = 0;\n      c.dataset.id = it.id;\n      c.style.setProperty('--mv-cat', catColor(it.type));\n\n      var media = el('div', 'mv-card-media');\n      media.appendChild(picture(it));\n      if (!featured && !mini && CATS[it.type]) media.appendChild(el('span', 'mv-pill', CATS[it.type].label));\n      \/\/ Les mini-cartes aussi : la photo y est petite, mais c'est la m\u00eame photo,\n      \/\/ et la licence ne pr\u00e9voit pas d'exception de taille.\n      if (it.credit) {\n        var cr = el('span', 'mv-credit', '\u00a9');\n        cr.title = 'Photo : ' + it.credit;\n        cr.setAttribute('aria-label', 'Photo : ' + it.credit);\n        cr.setAttribute('data-credit', 'Photo : ' + it.credit);\n        media.appendChild(cr);\n      }\n      c.appendChild(media);\n\n      var body = el('div', 'mv-card-body');\n      if (featured) {\n        var flag = el('span', 'mv-flag');\n        flag.appendChild(icon('star'));\n        flag.appendChild(document.createTextNode(T.featured));\n        body.appendChild(flag);\n      }\n      if (mini && CATS[it.type]) body.appendChild(el('span', 'mv-pill', CATS[it.type].label));\n      body.appendChild(el('h3', 'mv-card-title', it.name));\n      var meta = metaLine(it);\n      if (meta) body.appendChild(meta);\n      if (it.description) body.appendChild(el('p', 'mv-card-desc', it.description));\n      if (!featured && !mini && it.tags.length) {\n        var tags = el('div', 'mv-tags');\n        it.tags.forEach(function(t) {\n          tags.appendChild(el('span', 'mv-tag', t));\n        });\n        body.appendChild(tags);\n      }\n      var foot = el('div', 'mv-card-foot');\n      var btn = el('button', 'mv-discover', T.discover);\n      btn.type = 'button';\n      btn.appendChild(icon('arrow'));\n      foot.appendChild(btn);\n      body.appendChild(foot);\n      c.appendChild(body);\n\n      c.addEventListener('click', function() {\n        openModal(it);\n      });\n      c.addEventListener('keydown', function(e) {\n        if (e.key === 'Enter') openModal(it);\n      });\n      if (mini) return c;\n      c.addEventListener('mouseenter', function() {\n        highlightPin(it.id, true);\n      });\n      c.addEventListener('mouseleave', function() {\n        highlightPin(it.id, false);\n      });\n      return c;\n    }\n\n    function renderList() {\n      var list = filtered();\n      var grid = document.getElementById('mv-grid');\n      var more = document.getElementById('mv-more');\n      grid.innerHTML = '';\n      more.innerHTML = '';\n\n      var count = document.getElementById('mv-count');\n      count.innerHTML = '';\n      count.appendChild(el('strong', null, plural(list.length)));\n      count.appendChild(document.createTextNode(' ' + T.around_you));\n\n      if (!list.length) {\n        var empty = el('div', 'mv-empty');\n        empty.appendChild(el('strong', null, T.no_result));\n        empty.appendChild(document.createTextNode(T.no_result_hint));\n        grid.appendChild(empty);\n      }\n\n      \/\/ Pagination : 4 rang\u00e9es pleines par page, selon le nombre de colonnes affich\u00e9es.\n      \/\/ La fiche \u00ab \u00c0 la une \u00bb occupe 2 cases : la 1re page a donc une fiche de moins.\n      var cols = gridColumns();\n      var perPage = cols === 1 ? 8 : cols * 4;\n      var featuredOn = !state.q && list.length > 2 && !!list[0].image && !!list[0].featurable && cols > 1;\n      var first = featuredOn ? perPage - 1 : perPage;\n      var pages = list.length <= first ? 1 : 1 + Math.ceil((list.length - first) \/ perPage);\n      if (state.page > pages) state.page = pages;\n      var start = state.page === 1 ? 0 : first + (state.page - 2) * perPage;\n      var end = state.page === 1 ? first : start + perPage;\n\n      list.slice(start, end).forEach(function(it, i) {\n        grid.appendChild(card(it, featuredOn && state.page === 1 && i === 0));\n      });\n\n      if (pages > 1) renderPager(more, pages);\n\n      updateMap(list);\n    }\n\n    \/**\n     * Remonte au bloc demand\u00e9, sous l'en-t\u00eate fixe du th\u00e8me. Apr\u00e8s le rendu\n     * (image suivante) : la liste vient de changer de hauteur \u2014 28 pages qui\n     * deviennent une \u2014 et une position calcul\u00e9e avant tombait trop haut ou\n     * trop bas selon la cat\u00e9gorie cliqu\u00e9e.\n     *\/\n    var appRoot = document.getElementById('mv-app');\n    if (appRoot) appRoot.style.overflowAnchor = 'none';\n\n    function scrollToBlock(id) {\n      requestAnimationFrame(function() {\n        var target = document.getElementById(id);\n        if (!target) return;\n        var top = target.getBoundingClientRect().top + window.pageYOffset - headerOffset() - 16;\n        window.scrollTo({ top: Math.max(0, top), behavior: 'smooth' });\n      });\n    }\n\n    \/** Nombre de colonnes de la grille (d\u00e9pend de la largeur disponible) *\/\n    function gridColumns() {\n      var g = document.getElementById('mv-grid');\n      var n = g ? getComputedStyle(g).gridTemplateColumns.split(' ').filter(Boolean).length : 3;\n      return Math.max(1, n || 3);\n    }\n\n    function renderPager(box, pages) {\n      box.setAttribute('role', 'navigation');\n      box.setAttribute('aria-label', T.pagination);\n      var go = function(n) {\n        state.page = n;\n        try {\n          renderList();\n        } finally {\n          scrollToBlock('mv-count');\n        }\n      };\n      var btn = function(label, n, opts) {\n        var b = el('button', 'mv-page', label);\n        b.type = 'button';\n        if (opts.aria) b.setAttribute('aria-label', opts.aria);\n        if (opts.current) b.setAttribute('aria-current', 'page');\n        b.disabled = !!opts.disabled;\n        b.addEventListener('click', function() {\n          if (!opts.current) go(n);\n        });\n        box.appendChild(b);\n      };\n      btn('\u2039', state.page - 1, { disabled: state.page === 1, aria: T.prev_page });\n      var last = 0;\n      for (var p = 1; p <= pages; p++) {\n        if (p === 1 || p === pages || Math.abs(p - state.page) <= 1) {\n          if (p - last > 1) box.appendChild(el('span', 'mv-page-gap', '\u2026'));\n          btn(String(p), p, { current: p === state.page, aria: 'Page ' + p });\n          last = p;\n        }\n      }\n      btn('\u203a', state.page + 1, { disabled: state.page === pages, aria: T.next_page });\n    }\n\n    \/\/ \u2550\u2550\u2550 Id\u00e9es selon vos envies (cat\u00e9gories les plus fournies) \u2550\u2550\u2550\n    function renderIdeas() {\n      var sec = document.getElementById('mv-ideas');\n      \/\/ Les fiches sans gabarit (\u00ab Infos pratiques \u00bb) ne sont pas une envie.\n      var keys = Object.keys(CATS).filter(function(k) { return !CATS[k].adhoc; }).sort(function(a, b) {\n        return (CATS[b].image ? 1 : 0) - (CATS[a].image ? 1 : 0) || CATS[b].count - CATS[a].count;\n      }).slice(0, 4);\n      if (keys.length < 2) return;\n\n      var head = el('div', 'mv-ideas-head');\n      var h = el('h2', 'mv-ideas-title', T.ideas_title);\n      h.id = 'mv-ideas-title';\n      head.appendChild(h);\n      head.appendChild(el('p', 'mv-ideas-sub', T.ideas_sub));\n      sec.appendChild(head);\n\n      var grid = el('div', 'mv-ideas-grid');\n      keys.forEach(function(key) {\n        var c = CATS[key];\n        var b = el('button', 'mv-idea');\n        b.type = 'button';\n        b.style.setProperty('--mv-cat', c.color);\n        var img = el('span', 'mv-idea-img');\n        if (c.image) img.style.backgroundImage = 'url(\"' + c.image.replace(\/\"\/g, '%22') + '\")';\n        b.appendChild(img);\n        var body = el('span', 'mv-idea-body');\n        body.appendChild(icon(catIcon(key)));\n        var txt = el('span', 'mv-idea-text');\n        txt.appendChild(el('strong', null, c.label));\n        txt.appendChild(el('span', null, plural(c.count)));\n        body.appendChild(txt);\n        body.appendChild(icon('arrow'));\n        b.appendChild(body);\n        b.addEventListener('click', function() {\n          try {\n            setCat(key);\n          } finally {\n            scrollToBlock('mv-cats');\n          }\n        });\n        grid.appendChild(b);\n      });\n      sec.appendChild(grid);\n    }\n\n    \/\/ \u2550\u2550\u2550 Carte Leaflet \u2550\u2550\u2550\n    var map = null,\n      layer = null,\n      homeMarker = null,\n      radius = null,\n      resetBtn = null,\n      fitting = false, \/\/ cadrage lanc\u00e9 par le code (et non par l'utilisateur)\n      overview = null, \/\/ dernier cadrage \u00ab vue d'ensemble \u00bb\n      pins = {};\n\n    \/\/ Copie de Leaflet utilis\u00e9e pour TOUTE la carte. Sur certains sites (th\u00e8me qui\n    \/\/ d\u00e9place les scripts avec jQuery, WP Rocket\u2026) Leaflet s'ex\u00e9cute deux fois : la\n    \/\/ 2e copie \u00e9crase window.L alors que markercluster s'est attach\u00e9 \u00e0 la 1re.\n    \/\/ M\u00e9langer les deux copies rend les rep\u00e8res invisibles et casse le regroupement.\n    var Lf = null;\n\n    function resolveLeaflet() {\n      var cur = window.L;\n      if (!cur) return null;\n      if (typeof cur.markerClusterGroup === 'function' && typeof cur.MarkerClusterGroup === 'function') return cur;\n      if (typeof cur.noConflict === 'function') {\n        var current = cur.noConflict(); \/\/ window.L \u2190 copie pr\u00e9c\u00e9dente\n        var previous = window.L;\n        if (previous && previous !== current && typeof previous.MarkerClusterGroup === 'function') {\n          \/\/ markercluster lit window.L \u00e0 chaque action (clic, zoom) : on remet\n          \/\/ durablement la copie qui le porte (l'autre n'est qu'un doublon de la m\u00eame version).\n          \/\/ Sans \u00e7a, les identifiants internes des deux copies se m\u00e9langent et les\n          \/\/ clics sur les rep\u00e8res \/ groupes sont perdus.\n          window.L = previous;\n          return previous;\n        }\n        window.L = current;\n      }\n      return null;\n    }\n\n    function pinIcon(color, hover, selected) {\n      return Lf.divIcon({\n        className: 'mv-pin' + (hover ? ' is-hover' : '') + (selected ? ' is-selected' : ''),\n        html: '<svg width=\"30\" height=\"39\" viewBox=\"0 0 28 36\"><path d=\"M14 35C14 35 26 22.5 26 13.5A12 12 0 0 0 2 13.5C2 22.5 14 35 14 35Z\" fill=\"' + color + '\" stroke=\"#fff\" stroke-width=\"2\"\/><circle cx=\"14\" cy=\"13.5\" r=\"4.5\" fill=\"#fff\"\/><\/svg>',\n        iconSize: [30, 39],\n        iconAnchor: [15, 39],\n        popupAnchor: [0, -34]\n      });\n    }\n\n    var mapTries = 0;\n\n    function initMap() {\n      var elMap = document.getElementById('mv-map');\n      if (!elMap) return;\n      \/\/ Attend Leaflet + markercluster (scripts parfois diff\u00e9r\u00e9s), 8 s max ;\n      \/\/ au-del\u00e0, carte sans regroupement plut\u00f4t que pas de carte.\n      Lf = resolveLeaflet();\n      if (!Lf) {\n        if (++mapTries < 80) return setTimeout(initMap, 100);\n        if (!window.L) return;\n        Lf = window.L;\n      }\n      map = Lf.map(elMap, { zoomControl: false, scrollWheelZoom: false, attributionControl: false }).setView([46.6, 1.9], 6);\n      \/\/ Garde-fou : si le th\u00e8me r\u00e9ex\u00e9cute Leaflet plus tard, on remet la bonne copie\n      \/\/ juste avant toute interaction (markercluster lit window.L au moment du clic).\n      ['pointerdown', 'mousedown', 'touchstart', 'click', 'wheel'].forEach(function(t) {\n        elMap.addEventListener(t, function() {\n          if (window.L !== Lf) window.L = Lf;\n        }, true);\n      });\n      Lf.tileLayer(MAP.tiles_url, { maxZoom: 19 }).addTo(map);\n      Lf.control.zoom({ position: 'bottomright' }).addTo(map);\n      Lf.control.attribution({ position: 'bottomleft', prefix: false }).addAttribution(MAP.attribution).addTo(map);\n\n      \/\/ \u00ab Revenir \u00e0 la vue d'ensemble \u00bb : appara\u00eet d\u00e8s que l'utilisateur zoome \/ d\u00e9place la carte\n      resetBtn = el('button', 'mv-reset');\n      resetBtn.type = 'button';\n      resetBtn.hidden = true;\n      resetBtn.appendChild(icon('reset'));\n      resetBtn.appendChild(document.createTextNode(T.reset_view));\n      resetBtn.addEventListener('click', function() {\n        fitOverview();\n        resetBtn.hidden = true;\n      });\n      elMap.appendChild(resetBtn);\n      Lf.DomEvent.disableClickPropagation(resetBtn);\n      map.on('zoomstart movestart', function() {\n        if (!fitting && resetBtn) resetBtn.hidden = false;\n      });\n\n      \/\/ Rep\u00e8re de l'\u00e9tablissement, toujours visible (hors regroupement)\n      if (MAP.home) {\n        homeMarker = Lf.marker([MAP.home.lat, MAP.home.lng], {\n          icon: Lf.divIcon({ className: 'mv-home', html: '<span class=\"mv-home-pin\">' + ICONS.home + '<\/span>', iconSize: [44, 44], iconAnchor: [22, 22] }),\n          \/\/ Sous les rep\u00e8res et groupes : les fiches situ\u00e9es \u00e0 l'\u00e9tablissement m\u00eame\n          \/\/ (souvent nombreuses) restent visibles et cliquables par-dessus.\n          zIndexOffset: -1000,\n          keyboard: false,\n          interactive: false,\n          title: MAP.home.label\n        }).addTo(map);\n        homeMarker.bindTooltip(MAP.home.label, { permanent: true, direction: 'right', offset: [24, 0], className: 'mv-home-label' });\n      }\n\n      layer = (typeof Lf.markerClusterGroup === 'function') ? Lf.markerClusterGroup({\n        showCoverageOnHover: false,\n        maxClusterRadius: 45,\n        iconCreateFunction: function(cl) {\n          var n = cl.getChildCount();\n          var s = n < 10 ? 34 : (n < 50 ? 40 : 46);\n          return Lf.divIcon({ className: 'mv-cluster', html: '<span style=\"width:' + s + 'px;height:' + s + 'px;background:' + ACCENT + '\">' + n + '<\/span>', iconSize: [s, s] });\n        }\n      }) : Lf.layerGroup();\n      layer.addTo(map);\n      renderList();\n    }\n\n    \/**\n     * Met la carte \u00e0 jour sans jamais bloquer la page. Le th\u00e8me (ou WP Rocket)\n     * peut r\u00e9ex\u00e9cuter Leaflet apr\u00e8s coup : markercluster lit alors la mauvaise\n     * copie (\u00ab L.DistanceGrid is not a constructor \u00bb) au moment o\u00f9 la LISTE met\n     * la carte \u00e0 jour. On remet la bonne copie avant, et une erreur de carte\n     * n'emp\u00eache plus la liste ni le d\u00e9filement qui suivent.\n     *\/\n    function updateMap(list) {\n      if (!map || !layer) return;\n      if (Lf && window.L !== Lf) window.L = Lf;\n      try {\n        drawMap(list);\n      } catch (e) {\n        if (window.console) console.warn('Elaia \u2014 carte non mise \u00e0 jour :', e);\n      }\n    }\n\n    function drawMap(list) {\n      layer.clearLayers();\n      pins = {};\n      var bounds = [];\n      var markers = [];\n      list.forEach(function(it) {\n        if (it.lat === null) return;\n        var m = Lf.marker([it.lat, it.lng], { icon: pinIcon(catColor(it.type), false, it.id === state.selected), title: it.name });\n        m.on('click', function() {\n          selectItem(it.id);\n        });\n        markers.push(m);\n        pins[it.id] = m;\n        bounds.push([it.lat, it.lng]);\n      });\n      \/\/ Ajout group\u00e9 : un seul recalcul des regroupements (plus fiable que addLayer un par un)\n      if (typeof layer.addLayers === 'function') layer.addLayers(markers);\n      else markers.forEach(function(m) {\n        layer.addLayer(m);\n      });\n\n      \/\/ Rayon du filtre de distance autour de l'\u00e9tablissement\n      if (radius) {\n        map.removeLayer(radius);\n        radius = null;\n      }\n      if (MAP.home) {\n        bounds.push([MAP.home.lat, MAP.home.lng]);\n        if (state.km) {\n          radius = Lf.circle([MAP.home.lat, MAP.home.lng], {\n            radius: state.km * 1000,\n            color: ACCENT,\n            weight: 1.5,\n            dashArray: '6 6',\n            fillColor: ACCENT,\n            fillOpacity: 0.06,\n            interactive: false\n          }).addTo(map);\n        }\n      }\n\n      if (state.selected !== null && !pins[state.selected]) state.selected = null;\n      renderPreview();\n      overview = radius ? { bounds: radius.getBounds(), padding: [20, 20] } :\n        (bounds.length > 1 ? { bounds: bounds, padding: [40, 40] } :\n          (bounds.length === 1 ? { center: bounds[0] } : null));\n      fitOverview();\n      if (resetBtn) resetBtn.hidden = true;\n      setTimeout(function() {\n        map.invalidateSize();\n      }, 50);\n    }\n\n    \/** Cadre la carte sur la vue d'ensemble, sans afficher le bouton \u00ab Revenir\u2026 \u00bb *\/\n    function fitOverview() {\n      if (!map || !overview) return;\n      fitting = true;\n      if (overview.center) map.setView(overview.center, 13, { animate: false });\n      else map.fitBounds(overview.bounds, { padding: overview.padding, maxZoom: 13, animate: false });\n      setTimeout(function() {\n        fitting = false;\n      }, 50);\n    }\n\n    function highlightPin(id, on) {\n      var m = pins[id];\n      if (!m) return;\n      var it = BY_ID[id];\n      var selected = id === state.selected;\n      m.setIcon(pinIcon(catColor(it.type), on, selected));\n      m.setZIndexOffset(on || selected ? 1000 : 0);\n    }\n\n    \/** S\u00e9lectionne une fiche depuis la carte : rep\u00e8re mis en avant + fiche sous la carte *\/\n    function selectItem(id) {\n      var prev = state.selected;\n      state.selected = id;\n      if (prev !== null) highlightPin(prev, false);\n      highlightPin(id, false);\n      renderPreview();\n    }\n\n    function renderPreview() {\n      var box = document.getElementById('mv-preview');\n      if (!box) return;\n      box.innerHTML = '';\n      var it = state.selected !== null ? BY_ID[state.selected] : null;\n      if (!it) {\n        var hint = el('div', 'mv-preview-hint');\n        hint.appendChild(icon('pin'));\n        hint.appendChild(document.createTextNode(T.map_hint));\n        box.appendChild(hint);\n        return;\n      }\n      box.appendChild(card(it, false, true));\n    }\n\n    \/\/ \u2550\u2550\u2550 Modal \u2550\u2550\u2550\n    var modal = document.getElementById('mv-modal');\n    if (modal.parentNode !== document.body) document.body.appendChild(modal);\n    var content = document.getElementById('mv-modal-content');\n    content.style.setProperty('--mv-accent', ACCENT);\n    content.style.setProperty('--mv-accent-soft', ACCENT + '1a');\n    content.style.setProperty('--mv-cream', '#faf7f2');\n    content.style.setProperty('--mv-line', '#ebe5da');\n    content.style.setProperty('--mv-muted', '#6b6559');\n    var lastFocus = null;\n\n    function openModal(it) {\n      lastFocus = document.activeElement;\n      content.innerHTML = '';\n      content.style.setProperty('--mv-cat', catColor(it.type));\n\n      \/\/ Deux colonnes d\u00e8s le haut : m\u00e9dias \/ actions \u00e0 gauche, texte \u00e0 droite\n      var body = el('div', 'mv-modal-body');\n      var cols = el('div', 'mv-modal-cols');\n      var side = el('div', 'mv-modal-col mv-modal-col--media');\n      var main = el('div', 'mv-modal-col');\n      cols.appendChild(side);\n      cols.appendChild(main);\n      body.appendChild(cols);\n      var mainBody = body;\n\n      if (it.image) {\n        var img = el('img', 'mv-modal-img');\n        img.src = it.image;\n        img.alt = it.name;\n        img.onerror = function() {\n          img.remove();\n          if (cap) cap.remove();\n        };\n        side.appendChild(img);\n        var cap = null;\n        if (it.credit) {\n          cap = el('p', 'mv-modal-credit', 'Photo : ' + it.credit);\n          side.appendChild(cap);\n        }\n      }\n\n      body = main;\n      if (CATS[it.type]) {\n        var pill = el('span', 'mv-pill', CATS[it.type].label);\n        pill.style.alignSelf = 'flex-start';\n        body.appendChild(pill);\n      }\n      var t = el('h2', 'mv-modal-title', it.name);\n      t.id = 'mv-modal-title';\n      body.appendChild(t);\n      var meta = metaLine(it);\n      if (meta) body.appendChild(meta);\n      if (it.event) {\n        var ev = el('span', 'mv-modal-event');\n        ev.appendChild(icon('calendar'));\n        ev.appendChild(document.createTextNode(it.event));\n        body.appendChild(ev);\n      }\n      if (it.description) body.appendChild(el('p', 'mv-modal-desc', it.description));\n\n      if (it.fields.length) {\n        var f = el('div', 'mv-fields');\n        it.fields.forEach(function(fd) {\n          var d = el('div', 'mv-field');\n          d.appendChild(el('span', null, fd.label));\n          d.appendChild(el('strong', null, fd.value));\n          f.appendChild(d);\n        });\n        body.appendChild(f);\n      }\n\n      \/\/ Colonne m\u00e9dias (gauche)\n      body = side;\n      var actions = el('div', 'mv-modal-actions');\n      \/\/ Google Maps seulement si on sait o\u00f9 se trouve la fiche (sinon lien trompeur)\n      var gmTarget = mapsTarget(it);\n      if (gmTarget) {\n        var gm = el('a', 'mv-btn', gmTarget.label);\n        gm.href = gmTarget.url;\n        gm.target = '_blank';\n        gm.rel = 'noopener';\n        gm.insertBefore(icon('maps'), gm.firstChild);\n        actions.appendChild(gm);\n      }\n      if (it.link) {\n        var l = el('a', 'mv-btn mv-btn--ghost', T.official_site);\n        l.href = it.link;\n        l.target = '_blank';\n        l.rel = 'noopener';\n        l.appendChild(icon('arrow'));\n        actions.appendChild(l);\n      }\n      body.appendChild(actions);\n\n      if (it.video_url) {\n        body.appendChild(el('p', 'mv-modal-sub', T.video));\n        var e = it.video_embed;\n        if (e && (e.type === 'youtube' || e.type === 'vimeo') && e.src) {\n          var v = el('div', 'mv-video');\n          var fr = el('iframe');\n          fr.src = e.src;\n          fr.allowFullscreen = true;\n          fr.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');\n          fr.referrerPolicy = 'strict-origin-when-cross-origin';\n          v.appendChild(fr);\n          body.appendChild(v);\n        } else if (e && e.type === 'file' && e.src) {\n          var vw = el('div', 'mv-video');\n          var vid = el('video');\n          vid.src = e.src;\n          vid.controls = true;\n          vid.preload = 'metadata';\n          vw.appendChild(vid);\n          body.appendChild(vw);\n        } else {\n          var vl = el('a', null, it.video_url);\n          vl.href = it.video_url;\n          vl.target = '_blank';\n          vl.rel = 'noopener';\n          body.appendChild(vl);\n        }\n      }\n\n      if (it.gallery.length) {\n        body.appendChild(el('p', 'mv-modal-sub', T.gallery));\n        var g = el('div', 'mv-gallery');\n        it.gallery.forEach(function(src) {\n          var a = el('a');\n          a.href = src;\n          a.target = '_blank';\n          a.rel = 'noopener';\n          var gi = el('img');\n          gi.src = src;\n          gi.alt = '';\n          gi.loading = 'lazy';\n          a.appendChild(gi);\n          g.appendChild(a);\n        });\n        body.appendChild(g);\n      }\n\n      var docs = it.documents.filter(function(d) {\n        return d && d.url;\n      });\n      if (docs.length) {\n        body.appendChild(el('p', 'mv-modal-sub', T.documents));\n        var dl = el('div', 'mv-docs');\n        docs.forEach(function(d) {\n          var a = el('a');\n          a.href = d.url;\n          a.target = '_blank';\n          a.rel = 'noopener';\n          a.appendChild(icon('doc'));\n          a.appendChild(document.createTextNode(d.nom || 'Document'));\n          dl.appendChild(a);\n        });\n        body.appendChild(dl);\n      }\n\n      if (it.faq.length) {\n        body = main; \/\/ la FAQ reste dans la colonne texte\n        body.appendChild(el('p', 'mv-modal-sub', T.faq));\n        var fq = el('div', 'mv-faq');\n        it.faq.forEach(function(qa) {\n          var det = el('details');\n          det.appendChild(el('summary', null, qa.question));\n          det.appendChild(el('p', null, qa.answer || T.no_answer));\n          fq.appendChild(det);\n        });\n        body.appendChild(fq);\n      }\n\n      content.appendChild(mainBody);\n      modal.hidden = false;\n      fitModal();\n      content.querySelectorAll('img, iframe, video').forEach(function(m) {\n        m.addEventListener('load', fitModal);\n        m.addEventListener('loadedmetadata', fitModal);\n      });\n      document.documentElement.style.overflow = 'hidden';\n      document.getElementById('mv-modal-close').focus();\n    }\n\n    \/**\n     * Agrandissement automatique : on passe au palier suivant tant que le contenu\n     * d\u00e9passe la hauteur disponible (sur grand \u00e9cran seulement).\n     *\/\n    function fitModal() {\n      var m = modal.querySelector('.mv-modal');\n      if (!m || modal.hidden) return;\n      m.classList.remove('is-wide', 'is-compact');\n      if (window.innerWidth <= 900) return;\n      var overflows = function() {\n        return m.scrollHeight > m.clientHeight + 2;\n      };\n      if (!overflows()) return;\n      m.classList.add('is-wide');\n      if (!overflows()) return;\n      m.classList.add('is-compact');\n    }\n    window.addEventListener('resize', function() {\n      if (!modal.hidden) fitModal();\n    });\n\n    \/** Lien Google Maps : coordonn\u00e9es si connues, sinon nom + ville \/ adresse *\/\n    \/**\n     * Cible Google Maps, par ordre de fiabilit\u00e9 :\n     *   1. coordonn\u00e9es de la fiche\n     *   2. nom + adresse (ou ville)\n     *   3. position de l'\u00e9tablissement (fiche sans lieu = \u00e9quipement sur place)\n     *   4. aucune \u2192 pas de bouton\n     *\/\n    function mapsTarget(it) {\n      var base = 'https:\/\/www.google.com\/maps\/search\/?api=1&query=';\n      if (it.lat !== null) return { url: base + encodeURIComponent(it.lat + ',' + it.lng), label: T.see_on_maps };\n      var where = it.address || it.city;\n      if (where) return { url: base + encodeURIComponent(it.name + ', ' + where), label: T.see_on_maps };\n      if (MAP.home) return { url: base + encodeURIComponent(MAP.home.lat + ',' + MAP.home.lng), label: T.see_place_on_maps };\n      return null;\n    }\n\n    function closeModal() {\n      modal.hidden = true;\n      document.documentElement.style.overflow = '';\n      if (lastFocus) lastFocus.focus();\n    }\n\n    document.getElementById('mv-modal-close').addEventListener('click', closeModal);\n    modal.addEventListener('click', function(e) {\n      if (e.target === modal) closeModal();\n    });\n    document.addEventListener('keydown', function(e) {\n      if (e.key === 'Escape' && !modal.hidden) closeModal();\n    });\n\n    \/\/ \u2550\u2550\u2550 Contr\u00f4les \u2550\u2550\u2550\n    \/**\n     * Hauteur occup\u00e9e en haut de l'\u00e9cran par les barres fixes \/ collantes du site\n     * (barre d'admin, en-t\u00eate, barre de r\u00e9servation\u2026), quelle que soit leur classe :\n     * on sonde le haut de l'\u00e9cran et on empile les barres trouv\u00e9es.\n     *\/\n    function headerOffset() {\n      var bottom = 0;\n      var vw = window.innerWidth,\n        vh = window.innerHeight;\n      var isBar = function(el) {\n        if (!el || el === document.body || el === document.documentElement) return false;\n        if (el.closest('#mv-app, .ea-modal-overlay, .mv-modal-overlay')) return false;\n        var pos = getComputedStyle(el).position;\n        if (pos !== 'fixed' && pos !== 'sticky') return false;\n        var r = el.getBoundingClientRect();\n        \/\/ vraie barre : large, pas trop haute (exclut bulles de chat, boutons flottants, popups)\n        return r.width >= vw * 0.3 && r.height > 0 && r.height < vh * 0.45;\n      };\n      for (var pass = 0; pass < 5; pass++) {\n        var y = bottom + 2,\n          found = 0;\n        if (y >= vh * 0.5) break;\n        [0.15, 0.5, 0.85].forEach(function(fx) {\n          (document.elementsFromPoint(vw * fx, y) || []).forEach(function(el) {\n            for (var n = el; n && n !== document.body; n = n.parentElement) {\n              if (isBar(n)) {\n                var r = n.getBoundingClientRect();\n                if (r.top <= y + 1 && r.bottom > found) found = r.bottom;\n                break;\n              }\n            }\n          });\n        });\n        if (found <= bottom) break;\n        bottom = found;\n      }\n      app.style.setProperty('--mv-header', Math.round(bottom) + 'px');\n      return bottom;\n    }\n\n    var searchTimer = null;\n    document.getElementById('mv-search').addEventListener('input', function(e) {\n      clearTimeout(searchTimer);\n      searchTimer = setTimeout(function() {\n        state.q = e.target.value;\n        state.limit = STEP;\n      state.page = 1;\n        renderList();\n      }, 150);\n    });\n\n    var dist = document.getElementById('mv-distance');\n    if (dist) {\n      dist.querySelectorAll('button').forEach(function(b) {\n        b.addEventListener('click', function() {\n          state.km = parseInt(b.getAttribute('data-km'), 10) || 0;\n          state.limit = STEP;\n      state.page = 1;\n          dist.querySelectorAll('button').forEach(function(x) {\n            x.classList.toggle('is-active', x === b);\n          });\n          renderList();\n        });\n      });\n    }\n\n    var viewSeg = document.getElementById('mv-view');\n    var layoutEl = document.getElementById('mv-layout');\n\n    function setView(v) {\n      state.view = v;\n      layoutEl.classList.toggle('is-list', v === 'list');\n      viewSeg.querySelectorAll('button').forEach(function(x) {\n        x.classList.toggle('is-active', x.getAttribute('data-view') === v);\n      });\n      if (map) setTimeout(function() {\n        map.invalidateSize();\n      }, 60);\n    }\n    viewSeg.querySelectorAll('button').forEach(function(b) {\n      b.addEventListener('click', function() {\n        setView(b.getAttribute('data-view'));\n      });\n    });\n\n    \/\/ Pas de carte si aucune fiche n'est g\u00e9olocalis\u00e9e\n    if (!ITEMS.some(function(it) {\n        return it.lat !== null;\n      })) {\n      viewSeg.style.display = 'none';\n      state.view = 'list';\n    }\n\n    headerOffset();\n    window.addEventListener('resize', headerOffset);\n    \/\/ Les barres du site peuvent appara\u00eetre au d\u00e9filement (barre de r\u00e9servation\u2026)\n    var hoTicking = false;\n    window.addEventListener('scroll', function() {\n      if (hoTicking) return;\n      hoTicking = true;\n      requestAnimationFrame(function() {\n        headerOffset();\n        hoTicking = false;\n      });\n    }, { passive: true });\n    var lastCols = null,\n      resizeTimer = null;\n    window.addEventListener('resize', function() {\n      clearTimeout(resizeTimer);\n      resizeTimer = setTimeout(function() {\n        var c = gridColumns();\n        if (lastCols !== null && c !== lastCols) renderList();\n        lastCols = c;\n      }, 200);\n    });\n    renderCats();\n    renderIdeas();\n    setView(state.view);\n    renderList();\n    renderPreview();\n    initMap();\n  })();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-10106","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Discover around you - Camping des Pins<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Discover around you - Camping des Pins\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/\" \/>\n<meta property=\"og:site_name\" content=\"Camping des Pins\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/elaia-metadatas\\\/\",\"url\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/elaia-metadatas\\\/\",\"name\":\"Discover around you - Camping des Pins\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/#website\"},\"datePublished\":\"2026-10-20T13:01:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/elaia-metadatas\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/elaia-metadatas\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/elaia-metadatas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Camping Soulac sur Mer\",\"item\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Discover around you\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/\",\"name\":\"Camping des Pins\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/#organization\",\"name\":\"Camping des pins Soulac\",\"url\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/camping-pin-soulac-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.campingdespins.fr\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/camping-pin-soulac-logo.png\",\"width\":200,\"height\":212,\"caption\":\"Camping des pins Soulac\"},\"image\":{\"@id\":\"https:\\\/\\\/www.campingdespins.fr\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Discover around you - Camping des Pins","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/","og_locale":"en_US","og_type":"article","og_title":"Discover around you - Camping des Pins","og_url":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/","og_site_name":"Camping des Pins","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/","url":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/","name":"Discover around you - Camping des Pins","isPartOf":{"@id":"https:\/\/www.campingdespins.fr\/en\/#website"},"datePublished":"2026-10-20T13:01:59+00:00","breadcrumb":{"@id":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.campingdespins.fr\/en\/elaia-metadatas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Camping Soulac sur Mer","item":"https:\/\/www.campingdespins.fr\/en\/"},{"@type":"ListItem","position":2,"name":"Discover around you"}]},{"@type":"WebSite","@id":"https:\/\/www.campingdespins.fr\/en\/#website","url":"https:\/\/www.campingdespins.fr\/en\/","name":"Camping des Pins","description":"","publisher":{"@id":"https:\/\/www.campingdespins.fr\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.campingdespins.fr\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.campingdespins.fr\/en\/#organization","name":"Camping des pins Soulac","url":"https:\/\/www.campingdespins.fr\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.campingdespins.fr\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/03\/camping-pin-soulac-logo.png","contentUrl":"https:\/\/www.campingdespins.fr\/wp-content\/uploads\/2021\/03\/camping-pin-soulac-logo.png","width":200,"height":212,"caption":"Camping des pins Soulac"},"image":{"@id":"https:\/\/www.campingdespins.fr\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/pages\/10106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/comments?post=10106"}],"version-history":[{"count":1,"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/pages\/10106\/revisions"}],"predecessor-version":[{"id":10107,"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/pages\/10106\/revisions\/10107"}],"wp:attachment":[{"href":"https:\/\/www.campingdespins.fr\/en\/wp-json\/wp\/v2\/media?parent=10106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}