<div id="td-dashboard" style="font-family:'Inter',sans-serif;max-width:100%;margin:30px auto;border-radius:16px;overflow:hidden;background:white;box-shadow:0 10px 40px rgba(0,0,0,0.08);border:1px solid #eaeaea;"> <!-- HEADER --> <div style="background:#001427;padding:24px 30px;color:white;display:flex;justify-content:space-between;align-items:center;"> <div> <h2 style="margin:0;font-size:20px;font-family:'Poppins',sans-serif;font-weight:600;">Florian's Trip Overview</h2> <p style="margin:6px 0 0;font-size:13px;opacity:0.8;font-weight:300;">```json { "clean_lead": { "full_name": "Florian", "destination": "Armenia", "nb_adults": 5, "nb_teens": 0, "nb_children": 0, "nb_babies": 0, "total_travelers": 5, "group_type": "friends", "is_family_trip": false, "departure_date": "", "return_date": "", "preferred_departure_period": "march-2026", "trip_duration_weeks": 2, "budget_pp": 2000, "accompanied": "With a driver-guide", "preferences": "I’m starting to plan, With friends, With a driver-guide", "accommodation_types_selected": [ "Luxury Hotels", "Guesthouses", "Eco Lodges" ], "traveling_with": "With friends", "initial_thoughts": "Enjoy and see some church" }, "summary": "Florian is planning a trip to Armenia in March 2026 with a group of 5 adults, traveling with friends. The group prefers to stay in luxury hotels, guesthouses, or eco lodges, and would like to be accompanied by a driver-guide. The planned trip duration is about 2 weeks, with a budget of 2000 euros per person. Florian is just starting to plan and is interested in enjoying the trip and visiting churches. No teens, children, or babies are included in the group. Exact travel dates have not been specified.", "missing": [ "departure_date", "return_date" ] } ``` • ```json { "clean_lead": { "full_name": "Florian", "destination": "Armenia", "nb_adults": 5, "nb_teens": 0, "nb_children": 0, "nb_babies": 0, "total_travelers": 5, "group_type": "friends", "is_family_trip": false, "departure_date": "", "return_date": "", "preferred_departure_period": "march-2026", "trip_duration_weeks": 2, "budget_pp": 2000, "accompanied": "With a driver-guide", "preferences": "I’m starting to plan, With friends, With a driver-guide", "accommodation_types_selected": [ "Luxury Hotels", "Guesthouses", "Eco Lodges" ], "traveling_with": "With friends", "initial_thoughts": "Enjoy and see some church" }, "summary": "Florian is planning a trip to Armenia in March 2026 with a group of 5 adults, traveling with friends. The group prefers to stay in luxury hotels, guesthouses, or eco lodges, and would like to be accompanied by a driver-guide. The planned trip duration is about 2 weeks, with a budget of 2000 euros per person. Florian is just starting to plan and is interested in enjoying the trip and visiting churches. No teens, children, or babies are included in the group. Exact travel dates have not been specified.", "missing": [ "departure_date", "return_date" ] } ``` • Armenia</p> </div> <div style="text-align:right;"> <img src="https: </div> </div> <!-- WIDGETS ROW --> <div style="display:flex;padding:25px;gap:15px;background:#fcfcfc;border-bottom:1px solid #eaeaea;flex-wrap:wrap;"> <!-- Weather Widget --> <div style="flex:1;min-width:180px;background:white;padding:18px;border-radius:12px;border:1px solid #eee;box-shadow:0 4px 10px rgba(0,0,0,0.03);"> <div style="display:flex;align-items:flex-start;gap:12px;"> <img src="https: <div> <h4 style="margin:0 0 8px;font-size:11px;text-transform:uppercase;color:#001427;font-weight:700;letter-spacing:1px;">WEATHER</h4> <div id="w-temp" style="font-size:20px;font-weight:700;color:#001427;margin-bottom:6px;">--°C</div> <p id="w-desc" style="margin:0;font-size:12px;color:#666;line-height:1.4;">Weather description</p> </div> </div> </div> <!-- Budget Widget --> <div style="flex:1;min-width:220px;background:white;padding:18px;border-radius:12px;border:1px solid #eee;box-shadow:0 4px 10px rgba(0,0,0,0.03);"> <div style="display:flex;align-items:flex-start;gap:12px;"> <img src="https: <div style="width:100%;"> <h4 style="margin:0 0 8px;font-size:11px;text-transform:uppercase;color:#001427;font-weight:700;letter-spacing:1px;">ESTIMATED BUDGET</h4> <div id="b-total" style="font-size:20px;font-weight:700;color:#001427;margin-bottom:6px;">€-- <span style="font-size:12px;font-weight:400;color:#888;">/person</span></div> <div id="b-items" style="margin-top:8px;font-size:11px;color:#555;"> <!-- Items injected via JS --> </div> </div> </div> </div> <!-- Security Widget --> <div style="flex:1;min-width:180px;background:white;padding:18px;border-radius:12px;border:1px solid #eee;box-shadow:0 4px 10px rgba(0,0,0,0.03);"> <div style="display:flex;align-items:flex-start;gap:12px;"> <img src="https: <div> <h4 style="margin:0 0 8px;font-size:11px;text-transform:uppercase;color:#001427;font-weight:700;letter-spacing:1px;">SAFETY</h4> <div id="s-status" style="font-size:20px;font-weight:700;color:#2a9d8f;margin-bottom:6px;">Safe</div> <p id="s-tip" style="margin:0;font-size:12px;color:#666;line-height:1.4;">Safety tips here.</p> </div> </div> </div> </div> <!-- MAP CONTAINER --> <div id="map-container" style="width:100%;height:450px;background:#e7e0da;"></div> <!-- LOGIC --> <link rel="stylesheet" href="https: <script src="https: <script> (function(){ const data = {"summary":{"title":"Exploring Armenia with Friends","dates":"March 2026","travelers":"5 Travelers"},"weather":{"desc":"Cool spring weather","temp":"15-20°C"},"security":{"status":"Low Risk","tip":"Country is very safe. Standard caution in crowds."},"budget":{"total":"€1,200","items":[{"label":"Hotels","val":"€600"},{"label":"Logistics","val":"€300"},{"label":"Activities","val":"€300"}]},"map":{"waypoints":[{"name":"Yerevan","lat":40.1792,"lon":44.4991,"days":"1-4","desc":"The capital city known for its rich history and vibrant culture.","photo":"https://source.unsplash.com/600x400/?Yerevan","highlights":["Republic Square","Cascade Complex","Armenian Genocide Memorial"]},{"name":"Lake Sevan","lat":40.5662,"lon":45.3035,"days":"5-6","desc":"A stunning high-altitude lake known for its beauty and historical sites.","photo":"https://source.unsplash.com/600x400/?LakeSevan","highlights":["Sevanavank Monastery","Beach Activities","Local Fish Cuisine"]},{"name":"Dilijan","lat":40.5824,"lon":44.883,"days":"7-9","desc":"A picturesque town surrounded by forests and mountains.","photo":"https://source.unsplash.com/600x400/?Dilijan","highlights":["Dilijan National Park","Haghartsin Monastery","Local Crafts"]},{"name":"Goris","lat":39.57,"lon":46.1711,"days":"10-12","desc":"Known for its unique rock formations and historical sites.","photo":"https://source.unsplash.com/600x400/?Goris","highlights":["Tatev Monastery","Old Goris","Khndzoresk Cave Village"]},{"name":"Etchmiadzin","lat":40.14,"lon":44.05,"days":"13-14","desc":"The spiritual center of Armenia and home to the Mother Cathedral.","photo":"https://source.unsplash.com/600x400/?Etchmiadzin","highlights":["Etchmiadzin Cathedral","Armenian Genocide Memorial","Local Markets"]}],"route":[0,1,2,3,4]}}; if(data.weather) { document.getElementById('w-temp').innerText = data.weather.temp; document.getElementById('w-desc').innerText = data.weather.desc; } if(data.budget) { document.getElementById('b-total').innerHTML = `${data.budget.total} <span style="font-size:12px;font-weight:400;color:#888;">/person</span>`; document.getElementById('b-items').innerHTML = data.budget.items.map(i => `<div style="display:flex;justify-content:space-between;border-bottom:1px dashed #eee;padding-bottom:2px;margin-bottom:4px;"><span>${i.label}</span><span>${i.val}</span></div>`).join(''); } if(data.security) { document.getElementById('s-status').innerText = data.security.status; document.getElementById('s-tip').innerText = data.security.tip; } const map = L.map('map-container', {scrollWheelZoom: true}).setView([data.map.waypoints[0].lat, data.map.waypoints[0].lon], 7); L.tileLayer('https: const createIcon = (n) => L.divIcon({ className:'', html: `<div style="background:linear-gradient(135deg,#e98a15,#d47710);color:white;width:34px;height:34px;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-family:'Poppins';">${n}</div>`, iconSize:[34,34],iconAnchor:[17,17],popupAnchor:[0,-20] }); const markers = []; data.map.waypoints.forEach((wp,i) => { const popup = ` <div style="width:260px;font-family:'Inter',sans-serif;"> <div style="height:130px;width:100%;background:url('${wp.photo}') center/cover no-repeat;border-radius:8px 8px 0 0;margin-bottom:10px;"></div> <div style="padding:0 4px;padding-bottom:10px;"> <h4 style="margin:0 0 4px;color:#001427;font-size:15px;font-family:'Poppins',sans-serif;display:flex;align-items:center;justify-content:space-between;">${wp.name} <span style="background:#e98a15;color:white;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;">Day ${wp.days}</span></h4> <p style="font-size:12px;color:#666;line-height:1.4;margin:0 0 8px;">${wp.desc}</p> ${wp.highlights ? `<div style="background:#f8f9fa;padding:8px;border-radius:6px;font-size:11px;color:#555;border:1px solid #eee;">✨ ${wp.highlights.slice(0,3).join(' • ')}</div>` : ''} </div> </div>`; markers.push(L.marker([wp.lat,wp.lon],{icon:createIcon(i+1)}).bindPopup(popup).addTo(map)); }); if(data.map.route) { L.polyline(data.map.route.map(i=>[data.map.waypoints[i].lat,data.map.waypoints[i].lon]), {color:'#e98a15',weight:4,dashArray:'10,10',opacity:0.8, lineCap:'round'}).addTo(map); } const group = new L.featureGroup(markers); map.fitBounds(group.getBounds().pad(0.1)); })(); </script></div>