Next
Christ the Redeemer - Iconic statue in Rio.
Next
Amazon Rainforest - Largest tropical rainforest.
Next
Iguaçu Falls - One of the largest waterfall systems.
Next
Salvador - Known for Afro-Brazilian culture.
Brazil_map_Travel Differently

Your custom trip is ready

Nathalie

's

Brazil

itinerary

Crafted by our AI + a local expert. Fully editable to your style & pace.

Date
Local hour
Season illustration
Best time to go

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

nights

Heading

From

$

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

USD per person

Home
Text Link
No items found.
Text Link

Let’s turn this into your exact trip.

Maria— Travel Designer

Replies within 24h • 100% tailor-made

5/5

225 reviews
Share it with your friends👇

Details

<div class="trip-overview-raw" style="display: none;"> <script> (function(){ try { var mapData = {"summary":{"title":"25-Day Brazil Adventure","dates":"August 2026","travelers":"3 Travelers"},"weather":{"desc":"Mild temperatures with occasional rain","temp":"20-30°C"},"security":{"status":"Safe for travelers with standard precautions"},"waypoints":[{"name":"São Paulo","coordinates":{"lat":-23.5505,"lon":-46.6333},"photo":"https://placehold.co/600x400"},{"name":"Paraty","coordinates":{"lat":-23.2192,"lon":-44.709},"photo":"https://placehold.co/600x400"},{"name":"Ilha Grande","coordinates":{"lat":-23.202,"lon":-44.249},"photo":"https://placehold.co/600x400"},{"name":"Rio de Janeiro","coordinates":{"lat":-22.9068,"lon":-43.1729},"photo":"https://placehold.co/600x400"},{"name":"Salvador","coordinates":{"lat":-12.9714,"lon":-38.5014},"photo":"https://placehold.co/600x400"},{"name":"Chapada Diamantina","coordinates":{"lat":-12.566,"lon":-41.3932},"photo":"https://placehold.co/600x400"},{"name":"Itacaré","coordinates":{"lat":-14.285,"lon":-38.996},"photo":"https://placehold.co/600x400"}],"days":[{"day_index":1,"day_title":"Arrival in São Paulo – Urban Art & Welcome","image_query":"São Paulo Urban Art Brazil","html_placeholder":"[DAY_IMAGE_01]"},{"day_index":2,"day_title":"São Paulo – Museums & Markets","image_query":"São Paulo Museums Brazil","html_placeholder":"[DAY_IMAGE_02]"},{"day_index":3,"day_title":"São Paulo – Local Life & Departure to Paraty","image_query":"São Paulo Local Life Brazil","html_placeholder":"[DAY_IMAGE_03]"},{"day_index":4,"day_title":"Paraty – Artisans & Bay Islands","image_query":"Paraty Artisans Brazil","html_placeholder":"[DAY_IMAGE_04]"},{"day_index":5,"day_title":"Paraty – Waterfalls & Forest Trails","image_query":"Paraty Waterfalls Brazil","html_placeholder":"[DAY_IMAGE_05]"},{"day_index":6,"day_title":"Paraty – Free Day / Rest","image_query":"Paraty Free Day Brazil","html_placeholder":"[DAY_IMAGE_06]"},{"day_index":7,"day_title":"Paraty to Ilha Grande – Island Escape","image_query":"Paraty Ilha Grande Brazil","html_placeholder":"[DAY_IMAGE_07]"},{"day_index":8,"day_title":"Ilha Grande – Hiking & Hidden Beaches","image_query":"Ilha Grande Hiking Brazil","html_placeholder":"[DAY_IMAGE_08]"},{"day_index":9,"day_title":"Ilha Grande – Kayaking & Local Life","image_query":"Ilha Grande Kayaking Brazil","html_placeholder":"[DAY_IMAGE_09]"},{"day_index":10,"day_title":"Ilha Grande – Free Day / Rest","image_query":"Ilha Grande Free Day Brazil","html_placeholder":"[DAY_IMAGE_10]"},{"day_index":11,"day_title":"Ilha Grande to Rio de Janeiro – City of Samba","image_query":"Ilha Grande Rio de Janeiro Brazil","html_placeholder":"[DAY_IMAGE_11]"},{"day_index":12,"day_title":"Rio de Janeiro – Art & Beaches","image_query":"Rio de Janeiro Art Beaches Brazil","html_placeholder":"[DAY_IMAGE_12]"},{"day_index":13,"day_title":"Rio de Janeiro – Tijuca Forest & Local Markets","image_query":"Rio de Janeiro Tijuca Forest Brazil","html_placeholder":"[DAY_IMAGE_13]"},{"day_index":14,"day_title":"Rio de Janeiro – Free Day / Rest","image_query":"Rio de Janeiro Free Day Brazil","html_placeholder":"[DAY_IMAGE_14]"},{"day_index":15,"day_title":"Rio to Salvador – Afro-Brazilian Culture","image_query":"Rio Salvador Brazil","html_placeholder":"[DAY_IMAGE_15]"},{"day_index":16,"day_title":"Salvador – Markets & Music","image_query":"Salvador Markets Brazil","html_placeholder":"[DAY_IMAGE_16]"},{"day_index":17,"day_title":"Salvador to Chapada Diamantina – Nature Retreat","image_query":"Salvador Chapada Diamantina Brazil","html_placeholder":"[DAY_IMAGE_17]"},{"day_index":18,"day_title":"Chapada Diamantina – Waterfalls & Caves","image_query":"Chapada Diamantina Waterfalls Brazil","html_placeholder":"[DAY_IMAGE_18]"},{"day_index":19,"day_title":"Chapada Diamantina – Local Life & Rest","image_query":"Chapada Diamantina Local Life Brazil","html_placeholder":"[DAY_IMAGE_19]"},{"day_index":20,"day_title":"Chapada Diamantina – Panoramas & Waterfalls","image_query":"Chapada Diamantina Panoramas Brazil","html_placeholder":"[DAY_IMAGE_20]"},{"day_index":21,"day_title":"Chapada Diamantina to Itacaré – Atlantic Forest to Beach","image_query":"Chapada Diamantina Itacaré Brazil","html_placeholder":"[DAY_IMAGE_21]"},{"day_index":22,"day_title":"Itacaré – Surf & Artisans","image_query":"Itacaré Surf Brazil","html_placeholder":"[DAY_IMAGE_22]"},{"day_index":23,"day_title":"Itacaré – Waterfalls & Forest Trails","image_query":"Itacaré Waterfalls Brazil","html_placeholder":"[DAY_IMAGE_23]"},{"day_index":24,"day_title":"Itacaré – Free Day / Rest","image_query":"Itacaré Free Day Brazil","html_placeholder":"[DAY_IMAGE_24]"},{"day_index":25,"day_title":"Itacaré to Salvador – Departure","image_query":"Itacaré Salvador Brazil","html_placeholder":"[DAY_IMAGE_25]"}]}; var dayImagesRaw = [{"day_index":1,"day_title":"Arrival in São Paulo – Urban Art & Welcome","placeholder":"[DAY_IMAGE_01]","day_image_url":"https://images.unsplash.com/photo-1568218652173-5de2ef7e75eb?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTJUMzJUEzbyUyMFBhdWxvJTIwVXJiYW4lMjBBcnQlMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc3NHww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1568218652173-5de2ef7e75eb?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTJUMzJUEzbyUyMFBhdWxvJTIwVXJiYW4lMjBBcnQlMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc3NHww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Arrival in São Paulo – Urban Art & Welcome\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":2,"day_title":"São Paulo – Museums & Markets","placeholder":"[DAY_IMAGE_02]","day_image_url":"https://images.unsplash.com/photo-1541688068196-b7ef31debec6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTJUMzJUEzbyUyMFBhdWxvJTIwTXVzZXVtcyUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzc1fDA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1541688068196-b7ef31debec6?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTJUMzJUEzbyUyMFBhdWxvJTIwTXVzZXVtcyUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzc1fDA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"São Paulo – Museums & Markets\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":3,"day_title":"São Paulo – Local Life & Departure to Paraty","placeholder":"[DAY_IMAGE_03]","day_image_url":"https://images.unsplash.com/photo-1561592390-15138c22896a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTJUMzJUEzbyUyMFBhdWxvJTIwTG9jYWwlMjBMaWZlJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3NzV8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1561592390-15138c22896a?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTJUMzJUEzbyUyMFBhdWxvJTIwTG9jYWwlMjBMaWZlJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3NzV8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"São Paulo – Local Life & Departure to Paraty\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":4,"day_title":"Paraty – Artisans & Bay Islands","placeholder":"[DAY_IMAGE_04]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Paraty – Artisans & Bay Islands\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":5,"day_title":"Paraty – Waterfalls & Forest Trails","placeholder":"[DAY_IMAGE_05]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Paraty – Waterfalls & Forest Trails\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":6,"day_title":"Paraty – Free Day / Rest","placeholder":"[DAY_IMAGE_06]","day_image_url":"https://images.unsplash.com/photo-1606095476820-d8d4a3984e64?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxQYXJhdHklMjBGcmVlJTIwRGF5JTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3NzZ8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1606095476820-d8d4a3984e64?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxQYXJhdHklMjBGcmVlJTIwRGF5JTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3NzZ8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Paraty – Free Day / Rest\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":7,"day_title":"Paraty to Ilha Grande – Island Escape","placeholder":"[DAY_IMAGE_07]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Paraty to Ilha Grande – Island Escape\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":8,"day_title":"Ilha Grande – Hiking & Hidden Beaches","placeholder":"[DAY_IMAGE_08]","day_image_url":"https://images.unsplash.com/photo-1549728556-e82a9bbfac30?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwSGlraW5nJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzd8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1549728556-e82a9bbfac30?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwSGlraW5nJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzd8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Ilha Grande – Hiking & Hidden Beaches\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":9,"day_title":"Ilha Grande – Kayaking & Local Life","placeholder":"[DAY_IMAGE_09]","day_image_url":"https://images.unsplash.com/photo-1549728556-e82a9bbfac30?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwS2F5YWtpbmclMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc3N3ww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1549728556-e82a9bbfac30?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwS2F5YWtpbmclMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc3N3ww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Ilha Grande – Kayaking & Local Life\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":10,"day_title":"Ilha Grande – Free Day / Rest","placeholder":"[DAY_IMAGE_10]","day_image_url":"https://images.unsplash.com/photo-1549728556-e82a9bbfac30?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwRnJlZSUyMERheSUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzc4fDA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1549728556-e82a9bbfac30?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwRnJlZSUyMERheSUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzc4fDA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Ilha Grande – Free Day / Rest\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":11,"day_title":"Ilha Grande to Rio de Janeiro – City of Samba","placeholder":"[DAY_IMAGE_11]","day_image_url":"https://images.unsplash.com/photo-1544991337-95176b5233c4?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwUmlvJTIwZGUlMjBKYW5laXJvJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzh8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1544991337-95176b5233c4?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJbGhhJTIwR3JhbmRlJTIwUmlvJTIwZGUlMjBKYW5laXJvJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzh8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Ilha Grande to Rio de Janeiro – City of Samba\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":12,"day_title":"Rio de Janeiro – Art & Beaches","placeholder":"[DAY_IMAGE_12]","day_image_url":"https://images.unsplash.com/photo-1544991337-95176b5233c4?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBkZSUyMEphbmVpcm8lMjBBcnQlMjBCZWFjaGVzJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzh8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1544991337-95176b5233c4?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBkZSUyMEphbmVpcm8lMjBBcnQlMjBCZWFjaGVzJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzh8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Rio de Janeiro – Art & Beaches\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":13,"day_title":"Rio de Janeiro – Tijuca Forest & Local Markets","placeholder":"[DAY_IMAGE_13]","day_image_url":"https://images.unsplash.com/photo-1516306580123-e6e52b1b7b5f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBkZSUyMEphbmVpcm8lMjBUaWp1Y2ElMjBGb3Jlc3QlMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc3OXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1516306580123-e6e52b1b7b5f?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBkZSUyMEphbmVpcm8lMjBUaWp1Y2ElMjBGb3Jlc3QlMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc3OXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Rio de Janeiro – Tijuca Forest & Local Markets\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":14,"day_title":"Rio de Janeiro – Free Day / Rest","placeholder":"[DAY_IMAGE_14]","day_image_url":"https://images.unsplash.com/photo-1483729558449-99ef09a8c325?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBkZSUyMEphbmVpcm8lMjBGcmVlJTIwRGF5JTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzl8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1483729558449-99ef09a8c325?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBkZSUyMEphbmVpcm8lMjBGcmVlJTIwRGF5JTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3Nzl8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Rio de Janeiro – Free Day / Rest\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":15,"day_title":"Rio to Salvador – Afro-Brazilian Culture","placeholder":"[DAY_IMAGE_15]","day_image_url":"https://images.unsplash.com/photo-1530618655905-2063770256bd?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBTYWx2YWRvciUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzc5fDA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1530618655905-2063770256bd?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxSaW8lMjBTYWx2YWRvciUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzc5fDA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Rio to Salvador – Afro-Brazilian Culture\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":16,"day_title":"Salvador – Markets & Music","placeholder":"[DAY_IMAGE_16]","day_image_url":"https://images.unsplash.com/photo-1718927111065-4bfab7d50a82?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTYWx2YWRvciUyME1hcmtldHMlMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc4MHww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1718927111065-4bfab7d50a82?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxTYWx2YWRvciUyME1hcmtldHMlMjBCcmF6aWx8ZW58MHwwfHx8MTc4MjczMzc4MHww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Salvador – Markets & Music\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":17,"day_title":"Salvador to Chapada Diamantina – Nature Retreat","placeholder":"[DAY_IMAGE_17]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Salvador to Chapada Diamantina – Nature Retreat\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":18,"day_title":"Chapada Diamantina – Waterfalls & Caves","placeholder":"[DAY_IMAGE_18]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Chapada Diamantina – Waterfalls & Caves\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":19,"day_title":"Chapada Diamantina – Local Life & Rest","placeholder":"[DAY_IMAGE_19]","day_image_url":"https://images.unsplash.com/photo-1557489639-bb03874afa12?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxDaGFwYWRhJTIwRGlhbWFudGluYSUyMExvY2FsJTIwTGlmZSUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzgxfDA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1557489639-bb03874afa12?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxDaGFwYWRhJTIwRGlhbWFudGluYSUyMExvY2FsJTIwTGlmZSUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzgxfDA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Chapada Diamantina – Local Life & Rest\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":20,"day_title":"Chapada Diamantina – Panoramas & Waterfalls","placeholder":"[DAY_IMAGE_20]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Chapada Diamantina – Panoramas & Waterfalls\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":21,"day_title":"Chapada Diamantina to Itacaré – Atlantic Forest to Beach","placeholder":"[DAY_IMAGE_21]","day_image_url":"https://images.unsplash.com/photo-1557489639-bb03874afa12?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxDaGFwYWRhJTIwRGlhbWFudGluYSUyMEl0YWNhciVDMyVBOSUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzgxfDA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1557489639-bb03874afa12?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxDaGFwYWRhJTIwRGlhbWFudGluYSUyMEl0YWNhciVDMyVBOSUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzgxfDA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Chapada Diamantina to Itacaré – Atlantic Forest to Beach\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":22,"day_title":"Itacaré – Surf & Artisans","placeholder":"[DAY_IMAGE_22]","day_image_url":"https://images.unsplash.com/photo-1562070237-4406330aa788?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJdGFjYXIlQzMlQTklMjBTdXJmJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3ODJ8MA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1562070237-4406330aa788?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJdGFjYXIlQzMlQTklMjBTdXJmJTIwQnJhemlsfGVufDB8MHx8fDE3ODI3MzM3ODJ8MA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Itacaré – Surf & Artisans\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":23,"day_title":"Itacaré – Waterfalls & Forest Trails","placeholder":"[DAY_IMAGE_23]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Itacaré – Waterfalls & Forest Trails\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":24,"day_title":"Itacaré – Free Day / Rest","placeholder":"[DAY_IMAGE_24]","day_image_url":"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1518639192441-8fce0a366e2e?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwyfHxCcmF6aWwlMjB0cmF2ZWwlMjBsYW5kc2NhcGV8ZW58MHwwfHx8MTc4MjczMzc3MXww&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Itacaré – Free Day / Rest\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}, {"day_index":25,"day_title":"Itacaré to Salvador – Departure","placeholder":"[DAY_IMAGE_25]","day_image_url":"https://images.unsplash.com/photo-1591233055842-a984961b71af?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJdGFjYXIlQzMlQTklMjBTYWx2YWRvciUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzgzfDA&ixlib=rb-4.1.0&q=80&w=1080","day_image_html":"<img src=\"https://images.unsplash.com/photo-1591233055842-a984961b71af?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w4NjAxNDN8MHwxfHNlYXJjaHwxfHxJdGFjYXIlQzMlQTklMjBTYWx2YWRvciUyMEJyYXppbHxlbnwwfDB8fHwxNzgyNzMzNzgzfDA&ixlib=rb-4.1.0&q=80&w=1080\" width=\"640\" alt=\"Itacaré to Salvador – Departure\" style=\"display:block;margin:20px auto;border-radius:8px;\">"}]; var dayImages = Array.isArray(dayImagesRaw) ? dayImagesRaw : (dayImagesRaw ? [dayImagesRaw] : []); var travelerName = "Nathalie"; var destination = "Brazil"; function extractDays(dayRange) { if (!dayRange) return []; var match = dayRange.toString().match(/Day\s+(\d+)(?:-(\d+))?/); if (!match) return []; var start = parseInt(match[1]); var end = match[2] ? parseInt(match[2]) : start; var days = []; for (var i = start; i <= end; i++) { days.push(i); } return days; } function findImageForWaypoint(waypoint, dayImages) { var days = extractDays(waypoint.days); if (days.length === 0) return null; var firstDay = days[0]; for (var i = 0; i < dayImages.length; i++) { if (dayImages[i].day_index === firstDay) { return dayImages[i].day_image_url; } } return null; } if (mapData && mapData.map && mapData.map.waypoints) { for (var i = 0; i < mapData.map.waypoints.length; i++) { var wp = mapData.map.waypoints[i]; var imageUrl = findImageForWaypoint(wp, dayImages); if (imageUrl) { wp.photo = imageUrl; } } } window.TD_MAP_DATA_ENRICHED = mapData; window.travelerName = travelerName; window.destination = destination; } catch(e) { console.error('Error enriching map data:', e); window.TD_MAP_DATA_ENRICHED = {"summary":{"title":"25-Day Brazil Adventure","dates":"August 2026","travelers":"3 Travelers"},"weather":{"desc":"Mild temperatures with occasional rain","temp":"20-30°C"},"security":{"status":"Safe for travelers with standard precautions"},"waypoints":[{"name":"São Paulo","coordinates":{"lat":-23.5505,"lon":-46.6333},"photo":"https://placehold.co/600x400"},{"name":"Paraty","coordinates":{"lat":-23.2192,"lon":-44.709},"photo":"https://placehold.co/600x400"},{"name":"Ilha Grande","coordinates":{"lat":-23.202,"lon":-44.249},"photo":"https://placehold.co/600x400"},{"name":"Rio de Janeiro","coordinates":{"lat":-22.9068,"lon":-43.1729},"photo":"https://placehold.co/600x400"},{"name":"Salvador","coordinates":{"lat":-12.9714,"lon":-38.5014},"photo":"https://placehold.co/600x400"},{"name":"Chapada Diamantina","coordinates":{"lat":-12.566,"lon":-41.3932},"photo":"https://placehold.co/600x400"},{"name":"Itacaré","coordinates":{"lat":-14.285,"lon":-38.996},"photo":"https://placehold.co/600x400"}],"days":[{"day_index":1,"day_title":"Arrival in São Paulo – Urban Art & Welcome","image_query":"São Paulo Urban Art Brazil","html_placeholder":"[DAY_IMAGE_01]"},{"day_index":2,"day_title":"São Paulo – Museums & Markets","image_query":"São Paulo Museums Brazil","html_placeholder":"[DAY_IMAGE_02]"},{"day_index":3,"day_title":"São Paulo – Local Life & Departure to Paraty","image_query":"São Paulo Local Life Brazil","html_placeholder":"[DAY_IMAGE_03]"},{"day_index":4,"day_title":"Paraty – Artisans & Bay Islands","image_query":"Paraty Artisans Brazil","html_placeholder":"[DAY_IMAGE_04]"},{"day_index":5,"day_title":"Paraty – Waterfalls & Forest Trails","image_query":"Paraty Waterfalls Brazil","html_placeholder":"[DAY_IMAGE_05]"},{"day_index":6,"day_title":"Paraty – Free Day / Rest","image_query":"Paraty Free Day Brazil","html_placeholder":"[DAY_IMAGE_06]"},{"day_index":7,"day_title":"Paraty to Ilha Grande – Island Escape","image_query":"Paraty Ilha Grande Brazil","html_placeholder":"[DAY_IMAGE_07]"},{"day_index":8,"day_title":"Ilha Grande – Hiking & Hidden Beaches","image_query":"Ilha Grande Hiking Brazil","html_placeholder":"[DAY_IMAGE_08]"},{"day_index":9,"day_title":"Ilha Grande – Kayaking & Local Life","image_query":"Ilha Grande Kayaking Brazil","html_placeholder":"[DAY_IMAGE_09]"},{"day_index":10,"day_title":"Ilha Grande – Free Day / Rest","image_query":"Ilha Grande Free Day Brazil","html_placeholder":"[DAY_IMAGE_10]"},{"day_index":11,"day_title":"Ilha Grande to Rio de Janeiro – City of Samba","image_query":"Ilha Grande Rio de Janeiro Brazil","html_placeholder":"[DAY_IMAGE_11]"},{"day_index":12,"day_title":"Rio de Janeiro – Art & Beaches","image_query":"Rio de Janeiro Art Beaches Brazil","html_placeholder":"[DAY_IMAGE_12]"},{"day_index":13,"day_title":"Rio de Janeiro – Tijuca Forest & Local Markets","image_query":"Rio de Janeiro Tijuca Forest Brazil","html_placeholder":"[DAY_IMAGE_13]"},{"day_index":14,"day_title":"Rio de Janeiro – Free Day / Rest","image_query":"Rio de Janeiro Free Day Brazil","html_placeholder":"[DAY_IMAGE_14]"},{"day_index":15,"day_title":"Rio to Salvador – Afro-Brazilian Culture","image_query":"Rio Salvador Brazil","html_placeholder":"[DAY_IMAGE_15]"},{"day_index":16,"day_title":"Salvador – Markets & Music","image_query":"Salvador Markets Brazil","html_placeholder":"[DAY_IMAGE_16]"},{"day_index":17,"day_title":"Salvador to Chapada Diamantina – Nature Retreat","image_query":"Salvador Chapada Diamantina Brazil","html_placeholder":"[DAY_IMAGE_17]"},{"day_index":18,"day_title":"Chapada Diamantina – Waterfalls & Caves","image_query":"Chapada Diamantina Waterfalls Brazil","html_placeholder":"[DAY_IMAGE_18]"},{"day_index":19,"day_title":"Chapada Diamantina – Local Life & Rest","image_query":"Chapada Diamantina Local Life Brazil","html_placeholder":"[DAY_IMAGE_19]"},{"day_index":20,"day_title":"Chapada Diamantina – Panoramas & Waterfalls","image_query":"Chapada Diamantina Panoramas Brazil","html_placeholder":"[DAY_IMAGE_20]"},{"day_index":21,"day_title":"Chapada Diamantina to Itacaré – Atlantic Forest to Beach","image_query":"Chapada Diamantina Itacaré Brazil","html_placeholder":"[DAY_IMAGE_21]"},{"day_index":22,"day_title":"Itacaré – Surf & Artisans","image_query":"Itacaré Surf Brazil","html_placeholder":"[DAY_IMAGE_22]"},{"day_index":23,"day_title":"Itacaré – Waterfalls & Forest Trails","image_query":"Itacaré Waterfalls Brazil","html_placeholder":"[DAY_IMAGE_23]"},{"day_index":24,"day_title":"Itacaré – Free Day / Rest","image_query":"Itacaré Free Day Brazil","html_placeholder":"[DAY_IMAGE_24]"},{"day_index":25,"day_title":"Itacaré to Salvador – Departure","image_query":"Itacaré Salvador Brazil","html_placeholder":"[DAY_IMAGE_25]"}]} || {}; window.travelerName = "Nathalie"; window.destination = "Brazil"; } })(); </script> </div> <script> (function () { 'use strict'; console.log('[TD Map V8] Initializing...'); function loadLeaflet(callback) { if (typeof L !== 'undefined') { callback(); return; } console.log('[TD Map V8] Loading Leaflet libraries...'); var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.css'; document.head.appendChild(link); var script = document.createElement('script'); script.src = 'https://unpkg.com/leaflet@1.9.4/dist/leaflet.js'; script.onload = function () { console.log('[TD Map V8] Leaflet loaded!'); callback(); }; script.onerror = function () { console.error('[TD Map V8] Failed to load Leaflet.'); var container = document.getElementById('td-map-v8-container'); if (container) container.innerHTML = 'Map Error: Could not load libraries.'; }; document.head.appendChild(script); } function decodeHTML(str) { var txt = document.createElement('textarea'); var decoded = str; var max = 5, i = 0; while ((decoded.includes('&lt;') || decoded.includes('&amp;')) && i < max) { txt.innerHTML = decoded; decoded = txt.value; i++; } return decoded; } function extractMapData(content) { var startMarkers = ['var mapData=', 'var mapData =', 'mapData=']; for (var m = 0; m < startMarkers.length; m++) { var startIdx = content.indexOf(startMarkers[m]); if (startIdx !== -1) { var braceStart = content.indexOf('{', startIdx); if (braceStart === -1) continue; var depth = 0, braceEnd = -1; for (var i = braceStart; i < content.length; i++) { if (content[i] === '{') depth++; if (content[i] === '}') depth--; if (depth === 0) { braceEnd = i; break; } } if (braceEnd !== -1) { var jsonStr = content.substring(braceStart, braceEnd + 1); try { return JSON.parse(jsonStr); } catch (e) { jsonStr = jsonStr.replace(/&amp;/g, '&').replace(/\\"/g, '"'); try { return JSON.parse(jsonStr); } catch (e2) { } } } } } return null; } function extractVariable(content, varName) { var match = content.match(new RegExp('var\\s+' + varName + '\\s*=\\s*["\']([^"\']+)["\']')); return match ? match[1] : null; } function initMap() { var mapData = window.TD_MAP_DATA_ENRICHED; var travelerName = window.travelerName || 'Traveler'; var destination = window.destination || 'Destination'; if (!mapData) { var rawEl = document.querySelector('.trip-overview-raw') || document.querySelector('#trip-overview-raw'); if (!rawEl) { console.warn('[TD Map V8] No data element found.'); return; } var content = decodeHTML(rawEl.innerHTML || rawEl.textContent); rawEl.style.display = 'none'; mapData = extractMapData(content); if (!mapData) { console.error('[TD Map V8] JSON extraction failed.'); return; } travelerName = extractVariable(content, 'travelerName') || travelerName; destination = extractVariable(content, 'destination') || destination; } var container = document.getElementById('td-map-v8-container'); if (!container) { container = document.createElement('div'); container.id = 'td-map-v8-container'; container.style.width = '100%'; container.style.display = 'flex'; container.style.flexDirection = 'column'; var rawEl = document.querySelector('.trip-overview-raw'); if (rawEl && rawEl.parentNode) { rawEl.parentNode.insertBefore(container, rawEl.nextSibling); } else { document.body.appendChild(container); } } container.innerHTML = ''; buildMapUI(container, mapData, travelerName, destination); } function buildMapUI(container, mapData, travelerName, destination) { var waypoints = mapData.map.waypoints || []; if (waypoints.length === 0) return; // Préparer les données pour la STATS BAR var weatherTemp = mapData.weather ? mapData.weather.temp : ''; var weatherDesc = mapData.weather ? mapData.weather.desc : ''; var securityStatus = mapData.security ? mapData.security.status : ''; var securityTip = mapData.security ? mapData.security.tip : ''; var budgetTotal = mapData.budget ? mapData.budget.total : ''; container.innerHTML = '<div id="td-map-v8" style="font-family: \'Inter\', sans-serif; width: 100%; background: #fff; border-radius: 0.75rem; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.08);"><div style="background: #001427; padding: 1.1rem 1.5rem;"><div style="display: flex; justify-content: space-between; align-items: center;"><div><h2 style="margin: 0; font-family: \'Poppins\', sans-serif; font-size: 1.1rem; font-weight: 600; color: white;">' + travelerName + '\'s Journey</h2><p style="margin: 0.25rem 0 0; font-size: 0.8rem; color: rgba(255,255,255,0.7);">' + (mapData.summary ? mapData.summary.dates : '') + ' • ' + (mapData.summary ? mapData.summary.travelers : '') + '</p></div><div style="text-align: right;"><span style="display: block; font-size: 0.7rem; text-transform: uppercase; color: rgba(255,255,255,0.5); letter-spacing: 1px; font-weight: 600;">Est. Budget</span><span style="font-size: 1rem; font-weight: 700; color: #E98A15;">' + budgetTotal + '</span></div></div></div><div style="display: grid; grid-template-columns: 1fr 1fr; background: #f8f9fa; border-left: 1px solid #eef0f2; border-right: 1px solid #eef0f2; padding: 0.9rem 1.5rem;"><div style="border-right: 1px solid #eef0f2; padding-right: 0.9rem;"><span style="display: block; font-size: 0.65rem; text-transform: uppercase; color: #8898aa; font-weight: 700; letter-spacing: 0.5px; margin-bottom: 0.25rem;">Weather</span><div style="display: flex; align-items: center; gap: 0.5rem;"><span style="font-size: 1.1rem;">☀️</span><div><span style="display: block; font-size: 0.8rem; font-weight: 600; color: #001427;">' + weatherTemp + '</span><span style="display: block; font-size: 0.7rem; color: #525f7f;">' + weatherDesc + '</span></div></div></div><div style="padding-left: 0.9rem;"><span style="display: block; font-size: 0.65rem; text-transform: uppercase; color: #8898aa; font-weight: 700; letter-spacing: 0.5px; margin-bottom: 0.25rem;">Safety</span><div style="display: flex; align-items: center; gap: 0.5rem;"><span style="font-size: 1.1rem;">🛡️</span><div><span style="display: block; font-size: 0.8rem; font-weight: 600; color: #001427;">' + securityStatus + '</span><span style="display: block; font-size: 0.7rem; color: #525f7f; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 120px;">' + securityTip + '</span></div></div></div></div><div id="leaflet-map-v8" style="width: 100%; height: 25rem; background: #e7e0da; z-index: 1;"></div><div id="timeline-v8" style="background: #f8f9fa; padding: 1rem 1.25rem; border-top: 3px solid #e98a15; overflow-x: auto; white-space: nowrap; -webkit-overflow-scrolling: touch;"><div style="display: inline-flex; gap: 0.5rem; padding-bottom: 5px;"></div></div><div style="display: flex; justify-content: center; gap: 1.5rem; padding: 0.8rem; font-size: 0.75rem; color: #001427; font-weight: 500; border-top: 1px solid #eee;"><span style="display: flex; align-items: center; gap: 0.4rem;"><span style="width: 0.6rem; height: 0.6rem; background: #e98a15; border-radius: 50%;"></span> ' + destination + '</span><span style="display: flex; align-items: center; gap: 0.4rem;"><span>📷</span> Click markers for photos</span></div></div><style>.leaflet-popup-content-wrapper { border-radius: 0.75rem !important; padding: 0 !important; overflow: hidden; box-shadow: 0 10px 25px rgba(0,0,0,0.15) !important; }.leaflet-popup-content { margin: 0 !important; width: 280px !important; }.leaflet-container { font-family: \'Inter\', sans-serif !important; }.timeline-item-v8 { display: inline-flex; flex-direction: column; align-items: center; cursor: pointer; padding: 0.5rem 0.75rem; border-radius: 0.5rem; min-width: 4.5rem; transition: all 0.2s ease; border: 1px solid transparent; }.timeline-item-v8:hover { background: #fff; border-color: #ddd; transform: translateY(-2px); }.timeline-item-v8.active { background: #e98a15; color: white !important; box-shadow: 0 4px 12px rgba(233, 138, 21, 0.4); }.timeline-item-v8.active span { color: white !important; }#timeline-v8::-webkit-scrollbar { height: 6px; }#timeline-v8::-webkit-scrollbar-track { background: transparent; }#timeline-v8::-webkit-scrollbar-thumb { background: #ddd; border-radius: 10px; }#timeline-v8::-webkit-scrollbar-thumb:hover { background: #ccc; }</style>'; var map = L.map('leaflet-map-v8', { scrollWheelZoom: true, zoomControl: true }).setView([0, 0], 2); L.tileLayer('https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.png', { maxZoom: 19, attribution: '&copy; <a href="https://carto.com/">CARTO</a>' }).addTo(map); var markers = []; waypoints.forEach(function(wp, i) { var dayLabelRaw = wp.days ? wp.days.toString() : ""; var dayLabelClean = dayLabelRaw.split('-')[0]; var iconHtml = '<div style="background: linear-gradient(135deg, #e98a15, #d47710); color: white; width: 2.2rem; height: 2.2rem; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; border: 3px solid white; box-shadow: 0 4px 15px rgba(233,138,21,0.5); font-size: 0.9rem;">' + (i + 1) + '</div>'; var icon = L.divIcon({ html: iconHtml, className: 'td-marker-v8', iconSize: [36, 36], iconAnchor: [18, 18], popupAnchor: [0, -24] }); var popupContent = '<div style="font-family: \'Inter\', sans-serif;"><div style="width: 100%; height: 9rem; background: #eee; overflow: hidden; position: relative;"><img src="' + (wp.photo || '') + '" style="width: 100%; height: 100%; object-fit: cover; display: block;" onerror="this.parentElement.style.display=\'none\'"></div><div style="padding: 1rem;"><span style="background: rgba(233,138,21,0.1); color: #d47710; padding: 0.25rem 0.6rem; border-radius: 2rem; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px;">' + wp.days + '</span><h4 style="margin: 0.5rem 0 0.25rem; font-size: 1rem; color: #001427; font-weight: 700; line-height: 1.3;">' + wp.name + '</h4><p style="font-size: 0.8rem; color: #666; margin: 0; line-height: 1.4;">' + (wp.desc || '') + '</p></div></div>'; var marker = L.marker([wp.lat, wp.lon], { icon: icon }).bindPopup(popupContent).addTo(map); markers.push(marker); var tlItem = document.createElement('div'); tlItem.className = 'timeline-item-v8'; var timelineDayText = dayLabelClean; if (/^\d+$/.test(timelineDayText.trim())) { timelineDayText = "Day " + timelineDayText; } tlItem.innerHTML = '<span style="font-size: 0.65rem; color: #999; font-weight: 600; text-transform: uppercase;">' + timelineDayText + '</span><span style="font-size: 0.8rem; font-weight: 700; color: #001427;">' + wp.name + '</span>'; tlItem.onclick = function() { map.setView([wp.lat, wp.lon], 11, { animate: true }); marker.openPopup(); var allItems = document.querySelectorAll('.timeline-item-v8'); for (var j = 0; j < allItems.length; j++) { allItems[j].classList.remove('active'); } tlItem.classList.add('active'); tlItem.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' }); }; marker.on('click', function() { var allItems = document.querySelectorAll('.timeline-item-v8'); for (var j = 0; j < allItems.length; j++) { allItems[j].classList.remove('active'); } tlItem.classList.add('active'); tlItem.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' }); }); document.querySelector('#timeline-v8 > div').appendChild(tlItem); }); var route = waypoints.map(function(wp) { return [wp.lat, wp.lon]; }); L.polyline(route, { color: '#e98a15', weight: 4, dashArray: '10, 10', opacity: 0.8, lineCap: 'round' }).addTo(map); if (markers.length > 0) { map.fitBounds(L.latLngBounds(waypoints.map(function(wp) { return [wp.lat, wp.lon]; })).pad(0.1)); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { loadLeaflet(initMap); }); } else { loadLeaflet(initMap); } })(); </script>
Loading Map...

Content Summary :

Let’s turn this into your exact trip.

Maria — Travel Designer

Replies within 24h • 100% tailor-made

5/5

225 reviews
Share it with your friends👇

More immersive travel

Discover the world through the eyes of our local partners. Each tour is carefully curated to immerse you in local cultures while preserving the beauty of their countries.

This is some text inside of a div block.
Leaf

Heading

Price
From $
2250
USD/ Night
6000
USD
Duration illustration
Duration
This is some text inside of a div block.
nights
Season illustration
When ?
This is some text inside of a div block.
Country
Take me here
This is some text inside of a div block.
This is some text inside of a div block.
Leaf

Heading

Price
From $
154
USD/ Night
USD
Duration illustration
Duration
This is some text inside of a div block.
nights
Season illustration
When ?
This is some text inside of a div block.
Country
Take me here
This is some text inside of a div block.
This is some text inside of a div block.
Leaf

Heading

Price
From $
580
USD/ Night
USD
Duration illustration
Duration
This is some text inside of a div block.
nights
Season illustration
When ?
This is some text inside of a div block.
Country
Take me here
This is some text inside of a div block.
More Immersive Travels

What Makes us Different

Why Travel Differently ?

Adventurous

Designed by Locals

Our itineraries are meticulously crafted by local expert guides who reveal hidden treasures and offer immersive experiences. With their deep knowledge of each destination and commitment to safety, you can explore with confidence and fully enjoy your adventure.

Authentic

Immersive Interactions

Immerse yourself in local culture through authentic encounters with locals and visits to stunning cultural and natural attractions. Every moment is carefully designed to provide an unforgettable experience, while respecting local traditions and resources.

Responsible

Community Support

The profits generated by Travel Differently directly support local communities, ensuring fair wages and sustainable economic growth. We are committed to turning tourism into a force for positive change, while respecting local cultures and the environment.

What does Travel Differently do?

We are a company specializing in community-based travel, offering guided tours in small groups of up to 12 people, or private experiences. Our mission is to deliver immersive travel experiences that align with your dreams while respecting local cultures.

How do we do it?

With the support of our local partners, including unique ecolodges and passionate tour guides, we create travel experiences that are deeply immersive and respectful of local cultures and the environment.

Why did we create Travel Differently?

Our goal is to transform tourism into a force for positive change. We strive to avoid mass tourism and to promote responsible travel that respects local communities and our planet.

Not Just a Trip.
An Immersion Into Real Costa Rica & Nicaragua

Frequently Asked Questions

How safe is it to travel with a local guide?

Will my travel experience be immersive?

What are the essential travel safety tips for South America?

What is the impact of tourism on local communities?

How are travel itineraries created?

How are travel itineraries created?

How safe is it to travel with a local guide?

What should I expect after booking a trip?

How large are the travel groups?

What if I have special requests or needs?

Will my travel experience be immersive?

How large are the travel groups?

What are some must-see destinations in Brazil?

What if there are issues during the trip?

What is the best time to visit Brazil?

What is the impact of tourism on local communities?

What if there are issues during the trip?

What if I have special requests or needs?

What are the essential safety tips for traveling in Central America?

How does Travel Differently support local communities?

Seamless and Personalized Travel Planning

Embark On Our Instagram Odyssey

traveldifferently_
traveldifferently_
traveldifferently_
traveldifferently_
traveldifferently_
traveldifferently_