<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 with 5 adults, traveling with friends. The group is not a family and prefers to travel in March 2026 for about 2 weeks. They are interested in luxury hotels, guesthouses, and eco lodges, with a budget of 2000 euros per person. The trip will be accompanied by a driver-guide. Florian is just starting to plan and wants to enjoy the trip and see some churches. Exact travel dates are not 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 with 5 adults, traveling with friends. The group is not a family and prefers to travel in March 2026 for about 2 weeks. They are interested in luxury hotels, guesthouses, and eco lodges, with a budget of 2000 euros per person. The trip will be accompanied by a driver-guide. Florian is just starting to plan and wants to enjoy the trip and see some churches. Exact travel dates are not 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","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-5","desc":"The capital city known for its history and culture.","photo":"https://source.unsplash.com/600x400/?Yerevan","highlights":["Republic Square","Cascade Complex"]},{"name":"Lake Sevan","lat":40.5703,"lon":45.3095,"days":"6-7","desc":"A stunning lake known for its beauty and monasteries.","photo":"https://source.unsplash.com/600x400/?LakeSevan","highlights":["Sevanavank Monastery","Beach Activities"]},{"name":"Dilijan","lat":40.591,"lon":44.9792,"days":"8-10","desc":"A picturesque town in the mountains, often called the 'Switzerland of Armenia'.","photo":"https://source.unsplash.com/600x400/?Dilijan","highlights":["Dilijan National Park","Haghartsin Monastery"]},{"name":"Goris","lat":39.5707,"lon":46.3305,"days":"11-12","desc":"Known for its unique rock formations and ancient history.","photo":"https://source.unsplash.com/600x400/?Goris","highlights":["Tatev Monastery","Goris Rock Formations"]},{"name":"Khor Virap","lat":39.8483,"lon":40.1677,"days":"13-14","desc":"A historic site with stunning views of Mount Ararat.","photo":"https://source.unsplash.com/600x400/?KhorVirap","highlights":["Khor Virap Monastery","Views of Mount Ararat"]}],"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>