{"id":16139,"date":"2026-04-24T23:20:43","date_gmt":"2026-04-24T17:50:43","guid":{"rendered":"https:\/\/himtrails.in\/?page_id=16139"},"modified":"2026-04-26T07:04:50","modified_gmt":"2026-04-26T01:34:50","slug":"himachal-trip-itinerary-planner","status":"publish","type":"page","link":"https:\/\/himtrails.in\/hi\/himachal-trip-itinerary-planner\/","title":{"rendered":"Himachal Trip Itinerary Planner"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"16139\" class=\"elementor elementor-16139\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ee3e70 e-flex e-con-boxed e-con e-parent\" data-id=\"9ee3e70\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6362ab2 elementor-widget elementor-widget-html\" data-id=\"6362ab2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"Organization\",\r\n  \"@id\": \"https:\/\/himtrails.in\/#organization\",\r\n  \"name\": \"HimTrails\",\r\n  \"alternateName\": \"Him Trails\",\r\n  \"url\": \"https:\/\/himtrails.in\/\",\r\n  \"logo\": {\r\n    \"@type\": \"ImageObject\",\r\n    \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Him-Trails.png\",\r\n    \"caption\": \"HimTrails \u2014 Breathe the Heights, Live the Trails\"\r\n  },\r\n  \"image\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Him-Trails.png\",\r\n  \"description\": \"HimTrails is a Shimla-based Himachal Pradesh tour and travel company offering curated tour packages, free itinerary planner and cost calculator tools, and custom trips across Manali, Shimla, Spiti Valley, Leh Ladakh, Kasol, Dharamshala, Kinnaur, Jibhi, Bir Billing, Tirthan, Narkanda, and Chamba.\",\r\n  \"slogan\": \"Breathe the Heights, Live the Trails\",\r\n  \"founder\": {\r\n    \"@type\": \"Person\",\r\n    \"name\": \"Praveen Chauhan\",\r\n    \"url\": \"https:\/\/himtrails.in\/praveen-chauhan\/\",\r\n    \"jobTitle\": \"Founder\",\r\n    \"worksFor\": { \"@id\": \"https:\/\/himtrails.in\/#organization\" }\r\n  },\r\n  \"address\": {\r\n    \"@type\": \"PostalAddress\",\r\n    \"addressLocality\": \"Shimla\",\r\n    \"addressRegion\": \"Himachal Pradesh\",\r\n    \"addressCountry\": \"IN\"\r\n  },\r\n  \"contactPoint\": [\r\n    {\r\n      \"@type\": \"ContactPoint\",\r\n      \"telephone\": \"+91-77176-97177\",\r\n      \"contactType\": \"customer service\",\r\n      \"areaServed\": \"IN\",\r\n      \"availableLanguage\": [\"English\", \"Hindi\"]\r\n    }\r\n  ],\r\n  \"email\": \"go.himtrails@gmail.com\",\r\n  \"telephone\": \"+91-77176-97177\",\r\n  \"aggregateRating\": {\r\n    \"@type\": \"AggregateRating\",\r\n    \"ratingValue\": \"4.9\",\r\n    \"reviewCount\": \"3973\",\r\n    \"bestRating\": \"5\",\r\n    \"worstRating\": \"1\"\r\n  },\r\n  \"knowsAbout\": [\r\n    \"Himachal Pradesh tourism\",\r\n    \"Leh Ladakh travel\",\r\n    \"Manali tour packages\",\r\n    \"Spiti Valley expeditions\",\r\n    \"Kasol and Parvati Valley tours\",\r\n    \"Shimla tours\",\r\n    \"Dharamshala and McLeodganj trips\",\r\n    \"Bir Billing paragliding\",\r\n    \"Kinnaur circuit tours\",\r\n    \"Jibhi and Tirthan Valley trips\",\r\n    \"Narkanda and Chamba tours\",\r\n    \"Himachal honeymoon packages\",\r\n    \"Himachal family tours\",\r\n    \"Himachal adventure tours\",\r\n    \"Himachal trekking and camping\"\r\n  ],\r\n  \"areaServed\": [\r\n    { \"@type\": \"State\", \"name\": \"Himachal Pradesh\" },\r\n    { \"@type\": \"AdministrativeArea\", \"name\": \"Ladakh\" }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"TravelAgency\",\r\n  \"@id\": \"https:\/\/himtrails.in\/#travelagency\",\r\n  \"name\": \"HimTrails\",\r\n  \"image\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Him-Trails.png\",\r\n  \"logo\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Him-Trails.png\",\r\n  \"url\": \"https:\/\/himtrails.in\/\",\r\n  \"telephone\": \"+91-77176-97177\",\r\n  \"email\": \"go.himtrails@gmail.com\",\r\n  \"description\": \"HimTrails is Shimla's trusted local tour and travel company for Himachal Pradesh and Leh Ladakh. Free day-by-day itinerary planner, trip cost calculator, custom tour packages across 12 destinations, 1000+ verified hotel partners, and 3,973+ happy travellers.\",\r\n  \"priceRange\": \"INR\",\r\n  \"currenciesAccepted\": \"INR\",\r\n  \"address\": {\r\n    \"@type\": \"PostalAddress\",\r\n    \"addressLocality\": \"Shimla\",\r\n    \"addressRegion\": \"Himachal Pradesh\",\r\n    \"addressCountry\": \"IN\"\r\n  },\r\n  \"openingHoursSpecification\": [\r\n    {\r\n      \"@type\": \"OpeningHoursSpecification\",\r\n      \"dayOfWeek\": [\"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n      \"opens\": \"10:00\",\r\n      \"closes\": \"18:00\"\r\n    }\r\n  ],\r\n  \"hasOfferCatalog\": {\r\n    \"@type\": \"OfferCatalog\",\r\n    \"name\": \"Himachal and Leh Ladakh Tour Packages\",\r\n    \"itemListElement\": [\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Manali Tour Packages\", \"url\": \"https:\/\/himtrails.in\/manali-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Shimla Tour Packages\", \"url\": \"https:\/\/himtrails.in\/shimla-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Spiti Tour Packages\", \"url\": \"https:\/\/himtrails.in\/spiti-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Leh Ladakh Tour Packages\", \"url\": \"https:\/\/himtrails.in\/leh-ladakh-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Kasol Tour Packages\", \"url\": \"https:\/\/himtrails.in\/kasol-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Dharamshala Tour Packages\", \"url\": \"https:\/\/himtrails.in\/dharamshala-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Bir Billing Tour Packages\", \"url\": \"https:\/\/himtrails.in\/bir-billing-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Jibhi Tour Packages\", \"url\": \"https:\/\/himtrails.in\/jibhi-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Tirthan Tour Packages\", \"url\": \"https:\/\/himtrails.in\/tirthan-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Kinnaur Tour Packages\", \"url\": \"https:\/\/himtrails.in\/kinnaur-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Narkanda Tour Packages\", \"url\": \"https:\/\/himtrails.in\/narkanda-tour-packages\/\" } },\r\n      { \"@type\": \"Offer\", \"itemOffered\": { \"@type\": \"Service\", \"name\": \"Chamba Tour Packages\", \"url\": \"https:\/\/himtrails.in\/chamba-tour-packages\/\" } }\r\n    ]\r\n  },\r\n  \"aggregateRating\": {\r\n    \"@type\": \"AggregateRating\",\r\n    \"ratingValue\": \"4.9\",\r\n    \"reviewCount\": \"3973\",\r\n    \"bestRating\": \"5\",\r\n    \"worstRating\": \"1\"\r\n  },\r\n  \"review\": [\r\n    {\r\n      \"@type\": \"Review\",\r\n      \"author\": { \"@type\": \"Person\", \"name\": \"Ravi Mehta\" },\r\n      \"reviewRating\": { \"@type\": \"Rating\", \"ratingValue\": \"5\", \"bestRating\": \"5\" },\r\n      \"reviewBody\": \"The Himachal trip was just awesome. Special thanks to HimTrails for seamless coordination.\",\r\n      \"itemReviewed\": { \"@id\": \"https:\/\/himtrails.in\/#travelagency\" }\r\n    },\r\n    {\r\n      \"@type\": \"Review\",\r\n      \"author\": { \"@type\": \"Person\", \"name\": \"Pooja Sharma\" },\r\n      \"reviewRating\": { \"@type\": \"Rating\", \"ratingValue\": \"5\", \"bestRating\": \"5\" },\r\n      \"reviewBody\": \"Amazing Spiti tour! Hotels and driver were excellent. Highly recommend for offbeat places.\",\r\n      \"itemReviewed\": { \"@id\": \"https:\/\/himtrails.in\/#travelagency\" }\r\n    },\r\n    {\r\n      \"@type\": \"Review\",\r\n      \"author\": { \"@type\": \"Person\", \"name\": \"Nidhi Kaur\" },\r\n      \"reviewRating\": { \"@type\": \"Rating\", \"ratingValue\": \"5\", \"bestRating\": \"5\" },\r\n      \"reviewBody\": \"Lovely honeymoon in Jibhi. Special thanks for the surprise cake and room decor!\",\r\n      \"itemReviewed\": { \"@id\": \"https:\/\/himtrails.in\/#travelagency\" }\r\n    },\r\n    {\r\n      \"@type\": \"Review\",\r\n      \"author\": { \"@type\": \"Person\", \"name\": \"Amit Tandon\" },\r\n      \"reviewRating\": { \"@type\": \"Rating\", \"ratingValue\": \"5\", \"bestRating\": \"5\" },\r\n      \"reviewBody\": \"Kinnaur trip was like a dream! Thank you HimTrails for curating such a peaceful and scenic journey.\",\r\n      \"itemReviewed\": { \"@id\": \"https:\/\/himtrails.in\/#travelagency\" }\r\n    },\r\n    {\r\n      \"@type\": \"Review\",\r\n      \"author\": { \"@type\": \"Person\", \"name\": \"Kunal Joshi\" },\r\n      \"reviewRating\": { \"@type\": \"Rating\", \"ratingValue\": \"5\", \"bestRating\": \"5\" },\r\n      \"reviewBody\": \"I booked a Leh bike trip with them. It was extremely well planned and very safe for solo travelers.\",\r\n      \"itemReviewed\": { \"@id\": \"https:\/\/himtrails.in\/#travelagency\" }\r\n    }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"WebSite\",\r\n  \"@id\": \"https:\/\/himtrails.in\/#website\",\r\n  \"url\": \"https:\/\/himtrails.in\/\",\r\n  \"name\": \"HimTrails\",\r\n  \"description\": \"HimTrails \u2014 Himachal Pradesh Tour and Travel Company based in Shimla. Tour packages, trip itinerary planner, and trip cost calculator.\",\r\n  \"publisher\": { \"@id\": \"https:\/\/himtrails.in\/#organization\" },\r\n  \"inLanguage\": \"en-IN\"\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"WebPage\",\r\n  \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#webpage\",\r\n  \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/\",\r\n  \"name\": \"Himachal Trip Itinerary Planner | Free Day-wise Tool by HimTrails\",\r\n  \"description\": \"Free Himachal trip itinerary planner \u2014 build your day-by-day Himachal Pradesh and Leh Ladakh trip plan instantly. 12 destinations, 5 trip styles, durations from 2N\/3D to 10N\/11D, downloadable PDF. Built by HimTrails local experts in Shimla.\",\r\n  \"inLanguage\": \"en-IN\",\r\n  \"isPartOf\": { \"@id\": \"https:\/\/himtrails.in\/#website\" },\r\n  \"about\": { \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#webapplication\" },\r\n  \"mainEntity\": { \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#webapplication\" },\r\n  \"breadcrumb\": { \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#breadcrumb\" },\r\n  \"datePublished\": \"2026-01-01\",\r\n  \"dateModified\": \"2026-04-25\"\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"WebApplication\",\r\n  \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#webapplication\",\r\n  \"name\": \"Himachal Trip Itinerary Planner\",\r\n  \"alternateName\": [\"Himachal Itinerary Planner\", \"Himachal Trip Planner\", \"Himachal Day-wise Itinerary Builder\"],\r\n  \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/\",\r\n  \"applicationCategory\": \"TravelApplication\",\r\n  \"applicationSubCategory\": \"Itinerary Planner\",\r\n  \"operatingSystem\": \"Web browser (all)\",\r\n  \"browserRequirements\": \"Requires JavaScript. Works on Chrome, Safari, Firefox, Edge, and mobile browsers.\",\r\n  \"description\": \"Free Himachal trip itinerary planner by HimTrails \u2014 build your day-by-day Himachal Pradesh and Leh Ladakh trip plan instantly. 12 destinations (Manali, Shimla, Kasol, Dharamshala, Spiti Valley, Leh Ladakh, Kinnaur, Bir Billing, Jibhi, Tirthan, Narkanda, Chamba), 5 trip styles (Couple, Family, Group, Adventure, Luxury), durations from 2 Nights \/ 3 Days to 10 Nights \/ 11 Days, downloadable PDF with HimTrails branding. No sign-up required.\",\r\n  \"inLanguage\": \"en-IN\",\r\n  \"isAccessibleForFree\": true,\r\n  \"featureList\": [\r\n    \"12 Himachal and Leh Ladakh destinations\",\r\n    \"5 trip styles (Couple, Family, Group, Adventure, Luxury)\",\r\n    \"Durations from 2 Nights \/ 3 Days to 10 Nights \/ 11 Days\",\r\n    \"Instant day-by-day itinerary generation\",\r\n    \"Branded PDF download of your itinerary\",\r\n    \"WhatsApp quote integration\",\r\n    \"Altitude-aware planning for Spiti and Leh Ladakh\",\r\n    \"Mobile-optimised responsive design\",\r\n    \"No sign-up, no email required\"\r\n  ],\r\n  \"offers\": {\r\n    \"@type\": \"Offer\",\r\n    \"price\": \"0\",\r\n    \"priceCurrency\": \"INR\",\r\n    \"availability\": \"https:\/\/schema.org\/InStock\"\r\n  },\r\n  \"aggregateRating\": {\r\n    \"@type\": \"AggregateRating\",\r\n    \"ratingValue\": \"4.9\",\r\n    \"reviewCount\": \"3973\",\r\n    \"bestRating\": \"5\",\r\n    \"worstRating\": \"1\"\r\n  },\r\n  \"provider\": { \"@id\": \"https:\/\/himtrails.in\/#organization\" },\r\n  \"publisher\": { \"@id\": \"https:\/\/himtrails.in\/#organization\" },\r\n  \"creator\": { \"@id\": \"https:\/\/himtrails.in\/#organization\" },\r\n  \"datePublished\": \"2026-01-01\",\r\n  \"dateModified\": \"2026-04-25\"\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"HowTo\",\r\n  \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#howto\",\r\n  \"name\": \"How to Plan a Himachal Trip with the HimTrails Itinerary Planner\",\r\n  \"description\": \"Build your perfect day-by-day Himachal Pradesh and Leh Ladakh trip itinerary in three simple steps using the free HimTrails online planner.\",\r\n  \"totalTime\": \"PT10S\",\r\n  \"estimatedCost\": {\r\n    \"@type\": \"MonetaryAmount\",\r\n    \"currency\": \"INR\",\r\n    \"value\": \"0\"\r\n  },\r\n  \"supply\": [\r\n    { \"@type\": \"HowToSupply\", \"name\": \"Internet-connected device (mobile, tablet, or desktop)\" }\r\n  ],\r\n  \"tool\": [\r\n    { \"@type\": \"HowToTool\", \"name\": \"HimTrails Trip Itinerary Planner\", \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/\" }\r\n  ],\r\n  \"step\": [\r\n    {\r\n      \"@type\": \"HowToStep\",\r\n      \"position\": 1,\r\n      \"name\": \"Pick your Himachal destination\",\r\n      \"text\": \"Choose from 12 destinations: Manali, Shimla, Kasol, Dharamshala, Bir Billing, Jibhi, Tirthan Valley, Narkanda, Chamba, Kinnaur, Spiti Valley, or Leh Ladakh. Each destination has multiple curated day plans.\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#step-destination\"\r\n    },\r\n    {\r\n      \"@type\": \"HowToStep\",\r\n      \"position\": 2,\r\n      \"name\": \"Select your trip duration\",\r\n      \"text\": \"Pick anywhere from 2 Nights \/ 3 Days to 10 Nights \/ 11 Days. The planner automatically handles arrival and departure days. For Spiti Valley a minimum of 7 days and for Leh Ladakh a minimum of 6 days are recommended for safe acclimatisation.\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#step-duration\"\r\n    },\r\n    {\r\n      \"@type\": \"HowToStep\",\r\n      \"position\": 3,\r\n      \"name\": \"Choose your trip style and generate\",\r\n      \"text\": \"Select Couple, Family, Group, Adventure, or Luxury. Click Generate My Itinerary. Your complete day-by-day plan with routes, activities, overnight stays, and meals appears instantly. Download as a HimTrails-branded PDF or WhatsApp the team for a detailed quote.\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#step-style\"\r\n    }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"BreadcrumbList\",\r\n  \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#breadcrumb\",\r\n  \"itemListElement\": [\r\n    {\r\n      \"@type\": \"ListItem\",\r\n      \"position\": 1,\r\n      \"name\": \"Home\",\r\n      \"item\": \"https:\/\/himtrails.in\/\"\r\n    },\r\n    {\r\n      \"@type\": \"ListItem\",\r\n      \"position\": 2,\r\n      \"name\": \"Himachal Trip Itinerary Planner\",\r\n      \"item\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/\"\r\n    }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"ItemList\",\r\n  \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#destinations\",\r\n  \"name\": \"Himachal and Leh Ladakh Destinations Covered by the HimTrails Itinerary Planner\",\r\n  \"description\": \"All 12 destinations available in the HimTrails Trip Itinerary Planner, each with verified HimTrails tour packages.\",\r\n  \"numberOfItems\": 12,\r\n  \"itemListOrder\": \"https:\/\/schema.org\/ItemListOrderAscending\",\r\n  \"itemListElement\": [\r\n    { \"@type\": \"ListItem\", \"position\": 1,  \"name\": \"Manali\",         \"url\": \"https:\/\/himtrails.in\/manali-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 2,  \"name\": \"Shimla\",         \"url\": \"https:\/\/himtrails.in\/shimla-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 3,  \"name\": \"Kasol\",          \"url\": \"https:\/\/himtrails.in\/kasol-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 4,  \"name\": \"Dharamshala\",    \"url\": \"https:\/\/himtrails.in\/dharamshala-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 5,  \"name\": \"Bir Billing\",    \"url\": \"https:\/\/himtrails.in\/bir-billing-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 6,  \"name\": \"Jibhi\",          \"url\": \"https:\/\/himtrails.in\/jibhi-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 7,  \"name\": \"Tirthan Valley\", \"url\": \"https:\/\/himtrails.in\/tirthan-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 8,  \"name\": \"Narkanda\",       \"url\": \"https:\/\/himtrails.in\/narkanda-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 9,  \"name\": \"Chamba\",         \"url\": \"https:\/\/himtrails.in\/chamba-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 10, \"name\": \"Kinnaur\",        \"url\": \"https:\/\/himtrails.in\/kinnaur-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 11, \"name\": \"Spiti Valley\",   \"url\": \"https:\/\/himtrails.in\/spiti-tour-packages\/\" },\r\n    { \"@type\": \"ListItem\", \"position\": 12, \"name\": \"Leh Ladakh\",     \"url\": \"https:\/\/himtrails.in\/leh-ladakh-tour-packages\/\" }\r\n  ]\r\n}\r\n<\/script>\r\n\r\n\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"SiteNavigationElement\",\r\n  \"@id\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/#relatedtools\",\r\n  \"name\": \"HimTrails Smart Travel Tools\",\r\n  \"hasPart\": [\r\n    {\r\n      \"@type\": \"WebApplication\",\r\n      \"name\": \"Himachal Trip Itinerary Planner\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-trip-itinerary-planner\/\",\r\n      \"description\": \"Free day-by-day Himachal and Leh Ladakh trip itinerary builder with downloadable PDF.\",\r\n      \"applicationCategory\": \"TravelApplication\",\r\n      \"isAccessibleForFree\": true,\r\n      \"offers\": { \"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"INR\" }\r\n    },\r\n    {\r\n      \"@type\": \"WebApplication\",\r\n      \"name\": \"Himachal Trip Cost Calculator\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-trip-cost-calculator\/\",\r\n      \"description\": \"Free Himachal trip cost estimator \u2014 instant per-person and total trip cost by destination, duration, group size, and package tier.\",\r\n      \"applicationCategory\": \"TravelApplication\",\r\n      \"isAccessibleForFree\": true,\r\n      \"offers\": { \"@type\": \"Offer\", \"price\": \"0\", \"priceCurrency\": \"INR\" }\r\n    }\r\n  ]\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6df12e8 elementor-widget elementor-widget-html\" data-id=\"6df12e8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================ -->\r\n<!-- HIMTRAILS TRIP ITINERARY PLANNER v5 -->\r\n<!-- Multi-destination combos, verified data, drive times,       -->\r\n<!-- permits, day editor, share, branded PDF                     -->\r\n<!-- ============================================================ -->\r\n<div id=\"himtrails-planner-wrapper\">\r\n<style>\r\n  #himtrails-planner-wrapper, #himtrails-planner-wrapper *,\r\n  #himtrails-planner-wrapper *::before, #himtrails-planner-wrapper *::after{\r\n    box-sizing:border-box;\r\n    font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;\r\n    -webkit-tap-highlight-color:transparent;\r\n  }\r\n  #himtrails-planner-wrapper{\r\n    max-width:1200px;\r\n    margin:40px auto 0 auto;\r\n    padding:0;\r\n    color:#2c3e50;\r\n    width:100%;\r\n    container-type:inline-size;\r\n    container-name:htplan;\r\n    margin-bottom:0 !important;\r\n  }\r\n  #himtrails-planner-wrapper .ht-plan h2,\r\n  #himtrails-planner-wrapper .ht-plan h3,\r\n  #himtrails-planner-wrapper .ht-plan h4,\r\n  #himtrails-planner-wrapper .ht-plan p{margin:0;padding:0}\r\n\r\n  .ht-plan{\r\n    background:#ffffff;\r\n    border-radius:20px;\r\n    overflow:hidden;\r\n    box-shadow:0 10px 40px rgba(15,76,58,0.08), 0 2px 8px rgba(0,0,0,0.04);\r\n    border:1px solid #eef2f5;\r\n    margin-bottom:0 !important;\r\n  }\r\n\r\n  .ht-plan-header{\r\n    background:linear-gradient(135deg,#0f4c3a 0%,#1a7a5e 55%,#2d9d7a 100%);\r\n    padding:44px 40px;\r\n    color:#fff;\r\n    position:relative;\r\n    overflow:hidden;\r\n  }\r\n  .ht-plan-header::before{\r\n    content:\"\";position:absolute;top:-60px;right:-60px;\r\n    width:220px;height:220px;\r\n    background:rgba(255,255,255,0.08);border-radius:50%;\r\n    pointer-events:none;\r\n  }\r\n  .ht-plan-header::after{\r\n    content:\"\";position:absolute;bottom:-90px;left:-40px;\r\n    width:200px;height:200px;\r\n    background:rgba(255,255,255,0.05);border-radius:50%;\r\n    pointer-events:none;\r\n  }\r\n  #himtrails-planner-wrapper .ht-plan .ht-plan-header h2.ht-tag{\r\n    display:inline-block;\r\n    background:rgba(255,255,255,0.18);\r\n    -webkit-backdrop-filter:blur(4px);\r\n    backdrop-filter:blur(4px);\r\n    padding:7px 16px;border-radius:20px;\r\n    font-size:13px;font-weight:700;letter-spacing:1.2px;\r\n    margin:0 0 18px 0;position:relative;z-index:2;color:#fff;\r\n    line-height:1.3;font-family:inherit;text-transform:none;\r\n    border:none;box-shadow:none;width:auto;text-align:left;\r\n  }\r\n  .ht-plan-header h3{\r\n    font-size:30px;font-weight:700;\r\n    margin-bottom:10px;position:relative;z-index:2;\r\n    line-height:1.2;color:#fff;letter-spacing:-0.5px;\r\n  }\r\n  .ht-plan-header p{\r\n    font-size:15px;opacity:0.92;position:relative;z-index:2;\r\n    color:#fff;line-height:1.55;max-width:580px;\r\n  }\r\n\r\n  .ht-plan-body{padding:40px}\r\n\r\n  .ht-section-label{\r\n    display:block;font-size:12px;font-weight:700;\r\n    color:#1a7a5e;margin-bottom:14px;\r\n    letter-spacing:1.2px;text-transform:uppercase;\r\n  }\r\n\r\n  .ht-mode-toggle{\r\n    display:grid;grid-template-columns:1fr 1fr;gap:8px;\r\n    margin-bottom:24px;padding:6px;\r\n    background:#f0f9f5;border-radius:14px;border:1px solid #c8e6d5;\r\n  }\r\n  .ht-mode-btn{\r\n    padding:14px 12px;border:none;border-radius:10px;\r\n    background:transparent;color:#1a4336;cursor:pointer;\r\n    font-size:14px;font-weight:600;font-family:inherit;\r\n    transition:background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.15s ease;\r\n    display:flex;align-items:center;justify-content:center;gap:8px;\r\n    min-width:0;text-align:center;line-height:1.2;\r\n    white-space:nowrap;overflow:hidden;\r\n  }\r\n  .ht-mode-btn svg{flex-shrink:0}\r\n  .ht-mode-btn .mode-label-full{display:inline}\r\n  .ht-mode-btn .mode-label-short{display:none}\r\n  .ht-mode-btn.active{\r\n    background:#fff;color:#0f4c3a;\r\n    box-shadow:0 2px 8px rgba(15,76,58,0.1);\r\n  }\r\n  .ht-mode-btn:hover:not(.active){background:rgba(255,255,255,0.55)}\r\n  .ht-mode-btn:active{transform:scale(0.98)}\r\n\r\n  .ht-form-grid{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr 1fr;\r\n    gap:18px;\r\n    margin-bottom:24px;\r\n  }\r\n  .ht-form-grid.combo-mode{grid-template-columns:1fr 1fr;}\r\n\r\n  .ht-field label{\r\n    display:block;font-size:13px;font-weight:600;\r\n    color:#1a4336;margin-bottom:10px;letter-spacing:0.2px;\r\n  }\r\n  .ht-field label .req{color:#e67e22;margin-left:2px;font-weight:700}\r\n\r\n  .ht-field select, .ht-field input{\r\n    width:100%;padding:14px 16px;\r\n    border:2px solid #e5ecea;border-radius:10px;\r\n    font-size:16px;color:#2c3e50;background:#fafbfc;\r\n    transition:border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;\r\n    outline:none;font-weight:500;line-height:1.3;\r\n    height:52px;\r\n    font-family:inherit;\r\n    -webkit-appearance:none;\r\n    appearance:none;\r\n  }\r\n  .ht-field select:hover, .ht-field input:hover{border-color:#c8dad3}\r\n  .ht-field select:disabled{\r\n    background-color:#f0f4f3;color:#90a4ae;cursor:not-allowed;\r\n    border-color:#e5ecea;\r\n  }\r\n  .ht-field select:disabled:hover{border-color:#e5ecea}\r\n  .ht-field select optgroup{\r\n    font-weight:700;color:#0f4c3a;font-style:normal;\r\n    background:#f0f9f5;padding:8px 0;font-size:12px;\r\n    letter-spacing:0.4px;text-transform:uppercase;\r\n  }\r\n  .ht-field select option{\r\n    font-weight:500;color:#2c3e50;background:#fff;\r\n    padding:8px 10px;font-size:14px;\r\n  }\r\n  .ht-field select:focus, .ht-field input:focus{\r\n    border-color:#1a7a5e;background:#fff;\r\n    box-shadow:0 0 0 4px rgba(26,122,94,0.12);\r\n  }\r\n  .ht-field select{\r\n    cursor:pointer;\r\n    background-image:url(\"data:image\/svg+xml;charset=UTF-8,%3csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3e%3cpath d='M1 1.5L6 6.5L11 1.5' stroke='%231a7a5e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/%3e%3c\/svg%3e\");\r\n    background-repeat:no-repeat;background-position:right 16px center;\r\n    padding-right:42px;\r\n  }\r\n\r\n  .ht-info-note{\r\n    display:none;padding:11px 14px;margin-bottom:18px;\r\n    background:#eef9f3;border:1px solid #c8e6d5;\r\n    color:#1a4336;border-radius:10px;font-size:12.5px;\r\n    font-weight:500;line-height:1.5;\r\n    align-items:flex-start;gap:9px;\r\n  }\r\n  .ht-info-note.show{display:flex}\r\n  .ht-info-note svg{flex-shrink:0;margin-top:2px;color:#1a7a5e}\r\n\r\n  .ht-trip-style{margin-bottom:24px}\r\n  .ht-style-options{\r\n    display:grid;grid-template-columns:repeat(5,1fr);gap:12px;\r\n  }\r\n  .ht-style-opt{position:relative}\r\n  .ht-style-opt input{\r\n    position:absolute;opacity:0;pointer-events:none;width:0;height:0;\r\n  }\r\n  .ht-style-opt label{\r\n    display:flex;flex-direction:column;align-items:center;justify-content:center;\r\n    padding:16px 8px;text-align:center;\r\n    border:2px solid #e5ecea;border-radius:10px;cursor:pointer;\r\n    color:#546e7a;background:#fafbfc;\r\n    transition:border-color 0.2s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;\r\n    margin:0;min-height:96px;\r\n  }\r\n  .ht-style-opt label .style-icon{font-size:22px;margin-bottom:6px;line-height:1}\r\n  .ht-style-opt label .style-title{display:block;font-size:13px;font-weight:700;line-height:1.2}\r\n  .ht-style-opt label .style-sub{\r\n    display:block;font-size:10.5px;font-weight:500;\r\n    color:#90a4ae;margin-top:4px;line-height:1.25;letter-spacing:0.1px;\r\n  }\r\n  .ht-style-opt label:hover{border-color:#1a7a5e;background:#fff}\r\n  .ht-style-opt input:checked + label{\r\n    background:#1a7a5e;border-color:#1a7a5e;color:#fff;\r\n    box-shadow:0 4px 12px rgba(26,122,94,0.2);\r\n  }\r\n  .ht-style-opt input:checked + label .style-sub{color:rgba(255,255,255,0.88)}\r\n  .ht-style-opt input:focus-visible + label{\r\n    box-shadow:0 0 0 4px rgba(26,122,94,0.2);\r\n  }\r\n\r\n  .ht-error{\r\n    display:none;padding:14px 16px;\r\n    background:#fff5f0;border:1px solid #ffccbc;\r\n    color:#c0392b;border-radius:10px;\r\n    font-size:13px;font-weight:500;margin-bottom:18px;\r\n    align-items:flex-start;gap:10px;line-height:1.45;\r\n  }\r\n  .ht-error.show{display:flex}\r\n  .ht-error svg{flex-shrink:0;margin-top:1px}\r\n\r\n  .ht-warning{\r\n    display:none;padding:14px 16px;\r\n    background:#fff9e6;border:1px solid #f4e4a8;\r\n    color:#7c5d00;border-radius:10px;\r\n    font-size:13px;font-weight:500;margin-bottom:18px;\r\n    align-items:flex-start;gap:10px;line-height:1.5;\r\n  }\r\n  .ht-warning.show{display:flex}\r\n  .ht-warning svg{flex-shrink:0;margin-top:1px;color:#b8860b}\r\n\r\n  .ht-btn-wrap{margin-top:8px}\r\n  .ht-plan-btn{\r\n    width:100%;padding:18px 24px;\r\n    background:linear-gradient(135deg,#0f4c3a 0%,#1a7a5e 100%);\r\n    color:#fff;border:none;border-radius:10px;\r\n    font-size:16px;font-weight:700;cursor:pointer;\r\n    letter-spacing:0.4px;\r\n    transition:transform 0.2s ease, box-shadow 0.2s ease;\r\n    box-shadow:0 4px 14px rgba(26,122,94,0.28);\r\n    font-family:inherit;line-height:1.3;\r\n    -webkit-appearance:none;appearance:none;\r\n    display:flex;align-items:center;justify-content:center;gap:8px;\r\n  }\r\n  .ht-plan-btn:hover{\r\n    transform:translateY(-2px);\r\n    box-shadow:0 8px 22px rgba(26,122,94,0.36);\r\n  }\r\n  .ht-plan-btn:active{transform:translateY(0)}\r\n  .ht-plan-btn:focus-visible{outline:none;box-shadow:0 0 0 4px rgba(26,122,94,0.3)}\r\n\r\n  .ht-plan-result{display:none;margin-top:32px}\r\n  .ht-plan-result.show{display:block;animation:htFadeIn 0.4s ease}\r\n  @keyframes htFadeIn{\r\n    from{opacity:0;transform:translateY(10px)}\r\n    to{opacity:1;transform:translateY(0)}\r\n  }\r\n\r\n  .ht-plan-summary{\r\n    background:linear-gradient(135deg,#f0f9f5 0%,#e8f5ee 100%);\r\n    border:2px solid #c8e6d5;border-radius:14px;\r\n    padding:26px 28px;margin-bottom:24px;\r\n  }\r\n  .ht-summary-title{\r\n    font-size:12px;color:#1a4336;font-weight:700;\r\n    margin-bottom:6px;letter-spacing:1.2px;text-transform:uppercase;\r\n  }\r\n  .ht-summary-dest{\r\n    font-size:22px;color:#0f4c3a;font-weight:800;\r\n    line-height:1.3;letter-spacing:-0.3px;margin-bottom:10px;\r\n  }\r\n  .ht-summary-tagline{\r\n    font-size:14px;color:#1a4336;line-height:1.55;\r\n    margin-bottom:16px;font-weight:500;\r\n  }\r\n  .ht-summary-meta{display:flex;flex-wrap:wrap;gap:10px}\r\n  .ht-meta-chip{\r\n    display:inline-flex;align-items:center;gap:6px;\r\n    background:#fff;border:1px solid #d4e8dc;\r\n    padding:6px 12px;border-radius:20px;\r\n    font-size:12px;font-weight:600;color:#1a4336;\r\n  }\r\n  .ht-meta-chip svg{color:#1a7a5e}\r\n\r\n  .ht-quickfacts{\r\n    display:grid;grid-template-columns:repeat(4,1fr);gap:0;\r\n    background:#fff;border:1.5px solid #e5ecea;\r\n    border-radius:14px;margin-bottom:24px;overflow:hidden;\r\n  }\r\n  .ht-qf-item{padding:16px 14px;text-align:center;border-right:1px solid #eef2f5}\r\n  .ht-qf-item:last-child{border-right:none}\r\n  .ht-qf-icon{font-size:20px;margin-bottom:6px;line-height:1}\r\n  .ht-qf-label{\r\n    font-size:10.5px;font-weight:700;color:#90a4ae;\r\n    letter-spacing:1px;text-transform:uppercase;margin-bottom:3px;\r\n  }\r\n  .ht-qf-value{font-size:13px;font-weight:700;color:#0f4c3a;line-height:1.3}\r\n\r\n  .ht-days-container{display:flex;flex-direction:column;gap:18px}\r\n\r\n  .ht-day-card{\r\n    background:#fff;border:1.5px solid #e5ecea;\r\n    border-radius:14px;overflow:hidden;\r\n    transition:border-color 0.2s ease, box-shadow 0.2s ease;\r\n  }\r\n  .ht-day-card:hover{\r\n    border-color:#c8dad3;\r\n    box-shadow:0 4px 16px rgba(15,76,58,0.06);\r\n  }\r\n  .ht-day-header{\r\n    display:flex;align-items:center;gap:16px;\r\n    padding:18px 22px;\r\n    background:linear-gradient(to right,#f0f9f5,#fafbfc);\r\n    border-bottom:1.5px solid #e5ecea;\r\n    position:relative;\r\n  }\r\n  .ht-day-badge{\r\n    flex-shrink:0;\r\n    width:52px;height:52px;border-radius:12px;\r\n    background:linear-gradient(135deg,#0f4c3a 0%,#1a7a5e 100%);\r\n    color:#fff;display:flex;align-items:center;justify-content:center;\r\n    font-weight:800;font-size:11px;letter-spacing:0.5px;\r\n    flex-direction:column;line-height:1.1;\r\n    box-shadow:0 2px 8px rgba(15,76,58,0.2);\r\n  }\r\n  .ht-day-badge.transit{\r\n    background:linear-gradient(135deg,#d97706 0%,#ea580c 100%);\r\n  }\r\n  .ht-day-badge .day-label{font-size:9px;opacity:0.85;letter-spacing:1px}\r\n  .ht-day-badge .day-num{font-size:20px;margin-top:2px}\r\n  .ht-day-heading{flex:1;min-width:0}\r\n  .ht-day-title{\r\n    font-size:17px;font-weight:700;color:#0f4c3a;\r\n    line-height:1.3;letter-spacing:-0.2px;margin-bottom:3px;\r\n    word-wrap:break-word;\r\n  }\r\n  .ht-day-route{\r\n    font-size:12px;color:#1a7a5e;font-weight:600;\r\n    letter-spacing:0.3px;\r\n    display:flex;align-items:center;gap:6px;flex-wrap:wrap;\r\n  }\r\n  .ht-day-route svg{flex-shrink:0}\r\n\r\n  .ht-day-edit-btn{\r\n    flex-shrink:0;\r\n    background:#fff;border:1.5px solid #c8e6d5;\r\n    color:#1a7a5e;border-radius:8px;\r\n    padding:6px 11px;font-size:11px;font-weight:700;\r\n    letter-spacing:0.3px;cursor:pointer;font-family:inherit;\r\n    display:inline-flex;align-items:center;gap:5px;\r\n    transition:background 0.2s, color 0.2s, border-color 0.2s;\r\n    text-transform:uppercase;\r\n  }\r\n  .ht-day-edit-btn:hover{\r\n    background:#1a7a5e;color:#fff;border-color:#1a7a5e;\r\n  }\r\n  .ht-day-edit-btn svg{flex-shrink:0}\r\n\r\n  .ht-day-body{padding:18px 22px 20px 22px}\r\n  .ht-day-intro{\r\n    font-size:14px;color:#546e7a;line-height:1.6;\r\n    margin-bottom:14px;\r\n  }\r\n  .ht-activities{display:flex;flex-direction:column;gap:10px}\r\n  .ht-activity{\r\n    display:flex;gap:12px;align-items:flex-start;\r\n    font-size:13.5px;color:#37474f;line-height:1.55;\r\n  }\r\n  .ht-activity-dot{\r\n    flex-shrink:0;width:6px;height:6px;border-radius:50%;\r\n    background:#1a7a5e;margin-top:7px;\r\n  }\r\n  .ht-activity strong{color:#0f4c3a;font-weight:700}\r\n\r\n  .ht-day-meta-row{\r\n    display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;\r\n  }\r\n  .ht-day-chip{\r\n    display:inline-flex;align-items:center;gap:6px;\r\n    padding:6px 10px;border-radius:8px;\r\n    font-size:11.5px;font-weight:600;line-height:1.2;\r\n  }\r\n  .ht-day-chip.stay{background:#f0f9f5;color:#1a4336;border:1px solid #c8e6d5}\r\n  .ht-day-chip.meals{background:#fff5f0;color:#8a4a2b;border:1px solid #ffd4b8}\r\n  .ht-day-chip.distance{background:#eef2ff;color:#3730a3;border:1px solid #c7d2fe}\r\n  .ht-day-chip.time{background:#fef3c7;color:#78350f;border:1px solid #fde68a}\r\n  .ht-day-chip.difficulty{background:#fce7f3;color:#831843;border:1px solid #f9a8d4}\r\n  .ht-day-chip svg{flex-shrink:0}\r\n\r\n  .ht-day-edit-panel{\r\n    display:none;padding:14px 22px;\r\n    background:#fafbfc;border-top:1.5px solid #e5ecea;\r\n  }\r\n  .ht-day-edit-panel.show{display:block;animation:htFadeIn 0.25s ease}\r\n  .ht-day-edit-label{\r\n    font-size:11px;font-weight:700;color:#1a7a5e;\r\n    letter-spacing:1px;text-transform:uppercase;margin-bottom:10px;\r\n  }\r\n  .ht-day-edit-options{\r\n    display:flex;flex-direction:column;gap:8px;\r\n  }\r\n  .ht-day-edit-opt{\r\n    padding:10px 12px;background:#fff;\r\n    border:1.5px solid #e5ecea;border-radius:8px;\r\n    cursor:pointer;font-size:13px;color:#37474f;\r\n    font-family:inherit;text-align:left;\r\n    transition:border-color 0.2s, background 0.2s;\r\n    line-height:1.4;\r\n  }\r\n  .ht-day-edit-opt:hover{border-color:#1a7a5e;background:#f0f9f5}\r\n  .ht-day-edit-opt.current{\r\n    background:#e8f5ee;border-color:#1a7a5e;color:#0f4c3a;\r\n    font-weight:700;cursor:default;\r\n  }\r\n  .ht-day-edit-opt strong{color:#0f4c3a;font-weight:700}\r\n  .ht-day-edit-cancel{\r\n    margin-top:10px;padding:8px 14px;\r\n    background:transparent;border:none;\r\n    color:#90a4ae;font-size:12px;font-weight:600;\r\n    cursor:pointer;font-family:inherit;\r\n  }\r\n  .ht-day-edit-cancel:hover{color:#1a7a5e}\r\n\r\n  .ht-permits-card{\r\n    margin-top:24px;background:#fff;\r\n    border:1.5px solid #e5ecea;border-radius:14px;\r\n    padding:20px 22px;\r\n  }\r\n  .ht-permits-title{\r\n    font-size:12px;font-weight:700;letter-spacing:1px;\r\n    text-transform:uppercase;color:#0f4c3a;\r\n    margin-bottom:14px;display:flex;align-items:center;gap:8px;\r\n  }\r\n  .ht-permits-list{\r\n    list-style:none;padding:0;margin:0;\r\n    display:flex;flex-direction:column;gap:9px;\r\n  }\r\n  .ht-permits-list li{\r\n    font-size:13px;color:#37474f;line-height:1.5;\r\n    display:flex;gap:10px;align-items:flex-start;\r\n  }\r\n  .ht-permits-list li::before{\r\n    content:\"\";flex-shrink:0;\r\n    width:14px;height:14px;border-radius:50%;\r\n    margin-top:3px;background:#1a7a5e;\r\n    background-image:url(\"data:image\/svg+xml;charset=UTF-8,%3csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='20 6 9 17 4 12'\/%3e%3c\/svg%3e\");\r\n    background-repeat:no-repeat;background-position:center;\r\n  }\r\n  .ht-permits-list li strong{color:#0f4c3a;font-weight:700}\r\n\r\n  .ht-incl-section{\r\n    margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:16px;\r\n  }\r\n  .ht-incl-card{\r\n    background:#fff;border:1.5px solid #e5ecea;\r\n    border-radius:12px;padding:18px 20px;\r\n  }\r\n  .ht-incl-title{\r\n    font-size:12px;font-weight:700;letter-spacing:1px;\r\n    text-transform:uppercase;margin-bottom:12px;\r\n    display:flex;align-items:center;gap:8px;\r\n  }\r\n  .ht-incl-title.inc{color:#1a7a5e}\r\n  .ht-incl-title.exc{color:#c0392b}\r\n  .ht-incl-list{\r\n    list-style:none;padding:0;margin:0;\r\n    display:flex;flex-direction:column;gap:8px;\r\n  }\r\n  .ht-incl-list li{\r\n    font-size:13px;color:#37474f;line-height:1.5;\r\n    display:flex;gap:8px;align-items:flex-start;\r\n  }\r\n  .ht-incl-list li::before{\r\n    content:\"\";flex-shrink:0;\r\n    width:5px;height:5px;border-radius:50%;margin-top:7px;\r\n  }\r\n  .ht-incl-list.inc li::before{background:#1a7a5e}\r\n  .ht-incl-list.exc li::before{background:#c0392b}\r\n\r\n  .ht-pro-tip{\r\n    margin-top:20px;padding:18px 20px;\r\n    background:linear-gradient(to right,#fff9e6,#fefbf0);\r\n    border:1.5px solid #f4e4a8;border-radius:12px;\r\n    display:flex;gap:14px;align-items:flex-start;\r\n  }\r\n  .ht-pro-tip-icon{font-size:22px;line-height:1;flex-shrink:0;margin-top:2px}\r\n  .ht-pro-tip-body{flex:1}\r\n  .ht-pro-tip-title{\r\n    font-size:12px;font-weight:700;color:#7c5d00;\r\n    letter-spacing:1px;text-transform:uppercase;margin-bottom:5px;\r\n  }\r\n  .ht-pro-tip-text{font-size:13.5px;color:#5c4500;line-height:1.55}\r\n\r\n  .ht-plan-ctas{\r\n    margin-top:26px;padding:26px 22px;\r\n    background:linear-gradient(135deg,#f0f9f5 0%,#e8f5ee 100%);\r\n    border:2px solid #c8e6d5;border-radius:14px;text-align:center;\r\n  }\r\n  .ht-cta-heading{\r\n    font-size:17px;font-weight:800;color:#0f4c3a;\r\n    margin-bottom:6px;line-height:1.3;letter-spacing:-0.2px;\r\n  }\r\n  .ht-cta-sub{font-size:13px;color:#546e7a;line-height:1.5;margin-bottom:16px}\r\n  .ht-cta-row{\r\n    display:grid;grid-template-columns:1fr 1fr;gap:12px;\r\n    margin-bottom:12px;\r\n  }\r\n  .ht-cta-row:last-of-type{margin-bottom:0;}\r\n  .ht-cta{\r\n    display:flex;align-items:center;justify-content:center;gap:9px;\r\n    padding:16px 14px;border-radius:12px;\r\n    font-size:14.5px;font-weight:700;text-decoration:none;\r\n    transition:transform 0.18s ease, box-shadow 0.22s ease, background 0.22s ease, color 0.22s ease, border-color 0.22s ease;\r\n    text-align:center;line-height:1.25;\r\n    font-family:inherit;min-height:56px;\r\n    cursor:pointer;letter-spacing:0.15px;\r\n    -webkit-appearance:none;appearance:none;border:none;\r\n    position:relative;overflow:hidden;\r\n  }\r\n  .ht-cta::before{\r\n    content:\"\";position:absolute;top:0;left:-100%;width:100%;height:100%;\r\n    background:linear-gradient(120deg,transparent,rgba(255,255,255,0.18),transparent);\r\n    transition:left 0.55s ease;pointer-events:none;\r\n  }\r\n  .ht-cta:hover::before{left:100%}\r\n  .ht-cta:hover{transform:translateY(-2px)}\r\n  .ht-cta:active{transform:translateY(0)}\r\n  .ht-cta svg{flex-shrink:0;transition:transform 0.2s ease}\r\n  .ht-cta:hover svg{transform:scale(1.08)}\r\n\r\n  \/* PAIR 1 - PRIMARY (WhatsApp + Call): matching filled brand-dark green *\/\r\n  .ht-cta.wa,\r\n  .ht-cta.call{\r\n    background:linear-gradient(135deg,#0f4c3a 0%,#1a7a5e 100%);\r\n    color:#fff;\r\n    box-shadow:0 4px 14px rgba(15,76,58,0.28), inset 0 1px 0 rgba(255,255,255,0.18);\r\n  }\r\n  .ht-cta.wa:hover,\r\n  .ht-cta.call:hover{\r\n    background:linear-gradient(135deg,#0a3528 0%,#0f5c45 100%);\r\n    color:#fff;text-decoration:none;\r\n    box-shadow:0 8px 22px rgba(15,76,58,0.4), inset 0 1px 0 rgba(255,255,255,0.18);\r\n  }\r\n\r\n  \/* PAIR 2 - SECONDARY (Download PDF + Share): matching filled mid-green *\/\r\n  .ht-cta.pdf,\r\n  .ht-cta.share{\r\n    background:linear-gradient(135deg,#1a7a5e 0%,#2d9d7a 100%);\r\n    color:#fff;\r\n    box-shadow:0 4px 12px rgba(26,122,94,0.26), inset 0 1px 0 rgba(255,255,255,0.18);\r\n  }\r\n  .ht-cta.pdf:hover,\r\n  .ht-cta.share:hover{\r\n    background:linear-gradient(135deg,#146f55 0%,#22876a 100%);\r\n    color:#fff;text-decoration:none;\r\n    box-shadow:0 8px 20px rgba(26,122,94,0.38), inset 0 1px 0 rgba(255,255,255,0.18);\r\n  }\r\n  .ht-cta.pdf:disabled{opacity:0.7;cursor:wait;transform:none}\r\n  .ht-cta.share svg{stroke:currentColor}\r\n\r\n  \/* PAIR 3 - TERTIARY (Packages + Cost Calculator): matching outline tone, distinct fills *\/\r\n  \/* View Packages: solid mint tint *\/\r\n  .ht-cta.pkg{\r\n    background:#e8f5ee;color:#0f4c3a;\r\n    border:1.5px solid #1a7a5e;\r\n    box-shadow:0 1px 4px rgba(15,76,58,0.05);\r\n  }\r\n  .ht-cta.pkg:hover{\r\n    background:#1a7a5e;color:#fff;\r\n    border-color:#1a7a5e;text-decoration:none;\r\n    box-shadow:0 6px 18px rgba(26,122,94,0.28);\r\n  }\r\n  \/* Cost Calculator: white with same border colour, distinct fill *\/\r\n  .ht-cta.cost{\r\n    background:#fff;color:#0f4c3a;\r\n    border:1.5px solid #1a7a5e;\r\n    box-shadow:0 1px 4px rgba(26,122,94,0.06);\r\n  }\r\n  .ht-cta.cost:hover{\r\n    background:#0f4c3a;color:#fff;\r\n    border-color:#0f4c3a;text-decoration:none;\r\n    box-shadow:0 6px 18px rgba(15,76,58,0.3);\r\n  }\r\n\r\n  .ht-cta .ht-spinner-sm{\r\n    width:14px;height:14px;border:2px solid rgba(255,255,255,0.3);\r\n    border-top-color:#fff;border-radius:50%;\r\n    animation:htSpin 0.7s linear infinite;display:none;\r\n  }\r\n  .ht-cta.loading .ht-spinner-sm{display:inline-block}\r\n  .ht-cta.loading .ht-cta-icon{display:none}\r\n\r\n  .ht-disclaimer{\r\n    font-size:12px;color:#78909c;text-align:center;\r\n    margin-top:18px;line-height:1.6;padding:0 4px;\r\n  }\r\n\r\n  .ht-data-stamp{\r\n    text-align:center;margin-top:14px;\r\n    font-size:11px;color:#90a4ae;font-style:italic;\r\n  }\r\n\r\n  .ht-brand-foot{\r\n    text-align:center;padding:20px 24px;\r\n    background:#fafbfc;font-size:12px;color:#90a4ae;\r\n    border-top:1px solid #eef2f5;line-height:1.6;\r\n  }\r\n  .ht-brand-foot strong{color:#1a7a5e;font-weight:700}\r\n  .ht-brand-foot .ht-dot{margin:0 8px;opacity:0.5}\r\n\r\n  .ht-spinner{\r\n    width:18px;height:18px;border:2px solid rgba(255,255,255,0.3);\r\n    border-top-color:#fff;border-radius:50%;\r\n    animation:htSpin 0.7s linear infinite;display:none;\r\n  }\r\n  .ht-plan-btn.loading .ht-spinner{display:inline-block}\r\n  .ht-plan-btn.loading .ht-btn-text{opacity:0.7}\r\n  @keyframes htSpin{to{transform:rotate(360deg)}}\r\n\r\n  \/* Share modal *\/\r\n  .ht-share-modal{\r\n    display:none;position:fixed;inset:0;\r\n    background:rgba(15,76,58,0.55);\r\n    z-index:99999;\r\n    align-items:center;justify-content:center;padding:20px;\r\n    -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);\r\n  }\r\n  .ht-share-modal.show{display:flex;animation:htFadeIn 0.2s ease}\r\n  .ht-share-box{\r\n    background:#fff;border-radius:16px;\r\n    max-width:420px;width:100%;\r\n    padding:28px 26px;\r\n    box-shadow:0 20px 60px rgba(0,0,0,0.3);\r\n    position:relative;\r\n  }\r\n  .ht-share-close{\r\n    position:absolute;top:14px;right:14px;\r\n    width:30px;height:30px;border:none;background:#f0f9f5;\r\n    border-radius:50%;cursor:pointer;color:#1a7a5e;\r\n    display:flex;align-items:center;justify-content:center;\r\n    transition:background 0.2s;\r\n  }\r\n  .ht-share-close:hover{background:#c8e6d5}\r\n  .ht-share-title{\r\n    font-size:18px;font-weight:800;color:#0f4c3a;\r\n    margin-bottom:6px;\r\n  }\r\n  .ht-share-sub{\r\n    font-size:13px;color:#546e7a;margin-bottom:20px;line-height:1.5;\r\n  }\r\n  .ht-share-options{\r\n    display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;\r\n  }\r\n  .ht-share-opt{\r\n    display:flex;align-items:center;gap:10px;\r\n    padding:12px 14px;border-radius:10px;\r\n    background:#fafbfc;border:1.5px solid #e5ecea;\r\n    color:#37474f;font-size:13px;font-weight:600;\r\n    cursor:pointer;text-decoration:none;font-family:inherit;\r\n    transition:border-color 0.2s, background 0.2s, transform 0.15s;\r\n  }\r\n  .ht-share-opt:hover{\r\n    border-color:#1a7a5e;background:#f0f9f5;\r\n    color:#0f4c3a;text-decoration:none;transform:translateY(-1px);\r\n  }\r\n  .ht-share-opt svg{flex-shrink:0}\r\n  .ht-share-link-row{\r\n    display:flex;gap:8px;margin-top:6px;\r\n  }\r\n  .ht-share-link-input{\r\n    flex:1;padding:10px 12px;\r\n    border:1.5px solid #e5ecea;border-radius:8px;\r\n    font-size:12px;color:#546e7a;background:#fafbfc;\r\n    font-family:inherit;outline:none;\r\n  }\r\n  .ht-share-link-copy{\r\n    padding:10px 14px;background:#1a7a5e;color:#fff;\r\n    border:none;border-radius:8px;cursor:pointer;\r\n    font-size:12px;font-weight:700;font-family:inherit;\r\n    transition:background 0.2s;\r\n  }\r\n  .ht-share-link-copy:hover{background:#0f4c3a}\r\n  .ht-share-link-copy.copied{background:#16a34a}\r\n\r\n  @container htplan (max-width:900px){\r\n    .ht-form-grid{gap:16px}\r\n    .ht-plan-header{padding:40px 32px}\r\n    .ht-plan-body{padding:34px 30px}\r\n    .ht-style-options{grid-template-columns:repeat(5,1fr)}\r\n  }\r\n  @container htplan (max-width:760px){\r\n    .ht-form-grid, .ht-form-grid.combo-mode{grid-template-columns:1fr 1fr;gap:16px}\r\n    .ht-plan-header h3{font-size:26px}\r\n    .ht-plan-header p{font-size:14px}\r\n    .ht-style-options{grid-template-columns:repeat(3,1fr)}\r\n    .ht-summary-dest{font-size:19px}\r\n    .ht-quickfacts{grid-template-columns:repeat(2,1fr)}\r\n    .ht-qf-item:nth-child(2){border-right:none}\r\n    .ht-qf-item:nth-child(1), .ht-qf-item:nth-child(2){\r\n      border-bottom:1px solid #eef2f5;\r\n    }\r\n    .ht-incl-section{grid-template-columns:1fr;gap:14px}\r\n    .ht-cta-row{grid-template-columns:1fr 1fr}\r\n  }\r\n  @container htplan (max-width:560px){\r\n    #himtrails-planner-wrapper{margin:20px auto 0 auto;padding:0 12px}\r\n    .ht-plan{border-radius:14px}\r\n    .ht-plan-header{padding:28px 20px}\r\n    .ht-plan-header::before{width:140px;height:140px;top:-40px;right:-40px}\r\n    .ht-plan-header::after{width:120px;height:120px;bottom:-50px;left:-30px}\r\n    #himtrails-planner-wrapper .ht-plan .ht-plan-header h2.ht-tag{\r\n      font-size:11px;padding:6px 12px;margin-bottom:12px;letter-spacing:1px;\r\n    }\r\n    .ht-plan-header h3{font-size:22px;line-height:1.2}\r\n    .ht-plan-header p{font-size:13.5px;line-height:1.5}\r\n    .ht-plan-body{padding:22px 16px}\r\n    .ht-mode-btn{padding:12px 8px;font-size:13px;gap:6px}\r\n    .ht-mode-btn .mode-label-full{display:none}\r\n    .ht-mode-btn .mode-label-short{display:inline}\r\n    .ht-form-grid, .ht-form-grid.combo-mode{grid-template-columns:1fr;gap:14px;margin-bottom:22px}\r\n    .ht-section-label{font-size:11px;margin-bottom:10px;letter-spacing:1px}\r\n    .ht-field label{font-size:13px;margin-bottom:8px}\r\n    .ht-field select, .ht-field input{padding:12px 14px;height:48px;font-size:16px}\r\n    .ht-field select{padding-right:38px;background-position:right 12px center}\r\n    .ht-style-options{grid-template-columns:repeat(2,1fr);gap:10px}\r\n    .ht-style-opt label{padding:12px 6px;min-height:88px}\r\n    .ht-style-opt label .style-icon{font-size:20px}\r\n    .ht-style-opt label .style-title{font-size:12.5px}\r\n    .ht-style-opt label .style-sub{font-size:10px}\r\n    .ht-plan-btn{padding:15px 18px;font-size:15px}\r\n    .ht-error, .ht-warning, .ht-info-note{font-size:12.5px;padding:12px 14px}\r\n    .ht-plan-summary{padding:20px 18px}\r\n    .ht-summary-dest{font-size:17px;margin-bottom:8px}\r\n    .ht-summary-tagline{font-size:13px;margin-bottom:14px}\r\n    .ht-meta-chip{font-size:11.5px;padding:5px 10px}\r\n    .ht-quickfacts{grid-template-columns:1fr 1fr}\r\n    .ht-qf-item{padding:14px 10px}\r\n    .ht-qf-icon{font-size:18px}\r\n    .ht-qf-label{font-size:10px}\r\n    .ht-qf-value{font-size:12px}\r\n    .ht-day-header{padding:14px 16px;gap:10px;flex-wrap:wrap}\r\n    .ht-day-badge{width:46px;height:46px}\r\n    .ht-day-badge .day-num{font-size:17px}\r\n    .ht-day-title{font-size:15px}\r\n    .ht-day-route{font-size:11.5px}\r\n    .ht-day-edit-btn{font-size:10.5px;padding:5px 9px}\r\n    .ht-day-body{padding:14px 16px 16px 16px}\r\n    .ht-day-edit-panel{padding:12px 16px}\r\n    .ht-day-intro{font-size:13px;margin-bottom:12px}\r\n    .ht-activity{font-size:13px;gap:10px}\r\n    .ht-day-chip{font-size:11px;padding:5px 9px}\r\n    .ht-permits-card, .ht-incl-card{padding:16px}\r\n    .ht-incl-list li, .ht-permits-list li{font-size:12.5px}\r\n    .ht-pro-tip{padding:16px;gap:10px}\r\n    .ht-pro-tip-icon{font-size:20px}\r\n    .ht-pro-tip-text{font-size:13px}\r\n    .ht-plan-ctas{padding:22px 16px;margin-top:22px}\r\n    .ht-cta-heading{font-size:15px}\r\n    .ht-cta-sub{font-size:12.5px;margin-bottom:14px}\r\n    .ht-cta-row{grid-template-columns:1fr;gap:8px}\r\n    .ht-cta{padding:12px 10px;font-size:13.5px;min-height:48px}\r\n    .ht-disclaimer{font-size:11.5px;margin-top:14px;line-height:1.5}\r\n    .ht-data-stamp{font-size:10.5px}\r\n    .ht-brand-foot{padding:14px 16px;font-size:11px}\r\n    .ht-brand-foot .ht-dot{margin:0 5px}\r\n    .ht-share-box{padding:22px 18px}\r\n    .ht-share-options{grid-template-columns:1fr}\r\n  }\r\n  @container htplan (max-width:420px){\r\n    .ht-plan-header{padding:24px 16px}\r\n    .ht-plan-header h3{font-size:20px;letter-spacing:-0.3px}\r\n    .ht-plan-body{padding:20px 14px}\r\n    .ht-style-opt label{padding:10px 4px;min-height:84px}\r\n    .ht-day-title{font-size:14.5px}\r\n  }\r\n\r\n  @supports not (container-type:inline-size){\r\n    @media (max-width:760px){\r\n      .ht-form-grid, .ht-form-grid.combo-mode{grid-template-columns:1fr 1fr}\r\n      .ht-style-options{grid-template-columns:repeat(3,1fr)}\r\n      .ht-incl-section{grid-template-columns:1fr}\r\n    }\r\n    @media (max-width:560px){\r\n      .ht-form-grid, .ht-form-grid.combo-mode{grid-template-columns:1fr}\r\n      .ht-style-options{grid-template-columns:repeat(2,1fr)}\r\n      .ht-cta-row{grid-template-columns:1fr}\r\n      .ht-mode-btn{padding:12px 8px;font-size:13px;gap:6px}\r\n      .ht-mode-btn .mode-label-full{display:none}\r\n      .ht-mode-btn .mode-label-short{display:inline}\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"ht-plan\">\r\n  <div class=\"ht-plan-header\">\r\n    <h2 class=\"ht-tag\">\u2726 HIMACHAL TRIP ITINERARY PLANNER<\/h2>\r\n    <h3>Himachal Trip Itinerary Planner<\/h3>\r\n    <p>Design your day-by-day Himachal plan in 10 seconds \u2014 single destination or multi-destination combos. Realistic pacing, drive times, permits &amp; verified data, crafted by HimTrails \u2014 local Himachal experts based in Shimla.<\/p>\r\n  <\/div>\r\n\r\n  <div class=\"ht-plan-body\">\r\n\r\n    <div class=\"ht-mode-toggle\" role=\"tablist\">\r\n      <button type=\"button\" class=\"ht-mode-btn active\" data-mode=\"single\" role=\"tab\" aria-selected=\"true\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg>\r\n        <span class=\"mode-label-full\">Single Destination<\/span>\r\n        <span class=\"mode-label-short\">Single<\/span>\r\n      <\/button>\r\n      <button type=\"button\" class=\"ht-mode-btn\" data-mode=\"combo\" role=\"tab\" aria-selected=\"false\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"6\" cy=\"6\" r=\"3\"\/><circle cx=\"18\" cy=\"18\" r=\"3\"\/><path d=\"M9 6h7a3 3 0 0 1 3 3v6\"\/><\/svg>\r\n        <span class=\"mode-label-full\">Multi-Destination Combo<\/span>\r\n        <span class=\"mode-label-short\">Multi-Combo<\/span>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <span class=\"ht-section-label\">Trip Details<\/span>\r\n\r\n    <div class=\"ht-form-grid\" id=\"ht-form-grid-single\">\r\n      <div class=\"ht-field\">\r\n        <label for=\"ht-p-destination\">Destination <span class=\"req\">*<\/span><\/label>\r\n        <select id=\"ht-p-destination\" aria-required=\"true\">\r\n          <option value=\"\">Select destination<\/option>\r\n          <option value=\"manali\">Manali<\/option>\r\n          <option value=\"shimla\">Shimla<\/option>\r\n          <option value=\"kasol\">Kasol \u2013 Kheerganga<\/option>\r\n          <option value=\"dharamshala\">Dharamshala \u2013 McLeodganj<\/option>\r\n          <option value=\"bir-billing\">Bir Billing<\/option>\r\n          <option value=\"jibhi\">Jibhi<\/option>\r\n          <option value=\"tirthan\">Tirthan Valley<\/option>\r\n          <option value=\"narkanda\">Narkanda<\/option>\r\n          <option value=\"chamba\">Chamba \u2013 Dalhousie<\/option>\r\n          <option value=\"kinnaur\">Kinnaur \u2013 Sangla \u2013 Chitkul<\/option>\r\n          <option value=\"spiti\">Spiti Valley<\/option>\r\n          <option value=\"leh-ladakh\">Leh Ladakh<\/option>\r\n        <\/select>\r\n      <\/div>\r\n      <div class=\"ht-field\">\r\n        <label for=\"ht-p-days\">Trip Duration <span class=\"req\">*<\/span><\/label>\r\n        <select id=\"ht-p-days\" aria-required=\"true\" disabled>\r\n          <option value=\"\">Select destination first<\/option>\r\n        <\/select>\r\n      <\/div>\r\n      <div class=\"ht-field\">\r\n        <label for=\"ht-p-origin\">Starting From<\/label>\r\n        <select id=\"ht-p-origin\">\r\n          <option value=\"delhi\">Delhi<\/option>\r\n          <option value=\"chandigarh\">Chandigarh<\/option>\r\n          <option value=\"mumbai\">Mumbai<\/option>\r\n          <option value=\"bangalore\">Bangalore<\/option>\r\n          <option value=\"kolkata\">Kolkata<\/option>\r\n          <option value=\"ahmedabad\">Ahmedabad<\/option>\r\n          <option value=\"hyderabad\">Hyderabad<\/option>\r\n          <option value=\"pune\">Pune<\/option>\r\n          <option value=\"jaipur\">Jaipur<\/option>\r\n          <option value=\"lucknow\">Lucknow<\/option>\r\n          <option value=\"chennai\">Chennai<\/option>\r\n          <option value=\"other\">Other<\/option>\r\n        <\/select>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"ht-form-grid combo-mode\" id=\"ht-form-grid-combo\" style=\"display:none;\">\r\n      <div class=\"ht-field\">\r\n        <label for=\"ht-p-combo\">Combo Route <span class=\"req\">*<\/span><\/label>\r\n        <select id=\"ht-p-combo\" aria-required=\"true\">\r\n          <option value=\"\">Select combo route<\/option>\r\n          <optgroup label=\"Short Combos (4\u20136 Days)\">\r\n            <option value=\"manali-solang-rohtang\">Manali + Solang + Rohtang (Snow Special)<\/option>\r\n            <option value=\"shimla-kufri-chail\">Shimla + Kufri + Chail (Heritage)<\/option>\r\n            <option value=\"jibhi-tirthan\">Jibhi + Tirthan Valley (Offbeat)<\/option>\r\n            <option value=\"dharamshala-bir\">Dharamshala + Bir Billing (Spiritual + Adventure)<\/option>\r\n          <\/optgroup>\r\n          <optgroup label=\"Classic Combos (5\u20138 Days)\">\r\n            <option value=\"shimla-manali\">Shimla + Manali (Classic Doublet)<\/option>\r\n            <option value=\"manali-kasol\">Manali + Kasol (Backpacker)<\/option>\r\n            <option value=\"manali-kasol-manikaran\">Manali + Kasol + Manikaran (Parvati Extended)<\/option>\r\n            <option value=\"kasol-kheerganga-tosh\">Kasol + Kheerganga + Tosh (Trekker)<\/option>\r\n            <option value=\"dharamshala-dalhousie\">Dharamshala + Dalhousie (Hill Stations)<\/option>\r\n            <option value=\"chamba-khajjiar-dalhousie\">Chamba + Khajjiar + Dalhousie (Heritage Circuit)<\/option>\r\n            <option value=\"dharamshala-mcleod-bir\">Dharamshala + McLeodganj + Bir (Spiritual Triangle)<\/option>\r\n          <\/optgroup>\r\n          <optgroup label=\"Grand Combos (8+ Days)\">\r\n            <option value=\"shimla-manali-dharamshala\">Shimla + Manali + Dharamshala (Himachal Triangle)<\/option>\r\n            <option value=\"manali-shimla-kasol\">Manali + Shimla + Kasol (Triple Hill Combo)<\/option>\r\n            <option value=\"shimla-manali-kasol-dharamshala\">Shimla + Manali + Kasol + Dharamshala (Grand Tour)<\/option>\r\n            <option value=\"kasol-jibhi-tirthan\">Kasol + Jibhi + Tirthan (Offbeat Trio)<\/option>\r\n            <option value=\"manali-spiti\">Manali + Spiti Circuit (May\u2013Sep only)<\/option>\r\n            <option value=\"shimla-spiti\">Shimla \u2192 Spiti via Kinnaur<\/option>\r\n            <option value=\"shimla-kinnaur-spiti\">Shimla + Kinnaur + Spiti (Full Tribal Circuit)<\/option>\r\n            <option value=\"manali-leh-ladakh\">Manali + Leh Ladakh (Bike-Trip Classic)<\/option>\r\n          <\/optgroup>\r\n        <\/select>\r\n      <\/div>\r\n      <div class=\"ht-field\">\r\n        <label for=\"ht-p-days-combo\">Trip Duration <span class=\"req\">*<\/span><\/label>\r\n        <select id=\"ht-p-days-combo\" aria-required=\"true\" disabled>\r\n          <option value=\"\">Select combo route first<\/option>\r\n        <\/select>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"ht-p-info-note\" class=\"ht-info-note\">\r\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\/><\/svg>\r\n      <span id=\"ht-p-info-note-text\"><\/span>\r\n    <\/div>\r\n\r\n    <div class=\"ht-trip-style\">\r\n      <span class=\"ht-section-label\">Trip Style<\/span>\r\n      <div class=\"ht-style-options\" role=\"radiogroup\" aria-label=\"Trip style\">\r\n        <div class=\"ht-style-opt\">\r\n          <input type=\"radio\" name=\"ht-style\" id=\"ht-style-couple\" value=\"couple\">\r\n          <label for=\"ht-style-couple\">\r\n            <span class=\"style-icon\">\ud83d\udc91<\/span>\r\n            <span class=\"style-title\">Couple<\/span>\r\n            <span class=\"style-sub\">Honeymoon &amp; romantic<\/span>\r\n          <\/label>\r\n        <\/div>\r\n        <div class=\"ht-style-opt\">\r\n          <input type=\"radio\" name=\"ht-style\" id=\"ht-style-family\" value=\"family\" checked>\r\n          <label for=\"ht-style-family\">\r\n            <span class=\"style-icon\">\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67<\/span>\r\n            <span class=\"style-title\">Family<\/span>\r\n            <span class=\"style-sub\">Kids &amp; parents<\/span>\r\n          <\/label>\r\n        <\/div>\r\n        <div class=\"ht-style-opt\">\r\n          <input type=\"radio\" name=\"ht-style\" id=\"ht-style-group\" value=\"group\">\r\n          <label for=\"ht-style-group\">\r\n            <span class=\"style-icon\">\ud83c\udf89<\/span>\r\n            <span class=\"style-title\">Group<\/span>\r\n            <span class=\"style-sub\">Friends &amp; squads<\/span>\r\n          <\/label>\r\n        <\/div>\r\n        <div class=\"ht-style-opt\">\r\n          <input type=\"radio\" name=\"ht-style\" id=\"ht-style-adventure\" value=\"adventure\">\r\n          <label for=\"ht-style-adventure\">\r\n            <span class=\"style-icon\">\ud83e\uddd7<\/span>\r\n            <span class=\"style-title\">Adventure<\/span>\r\n            <span class=\"style-sub\">Treks &amp; thrills<\/span>\r\n          <\/label>\r\n        <\/div>\r\n        <div class=\"ht-style-opt\">\r\n          <input type=\"radio\" name=\"ht-style\" id=\"ht-style-luxury\" value=\"luxury\">\r\n          <label for=\"ht-style-luxury\">\r\n            <span class=\"style-icon\">\u2728<\/span>\r\n            <span class=\"style-title\">Luxury<\/span>\r\n            <span class=\"style-sub\">5\u2605 &amp; premium<\/span>\r\n          <\/label>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"ht-p-error\" class=\"ht-error\" role=\"alert\">\r\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\r\n      <span id=\"ht-p-error-text\">Please select a destination and trip duration to build your itinerary.<\/span>\r\n    <\/div>\r\n\r\n    <div id=\"ht-p-warning\" class=\"ht-warning\" role=\"alert\">\r\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg>\r\n      <span id=\"ht-p-warning-text\"><\/span>\r\n    <\/div>\r\n\r\n    <div class=\"ht-btn-wrap\">\r\n      <button type=\"button\" class=\"ht-plan-btn\" onclick=\"htBuildPlan()\">\r\n        <span class=\"ht-spinner\"><\/span>\r\n        <span class=\"ht-btn-text\">\u2726 Generate My Itinerary<\/span>\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <div id=\"ht-p-result\" class=\"ht-plan-result\" aria-live=\"polite\">\r\n      <div class=\"ht-plan-summary\">\r\n        <div class=\"ht-summary-title\">Your Custom Himachal Itinerary<\/div>\r\n        <div class=\"ht-summary-dest\" id=\"ht-p-summary-dest\">\u2014<\/div>\r\n        <div class=\"ht-summary-tagline\" id=\"ht-p-summary-tagline\"><\/div>\r\n        <div class=\"ht-summary-meta\" id=\"ht-p-summary-meta\"><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ht-quickfacts\" id=\"ht-p-quickfacts\"><\/div>\r\n\r\n      <div class=\"ht-days-container\" id=\"ht-p-days-container\"><\/div>\r\n\r\n      <div class=\"ht-permits-card\" id=\"ht-p-permits-card\" style=\"display:none;\">\r\n        <div class=\"ht-permits-title\">\r\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14 2 14 8 20 8\"\/><line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\/><line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\/><polyline points=\"10 9 9 9 8 9\"\/><\/svg>\r\n          Documents &amp; Permits Required\r\n        <\/div>\r\n        <ul class=\"ht-permits-list\" id=\"ht-p-permits-list\"><\/ul>\r\n      <\/div>\r\n\r\n      <div class=\"ht-incl-section\">\r\n        <div class=\"ht-incl-card\">\r\n          <div class=\"ht-incl-title inc\">\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\r\n            What's Included\r\n          <\/div>\r\n          <ul class=\"ht-incl-list inc\" id=\"ht-p-inclusions\"><\/ul>\r\n        <\/div>\r\n        <div class=\"ht-incl-card\">\r\n          <div class=\"ht-incl-title exc\">\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\r\n            What's Not Included\r\n          <\/div>\r\n          <ul class=\"ht-incl-list exc\" id=\"ht-p-exclusions\"><\/ul>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ht-pro-tip\">\r\n        <span class=\"ht-pro-tip-icon\">\ud83d\udca1<\/span>\r\n        <div class=\"ht-pro-tip-body\">\r\n          <div class=\"ht-pro-tip-title\">HimTrails Local Tip<\/div>\r\n          <div class=\"ht-pro-tip-text\" id=\"ht-p-local-tip\">\u2014<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"ht-plan-ctas\">\r\n        <div class=\"ht-cta-heading\">Love this plan? Let's make it real.<\/div>\r\n        <div class=\"ht-cta-sub\">Get a FREE customised quote with hotels, cabs &amp; inclusions \u2014 tailored to your exact dates.<\/div>\r\n        <div class=\"ht-cta-row\">\r\n          <a href=\"#\" id=\"ht-p-wa-link\" class=\"ht-cta wa\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n            <svg class=\"ht-cta-icon\" width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg>\r\n            WhatsApp Quote\r\n          <\/a>\r\n          <a href=\"tel:+917717697177\" class=\"ht-cta call\">\r\n            <svg class=\"ht-cta-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/svg>\r\n            Call Us\r\n          <\/a>\r\n        <\/div>\r\n        <div class=\"ht-cta-row\">\r\n          <button type=\"button\" id=\"ht-p-pdf-btn\" class=\"ht-cta pdf\">\r\n            <span class=\"ht-spinner-sm\"><\/span>\r\n            <svg class=\"ht-cta-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"\/><polyline points=\"7 10 12 15 17 10\"\/><line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\"\/><\/svg>\r\n            Download PDF\r\n          <\/button>\r\n          <button type=\"button\" id=\"ht-p-share-btn\" class=\"ht-cta share\">\r\n            <svg class=\"ht-cta-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"18\" cy=\"5\" r=\"3\"\/><circle cx=\"6\" cy=\"12\" r=\"3\"\/><circle cx=\"18\" cy=\"19\" r=\"3\"\/><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"\/><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"\/><\/svg>\r\n            Share Itinerary\r\n          <\/button>\r\n        <\/div>\r\n        <div class=\"ht-cta-row\">\r\n          <a href=\"#\" id=\"ht-p-pkg-link\" class=\"ht-cta pkg\">\r\n            <svg class=\"ht-cta-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\"\/><polyline points=\"3.27 6.96 12 12.01 20.73 6.96\"\/><line x1=\"12\" y1=\"22.08\" x2=\"12\" y2=\"12\"\/><\/svg>\r\n            View Packages\r\n          <\/a>\r\n          <a href=\"https:\/\/himtrails.in\/himachal-trip-cost-calculator\/\" class=\"ht-cta cost\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n            <svg class=\"ht-cta-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"\/><line x1=\"8\" y1=\"6\" x2=\"16\" y2=\"6\"\/><line x1=\"8\" y1=\"10\" x2=\"10\" y2=\"10\"\/><line x1=\"13\" y1=\"10\" x2=\"13\" y2=\"10.01\"\/><line x1=\"16\" y1=\"10\" x2=\"16\" y2=\"10.01\"\/><line x1=\"8\" y1=\"14\" x2=\"10\" y2=\"14\"\/><line x1=\"13\" y1=\"14\" x2=\"13\" y2=\"14.01\"\/><line x1=\"16\" y1=\"14\" x2=\"16\" y2=\"14.01\"\/><line x1=\"8\" y1=\"18\" x2=\"10\" y2=\"18\"\/><line x1=\"13\" y1=\"18\" x2=\"13\" y2=\"18.01\"\/><line x1=\"16\" y1=\"18\" x2=\"16\" y2=\"18.01\"\/><\/svg>\r\n            Cost Calculator\r\n          <\/a>\r\n        <\/div>\r\n        <p class=\"ht-disclaimer\">\r\n          * This is a sample itinerary. We'll customise hotels, cab, sightseeing &amp; meals based on your travel dates &amp; group size.\r\n        <\/p>\r\n        <p class=\"ht-data-stamp\" id=\"ht-p-data-stamp\">Data verified against official sources \u00b7 Last updated: April 2026<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"ht-brand-foot\">\r\n    <strong>HimTrails<\/strong><span class=\"ht-dot\">\u00b7<\/span>Breathe the Heights, Live the Trails<span class=\"ht-dot\">\u00b7<\/span>3,973+ Happy Travellers<span class=\"ht-dot\">\u00b7<\/span>4.9\u2605 Google Rating\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Share Modal -->\r\n<div id=\"ht-share-modal\" class=\"ht-share-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"ht-share-title\">\r\n  <div class=\"ht-share-box\">\r\n    <button type=\"button\" class=\"ht-share-close\" id=\"ht-share-close-btn\" aria-label=\"Close\">\r\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\r\n    <\/button>\r\n    <div class=\"ht-share-title\" id=\"ht-share-title\">Share Your Itinerary<\/div>\r\n    <div class=\"ht-share-sub\">Send this itinerary to friends, family, or save it for later. The link will reopen the same plan.<\/div>\r\n    <div class=\"ht-share-options\">\r\n      <a href=\"#\" id=\"ht-share-wa\" class=\"ht-share-opt\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#25d366\"><path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z\"\/><\/svg>\r\n        WhatsApp\r\n      <\/a>\r\n      <a href=\"#\" id=\"ht-share-tg\" class=\"ht-share-opt\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#0088cc\"><path d=\"M9.78 18.65l.28-4.23 7.68-6.92c.34-.31-.07-.46-.52-.19L7.74 13.3 3.64 12c-.88-.25-.89-.86.2-1.3l15.97-6.16c.73-.33 1.43.18 1.15 1.3l-2.72 12.81c-.19.91-.74 1.13-1.5.71L12.6 16.3l-1.99 1.93c-.23.23-.42.42-.83.42z\"\/><\/svg>\r\n        Telegram\r\n      <\/a>\r\n      <a href=\"#\" id=\"ht-share-email\" class=\"ht-share-opt\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1a7a5e\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/><polyline points=\"22,6 12,13 2,6\"\/><\/svg>\r\n        Email\r\n      <\/a>\r\n      <a href=\"#\" id=\"ht-share-sms\" class=\"ht-share-opt\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1a7a5e\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg>\r\n        SMS \/ Messages\r\n      <\/a>\r\n      <a href=\"#\" id=\"ht-share-fb\" class=\"ht-share-opt\" target=\"_blank\" rel=\"noopener noreferrer\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"#1877f2\"><path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\"\/><\/svg>\r\n        Facebook\r\n      <\/a>\r\n      <button type=\"button\" id=\"ht-share-native\" class=\"ht-share-opt\" style=\"display:none;\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#1a7a5e\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"18\" cy=\"5\" r=\"3\"\/><circle cx=\"6\" cy=\"12\" r=\"3\"\/><circle cx=\"18\" cy=\"19\" r=\"3\"\/><line x1=\"8.59\" y1=\"13.51\" x2=\"15.42\" y2=\"17.49\"\/><line x1=\"15.41\" y1=\"6.51\" x2=\"8.59\" y2=\"10.49\"\/><\/svg>\r\n        More Apps...\r\n      <\/button>\r\n    <\/div>\r\n    <div style=\"font-size:11px;font-weight:700;color:#90a4ae;letter-spacing:1px;text-transform:uppercase;margin-bottom:8px;\">Or copy link<\/div>\r\n    <div class=\"ht-share-link-row\">\r\n      <input type=\"text\" id=\"ht-share-link-input\" class=\"ht-share-link-input\" readonly>\r\n      <button type=\"button\" id=\"ht-share-copy-btn\" class=\"ht-share-link-copy\">Copy<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- jsPDF CDN -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n\r\n<script>\r\n(function(){\r\n  \/\/ ============================================================\r\n  \/\/ VERIFIED ITINERARY DATA \u2014 v5\r\n  \/\/ All altitudes\/distances cross-verified Apr 2026 against:\r\n  \/\/ himachaltourism.gov.in, incredibleindia.gov.in, BRO\/PIB,\r\n  \/\/ Wikipedia, IndiaHikes, Discover Leh Ladakh, district admin sites.\r\n  \/\/ Disputed superlatives removed. \"Highest motorable pass\" claim\r\n  \/\/ for Khardung La replaced with accurate phrasing (Umling La 5,799 m\r\n  \/\/ surpassed it 2017; Mig La 5,913 m surpassed Umling La in 2025).\r\n  \/\/ Komic \"highest village in world\" reframed to \"one of India's\r\n  \/\/ highest motorable villages\" since claim is widely disputed.\r\n  \/\/ Triund altitude corrected to 2,850 m (Wikipedia, IndiaHikes).\r\n  \/\/ ============================================================\r\n\r\n  \/\/ Style-tagged middle days for each destination\r\n  \/\/ Each day: {id, title, route, intro, activities[], stay, meals,\r\n  \/\/ distance, driveTime, difficulty, style[]}\r\n\r\n  var DESTINATIONS = {\r\n\r\n    \/\/ ============== MANALI ==============\r\n    \"manali\": {\r\n      name: \"Manali\",\r\n      tagline: \"Deodar forests, snow peaks, the River Beas &amp; Mall Road vibes \u2014 Himachal's perennial Himalayan favourite, set at 2,050 m in the Kullu Valley.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/manali-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 12,\r\n      quickFacts: {\r\n        altitude: \"2,050 m\",\r\n        bestTime: \"Mar\u2013Jun, Oct\u2013Feb\",\r\n        nearestAirport: \"Bhuntar (50 km)\",\r\n        idealFor: \"First-timers, Snow\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> (Aadhaar\/Passport\/Driving Licence) for hotel check-in\",\r\n        \"<strong>Rohtang Pass online permit<\/strong> (mandatory if visiting Rohtang) \u2014 closed Tuesdays for maintenance; we arrange this\",\r\n        \"<strong>No permit<\/strong> needed for Atal Tunnel, Solang or Sissu \u2014 open to all vehicles year-round (subject to weather)\"\r\n      ],\r\n      localTip: \"Atal Tunnel (9.02 km) is open year-round and reaches Sissu in ~2 hours from Manali. Rohtang Pass itself is seasonal (typically May\u2013Nov, closed Tuesdays). Stay in Old Manali for caf\u00e9s &amp; snow vibes (Dec\u2013Feb); the Left Bank (Simsa\/Shuru) is quieter with better summer views. Solang Valley is 14 km, Naggar is 22 km.\",\r\n      arrival: {\r\n        title: \"Arrival in Manali\",\r\n        route: \"{origin} \u2192 Manali\",\r\n        intro: \"Welcome to Manali (2,050 m), set on the Beas river under deodar and pine forest, gateway to Lahaul, Spiti &amp; the Pir Panjal range. Take it slow on Day 1 \u2014 altitude adjustment matters.\",\r\n        activities: [\r\n          \"Arrival &amp; check-in at your Manali hotel\",\r\n          \"Evening walk on the iconic <strong>Mall Road<\/strong> \u2014 Tibetan markets, caf\u00e9s &amp; Beas river views\",\r\n          \"Stop by the historic <strong>Manali Club House<\/strong>\",\r\n          \"Try authentic Himachali cuisine \u2014 <strong>siddu, trout, chha gosht<\/strong>\"\r\n        ],\r\n        stay: \"Manali\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"10\u201314 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Manali\",\r\n        route: \"Manali \u2192 {origin}\",\r\n        intro: \"Time to head home with mountain memories.\",\r\n        activities: [\r\n          \"Leisurely breakfast at the hotel\",\r\n          \"Last-minute shopping \u2014 <strong>Kullu shawls, Himachali caps, dry fruits, apple cider<\/strong>\",\r\n          \"Check-out and transfer to Volvo stand \/ Bhuntar airport\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"manali-solang-atal\",\r\n          title: \"Solang Valley &amp; Atal Tunnel Excursion\",\r\n          route: \"Manali \u2192 Solang \u2192 Atal Tunnel \u2192 Sissu \u2192 Manali\",\r\n          intro: \"Solang's snow point, the engineering marvel of Atal Tunnel (9.02 km), and Lahaul's Sissu valley \u2014 perfectly paced for one day.\",\r\n          activities: [\r\n            \"Morning drive to <strong>Solang Valley<\/strong> (14 km, 30 min) \u2014 ski slopes, paragliding, zorbing &amp; snow activities (seasonal)\",\r\n            \"Continue through the <strong>Atal Tunnel<\/strong> (9.02 km, longest single-tube highway tunnel above 10,000 ft) via Dhundi\",\r\n            \"Photo stop at <strong>Sissu<\/strong> in Lahaul valley with Sissu waterfall views\",\r\n            \"Return via <strong>Nehru Kund<\/strong> (6 km); free time at Mall Road\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~80 km round\",\r\n          driveTime: \"5\u20136 hrs total\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"group\",\"adventure\",\"couple\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"manali-local\",\r\n          title: \"Local Manali Sightseeing\",\r\n          route: \"Manali local circuit\",\r\n          intro: \"Manali's spiritual heart &amp; legendary caf\u00e9 culture, at a gentle pace.\",\r\n          activities: [\r\n            \"Morning at <strong>Hadimba Devi Temple<\/strong> (built 1553) \u2014 four-tiered pagoda roof in cedar grove\",\r\n            \"Visit <strong>Manu Temple<\/strong> in Old Manali (2 km)\",\r\n            \"<strong>Vashisht Hot Springs<\/strong> (3 km) \u2014 natural sulphur baths &amp; ancient temple\",\r\n            \"Afternoon at <strong>Tibetan Monastery<\/strong> (Gadhan Thekchhokling Gompa) &amp; caf\u00e9-hopping\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~15 km\",\r\n          driveTime: \"2\u20133 hrs sightseeing\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"manali-kullu-adventure\",\r\n          title: \"Kullu Valley &amp; River Rafting\",\r\n          route: \"Manali \u2192 Pirdi \u2192 Naggar \u2192 Manali\",\r\n          intro: \"A high-octane day on the Beas paired with Kullu's shawl-weaving heritage &amp; 500-year-old Naggar Castle.\",\r\n          activities: [\r\n            \"<strong>River rafting on the Beas<\/strong> (Pirdi to Jhiri, ~14 km, Grade II\u2013III)\",\r\n            \"Visit the <strong>Kullu Shawl Industry<\/strong> &amp; Raghunath Ji Temple\",\r\n            \"Drive up to <strong>Naggar Castle<\/strong> (500-year-old wood-and-stone fort) &amp; Roerich Art Gallery\",\r\n            \"Stop at <strong>Van Vihar<\/strong> on the return\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~85 km round\",\r\n          driveTime: \"4\u20135 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"family\",\"couple\"]\r\n        },\r\n        {\r\n          id: \"manali-manikaran-kasol\",\r\n          title: \"Manikaran &amp; Kasol Day Trip\",\r\n          route: \"Manali \u2192 Kasol \u2192 Manikaran \u2192 Manali\",\r\n          intro: \"Israeli caf\u00e9s, hot springs &amp; a sacred gurudwara in the stunning Parvati Valley.\",\r\n          activities: [\r\n            \"Scenic drive through the <strong>Parvati Valley<\/strong>\",\r\n            \"Explore <strong>Kasol<\/strong> (1,580 m) \u2014 riverside walks &amp; caf\u00e9 lunch\",\r\n            \"Visit <strong>Gurudwara Shri Manikaran Sahib<\/strong> &amp; natural sulphur hot springs\",\r\n            \"Langar lunch at the gurudwara (a must-do experience)\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~150 km round\",\r\n          driveTime: \"5\u20136 hrs drive\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"group\",\"couple\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"manali-naggar-jana\",\r\n          title: \"Naggar Heritage &amp; Jana Waterfall\",\r\n          route: \"Manali \u2192 Naggar \u2192 Jana \u2192 Manali\",\r\n          intro: \"An offbeat cultural day \u2014 apple orchards, Russian-era art &amp; a hidden waterfall.\",\r\n          activities: [\r\n            \"Visit <strong>Naggar Castle<\/strong> \u2014 former seat of Kullu kings, now a heritage hotel\",\r\n            \"Tour the <strong>Nicholas Roerich Art Gallery<\/strong>\",\r\n            \"Lunch at <strong>Jana village<\/strong> \u2014 authentic Himachali dham (sidu, red rice, trout)\",\r\n            \"Short walk to <strong>Jana Waterfall<\/strong>\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~50 km round\",\r\n          driveTime: \"3\u20134 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"manali-rohtang\",\r\n          title: \"Rohtang Pass Excursion (seasonal)\",\r\n          route: \"Manali \u2192 Marhi \u2192 Rohtang Pass \u2192 Manali\",\r\n          intro: \"Rohtang Pass (3,978 m) \u2014 old gateway to trans-Himalayan Lahaul, with snow even in summer. Online permit required; closed Tuesdays.\",\r\n          activities: [\r\n            \"Early departure (online permit required \u2014 we arrange it; pass closed Tuesdays)\",\r\n            \"Drive up via <strong>Kothi<\/strong> (12 km) &amp; <strong>Rahalla Falls<\/strong>\",\r\n            \"Time at the pass for snow play &amp; photography\",\r\n            \"Return via Atal Tunnel (conditions permitting) &amp; hot Maggi at a mountain dhaba\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~100 km round\",\r\n          driveTime: \"6\u20137 hrs (with snow stops)\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"family\",\"group\",\"adventure\",\"couple\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== SHIMLA ==============\r\n    \"shimla\": {\r\n      name: \"Shimla\",\r\n      tagline: \"Former Summer Capital of British India at 2,205 m \u2014 colonial edifices, charming walks through pine, deodar &amp; oak forests.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/shimla-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 10,\r\n      quickFacts: {\r\n        altitude: \"2,205 m\",\r\n        bestTime: \"Mar\u2013Jun, Dec\u2013Feb\",\r\n        nearestAirport: \"Jubbarhatti (23 km)\",\r\n        idealFor: \"Family, First-timers\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for hotel check-in\",\r\n        \"<strong>Vehicle Entry Token<\/strong> if entering Shimla town with private vehicle (small fee at city entry)\",\r\n        \"No special permits needed for Kufri, Naldehra, Chail, Narkanda or Tattapani\"\r\n      ],\r\n      localTip: \"The Kalka\u2013Shimla toy train (UNESCO World Heritage, since 1903) is unmissable \u2014 book Shivalik Deluxe tickets 2\u20133 months ahead on IRCTC. Chandigarh is 117 km, Manali is 245 km, Chail is 45 km, Delhi is 343 km. We use Shimla-based drivers for local sightseeing.\",\r\n      arrival: {\r\n        title: \"Arrival in Shimla\",\r\n        route: \"{origin} \u2192 Shimla\",\r\n        intro: \"Step into the state capital of Himachal Pradesh \u2014 surrounded by pine, deodar &amp; oak forests, with colonial heritage and views of the snow-covered high-ranges.\",\r\n        activities: [\r\n          \"Arrival and check-in at your Shimla hotel\",\r\n          \"Evening walk on <strong>The Ridge<\/strong> \u2014 excellent views of the mountain ranges\",\r\n          \"Explore <strong>Mall Road<\/strong> \u2014 Scandal Point, Gaiety Theatre, Christ Church &amp; the neo-Tudor Library\",\r\n          \"Dinner at a heritage caf\u00e9 \u2014 Indian Coffee House\"\r\n        ],\r\n        stay: \"Shimla\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"7\u20139 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Shimla\",\r\n        route: \"Shimla \u2192 {origin}\",\r\n        intro: \"One last morning on the Ridge before the drive home.\",\r\n        activities: [\r\n          \"Leisurely breakfast with Shivalik views\",\r\n          \"Last-minute shopping at <strong>Lakkar Bazar<\/strong>\",\r\n          \"Check-out &amp; transfer to Volvo stand \/ airport\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"shimla-kufri-fagu\",\r\n          title: \"Kufri, Fagu &amp; Naldehra Circuit\",\r\n          route: \"Shimla \u2192 Kufri \u2192 Fagu \u2192 Naldehra \u2192 Shimla\",\r\n          intro: \"The classic Shimla loop \u2014 horse rides, snow (in winter), apple orchards &amp; a century-old golf course.\",\r\n          activities: [\r\n            \"Drive to <strong>Fagu<\/strong> (22 km) viewpoint\",\r\n            \"Pony ride to <strong>Mahasu Peak<\/strong> from Kufri (16 km)\",\r\n            \"Visit the <strong>Himalayan Nature Park<\/strong> &amp; Kufri Fun World\",\r\n            \"Stop at <strong>Naldehra<\/strong> (23 km) \u2014 9-hole golf course designed by Lord Curzon\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~70 km round\",\r\n          driveTime: \"4\u20135 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"group\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"shimla-heritage\",\r\n          title: \"Shimla Heritage Walk\",\r\n          route: \"Shimla local\",\r\n          intro: \"A slow walk through Shimla's Raj-era bones &amp; spiritual landmarks.\",\r\n          activities: [\r\n            \"Morning at <strong>Jakhoo Hill<\/strong> (2.5 km, 2,455 m) \u2014 town's highest peak with the 108-ft Hanuman statue\",\r\n            \"Tour the <strong>Viceregal Lodge \/ Indian Institute of Advanced Study<\/strong>\",\r\n            \"Walk the heritage trail \u2014 <strong>Christ Church, Gaiety Theatre, Scandal Point<\/strong>\",\r\n            \"Evening at <strong>Lakkar Bazar<\/strong> &amp; Mall Road caf\u00e9\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"Walking\",\r\n          driveTime: \"Full day on foot\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"shimla-chail\",\r\n          title: \"Chail &amp; Kandaghat Day Trip\",\r\n          route: \"Shimla \u2192 Chail \u2192 Shimla\",\r\n          intro: \"Visit one of the world's highest cricket grounds &amp; the former summer palace of the Maharaja of Patiala.\",\r\n          activities: [\r\n            \"Scenic drive to <strong>Chail<\/strong> via Kufri (~45 km)\",\r\n            \"Tour the <strong>Chail Palace<\/strong> \u2014 once the Maharaja of Patiala's summer retreat, now a heritage hotel\",\r\n            \"Visit the historic <strong>Chail cricket ground<\/strong> (2,444 m)\",\r\n            \"Lunch amid deodars &amp; return via Kandaghat\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~90 km round\",\r\n          driveTime: \"4\u20135 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"shimla-narkanda\",\r\n          title: \"Narkanda &amp; Hatu Peak\",\r\n          route: \"Shimla \u2192 Narkanda \u2192 Hatu \u2192 Shimla\",\r\n          intro: \"A day trip to Himachal's apple belt &amp; a 3,400-m peak with an ancient wooden temple.\",\r\n          activities: [\r\n            \"Drive via Kufri &amp; Fagu to <strong>Narkanda<\/strong> (65 km, 2,708 m)\",\r\n            \"Jeep ride \/ drive up to <strong>Hatu Peak<\/strong> (3,400 m, 8 km from Narkanda)\",\r\n            \"Visit the ancient wooden <strong>Hatu Mata Temple<\/strong>\",\r\n            \"Lunch at Narkanda &amp; return to Shimla\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~150 km round\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\",\"family\"]\r\n        },\r\n        {\r\n          id: \"shimla-tattapani\",\r\n          title: \"Tattapani Hot Springs &amp; Naldehra\",\r\n          route: \"Shimla \u2192 Tattapani \u2192 Naldehra \u2192 Shimla\",\r\n          intro: \"Relax at sulphur springs on the Sutlej, then visit the century-old Naldehra golf course.\",\r\n          activities: [\r\n            \"Scenic drive down to <strong>Tattapani<\/strong> (51 km, on the Sutlej)\",\r\n            \"Natural <strong>hot-spring bath<\/strong> on the river banks\",\r\n            \"Optional river rafting \/ zip-lining\",\r\n            \"Return via <strong>Naldehra<\/strong> \u2014 golf course &amp; deodar forests\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~110 km round\",\r\n          driveTime: \"5 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"adventure\",\"family\",\"group\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"shimla-mashobra\",\r\n          title: \"Mashobra, Craignano &amp; Wildflower Hall area\",\r\n          route: \"Shimla \u2192 Mashobra \u2192 Craignano \u2192 Shimla\",\r\n          intro: \"Peaceful day in the upscale hamlets above Shimla \u2014 where the Viceroys once summered.\",\r\n          activities: [\r\n            \"Drive to <strong>Mashobra<\/strong> (~13 km above Shimla)\",\r\n            \"Walk through <strong>Craignano<\/strong> gardens\",\r\n            \"Visit the <strong>Fruit Research Station<\/strong> (seasonal) &amp; Wildflower Hall surroundings\",\r\n            \"Evening back on Mall Road\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~30 km round\",\r\n          driveTime: \"3\u20134 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"luxury\",\"couple\",\"family\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== KASOL ==============\r\n    \"kasol\": {\r\n      name: \"Kasol \u2013 Kheerganga\",\r\n      tagline: \"Mini Israel of India at 1,580 m in the Parvati Valley \u2014 riverside caf\u00e9s, Parvati vibes &amp; the legendary Kheerganga trek to natural hot springs.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/kasol-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 10,\r\n      quickFacts: {\r\n        altitude: \"1,580 m\",\r\n        bestTime: \"Mar\u2013Jun, Sep\u2013Nov\",\r\n        nearestAirport: \"Bhuntar (30 km)\",\r\n        idealFor: \"Backpackers, Trekkers\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for hotel\/camp check-in\",\r\n        \"<strong>No special permit<\/strong> for Kasol, Manikaran, Tosh, Chalal or Kheerganga\",\r\n        \"<strong>Respect Malana customs<\/strong> \u2014 local law forbids outsiders from touching residents or property\"\r\n      ],\r\n      localTip: \"Malana village has strict 'do not touch' customs \u2014 please respect local traditions. Kheerganga trek from Barshaini takes 4\u20135 hours one-way; carry water, cash (no ATMs beyond Kasol), and a power bank. Best caf\u00e9s: Evergreen, Moon Dance, Jim Morrison, Stone Garden.\",\r\n      arrival: {\r\n        title: \"Arrival in Kasol\",\r\n        route: \"{origin} \u2192 Bhuntar \u2192 Kasol\",\r\n        intro: \"Welcome to Mini Israel \u2014 a hill-hamlet at 1,580 m on the banks of the Parvati river, 36 km from Kullu town.\",\r\n        activities: [\r\n          \"Check-in at a Kasol riverside stay\",\r\n          \"Lunch at a famous Israeli caf\u00e9\",\r\n          \"Riverside walk along the <strong>Parvati<\/strong>\",\r\n          \"Explore Kasol markets \u2014 leather, crystals, dream-catchers\"\r\n        ],\r\n        stay: \"Kasol\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"12\u201314 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Kasol\",\r\n        route: \"Kasol \u2192 {origin}\",\r\n        intro: \"One last slow morning in Parvati Valley.\",\r\n        activities: [\r\n          \"Relaxed breakfast &amp; riverside time\",\r\n          \"Souvenir shopping \u2014 handmade leather, incense, hippie wear\",\r\n          \"Check-out &amp; transfer to Bhuntar \/ Volvo pickup\",\r\n          \"Overnight journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"kasol-manikaran\",\r\n          title: \"Manikaran &amp; Chalal Walk\",\r\n          route: \"Kasol \u2192 Manikaran \u2192 Chalal \u2192 Kasol\",\r\n          intro: \"Cultural day with an easy walk. Manikaran sits where Parvati meets Beas, with hot springs &amp; the gurudwara visited by Guru Nanak Dev Ji.\",\r\n          activities: [\r\n            \"Morning visit to <strong>Gurudwara Shri Manikaran Sahib<\/strong> &amp; sulphur hot springs\",\r\n            \"Langar lunch at the gurudwara (free community meal)\",\r\n            \"Return to Kasol; easy 30-min riverside walk to <strong>Chalal village<\/strong>\",\r\n            \"Sunset caf\u00e9 overlooking the Parvati\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~10 km\",\r\n          driveTime: \"1 hr drive + walking\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"group\",\"luxury\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"kasol-kheerganga\",\r\n          title: \"Kheerganga Trek &amp; Hot Springs\",\r\n          route: \"Kasol \u2192 Barshaini \u2192 Kheerganga (12 km round trek)\",\r\n          intro: \"Signature Parvati Valley trek \u2014 moderate day hike to hot springs at ~3,000 m, last village before the Pin-Parvati pass route.\",\r\n          activities: [\r\n            \"Drive to <strong>Barshaini<\/strong> \u2014 trek starting point\",\r\n            \"4\u20135 hour trek via <strong>Rudra Nag waterfall<\/strong> &amp; pine forests\",\r\n            \"Dip in the <strong>natural hot-water spring<\/strong> &amp; small Shiva temple\",\r\n            \"Overnight in tents \/ bamboo huts under Himalayan stars\"\r\n          ],\r\n          stay: \"Kheerganga camp\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"12 km trek\",\r\n          driveTime: \"1 hr drive + 4\u20135 hr trek\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\"]\r\n        },\r\n        {\r\n          id: \"kasol-tosh\",\r\n          title: \"Kheerganga Descent &amp; Tosh Village\",\r\n          route: \"Kheerganga \u2192 Barshaini \u2192 Tosh\",\r\n          intro: \"Descend from Kheerganga and overnight in the Parvati's prettiest village at 2,400 m.\",\r\n          activities: [\r\n            \"Morning trek down to <strong>Barshaini<\/strong> (3\u20134 hrs)\",\r\n            \"Short drive up to <strong>Tosh village<\/strong> (2,400 m)\",\r\n            \"Caf\u00e9-hopping with snow-peak views\",\r\n            \"Tosh rooftop sunset \u2014 backpacker classic\"\r\n          ],\r\n          stay: \"Tosh\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"8 km trek + 5 km drive\",\r\n          driveTime: \"3\u20134 hr trek + 30 min drive\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\"]\r\n        },\r\n        {\r\n          id: \"kasol-malana\",\r\n          title: \"Malana Village Excursion\",\r\n          route: \"Kasol \u2192 Jari \u2192 Malana \u2192 Kasol\",\r\n          intro: \"Visit one of the world's oldest democracies \u2014 isolated village with unique customs &amp; the Jamlu Devta temple.\",\r\n          activities: [\r\n            \"Drive to <strong>Jari<\/strong>; trek up to <strong>Malana<\/strong> (2\u20133 hrs)\",\r\n            \"Explore village (respect local 'do not touch' customs strictly)\",\r\n            \"Lunch at a local guesthouse\",\r\n            \"Return to Kasol by evening\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~30 km drive + 5 km trek\",\r\n          driveTime: \"1.5 hr drive + 2\u20133 hr trek each way\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\"]\r\n        },\r\n        {\r\n          id: \"kasol-leisure\",\r\n          title: \"Kasol Leisure &amp; Katagla Waterfall\",\r\n          route: \"Kasol local\",\r\n          intro: \"A slow day to soak in Kasol \u2014 caf\u00e9s, river, forests.\",\r\n          activities: [\r\n            \"Lazy breakfast by the Parvati\",\r\n            \"Short hike to <strong>Katagla waterfall<\/strong>\",\r\n            \"Yoga \/ reading session riverside\",\r\n            \"Evening live music at a local caf\u00e9\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"Walking\",\r\n          driveTime: \"Leisure\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"kasol-grahan\",\r\n          title: \"Grahan Village Day Trek\",\r\n          route: \"Kasol \u2192 Grahan \u2192 Kasol (10 km round)\",\r\n          intro: \"Offbeat short trek to a forgotten Himachali village \u2014 start point for the Sar Pass trek.\",\r\n          activities: [\r\n            \"Morning trek from Kasol towards <strong>Grahan<\/strong> (3\u20134 hrs)\",\r\n            \"Traditional village walk &amp; local lunch\",\r\n            \"Trek back to Kasol by evening\",\r\n            \"Bonfire night (on request)\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"10 km trek\",\r\n          driveTime: \"6\u20137 hr trek total\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== DHARAMSHALA ==============\r\n    \"dharamshala\": {\r\n      name: \"Dharamshala \u2013 McLeodganj\",\r\n      tagline: \"Home of the Dalai Lama, Tibetan monasteries &amp; snow-capped Dhauladhar range views.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/dharamshala-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 10,\r\n      quickFacts: {\r\n        altitude: \"Dharamsala: 1,457 m \/ McLeodganj: 1,770 m\",\r\n        bestTime: \"Mar\u2013Jun, Sep\u2013Nov\",\r\n        nearestAirport: \"Gaggal (13 km)\",\r\n        idealFor: \"Family, Couples, Spirituality\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for hotel\/homestay check-in\",\r\n        \"<strong>No permits<\/strong> needed for McLeodganj, Dharamkot, Bhagsu, Naddi or Triund day trek\",\r\n        \"<strong>Forest entry fee<\/strong> for Triund (collected at Gallu Devi checkpoint, nominal)\"\r\n      ],\r\n      localTip: \"Stay in McLeodganj (1,770 m) for Tibetan culture &amp; caf\u00e9s, or higher up in Dharamkot for quiet yoga vibes. Triund trek is best Oct\u2013April \u2014 avoid monsoon. Check tibet.net for any scheduled Dalai Lama teachings. Tibetan handicrafts on sale every Sunday at McLeodganj.\",\r\n      arrival: {\r\n        title: \"Arrival in Dharamshala\",\r\n        route: \"{origin} \u2192 Dharamshala \u2192 McLeodganj\",\r\n        intro: \"Welcome to Little Lhasa \u2014 McLeodganj (1,770 m) is the residence of His Holiness the Dalai Lama and headquarters of the Tibetan Government in Exile.\",\r\n        activities: [\r\n          \"Check-in at your McLeodganj hotel\",\r\n          \"Evening walk on <strong>Temple Road<\/strong>\",\r\n          \"Caf\u00e9 dinner with Dhauladhar range views\",\r\n          \"Explore Tibetan handicraft stalls\"\r\n        ],\r\n        stay: \"McLeodganj\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"11\u201313 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Dharamshala\",\r\n        route: \"Dharamshala \u2192 {origin}\",\r\n        intro: \"A last morning in the Little Lhasa of India.\",\r\n        activities: [\r\n          \"Breakfast with mountain views\",\r\n          \"Souvenir shopping \u2014 <strong>thangkas, singing bowls, carpets<\/strong> at McLeodganj; handicrafts at Kotwali Bazar\",\r\n          \"Check-out &amp; transfer to Gaggal airport \/ Pathankot station\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"dharamshala-mcleod\",\r\n          title: \"McLeodganj Spiritual Tour\",\r\n          route: \"McLeodganj local circuit\",\r\n          intro: \"Walk through the heart of Tibetan Buddhist culture \u2014 from the Dalai Lama's residence to ancient churches beneath deodar trees.\",\r\n          activities: [\r\n            \"Morning at the <strong>Tsuglagkhang Complex (Dalai Lama Temple)<\/strong>\",\r\n            \"Visit the <strong>Tibet Museum<\/strong> &amp; Namgyal Monastery\",\r\n            \"Lunch at a Tibetan momo caf\u00e9\",\r\n            \"Walk to <strong>Bhagsu Nag Temple &amp; Waterfall<\/strong>; evening at <strong>St. John in the Wilderness<\/strong> (8 km)\"\r\n          ],\r\n          stay: \"McLeodganj\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~15 km\",\r\n          driveTime: \"Full day mixed\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"dharamshala-triund\",\r\n          title: \"Triund Day Trek\",\r\n          route: \"McLeodganj \u2192 Gallu \u2192 Triund \u2192 McLeodganj (~14 km round)\",\r\n          intro: \"Iconic Dhauladhar day trek \u2014 snow-line views in 4\u20135 hours each way. Triund ridge sits at ~2,850 m.\",\r\n          activities: [\r\n            \"Trek start from <strong>Gallu Devi Temple<\/strong>\",\r\n            \"4\u20135 hour hike to <strong>Triund ridge<\/strong> (~2,850 m)\",\r\n            \"Lunch on the ridge with Kangra valley below\",\r\n            \"Descend by evening (3\u20134 hrs down)\"\r\n          ],\r\n          stay: \"McLeodganj\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~14 km trek round\",\r\n          driveTime: \"8\u201310 hr trek total\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\"]\r\n        },\r\n        {\r\n          id: \"dharamshala-kangra\",\r\n          title: \"Kangra Valley Heritage Day\",\r\n          route: \"McLeodganj \u2192 HPCA \u2192 Kangra Fort \u2192 Norbulingka \u2192 McLeodganj\",\r\n          intro: \"Valley history, cricket &amp; ancient temples in one full day.\",\r\n          activities: [\r\n            \"Visit the <strong>HPCA Cricket Stadium<\/strong> with Dhauladhar backdrop\",\r\n            \"Tour <strong>War Memorial<\/strong> &amp; <strong>Norbulingka Institute<\/strong> (Tibetan arts)\",\r\n            \"Visit <strong>Kangra Fort<\/strong> &amp; Brajeshwari Devi Temple\",\r\n            \"Return via <strong>Dal Lake<\/strong>\"\r\n          ],\r\n          stay: \"McLeodganj\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~50 km round\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"dharamshala-khajjiar\",\r\n          title: \"Khajjiar \u2013 Mini Switzerland\",\r\n          route: \"Dharamshala \u2192 Khajjiar \u2192 Dalhousie\",\r\n          intro: \"Shift base to the alpine saucer-shaped meadow of Khajjiar (1,920 m), a starting point for Kalatop treks.\",\r\n          activities: [\r\n            \"Scenic drive to <strong>Khajjiar<\/strong> (1,920 m) through Kalatop forest\",\r\n            \"Visit the 12th-century <strong>Khajji Nag Temple<\/strong>\",\r\n            \"Zorbing, horse rides &amp; paragliding (seasonal)\",\r\n            \"Continue to <strong>Dalhousie<\/strong> (2,036 m); evening at Gandhi Chowk\"\r\n          ],\r\n          stay: \"Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~125 km\",\r\n          driveTime: \"5\u20136 hrs (one-way relocation)\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"dharamshala-bir\",\r\n          title: \"Bir Billing Day Trip \u2014 Paragliding\",\r\n          route: \"Dharamshala \u2192 Bir \u2192 Dharamshala\",\r\n          intro: \"Tandem paragliding from Billing (2,400 m) \u2014 bucket-list flight over the Dhauladhar range.\",\r\n          activities: [\r\n            \"Morning drive to <strong>Bir<\/strong> (~70 km)\",\r\n            \"Drive up to <strong>Billing take-off<\/strong>\",\r\n            \"<strong>Tandem paragliding<\/strong> with licensed pilot (15\u201330 min flight)\",\r\n            \"Lunch at Tibetan colony &amp; return\"\r\n          ],\r\n          stay: \"McLeodganj\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~140 km round\",\r\n          driveTime: \"5\u20136 hrs drive + flight\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== BIR BILLING ==============\r\n    \"bir-billing\": {\r\n      name: \"Bir Billing\",\r\n      tagline: \"Paragliding capital of India \u2014 Tibetan monasteries, tea gardens &amp; Chowgan landing fields in the Joginder Nagar valley.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/bir-billing-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 8,\r\n      quickFacts: {\r\n        altitude: \"Bir: 1,525 m \/ Billing: 2,400 m\",\r\n        bestTime: \"Oct\u2013Nov (peak), Mar\u2013Jun\",\r\n        nearestAirport: \"Gaggal (68 km)\",\r\n        idealFor: \"Adventure, Paragliders\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for guesthouse\/camp check-in\",\r\n        \"<strong>Health declaration<\/strong> for paragliding (basic form, signed at take-off)\",\r\n        \"<strong>No special permit<\/strong> needed for Bir, Billing, Barot or Palampur\"\r\n      ],\r\n      localTip: \"Peak paragliding season is October\u2013November; March\u2013June also flies well. Winter (Dec\u2013Feb) flights are rare due to weather. All our partner pilots are licensed &amp; medically certified. \u20b93,000 is the state-fixed minimum tandem rate \u2014 beware of under-cutters. Take-off at Billing is 2,400 m.\",\r\n      arrival: {\r\n        title: \"Arrival in Bir\",\r\n        route: \"{origin} \u2192 Bir\",\r\n        intro: \"Welcome to the paragliding capital of India \u2014 a Tibetan refugee settlement established in the 1960s.\",\r\n        activities: [\r\n          \"Check-in at a Bir guesthouse \/ camp\",\r\n          \"Visit the <strong>Chowgan landing site<\/strong>\",\r\n          \"Caf\u00e9 evening at <strong>Avva's \/ Garden Caf\u00e9 \/ 4 Tables<\/strong>\",\r\n          \"Walk through Tibetan Colony\"\r\n        ],\r\n        stay: \"Bir\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"12\u201313 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Bir\",\r\n        route: \"Bir \u2192 {origin}\",\r\n        intro: \"Final morning before heading back.\",\r\n        activities: [\r\n          \"Caf\u00e9 breakfast\",\r\n          \"Souvenir shopping at Tibetan Colony\",\r\n          \"Check-out &amp; transfer to Gaggal airport \/ Pathankot\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"bir-paragliding\",\r\n          title: \"Paragliding from Billing\",\r\n          route: \"Bir \u2192 Billing \u2192 Chowgan landing \u2192 Bir\",\r\n          intro: \"Tandem paragliding from 2,400 m, landing at Chowgan. ~15\u201330 min of free flying over the Dhauladhar range.\",\r\n          activities: [\r\n            \"Drive up to <strong>Billing take-off<\/strong> (14 km, ~45 min)\",\r\n            \"<strong>Tandem paragliding<\/strong> with a licensed pilot (weather permitting)\",\r\n            \"Landing at Chowgan, Bir\",\r\n            \"Afternoon caf\u00e9 relaxation\"\r\n          ],\r\n          stay: \"Bir\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~30 km round\",\r\n          driveTime: \"2 hrs drive + flight\",\r\n          difficulty: \"Easy\",\r\n          style: [\"adventure\",\"couple\",\"family\",\"group\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"bir-monasteries\",\r\n          title: \"Monasteries &amp; Deer Park Institute\",\r\n          route: \"Bir local\",\r\n          intro: \"Spiritual day in Tibetan Bir \u2014 Nyingma, Kagyu &amp; Sakya school monasteries.\",\r\n          activities: [\r\n            \"Morning at <strong>Sherab Ling Monastery<\/strong>\",\r\n            \"Visit <strong>Palpung Sherabling<\/strong>\",\r\n            \"Explore the <strong>Deer Park Institute<\/strong>\",\r\n            \"Evening caf\u00e9-hopping\"\r\n          ],\r\n          stay: \"Bir\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~15 km\",\r\n          driveTime: \"Half-day mixed\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"bir-barot\",\r\n          title: \"Barot Valley Day Trip\",\r\n          route: \"Bir \u2192 Barot \u2192 Bir\",\r\n          intro: \"Scenic valley escape known for trout fishing on the Uhl river &amp; pine forests.\",\r\n          activities: [\r\n            \"Scenic drive to <strong>Barot Valley<\/strong> (~70 km)\",\r\n            \"<strong>Trout fishing<\/strong> on Uhl river\",\r\n            \"Lunch at a riverside dhaba\",\r\n            \"Return via Jogindernagar &amp; the historic narrow-gauge railway line\"\r\n          ],\r\n          stay: \"Bir\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~140 km round\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"bir-baijnath\",\r\n          title: \"Baijnath Temple &amp; Palampur Tea Gardens\",\r\n          route: \"Bir \u2192 Baijnath \u2192 Palampur \u2192 Bir\",\r\n          intro: \"Ancient temples &amp; rolling tea estates at the foot of the Dhauladhar range.\",\r\n          activities: [\r\n            \"Visit the 13th-century <strong>Baijnath Shiva Temple<\/strong>\",\r\n            \"Drive through <strong>Palampur tea gardens<\/strong>\",\r\n            \"Lunch at a tea-estate caf\u00e9\",\r\n            \"Return via Andretta artists' village\"\r\n          ],\r\n          stay: \"Bir\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~80 km round\",\r\n          driveTime: \"4\u20135 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== JIBHI ==============\r\n    \"jibhi\": {\r\n      name: \"Jibhi\",\r\n      tagline: \"Himachal's hidden wooden-cottage paradise at 1,600 m \u2014 Seraj Valley pine forests, trout streams &amp; zero crowds.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/jibhi-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 9,\r\n      quickFacts: {\r\n        altitude: \"1,600 m\",\r\n        bestTime: \"Mar\u2013Jun, Sep\u2013Nov\",\r\n        nearestAirport: \"Bhuntar (60 km)\",\r\n        idealFor: \"Couples, Offbeat\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for cottage\/homestay check-in\",\r\n        \"<strong>No special permits<\/strong> for Jibhi, Shoja, Jalori or Serolsar Lake\",\r\n        \"<strong>Trout fishing permit<\/strong> from Banjar Fisheries Dept (we arrange)\"\r\n      ],\r\n      localTip: \"Jibhi is India's rising offbeat gem \u2014 book cottages 1\u20132 months ahead for weekends. Serolsar Lake trek from Jalori Pass is 5 km one way, through oak &amp; rhododendron. Jalori Pass closes during peak winter and reopens around March.\",\r\n      arrival: {\r\n        title: \"Arrival in Jibhi\",\r\n        route: \"{origin} \u2192 Aut \u2192 Jibhi\",\r\n        intro: \"Welcome to Himachal's best-kept secret \u2014 traditional wooden Kath-Kuni cottages, forests &amp; the silence of Seraj Valley.\",\r\n        activities: [\r\n          \"Check-in at a traditional Himachali cottage\",\r\n          \"Walk to the <strong>Jibhi Waterfall<\/strong>\",\r\n          \"Sunset on the riverside\",\r\n          \"Home-style dinner \u2014 <strong>trout, siddu, madra<\/strong>\"\r\n        ],\r\n        stay: \"Jibhi\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"10\u201312 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Jibhi\",\r\n        route: \"Jibhi \u2192 {origin}\",\r\n        intro: \"A final quiet morning in the valley.\",\r\n        activities: [\r\n          \"Slow riverside breakfast\",\r\n          \"Last walk through Jibhi's pine woods\",\r\n          \"Check-out &amp; transfer to Aut \/ Bhuntar\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"jibhi-jalori-serolsar\",\r\n          title: \"Jalori Pass &amp; Serolsar Lake Trek\",\r\n          route: \"Jibhi \u2192 Jalori Pass \u2192 Serolsar \u2192 Jibhi\",\r\n          intro: \"Classic high-altitude day \u2014 Jalori Pass connects Shimla district to Kullu valley, with Mata Jalori Temple at the top.\",\r\n          activities: [\r\n            \"Drive up to <strong>Jalori Pass<\/strong> (3,120 m) &amp; Mata Jalori Temple\",\r\n            \"Easy 5-km forest trek to <strong>Serolsar Lake<\/strong>\",\r\n            \"Lunch at a Jalori dhaba \u2014 rajma-chawal\",\r\n            \"Return via <strong>Shoja<\/strong> viewpoint\"\r\n          ],\r\n          stay: \"Jibhi\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~20 km drive + 10 km trek\",\r\n          driveTime: \"1.5 hr drive + 4 hr trek\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\",\"family\"]\r\n        },\r\n        {\r\n          id: \"jibhi-tirthan\",\r\n          title: \"Tirthan Valley Day\",\r\n          route: \"Jibhi \u2192 Gushaini \u2192 Tirthan \u2192 Jibhi\",\r\n          intro: \"River-side village life &amp; Himachal's offbeat trout capital \u2014 Gushaini is the gateway to the Great Himalayan National Park (UNESCO).\",\r\n          activities: [\r\n            \"Drive to <strong>Gushaini<\/strong>\",\r\n            \"<strong>Trout-fishing session<\/strong> on the Tirthan (permit required)\",\r\n            \"Short hike towards the <strong>Great Himalayan National Park<\/strong> entry\",\r\n            \"Riverside lunch &amp; return\"\r\n          ],\r\n          stay: \"Jibhi\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~50 km round\",\r\n          driveTime: \"3\u20134 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"jibhi-chehni\",\r\n          title: \"Chehni Kothi Heritage Trek\",\r\n          route: \"Jibhi \u2192 Shringa Rishi \u2192 Chehni Kothi\",\r\n          intro: \"Visit one of Himachal's tallest traditional Kath-Kuni towers \u2014 a protected architectural heritage site.\",\r\n          activities: [\r\n            \"Drive to <strong>Shringa Rishi Temple<\/strong>\",\r\n            \"1-hr uphill trek to <strong>Chehni Kothi<\/strong> (~45 m tall tower)\",\r\n            \"Village walk &amp; interactions with locals\",\r\n            \"Return for an early evening\"\r\n          ],\r\n          stay: \"Jibhi\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~15 km drive + 4 km trek\",\r\n          driveTime: \"Half-day\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"jibhi-leisure\",\r\n          title: \"Jibhi Leisure &amp; Mini Thai Waterfall\",\r\n          route: \"Jibhi local\",\r\n          intro: \"A slow day to truly unplug.\",\r\n          activities: [\r\n            \"Morning yoga by the river\",\r\n            \"Short trek to the hidden <strong>Mini Thailand Waterfall<\/strong>\",\r\n            \"Caf\u00e9 hopping in Ghiyagi\",\r\n            \"Bonfire night (on request)\"\r\n          ],\r\n          stay: \"Jibhi\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"Walking\",\r\n          driveTime: \"Leisure\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"jibhi-shoja\",\r\n          title: \"Shoja Viewpoints &amp; Raghupur Fort\",\r\n          route: \"Jibhi \u2192 Shoja \u2192 Raghupur Fort \u2192 Jibhi\",\r\n          intro: \"High ridge views &amp; ancient fort ruins near Jalori Pass.\",\r\n          activities: [\r\n            \"Drive to <strong>Shoja<\/strong> \u2014 famous for dawn photography\",\r\n            \"Moderate trek to <strong>Raghupur Fort ruins<\/strong>\",\r\n            \"Lunch with panoramic Dhauladhar views\",\r\n            \"Return by evening\"\r\n          ],\r\n          stay: \"Jibhi\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~25 km drive + 6 km trek\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== TIRTHAN ==============\r\n    \"tirthan\": {\r\n      name: \"Tirthan Valley\",\r\n      tagline: \"Great Himalayan National Park gateway (UNESCO World Heritage) \u2014 crystal-clear trout rivers, eco-stays &amp; Himachal's most protected biodiversity.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/tirthan-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 8,\r\n      quickFacts: {\r\n        altitude: \"1,600 m\",\r\n        bestTime: \"Mar\u2013Jun, Sep\u2013Nov\",\r\n        nearestAirport: \"Bhuntar (58 km)\",\r\n        idealFor: \"Couples, Nature lovers\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for homestay check-in\",\r\n        \"<strong>GHNP entry permit<\/strong> obtained at Sai Ropa forest office (we arrange)\",\r\n        \"<strong>Trout fishing permit<\/strong> from Banjar Fisheries Dept\",\r\n        \"GHNP closed Dec\u2013March due to snow\"\r\n      ],\r\n      localTip: \"Tirthan is a protected zone \u2014 most stays are eco-conscious homestays. Book early for peak season (April\u2013June). GHNP (UNESCO World Heritage since 2014) entry permit at Sai Ropa forest office. Park closed December\u2013March.\",\r\n      arrival: {\r\n        title: \"Arrival in Tirthan Valley\",\r\n        route: \"{origin} \u2192 Aut \u2192 Tirthan\",\r\n        intro: \"Welcome to Himachal's trout capital &amp; UNESCO-listed GHNP gateway.\",\r\n        activities: [\r\n          \"Drive via the Aut tunnel into Tirthan valley\",\r\n          \"Check-in at a riverside homestay \u2014 <strong>Gushaini \/ Nagini<\/strong>\",\r\n          \"Evening by the Tirthan river\",\r\n          \"Traditional Himachali dinner with fresh trout\"\r\n        ],\r\n        stay: \"Tirthan\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"10\u201312 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Tirthan\",\r\n        route: \"Tirthan \u2192 {origin}\",\r\n        intro: \"Last morning by the river.\",\r\n        activities: [\r\n          \"Slow breakfast riverside\",\r\n          \"Short walk in the homestay orchards\",\r\n          \"Check-out &amp; transfer to Aut\",\r\n          \"Overnight Volvo journey\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"tirthan-ghnp\",\r\n          title: \"Great Himalayan National Park Trek\",\r\n          route: \"Gushaini \u2192 Rolla \/ Shilt trail\",\r\n          intro: \"Moderate day-trek into UNESCO-listed biodiversity \u2014 home to Himalayan tahr, blue sheep &amp; the snow leopard.\",\r\n          activities: [\r\n            \"Obtain permit at <strong>Sai Ropa forest office<\/strong>\",\r\n            \"Drive to <strong>Gushaini<\/strong>, the GHNP entry point\",\r\n            \"4\u20135 hr trek to Rolla with a forest guide\",\r\n            \"Picnic lunch &amp; return\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~15 km drive + trek\",\r\n          driveTime: \"Full day, 8\u201310 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"group\",\"couple\"]\r\n        },\r\n        {\r\n          id: \"tirthan-trout\",\r\n          title: \"Trout Fishing &amp; River Walks\",\r\n          route: \"Gushaini \u2192 Nagini \u2192 Tirthan\",\r\n          intro: \"A slow day along Himachal's best trout waters.\",\r\n          activities: [\r\n            \"Guided <strong>trout fishing<\/strong> session on the Tirthan (permit required)\",\r\n            \"Learn local angling techniques\",\r\n            \"Riverside picnic lunch\",\r\n            \"Evening bonfire (on request)\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"Local\",\r\n          driveTime: \"Leisure\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\",\"adventure\",\"group\"]\r\n        },\r\n        {\r\n          id: \"tirthan-jalori\",\r\n          title: \"Jalori Pass &amp; Serolsar Lake\",\r\n          route: \"Tirthan \u2192 Jalori \u2192 Serolsar \u2192 Tirthan\",\r\n          intro: \"Up to the 3,120-m pass &amp; forest lake with Mata Jalori Temple at the top.\",\r\n          activities: [\r\n            \"Early drive up to <strong>Jalori Pass<\/strong> (3,120 m)\",\r\n            \"5-km forest trek to <strong>Serolsar Lake<\/strong>\",\r\n            \"Lunch at the pass\",\r\n            \"Return via Shoja viewpoint\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~50 km drive + 10 km trek\",\r\n          driveTime: \"8\u20139 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\"]\r\n        },\r\n        {\r\n          id: \"tirthan-jibhi\",\r\n          title: \"Jibhi &amp; Chehni Kothi\",\r\n          route: \"Tirthan \u2192 Jibhi \u2192 Chehni Kothi\",\r\n          intro: \"Neighbour-valley day trip to Kath-Kuni wooden-tower heritage.\",\r\n          activities: [\r\n            \"Drive to <strong>Jibhi<\/strong>\",\r\n            \"Photo stop at <strong>Jibhi Waterfall<\/strong>\",\r\n            \"Trek to <strong>Chehni Kothi<\/strong> tower\",\r\n            \"Return via caf\u00e9s in Ghiyagi\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~30 km round + 4 km trek\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"tirthan-leisure\",\r\n          title: \"Tirthan Leisure &amp; Village Walks\",\r\n          route: \"Tirthan local\",\r\n          intro: \"A day for slow living.\",\r\n          activities: [\r\n            \"Morning yoga by the river\",\r\n            \"Walk through <strong>Nagini &amp; Banjar villages<\/strong>\",\r\n            \"Apple orchard visit (seasonal)\",\r\n            \"Evening trout BBQ\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"Walking\",\r\n          driveTime: \"Leisure\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== NARKANDA ==============\r\n    \"narkanda\": {\r\n      name: \"Narkanda\",\r\n      tagline: \"Himachal's apple capital at 2,708 m on NH-5 \u2014 North India's original skiing town since 1980, with spectacular snow-range views.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/narkanda-tour-packages\/\",\r\n      minNights: 2,\r\n      maxNights: 7,\r\n      quickFacts: {\r\n        altitude: \"2,708 m\",\r\n        bestTime: \"Dec\u2013Feb (ski), Mar\u2013Jun\",\r\n        nearestAirport: \"Jubbarhatti, Shimla (88 km)\",\r\n        idealFor: \"Offbeat, Skiing\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for hotel check-in\",\r\n        \"<strong>No permits<\/strong> needed for Narkanda, Hatu, Tani Jubbar or Thanedhar\",\r\n        \"<strong>Skiing fee<\/strong> at Dhomri slopes (Dec\u2013Feb only)\"\r\n      ],\r\n      localTip: \"Narkanda is one of North India's most underrated ski destinations \u2014 courses run since 1980, typically Jan\u2013Feb. Apple-picking season is August\u2013October in the Kotgarh &amp; Thanedhar belt (Samuel Stokes introduced commercial apples here in 1916).\",\r\n      arrival: {\r\n        title: \"Arrival in Narkanda\",\r\n        route: \"{origin} \u2192 Shimla \u2192 Narkanda\",\r\n        intro: \"Welcome to Himachal's apple &amp; ski country at 2,708 m, on the Hindustan\u2013Tibet Road (NH-5).\",\r\n        activities: [\r\n          \"Drive via Kufri &amp; Fagu to <strong>Narkanda<\/strong> (65 km from Shimla)\",\r\n          \"Check-in at your hotel or apple-orchard homestay\",\r\n          \"Evening walk through the orchards\",\r\n          \"Traditional dinner\"\r\n        ],\r\n        stay: \"Narkanda\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"9\u201311 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Narkanda\",\r\n        route: \"Narkanda \u2192 {origin}\",\r\n        intro: \"Heading home via the Shimla route.\",\r\n        activities: [\r\n          \"Breakfast with orchard views\",\r\n          \"Buy fresh apples &amp; apple cider (seasonal)\",\r\n          \"Check-out &amp; drive back via Shimla\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"narkanda-hatu\",\r\n          title: \"Hatu Peak Drive &amp; Temple\",\r\n          route: \"Narkanda \u2192 Hatu \u2192 Narkanda\",\r\n          intro: \"Drive up to 3,400 m through pine &amp; spruce forests \u2014 highest peak in the Shimla region with a wooden temple.\",\r\n          activities: [\r\n            \"Morning drive \/ jeep ride to <strong>Hatu Peak<\/strong> (3,400 m)\",\r\n            \"Visit the ancient wooden <strong>Hatu Mata Temple<\/strong>\",\r\n            \"360\u00b0 views of the Himalayan ranges\",\r\n            \"Packed lunch at the peak\"\r\n          ],\r\n          stay: \"Narkanda\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~16 km round\",\r\n          driveTime: \"3\u20134 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"narkanda-skiing\",\r\n          title: \"Skiing at Dhomri Slopes (winter)\",\r\n          route: \"Narkanda local\",\r\n          intro: \"Beginner skiing (December\u2013February only) \u2014 with certified instructors.\",\r\n          activities: [\r\n            \"Morning skiing lesson with certified local instructor\",\r\n            \"Afternoon practice on bunny slopes\",\r\n            \"Hot chocolate break at slope caf\u00e9\",\r\n            \"Evening by the bonfire\"\r\n          ],\r\n          stay: \"Narkanda\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"Local\",\r\n          driveTime: \"Half-day session\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\"]\r\n        },\r\n        {\r\n          id: \"narkanda-tanni\",\r\n          title: \"Tani Jubbar Lake &amp; Stokes Farm\",\r\n          route: \"Narkanda \u2192 Tani Jubbar \u2192 Kotgarh \u2192 Narkanda\",\r\n          intro: \"Lake picnic &amp; the birthplace of Himachal's apple industry \u2014 Samuel Stokes planted India's first Red Delicious saplings at Thanedhar in 1916.\",\r\n          activities: [\r\n            \"Drive to <strong>Tani Jubbar Lake<\/strong>\",\r\n            \"Walk around the lake &amp; temple\",\r\n            \"Visit <strong>Stokes Farm<\/strong> at Kotgarh (1,830 m)\",\r\n            \"Lunch at an orchard homestay\"\r\n          ],\r\n          stay: \"Narkanda\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~40 km round\",\r\n          driveTime: \"4\u20135 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"narkanda-thanedhar\",\r\n          title: \"Thanedhar Apple Belt\",\r\n          route: \"Narkanda \u2192 Thanedhar \u2192 Narkanda\",\r\n          intro: \"Deep into Himachal's horticultural heartland \u2014 17 km link road off NH-5.\",\r\n          activities: [\r\n            \"Drive to <strong>Thanedhar<\/strong> (1,830 m)\",\r\n            \"Orchard walk &amp; apple-picking (August\u2013October)\",\r\n            \"Local lunch \u2014 apple cider, trout\",\r\n            \"Return via the ancient Mahamaya Temple\"\r\n          ],\r\n          stay: \"Narkanda\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~35 km round\",\r\n          driveTime: \"4 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== CHAMBA \/ DALHOUSIE ==============\r\n    \"chamba\": {\r\n      name: \"Chamba \u2013 Dalhousie\",\r\n      tagline: \"1,000-year-old Shikhara temples, Ravi river heritage &amp; the Mini Switzerland of India \u2014 a slow Dhauladhar circuit.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/chamba-tour-packages\/\",\r\n      minNights: 3,\r\n      maxNights: 10,\r\n      quickFacts: {\r\n        altitude: \"Chamba: 996 m \/ Dalhousie: 2,036 m\",\r\n        bestTime: \"Mar\u2013Jun, Sep\u2013Nov\",\r\n        nearestAirport: \"Gaggal (120 km)\",\r\n        idealFor: \"Heritage, Family\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for hotel check-in\",\r\n        \"<strong>Kalatop Wildlife Sanctuary entry fee<\/strong> (collected at gate, nominal)\",\r\n        \"<strong>No permits<\/strong> needed for Khajjiar, Dalhousie, Chamba, Bharmour\"\r\n      ],\r\n      localTip: \"The Minjar Fair in Chamba (late July\/early August) is one of Himachal's oldest cultural festivals. Kalatop Wildlife Sanctuary (19.63 sq km) is best on foot (3 km from Lakkar Mandi). Signature souvenirs: <strong>Chamba chappals, Chamba rumal &amp; traditional shawls<\/strong>.\",\r\n      arrival: {\r\n        title: \"Arrival in Dalhousie\",\r\n        route: \"{origin} \u2192 Pathankot \u2192 Dalhousie\",\r\n        intro: \"Step into the colonial hill town at 2,036 m, spread across five hills.\",\r\n        activities: [\r\n          \"Check-in at your Dalhousie hotel\",\r\n          \"Evening walk on <strong>Gandhi Chowk &amp; Subhash Chowk<\/strong>\",\r\n          \"Visit <strong>St. John's Church<\/strong> (1863) &amp; St. Francis' Church\",\r\n          \"Dinner with pine-clad views of the Ravi valley\"\r\n        ],\r\n        stay: \"Dalhousie\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"12\u201314 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Dalhousie\",\r\n        route: \"Dalhousie \u2192 {origin}\",\r\n        intro: \"One last morning among the deodars.\",\r\n        activities: [\r\n          \"Caf\u00e9 breakfast\",\r\n          \"Last shopping on Gandhi Chowk\",\r\n          \"Check-out &amp; transfer to Pathankot (80 km)\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"chamba-khajjiar\",\r\n          title: \"Khajjiar \u2014 Mini Switzerland\",\r\n          route: \"Dalhousie \u2192 Khajjiar \u2192 Dalhousie\",\r\n          intro: \"Full day at the alpine saucer meadow at 1,920 m, also called the 'Gulmarg of Himachal'.\",\r\n          activities: [\r\n            \"Drive to <strong>Khajjiar<\/strong> (1,920 m) through Kalatop forest\",\r\n            \"Walk around the <strong>Khajjiar meadow &amp; lake<\/strong>\",\r\n            \"Visit the 12th-century <strong>Khajji Nag Temple<\/strong>\",\r\n            \"Zorbing \/ horse rides \/ paragliding (optional)\"\r\n          ],\r\n          stay: \"Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~50 km round\",\r\n          driveTime: \"4\u20135 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"chamba-dalhousie\",\r\n          title: \"Dalhousie Sightseeing\",\r\n          route: \"Dalhousie local\",\r\n          intro: \"Slow-paced exploration \u2014 Dalhousie covers 14 sq km on five hills.\",\r\n          activities: [\r\n            \"Visit <strong>Panchpula<\/strong> \u2014 memorial to Sardar Ajit Singh &amp; Satdhara Falls\",\r\n            \"Walk <strong>Subhash Baoli<\/strong>\",\r\n            \"Trek to <strong>Dainkund Peak<\/strong> \u2014 Dalhousie's highest point with Pir Panjal views\",\r\n            \"Evening caf\u00e9 on Mall Road\"\r\n          ],\r\n          stay: \"Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~20 km\",\r\n          driveTime: \"Half-day mixed\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\"]\r\n        },\r\n        {\r\n          id: \"chamba-town\",\r\n          title: \"Chamba Heritage Day\",\r\n          route: \"Dalhousie \u2192 Chamba \u2192 Dalhousie\",\r\n          intro: \"Ancient temples in a 10th-century royal town.\",\r\n          activities: [\r\n            \"Drive to the heritage town of <strong>Chamba<\/strong> (~55 km)\",\r\n            \"Visit the <strong>Laxmi Narayan Temple complex<\/strong> (built 920\u2013940 AD) \u2014 six Shikhara-style temples\",\r\n            \"Tour <strong>Bhuri Singh Museum<\/strong>\",\r\n            \"Walk <strong>The Chowgan<\/strong> &amp; lunch; return via Ravi gorge\"\r\n          ],\r\n          stay: \"Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~110 km round\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"chamba-kalatop\",\r\n          title: \"Kalatop Wildlife Sanctuary\",\r\n          route: \"Dalhousie \u2192 Kalatop \u2192 Dalhousie\",\r\n          intro: \"Short forest trek through deodar &amp; oak \u2014 the 19.63 sq km sanctuary is home to the Himalayan black bear &amp; tahr.\",\r\n          activities: [\r\n            \"Drive to <strong>Lakkar Mandi<\/strong>\",\r\n            \"3-km forest trek to <strong>Kalatop rest house<\/strong>\",\r\n            \"Picnic lunch in the woods\",\r\n            \"Return by evening\"\r\n          ],\r\n          stay: \"Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~25 km drive + 6 km trek\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"family\",\"group\"]\r\n        },\r\n        {\r\n          id: \"chamba-bharmour\",\r\n          title: \"Bharmour Excursion\",\r\n          route: \"Chamba \u2192 Bharmour \u2192 Chamba\",\r\n          intro: \"Ancient capital of Chamba &amp; the Chaurasi temple complex \u2014 84 ancient shrines (7th\u201310th century).\",\r\n          activities: [\r\n            \"Early drive to <strong>Bharmour<\/strong> (~65 km)\",\r\n            \"Visit the <strong>Chaurasi Temple complex<\/strong> (84 shrines)\",\r\n            \"Local Gaddi village interactions\",\r\n            \"Return via Sahoo\"\r\n          ],\r\n          stay: \"Chamba \/ Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~130 km round\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== KINNAUR ==============\r\n    \"kinnaur\": {\r\n      name: \"Kinnaur \u2013 Sangla \u2013 Chitkul\",\r\n      tagline: \"Himachal's Tribal Circuit \u2014 apple orchards, the sacred Kinner Kailash range &amp; India's last inhabited village on the Indo-Tibet frontier.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/kinnaur-tour-packages\/\",\r\n      minNights: 5,\r\n      maxNights: 11,\r\n      sequenceLocked: true,\r\n      quickFacts: {\r\n        altitude: \"Kalpa: 2,758 m \/ Sangla: 2,696 m \/ Chitkul: 3,450 m\",\r\n        bestTime: \"Apr\u2013Oct\",\r\n        nearestAirport: \"Jubbarhatti, Shimla (240 km)\",\r\n        idealFor: \"Scenic, Offbeat\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for hotel check-in\",\r\n        \"<strong>NO Inner Line Permit needed<\/strong> for Sangla\u2013Chitkul\u2013Kalpa route (Indian citizens)\",\r\n        \"<strong>Inner Line Permit IS required<\/strong> beyond Akpa toward Spiti \u2014 we arrange via SDM Reckong Peo\",\r\n        \"<strong>Foreign nationals<\/strong> need ILP even for Sangla\u2013Chitkul; carry passport\"\r\n      ],\r\n      localTip: \"Inner Line Permit is NOT needed for Sangla\u2013Chitkul\u2013Kalpa for Indian travellers (only photo ID), but IS needed beyond Akpa toward Spiti. The NH-5 cliff-road between Karcham &amp; Powari is narrow \u2014 we use experienced Himachal drivers only. Chitkul (3,450 m) is India's last road-head village before the Indo-Tibet border. Locals do not eat meat in Chitkul.\",\r\n      arrival: {\r\n        title: \"Arrival in Shimla\",\r\n        route: \"{origin} \u2192 Shimla\",\r\n        intro: \"Begin your Kinnaur circuit in the colonial state capital. Acclimatisation starts at 2,205 m before ascending.\",\r\n        activities: [\r\n          \"Arrive &amp; check-in at Shimla hotel\",\r\n          \"Evening on <strong>The Ridge<\/strong>\",\r\n          \"Walk <strong>Mall Road<\/strong>\",\r\n          \"Early dinner &amp; rest for tomorrow's long drive\"\r\n        ],\r\n        stay: \"Shimla\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"7\u20139 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Shimla \u2192 Departure\",\r\n        route: \"Shimla \u2192 {origin}\",\r\n        intro: \"The Kinnaur circuit ends with a descent back to Shimla.\",\r\n        activities: [\r\n          \"Breakfast at Shimla\",\r\n          \"Mall Road last walk\",\r\n          \"Transfer to Volvo stand \/ airport\",\r\n          \"Onward journey home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"kinnaur-sangla\",\r\n          title: \"Shimla \u2192 Sangla\",\r\n          route: \"Shimla \u2192 Narkanda \u2192 Rampur \u2192 Sangla (~220 km)\",\r\n          intro: \"Enter Kinnaur through dramatic cliffs &amp; the Sutlej gorge. Baspa river runs through the 95-km-long Sangla Valley.\",\r\n          activities: [\r\n            \"Early start; drive via <strong>Narkanda &amp; Rampur<\/strong>\",\r\n            \"Lunch at <strong>Karcham<\/strong> near the dam confluence\",\r\n            \"Arrive at <strong>Sangla Valley<\/strong> (2,696 m)\",\r\n            \"Evening at leisure by the Baspa river\"\r\n          ],\r\n          stay: \"Sangla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~220 km\",\r\n          driveTime: \"8\u20139 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"kinnaur-chitkul\",\r\n          title: \"Chitkul Full-Day &amp; Kamru Fort\",\r\n          route: \"Sangla \u2192 Kamru Fort \u2192 Chitkul \u2192 Sangla\",\r\n          intro: \"India's last village &amp; a fort that was the origin of the Bushahr dynasty.\",\r\n          activities: [\r\n            \"Visit <strong>Kamru Fort<\/strong> (2 km from Sangla) \u2014 origin of Bushahr rulers\",\r\n            \"Full day at <strong>Chitkul<\/strong> (3,450 m)\",\r\n            \"Visit the ancient <strong>Mathi Temple<\/strong>\",\r\n            \"Walk along the <strong>Baspa river<\/strong>; local rajma-chawal lunch\"\r\n          ],\r\n          stay: \"Sangla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~50 km round\",\r\n          driveTime: \"3\u20134 hrs drive + walking\",\r\n          difficulty: \"Easy\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"kinnaur-kalpa\",\r\n          title: \"Sangla \u2192 Kalpa (Apple Country)\",\r\n          route: \"Sangla \u2192 Reckong Peo \u2192 Kalpa (~55 km)\",\r\n          intro: \"Shorter drive \u2014 Kalpa (2,758 m) sits across the river from the Kinner Kailash range.\",\r\n          activities: [\r\n            \"Drive to <strong>Kalpa<\/strong> via <strong>Reckong Peo<\/strong> (district HQ)\",\r\n            \"Visit Kalpa Buddhist monastery\",\r\n            \"Evening at <strong>Suicide Point<\/strong> \u2014 Kinner Kailash sunset\",\r\n            \"Walk through apple orchards\"\r\n          ],\r\n          stay: \"Kalpa\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~55 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"kinnaur-sarahan\",\r\n          title: \"Kalpa \u2192 Sarahan (Bhimakali Temple)\",\r\n          route: \"Kalpa \u2192 Sarahan (~170 km)\",\r\n          intro: \"Descend via pine forests to a sacred temple town \u2014 Bhimakali is one of the 51 Shakti Peethas.\",\r\n          activities: [\r\n            \"Drive via Rampur\",\r\n            \"Visit the <strong>Bhimakali Temple<\/strong> complex \u2014 presiding deity of the former Bushahr state\",\r\n            \"Walk through Sarahan's apple groves\",\r\n            \"Evening at the Sarahan Bird Pheasantry\"\r\n          ],\r\n          stay: \"Sarahan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~170 km\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"kinnaur-return\",\r\n          title: \"Sarahan \u2192 Shimla\",\r\n          route: \"Sarahan \u2192 Shimla (~165 km)\",\r\n          intro: \"Gentle drive back to the Queen of Hills.\",\r\n          activities: [\r\n            \"Morning at Bhimakali\",\r\n            \"Scenic drive via Rampur &amp; Narkanda\",\r\n            \"Afternoon arrival &amp; Mall Road evening\",\r\n            \"Farewell dinner\"\r\n          ],\r\n          stay: \"Shimla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~165 km\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== SPITI ==============\r\n    \"spiti\": {\r\n      name: \"Spiti Valley\",\r\n      tagline: \"The 'Middle Land' between India &amp; Tibet \u2014 lunar landscapes, 1,000-year-old monasteries (Tabo, Key, Dhankar) &amp; some of India's highest motorable villages.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/spiti-tour-packages\/\",\r\n      minNights: 7,\r\n      maxNights: 13,\r\n      sequenceLocked: true,\r\n      quickFacts: {\r\n        altitude: \"Kaza: 3,650 m \/ Komic: 4,587 m\",\r\n        bestTime: \"May\u2013Oct (via Manali); year-round via Shimla\",\r\n        nearestAirport: \"Bhuntar (250 km) \/ Shimla\",\r\n        idealFor: \"Offbeat, Adventure\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> for all stays (Aadhaar\/Passport)\",\r\n        \"<strong>Inner Line Permit<\/strong> required between Reckong Peo and Sumdo (we arrange at SDM Reckong Peo)\",\r\n        \"<strong>Foreign nationals<\/strong> need ILP for the entire Kinnaur\u2013Spiti circuit\",\r\n        \"<strong>Pin Valley National Park<\/strong> entry permit at Kungri \/ Mikkim\"\r\n      ],\r\n      localTip: \"ALWAYS acclimatise via Shimla\/Sangla\/Kalpa before Kaza \u2014 never rush up from Manali side. Carry cash (ATMs only at Kaza), Diamox (consult a doctor first), and warm layers even in June. The Manali-Spiti route (via Kunzum La, 4,551 m) is open only late May to late September; Shimla-Kaza axis stays open most of the year.\",\r\n      arrival: {\r\n        title: \"Arrival in Shimla\",\r\n        route: \"{origin} \u2192 Shimla\",\r\n        intro: \"Begin the Spiti circuit in the colonial hill capital at 2,205 m. Low-altitude start for safe acclimatisation.\",\r\n        activities: [\r\n          \"Arrive &amp; check-in at Shimla\",\r\n          \"Evening on <strong>The Ridge<\/strong> &amp; Mall Road\",\r\n          \"Visit <strong>Christ Church<\/strong>\",\r\n          \"Early dinner &amp; rest for tomorrow\"\r\n        ],\r\n        stay: \"Shimla\",\r\n        meals: \"Dinner\",\r\n        distance: \"Origin-dependent\",\r\n        driveTime: \"7\u20139 hrs from Delhi\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      departure: {\r\n        title: \"Manali \u2192 Departure\",\r\n        route: \"Manali \u2192 {origin}\",\r\n        intro: \"The Spiti circuit ends in lush green Manali.\",\r\n        activities: [\r\n          \"Morning at leisure in Manali\",\r\n          \"Mall Road last walk \/ shopping\",\r\n          \"Transfer to Volvo stand \/ Bhuntar airport\",\r\n          \"Onward journey with Spiti memories\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"spiti-sangla\",\r\n          title: \"Shimla \u2192 Sangla\",\r\n          route: \"Shimla \u2192 Sangla (~220 km)\",\r\n          intro: \"Enter Kinnaur through dramatic cliffs &amp; the Sutlej gorge.\",\r\n          activities: [\r\n            \"Drive via <strong>Narkanda &amp; Rampur<\/strong>\",\r\n            \"Lunch at Karcham\",\r\n            \"Arrive <strong>Sangla Valley<\/strong> (2,696 m)\",\r\n            \"Evening visit to <strong>Chitkul<\/strong> (time permitting)\"\r\n          ],\r\n          stay: \"Sangla\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~220 km\",\r\n          driveTime: \"8\u20139 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"spiti-kalpa\",\r\n          title: \"Sangla \u2192 Kalpa\",\r\n          route: \"Sangla \u2192 Kalpa (~55 km)\",\r\n          intro: \"Apple orchards with Kinner Kailash views from your balcony.\",\r\n          activities: [\r\n            \"Drive via Reckong Peo (district HQ)\",\r\n            \"<strong>Kinner Kailash<\/strong> viewpoint\",\r\n            \"Visit Kalpa monastery &amp; Narayan-Nirth Temple\",\r\n            \"Sunset at Suicide Point\"\r\n          ],\r\n          stay: \"Kalpa\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~55 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          style: [\"couple\",\"family\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"spiti-tabo\",\r\n          title: \"Kalpa \u2192 Nako \u2192 Tabo\",\r\n          route: \"Kalpa \u2192 Nako \u2192 Tabo (~170 km)\",\r\n          intro: \"Cross into Spiti \u2014 green gives way to ochre, lunar landscapes begin. Tabo Monastery was founded in 996 AD.\",\r\n          activities: [\r\n            \"Cross the famous <strong>Khab Sangam<\/strong> (Sutlej\u2013Spiti confluence)\",\r\n            \"Stop at <strong>Nako Lake &amp; monastery<\/strong>\",\r\n            \"Dramatic <strong>Maling Nallah<\/strong> crossing\",\r\n            \"Arrive <strong>Tabo<\/strong> \u2014 visit the 1,000+ year-old monastery (9 temples, 23 chortens)\"\r\n          ],\r\n          stay: \"Tabo\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~170 km\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\"]\r\n        },\r\n        {\r\n          id: \"spiti-dhankar-kaza\",\r\n          title: \"Tabo \u2192 Dhankar \u2192 Pin Valley \u2192 Kaza\",\r\n          route: \"Tabo \u2192 Dhankar \u2192 Kaza (~80 km with detours)\",\r\n          intro: \"Heart of Spiti \u2014 Dhankar was the traditional capital, a fort-monastery on a precipice at 3,894 m.\",\r\n          activities: [\r\n            \"Visit <strong>Dhankar Monastery<\/strong> (3,894 m) &amp; optional Dhankar Lake hike\",\r\n            \"Detour into <strong>Pin Valley National Park<\/strong> (snow leopard country)\",\r\n            \"Lunch at Mudh village\",\r\n            \"Arrive <strong>Kaza<\/strong> (3,650 m) \u2014 Spiti's headquarters\"\r\n          ],\r\n          stay: \"Kaza\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~80 km + detours\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"spiti-key-kibber\",\r\n          title: \"Key, Kibber, Hikkim &amp; Langza\",\r\n          route: \"Kaza circuit (~80 km)\",\r\n          intro: \"The classic Spiti postcard day \u2014 Key Monastery (4,166 m) is the largest gompa in the valley.\",\r\n          activities: [\r\n            \"Morning at <strong>Key Monastery<\/strong> (4,166 m) \u2014 Spiti's iconic shot, ~250 lamas\",\r\n            \"Drive to <strong>Kibber<\/strong> (4,270 m, 16 km from Kaza)\",\r\n            \"Post a letter from <strong>Hikkim<\/strong> \u2014 one of the highest post offices in the world (4,440 m)\",\r\n            \"Visit <strong>Langza<\/strong> (4,420 m) \u2014 Buddha statue &amp; marine fossils\"\r\n          ],\r\n          stay: \"Kaza\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~80 km\",\r\n          driveTime: \"Full day\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"spiti-komic-demul\",\r\n          title: \"Komic, Demul &amp; Lhalung Villages\",\r\n          route: \"Kaza \u2192 Komic \u2192 Demul \u2192 Lhalung \u2192 Kaza\",\r\n          intro: \"Deep offbeat day \u2014 Komic (4,587 m) is among India's highest motorable villages, with a 500-year-old monastery.\",\r\n          activities: [\r\n            \"Drive to <strong>Komic<\/strong> (4,587 m)\",\r\n            \"Visit the 500-year-old <strong>Tangyud Monastery<\/strong>\",\r\n            \"<strong>Demul (4,380 m) &amp; Lhalung (3,720 m)<\/strong> village walks\",\r\n            \"Traditional Tibetan-Buddhist homestay lunch\"\r\n          ],\r\n          stay: \"Kaza\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~70 km round\",\r\n          driveTime: \"Full day\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\"]\r\n        },\r\n        {\r\n          id: \"spiti-chandratal-manali\",\r\n          title: \"Kaza \u2192 Chandratal \u2192 Manali (long day)\",\r\n          route: \"Kaza \u2192 Kunzum La \u2192 Chandratal \u2192 Manali (~190 km)\",\r\n          intro: \"Toughest &amp; most spectacular day \u2014 crossing Kunzum La (4,551 m) into Lahaul. May\u2013Sep only.\",\r\n          activities: [\r\n            \"Early departure; cross <strong>Kunzum Pass<\/strong> (4,551 m)\",\r\n            \"Detour to <strong>Chandratal \u2014 the Moon Lake<\/strong> (seasonal, 4,300 m)\",\r\n            \"Long drive via <strong>Lahaul valley &amp; Atal Tunnel<\/strong>\",\r\n            \"Arrive Manali by night \u2014 hot dinner &amp; rest\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~190 km\",\r\n          driveTime: \"10\u201312 hrs (very long day)\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\"]\r\n        }\r\n      ]\r\n    },\r\n\r\n    \/\/ ============== LEH LADAKH ==============\r\n    \"leh-ladakh\": {\r\n      name: \"Leh Ladakh\",\r\n      tagline: \"Land of high passes, turquoise lakes &amp; Tibetan Buddhist culture. Leh sits at 3,524 m; the circuit crosses Khardung La (5,359 m) &amp; Chang La (5,360 m).\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/leh-ladakh-tour-packages\/\",\r\n      minNights: 5,\r\n      maxNights: 13,\r\n      sequenceLocked: true,\r\n      quickFacts: {\r\n        altitude: \"Leh: 3,524 m \/ Khardung La: 5,359 m\",\r\n        bestTime: \"May\u2013Sep (by road); Year-round by flight\",\r\n        nearestAirport: \"Kushok Bakula Rimpochee, Leh\",\r\n        idealFor: \"Adventure, Biking\"\r\n      },\r\n      permits: [\r\n        \"<strong>Valid photo ID<\/strong> (Aadhaar\/Passport) for hotel check-in\",\r\n        \"<strong>Inner Line Permit<\/strong> for Nubra, Pangong &amp; Tso Moriri \u2014 we arrange at DC office, Leh\",\r\n        \"<strong>Ladakh Environment Fee<\/strong> (Rs 400\/person + Rs 20\/day + Rs 10 Red Cross\/day, payable on entry)\",\r\n        \"<strong>Foreign nationals<\/strong> require Protected Area Permit instead of ILP\",\r\n        \"Pangong, Nubra &amp; Tso Moriri are restricted areas \u2014 group of 2+ Indian travellers needed for permit\"\r\n      ],\r\n      localTip: \"Flying in to Leh? Rest the FIRST 24\u201348 hours fully \u2014 no sightseeing on Day 1. Altitude Mountain Sickness (AMS) is very real above 3,500 m. Inner Line Permits arranged by us at DC office, Leh. Carry a pulse oximeter. June and September are our favourite months; mid-July can bring flash-flood risk. Ladakh is a separate Union Territory.\",\r\n      arrival: {\r\n        title: \"Arrival in Leh\",\r\n        route: \"{origin} \u2192 Leh\",\r\n        intro: \"Welcome to Ladakh UT \u2014 but first, ACCLIMATISATION. Leh sits at 3,524 m. Altitude is no joke.\",\r\n        activities: [\r\n          \"Arrive Leh (3,524 m) \u2014 by flight or road\",\r\n          \"<strong>COMPLETE REST<\/strong> at the hotel \u2014 no exertion, no sightseeing\",\r\n          \"Drink 4\u20135 litres of water through the day\",\r\n          \"Light dinner; early sleep\"\r\n        ],\r\n        stay: \"Leh\",\r\n        meals: \"Dinner\",\r\n        distance: \"Flight \/ road from origin\",\r\n        driveTime: \"Acclimatisation day \u2014 no travel\",\r\n        difficulty: \"Hard (altitude)\"\r\n      },\r\n      departure: {\r\n        title: \"Departure from Leh\",\r\n        route: \"Leh \u2192 {origin}\",\r\n        intro: \"Head home with a lifetime of Himalayan memories.\",\r\n        activities: [\r\n          \"Breakfast at hotel\",\r\n          \"Last-minute Tibetan shopping \u2014 <strong>pashmina, apricot jam, prayer flags<\/strong>\",\r\n          \"Transfer to Leh airport (KBR)\",\r\n          \"Onward flight home\"\r\n        ],\r\n        stay: \"In transit\",\r\n        meals: \"Breakfast\",\r\n        distance: \"\u2014\",\r\n        driveTime: \"\u2014\",\r\n        difficulty: \"Easy\"\r\n      },\r\n      days: [\r\n        {\r\n          id: \"leh-local\",\r\n          title: \"Leh Local Sightseeing &amp; Monasteries\",\r\n          route: \"Leh local circuit\",\r\n          intro: \"Gentle sightseeing at 3,524 m \u2014 ideal after acclimatisation.\",\r\n          activities: [\r\n            \"<strong>Shanti Stupa<\/strong> (built 1991) at sunrise\",\r\n            \"<strong>Leh Palace<\/strong> (Lhachen Palkhar, 17th century) &amp; old town walk\",\r\n            \"<strong>Hall of Fame Museum<\/strong> &amp; Magnetic Hill\",\r\n            \"Evening at <strong>Leh Market<\/strong>; Sangam of Indus &amp; Zanskar (time permitting)\"\r\n          ],\r\n          stay: \"Leh\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~30 km\",\r\n          driveTime: \"Full day mixed\",\r\n          difficulty: \"Easy\",\r\n          style: [\"family\",\"couple\",\"luxury\",\"group\",\"adventure\"]\r\n        },\r\n        {\r\n          id: \"leh-nubra\",\r\n          title: \"Leh \u2192 Khardung La \u2192 Nubra Valley\",\r\n          route: \"Leh \u2192 Khardung La \u2192 Hunder (~150 km)\",\r\n          intro: \"Cross Khardung La (5,359 m) \u2014 one of the world's highest motorable passes \u2014 to the 'Valley of Flowers'.\",\r\n          activities: [\r\n            \"Cross <strong>Khardung La<\/strong> (5,359 m \/ 17,582 ft) \u2014 photo stop only, no long halt (AMS risk)\",\r\n            \"Arrive <strong>Diskit<\/strong> \u2014 visit the 32-m Maitreya Buddha statue\",\r\n            \"<strong>Double-humped Bactrian camel ride<\/strong> on Hunder sand dunes\",\r\n            \"Overnight in Nubra camps\"\r\n          ],\r\n          stay: \"Hunder \/ Nubra\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~150 km\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"leh-turtuk\",\r\n          title: \"Nubra \u2192 Turtuk \u2192 Nubra\",\r\n          route: \"Hunder \u2192 Turtuk \u2192 Hunder (~180 km round)\",\r\n          intro: \"India's last village on the Pakistan border (opened to tourists in 2010) \u2014 preserved Balti culture &amp; apricot orchards.\",\r\n          activities: [\r\n            \"Drive along the <strong>Shyok river<\/strong>\",\r\n            \"Arrive <strong>Turtuk<\/strong> \u2014 Balti village\",\r\n            \"Local lunch with a Balti family\",\r\n            \"Return to Nubra camps by evening\"\r\n          ],\r\n          stay: \"Hunder\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~180 km round\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\"]\r\n        },\r\n        {\r\n          id: \"leh-pangong\",\r\n          title: \"Nubra \u2192 Shyok \u2192 Pangong Lake\",\r\n          route: \"Hunder \u2192 Shyok route \u2192 Pangong (~160 km)\",\r\n          intro: \"Endorheic lake at 4,350 m \u2014 134 km long, 2\/3 in Tibet. Colours shift from azure to emerald to grey through the day.\",\r\n          activities: [\r\n            \"Drive via the dramatic <strong>Shyok river route<\/strong>\",\r\n            \"Arrive <strong>Pangong Tso<\/strong> (4,350 m) \u2014 sunset photography\",\r\n            \"Lakeside dinner under stars\",\r\n            \"Overnight in Pangong camps\"\r\n          ],\r\n          stay: \"Pangong\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~160 km\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"leh-pangong-leh\",\r\n          title: \"Pangong \u2192 Chang La \u2192 Leh\",\r\n          route: \"Pangong \u2192 Chang La \u2192 Hemis \u2192 Leh (~160 km)\",\r\n          intro: \"Via Chang La (5,360 m) &amp; Hemis, the largest monastery in Ladakh.\",\r\n          activities: [\r\n            \"Sunrise at <strong>Pangong Lake<\/strong>\",\r\n            \"Drive back via <strong>Chang La<\/strong> (5,360 m)\",\r\n            \"Visit <strong>Hemis Monastery<\/strong> (built 1630, largest in Ladakh) &amp; Thiksey Monastery\",\r\n            \"Arrive Leh; rest &amp; dinner\"\r\n          ],\r\n          stay: \"Leh\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~160 km\",\r\n          driveTime: \"6\u20137 hrs\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        },\r\n        {\r\n          id: \"leh-tsomoriri\",\r\n          title: \"Leh \u2192 Tso Moriri Lake\",\r\n          route: \"Leh \u2192 Chumathang \u2192 Tso Moriri (~230 km)\",\r\n          intro: \"Ladakh's most remote high-altitude lake at 4,522 m \u2014 a Ramsar wetland, 240 km from Leh.\",\r\n          activities: [\r\n            \"Long scenic drive via <strong>Chumathang hot springs<\/strong>\",\r\n            \"Arrive <strong>Tso Moriri Lake<\/strong> (4,522 m)\",\r\n            \"Visit <strong>Korzok village &amp; Korzok Gompa<\/strong>\",\r\n            \"Overnight in lakeside camps\"\r\n          ],\r\n          stay: \"Tso Moriri\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~230 km\",\r\n          driveTime: \"8\u20139 hrs\",\r\n          difficulty: \"Hard\",\r\n          style: [\"adventure\",\"couple\",\"group\"]\r\n        },\r\n        {\r\n          id: \"leh-sham\",\r\n          title: \"Leh \u2192 Sham Valley (Lamayuru, Alchi, Likir)\",\r\n          route: \"Leh \u2192 Lamayuru \u2192 Alchi \u2192 Leh (~240 km)\",\r\n          intro: \"Ladakh's 'Moonland' &amp; 11th-century monasteries on the Srinagar\u2013Leh highway.\",\r\n          activities: [\r\n            \"Visit the <strong>Sangam of Indus &amp; Zanskar<\/strong>\",\r\n            \"Stop at <strong>Magnetic Hill<\/strong> &amp; Gurudwara Pathar Sahib\",\r\n            \"<strong>Lamayuru Monastery<\/strong> &amp; Moonland landscape\",\r\n            \"<strong>Alchi Monastery<\/strong> (11th-century murals by Rinchen Zangpo) &amp; Likir Monastery\"\r\n          ],\r\n          stay: \"Leh\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"~240 km\",\r\n          driveTime: \"8\u20139 hrs\",\r\n          difficulty: \"Moderate\",\r\n          style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n        }\r\n      ]\r\n    }\r\n\r\n  };\r\n\r\n  \/\/ Combo data is appended in next script block\r\n  window.HT_DESTINATIONS = DESTINATIONS;\r\n})();\r\n<\/script>\r\n\r\n\r\n<script>\r\n(function(){\r\n  \/\/ ============================================================\r\n  \/\/ COMBO ROUTES \u2014 multi-destination chained itineraries\r\n  \/\/ Each combo defines: chain of destinations, transit days,\r\n  \/\/ minimum nights, and how to distribute days among destinations.\r\n  \/\/ ============================================================\r\n  var COMBOS = {\r\n    \"shimla-manali\": {\r\n      name: \"Shimla + Manali\",\r\n      tagline: \"Himachal's classic doublet \u2014 Queen of Hills meets the Beas Valley. Colonial Shimla pairs with snow-laden Manali for the most loved Himachal route.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"shimla\",\"manali\"],\r\n      minNights: 5,\r\n      transit: [\r\n        {\r\n          id: \"transit-shimla-manali\",\r\n          title: \"Shimla \u2192 Manali (via Mandi)\",\r\n          route: \"Shimla \u2192 Bilaspur \u2192 Mandi \u2192 Kullu \u2192 Manali\",\r\n          intro: \"245 km drive across NH-3 &amp; NH-205. Lunch break in Mandi (Beas riverside). Reach Manali by evening.\",\r\n          activities: [\r\n            \"Early morning departure from Shimla\",\r\n            \"Scenic drive via <strong>Bilaspur &amp; Sundernagar<\/strong>\",\r\n            \"Lunch break at <strong>Mandi<\/strong> (Beas river town)\",\r\n            \"Arrival in Manali by evening &amp; check-in\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"245 km\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"manali-kasol\": {\r\n      name: \"Manali + Kasol\",\r\n      tagline: \"Snow peaks &amp; deodar forests of Manali paired with Parvati Valley's hippie caf\u00e9s. The classic Himachal backpacker combo.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"manali\",\"kasol\"],\r\n      minNights: 4,\r\n      transit: [\r\n        {\r\n          id: \"transit-manali-kasol\",\r\n          title: \"Manali \u2192 Kasol (via Bhuntar)\",\r\n          route: \"Manali \u2192 Kullu \u2192 Bhuntar \u2192 Kasol\",\r\n          intro: \"Short, scenic 75-km drive into Parvati Valley.\",\r\n          activities: [\r\n            \"Morning check-out from Manali\",\r\n            \"Drive via <strong>Kullu &amp; Bhuntar<\/strong>\",\r\n            \"Enter the <strong>Parvati Valley<\/strong> at Bhuntar\",\r\n            \"Arrive Kasol by lunch; afternoon riverside walk\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"75 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"dharamshala-dalhousie\": {\r\n      name: \"Dharamshala + Dalhousie\",\r\n      tagline: \"Tibetan culture in McLeodganj paired with the colonial charm of Dalhousie &amp; the meadows of Khajjiar.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"dharamshala\",\"chamba\"],\r\n      minNights: 4,\r\n      transit: [\r\n        {\r\n          id: \"transit-dharamshala-dalhousie\",\r\n          title: \"Dharamshala \u2192 Dalhousie (via Chamba)\",\r\n          route: \"McLeodganj \u2192 Chamba \u2192 Dalhousie\",\r\n          intro: \"Beautiful 130-km drive past Kangra &amp; the Chamba valley.\",\r\n          activities: [\r\n            \"Morning check-out\",\r\n            \"Scenic drive via <strong>Kangra &amp; Chamba<\/strong>\",\r\n            \"Optional 1-hour stop at Chamba town\",\r\n            \"Arrive Dalhousie by evening\"\r\n          ],\r\n          stay: \"Dalhousie\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"130 km\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"shimla-manali-dharamshala\": {\r\n      name: \"Shimla + Manali + Dharamshala\",\r\n      tagline: \"The Himachal Triangle \u2014 three icons in one trip, the most complete classic route.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"shimla\",\"manali\",\"dharamshala\"],\r\n      minNights: 7,\r\n      transit: [\r\n        {\r\n          id: \"transit-shimla-manali\",\r\n          title: \"Shimla \u2192 Manali (via Mandi)\",\r\n          route: \"Shimla \u2192 Mandi \u2192 Kullu \u2192 Manali\",\r\n          intro: \"245 km drive \u2014 the classic NH-3 ride.\",\r\n          activities: [\r\n            \"Morning departure from Shimla\",\r\n            \"Drive via Bilaspur &amp; Sundernagar\",\r\n            \"Lunch at <strong>Mandi<\/strong>\",\r\n            \"Arrival in Manali by evening\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"245 km\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        },\r\n        {\r\n          id: \"transit-manali-dharamshala\",\r\n          title: \"Manali \u2192 Dharamshala\",\r\n          route: \"Manali \u2192 Mandi \u2192 Palampur \u2192 Dharamshala\",\r\n          intro: \"Scenic 230-km drive through Mandi &amp; Kangra valley.\",\r\n          activities: [\r\n            \"Morning departure from Manali\",\r\n            \"Drive via Mandi &amp; Joginder Nagar\",\r\n            \"Lunch break at <strong>Palampur tea gardens<\/strong>\",\r\n            \"Arrive McLeodganj by evening\"\r\n          ],\r\n          stay: \"McLeodganj\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"230 km\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"manali-spiti\": {\r\n      name: \"Manali + Spiti Circuit\",\r\n      tagline: \"Manali to Spiti Valley via the Atal Tunnel &amp; Kunzum Pass (4,551 m). May\u2013Sep only \u2014 the quickest route into Spiti.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/spiti-tour-packages\/\",\r\n      chain: [\"manali\",\"spiti\"],\r\n      minNights: 7,\r\n      transit: [\r\n        {\r\n          id: \"transit-manali-kaza\",\r\n          title: \"Manali \u2192 Kaza (via Atal Tunnel + Kunzum La)\",\r\n          route: \"Manali \u2192 Atal Tunnel \u2192 Kunzum La \u2192 Kaza\",\r\n          intro: \"Spectacular 200-km drive across Kunzum Pass (4,551 m). Open mid-May to mid-October only.\",\r\n          activities: [\r\n            \"Early start; cross <strong>Atal Tunnel<\/strong> (9.02 km)\",\r\n            \"Drive through Lahaul valley &amp; <strong>Gramphu<\/strong>\",\r\n            \"Cross <strong>Kunzum Pass<\/strong> (4,551 m) \u2014 Spiti gateway\",\r\n            \"Detour to <strong>Chandratal \u2014 Moon Lake<\/strong> (seasonal)\",\r\n            \"Arrive <strong>Kaza<\/strong> by night\"\r\n          ],\r\n          stay: \"Kaza\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"200 km\",\r\n          driveTime: \"10\u201312 hrs (very long day)\",\r\n          difficulty: \"Hard\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"shimla-spiti\": {\r\n      name: \"Shimla \u2192 Spiti (via Kinnaur)\",\r\n      tagline: \"The all-weather acclimatisation route into Spiti \u2014 gradually gain altitude through Kinnaur. Open most of the year.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/spiti-tour-packages\/\",\r\n      chain: [\"shimla\",\"spiti\"],\r\n      minNights: 7,\r\n      transit: [\r\n        {\r\n          id: \"transit-shimla-sangla-spiti\",\r\n          title: \"Shimla \u2192 Sangla \u2192 Kalpa \u2192 Tabo (via Kinnaur)\",\r\n          route: \"Multi-day chain via Sangla, Kalpa, Nako\",\r\n          intro: \"This combo uses Spiti's built-in Shimla\u2192Sangla\u2192Kalpa\u2192Tabo\u2192Kaza day chain \u2014 best for acclimatisation.\",\r\n          activities: [\r\n            \"Already covered in the Spiti destination's day plan\",\r\n            \"No separate transit day required\"\r\n          ],\r\n          stay: \"\u2014\",\r\n          meals: \"\u2014\",\r\n          distance: \"\u2014\",\r\n          driveTime: \"\u2014\",\r\n          difficulty: \"\u2014\",\r\n          isTransit: true,\r\n          merge: true\r\n        }\r\n      ]\r\n    },\r\n    \"shimla-kinnaur-spiti\": {\r\n      name: \"Shimla + Kinnaur + Spiti\",\r\n      tagline: \"The full Tribal Circuit \u2014 Shimla, Sangla, Chitkul, Kalpa, Tabo, Kaza, Key, Komic. Himachal's grandest road trip.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/spiti-tour-packages\/\",\r\n      chain: [\"shimla\",\"kinnaur\",\"spiti\"],\r\n      minNights: 9,\r\n      transit: [\r\n        {\r\n          id: \"transit-kinnaur-spiti-merge\",\r\n          title: \"Kinnaur seamlessly continues into Spiti\",\r\n          route: \"Kalpa \u2192 Nako \u2192 Tabo \u2192 Kaza\",\r\n          intro: \"After Kalpa, the route flows naturally into Spiti \u2014 no separate transit day needed.\",\r\n          activities: [\r\n            \"Covered within the Spiti day chain\",\r\n            \"ILP needed beyond Akpa \u2014 we arrange it\"\r\n          ],\r\n          stay: \"\u2014\",\r\n          meals: \"\u2014\",\r\n          distance: \"\u2014\",\r\n          driveTime: \"\u2014\",\r\n          difficulty: \"\u2014\",\r\n          isTransit: true,\r\n          merge: true\r\n        }\r\n      ]\r\n    },\r\n    \"kasol-jibhi-tirthan\": {\r\n      name: \"Kasol + Jibhi + Tirthan\",\r\n      tagline: \"The offbeat-Himachal trifecta \u2014 Parvati Valley, Seraj Valley wooden cottages &amp; Tirthan's UNESCO trout streams.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"kasol\",\"jibhi\",\"tirthan\"],\r\n      minNights: 6,\r\n      transit: [\r\n        {\r\n          id: \"transit-kasol-jibhi\",\r\n          title: \"Kasol \u2192 Jibhi (via Aut)\",\r\n          route: \"Kasol \u2192 Bhuntar \u2192 Aut \u2192 Jibhi\",\r\n          intro: \"Short 70-km drive over the Aut tunnel into Banjar \/ Seraj valley.\",\r\n          activities: [\r\n            \"Morning check-out from Kasol\",\r\n            \"Drive via Bhuntar &amp; through the <strong>Aut tunnel<\/strong> (2.8 km)\",\r\n            \"Photo stop at <strong>Larji<\/strong> dam\",\r\n            \"Arrive Jibhi by lunch; afternoon waterfall walk\"\r\n          ],\r\n          stay: \"Jibhi\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"70 km\",\r\n          driveTime: \"3 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        },\r\n        {\r\n          id: \"transit-jibhi-tirthan\",\r\n          title: \"Jibhi \u2192 Tirthan Valley\",\r\n          route: \"Jibhi \u2192 Banjar \u2192 Gushaini\",\r\n          intro: \"Quick 25-km drive between sister valleys.\",\r\n          activities: [\r\n            \"Slow morning checkout\",\r\n            \"Drive via <strong>Banjar<\/strong>\",\r\n            \"Arrive Gushaini \/ Nagini\",\r\n            \"Riverside check-in &amp; trout lunch\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"25 km\",\r\n          driveTime: \"1.5 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"manali-leh-ladakh\": {\r\n      name: \"Manali + Leh Ladakh\",\r\n      tagline: \"Manali to Leh by road \u2014 across the world's highest motorable highway with 5 high passes. Open mid-June to mid-September only.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/leh-ladakh-tour-packages\/\",\r\n      chain: [\"manali\",\"leh-ladakh\"],\r\n      minNights: 8,\r\n      transit: [\r\n        {\r\n          id: \"transit-manali-jispa\",\r\n          title: \"Manali \u2192 Jispa (via Atal Tunnel)\",\r\n          route: \"Manali \u2192 Atal Tunnel \u2192 Keylong \u2192 Jispa\",\r\n          intro: \"Easy 140-km Day 1 of the road journey \u2014 gentle altitude gain.\",\r\n          activities: [\r\n            \"Cross <strong>Atal Tunnel<\/strong> (9.02 km)\",\r\n            \"Drive through <strong>Sissu &amp; Tandi<\/strong> (last petrol pump for 365 km)\",\r\n            \"Reach <strong>Keylong<\/strong> &amp; <strong>Jispa<\/strong> (3,200 m)\",\r\n            \"Light dinner; early sleep for tomorrow\"\r\n          ],\r\n          stay: \"Jispa\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"140 km\",\r\n          driveTime: \"5\u20136 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        },\r\n        {\r\n          id: \"transit-jispa-leh\",\r\n          title: \"Jispa \u2192 Leh (via 4 passes)\",\r\n          route: \"Jispa \u2192 Baralacha La \u2192 Sarchu \u2192 Tanglang La \u2192 Leh\",\r\n          intro: \"Spectacular 320-km day across 4 passes \u2014 one of the world's most dramatic drives. Open mid-June to mid-September.\",\r\n          activities: [\r\n            \"Cross <strong>Baralacha La<\/strong> (4,890 m)\",\r\n            \"Lunch break at <strong>Sarchu \/ Pang<\/strong>\",\r\n            \"Cross <strong>Lachulung La<\/strong> (5,059 m) &amp; <strong>Tanglang La<\/strong> (5,328 m)\",\r\n            \"Long descent to Leh (3,524 m)\"\r\n          ],\r\n          stay: \"Leh\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"320 km\",\r\n          driveTime: \"12\u201314 hrs\",\r\n          difficulty: \"Hard\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n    \"dharamshala-bir\": {\r\n      name: \"Dharamshala + Bir Billing\",\r\n      tagline: \"Tibetan culture &amp; the Dalai Lama's home in McLeodganj paired with tandem paragliding from Billing \u2014 both at the foot of the Dhauladhar range.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"dharamshala\",\"bir-billing\"],\r\n      minNights: 4,\r\n      transit: [\r\n        {\r\n          id: \"transit-dharamshala-bir\",\r\n          title: \"Dharamshala \u2192 Bir Billing\",\r\n          route: \"McLeodganj \u2192 Palampur \u2192 Bir\",\r\n          intro: \"Pleasant 70-km drive through tea estates.\",\r\n          activities: [\r\n            \"Morning check-out from McLeodganj\",\r\n            \"Drive through <strong>Palampur tea gardens<\/strong>\",\r\n            \"Lunch at a tea-estate caf\u00e9\",\r\n            \"Arrive Bir by afternoon &amp; check-in\"\r\n          ],\r\n          stay: \"Bir\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"70 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n\r\n    \"manali-solang-rohtang\": {\r\n      name: \"Manali + Solang + Rohtang\",\r\n      tagline: \"Manali with focused snow excursions to Solang Valley &amp; Rohtang Pass \/ Atal Tunnel \u2014 perfect 4-day snow getaway.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/manali-tour-packages\/\",\r\n      chain: [\"manali\"],\r\n      minNights: 3,\r\n      transit: []\r\n    },\r\n\r\n    \"shimla-kufri-chail\": {\r\n      name: \"Shimla + Kufri + Chail\",\r\n      tagline: \"Heritage hill-station combo \u2014 colonial Shimla, snow-point Kufri, and the Maharaja of Patiala's summer palace at Chail.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/shimla-tour-packages\/\",\r\n      chain: [\"shimla\"],\r\n      minNights: 3,\r\n      transit: []\r\n    },\r\n\r\n    \"jibhi-tirthan\": {\r\n      name: \"Jibhi + Tirthan Valley\",\r\n      tagline: \"The offbeat short combo \u2014 Kath-Kuni cottages of Seraj Valley + UNESCO-listed Great Himalayan National Park trout streams.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"jibhi\",\"tirthan\"],\r\n      minNights: 4,\r\n      transit: [\r\n        {\r\n          id: \"transit-jibhi-tirthan-short\",\r\n          title: \"Jibhi \u2192 Tirthan Valley\",\r\n          route: \"Jibhi \u2192 Banjar \u2192 Gushaini\",\r\n          intro: \"Quick 25-km drive between sister valleys.\",\r\n          activities: [\r\n            \"Slow morning checkout\",\r\n            \"Drive via <strong>Banjar<\/strong>\",\r\n            \"Arrive Gushaini \/ Nagini\",\r\n            \"Riverside check-in &amp; trout lunch\"\r\n          ],\r\n          stay: \"Tirthan\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"25 km\",\r\n          driveTime: \"1.5 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n\r\n    \"manali-kasol-manikaran\": {\r\n      name: \"Manali + Kasol + Manikaran\",\r\n      tagline: \"Manali pine forests + Parvati Valley's hippie caf\u00e9s + the sacred sulphur hot springs at Manikaran Sahib gurudwara.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"manali\",\"kasol\"],\r\n      minNights: 5,\r\n      transit: [\r\n        {\r\n          id: \"transit-manali-kasol-x\",\r\n          title: \"Manali \u2192 Kasol (via Bhuntar)\",\r\n          route: \"Manali \u2192 Kullu \u2192 Bhuntar \u2192 Kasol\",\r\n          intro: \"Short 75-km drive into Parvati Valley.\",\r\n          activities: [\r\n            \"Morning check-out from Manali\",\r\n            \"Drive via <strong>Kullu &amp; Bhuntar<\/strong>\",\r\n            \"Enter the <strong>Parvati Valley<\/strong>\",\r\n            \"Arrive Kasol by lunch \u2014 afternoon Manikaran visit\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"75 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n\r\n    \"kasol-kheerganga-tosh\": {\r\n      name: \"Kasol + Kheerganga + Tosh\",\r\n      tagline: \"Parvati Valley trekkers' classic \u2014 Kasol caf\u00e9s, the iconic 12-km Kheerganga trek to natural hot springs, and the village of Tosh at 2,400 m.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/kasol-tour-packages\/\",\r\n      chain: [\"kasol\"],\r\n      minNights: 4,\r\n      transit: []\r\n    },\r\n\r\n    \"chamba-khajjiar-dalhousie\": {\r\n      name: \"Chamba + Khajjiar + Dalhousie\",\r\n      tagline: \"Heritage circuit \u2014 1,000-year-old Shikhara temples of Chamba, the alpine meadow of Khajjiar (Mini Switzerland), and colonial Dalhousie.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/chamba-tour-packages\/\",\r\n      chain: [\"chamba\"],\r\n      minNights: 4,\r\n      transit: []\r\n    },\r\n\r\n    \"dharamshala-mcleod-bir\": {\r\n      name: \"Dharamshala + McLeodganj + Bir\",\r\n      tagline: \"Spiritual triangle \u2014 Tibetan Buddhist monasteries, the Dalai Lama's residence at McLeodganj, and tandem paragliding from Billing.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"dharamshala\",\"bir-billing\"],\r\n      minNights: 5,\r\n      transit: [\r\n        {\r\n          id: \"transit-mcleod-bir\",\r\n          title: \"McLeodganj \u2192 Bir Billing\",\r\n          route: \"McLeodganj \u2192 Palampur \u2192 Bir\",\r\n          intro: \"70-km drive through Palampur's tea gardens.\",\r\n          activities: [\r\n            \"Morning check-out\",\r\n            \"Drive through <strong>Palampur tea estates<\/strong>\",\r\n            \"Lunch at a tea-estate caf\u00e9\",\r\n            \"Arrive Bir &amp; check-in\"\r\n          ],\r\n          stay: \"Bir\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"70 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n\r\n    \"manali-shimla-kasol\": {\r\n      name: \"Manali + Shimla + Kasol\",\r\n      tagline: \"Triple hill combo \u2014 colonial Shimla, snow-laden Manali, and Parvati Valley's hippie hub Kasol. Three Himachal favourites in one trip.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"shimla\",\"manali\",\"kasol\"],\r\n      minNights: 7,\r\n      transit: [\r\n        {\r\n          id: \"transit-shimla-manali-x\",\r\n          title: \"Shimla \u2192 Manali (via Mandi)\",\r\n          route: \"Shimla \u2192 Bilaspur \u2192 Mandi \u2192 Kullu \u2192 Manali\",\r\n          intro: \"245-km classic NH-3 drive.\",\r\n          activities: [\r\n            \"Early morning departure from Shimla\",\r\n            \"Scenic drive via <strong>Bilaspur &amp; Sundernagar<\/strong>\",\r\n            \"Lunch at <strong>Mandi<\/strong> (Beas riverside)\",\r\n            \"Arrival in Manali by evening\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"245 km\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        },\r\n        {\r\n          id: \"transit-manali-kasol-x2\",\r\n          title: \"Manali \u2192 Kasol\",\r\n          route: \"Manali \u2192 Kullu \u2192 Bhuntar \u2192 Kasol\",\r\n          intro: \"Short 75-km drive into Parvati Valley.\",\r\n          activities: [\r\n            \"Morning check-out from Manali\",\r\n            \"Drive via <strong>Kullu &amp; Bhuntar<\/strong>\",\r\n            \"Enter the <strong>Parvati Valley<\/strong>\",\r\n            \"Arrive Kasol by lunch\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"75 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    },\r\n\r\n    \"shimla-manali-kasol-dharamshala\": {\r\n      name: \"Shimla + Manali + Kasol + Dharamshala\",\r\n      tagline: \"The Grand Himachal Tour \u2014 four flagship destinations covering colonial heritage, snow peaks, hippie culture, and Tibetan Buddhism.\",\r\n      pkgUrl: \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\",\r\n      chain: [\"shimla\",\"manali\",\"kasol\",\"dharamshala\"],\r\n      minNights: 9,\r\n      transit: [\r\n        {\r\n          id: \"transit-shimla-manali-grand\",\r\n          title: \"Shimla \u2192 Manali (via Mandi)\",\r\n          route: \"Shimla \u2192 Mandi \u2192 Kullu \u2192 Manali\",\r\n          intro: \"245-km drive across NH-3.\",\r\n          activities: [\r\n            \"Morning departure from Shimla\",\r\n            \"Drive via Bilaspur &amp; Sundernagar\",\r\n            \"Lunch at <strong>Mandi<\/strong>\",\r\n            \"Arrival in Manali by evening\"\r\n          ],\r\n          stay: \"Manali\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"245 km\",\r\n          driveTime: \"7\u20138 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        },\r\n        {\r\n          id: \"transit-manali-kasol-grand\",\r\n          title: \"Manali \u2192 Kasol\",\r\n          route: \"Manali \u2192 Kullu \u2192 Bhuntar \u2192 Kasol\",\r\n          intro: \"Quick 75-km drive into Parvati Valley.\",\r\n          activities: [\r\n            \"Morning check-out from Manali\",\r\n            \"Drive via Kullu &amp; Bhuntar\",\r\n            \"Enter the <strong>Parvati Valley<\/strong>\",\r\n            \"Arrive Kasol by lunch\"\r\n          ],\r\n          stay: \"Kasol\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"75 km\",\r\n          driveTime: \"2.5\u20133 hrs\",\r\n          difficulty: \"Easy\",\r\n          isTransit: true\r\n        },\r\n        {\r\n          id: \"transit-kasol-dharamshala-grand\",\r\n          title: \"Kasol \u2192 Dharamshala\",\r\n          route: \"Kasol \u2192 Mandi \u2192 Palampur \u2192 Dharamshala\",\r\n          intro: \"Long 240-km drive via the Beas Valley.\",\r\n          activities: [\r\n            \"Early morning departure from Kasol\",\r\n            \"Drive via <strong>Bhuntar, Mandi &amp; Joginder Nagar<\/strong>\",\r\n            \"Lunch break at <strong>Palampur tea gardens<\/strong>\",\r\n            \"Arrive McLeodganj by evening\"\r\n          ],\r\n          stay: \"McLeodganj\",\r\n          meals: \"Breakfast, Dinner\",\r\n          distance: \"240 km\",\r\n          driveTime: \"8\u20139 hrs\",\r\n          difficulty: \"Moderate\",\r\n          isTransit: true\r\n        }\r\n      ]\r\n    }\r\n  };\r\n\r\n  window.HT_COMBOS = COMBOS;\r\n})();\r\n<\/script>\r\n\r\n<script>\r\n(function(){\r\n  \/\/ ============================================================\r\n  \/\/ BUILDER \/ RENDERER \/ SHARE \/ PDF \u2014 v5\r\n  \/\/ ============================================================\r\n\r\n  var DEST = window.HT_DESTINATIONS;\r\n  var COMBOS = window.HT_COMBOS;\r\n\r\n  var ORIGIN_NAMES = {\r\n    \"delhi\":\"Delhi\",\"chandigarh\":\"Chandigarh\",\"mumbai\":\"Mumbai\",\r\n    \"bangalore\":\"Bangalore\",\"kolkata\":\"Kolkata\",\"ahmedabad\":\"Ahmedabad\",\r\n    \"hyderabad\":\"Hyderabad\",\"pune\":\"Pune\",\"jaipur\":\"Jaipur\",\r\n    \"lucknow\":\"Lucknow\",\"chennai\":\"Chennai\",\"other\":\"Your City\"\r\n  };\r\n\r\n  var STYLE_LABEL = {\r\n    couple:\"Couple \/ Honeymoon\",\r\n    family:\"Family\",\r\n    group:\"Friends Group\",\r\n    adventure:\"Adventure\",\r\n    luxury:\"Luxury\"\r\n  };\r\n\r\n  var currentMode = \"single\";  \/\/ 'single' or 'combo'\r\n  var currentPlan = null;       \/\/ built itinerary state\r\n\r\n  \/\/ ----- DOM helpers -----\r\n  function $(id){return document.getElementById(id)}\r\n  function show(el){if(el)el.classList.add(\"show\")}\r\n  function hide(el){if(el)el.classList.remove(\"show\")}\r\n\r\n  \/\/ strip HTML tags for plain text contexts (PDF, WhatsApp)\r\n  function stripHTML(s){\r\n    if(!s) return \"\";\r\n    var t = s.replace(\/&amp;\/g,\"&\").replace(\/&nbsp;\/g,\" \").replace(\/&lt;\/g,\"<\").replace(\/&gt;\/g,\">\");\r\n    t = t.replace(\/<[^>]+>\/g,\"\");\r\n    return t.replace(\/\\s+\/g,\" \").trim();\r\n  }\r\n\r\n  \/\/ sanitize text for jsPDF (helvetica) \u2014 strip emoji + replace special chars\r\n  function pdfSafe(s){\r\n    if(!s) return \"\";\r\n    var t = stripHTML(s);\r\n    t = t\r\n      .replace(\/[\\u{1F300}-\\u{1FAFF}]\/gu,\"\")\r\n      .replace(\/[\\u{2600}-\\u{27BF}]\/gu,\"\")\r\n      .replace(\/[\\u{2300}-\\u{23FF}]\/gu,\"\")\r\n      .replace(\/[\\u{2700}-\\u{27BF}]\/gu,\"\")\r\n      .replace(\/[\\u{2B00}-\\u{2BFF}]\/gu,\"\")\r\n      .replace(\/[\\u{1F000}-\\u{1F2FF}]\/gu,\"\")\r\n      .replace(\/\u2605\/g,\"*\")\r\n      .replace(\/\u2726\/g,\"*\")\r\n      .replace(\/\u2192\/g,\"->\")\r\n      .replace(\/\u2014\/g,\"-\")\r\n      .replace(\/\u2013\/g,\"-\")\r\n      .replace(\/\u20b9\/g,\"Rs.\")\r\n      .replace(\/[\\u2018\\u2019]\/g,\"'\")\r\n      .replace(\/[\\u201C\\u201D]\/g,'\"')\r\n      .replace(\/\\u2026\/g,\"...\")\r\n      .replace(\/[\u00b0]\/g,\" deg\")\r\n      .replace(\/[\\u00A0]\/g,\" \");\r\n    return t.replace(\/\\s+\/g,\" \").trim();\r\n  }\r\n\r\n  \/\/ ----- Mode toggle -----\r\n  document.querySelectorAll(\".ht-mode-btn\").forEach(function(btn){\r\n    btn.addEventListener(\"click\",function(){\r\n      var m = btn.getAttribute(\"data-mode\");\r\n      currentMode = m;\r\n      document.querySelectorAll(\".ht-mode-btn\").forEach(function(b){\r\n        b.classList.remove(\"active\");\r\n        b.setAttribute(\"aria-selected\",\"false\");\r\n      });\r\n      btn.classList.add(\"active\");\r\n      btn.setAttribute(\"aria-selected\",\"true\");\r\n      $(\"ht-form-grid-single\").style.display = (m===\"single\") ? \"\" : \"none\";\r\n      $(\"ht-form-grid-combo\").style.display = (m===\"combo\") ? \"\" : \"none\";\r\n      hide($(\"ht-p-error\"));\r\n      hide($(\"ht-p-warning\"));\r\n      hide($(\"ht-p-info-note\"));\r\n      hide($(\"ht-p-result\"));\r\n      \/\/ Refresh the duration dropdown for the new mode\r\n      setTimeout(function(){populateDurationDropdown(m); updateInfoNote();}, 0);\r\n    });\r\n  });\r\n\r\n  \/\/ ----- Helper: build N\/D label -----\r\n  function nightsLabel(days){\r\n    return (days-1) + \" Nights \/ \" + days + \" Days\";\r\n  }\r\n\r\n  \/\/ ----- Dynamic duration dropdown population -----\r\n  \/\/ Single mode: populates based on selected destination's min\/max nights\r\n  \/\/ Combo mode: populates based on selected combo's min nights (max = min+6)\r\n  function populateDurationDropdown(mode){\r\n    var sel, minN, maxN, recommended;\r\n    if(mode === \"single\"){\r\n      sel = $(\"ht-p-days\");\r\n      var dKey = $(\"ht-p-destination\").value;\r\n      if(!dKey || !DEST[dKey]){\r\n        sel.innerHTML = \"<option value=''>Select destination first<\/option>\";\r\n        sel.disabled = true;\r\n        return;\r\n      }\r\n      minN = DEST[dKey].minNights;\r\n      maxN = DEST[dKey].maxNights;\r\n      recommended = minN + 1;\r\n    } else {\r\n      sel = $(\"ht-p-days-combo\");\r\n      var cKey = $(\"ht-p-combo\").value;\r\n      if(!cKey || !COMBOS[cKey]){\r\n        sel.innerHTML = \"<option value=''>Select combo route first<\/option>\";\r\n        sel.disabled = true;\r\n        return;\r\n      }\r\n      minN = COMBOS[cKey].minNights;\r\n      \/\/ For combos, allow up to minN + 5 days for flexibility (combos with limited day pools cap here)\r\n      maxN = Math.min(minN + 5, 14);\r\n      recommended = minN + 1;\r\n    }\r\n\r\n    var prevValue = sel.value;\r\n    sel.innerHTML = \"<option value=''>Select duration<\/option>\";\r\n    var foundPrev = false;\r\n    for(var n = minN; n <= maxN; n++){\r\n      var days = n + 1;\r\n      var opt = document.createElement(\"option\");\r\n      opt.value = String(days);\r\n      var label = nightsLabel(days);\r\n      if(n === minN) label += \"  (Minimum)\";\r\n      else if(n === recommended) label += \"  (Recommended)\";\r\n      opt.textContent = label;\r\n      sel.appendChild(opt);\r\n      if(prevValue === String(days)) foundPrev = true;\r\n    }\r\n    sel.disabled = false;\r\n    if(foundPrev) sel.value = prevValue;\r\n  }\r\n\r\n  \/\/ ----- Live info notes (min duration suggestions) -----\r\n  function updateInfoNote(){\r\n    var note = $(\"ht-p-info-note\");\r\n    var noteText = $(\"ht-p-info-note-text\");\r\n    var msg = \"\";\r\n    if(currentMode===\"single\"){\r\n      var d = $(\"ht-p-destination\").value;\r\n      if(d && DEST[d]){\r\n        msg = DEST[d].name + \" ideally needs at least \" + DEST[d].minNights + \" nights (\" + (DEST[d].minNights+1) + \" days) for a realistic experience. We've crafted detailed day-by-day plans up to \" + DEST[d].maxNights + \" nights \u2014 pick what suits your schedule.\";\r\n      }\r\n    } else {\r\n      var c = $(\"ht-p-combo\").value;\r\n      if(c && COMBOS[c]){\r\n        msg = COMBOS[c].name + \" needs minimum \" + COMBOS[c].minNights + \" nights (\" + (COMBOS[c].minNights+1) + \" days) for realistic pacing across all destinations including transit.\";\r\n      }\r\n    }\r\n    if(msg){noteText.textContent = msg; show(note);} else {hide(note);}\r\n  }\r\n\r\n  function onDestOrComboChange(){\r\n    populateDurationDropdown(currentMode);\r\n    updateInfoNote();\r\n  }\r\n\r\n  $(\"ht-p-destination\").addEventListener(\"change\", onDestOrComboChange);\r\n  $(\"ht-p-combo\").addEventListener(\"change\", onDestOrComboChange);\r\n\r\n  \/\/ ----- Validation -----\r\n  function validateInputs(){\r\n    var err = $(\"ht-p-error\");\r\n    var errText = $(\"ht-p-error-text\");\r\n    var warn = $(\"ht-p-warning\");\r\n    var warnText = $(\"ht-p-warning-text\");\r\n    hide(err); hide(warn);\r\n\r\n    if(currentMode===\"single\"){\r\n      var dest = $(\"ht-p-destination\").value;\r\n      var days = parseInt($(\"ht-p-days\").value,10);\r\n      if(!dest || !days){\r\n        errText.textContent = \"Please select a destination and trip duration to build your itinerary.\";\r\n        show(err); return null;\r\n      }\r\n      var d = DEST[dest];\r\n      if(days < d.minNights+1){\r\n        warnText.textContent = d.name + \" ideally needs at least \" + d.minNights + \" nights (\" + (d.minNights+1) + \" days). Your trip is shorter \u2014 we'll build a condensed plan, but consider adding more days for a relaxed experience.\";\r\n        show(warn);\r\n      }\r\n      return {mode:\"single\",dest:dest,days:days,style:getStyle(),origin:$(\"ht-p-origin\").value};\r\n    } else {\r\n      var combo = $(\"ht-p-combo\").value;\r\n      var days2 = parseInt($(\"ht-p-days-combo\").value,10);\r\n      if(!combo || !days2){\r\n        errText.textContent = \"Please select a combo route and trip duration to build your itinerary.\";\r\n        show(err); return null;\r\n      }\r\n      var c = COMBOS[combo];\r\n      if(days2 < c.minNights+1){\r\n        warnText.textContent = c.name + \" needs minimum \" + c.minNights + \" nights (\" + (c.minNights+1) + \" days) for realistic pacing across destinations. Adding more days strongly recommended.\";\r\n        show(warn);\r\n      }\r\n      return {mode:\"combo\",combo:combo,days:days2,style:getStyle(),origin:\"delhi\"};\r\n    }\r\n  }\r\n\r\n  function getStyle(){\r\n    var checked = document.querySelector(\"input[name=ht-style]:checked\");\r\n    return checked ? checked.value : \"family\";\r\n  }\r\n\r\n  \/\/ ----- Day picking helper -----\r\n  \/\/ Generic leisure days that can pad longer trips when destination day pools run out\r\n  function makeLeisureDays(destKey, count){\r\n    var d = DEST[destKey];\r\n    var stayLocation = d.name.split(\/[\u2013-]\/)[0].split(\"(\")[0].trim();\r\n    var templates = [\r\n      {\r\n        title: \"Leisure Day in \"+stayLocation,\r\n        intro: \"A free day to rest, soak in the surroundings, and explore at your own pace.\",\r\n        activities: [\r\n          \"Slow morning at your hotel \u2014 late breakfast\",\r\n          \"Optional spa or in-house relaxation\",\r\n          \"Local market walk &amp; caf\u00e9-hopping\",\r\n          \"Sunset point of your choice\"\r\n        ],\r\n        difficulty: \"Easy\"\r\n      },\r\n      {\r\n        title: \"Photography &amp; Nature Walk\",\r\n        intro: \"Spend a slow day capturing the landscape; perfect for shutterbugs &amp; nature lovers.\",\r\n        activities: [\r\n          \"Early morning sunrise photography\",\r\n          \"Forest \/ valley walking trail\",\r\n          \"Picnic lunch at a scenic viewpoint\",\r\n          \"Golden hour shoot at sunset\"\r\n        ],\r\n        difficulty: \"Easy\"\r\n      },\r\n      {\r\n        title: \"Local Culture Day\",\r\n        intro: \"Connect with the place \u2014 its food, crafts, and people.\",\r\n        activities: [\r\n          \"Visit a local Himachali home for lunch (on request)\",\r\n          \"Handicraft shopping \u2014 Kullu shawls, wood carvings, woollens\",\r\n          \"Folk performance or local music in the evening (seasonal)\",\r\n          \"Try regional cuisine \u2014 Siddu, Madra, Babru, Dham\"\r\n        ],\r\n        difficulty: \"Easy\"\r\n      },\r\n      {\r\n        title: \"Optional Adventure Add-on\",\r\n        intro: \"Pick an adventure activity available in the area &mdash; we'll arrange it on the day.\",\r\n        activities: [\r\n          \"Choose: trekking, paragliding, river-crossing, rappelling (subject to availability)\",\r\n          \"Half-day with local instructors\",\r\n          \"Lunch at a riverside \/ ridge spot\",\r\n          \"Evening at leisure\"\r\n        ],\r\n        difficulty: \"Moderate\"\r\n      },\r\n      {\r\n        title: \"Wellness &amp; Relaxation Day\",\r\n        intro: \"Recharge \u2014 hill stations are made for slow days.\",\r\n        activities: [\r\n          \"Morning yoga \/ meditation session (on request)\",\r\n          \"Healthy mountain breakfast\",\r\n          \"Spa or hot-water dip (resort-dependent)\",\r\n          \"Reading by the fireplace \/ on the deck\"\r\n        ],\r\n        difficulty: \"Easy\"\r\n      }\r\n    ];\r\n    var picks = [];\r\n    for(var i=0; i<count; i++){\r\n      var t = templates[i % templates.length];\r\n      picks.push({\r\n        id: destKey+\"-leisure-\"+i,\r\n        title: t.title,\r\n        route: stayLocation+\" local\",\r\n        intro: t.intro,\r\n        activities: t.activities.slice(),\r\n        stay: stayLocation,\r\n        meals: \"Breakfast, Dinner\",\r\n        distance: \"Walking\",\r\n        driveTime: \"Leisure\",\r\n        difficulty: t.difficulty,\r\n        style: [\"adventure\",\"couple\",\"group\",\"family\",\"luxury\"]\r\n      });\r\n    }\r\n    return picks;\r\n  }\r\n\r\n  function pickDays(destKey, count, style, excludeIds){\r\n    excludeIds = excludeIds || [];\r\n    var pool = (DEST[destKey].days||[]).slice();\r\n    var available = pool.filter(function(d){ return excludeIds.indexOf(d.id)===-1; });\r\n\r\n    \/\/ For sequence-locked destinations (Kinnaur, Spiti, Ladakh), preserve\r\n    \/\/ the authored geographical order \u2014 never reshuffle by style.\r\n    if(DEST[destKey].sequenceLocked){\r\n      var seqPicks = available.slice(0, count);\r\n      \/\/ If user wants more days than the locked sequence has, add leisure days\r\n      \/\/ before the final return-to-base day (last in pool typically returns)\r\n      if(seqPicks.length < count){\r\n        var extras = makeLeisureDays(destKey, count - seqPicks.length);\r\n        \/\/ Insert leisure days BEFORE the last (return) day if pool has the natural\r\n        \/\/ last day included; otherwise just append.\r\n        if(seqPicks.length === pool.length && pool.length > 0){\r\n          var lastDay = seqPicks.pop();\r\n          seqPicks = seqPicks.concat(extras);\r\n          seqPicks.push(lastDay);\r\n        } else {\r\n          seqPicks = seqPicks.concat(extras);\r\n        }\r\n      }\r\n      return seqPicks;\r\n    }\r\n\r\n    \/\/ For flexible destinations, prioritise style-matched days\r\n    var matched = available.filter(function(d){\r\n      return !d.style || d.style.indexOf(style)!==-1;\r\n    });\r\n    var others = available.filter(function(d){\r\n      return d.style && d.style.indexOf(style)===-1;\r\n    });\r\n    var picks = [];\r\n    var i=0;\r\n    while(picks.length < count && (matched.length || others.length)){\r\n      if(matched.length){picks.push(matched.shift());}\r\n      else {picks.push(others.shift());}\r\n      i++; if(i>50) break;\r\n    }\r\n    \/\/ If we still don't have enough days, add leisure days to fill the gap\r\n    if(picks.length < count){\r\n      var leisure = makeLeisureDays(destKey, count - picks.length);\r\n      picks = picks.concat(leisure);\r\n    }\r\n    return picks;\r\n  }\r\n\r\n  \/\/ ----- Build single-destination itinerary -----\r\n  function buildSingle(input){\r\n    var d = DEST[input.dest];\r\n    var days = input.days;\r\n    var origin = ORIGIN_NAMES[input.origin] || \"Your City\";\r\n    var plan = {\r\n      mode:\"single\",\r\n      destKey:input.dest,\r\n      destName:d.name,\r\n      tagline:d.tagline,\r\n      pkgUrl:d.pkgUrl,\r\n      style:input.style,\r\n      styleLabel:STYLE_LABEL[input.style]||input.style,\r\n      origin:origin,\r\n      totalDays:days,\r\n      totalNights:days-1,\r\n      quickFacts:d.quickFacts,\r\n      permits:d.permits||[],\r\n      localTip:d.localTip||\"\",\r\n      fullPlan:[],\r\n      altDayPools:{} \/\/ dest => days[] for swap dropdown\r\n    };\r\n    plan.altDayPools[input.dest] = (DEST[input.dest].days||[]).slice();\r\n\r\n    \/\/ Day 1 = Arrival\r\n    var arr = JSON.parse(JSON.stringify(d.arrival));\r\n    arr.id = input.dest + \"-arrival\";\r\n    arr.route = arr.route.replace(\"{origin}\",origin);\r\n    arr.dayLabel = \"Day 1\";\r\n    arr.destKey = input.dest;\r\n    arr.swappable = false;\r\n    plan.fullPlan.push(arr);\r\n\r\n    \/\/ Last day = Departure\r\n    var dep = JSON.parse(JSON.stringify(d.departure));\r\n    dep.id = input.dest + \"-departure\";\r\n    dep.route = dep.route.replace(\"{origin}\",origin);\r\n    dep.dayLabel = \"Day \"+days;\r\n    dep.destKey = input.dest;\r\n    dep.swappable = false;\r\n\r\n    \/\/ Middle days\r\n    var middleCount = days - 2;\r\n    if(middleCount<=0){\r\n      \/\/ Edge case: 2-day trip, no middle. Add departure right after arrival.\r\n      plan.fullPlan.push(dep);\r\n      return plan;\r\n    }\r\n    var picks = pickDays(input.dest, middleCount, input.style, []);\r\n    for(var i=0;i<picks.length;i++){\r\n      var dd = JSON.parse(JSON.stringify(picks[i]));\r\n      dd.dayLabel = \"Day \"+(i+2);\r\n      dd.destKey = input.dest;\r\n      dd.swappable = true;\r\n      plan.fullPlan.push(dd);\r\n    }\r\n    plan.fullPlan.push(dep);\r\n    return plan;\r\n  }\r\n\r\n  \/\/ ----- Build combo itinerary -----\r\n  function buildCombo(input){\r\n    var c = COMBOS[input.combo];\r\n    var days = input.days;\r\n    var origin = ORIGIN_NAMES[input.origin] || \"Your City\";\r\n    var plan = {\r\n      mode:\"combo\",\r\n      comboKey:input.combo,\r\n      destKey:c.chain[0],\r\n      destName:c.name,\r\n      tagline:c.tagline,\r\n      pkgUrl:c.pkgUrl,\r\n      style:input.style,\r\n      styleLabel:STYLE_LABEL[input.style]||input.style,\r\n      origin:origin,\r\n      totalDays:days,\r\n      totalNights:days-1,\r\n      chain:c.chain,\r\n      transit:c.transit||[],\r\n      quickFacts:DEST[c.chain[0]].quickFacts,\r\n      permits:[],\r\n      localTip:\"\",\r\n      fullPlan:[],\r\n      altDayPools:{}\r\n    };\r\n\r\n    \/\/ Build per-destination alt pools for swapping\r\n    c.chain.forEach(function(dk){\r\n      plan.altDayPools[dk] = (DEST[dk].days||[]).slice();\r\n    });\r\n\r\n    \/\/ Aggregate permits (de-duplicate)\r\n    var permitSet = {};\r\n    var permitsList = [];\r\n    c.chain.forEach(function(dk){\r\n      (DEST[dk].permits||[]).forEach(function(p){\r\n        if(!permitSet[p]){permitSet[p]=1; permitsList.push(p);}\r\n      });\r\n    });\r\n    plan.permits = permitsList;\r\n\r\n    \/\/ Build local tip combined\r\n    plan.localTip = c.chain.map(function(dk){\r\n      return \"<strong>\"+DEST[dk].name+\":<\/strong> \"+DEST[dk].localTip;\r\n    }).join(\"<br><br>\");\r\n\r\n    \/\/ Special case: shimla-spiti and shimla-kinnaur-spiti use Spiti's built-in chain\r\n    if(input.combo===\"shimla-spiti\" || input.combo===\"shimla-kinnaur-spiti\"){\r\n      \/\/ Use Spiti's built-in arrival (Shimla) + chain + departure (Manali)\r\n      \/\/ For pure shimla-spiti, just use Spiti's day chain.\r\n      \/\/ For shimla-kinnaur-spiti, we'll insert the Kinnaur arc.\r\n      return buildSpitiCombo(input, plan, c, days);\r\n    }\r\n\r\n    \/\/ STANDARD COMBO BUILD\r\n    \/\/ Day 1: arrival in first destination\r\n    var firstD = DEST[c.chain[0]];\r\n    var arr = JSON.parse(JSON.stringify(firstD.arrival));\r\n    arr.id = c.chain[0] + \"-arrival\";\r\n    arr.route = arr.route.replace(\"{origin}\",origin);\r\n    arr.dayLabel = \"Day 1\";\r\n    arr.destKey = c.chain[0];\r\n    arr.swappable = false;\r\n    plan.fullPlan.push(arr);\r\n\r\n    \/\/ Last day: departure from last destination\r\n    var lastD = DEST[c.chain[c.chain.length-1]];\r\n    var dep = JSON.parse(JSON.stringify(lastD.departure));\r\n    dep.id = c.chain[c.chain.length-1] + \"-departure\";\r\n    dep.route = dep.route.replace(\"{origin}\",origin);\r\n    dep.dayLabel = \"Day \"+days;\r\n    dep.destKey = c.chain[c.chain.length-1];\r\n    dep.swappable = false;\r\n\r\n    \/\/ Distribute middle days across chain\r\n    var middleCount = days - 2 - (c.transit||[]).filter(function(t){return !t.merge;}).length;\r\n    if(middleCount<=0){\r\n      plan.fullPlan.push(dep);\r\n      return plan;\r\n    }\r\n\r\n    var perDestNights = distributeNights(c.chain, middleCount);\r\n    var dayCounter = 2;\r\n    var usedIds = {};\r\n    c.chain.forEach(function(dk){ usedIds[dk] = []; });\r\n\r\n    for(var ci=0; ci<c.chain.length; ci++){\r\n      var destKey = c.chain[ci];\r\n      var nightsHere = perDestNights[ci];\r\n      \/\/ Add picked days for this destination\r\n      var picks = pickDays(destKey, nightsHere, input.style, usedIds[destKey]);\r\n      picks.forEach(function(p){\r\n        var dd = JSON.parse(JSON.stringify(p));\r\n        dd.dayLabel = \"Day \"+dayCounter;\r\n        dd.destKey = destKey;\r\n        dd.swappable = true;\r\n        plan.fullPlan.push(dd);\r\n        usedIds[destKey].push(p.id);\r\n        dayCounter++;\r\n      });\r\n      \/\/ Add transit day if more destinations follow\r\n      if(ci < c.chain.length-1 && c.transit && c.transit[ci] && !c.transit[ci].merge){\r\n        var t = JSON.parse(JSON.stringify(c.transit[ci]));\r\n        t.dayLabel = \"Day \"+dayCounter;\r\n        t.destKey = c.chain[ci+1];\r\n        t.swappable = false;\r\n        plan.fullPlan.push(t);\r\n        dayCounter++;\r\n      }\r\n    }\r\n\r\n    plan.fullPlan.push(dep);\r\n    return plan;\r\n  }\r\n\r\n  \/\/ Distribute middle nights across chain proportionally to minNights\r\n  function distributeNights(chain, total){\r\n    var weights = chain.map(function(dk){return Math.max(1,DEST[dk].minNights);});\r\n    var sum = weights.reduce(function(a,b){return a+b;},0);\r\n    var alloc = weights.map(function(w){return Math.max(1, Math.floor(total * w \/ sum));});\r\n    var allocSum = alloc.reduce(function(a,b){return a+b;},0);\r\n    \/\/ adjust to match total\r\n    var diff = total - allocSum;\r\n    var i = 0;\r\n    while(diff > 0){\r\n      alloc[i % alloc.length]++; diff--; i++;\r\n    }\r\n    while(diff < 0){\r\n      \/\/ try to reduce from largest\r\n      var maxIdx = alloc.indexOf(Math.max.apply(null, alloc));\r\n      if(alloc[maxIdx] > 1){alloc[maxIdx]--; diff++;}\r\n      else break;\r\n    }\r\n    return alloc;\r\n  }\r\n\r\n  \/\/ Spiti circuit special build (uses built-in Shimla\u2192Spiti chain)\r\n  function buildSpitiCombo(input, plan, c, days){\r\n    var spiti = DEST[\"spiti\"];\r\n    plan.quickFacts = spiti.quickFacts;\r\n    var origin = plan.origin;\r\n\r\n    \/\/ Day 1: arrival Shimla (from spiti.arrival)\r\n    var arr = JSON.parse(JSON.stringify(spiti.arrival));\r\n    arr.id = \"spiti-shimla-arrival\";\r\n    arr.route = arr.route.replace(\"{origin}\",origin);\r\n    arr.dayLabel = \"Day 1\";\r\n    arr.destKey = \"shimla\";\r\n    arr.swappable = false;\r\n    plan.fullPlan.push(arr);\r\n\r\n    \/\/ Last day: departure from Manali (from spiti.departure)\r\n    var dep = JSON.parse(JSON.stringify(spiti.departure));\r\n    dep.id = \"spiti-manali-departure\";\r\n    dep.route = dep.route.replace(\"{origin}\",origin);\r\n    dep.dayLabel = \"Day \"+days;\r\n    dep.destKey = \"manali\";\r\n    dep.swappable = false;\r\n\r\n    \/\/ Build the spiti day chain\r\n    \/\/ The full Spiti chain is: sangla, kalpa, tabo, dhankar-kaza, key-kibber, komic-demul, chandratal-manali\r\n    var spitiChain = [\"spiti-sangla\",\"spiti-kalpa\",\"spiti-tabo\",\"spiti-dhankar-kaza\",\"spiti-key-kibber\",\"spiti-komic-demul\",\"spiti-chandratal-manali\"];\r\n\r\n    var middleSlots = days - 2; \/\/ total inner days\r\n    var dayCounter = 2;\r\n\r\n    \/\/ For shimla-kinnaur-spiti, add a Chitkul day after Sangla\r\n    if(input.combo === \"shimla-kinnaur-spiti\"){\r\n      \/\/ Insert Chitkul between sangla and kalpa days\r\n      var fullChain = [\"spiti-sangla\",\"kinnaur-chitkul\",\"spiti-kalpa\",\"spiti-tabo\",\"spiti-dhankar-kaza\",\"spiti-key-kibber\",\"spiti-komic-demul\",\"spiti-chandratal-manali\"];\r\n      \/\/ Build day map\r\n      var dayMap = {};\r\n      spiti.days.forEach(function(d){dayMap[d.id]=d;});\r\n      DEST[\"kinnaur\"].days.forEach(function(d){dayMap[d.id]=d;});\r\n\r\n      \/\/ Use the chain up to the slot count\r\n      var useCount = Math.min(middleSlots, fullChain.length);\r\n      for(var j=0; j<useCount; j++){\r\n        var src = dayMap[fullChain[j]];\r\n        if(!src) continue;\r\n        var dd = JSON.parse(JSON.stringify(src));\r\n        dd.dayLabel = \"Day \"+dayCounter;\r\n        dd.destKey = (fullChain[j].indexOf(\"kinnaur\")===0) ? \"kinnaur\" : \"spiti\";\r\n        dd.swappable = true;\r\n        plan.fullPlan.push(dd);\r\n        dayCounter++;\r\n      }\r\n    } else {\r\n      \/\/ Plain shimla-spiti\r\n      var useCount2 = Math.min(middleSlots, spitiChain.length);\r\n      var dayMap2 = {};\r\n      spiti.days.forEach(function(d){dayMap2[d.id]=d;});\r\n      for(var k=0; k<useCount2; k++){\r\n        var src2 = dayMap2[spitiChain[k]];\r\n        if(!src2) continue;\r\n        var dd2 = JSON.parse(JSON.stringify(src2));\r\n        dd2.dayLabel = \"Day \"+dayCounter;\r\n        dd2.destKey = \"spiti\";\r\n        dd2.swappable = true;\r\n        plan.fullPlan.push(dd2);\r\n        dayCounter++;\r\n      }\r\n    }\r\n\r\n    plan.fullPlan.push(dep);\r\n    return plan;\r\n  }\r\n\r\n  \/\/ ----- Inclusions \/ Exclusions -----\r\n  function generateInclusions(plan){\r\n    var s = plan.style;\r\n    var incl = [];\r\n    var excl = [\r\n      \"Air \/ train fare to and from your city\",\r\n      \"Personal expenses, tips, gratuities &amp; laundry\",\r\n      \"Anything not mentioned in inclusions\"\r\n    ];\r\n\r\n    \/\/ Common\r\n    incl.push(\"Hotel accommodation across all destinations\");\r\n    incl.push(\"All transfers &amp; sightseeing in private vehicle (non-AC at higher altitudes)\");\r\n    incl.push(\"Daily breakfast &amp; dinner (MAP plan)\");\r\n    incl.push(\"Experienced local Himachali driver-cum-guide\");\r\n    incl.push(\"All toll, parking &amp; driver allowances\");\r\n\r\n    \/\/ Style-specific\r\n    if(s===\"couple\"){\r\n      incl.unshift(\"Honeymoon-special suite category rooms\");\r\n      incl.push(\"Welcome flowers &amp; cake on arrival\");\r\n      incl.push(\"Candle-light dinner on one evening\");\r\n      excl.push(\"Spa &amp; wellness treatments\");\r\n    } else if(s===\"family\"){\r\n      incl.unshift(\"Family-friendly hotels with extra-bed options\");\r\n      incl.push(\"Child-friendly meals &amp; activities\");\r\n      excl.push(\"Adventure activities for kids below age limit\");\r\n    } else if(s===\"group\"){\r\n      incl.unshift(\"Bonfire night with music (1 evening, on request)\");\r\n      incl.push(\"Larger vehicle (Innova \/ Tempo Traveller \/ Bus)\");\r\n      incl.push(\"Group photographer for one day (on request)\");\r\n      excl.push(\"Alcoholic beverages\");\r\n    } else if(s===\"adventure\"){\r\n      incl.unshift(\"Activity equipment &amp; certified instructors\");\r\n      incl.push(\"All adventure-activity charges as per itinerary\");\r\n      incl.push(\"Insurance for adventure activities\");\r\n      excl.push(\"Personal trekking gear (boots, daypack)\");\r\n    } else if(s===\"luxury\"){\r\n      incl.unshift(\"4-star \/ 5-star premium accommodation\");\r\n      incl.push(\"All meals (breakfast, lunch &amp; dinner)\");\r\n      incl.push(\"Private SUV with English-speaking chauffeur\");\r\n      incl.push(\"Welcome amenities &amp; airport pickup in luxury vehicle\");\r\n      excl.push(\"Premium alcoholic beverages\");\r\n    }\r\n\r\n    \/\/ Permit-related exclusion\r\n    var hasPermit = (plan.permits||[]).some(function(p){return \/Inner Line Permit|Rohtang\/.test(p);});\r\n    if(!hasPermit){\r\n      incl.push(\"All applicable entry fees as mentioned in the day plan\");\r\n    } else {\r\n      incl.push(\"Inner Line Permit \/ Rohtang permit handling charges\");\r\n    }\r\n\r\n    return {incl:incl,excl:excl};\r\n  }\r\n\r\n  \/\/ ----- Render itinerary -----\r\n  function renderPlan(plan){\r\n    currentPlan = plan;\r\n\r\n    \/\/ Summary\r\n    $(\"ht-p-summary-dest\").innerHTML = plan.destName + \" &middot; \" + plan.totalNights + \"N \/ \" + plan.totalDays + \"D\";\r\n    $(\"ht-p-summary-tagline\").innerHTML = plan.tagline;\r\n\r\n    var meta = $(\"ht-p-summary-meta\");\r\n    meta.innerHTML = \"\";\r\n    var metaItems = [\r\n      [\"calendar\", plan.totalNights+\" Nights \/ \"+plan.totalDays+\" Days\"],\r\n      [\"users\", plan.styleLabel],\r\n      [\"map\", plan.origin+\" \u2192 \"+plan.destName.split(\" \")[0]]\r\n    ];\r\n    metaItems.forEach(function(it){\r\n      var c = document.createElement(\"span\");\r\n      c.className = \"ht-meta-chip\";\r\n      c.innerHTML = svgIcon(it[0])+\"<span>\"+it[1]+\"<\/span>\";\r\n      meta.appendChild(c);\r\n    });\r\n\r\n    \/\/ Quick facts\r\n    var qfWrap = $(\"ht-p-quickfacts\");\r\n    qfWrap.innerHTML = \"\";\r\n    var qf = plan.quickFacts || {};\r\n    var qfRows = [\r\n      [\"\u26f0\ufe0f\",\"Altitude\",qf.altitude||\"\u2014\"],\r\n      [\"\ud83c\udf24\ufe0f\",\"Best Time\",qf.bestTime||\"\u2014\"],\r\n      [\"\u2708\ufe0f\",\"Nearest Airport\",qf.nearestAirport||\"\u2014\"],\r\n      [\"\u2726\",\"Ideal For\",qf.idealFor||\"\u2014\"]\r\n    ];\r\n    qfRows.forEach(function(r){\r\n      var item = document.createElement(\"div\");\r\n      item.className = \"ht-qf-item\";\r\n      item.innerHTML =\r\n        \"<div class='ht-qf-icon'>\"+r[0]+\"<\/div>\"+\r\n        \"<div class='ht-qf-label'>\"+r[1]+\"<\/div>\"+\r\n        \"<div class='ht-qf-value'>\"+r[2]+\"<\/div>\";\r\n      qfWrap.appendChild(item);\r\n    });\r\n\r\n    \/\/ Days\r\n    renderDayCards(plan);\r\n\r\n    \/\/ Permits\r\n    var permitsCard = $(\"ht-p-permits-card\");\r\n    var permitsList = $(\"ht-p-permits-list\");\r\n    permitsList.innerHTML = \"\";\r\n    if(plan.permits && plan.permits.length){\r\n      plan.permits.forEach(function(p){\r\n        var li = document.createElement(\"li\");\r\n        li.innerHTML = p;\r\n        permitsList.appendChild(li);\r\n      });\r\n      permitsCard.style.display = \"\";\r\n    } else {\r\n      permitsCard.style.display = \"none\";\r\n    }\r\n\r\n    \/\/ Inclusions \/ Exclusions\r\n    var ie = generateInclusions(plan);\r\n    var inclList = $(\"ht-p-inclusions\");\r\n    var exclList = $(\"ht-p-exclusions\");\r\n    inclList.innerHTML = \"\";\r\n    exclList.innerHTML = \"\";\r\n    ie.incl.forEach(function(t){\r\n      var li = document.createElement(\"li\"); li.innerHTML = t; inclList.appendChild(li);\r\n    });\r\n    ie.excl.forEach(function(t){\r\n      var li = document.createElement(\"li\"); li.innerHTML = t; exclList.appendChild(li);\r\n    });\r\n\r\n    \/\/ Local tip\r\n    $(\"ht-p-local-tip\").innerHTML = plan.localTip || \"\u2014\";\r\n\r\n    \/\/ CTAs\r\n    var pkgLink = $(\"ht-p-pkg-link\");\r\n    pkgLink.href = plan.pkgUrl || \"https:\/\/himtrails.in\/himachal-pradesh-tour-packages\/\";\r\n\r\n    \/\/ WhatsApp message\r\n    updateWhatsAppLink(plan);\r\n\r\n    \/\/ Result reveal\r\n    show($(\"ht-p-result\"));\r\n    try{$(\"ht-p-result\").scrollIntoView({behavior:\"smooth\",block:\"start\"});}catch(e){}\r\n  }\r\n\r\n  function svgIcon(name){\r\n    var s = '<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">';\r\n    if(name===\"calendar\") return s+'<rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"\/><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"\/><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"\/><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"\/><\/svg>';\r\n    if(name===\"users\") return s+'<path d=\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M23 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg>';\r\n    if(name===\"map\") return s+'<polygon points=\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\"\/><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"18\"\/><line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"22\"\/><\/svg>';\r\n    if(name===\"distance\") return s+'<polyline points=\"1 12 7 12 10 5 14 19 17 12 23 12\"\/><\/svg>';\r\n    if(name===\"time\") return s+'<circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg>';\r\n    if(name===\"diff\") return s+'<path d=\"M12 22c5.523 0 10-4.477 10-10S17.523 2 12 2 2 6.477 2 12s4.477 10 10 10z\"\/><polyline points=\"8 12 12 16 16 12\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"16\"\/><\/svg>';\r\n    if(name===\"route\") return s+'<circle cx=\"6\" cy=\"19\" r=\"2\"\/><circle cx=\"18\" cy=\"5\" r=\"2\"\/><path d=\"M8 19h8a4 4 0 0 0 0-8H8a4 4 0 0 1 0-8h8\"\/><\/svg>';\r\n    if(name===\"bed\") return s+'<path d=\"M2 4v16\"\/><path d=\"M2 8h18a2 2 0 0 1 2 2v10\"\/><path d=\"M2 17h20\"\/><path d=\"M6 8v9\"\/><\/svg>';\r\n    if(name===\"meal\") return s+'<path d=\"M3 11h18l-2 9H5l-2-9z\"\/><path d=\"M12 11V3\"\/><\/svg>';\r\n    if(name===\"edit\") return s+'<path d=\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\"\/><path d=\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\"\/><\/svg>';\r\n    return s+'<\/svg>';\r\n  }\r\n\r\n  \/\/ Render all day cards\r\n  function renderDayCards(plan){\r\n    var c = $(\"ht-p-days-container\");\r\n    c.innerHTML = \"\";\r\n    plan.fullPlan.forEach(function(day, idx){\r\n      c.appendChild(buildDayCard(day, idx, plan));\r\n    });\r\n  }\r\n\r\n  function buildDayCard(day, idx, plan){\r\n    var card = document.createElement(\"div\");\r\n    card.className = \"ht-day-card\";\r\n    card.setAttribute(\"data-day-idx\", idx);\r\n\r\n    var isTransit = !!day.isTransit;\r\n    var dayNum = idx + 1;\r\n\r\n    var header = document.createElement(\"div\");\r\n    header.className = \"ht-day-header\";\r\n\r\n    var badge = document.createElement(\"div\");\r\n    badge.className = \"ht-day-badge\" + (isTransit?\" transit\":\"\");\r\n    badge.innerHTML = \"<span class='day-label'>\"+(isTransit?\"TRANSIT\":\"DAY\")+\"<\/span><span class='day-num'>\"+dayNum+\"<\/span>\";\r\n    header.appendChild(badge);\r\n\r\n    var heading = document.createElement(\"div\");\r\n    heading.className = \"ht-day-heading\";\r\n    heading.innerHTML =\r\n      \"<div class='ht-day-title'>\"+(day.title||\"Day \"+dayNum)+\"<\/div>\"+\r\n      \"<div class='ht-day-route'>\"+svgIcon(\"route\")+\"<span>\"+(day.route||\"\")+\"<\/span><\/div>\";\r\n    header.appendChild(heading);\r\n\r\n    if(day.swappable){\r\n      var btn = document.createElement(\"button\");\r\n      btn.type = \"button\";\r\n      btn.className = \"ht-day-edit-btn\";\r\n      btn.innerHTML = svgIcon(\"edit\")+\"<span>Edit<\/span>\";\r\n      btn.addEventListener(\"click\",function(){toggleDayEdit(idx);});\r\n      header.appendChild(btn);\r\n    }\r\n    card.appendChild(header);\r\n\r\n    var body = document.createElement(\"div\");\r\n    body.className = \"ht-day-body\";\r\n    if(day.intro){\r\n      var intro = document.createElement(\"div\");\r\n      intro.className = \"ht-day-intro\";\r\n      intro.innerHTML = day.intro;\r\n      body.appendChild(intro);\r\n    }\r\n    if(day.activities && day.activities.length){\r\n      var acts = document.createElement(\"div\");\r\n      acts.className = \"ht-activities\";\r\n      day.activities.forEach(function(a){\r\n        var act = document.createElement(\"div\");\r\n        act.className = \"ht-activity\";\r\n        act.innerHTML = \"<span class='ht-activity-dot'><\/span><span>\"+a+\"<\/span>\";\r\n        acts.appendChild(act);\r\n      });\r\n      body.appendChild(acts);\r\n    }\r\n\r\n    \/\/ Meta row\r\n    var meta = document.createElement(\"div\");\r\n    meta.className = \"ht-day-meta-row\";\r\n    if(day.stay) meta.innerHTML += \"<span class='ht-day-chip stay'>\"+svgIcon(\"bed\")+\"<span>Stay: \"+day.stay+\"<\/span><\/span>\";\r\n    if(day.meals) meta.innerHTML += \"<span class='ht-day-chip meals'>\"+svgIcon(\"meal\")+\"<span>\"+day.meals+\"<\/span><\/span>\";\r\n    if(day.distance && day.distance!==\"\u2014\") meta.innerHTML += \"<span class='ht-day-chip distance'>\"+svgIcon(\"distance\")+\"<span>\"+day.distance+\"<\/span><\/span>\";\r\n    if(day.driveTime && day.driveTime!==\"\u2014\") meta.innerHTML += \"<span class='ht-day-chip time'>\"+svgIcon(\"time\")+\"<span>\"+day.driveTime+\"<\/span><\/span>\";\r\n    if(day.difficulty && day.difficulty!==\"\u2014\") meta.innerHTML += \"<span class='ht-day-chip difficulty'>\"+svgIcon(\"diff\")+\"<span>\"+day.difficulty+\"<\/span><\/span>\";\r\n    body.appendChild(meta);\r\n    card.appendChild(body);\r\n\r\n    \/\/ Edit panel placeholder\r\n    if(day.swappable){\r\n      var editPanel = document.createElement(\"div\");\r\n      editPanel.className = \"ht-day-edit-panel\";\r\n      editPanel.id = \"ht-edit-panel-\" + idx;\r\n      card.appendChild(editPanel);\r\n    }\r\n\r\n    return card;\r\n  }\r\n\r\n  \/\/ Day swap UI\r\n  function toggleDayEdit(idx){\r\n    var panel = $(\"ht-edit-panel-\" + idx);\r\n    if(!panel) return;\r\n    if(panel.classList.contains(\"show\")){\r\n      panel.classList.remove(\"show\");\r\n      return;\r\n    }\r\n    var day = currentPlan.fullPlan[idx];\r\n    var pool = currentPlan.altDayPools[day.destKey] || [];\r\n    \/\/ Filter out IDs currently used in plan from THIS destination to avoid duplicates\r\n    var usedIds = currentPlan.fullPlan\r\n      .filter(function(d){return d.destKey===day.destKey && !d.isTransit;})\r\n      .map(function(d){return d.id;});\r\n\r\n    panel.innerHTML = \"<div class='ht-day-edit-label'>Choose a different day for this destination<\/div>\";\r\n    var optsBox = document.createElement(\"div\");\r\n    optsBox.className = \"ht-day-edit-options\";\r\n\r\n    \/\/ Current option highlighted\r\n    var currentOpt = document.createElement(\"div\");\r\n    currentOpt.className = \"ht-day-edit-opt current\";\r\n    currentOpt.innerHTML = \"<strong>Current:<\/strong> \"+day.title;\r\n    optsBox.appendChild(currentOpt);\r\n\r\n    \/\/ Other options\r\n    var others = pool.filter(function(p){\r\n      \/\/ Exclude current AND any other day already used (except this slot's current)\r\n      if(p.id === day.id) return false;\r\n      return usedIds.indexOf(p.id) === -1;\r\n    });\r\n    if(others.length===0){\r\n      var noOpt = document.createElement(\"div\");\r\n      noOpt.className = \"ht-day-edit-opt\";\r\n      noOpt.style.cursor = \"default\";\r\n      noOpt.style.opacity = \"0.7\";\r\n      noOpt.innerHTML = \"All available days for this destination are already in your plan.\";\r\n      optsBox.appendChild(noOpt);\r\n    } else {\r\n      others.forEach(function(opt){\r\n        var btn = document.createElement(\"button\");\r\n        btn.type = \"button\";\r\n        btn.className = \"ht-day-edit-opt\";\r\n        btn.innerHTML = \"<strong>\"+opt.title+\"<\/strong> &middot; \"+ (opt.distance||\"\") + (opt.driveTime?\" &middot; \"+opt.driveTime:\"\") + \"<br><span style='font-size:11.5px;color:#90a4ae;'>\"+stripHTML(opt.intro).substring(0,90)+\"...<\/span>\";\r\n        btn.addEventListener(\"click\",function(){swapDay(idx, opt.id);});\r\n        optsBox.appendChild(btn);\r\n      });\r\n    }\r\n    panel.appendChild(optsBox);\r\n    var cancel = document.createElement(\"button\");\r\n    cancel.type = \"button\";\r\n    cancel.className = \"ht-day-edit-cancel\";\r\n    cancel.textContent = \"\u2715 Cancel\";\r\n    cancel.addEventListener(\"click\",function(){panel.classList.remove(\"show\");});\r\n    panel.appendChild(cancel);\r\n    panel.classList.add(\"show\");\r\n  }\r\n\r\n  function swapDay(idx, newId){\r\n    var day = currentPlan.fullPlan[idx];\r\n    var pool = currentPlan.altDayPools[day.destKey] || [];\r\n    var newDay = pool.filter(function(p){return p.id===newId;})[0];\r\n    if(!newDay) return;\r\n    var copy = JSON.parse(JSON.stringify(newDay));\r\n    copy.dayLabel = day.dayLabel;\r\n    copy.destKey = day.destKey;\r\n    copy.swappable = true;\r\n    currentPlan.fullPlan[idx] = copy;\r\n    renderDayCards(currentPlan);\r\n    updateWhatsAppLink(currentPlan);\r\n  }\r\n\r\n  \/\/ ----- WhatsApp pre-filled message -----\r\n  function updateWhatsAppLink(plan){\r\n    var lines = [];\r\n    lines.push(\"Hi HimTrails! \ud83d\udc4b\");\r\n    lines.push(\"\");\r\n    lines.push(\"I just built an itinerary using your planner and would like a customised quote:\");\r\n    lines.push(\"\");\r\n    lines.push(\"\ud83d\udccd Destination: \"+stripHTML(plan.destName));\r\n    lines.push(\"\ud83d\udcc5 Duration: \"+plan.totalNights+\" Nights \/ \"+plan.totalDays+\" Days\");\r\n    lines.push(\"\ud83d\udc65 Trip Style: \"+plan.styleLabel);\r\n    lines.push(\"\ud83c\udfe0 Starting From: \"+plan.origin);\r\n    lines.push(\"\");\r\n    lines.push(\"My day-by-day plan:\");\r\n    plan.fullPlan.forEach(function(d,i){\r\n      var line = \"Day \"+(i+1)+\": \"+stripHTML(d.title);\r\n      if(d.distance && d.distance!==\"\u2014\") line += \" (\"+d.distance+\")\";\r\n      lines.push(line);\r\n    });\r\n    lines.push(\"\");\r\n    lines.push(\"Please send me hotel options &amp; final pricing. Thanks!\");\r\n    var msg = lines.join(\"\\n\").replace(\/&amp;\/g,\"&\");\r\n    var url = \"https:\/\/wa.me\/917717697177?text=\" + encodeURIComponent(msg);\r\n    $(\"ht-p-wa-link\").href = url;\r\n  }\r\n\r\n  \/\/ ----- Build action -----\r\n  window.htBuildPlan = function(){\r\n    var btn = document.querySelector(\".ht-plan-btn\");\r\n    btn.classList.add(\"loading\");\r\n    var input = validateInputs();\r\n    if(!input){\r\n      btn.classList.remove(\"loading\");\r\n      try{$(\"ht-p-error\").scrollIntoView({behavior:\"smooth\",block:\"center\"});}catch(e){}\r\n      return;\r\n    }\r\n    setTimeout(function(){\r\n      try{\r\n        var plan;\r\n        if(input.mode===\"single\") plan = buildSingle(input);\r\n        else plan = buildCombo(input);\r\n        renderPlan(plan);\r\n      } catch(e){\r\n        console.error(e);\r\n        var errEl = $(\"ht-p-error\");\r\n        $(\"ht-p-error-text\").textContent = \"Something went wrong building your itinerary. Please try a different combination or contact us via WhatsApp.\";\r\n        show(errEl);\r\n      }\r\n      btn.classList.remove(\"loading\");\r\n    }, 250);\r\n  };\r\n\r\n  \/\/ ----- Share button -----\r\n  function buildShareableUrl(plan){\r\n    var base = window.location.origin + window.location.pathname;\r\n    var params = new URLSearchParams();\r\n    if(plan.mode === \"single\"){\r\n      params.set(\"mode\",\"single\");\r\n      params.set(\"dest\", plan.destKey);\r\n    } else {\r\n      params.set(\"mode\",\"combo\");\r\n      params.set(\"combo\", plan.comboKey);\r\n    }\r\n    params.set(\"days\", plan.totalDays);\r\n    params.set(\"style\", plan.style);\r\n    return base + \"?\" + params.toString();\r\n  }\r\n\r\n  function buildShareText(plan){\r\n    return \"Check out this \" + plan.totalNights + \"N\/\" + plan.totalDays + \"D \" + stripHTML(plan.destName) + \" itinerary I built using HimTrails Planner!\";\r\n  }\r\n\r\n  function openShareModal(){\r\n    if(!currentPlan) return;\r\n    var url = buildShareableUrl(currentPlan);\r\n    var text = buildShareText(currentPlan);\r\n\r\n    $(\"ht-share-link-input\").value = url;\r\n\r\n    $(\"ht-share-wa\").href = \"https:\/\/wa.me\/?text=\" + encodeURIComponent(text + \" \" + url);\r\n    $(\"ht-share-tg\").href = \"https:\/\/t.me\/share\/url?url=\" + encodeURIComponent(url) + \"&text=\" + encodeURIComponent(text);\r\n    $(\"ht-share-email\").href = \"mailto:?subject=\" + encodeURIComponent(\"My Himachal Itinerary - HimTrails\") + \"&body=\" + encodeURIComponent(text + \"\\n\\n\" + url);\r\n    $(\"ht-share-sms\").href = \"sms:?&body=\" + encodeURIComponent(text + \" \" + url);\r\n    $(\"ht-share-fb\").href = \"https:\/\/www.facebook.com\/sharer\/sharer.php?u=\" + encodeURIComponent(url);\r\n\r\n    if(navigator.share){\r\n      $(\"ht-share-native\").style.display = \"\";\r\n    } else {\r\n      $(\"ht-share-native\").style.display = \"none\";\r\n    }\r\n\r\n    show($(\"ht-share-modal\"));\r\n  }\r\n\r\n  $(\"ht-p-share-btn\").addEventListener(\"click\", openShareModal);\r\n  $(\"ht-share-close-btn\").addEventListener(\"click\", function(){ hide($(\"ht-share-modal\")); });\r\n  $(\"ht-share-modal\").addEventListener(\"click\", function(e){ if(e.target === this) hide(this); });\r\n\r\n  $(\"ht-share-native\").addEventListener(\"click\", function(){\r\n    if(!currentPlan) return;\r\n    var url = buildShareableUrl(currentPlan);\r\n    var text = buildShareText(currentPlan);\r\n    if(navigator.share){\r\n      navigator.share({title:\"HimTrails Itinerary\",text:text,url:url}).catch(function(){});\r\n    }\r\n  });\r\n\r\n  $(\"ht-share-copy-btn\").addEventListener(\"click\", function(){\r\n    var input = $(\"ht-share-link-input\");\r\n    input.select(); input.setSelectionRange(0,99999);\r\n    var btn = $(\"ht-share-copy-btn\");\r\n    if(navigator.clipboard && navigator.clipboard.writeText){\r\n      navigator.clipboard.writeText(input.value).then(function(){\r\n        btn.textContent = \"Copied!\"; btn.classList.add(\"copied\");\r\n        setTimeout(function(){btn.textContent=\"Copy\"; btn.classList.remove(\"copied\");},2000);\r\n      }).catch(function(){\r\n        try{document.execCommand(\"copy\"); btn.textContent=\"Copied!\"; btn.classList.add(\"copied\"); setTimeout(function(){btn.textContent=\"Copy\"; btn.classList.remove(\"copied\");},2000);}catch(_){}\r\n      });\r\n    } else {\r\n      try{document.execCommand(\"copy\"); btn.textContent=\"Copied!\"; btn.classList.add(\"copied\"); setTimeout(function(){btn.textContent=\"Copy\"; btn.classList.remove(\"copied\");},2000);}catch(_){}\r\n    }\r\n  });\r\n\r\n  \/\/ ----- Auto-load from URL params -----\r\n  function tryAutoLoad(){\r\n    var params = new URLSearchParams(window.location.search);\r\n    var mode = params.get(\"mode\");\r\n    var days = parseInt(params.get(\"days\"),10);\r\n    var style = params.get(\"style\");\r\n    if(!mode || !days) return;\r\n\r\n    if(mode===\"single\"){\r\n      var dest = params.get(\"dest\");\r\n      if(!dest || !DEST[dest]) return;\r\n      currentMode = \"single\";\r\n      document.querySelector('.ht-mode-btn[data-mode=\"single\"]').click();\r\n      $(\"ht-p-destination\").value = dest;\r\n      $(\"ht-p-days\").value = days;\r\n    } else if(mode===\"combo\"){\r\n      var combo = params.get(\"combo\");\r\n      if(!combo || !COMBOS[combo]) return;\r\n      currentMode = \"combo\";\r\n      document.querySelector('.ht-mode-btn[data-mode=\"combo\"]').click();\r\n      $(\"ht-p-combo\").value = combo;\r\n      $(\"ht-p-days-combo\").value = days;\r\n    }\r\n    if(style){\r\n      var s = document.getElementById(\"ht-style-\"+style);\r\n      if(s) s.checked = true;\r\n    }\r\n    updateInfoNote();\r\n    setTimeout(function(){window.htBuildPlan();}, 300);\r\n  }\r\n\r\n  \/\/ ----- PDF Generator -----\r\n  $(\"ht-p-pdf-btn\").addEventListener(\"click\", function(){\r\n    if(!currentPlan){return;}\r\n    var btn = this;\r\n    btn.classList.add(\"loading\");\r\n    btn.disabled = true;\r\n\r\n    setTimeout(function(){\r\n      try {\r\n        generatePDF(currentPlan);\r\n      } catch(e){\r\n        console.error(\"PDF error:\", e);\r\n        alert(\"Sorry, there was an issue generating the PDF. Please try again or use the WhatsApp option instead.\");\r\n      }\r\n      btn.classList.remove(\"loading\");\r\n      btn.disabled = false;\r\n    }, 100);\r\n  });\r\n\r\n  function generatePDF(plan){\r\n    var jsPDF = window.jspdf && window.jspdf.jsPDF;\r\n    if(!jsPDF){alert(\"PDF library failed to load. Please refresh and try again.\"); return;}\r\n    var doc = new jsPDF({unit:\"pt\", format:\"a4\"});\r\n    var W = doc.internal.pageSize.getWidth();\r\n    var H = doc.internal.pageSize.getHeight();\r\n    var M = 40;\r\n\r\n    \/\/ Brand colors\r\n    var COL_DARK = [15,76,58];\r\n    var COL_MID = [26,122,94];\r\n    var COL_LIGHT = [45,157,122];\r\n    var COL_BG_SOFT = [240,249,245];\r\n    var COL_BORDER = [200,230,213];\r\n    var COL_TEXT = [40,55,70];\r\n    var COL_MUTED = [120,140,150];\r\n    var COL_ORANGE = [217,119,6];\r\n    var COL_RED = [192,57,43];\r\n    var COL_AMBER_BG = [255,249,230];\r\n    var COL_AMBER_BORDER = [244,228,168];\r\n    var COL_AMBER_TEXT = [124,93,0];\r\n\r\n    \/\/ Available content area on a day page (defined here so pre-pass can use it)\r\n    var pageContentTop = 70;        \/\/ below header bar\r\n    var pageContentBottom = H - 50; \/\/ above footer\r\n    var dayGap = 10;                \/\/ tighter gap so we fit more days per page\r\n\r\n    \/\/ Helper: measure required height for a compact day card\r\n    function measureDayHeight(day){\r\n      var h = 0;\r\n      h += 53;  \/\/ header (badge + title + route line) \u2014 flatter, no separate route pill\r\n      \/\/ activities \u2014 count lines (each gets ~11pt)\r\n      if(day.activities && day.activities.length){\r\n        \/\/ Cap at 4 visible activities, each one rendered compactly\r\n        var actCount = Math.min(day.activities.length, 4);\r\n        \/\/ Most activities fit one line at the new width; allow average 1.05 lines\r\n        h += actCount * 11 + 4;\r\n      }\r\n      \/\/ Single-row inline meta strip (Stay | Meals | Distance | Time | Level)\r\n      h += 22;\r\n      h += 8; \/\/ bottom padding\r\n      return h;\r\n    }\r\n\r\n    \/\/ PRE-PASS: calculate exact total page count for accurate \"Page X \/ Y\" labels\r\n    var prePassPages = 1; \/\/ cover\r\n    var prePassCursor = pageContentTop;\r\n    plan.fullPlan.forEach(function(day, idx){\r\n      var dh = measureDayHeight(day);\r\n      if(idx === 0){\r\n        prePassPages++; \/\/ first day page\r\n        prePassCursor = pageContentTop + dh + dayGap;\r\n      } else if(prePassCursor + dh > pageContentBottom){\r\n        prePassPages++;\r\n        prePassCursor = pageContentTop + dh + dayGap;\r\n      } else {\r\n        prePassCursor += dh + dayGap;\r\n      }\r\n    });\r\n    prePassPages++; \/\/ final summary page\r\n    var totalPages = prePassPages;\r\n\r\n    \/\/ Helper: draw page header bar (used on day pages and final page)\r\n    function drawHeaderBar(pageNum){\r\n      doc.setFillColor.apply(doc, COL_DARK);\r\n      doc.rect(0,0,W,52,\"F\");\r\n      doc.setFillColor.apply(doc, COL_MID);\r\n      doc.rect(0,52,W,3,\"F\");\r\n      doc.setTextColor(255,255,255);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(11);\r\n      doc.text(\"HIMTRAILS\", M, 22);\r\n      doc.setFont(\"helvetica\",\"normal\");\r\n      doc.setFontSize(8.5);\r\n      doc.text(pdfSafe(plan.destName), M, 38);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(8.5);\r\n      doc.text(\"Page \"+pageNum+\" \/ \"+totalPages, W-M, 22, {align:\"right\"});\r\n      doc.setFont(\"helvetica\",\"normal\");\r\n      doc.text(plan.totalNights+\"N \/ \"+plan.totalDays+\"D  -  \"+pdfSafe(plan.styleLabel), W-M, 38, {align:\"right\"});\r\n    }\r\n\r\n    \/\/ Helper: draw page footer (consistent across pages)\r\n    function drawFooter(pageNum){\r\n      doc.setDrawColor.apply(doc, COL_BORDER);\r\n      doc.setLineWidth(0.5);\r\n      doc.line(M, H-32, W-M, H-32);\r\n      doc.setFontSize(7.5);\r\n      doc.setTextColor.apply(doc, COL_MUTED);\r\n      doc.setFont(\"helvetica\",\"normal\");\r\n      doc.text(\"HimTrails  -  Breathe the Heights, Live the Trails\", M, H-18);\r\n      doc.text(\"WhatsApp +91 77176 97177  -  www.himtrails.in\", W-M, H-18, {align:\"right\"});\r\n    }\r\n\r\n    \/\/ ============================================================\r\n    \/\/                       COVER PAGE\r\n    \/\/ ============================================================\r\n    \/\/ Top brand band (taller, more presence)\r\n    doc.setFillColor.apply(doc, COL_DARK);\r\n    doc.rect(0,0,W,200,\"F\");\r\n    \/\/ Decorative circles (subtle)\r\n    doc.setFillColor(26,122,94);\r\n    doc.circle(W-60, 50, 70, \"F\");\r\n    doc.setFillColor(45,157,122);\r\n    doc.circle(50, 160, 60, \"F\");\r\n    doc.setFillColor(255,255,255);\r\n    \/\/ Tiny accent dot near logo\r\n    doc.circle(M+78, 35, 1.6, \"F\");\r\n\r\n    \/\/ Brand wordmark\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setTextColor(255,255,255);\r\n    doc.setFontSize(13);\r\n    doc.text(\"HIMTRAILS\", M, 38);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(7.5);\r\n    doc.setTextColor(180,220,200);\r\n    doc.text(\"BREATHE THE HEIGHTS, LIVE THE TRAILS\", M, 52);\r\n\r\n    \/\/ Big title\r\n    doc.setTextColor(255,255,255);\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(34);\r\n    doc.text(\"Your Himachal\", M, 110);\r\n    doc.text(\"Itinerary\", M, 148);\r\n\r\n    \/\/ Subtitle\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(10.5);\r\n    doc.setTextColor(200,230,213);\r\n    doc.text(\"Crafted by local Himachal experts, based in Shimla\", M, 174);\r\n\r\n    \/\/ Destination card (right under hero band)\r\n    var coverY = 230;\r\n    var cardH = 130;\r\n    doc.setFillColor.apply(doc, COL_BG_SOFT);\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.setLineWidth(1.2);\r\n    doc.roundedRect(M, coverY, W-2*M, cardH, 12, 12, \"FD\");\r\n\r\n    \/\/ Small decorative bar on the left edge\r\n    doc.setFillColor.apply(doc, COL_MID);\r\n    doc.roundedRect(M, coverY, 5, cardH, 2, 2, \"F\");\r\n\r\n    \/\/ Destination label\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(8);\r\n    doc.setTextColor.apply(doc, COL_MID);\r\n    doc.text(\"YOUR DESTINATION\", M+22, coverY+24);\r\n\r\n    \/\/ Destination name (large)\r\n    doc.setTextColor.apply(doc, COL_DARK);\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(22);\r\n    var destNamePdf = pdfSafe(plan.destName);\r\n    var destNameLines = doc.splitTextToSize(destNamePdf, W-2*M-44);\r\n    doc.text(destNameLines.slice(0,1), M+22, coverY+48);\r\n\r\n    \/\/ Tagline\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(10);\r\n    doc.setTextColor(80,95,105);\r\n    var taglineLines = doc.splitTextToSize(pdfSafe(plan.tagline), W-2*M-44);\r\n    doc.text(taglineLines.slice(0,2), M+22, coverY+68);\r\n\r\n    \/\/ Trip meta strip (bottom of card)\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.setLineWidth(0.5);\r\n    doc.line(M+22, coverY+cardH-32, W-M-22, coverY+cardH-32);\r\n\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(9);\r\n    doc.setTextColor.apply(doc, COL_MID);\r\n    var metaY = coverY + cardH - 14;\r\n    var nightsTxt = plan.totalNights+\" Nights \/ \"+plan.totalDays+\" Days\";\r\n    doc.text(nightsTxt, M+22, metaY);\r\n    var styleTxt = pdfSafe(plan.styleLabel);\r\n    var styleX = M+22 + doc.getTextWidth(nightsTxt) + 12;\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.text(\"|\", styleX-6, metaY);\r\n    doc.setTextColor.apply(doc, COL_MID);\r\n    doc.text(styleTxt, styleX, metaY);\r\n    var fromTxt = \"From \"+pdfSafe(plan.origin);\r\n    var fromX = styleX + doc.getTextWidth(styleTxt) + 12;\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.text(\"|\", fromX-6, metaY);\r\n    doc.setTextColor.apply(doc, COL_MID);\r\n    doc.text(fromTxt, fromX, metaY);\r\n\r\n    \/\/ Quick facts grid\r\n    var qfY = coverY + cardH + 22;\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(9);\r\n    doc.setTextColor.apply(doc, COL_DARK);\r\n    doc.text(\"AT A GLANCE\", M, qfY);\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.setLineWidth(0.8);\r\n    doc.line(M, qfY+5, M+74, qfY+5);\r\n\r\n    qfY += 18;\r\n    var qf = plan.quickFacts || {};\r\n    var qfRows = [\r\n      [\"Altitude\", qf.altitude||\"-\"],\r\n      [\"Best Time\", qf.bestTime||\"-\"],\r\n      [\"Nearest Airport\", qf.nearestAirport||\"-\"],\r\n      [\"Ideal For\", qf.idealFor||\"-\"]\r\n    ];\r\n    var qfCol = (W-2*M-10)\/2;\r\n    var qfRowH = 38;\r\n    qfRows.forEach(function(r,i){\r\n      var col = i % 2;\r\n      var row = Math.floor(i\/2);\r\n      var bx = M + col*(qfCol+10);\r\n      var by = qfY + row*(qfRowH+8);\r\n      \/\/ Card\r\n      doc.setFillColor(255,255,255);\r\n      doc.setDrawColor.apply(doc, COL_BORDER);\r\n      doc.setLineWidth(0.6);\r\n      doc.roundedRect(bx, by, qfCol, qfRowH, 6, 6, \"FD\");\r\n      \/\/ Left accent\r\n      doc.setFillColor.apply(doc, COL_MID);\r\n      doc.roundedRect(bx, by, 3, qfRowH, 1.5, 1.5, \"F\");\r\n      \/\/ Label\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(7.5);\r\n      doc.setTextColor.apply(doc, COL_MUTED);\r\n      doc.text(r[0].toUpperCase(), bx+12, by+14);\r\n      \/\/ Value\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(10);\r\n      doc.setTextColor.apply(doc, COL_DARK);\r\n      var valLines = doc.splitTextToSize(pdfSafe(r[1]), qfCol-20);\r\n      doc.text(valLines.slice(0,1), bx+12, by+29);\r\n    });\r\n\r\n    \/\/ Route diagram section\r\n    var routeY = qfY + 2*(qfRowH+8) + 18;\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(9);\r\n    doc.setTextColor.apply(doc, COL_DARK);\r\n    doc.text(\"YOUR ROUTE\", M, routeY);\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.line(M, routeY+5, M+62, routeY+5);\r\n\r\n    drawRouteDiagram(doc, plan, M, routeY+18, W-2*M);\r\n\r\n    \/\/ Calculate where route diagram visually ends (label + diagram height)\r\n    var routeEndY = routeY + 18 + 76; \/\/ diagram is ~76pt tall (STOP+circle+name)\r\n\r\n    \/\/ Reassuring \"what's next\" tag block to bridge the gap\r\n    var bridgeY = routeEndY + 18;\r\n    doc.setFillColor.apply(doc, COL_BG_SOFT);\r\n    doc.roundedRect(M, bridgeY, W-2*M, 56, 8, 8, \"F\");\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.setLineWidth(0.6);\r\n    doc.roundedRect(M, bridgeY, W-2*M, 56, 8, 8, \"S\");\r\n    \/\/ left accent stripe\r\n    doc.setFillColor.apply(doc, COL_MID);\r\n    doc.roundedRect(M, bridgeY, 4, 56, 2, 2, \"F\");\r\n\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(11);\r\n    doc.setTextColor.apply(doc, COL_DARK);\r\n    doc.text(\"What's inside this itinerary\", M+18, bridgeY+22);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(9);\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.text(\"Day-by-day plan with drive times & distances  -  Documents & permits required  -  Local tips from Shimla.\", M+18, bridgeY+40);\r\n\r\n    \/\/ Bottom credibility band - positioned right after the bridge block\r\n    var credY = bridgeY + 56 + 14;\r\n    doc.setFillColor.apply(doc, COL_BG_SOFT);\r\n    doc.roundedRect(M, credY, W-2*M, 56, 8, 8, \"F\");\r\n    \/\/ tiny accent stripe at top of band\r\n    doc.setFillColor.apply(doc, COL_MID);\r\n    doc.rect(M+12, credY, 60, 2, \"F\");\r\n\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(13);\r\n    doc.setTextColor.apply(doc, COL_DARK);\r\n    var statW = (W - 2*M - 32) \/ 4;\r\n    doc.text(\"3,973+\", M+16 + 0*statW, credY+26);\r\n    doc.text(\"4.9*\", M+16 + 1*statW, credY+26);\r\n    doc.text(\"5+ Yrs\", M+16 + 2*statW, credY+26);\r\n    doc.text(\"24x7\", M+16 + 3*statW, credY+26);\r\n\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(7.5);\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.text(\"HAPPY TRAVELLERS\", M+16 + 0*statW, credY+42);\r\n    doc.text(\"GOOGLE RATING\", M+16 + 1*statW, credY+42);\r\n    doc.text(\"HIMACHAL EXPERTS\", M+16 + 2*statW, credY+42);\r\n    doc.text(\"SUPPORT\", M+16 + 3*statW, credY+42);\r\n\r\n    \/\/ Cover footer pinned to bottom of page\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.setLineWidth(0.5);\r\n    doc.line(M, H-32, W-M, H-32);\r\n    doc.setFontSize(8);\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.text(\"HimTrails  -  Breathe the Heights, Live the Trails\", M, H-18);\r\n    doc.text(\"WhatsApp +91 77176 97177  -  www.himtrails.in\", W-M, H-18, {align:\"right\"});\r\n\r\n    \/\/ ============================================================\r\n    \/\/                    DAY-BY-DAY PAGES (2 per page)\r\n    \/\/ ============================================================\r\n    \/\/ Each day renders as a self-contained card. Pack 2 days vertically\r\n    \/\/ per A4 page where they fit; otherwise wrap to a new page.\r\n\r\n    \/\/ Function: render a compact day card at given Y position\r\n    function renderDayCard(day, idx, y){\r\n      var isTransit = !!day.isTransit;\r\n      var isFirst = idx === 0;\r\n      var isLast = idx === plan.fullPlan.length-1;\r\n      var cardH = measureDayHeight(day);\r\n\r\n      \/\/ Card background \u2014 soft fill with subtle border\r\n      doc.setFillColor(252,253,253);\r\n      doc.setDrawColor.apply(doc, COL_BORDER);\r\n      doc.setLineWidth(0.5);\r\n      doc.roundedRect(M, y, W-2*M, cardH-4, 8, 8, \"FD\");\r\n\r\n      \/\/ Left accent strip (color reflects badge type)\r\n      var stripColor = isTransit ? COL_ORANGE : COL_DARK;\r\n      doc.setFillColor.apply(doc, stripColor);\r\n      doc.roundedRect(M, y, 4, cardH-4, 2, 2, \"F\");\r\n\r\n      \/\/ Compact day badge \u2014 circle on the left\r\n      var badgeColor = isTransit ? COL_ORANGE : COL_DARK;\r\n      var badgeCx = M + 28;\r\n      var badgeCy = y + 18;\r\n      doc.setFillColor.apply(doc, badgeColor);\r\n      doc.circle(badgeCx, badgeCy, 13, \"F\");\r\n      doc.setTextColor(255,255,255);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(13);\r\n      doc.text(String(idx+1), badgeCx, badgeCy+4, {align:\"center\"});\r\n\r\n      \/\/ Tiny label BESIDE badge (not below \u2014 was overlapping divider)\r\n      doc.setFontSize(6);\r\n      doc.setTextColor.apply(doc, COL_MUTED);\r\n      var smallLabel = isTransit ? \"TRANSIT\" : (isFirst ? \"ARRIVAL\" : (isLast ? \"DEPARTURE\" : \"DAY\"));\r\n      \/\/ Place small label just under the circle, above divider line\r\n      doc.text(smallLabel, badgeCx, badgeCy+22, {align:\"center\"});\r\n\r\n      \/\/ Title (right of badge)\r\n      var contentX = M + 54;\r\n      var contentW = W - 2*M - 64;\r\n      doc.setTextColor.apply(doc, COL_DARK);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(12);\r\n      var titleLines = doc.splitTextToSize(pdfSafe(day.title), contentW);\r\n      doc.text(titleLines.slice(0,1), contentX, y+18);\r\n\r\n      \/\/ Route inline (no pill \u2014 saves vertical space)\r\n      doc.setTextColor.apply(doc, COL_MID);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(7);\r\n      doc.text(\"ROUTE\", contentX, y+34);\r\n      doc.setFont(\"helvetica\",\"normal\");\r\n      doc.setFontSize(8.5);\r\n      doc.setTextColor(80,95,105);\r\n      var routeLines = doc.splitTextToSize(pdfSafe(day.route||\"-\"), contentW - 32);\r\n      doc.text(routeLines.slice(0,1), contentX + 30, y+34);\r\n\r\n      \/\/ Divider between header and content (below badge area to avoid label clip)\r\n      doc.setDrawColor.apply(doc, COL_BORDER);\r\n      doc.setLineWidth(0.4);\r\n      doc.line(M+12, y+47, W-M-12, y+47);\r\n\r\n      var contentY = y + 59;\r\n\r\n      \/\/ Activities \u2014 compact bullet list, one line each (truncated if too long)\r\n      if(day.activities && day.activities.length){\r\n        doc.setFont(\"helvetica\",\"normal\");\r\n        doc.setFontSize(8.5);\r\n        doc.setTextColor.apply(doc, COL_TEXT);\r\n        var actLimit = Math.min(day.activities.length, 4);\r\n        for(var ai = 0; ai < actLimit; ai++){\r\n          \/\/ Bullet\r\n          doc.setFillColor.apply(doc, COL_MID);\r\n          doc.circle(M+18, contentY-2.5, 1.5, \"F\");\r\n          \/\/ Activity text \u2014 truncate to one line\r\n          var actText = pdfSafe(day.activities[ai]);\r\n          var lines = doc.splitTextToSize(actText, W-2*M-32);\r\n          var firstLine = lines[0];\r\n          \/\/ If text was wrapped, add ellipsis\r\n          if(lines.length > 1 && firstLine.length > 6){\r\n            firstLine = firstLine.replace(\/\\s+\\S*$\/, \"\") + \"...\";\r\n          }\r\n          doc.text(firstLine, M+25, contentY);\r\n          contentY += 11;\r\n        }\r\n        contentY += 3;\r\n      }\r\n\r\n      \/\/ Inline meta strip \u2014 single row of pipe-separated key facts\r\n      var metaParts = [];\r\n      if(day.stay && day.stay!==\"-\" && day.stay!==\"\u2014\") metaParts.push({k:\"Stay\", v:pdfSafe(day.stay)});\r\n      if(day.distance && day.distance!==\"-\" && day.distance!==\"\u2014\") metaParts.push({k:\"Dist\", v:pdfSafe(day.distance)});\r\n      if(day.driveTime && day.driveTime!==\"-\" && day.driveTime!==\"\u2014\") metaParts.push({k:\"Time\", v:pdfSafe(day.driveTime)});\r\n      if(day.meals && day.meals!==\"-\" && day.meals!==\"\u2014\") metaParts.push({k:\"Meals\", v:pdfSafe(day.meals)});\r\n      if(day.difficulty && day.difficulty!==\"-\" && day.difficulty!==\"\u2014\") metaParts.push({k:\"Level\", v:pdfSafe(day.difficulty)});\r\n\r\n      if(metaParts.length){\r\n        var stripY = y + cardH - 18;\r\n        doc.setFillColor.apply(doc, COL_BG_SOFT);\r\n        doc.roundedRect(M+8, stripY, W-2*M-16, 14, 3, 3, \"F\");\r\n\r\n        var stripX = M + 14;\r\n        doc.setFontSize(7);\r\n        for(var mi = 0; mi < metaParts.length; mi++){\r\n          var part = metaParts[mi];\r\n          \/\/ Label (small, muted)\r\n          doc.setFont(\"helvetica\",\"bold\");\r\n          doc.setTextColor.apply(doc, COL_MID);\r\n          doc.text(part.k.toUpperCase(), stripX, stripY+9);\r\n          stripX += doc.getTextWidth(part.k.toUpperCase()) + 4;\r\n          \/\/ Value (bold dark)\r\n          doc.setFont(\"helvetica\",\"bold\");\r\n          doc.setTextColor.apply(doc, COL_DARK);\r\n          \/\/ Truncate value if too long\r\n          var maxValW = (W-2*M-32)\/metaParts.length - 30;\r\n          var valLines = doc.splitTextToSize(part.v, maxValW);\r\n          var val = valLines[0];\r\n          if(valLines.length > 1) val = val.replace(\/\\s+\\S*$\/, \"\")+\"...\";\r\n          doc.text(val, stripX, stripY+9);\r\n          stripX += doc.getTextWidth(val) + 10;\r\n          \/\/ Pipe separator (except last)\r\n          if(mi < metaParts.length-1){\r\n            doc.setDrawColor.apply(doc, COL_BORDER);\r\n            doc.setLineWidth(0.5);\r\n            doc.line(stripX-5, stripY+3, stripX-5, stripY+11);\r\n          }\r\n        }\r\n      }\r\n\r\n      return cardH;\r\n    }\r\n\r\n    \/\/ Pack day cards: try to fit 2 per page\r\n    var dayPageNum = 2;\r\n    doc.addPage();\r\n    drawHeaderBar(dayPageNum);\r\n    var cursorY = pageContentTop;\r\n\r\n    plan.fullPlan.forEach(function(day, idx){\r\n      var dayH = measureDayHeight(day);\r\n      \/\/ Will it fit on current page?\r\n      if(cursorY + dayH > pageContentBottom){\r\n        \/\/ Finish current page\r\n        drawFooter(dayPageNum);\r\n        doc.addPage();\r\n        dayPageNum++;\r\n        drawHeaderBar(dayPageNum);\r\n        cursorY = pageContentTop;\r\n      }\r\n      renderDayCard(day, idx, cursorY);\r\n      cursorY += dayH + dayGap;\r\n    });\r\n\r\n    \/\/ Footer for last day page\r\n    drawFooter(dayPageNum);\r\n\r\n    \/\/ ============================================================\r\n    \/\/              FINAL PAGE \u2014 Permits, Inclusions, CTA\r\n    \/\/ ============================================================\r\n    doc.addPage();\r\n    drawHeaderBar(totalPages);\r\n    var fy = 80;\r\n\r\n    doc.setTextColor.apply(doc, COL_DARK);\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(18);\r\n    doc.text(\"Trip Essentials\", M, fy);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(10);\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.text(\"Documents required, what's included, and next steps\", M, fy+16);\r\n    fy += 36;\r\n\r\n    \/\/ PERMITS\r\n    if(plan.permits && plan.permits.length){\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(11);\r\n      doc.setTextColor.apply(doc, COL_DARK);\r\n      doc.text(\"DOCUMENTS & PERMITS REQUIRED\", M, fy);\r\n      doc.setDrawColor.apply(doc, COL_MID);\r\n      doc.setLineWidth(1.5);\r\n      doc.line(M, fy+4, M+200, fy+4);\r\n      fy += 18;\r\n\r\n      doc.setFont(\"helvetica\",\"normal\");\r\n      doc.setFontSize(9.5);\r\n      doc.setTextColor.apply(doc, COL_TEXT);\r\n      plan.permits.forEach(function(p){\r\n        if(fy > H-90){\r\n          drawFooter(totalPages);\r\n          doc.addPage();\r\n          drawHeaderBar(totalPages);\r\n          fy = 80;\r\n        }\r\n        doc.setFillColor.apply(doc, COL_MID);\r\n        doc.circle(M+5, fy-3, 2.4, \"F\");\r\n        var lines = doc.splitTextToSize(pdfSafe(p), W-2*M-18);\r\n        doc.text(lines, M+15, fy);\r\n        fy += lines.length*13 + 5;\r\n      });\r\n      fy += 14;\r\n    }\r\n\r\n    var ie = generateInclusions(plan);\r\n    var halfW = (W-2*M-12)\/2;\r\n\r\n    \/\/ INCLUSIONS \/ EXCLUSIONS \u2014 side by side cards\r\n    if(fy > H-200){\r\n      drawFooter(totalPages);\r\n      doc.addPage();\r\n      drawHeaderBar(totalPages);\r\n      fy = 80;\r\n    }\r\n\r\n    \/\/ Calculate heights to align both columns\r\n    function measureList(items, w){\r\n      var h = 28; \/\/ title + padding\r\n      items.forEach(function(p){\r\n        var lines = doc.splitTextToSize(pdfSafe(p), w-25);\r\n        h += lines.length*12 + 5;\r\n      });\r\n      return h + 14;\r\n    }\r\n\r\n    doc.setFontSize(9.5);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    var inclH = measureList(ie.incl, halfW);\r\n    var exclH = measureList(ie.excl, halfW);\r\n    var ieH = Math.max(inclH, exclH);\r\n\r\n    \/\/ INCLUSIONS card\r\n    doc.setFillColor(245,251,247);\r\n    doc.setDrawColor.apply(doc, COL_BORDER);\r\n    doc.setLineWidth(0.7);\r\n    doc.roundedRect(M, fy, halfW, ieH, 8, 8, \"FD\");\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(10);\r\n    doc.setTextColor.apply(doc, COL_MID);\r\n    doc.text(\"WHAT'S INCLUDED\", M+12, fy+18);\r\n    var incY = fy + 32;\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(8.5);\r\n    doc.setTextColor.apply(doc, COL_TEXT);\r\n    ie.incl.forEach(function(p){\r\n      doc.setFillColor.apply(doc, COL_MID);\r\n      doc.circle(M+16, incY-2.5, 1.8, \"F\");\r\n      var lines = doc.splitTextToSize(pdfSafe(p), halfW-25);\r\n      doc.text(lines, M+22, incY);\r\n      incY += lines.length*11 + 4;\r\n    });\r\n\r\n    \/\/ EXCLUSIONS card\r\n    var exX = M + halfW + 12;\r\n    doc.setFillColor(254,247,245);\r\n    doc.setDrawColor(252,210,200);\r\n    doc.roundedRect(exX, fy, halfW, ieH, 8, 8, \"FD\");\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(10);\r\n    doc.setTextColor.apply(doc, COL_RED);\r\n    doc.text(\"WHAT'S NOT INCLUDED\", exX+12, fy+18);\r\n    var excY = fy + 32;\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(8.5);\r\n    doc.setTextColor.apply(doc, COL_TEXT);\r\n    ie.excl.forEach(function(p){\r\n      doc.setFillColor.apply(doc, COL_RED);\r\n      doc.circle(exX+16, excY-2.5, 1.8, \"F\");\r\n      var lines = doc.splitTextToSize(pdfSafe(p), halfW-25);\r\n      doc.text(lines, exX+22, excY);\r\n      excY += lines.length*11 + 4;\r\n    });\r\n    fy += ieH + 16;\r\n\r\n    \/\/ LOCAL TIP\r\n    if(fy > H-180){\r\n      drawFooter(totalPages);\r\n      doc.addPage();\r\n      drawHeaderBar(totalPages);\r\n      fy = 80;\r\n    }\r\n    var tipText = pdfSafe(plan.localTip);\r\n    doc.setFontSize(9);\r\n    var tipLines = doc.splitTextToSize(tipText, W-2*M-30);\r\n    var tipBoxH = Math.min(140, tipLines.length*11 + 38);\r\n    doc.setFillColor.apply(doc, COL_AMBER_BG);\r\n    doc.setDrawColor.apply(doc, COL_AMBER_BORDER);\r\n    doc.setLineWidth(0.7);\r\n    doc.roundedRect(M, fy, W-2*M, tipBoxH, 8, 8, \"FD\");\r\n    \/\/ Side accent\r\n    doc.setFillColor(217,119,6);\r\n    doc.roundedRect(M, fy, 4, tipBoxH, 2, 2, \"F\");\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(9);\r\n    doc.setTextColor.apply(doc, COL_AMBER_TEXT);\r\n    doc.text(\"HIMTRAILS LOCAL TIP\", M+15, fy+18);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(9);\r\n    doc.setTextColor(92,69,0);\r\n    doc.text(tipLines.slice(0,9), M+15, fy+34);\r\n    fy += tipBoxH + 18;\r\n\r\n    \/\/ CTA card\r\n    if(fy > H-160){\r\n      drawFooter(totalPages);\r\n      doc.addPage();\r\n      drawHeaderBar(totalPages);\r\n      fy = 80;\r\n    }\r\n    doc.setFillColor.apply(doc, COL_DARK);\r\n    doc.roundedRect(M, fy, W-2*M, 110, 12, 12, \"F\");\r\n    \/\/ accent stripe\r\n    doc.setFillColor.apply(doc, COL_LIGHT);\r\n    doc.roundedRect(M, fy, 5, 110, 2, 2, \"F\");\r\n\r\n    doc.setTextColor(255,255,255);\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(15);\r\n    doc.text(\"Ready to make this real?\", M+22, fy+30);\r\n    doc.setFontSize(9.5);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setTextColor(200,230,213);\r\n    doc.text(\"Get a FREE customised quote with hotels, cabs & inclusions tailored to your dates.\", M+22, fy+48);\r\n    doc.setFont(\"helvetica\",\"bold\");\r\n    doc.setFontSize(11);\r\n    doc.setTextColor(255,255,255);\r\n    doc.text(\"WhatsApp:  +91 77176 97177\", M+22, fy+74);\r\n    doc.setFont(\"helvetica\",\"normal\");\r\n    doc.setFontSize(10);\r\n    doc.setTextColor(200,230,213);\r\n    doc.text(\"Website:  www.himtrails.in\", M+22, fy+92);\r\n    fy += 124;\r\n\r\n    \/\/ Verified stamp\r\n    doc.setFontSize(7.5);\r\n    doc.setTextColor.apply(doc, COL_MUTED);\r\n    doc.setFont(\"helvetica\",\"italic\");\r\n    doc.text(\"Data verified against official sources (himachaltourism.gov.in, BRO\/PIB, Wikipedia) - Last updated April 2026.\", M, fy);\r\n    fy += 11;\r\n    doc.text(\"This is a sample itinerary. Hotels, cabs and meals will be customised based on your travel dates and group size.\", M, fy);\r\n\r\n    drawFooter(totalPages);\r\n\r\n    var fname = \"HimTrails-\"+stripHTML(plan.destName).replace(\/[^a-z0-9]+\/gi,\"-\")+\"-\"+plan.totalDays+\"D.pdf\";\r\n    doc.save(fname);\r\n  }\r\n\r\n  \/\/ Route diagram in PDF \u2014 uses the actual STAY locations across days\r\n  \/\/ This gives the truest picture of the journey (where you sleep each night)\r\n  function drawRouteDiagram(doc, plan, x, y, w){\r\n    \/\/ Build flow nodes from the sequence of unique STAY locations\r\n    \/\/ (since stays reflect the actual journey, not just destination keys)\r\n    var nodes = [];\r\n    var lastStay = null;\r\n    plan.fullPlan.forEach(function(d, idx){\r\n      \/\/ Skip if this is a \"departure\/in transit\" final day\r\n      if(d.stay && d.stay.toLowerCase() === \"in transit\") return;\r\n      \/\/ Get a clean stay name (strip parens, take first segment)\r\n      var stay = (d.stay || \"\").split(\"\/\")[0].trim();\r\n      if(!stay || stay === \"\u2014\" || stay === \"-\") return;\r\n      \/\/ Normalize: collapse \"Kheerganga camp\" -> \"Kheerganga\", etc.\r\n      var clean = stay.replace(\/\\s+camp(s)?$\/i,\"\").replace(\/\\s+homestay$\/i,\"\").trim();\r\n      if(clean !== lastStay){\r\n        nodes.push({name:pdfSafe(clean)});\r\n        lastStay = clean;\r\n      }\r\n    });\r\n\r\n    \/\/ Fallback: if no stays were extracted, use unique destKeys\r\n    if(nodes.length === 0){\r\n      var lastKey = null;\r\n      plan.fullPlan.forEach(function(d){\r\n        var k = d.destKey;\r\n        if(k !== lastKey){\r\n          var name;\r\n          if(window.HT_DESTINATIONS[k]){\r\n            name = window.HT_DESTINATIONS[k].name.split(\" \")[0].replace(\/[\u2013-]\/g,\"\").trim();\r\n          } else {\r\n            name = String(k).replace(\/-\/g,\" \").replace(\/\\b\\w\/g, function(c){return c.toUpperCase();});\r\n          }\r\n          nodes.push({name:pdfSafe(name)});\r\n          lastKey = k;\r\n        }\r\n      });\r\n    }\r\n\r\n    \/\/ Hard cap to prevent overflow on very long combos\r\n    if(nodes.length > 6){\r\n      nodes = [nodes[0], nodes[1], {name:\"...\"}, nodes[nodes.length-2], nodes[nodes.length-1]];\r\n    }\r\n\r\n    if(nodes.length===0) return;\r\n\r\n    var DARK = [15,76,58];\r\n    var MID = [26,122,94];\r\n\r\n    \/\/ Layout (vertical positions relative to y):\r\n    \/\/   y+0   -> top of region\r\n    \/\/   y+8   -> STOP N label baseline (8pt clear above)\r\n    \/\/   y+30  -> circle center (radius 12, so circle top y+18, bottom y+42)\r\n    \/\/   y+58  -> destination name baseline (16pt clear below circle)\r\n    \/\/ Total height ~64pt\r\n\r\n    var radius = 12;\r\n    var circleY = y + 30;\r\n    var stopLabelY = y + 8;\r\n    var nameY = y + 58;\r\n\r\n    if(nodes.length===1){\r\n      var cx = x + w\/2;\r\n      \/\/ STOP label\r\n      doc.setTextColor.apply(doc, MID);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(7.5);\r\n      doc.text(\"STOP 1\", cx, stopLabelY, {align:\"center\"});\r\n      \/\/ Circle\r\n      doc.setFillColor.apply(doc, MID);\r\n      doc.circle(cx, circleY, radius, \"F\");\r\n      doc.setFillColor.apply(doc, DARK);\r\n      doc.circle(cx, circleY, 3.5, \"F\");\r\n      \/\/ Name\r\n      doc.setTextColor.apply(doc, DARK);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(10);\r\n      doc.text(nodes[0].name, cx, nameY, {align:\"center\"});\r\n      doc.setFont(\"helvetica\",\"normal\");\r\n      doc.setFontSize(8);\r\n      doc.setTextColor(120,140,150);\r\n      doc.text(\"Day 1 - \"+plan.totalDays, cx, nameY+12, {align:\"center\"});\r\n      return;\r\n    }\r\n\r\n    var spacing = w \/ nodes.length;\r\n    nodes.forEach(function(n, i){\r\n      var cx = x + spacing*i + spacing\/2;\r\n\r\n      \/\/ Connector line FIRST so circles sit on top\r\n      if(i < nodes.length-1){\r\n        var nextCx = x + spacing*(i+1) + spacing\/2;\r\n        doc.setDrawColor.apply(doc, MID);\r\n        doc.setLineWidth(1.6);\r\n        doc.line(cx + radius + 2, circleY, nextCx - radius - 5, circleY);\r\n        \/\/ Arrow head triangle\r\n        doc.setFillColor.apply(doc, MID);\r\n        doc.triangle(nextCx - radius - 2, circleY, nextCx - radius - 8, circleY - 4, nextCx - radius - 8, circleY + 4, \"F\");\r\n      }\r\n\r\n      \/\/ STOP label well above the circle (8pt clear above circle top)\r\n      doc.setTextColor.apply(doc, MID);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(7.5);\r\n      doc.text(\"STOP \"+(i+1), cx, stopLabelY, {align:\"center\"});\r\n\r\n      \/\/ Circle node\r\n      doc.setFillColor.apply(doc, MID);\r\n      doc.circle(cx, circleY, radius, \"F\");\r\n      \/\/ Inner accent (small dot)\r\n      doc.setFillColor.apply(doc, DARK);\r\n      doc.circle(cx, circleY, 3.5, \"F\");\r\n\r\n      \/\/ Name below circle (16pt clear below circle bottom)\r\n      doc.setTextColor.apply(doc, DARK);\r\n      doc.setFont(\"helvetica\",\"bold\");\r\n      doc.setFontSize(9.5);\r\n      var nameLines = doc.splitTextToSize(n.name, spacing - 8);\r\n      doc.text(nameLines.slice(0,2), cx, nameY, {align:\"center\"});\r\n    });\r\n  }\r\n\r\n  \/\/ ----- Strip parent spacing (Elementor \/ theme containers) -----\r\n  (function(){\r\n    var wrap = document.getElementById(\"himtrails-planner-wrapper\");\r\n    if(!wrap) return;\r\n    var p = wrap.parentElement;\r\n    var depth = 0;\r\n    while(p && depth < 8){\r\n      try{\r\n        p.style.marginBottom = \"0px\";\r\n        p.style.paddingBottom = (p.tagName.toLowerCase()===\"body\" ? p.style.paddingBottom : \"0px\");\r\n      } catch(e){}\r\n      if(p.tagName && p.tagName.toLowerCase()===\"body\") break;\r\n      p = p.parentElement;\r\n      depth++;\r\n    }\r\n  })();\r\n\r\n  \/\/ ----- Auto-load if URL has params -----\r\n  setTimeout(tryAutoLoad, 200);\r\n\r\n})();\r\n<\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-50d27b2 e-flex e-con-boxed e-con e-parent\" data-id=\"50d27b2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e372d12 elementor-widget elementor-widget-spacer\" data-id=\"e372d12\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9e270a2 elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"9e270a2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-60c6a3b e-grid e-con-full e-con e-child\" data-id=\"60c6a3b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-18549cd e-con-full e-flex e-con e-child\" data-id=\"18549cd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dc45285 elementor-widget elementor-widget-heading\" data-id=\"dc45285\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">5+<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e062555 elementor-widget elementor-widget-text-editor\" data-id=\"e062555\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Years Expertise<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d0a89c6 e-con-full e-flex e-con e-child\" data-id=\"d0a89c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a229e55 elementor-widget elementor-widget-heading\" data-id=\"a229e55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">3,973+<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-be38c79 elementor-widget elementor-widget-text-editor\" data-id=\"be38c79\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Happy Travelers<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-444c51b e-con-full e-flex e-con e-child\" data-id=\"444c51b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-00216ef elementor-widget elementor-widget-heading\" data-id=\"00216ef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">4.9 <span style=\"color: #FF9529\">\u2605<\/span><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a7ac642 elementor-widget elementor-widget-text-editor\" data-id=\"a7ac642\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Google Rating<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f7d7129 e-con-full e-flex e-con e-child\" data-id=\"f7d7129\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ef6b3cb elementor-widget elementor-widget-heading\" data-id=\"ef6b3cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">24x7<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1092e1 elementor-widget elementor-widget-text-editor\" data-id=\"f1092e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Support<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f38f70e e-flex e-con-boxed e-con e-parent\" data-id=\"f38f70e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5be50a4 elementor-widget elementor-widget-spacer\" data-id=\"5be50a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u2726 HIMACHAL TRIP ITINERARY PLANNER Himachal Trip Itinerary Planner Design your day-by-day Himachal plan in 10 seconds \u2014 single destination or multi-destination combos. Realistic pacing, drive times, permits &amp; verified data, crafted by HimTrails \u2014 local Himachal experts based in Shimla. Single Destination Single Multi-Destination Combo Multi-Combo Trip Details Destination * Select destinationManaliShimlaKasol \u2013 KheergangaDharamshala [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"googlesitekit_rrm_CAowjtHDDA:productID":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","footnotes":""},"class_list":["post-16139","page","type-page","status-publish","hentry","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages\/16139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/comments?post=16139"}],"version-history":[{"count":22,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages\/16139\/revisions"}],"predecessor-version":[{"id":16239,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages\/16139\/revisions\/16239"}],"wp:attachment":[{"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/media?parent=16139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}