{"id":556,"date":"2025-06-16T21:13:56","date_gmt":"2025-06-16T15:43:56","guid":{"rendered":"https:\/\/himtrails.in\/?page_id=556"},"modified":"2026-07-15T22:52:28","modified_gmt":"2026-07-15T17:22:28","slug":"himachal-pradesh-travel-gallery","status":"publish","type":"page","link":"https:\/\/himtrails.in\/hi\/himachal-pradesh-travel-gallery\/","title":{"rendered":"\u0917\u0948\u0932\u0930\u0940"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"556\" class=\"elementor elementor-556\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-deca142 e-con-full e-flex e-con e-parent\" data-id=\"deca142\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2cdee7f elementor-widget elementor-widget-html\" data-id=\"2cdee7f\" 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  \"@graph\": [\r\n    {\r\n      \"@type\": \"ImageGallery\",\r\n      \"@id\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/#webpage\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/\",\r\n      \"name\": \"Himachal Pradesh Travel Gallery\",\r\n      \"description\": \"Explore the HimTrails Himachal Pradesh Travel Gallery featuring travel photographs of Manali, Shimla, Spiti Valley, Kasol and other Himalayan destinations.\",\r\n      \"isPartOf\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#website\"\r\n      },\r\n      \"publisher\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#organization\"\r\n      },\r\n      \"inLanguage\": \"en-IN\",\r\n      \"about\": [\r\n        {\r\n          \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n        },\r\n        {\r\n          \"@id\": \"https:\/\/himtrails.in\/#ladakh\"\r\n        }\r\n      ],\r\n      \"mainEntity\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/#destination-list\"\r\n      },\r\n      \"image\": [\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Manali-Logo.jpeg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Manali-Logo.jpeg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Manali-Logo.jpeg\",\r\n          \"caption\": \"Manali travel photos including mountains, forests and high-altitude routes\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Leh-Logo.webp#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Leh-Logo.webp\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Leh-Logo.webp\",\r\n          \"caption\": \"Leh Ladakh high passes and Himalayan road-trip landscapes\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Spiti-Logo-scaled.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Spiti-Logo-scaled.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Spiti-Logo-scaled.jpg\",\r\n          \"caption\": \"Spiti Valley monasteries, cold desert and starry skies\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Kasol-Logo-scaled.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Kasol-Logo-scaled.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Kasol-Logo-scaled.jpg\",\r\n          \"caption\": \"Kasol and Parvati Valley river and forest scenery\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Shimla-Logo-scaled.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Shimla-Logo-scaled.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Shimla-Logo-scaled.jpg\",\r\n          \"caption\": \"Shimla heritage architecture and mountain railway\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Rohtang-Pass.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Rohtang-Pass.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Rohtang-Pass.jpg\",\r\n          \"caption\": \"Snow mountains at Rohtang Pass near Manali\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Paragliding-in-Himachal-Pradesh.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Paragliding-in-Himachal-Pradesh.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Paragliding-in-Himachal-Pradesh.jpg\",\r\n          \"caption\": \"Paragliding in Bir Billing, Himachal Pradesh\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Trout-Fishing-in-Himachal-Pradesh.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Trout-Fishing-in-Himachal-Pradesh.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Trout-Fishing-in-Himachal-Pradesh.jpg\",\r\n          \"caption\": \"Trout fishing in Tirthan Valley, Himachal Pradesh\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Skiing-in-Himachal-Pradesh.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Skiing-in-Himachal-Pradesh.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Skiing-in-Himachal-Pradesh.jpg\",\r\n          \"caption\": \"Skiing and snow activities in Himachal Pradesh\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        },\r\n        {\r\n          \"@type\": \"ImageObject\",\r\n          \"@id\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/River-Rafting-in-Himachal-Pradesh-1536x864.jpg#image\",\r\n          \"url\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/River-Rafting-in-Himachal-Pradesh-1536x864.jpg\",\r\n          \"contentUrl\": \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/River-Rafting-in-Himachal-Pradesh-1536x864.jpg\",\r\n          \"caption\": \"River rafting adventure in Himachal Pradesh\",\r\n          \"creditText\": \"HimTrails\",\r\n          \"copyrightNotice\": \"\u00a9 HimTrails. All rights reserved.\"\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"ItemList\",\r\n      \"@id\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/#destination-list\",\r\n      \"url\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/#destination-list\",\r\n      \"name\": \"Destinations Featured in the Himachal Pradesh Travel Gallery\",\r\n      \"description\": \"A collection of twelve major Himalayan destinations featured in the HimTrails travel photo gallery.\",\r\n      \"numberOfItems\": 12,\r\n      \"itemListOrder\": \"https:\/\/schema.org\/ItemListOrderAscending\",\r\n      \"mainEntityOfPage\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/#webpage\"\r\n      },\r\n      \"itemListElement\": [\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 1,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/manali\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 2,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/leh-ladakh\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 3,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/spiti\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 4,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/kasol\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 5,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/jibhi\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 6,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/kinnaur\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 7,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/dharamshala\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 8,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/bir-billing\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 9,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/tirthan-valley\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 10,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/shimla\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 11,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/narkanda\/#tourist-destination\"\r\n          }\r\n        },\r\n        {\r\n          \"@type\": \"ListItem\",\r\n          \"position\": 12,\r\n          \"item\": {\r\n            \"@id\": \"https:\/\/himtrails.in\/destination\/chamba\/#tourist-destination\"\r\n          }\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/manali\/#tourist-destination\",\r\n      \"name\": \"Manali\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/manali\/\",\r\n      \"description\": \"A Himalayan destination known for the Beas River, cedar forests, Solang Valley, Rohtang Pass and mountain adventures.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Families\",\r\n        \"Couples\",\r\n        \"Adventure travellers\",\r\n        \"Nature lovers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/leh-ladakh\/#tourist-destination\",\r\n      \"name\": \"Leh Ladakh\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/leh-ladakh\/\",\r\n      \"description\": \"A high-altitude Himalayan destination featuring mountain passes, monasteries, Pangong Lake, Nubra Valley and scenic road journeys.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#ladakh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Adventure travellers\",\r\n        \"Road-trip travellers\",\r\n        \"Motorcyclists\",\r\n        \"Photographers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/spiti\/#tourist-destination\",\r\n      \"name\": \"Spiti Valley\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/spiti\/\",\r\n      \"description\": \"A high-altitude cold-desert destination known for ancient monasteries, remote villages, Chandratal Lake and dramatic Himalayan landscapes.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Adventure travellers\",\r\n        \"Road-trip travellers\",\r\n        \"Photographers\",\r\n        \"Cultural travellers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/kasol\/#tourist-destination\",\r\n      \"name\": \"Kasol\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/kasol\/\",\r\n      \"description\": \"A Parvati Valley destination known for forest scenery, riverside landscapes, village walks, Manikaran and Himalayan trekking routes.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Backpackers\",\r\n        \"Trekkers\",\r\n        \"Nature lovers\",\r\n        \"Young travellers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/jibhi\/#tourist-destination\",\r\n      \"name\": \"Jibhi\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/jibhi\/\",\r\n      \"description\": \"A peaceful Himalayan destination featuring wooden houses, waterfalls, forest trails, Shoja and the scenic Jalori Pass route.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Couples\",\r\n        \"Nature lovers\",\r\n        \"Slow travellers\",\r\n        \"Families\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/kinnaur\/#tourist-destination\",\r\n      \"name\": \"Kinnaur\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/kinnaur\/\",\r\n      \"description\": \"A Himalayan district known for Chitkul, Sangla, Kalpa, apple orchards, traditional villages and dramatic mountain roads.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Nature lovers\",\r\n        \"Road-trip travellers\",\r\n        \"Cultural travellers\",\r\n        \"Photographers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/dharamshala\/#tourist-destination\",\r\n      \"name\": \"Dharamshala\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/dharamshala\/\",\r\n      \"description\": \"A Dhauladhar mountain destination known for Tibetan culture, McLeodganj, monasteries, Triund and scenic forest trails.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Cultural travellers\",\r\n        \"Trekkers\",\r\n        \"Families\",\r\n        \"Nature lovers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/bir-billing\/#tourist-destination\",\r\n      \"name\": \"Bir Billing\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/bir-billing\/\",\r\n      \"description\": \"A Himalayan destination famous for paragliding, Tibetan monasteries, tea-country scenery, mountain views and colourful sunsets.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Adventure travellers\",\r\n        \"Paragliders\",\r\n        \"Couples\",\r\n        \"Nature lovers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/tirthan-valley\/#tourist-destination\",\r\n      \"name\": \"Tirthan Valley\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/tirthan-valley\/\",\r\n      \"description\": \"A quiet Himalayan valley known for clear rivers, trout fishing, forest villages and access to the Great Himalayan National Park.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Nature lovers\",\r\n        \"Families\",\r\n        \"Anglers\",\r\n        \"Trekkers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/shimla\/#tourist-destination\",\r\n      \"name\": \"Shimla\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/shimla\/\",\r\n      \"description\": \"The capital hill destination of Himachal Pradesh, known for colonial architecture, Mall Road, the Ridge and the Kalka\u2013Shimla railway.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Families\",\r\n        \"Couples\",\r\n        \"Heritage travellers\",\r\n        \"First-time visitors\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/narkanda\/#tourist-destination\",\r\n      \"name\": \"Narkanda\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/narkanda\/\",\r\n      \"description\": \"A mountain destination known for winter snow, skiing, Hatu Peak, apple orchards and landscapes along the old Hindustan\u2013Tibet road.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Skiers\",\r\n        \"Families\",\r\n        \"Couples\",\r\n        \"Nature lovers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"TouristDestination\",\r\n      \"@id\": \"https:\/\/himtrails.in\/destination\/chamba\/#tourist-destination\",\r\n      \"name\": \"Chamba\",\r\n      \"url\": \"https:\/\/himtrails.in\/destination\/chamba\/\",\r\n      \"description\": \"A heritage Himalayan destination known for historic temples, traditional towns, Khajjiar, Bharmour, Dalhousie and mountain meadows.\",\r\n      \"containedInPlace\": {\r\n        \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\"\r\n      },\r\n      \"touristType\": [\r\n        \"Heritage travellers\",\r\n        \"Families\",\r\n        \"Nature lovers\",\r\n        \"Cultural travellers\"\r\n      ]\r\n    },\r\n    {\r\n      \"@type\": \"AdministrativeArea\",\r\n      \"@id\": \"https:\/\/himtrails.in\/#himachal-pradesh\",\r\n      \"name\": \"Himachal Pradesh\",\r\n      \"containedInPlace\": {\r\n        \"@type\": \"Country\",\r\n        \"name\": \"India\"\r\n      }\r\n    },\r\n    {\r\n      \"@type\": \"AdministrativeArea\",\r\n      \"@id\": \"https:\/\/himtrails.in\/#ladakh\",\r\n      \"name\": \"Ladakh\",\r\n      \"containedInPlace\": {\r\n        \"@type\": \"Country\",\r\n        \"name\": \"India\"\r\n      }\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-0295ee3 elementor-widget elementor-widget-html\" data-id=\"0295ee3\" 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 \u2014 HIMACHAL PRADESH TRAVEL GALLERY (v4 \u2014 Final polished build)\r\n  Paste this complete block into one Elementor HTML widget.\r\n\r\n  SETUP:\r\n  1) Set the Elementor page layout to Full Width and hide the default WordPress\r\n     page title, so this page has only one visible H1.\r\n  2) This is one self-contained HTML\/CSS\/JavaScript block. No jQuery, no libraries.\r\n  3) The gallery loads images automatically from your own WordPress Media Library\r\n     via \/wp-json\/wp\/v2\/media (same site, no API key, no third-party service).\r\n  4) Images are classified by filename, slug, title, alt text, caption and description.\r\n  5) All SEO body copy and destination links are static HTML, fully crawlable.\r\n\r\n  WHAT CHANGED IN v4 (fixes over the previous version):\r\n  - FIX: lightbox previous\/next buttons now truly hide when a category has 1 image\r\n         (added [hidden] CSS override \u2014 display:grid was beating the hidden attribute).\r\n  - FIX: a malformed % character in any image filename can no longer crash\r\n         classification (decodeURIComponent is now wrapped in try\/catch, and each\r\n         image is classified inside its own try\/catch).\r\n  - PERF: the gallery now initialises lazily \u2014 the Media Library is only fetched\r\n          when the visitor scrolls near the gallery (IntersectionObserver), so it\r\n          no longer competes with the hero image on first paint.\r\n  - PERF: API pages are fetched in small batches of 4 instead of ~29 parallel\r\n          requests, which avoids WAF \/ security-plugin rate limiting.\r\n  - PERF: cache moved from sessionStorage to localStorage and extended to 6 hours,\r\n          so repeat visitors skip the API entirely.\r\n  - PERF: each image's text is normalised once (not once per keyword), making\r\n          classification ~200x cheaper on large libraries.\r\n  - ACCURACY: activity-only keywords removed (\"skiing\", \"paragliding\",\r\n          \"trout fishing\") so a Solang skiing photo is no longer mislabelled\r\n          as Narkanda. Only place names classify images now.\r\n  - COPY: all admin-facing text (\"your WordPress Media Library\", \"refresh this\r\n          page\") rewritten for visitors. Admin notes now live in HTML comments.\r\n  - COPY: hero stats updated (14 photo collections instead of \"1 All HimTrails\").\r\n  - UX:   \"Try again\" control only appears after a loading error.\r\n  - SEO:  hero image preload added for better LCP; CollectionPage + ImageGallery\r\n          JSON-LD added alongside the existing FAQPage schema.\r\n  - A11Y: filter row uses role=\"group\" (toolbar implied arrow-key behaviour that\r\n          was not implemented).\r\n\r\n  ADMIN NOTE \u2014 adding new photos:\r\n  Upload the image to the Media Library and put the place name in the filename,\r\n  title, alt text, caption or description (e.g. \"manali-solang-valley-winter.jpg\",\r\n  alt: \"Snow-covered Solang Valley near Manali in winter\"). It will be picked up\r\n  automatically within the cache window, or immediately in a private\/incognito tab.\r\n\r\n  RANK MATH NOTE:\r\n  This block outputs FAQPage + CollectionPage\/ImageGallery JSON-LD. Do NOT also\r\n  enable an FAQ block\/schema for this page in Rank Math or Elementor, or Google\r\n  will see duplicate FAQPage markup. Set the page's social (og:image) to a\r\n  1200x630 scenic crop (e.g. Kothi Village), not the logo.\r\n-->\r\n\r\n<link rel=\"preload\" as=\"image\" href=\"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Kothi-Village.jpg\" fetchpriority=\"high\">\r\n\r\n<div id=\"ht-gallery-page\">\r\n  <style>\r\n    #ht-gallery-page {\r\n      --htg-green-950: #10271f;\r\n      --htg-green-900: #17382d;\r\n      --htg-green-800: #21503f;\r\n      --htg-green-700: #2d6952;\r\n      --htg-green-100: #e7f0eb;\r\n      --htg-gold: #d79a42;\r\n      --htg-gold-dark: #b87823;\r\n      --htg-cream: #f7f4ec;\r\n      --htg-white: #ffffff;\r\n      --htg-ink: #17221d;\r\n      --htg-muted: #657068;\r\n      --htg-border: #dfe6e1;\r\n      --htg-shadow: 0 18px 50px rgba(16, 39, 31, 0.12);\r\n      --htg-radius-lg: 28px;\r\n      --htg-radius-md: 18px;\r\n      --htg-radius-sm: 12px;\r\n      color: var(--htg-ink);\r\n      font-family: inherit;\r\n      line-height: 1.65;\r\n      isolation: isolate;\r\n    }\r\n\r\n    #ht-gallery-page,\r\n    #ht-gallery-page * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #ht-gallery-page img {\r\n      max-width: 100%;\r\n    }\r\n\r\n    #ht-gallery-page a {\r\n      color: inherit;\r\n    }\r\n\r\n    #ht-gallery-page button,\r\n    #ht-gallery-page input {\r\n      font: inherit;\r\n    }\r\n\r\n    #ht-gallery-page .htg-wrap {\r\n      width: min(1180px, calc(100% - 32px));\r\n      margin-inline: auto;\r\n    }\r\n\r\n    #ht-gallery-page .htg-section {\r\n      padding: 82px 0;\r\n    }\r\n\r\n    #ht-gallery-page .htg-section--cream {\r\n      background: var(--htg-cream);\r\n    }\r\n\r\n    #ht-gallery-page .htg-eyebrow {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 9px;\r\n      margin: 0 0 14px;\r\n      color: var(--htg-gold-dark);\r\n      font-size: 0.78rem;\r\n      font-weight: 800;\r\n      letter-spacing: 0.14em;\r\n      line-height: 1.2;\r\n      text-transform: uppercase;\r\n    }\r\n\r\n    #ht-gallery-page .htg-eyebrow::before {\r\n      width: 28px;\r\n      height: 2px;\r\n      background: currentColor;\r\n      content: \"\";\r\n    }\r\n\r\n    #ht-gallery-page h1,\r\n    #ht-gallery-page h2,\r\n    #ht-gallery-page h3 {\r\n      color: var(--htg-green-950);\r\n      font-family: inherit;\r\n      line-height: 1.16;\r\n      text-wrap: balance;\r\n    }\r\n\r\n    #ht-gallery-page h1 {\r\n      max-width: 880px;\r\n      margin: 0;\r\n      color: var(--htg-white);\r\n      font-size: clamp(2.4rem, 6vw, 5.4rem);\r\n      font-weight: 850;\r\n      letter-spacing: -0.045em;\r\n    }\r\n\r\n    #ht-gallery-page h2 {\r\n      margin: 0 0 18px;\r\n      font-size: clamp(1.9rem, 4vw, 3.25rem);\r\n      font-weight: 820;\r\n      letter-spacing: -0.035em;\r\n    }\r\n\r\n    #ht-gallery-page h3 {\r\n      margin: 0 0 10px;\r\n      font-size: clamp(1.15rem, 2vw, 1.42rem);\r\n      font-weight: 800;\r\n    }\r\n\r\n    #ht-gallery-page p {\r\n      margin: 0 0 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lead {\r\n      max-width: 790px;\r\n      color: #eef6f1;\r\n      font-size: clamp(1rem, 2vw, 1.22rem);\r\n      line-height: 1.75;\r\n    }\r\n\r\n    #ht-gallery-page .htg-hero {\r\n      position: relative;\r\n      overflow: hidden;\r\n      min-height: 640px;\r\n      display: grid;\r\n      align-items: end;\r\n      background:\r\n        linear-gradient(90deg, rgba(11, 29, 23, 0.93) 0%, rgba(11, 29, 23, 0.76) 50%, rgba(11, 29, 23, 0.35) 100%),\r\n        url(\"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Kothi-Village.jpg\") center \/ cover no-repeat;\r\n    }\r\n\r\n    #ht-gallery-page .htg-hero::after {\r\n      position: absolute;\r\n      right: -120px;\r\n      bottom: -150px;\r\n      width: 430px;\r\n      height: 430px;\r\n      border: 1px solid rgba(255,255,255,0.20);\r\n      border-radius: 50%;\r\n      box-shadow:\r\n        0 0 0 55px rgba(255,255,255,0.035),\r\n        0 0 0 110px rgba(255,255,255,0.025);\r\n      content: \"\";\r\n      pointer-events: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-hero__content {\r\n      position: relative;\r\n      z-index: 1;\r\n      padding: 96px 0 64px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-hero__content .htg-eyebrow {\r\n      color: #f3c37b;\r\n    }\r\n\r\n    #ht-gallery-page .htg-hero__actions {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 12px;\r\n      margin-top: 30px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn {\r\n      display: inline-flex;\r\n      min-height: 48px;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 9px;\r\n      padding: 12px 20px;\r\n      border: 1px solid transparent;\r\n      border-radius: 999px;\r\n      font-weight: 800;\r\n      line-height: 1.2;\r\n      text-align: center;\r\n      text-decoration: none;\r\n      transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease, color 180ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn:hover {\r\n      transform: translateY(-2px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn--gold {\r\n      background: var(--htg-gold);\r\n      color: #1a251f;\r\n      box-shadow: 0 12px 25px rgba(215, 154, 66, 0.25);\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn--gold:hover {\r\n      background: #e4ab5c;\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn--ghost {\r\n      border-color: rgba(255,255,255,0.38);\r\n      background: rgba(255,255,255,0.08);\r\n      color: var(--htg-white);\r\n      backdrop-filter: blur(10px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn--green {\r\n      background: var(--htg-green-800);\r\n      color: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-btn--outline {\r\n      border-color: var(--htg-green-700);\r\n      color: var(--htg-green-800);\r\n    }\r\n\r\n    #ht-gallery-page .htg-stats {\r\n      display: grid;\r\n      max-width: 720px;\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      gap: 1px;\r\n      overflow: hidden;\r\n      margin-top: 48px;\r\n      border: 1px solid rgba(255,255,255,0.16);\r\n      border-radius: var(--htg-radius-md);\r\n      background: rgba(255,255,255,0.13);\r\n      backdrop-filter: blur(12px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-stat {\r\n      padding: 18px 20px;\r\n      background: rgba(12, 35, 27, 0.52);\r\n    }\r\n\r\n    #ht-gallery-page .htg-stat strong {\r\n      display: block;\r\n      color: var(--htg-white);\r\n      font-size: 1.35rem;\r\n      line-height: 1.15;\r\n    }\r\n\r\n    #ht-gallery-page .htg-stat span {\r\n      color: #dfeae4;\r\n      font-size: 0.84rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-heading-row {\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) minmax(260px, 420px);\r\n      gap: 42px;\r\n      align-items: end;\r\n      margin-bottom: 32px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-heading-row p {\r\n      color: var(--htg-muted);\r\n    }\r\n\r\n    #ht-gallery-page .htg-filter-shell {\r\n      position: relative;\r\n      margin-bottom: 24px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-filters {\r\n      display: flex;\r\n      gap: 9px;\r\n      overflow-x: auto;\r\n      padding: 4px 3px 10px;\r\n      scroll-behavior: smooth;\r\n      scrollbar-color: var(--htg-green-700) transparent;\r\n      scrollbar-width: thin;\r\n    }\r\n\r\n    #ht-gallery-page .htg-filter {\r\n      display: inline-flex;\r\n      flex: 0 0 auto;\r\n      min-height: 44px;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding: 10px 15px;\r\n      border: 1px solid var(--htg-border);\r\n      border-radius: 999px;\r\n      background: var(--htg-white);\r\n      color: var(--htg-green-900);\r\n      cursor: pointer;\r\n      font-weight: 750;\r\n      line-height: 1.2;\r\n      transition: 180ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-filter:hover,\r\n    #ht-gallery-page .htg-filter:focus-visible {\r\n      border-color: var(--htg-green-700);\r\n      outline: none;\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-filter[aria-pressed=\"true\"] {\r\n      border-color: var(--htg-green-900);\r\n      background: var(--htg-green-900);\r\n      color: var(--htg-white);\r\n      box-shadow: 0 8px 18px rgba(23, 56, 45, 0.17);\r\n    }\r\n\r\n    #ht-gallery-page .htg-filter__count {\r\n      display: inline-grid;\r\n      min-width: 24px;\r\n      height: 24px;\r\n      place-items: center;\r\n      padding: 0 6px;\r\n      border-radius: 999px;\r\n      background: var(--htg-green-100);\r\n      color: var(--htg-green-800);\r\n      font-size: 0.72rem;\r\n      font-weight: 850;\r\n    }\r\n\r\n    #ht-gallery-page .htg-filter[aria-pressed=\"true\"] .htg-filter__count {\r\n      background: rgba(255,255,255,0.15);\r\n      color: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-category-panel {\r\n      display: grid;\r\n      grid-template-columns: 1fr auto;\r\n      gap: 20px;\r\n      align-items: center;\r\n      margin-bottom: 28px;\r\n      padding: 22px 24px;\r\n      border: 1px solid var(--htg-border);\r\n      border-radius: var(--htg-radius-md);\r\n      background: linear-gradient(135deg, #ffffff, #f5f8f6);\r\n    }\r\n\r\n    #ht-gallery-page .htg-category-panel h3 {\r\n      margin-bottom: 5px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-category-panel p {\r\n      max-width: 780px;\r\n      margin: 0;\r\n      color: var(--htg-muted);\r\n      font-size: 0.95rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-category-link {\r\n      color: var(--htg-green-700);\r\n      font-size: 0.92rem;\r\n      font-weight: 850;\r\n      text-decoration: none;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #ht-gallery-page .htg-category-link:hover {\r\n      text-decoration: underline;\r\n    }\r\n\r\n    #ht-gallery-page .htg-toolbar {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 12px;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      margin-bottom: 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-status {\r\n      min-height: 25px;\r\n      margin: 0;\r\n      color: var(--htg-muted);\r\n      font-size: 0.92rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-refresh {\r\n      border: 0;\r\n      background: transparent;\r\n      color: var(--htg-green-700);\r\n      cursor: pointer;\r\n      font-size: 0.88rem;\r\n      font-weight: 800;\r\n      text-decoration: underline;\r\n      text-underline-offset: 3px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-grid,\r\n    #ht-gallery-page .htg-skeleton-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(4, minmax(0, 1fr));\r\n      gap: 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card {\r\n      position: relative;\r\n      overflow: hidden;\r\n      border: 0;\r\n      border-radius: var(--htg-radius-md);\r\n      background: #dfe7e2;\r\n      box-shadow: 0 8px 24px rgba(16,39,31,0.08);\r\n      cursor: zoom-in;\r\n      isolation: isolate;\r\n      text-align: left;\r\n      padding: 0;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card::after {\r\n      position: absolute;\r\n      inset: 0;\r\n      background: linear-gradient(180deg, transparent 42%, rgba(5, 20, 14, 0.88) 100%);\r\n      content: \"\";\r\n      pointer-events: none;\r\n      transition: opacity 180ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card:hover,\r\n    #ht-gallery-page .htg-card:focus-visible {\r\n      outline: 3px solid rgba(45, 105, 82, 0.34);\r\n      outline-offset: 3px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card img {\r\n      display: block;\r\n      width: 100%;\r\n      aspect-ratio: 4 \/ 3;\r\n      object-fit: cover;\r\n      transition: transform 420ms cubic-bezier(.2,.7,.2,1), filter 250ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card:hover img {\r\n      transform: scale(1.055);\r\n      filter: saturate(1.06);\r\n    }\r\n\r\n    #ht-gallery-page .htg-card__body {\r\n      position: absolute;\r\n      z-index: 2;\r\n      right: 0;\r\n      bottom: 0;\r\n      left: 0;\r\n      padding: 42px 16px 15px;\r\n      color: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-card__title {\r\n      display: -webkit-box;\r\n      overflow: hidden;\r\n      margin: 0 0 3px;\r\n      font-size: 0.98rem;\r\n      font-weight: 820;\r\n      line-height: 1.35;\r\n      -webkit-box-orient: vertical;\r\n      -webkit-line-clamp: 2;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card__meta {\r\n      display: flex;\r\n      gap: 7px;\r\n      align-items: center;\r\n      color: #dce9e2;\r\n      font-size: 0.75rem;\r\n      font-weight: 700;\r\n    }\r\n\r\n    #ht-gallery-page .htg-card__zoom {\r\n      position: absolute;\r\n      z-index: 3;\r\n      top: 12px;\r\n      right: 12px;\r\n      display: grid;\r\n      width: 38px;\r\n      height: 38px;\r\n      place-items: center;\r\n      border: 1px solid rgba(255,255,255,0.30);\r\n      border-radius: 50%;\r\n      background: rgba(8, 28, 20, 0.58);\r\n      color: var(--htg-white);\r\n      opacity: 0;\r\n      transform: translateY(-5px);\r\n      transition: 180ms ease;\r\n      backdrop-filter: blur(8px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-card:hover .htg-card__zoom,\r\n    #ht-gallery-page .htg-card:focus-visible .htg-card__zoom {\r\n      opacity: 1;\r\n      transform: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-skeleton {\r\n      overflow: hidden;\r\n      border-radius: var(--htg-radius-md);\r\n      background: #e8edea;\r\n      aspect-ratio: 4 \/ 3;\r\n    }\r\n\r\n    #ht-gallery-page .htg-skeleton::after {\r\n      display: block;\r\n      width: 55%;\r\n      height: 100%;\r\n      background: linear-gradient(90deg, transparent, rgba(255,255,255,0.72), transparent);\r\n      content: \"\";\r\n      animation: htgShimmer 1.25s infinite;\r\n      transform: translateX(-120%);\r\n    }\r\n\r\n    @keyframes htgShimmer {\r\n      to { transform: translateX(260%); }\r\n    }\r\n\r\n    #ht-gallery-page .htg-load-more-wrap {\r\n      display: flex;\r\n      justify-content: center;\r\n      padding-top: 30px;\r\n    }\r\n\r\n    \/* [hidden] must beat every explicit display value used on these elements *\/\r\n    #ht-gallery-page .htg-load-more[hidden],\r\n    #ht-gallery-page .htg-empty[hidden],\r\n    #ht-gallery-page .htg-skeleton-grid[hidden],\r\n    #ht-gallery-page .htg-refresh[hidden],\r\n    #ht-gallery-page .htg-lightbox__nav[hidden] {\r\n      display: none !important;\r\n    }\r\n\r\n    #ht-gallery-page .htg-empty {\r\n      padding: 42px 24px;\r\n      border: 1px dashed #b9c8bf;\r\n      border-radius: var(--htg-radius-md);\r\n      background: #f9fbfa;\r\n      color: var(--htg-muted);\r\n      text-align: center;\r\n    }\r\n\r\n    #ht-gallery-page .htg-empty strong {\r\n      display: block;\r\n      margin-bottom: 6px;\r\n      color: var(--htg-green-900);\r\n      font-size: 1.05rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-content-grid {\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1.42fr) minmax(280px, 0.58fr);\r\n      gap: 46px;\r\n      align-items: start;\r\n    }\r\n\r\n    #ht-gallery-page .htg-prose {\r\n      color: #344139;\r\n    }\r\n\r\n    #ht-gallery-page .htg-prose h2:not(:first-child) {\r\n      margin-top: 48px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-prose h3 {\r\n      margin-top: 28px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-prose a {\r\n      color: var(--htg-green-700);\r\n      font-weight: 760;\r\n      text-decoration-thickness: 1px;\r\n      text-underline-offset: 3px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-side-card {\r\n      position: sticky;\r\n      top: 96px;\r\n      padding: 26px;\r\n      border-radius: var(--htg-radius-lg);\r\n      background: var(--htg-green-950);\r\n      color: #e7f0eb;\r\n      box-shadow: var(--htg-shadow);\r\n    }\r\n\r\n    #ht-gallery-page .htg-side-card h3 {\r\n      color: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-side-card ul {\r\n      display: grid;\r\n      gap: 10px;\r\n      margin: 22px 0;\r\n      padding: 0;\r\n      list-style: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-side-card li {\r\n      display: flex;\r\n      gap: 9px;\r\n      align-items: flex-start;\r\n    }\r\n\r\n    #ht-gallery-page .htg-side-card li::before {\r\n      color: #f3c37b;\r\n      content: \"\u2713\";\r\n      font-weight: 900;\r\n    }\r\n\r\n    #ht-gallery-page .htg-side-card .htg-btn {\r\n      width: 100%;\r\n      margin-top: 6px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-destinations {\r\n      display: grid;\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      gap: 16px;\r\n      margin-top: 26px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-destination-card {\r\n      padding: 22px;\r\n      border: 1px solid var(--htg-border);\r\n      border-radius: var(--htg-radius-md);\r\n      background: var(--htg-white);\r\n      transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-destination-card:hover {\r\n      border-color: #a8beb2;\r\n      box-shadow: 0 12px 28px rgba(16,39,31,0.08);\r\n      transform: translateY(-3px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-destination-card p {\r\n      color: var(--htg-muted);\r\n      font-size: 0.92rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-destination-card a {\r\n      color: var(--htg-green-700);\r\n      font-size: 0.88rem;\r\n      font-weight: 850;\r\n      text-decoration: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-destination-card a:hover {\r\n      text-decoration: underline;\r\n    }\r\n\r\n    #ht-gallery-page .htg-related-guides {\r\n      margin: 38px 0;\r\n      padding: 26px;\r\n      border: 1px solid var(--htg-border);\r\n      border-radius: var(--htg-radius-md);\r\n      background: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-related-guides h2 {\r\n      margin-bottom: 10px;\r\n      font-size: clamp(1.45rem, 3vw, 2rem);\r\n    }\r\n\r\n    #ht-gallery-page .htg-related-guides p {\r\n      color: var(--htg-muted);\r\n    }\r\n\r\n    #ht-gallery-page .htg-related-guides__links {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 10px;\r\n      margin-top: 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-related-guides__links a {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      min-height: 42px;\r\n      padding: 9px 15px;\r\n      border: 1px solid var(--htg-border);\r\n      border-radius: 999px;\r\n      color: var(--htg-green-800);\r\n      font-size: 0.9rem;\r\n      font-weight: 800;\r\n      text-decoration: none;\r\n      transition: border-color 180ms ease, background 180ms ease, transform 180ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-related-guides__links a:hover,\r\n    #ht-gallery-page .htg-related-guides__links a:focus-visible {\r\n      border-color: var(--htg-green-700);\r\n      background: var(--htg-green-100);\r\n      transform: translateY(-1px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-feature-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      gap: 18px;\r\n      margin-top: 28px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-feature {\r\n      padding: 23px;\r\n      border-radius: var(--htg-radius-md);\r\n      background: rgba(255,255,255,0.72);\r\n      box-shadow: inset 0 0 0 1px rgba(23,56,45,0.08);\r\n    }\r\n\r\n    #ht-gallery-page .htg-feature__number {\r\n      display: grid;\r\n      width: 42px;\r\n      height: 42px;\r\n      place-items: center;\r\n      margin-bottom: 17px;\r\n      border-radius: 50%;\r\n      background: var(--htg-green-900);\r\n      color: var(--htg-white);\r\n      font-weight: 850;\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq-list {\r\n      display: grid;\r\n      max-width: 940px;\r\n      gap: 12px;\r\n      margin: 30px auto 0;\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq {\r\n      overflow: hidden;\r\n      border: 1px solid var(--htg-border);\r\n      border-radius: var(--htg-radius-md);\r\n      background: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq summary {\r\n      position: relative;\r\n      padding: 19px 56px 19px 21px;\r\n      color: var(--htg-green-950);\r\n      cursor: pointer;\r\n      font-weight: 820;\r\n      list-style: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq summary::-webkit-details-marker {\r\n      display: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq summary::after {\r\n      position: absolute;\r\n      top: 50%;\r\n      right: 20px;\r\n      display: grid;\r\n      width: 28px;\r\n      height: 28px;\r\n      place-items: center;\r\n      border-radius: 50%;\r\n      background: var(--htg-green-100);\r\n      color: var(--htg-green-800);\r\n      content: \"+\";\r\n      font-size: 1.15rem;\r\n      transform: translateY(-50%);\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq[open] summary::after {\r\n      content: \"\u2212\";\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq__answer {\r\n      padding: 0 21px 20px;\r\n      color: var(--htg-muted);\r\n    }\r\n\r\n    #ht-gallery-page .htg-faq__answer p:last-child {\r\n      margin-bottom: 0;\r\n    }\r\n\r\n    #ht-gallery-page .htg-cta {\r\n      position: relative;\r\n      overflow: hidden;\r\n      padding: 54px;\r\n      border-radius: var(--htg-radius-lg);\r\n      background: linear-gradient(135deg, var(--htg-green-950), var(--htg-green-700));\r\n      color: #e8f2ed;\r\n      box-shadow: var(--htg-shadow);\r\n    }\r\n\r\n    #ht-gallery-page .htg-cta::after {\r\n      position: absolute;\r\n      top: -80px;\r\n      right: -70px;\r\n      width: 280px;\r\n      height: 280px;\r\n      border: 55px solid rgba(255,255,255,0.045);\r\n      border-radius: 50%;\r\n      content: \"\";\r\n    }\r\n\r\n    #ht-gallery-page .htg-cta h2 {\r\n      max-width: 760px;\r\n      color: var(--htg-white);\r\n    }\r\n\r\n    #ht-gallery-page .htg-cta p {\r\n      position: relative;\r\n      z-index: 1;\r\n      max-width: 730px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-cta .htg-hero__actions {\r\n      position: relative;\r\n      z-index: 1;\r\n      margin-top: 24px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox {\r\n      position: fixed;\r\n      z-index: 999999;\r\n      inset: 0;\r\n      display: none;\r\n      background: rgba(4, 14, 10, 0.94);\r\n      color: var(--htg-white);\r\n      backdrop-filter: blur(7px);\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox.is-open {\r\n      display: grid;\r\n      grid-template-rows: auto minmax(0, 1fr) auto;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__top {\r\n      display: flex;\r\n      min-height: 68px;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 20px;\r\n      padding: 12px 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__counter {\r\n      color: #d4e2da;\r\n      font-size: 0.9rem;\r\n      font-weight: 750;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__close,\r\n    #ht-gallery-page .htg-lightbox__nav {\r\n      display: grid;\r\n      width: 46px;\r\n      height: 46px;\r\n      place-items: center;\r\n      border: 1px solid rgba(255,255,255,0.22);\r\n      border-radius: 50%;\r\n      background: rgba(255,255,255,0.09);\r\n      color: var(--htg-white);\r\n      cursor: pointer;\r\n      transition: 180ms ease;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__close:hover,\r\n    #ht-gallery-page .htg-lightbox__nav:hover,\r\n    #ht-gallery-page .htg-lightbox__close:focus-visible,\r\n    #ht-gallery-page .htg-lightbox__nav:focus-visible {\r\n      outline: none;\r\n      background: rgba(255,255,255,0.18);\r\n      transform: scale(1.04);\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__stage {\r\n      position: relative;\r\n      display: grid;\r\n      min-height: 0;\r\n      place-items: center;\r\n      padding: 8px 76px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__image {\r\n      display: block;\r\n      max-width: min(1180px, 100%);\r\n      max-height: calc(100vh - 220px);\r\n      border-radius: 12px;\r\n      object-fit: contain;\r\n      box-shadow: 0 24px 70px rgba(0,0,0,0.45);\r\n      user-select: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__nav {\r\n      position: absolute;\r\n      top: 50%;\r\n      transform: translateY(-50%);\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__nav:hover {\r\n      transform: translateY(-50%) scale(1.04);\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__nav--prev {\r\n      left: 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__nav--next {\r\n      right: 18px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__footer {\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) auto;\r\n      gap: 20px;\r\n      align-items: center;\r\n      padding: 15px 22px 22px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__caption {\r\n      max-width: 900px;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__caption strong {\r\n      display: block;\r\n      margin-bottom: 2px;\r\n      font-size: 1rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__caption span {\r\n      color: #cbdad2;\r\n      font-size: 0.86rem;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__link {\r\n      color: #f1c47c;\r\n      font-size: 0.88rem;\r\n      font-weight: 820;\r\n      text-decoration: none;\r\n    }\r\n\r\n    #ht-gallery-page .htg-lightbox__link:hover {\r\n      text-decoration: underline;\r\n    }\r\n\r\n    body.htg-no-scroll {\r\n      overflow: hidden !important;\r\n    }\r\n\r\n    @media (max-width: 1024px) {\r\n      #ht-gallery-page .htg-grid,\r\n      #ht-gallery-page .htg-skeleton-grid {\r\n        grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      }\r\n\r\n      #ht-gallery-page .htg-destinations,\r\n      #ht-gallery-page .htg-feature-grid {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n      }\r\n\r\n      #ht-gallery-page .htg-content-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #ht-gallery-page .htg-side-card {\r\n        position: static;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 760px) {\r\n      #ht-gallery-page .htg-section {\r\n        padding: 64px 0;\r\n      }\r\n\r\n      #ht-gallery-page .htg-hero {\r\n        min-height: 600px;\r\n        background-position: 58% center;\r\n      }\r\n\r\n      #ht-gallery-page .htg-hero__content {\r\n        padding: 82px 0 48px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-heading-row,\r\n      #ht-gallery-page .htg-category-panel {\r\n        grid-template-columns: 1fr;\r\n        gap: 12px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-category-link {\r\n        white-space: normal;\r\n      }\r\n\r\n      #ht-gallery-page .htg-grid,\r\n      #ht-gallery-page .htg-skeleton-grid {\r\n        grid-template-columns: repeat(2, minmax(0, 1fr));\r\n        gap: 12px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-destinations,\r\n      #ht-gallery-page .htg-feature-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #ht-gallery-page .htg-stats {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #ht-gallery-page .htg-stat {\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: space-between;\r\n        gap: 16px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-card__body {\r\n        padding: 36px 12px 12px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-card__title {\r\n        font-size: 0.88rem;\r\n      }\r\n\r\n      #ht-gallery-page .htg-cta {\r\n        padding: 36px 25px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-lightbox__stage {\r\n        padding: 6px 54px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-lightbox__footer {\r\n        grid-template-columns: 1fr;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 480px) {\r\n      #ht-gallery-page .htg-wrap {\r\n        width: min(100% - 22px, 1180px);\r\n      }\r\n\r\n      #ht-gallery-page .htg-hero__actions .htg-btn {\r\n        width: 100%;\r\n      }\r\n\r\n      #ht-gallery-page .htg-grid,\r\n      #ht-gallery-page .htg-skeleton-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      #ht-gallery-page .htg-card img,\r\n      #ht-gallery-page .htg-skeleton {\r\n        aspect-ratio: 16 \/ 11;\r\n      }\r\n\r\n      #ht-gallery-page .htg-lightbox__stage {\r\n        padding: 6px 10px;\r\n      }\r\n\r\n      #ht-gallery-page .htg-lightbox__nav {\r\n        top: auto;\r\n        bottom: 10px;\r\n        transform: none;\r\n      }\r\n\r\n      #ht-gallery-page .htg-lightbox__nav:hover {\r\n        transform: scale(1.04);\r\n      }\r\n\r\n      #ht-gallery-page .htg-lightbox__image {\r\n        max-height: calc(100vh - 250px);\r\n      }\r\n    }\r\n\r\n    @media (prefers-reduced-motion: reduce) {\r\n      #ht-gallery-page *,\r\n      #ht-gallery-page *::before,\r\n      #ht-gallery-page *::after {\r\n        scroll-behavior: auto !important;\r\n        animation-duration: 0.01ms !important;\r\n        animation-iteration-count: 1 !important;\r\n        transition-duration: 0.01ms !important;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <header class=\"htg-hero\">\r\n    <div class=\"htg-wrap htg-hero__content\">\r\n      <p class=\"htg-eyebrow\">Breathe the Heights, Live the Trails<\/p>\r\n      <h1>Himachal Pradesh Travel Gallery<\/h1>\r\n      <p class=\"htg-lead\">\r\n        Explore the mountains, valleys, villages, monasteries, lakes and road journeys that define the western Himalayas. Browse the HimTrails photo collection by destination and open any image in an immersive, mobile-friendly lightbox.\r\n      <\/p>\r\n      <div class=\"htg-hero__actions\">\r\n        <button id=\"htg-scroll-gallery\" class=\"htg-btn htg-btn--gold\" type=\"button\">Explore the gallery \u2193<\/button>\r\n        <a class=\"htg-btn htg-btn--ghost\" href=\"\/himachal-pradesh-tour-packages\/\">View Himachal tour packages<\/a>\r\n      <\/div>\r\n      <div class=\"htg-stats\" aria-label=\"Gallery highlights\">\r\n        <div class=\"htg-stat\"><strong>12<\/strong><span>Major destinations<\/span><\/div>\r\n        <div class=\"htg-stat\"><strong>14<\/strong><span>Photo collections<\/span><\/div>\r\n        <div class=\"htg-stat\"><strong>\u221e<\/strong><span>Mountain memories<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <main>\r\n    <section id=\"himtrails-photo-gallery\" class=\"htg-section\" aria-labelledby=\"htg-gallery-title\">\r\n      <div class=\"htg-wrap\">\r\n        <div class=\"htg-heading-row\">\r\n          <div>\r\n            <p class=\"htg-eyebrow\">Destination photo collection<\/p>\r\n            <h2 id=\"htg-gallery-title\">Browse Himachal Pradesh Travel Photos<\/h2>\r\n          <\/div>\r\n          <p>\r\n            Choose a destination to see matching photographs \u2014 from snow passes and monasteries to rivers, villages and long Himalayan road journeys. Every image opens in a full-screen viewer.\r\n          <\/p>\r\n        <\/div>\r\n\r\n        <div class=\"htg-filter-shell\">\r\n          <div id=\"htg-filters\" class=\"htg-filters\" role=\"group\" aria-label=\"Filter travel photos by destination\"><\/div>\r\n        <\/div>\r\n\r\n        <div class=\"htg-category-panel\">\r\n          <div>\r\n            <h3 id=\"htg-category-title\">All HimTrails<\/h3>\r\n            <p id=\"htg-category-description\">A mixed collection of destination, landscape, culture and adventure photographs from across Himachal Pradesh and connected Himalayan routes.<\/p>\r\n          <\/div>\r\n          <a id=\"htg-category-link\" class=\"htg-category-link\" href=\"\/himachal-pradesh-tour-packages\/\">Explore Himachal packages \u2192<\/a>\r\n        <\/div>\r\n\r\n        <div class=\"htg-toolbar\">\r\n          <p id=\"htg-status\" class=\"htg-status\" role=\"status\" aria-live=\"polite\">Preparing the photo gallery\u2026<\/p>\r\n          <button id=\"htg-refresh\" class=\"htg-refresh\" type=\"button\" hidden>Try again<\/button>\r\n        <\/div>\r\n\r\n        <div id=\"htg-skeletons\" class=\"htg-skeleton-grid\" aria-hidden=\"true\">\r\n          <div class=\"htg-skeleton\"><\/div><div class=\"htg-skeleton\"><\/div><div class=\"htg-skeleton\"><\/div><div class=\"htg-skeleton\"><\/div>\r\n          <div class=\"htg-skeleton\"><\/div><div class=\"htg-skeleton\"><\/div><div class=\"htg-skeleton\"><\/div><div class=\"htg-skeleton\"><\/div>\r\n        <\/div>\r\n\r\n        <div id=\"htg-grid\" class=\"htg-grid\" aria-label=\"Travel photograph results\"><\/div>\r\n\r\n        <noscript>\r\n          <div class=\"htg-empty\"><strong>JavaScript is required to load the live photo grid.<\/strong> The destination guides and all written travel information below remain available.<\/div>\r\n        <\/noscript>\r\n\r\n        <!-- Admin note: an image appears in a collection when the destination name is present\r\n             in its Media Library filename, title, alt text, caption or description. -->\r\n        <div id=\"htg-empty\" class=\"htg-empty\" hidden>\r\n          <strong>No photographs in this collection yet.<\/strong>\r\n          New destination photos are added regularly \u2014 please try another collection or browse the full All HimTrails set.\r\n        <\/div>\r\n\r\n        <div class=\"htg-load-more-wrap\">\r\n          <button id=\"htg-load-more\" class=\"htg-btn htg-btn--green htg-load-more\" type=\"button\" hidden>Load more photos<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"htg-section htg-section--cream\" aria-labelledby=\"htg-explore-title\">\r\n      <div class=\"htg-wrap htg-content-grid\">\r\n        <article class=\"htg-prose\">\r\n          <p class=\"htg-eyebrow\">Visual travel inspiration<\/p>\r\n          <h2 id=\"htg-explore-title\">Explore Himachal Pradesh Through Pictures<\/h2>\r\n          <p>\r\n            A thoughtfully organised <strong>Himachal Pradesh Travel Gallery<\/strong> helps travellers understand how dramatically the landscape changes from one valley to another. Manali combines cedar forests, the Beas River and snow routes toward Rohtang. Spiti Valley replaces green slopes with high-altitude desert, ancient monasteries and villages beneath vast skies. Shimla offers heritage streets and ridge views, while Kasol, Jibhi and Tirthan Valley reveal a quieter world of rivers, pine forest and small Himalayan settlements.\r\n          <\/p>\r\n          <p>\r\n            This Himachal Pradesh photo gallery brings those contrasts together in one place. The images can help couples choose a romantic hill station, families compare accessible sightseeing areas, groups shortlist adventure activities and photographers identify the landscapes they most want to capture. Every destination button above opens a focused set of Himachal Pradesh travel photos without moving visitors away from the page.\r\n          <\/p>\r\n\r\n          <h2>Popular Places Featured in the Himachal Photo Gallery<\/h2>\r\n          <p>\r\n            The collection follows the twelve primary destinations already covered across the HimTrails website. Start with the <a href=\"\/destinations-in-himachal-pradesh\/\">complete guide to destinations in Himachal Pradesh<\/a>, then use the gallery for inspiration and open the corresponding destination guide for practical information about weather, sightseeing, routes, stays and trip planning.\r\n          <\/p>\r\n\r\n          <div class=\"htg-destinations\">\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Manali<\/h3>\r\n              <p>Snow routes, cedar forests, river scenery, temples, Solang Valley and the approach to Rohtang Pass.<\/p>\r\n              <a href=\"\/destination\/manali\/\">Explore the Manali travel guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Leh Ladakh<\/h3>\r\n              <p>High passes, monasteries, stark mountain roads, Pangong landscapes and Himalayan bike journeys.<\/p>\r\n              <a href=\"\/destination\/leh-ladakh\/\">Explore the Leh Ladakh guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Spiti Valley<\/h3>\r\n              <p>Cold-desert valleys, Key Monastery, Kaza, Chandratal and remote high-altitude villages.<\/p>\r\n              <a href=\"\/destination\/spiti\/\">Explore the Spiti Valley guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Kasol<\/h3>\r\n              <p>Parvati River views, forest trails, Manikaran, village walks and trekking routes around the valley.<\/p>\r\n              <a href=\"\/destination\/kasol\/\">Explore the Kasol travel guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Jibhi<\/h3>\r\n              <p>Wooden houses, waterfalls, woodland trails, Shoja and the scenic route toward Jalori Pass.<\/p>\r\n              <a href=\"\/destination\/jibhi\/\">Explore the Jibhi travel guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Kinnaur<\/h3>\r\n              <p>Chitkul, Sangla, Kalpa, apple country, dramatic roads and the valleys of the upper Sutlej.<\/p>\r\n              <a href=\"\/destination\/kinnaur\/\">Explore the Kinnaur travel guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Dharamshala<\/h3>\r\n              <p>Dhauladhar views, Tibetan culture, McLeodganj, monasteries and mountain trails toward Triund.<\/p>\r\n              <a href=\"\/destination\/dharamshala\/\">Explore the Dharamshala guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Bir Billing<\/h3>\r\n              <p>Paragliding, Tibetan monasteries, open valley views, tea-country scenery and colourful sunsets.<\/p>\r\n              <a href=\"\/destination\/bir-billing\/\">Explore the Bir Billing guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Tirthan Valley<\/h3>\r\n              <p>Clear rivers, trout streams, forest villages and landscapes near the Great Himalayan National Park.<\/p>\r\n              <a href=\"\/destination\/tirthan-valley\/\">Explore the Tirthan Valley guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Shimla<\/h3>\r\n              <p>Colonial architecture, heritage streets, ridge views, toy-train scenes and surrounding cedar forests.<\/p>\r\n              <a href=\"\/destination\/shimla\/\">Explore the Shimla travel guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Narkanda<\/h3>\r\n              <p>Winter snow, skiing slopes, Hatu Peak, orchards and quiet landscapes along the old Tibet road.<\/p>\r\n              <a href=\"\/destination\/narkanda\/\">Explore the Narkanda guide \u2192<\/a>\r\n            <\/article>\r\n            <article class=\"htg-destination-card\">\r\n              <h3>Chamba<\/h3>\r\n              <p>Temple heritage, old Himalayan towns, Khajjiar, Dalhousie, Bharmour and mountain meadows.<\/p>\r\n              <a href=\"\/destination\/chamba\/\">Explore the Chamba travel guide \u2192<\/a>\r\n            <\/article>\r\n          <\/div>\r\n\r\n          <nav class=\"htg-related-guides\" aria-label=\"Related HimTrails travel guides\">\r\n            <h2>Explore More Himachal Travel Guides<\/h2>\r\n            <p>Continue planning with these detailed HimTrails resources:<\/p>\r\n            <div class=\"htg-related-guides__links\">\r\n              <a href=\"\/destinations-in-himachal-pradesh\/\">Destinations in Himachal Pradesh<\/a>\r\n              <a href=\"\/himachal-pradesh-tour-packages\/\">Himachal Pradesh tour packages<\/a>\r\n              <a href=\"\/attractions-in-himachal-pradesh\/\">Attractions in Himachal Pradesh<\/a>\r\n              <a href=\"\/activities-in-himachal-pradesh\/\">Activities in Himachal Pradesh<\/a>\r\n              <a href=\"\/treks-in-himachal-pradesh\/\">Treks in Himachal Pradesh<\/a>\r\n              <a href=\"\/himachal-trek-map\/\">Himachal trek map<\/a>\r\n              <a href=\"\/himachal-trip-itinerary-planner\/\">Trip itinerary planner<\/a>\r\n              <a href=\"\/contact-himtrails\/\">Contact HimTrails<\/a>\r\n            <\/div>\r\n          <\/nav>\r\n\r\n          <h2>Hidden Gems and Other Best Places to Visit in Himachal Pradesh<\/h2>\r\n          <p>\r\n            Not every memorable stop needs a separate major-destination category. The <strong>Hidden Gems &amp; Other Places<\/strong> filter is designed for attraction-level images such as Rohtang Pass, Solang Valley, Chandratal Lake, Atal Tunnel, Sissu, Jalori Pass, Serolsar Lake, Chitkul, Kalpa, Khajjiar, Kufri, Triund, Kheerganga, Barot Valley and Prashar Lake. When one of these names appears in a photograph's details, the image can appear in this collection as well as its relevant main destination.\r\n          <\/p>\r\n          <p>\r\n            This overlapping structure is useful for travellers. A Rohtang Pass image belongs in the Manali collection because Manali is the usual travel base, but it also deserves a place among Himachal's individual attractions. The result is a more complete set of Himachal tourist places images without creating dozens of confusing filters.\r\n          <\/p>\r\n\r\n          <h2>What You Can Discover in These Himachal Pradesh Travel Photos<\/h2>\r\n          <div class=\"htg-feature-grid\">\r\n            <article class=\"htg-feature\"><span class=\"htg-feature__number\">01<\/span><h3>Snow and Mountain Views<\/h3><p>Winter hill stations, high passes, snowy roads and Himalayan ridgelines from Manali, Shimla, Narkanda, Spiti and Ladakh.<\/p><\/article>\r\n            <article class=\"htg-feature\"><span class=\"htg-feature__number\">02<\/span><h3>Valleys, Rivers and Forests<\/h3><p>Parvati Valley, Tirthan River, the Beas, orchard country, pine forest and the changing greens of lower Himachal.<\/p><\/article>\r\n            <article class=\"htg-feature\"><span class=\"htg-feature__number\">03<\/span><h3>Temples and Monasteries<\/h3><p>Himachali temple architecture, Buddhist monasteries, Tibetan cultural spaces and centuries-old sacred sites.<\/p><\/article>\r\n            <article class=\"htg-feature\"><span class=\"htg-feature__number\">04<\/span><h3>Adventure Experiences<\/h3><p>Paragliding, rafting, trekking, skiing, camping, mountain biking and long-distance Himalayan road trips.<\/p><\/article>\r\n            <article class=\"htg-feature\"><span class=\"htg-feature__number\">05<\/span><h3>Villages and Local Culture<\/h3><p>Traditional homes, village lanes, mountain livelihoods, regional architecture and the everyday character of Himachal.<\/p><\/article>\r\n            <article class=\"htg-feature\"><span class=\"htg-feature__number\">06<\/span><h3>Lakes and Hidden Places<\/h3><p>High-altitude lakes, waterfalls, forest clearings, small settlements and attractions beyond the standard sightseeing circuit.<\/p><\/article>\r\n          <\/div>\r\n\r\n          <h2>Plan Your Himachal Journey With a Local Travel Team<\/h2>\r\n          <p>\r\n            A gallery is most useful when it leads to a journey that suits the traveller. HimTrails can combine the places you like into a customised route based on your dates, group size, preferred hotel category, transport needs and pace of travel. A first-time family may prefer Shimla and Manali, while an adventure group may combine Kinnaur and Spiti. Couples often choose a slower route through Jibhi, Tirthan Valley or the forests around Dharamshala.\r\n          <\/p>\r\n          <p>\r\n            Use the images to shortlist your favourite scenery, then share the destination names with the HimTrails team. You can also explore the detailed guide to <a href=\"\/attractions-in-himachal-pradesh\/\">attractions in Himachal Pradesh<\/a>, view the <a href=\"\/himachal-trek-map\/\">Himachal trek map<\/a> or compare complete <a href=\"\/himachal-pradesh-tour-packages\/\">Himachal Pradesh tour packages<\/a> before requesting a personalised itinerary.\r\n          <\/p>\r\n        <\/article>\r\n\r\n        <aside class=\"htg-side-card\" aria-label=\"HimTrails trip planning\">\r\n          <p class=\"htg-eyebrow\">From photo to itinerary<\/p>\r\n          <h3>Seen a place you would love to visit?<\/h3>\r\n          <p>Share your preferred destinations and get a customised Himachal route built around your travel dates and budget.<\/p>\r\n          <ul>\r\n            <li>Custom destination combinations<\/li>\r\n            <li>Hotel and transport planning<\/li>\r\n            <li>Local sightseeing support<\/li>\r\n            <li>Couple, family and group tours<\/li>\r\n          <\/ul>\r\n          <a class=\"htg-btn htg-btn--gold\" href=\"\/contact-himtrails\/\">Request a customised itinerary<\/a>\r\n        <\/aside>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"htg-section\" aria-labelledby=\"htg-faq-title\">\r\n      <div class=\"htg-wrap\">\r\n        <div style=\"max-width: 820px; margin-inline: auto; text-align: center;\">\r\n          <p class=\"htg-eyebrow\">Travel gallery FAQs<\/p>\r\n          <h2 id=\"htg-faq-title\">Frequently Asked Questions<\/h2>\r\n          <p style=\"color: var(--htg-muted);\">Helpful answers about the Himachal Pradesh Travel Gallery, destination photographs and planning a trip with HimTrails.<\/p>\r\n        <\/div>\r\n\r\n        <div class=\"htg-faq-list\">\r\n          <details class=\"htg-faq\">\r\n            <summary>What is included in the Himachal Pradesh Travel Gallery?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>The gallery includes mountain landscapes, valleys, rivers, forests, villages, temples, monasteries, road journeys, adventure activities and seasonal photographs from Himachal Pradesh and connected Himalayan routes covered by HimTrails.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>Which destinations can I browse separately?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>You can filter images for Manali, Leh Ladakh, Spiti Valley, Kasol, Jibhi, Kinnaur, Dharamshala, Bir Billing, Tirthan Valley, Shimla, Narkanda and Chamba. There is also an All HimTrails collection and a Hidden Gems &amp; Other Places filter.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>Why is Leh Ladakh included in a Himachal travel gallery?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>Leh Ladakh is geographically outside Himachal Pradesh, but it is closely connected with Manali through the famous Manali\u2013Leh route and is an important part of many Himalayan road-trip itineraries planned by HimTrails.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>What appears under Hidden Gems &amp; Other Places?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>This filter is intended for specific attractions and smaller locations such as Rohtang Pass, Chandratal Lake, Atal Tunnel, Solang Valley, Sissu, Jalori Pass, Khajjiar, Kufri, Triund, Chitkul, Kalpa and other named places beyond the twelve main destination groups.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>Can I open the travel photographs in a larger view?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>Yes. Select any photograph to open the lightbox. You can move through the current category with the previous and next controls, keyboard arrow keys or a horizontal swipe on a touch device.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>Are the images suitable for choosing a Himachal destination?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>The gallery is designed to provide visual inspiration and help you compare scenery, but trip decisions should also consider the season, road conditions, altitude, travel time and the needs of your group.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>What is the best time to photograph Himachal Pradesh?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>March to June is popular for green valleys and clear sightseeing, while September to November often brings crisp mountain views. December to February is suitable for snow photographs in places such as Manali, Shimla and Narkanda. High-altitude routes usually have a shorter summer season.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>Can HimTrails create a trip based on places I select from the gallery?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>Yes. Share the destination or attraction names you like, along with your dates, budget and group details. The HimTrails team can suggest a practical route, stays, transport and sightseeing plan.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>How often are new photographs added to the gallery?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>The gallery updates automatically as new destination photographs are published on the HimTrails website, so fresh images from recent seasons and journeys appear in their matching collections without any change to this page.<\/p><\/div>\r\n          <\/details>\r\n          <details class=\"htg-faq\">\r\n            <summary>May I reuse photographs from the HimTrails gallery?<\/summary>\r\n            <div class=\"htg-faq__answer\"><p>Images should not be downloaded, republished or used commercially without permission from the copyright owner. Contact HimTrails before requesting editorial, promotional or partnership use.<\/p><\/div>\r\n          <\/details>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"htg-section htg-section--cream\">\r\n      <div class=\"htg-wrap\">\r\n        <div class=\"htg-cta\">\r\n          <p class=\"htg-eyebrow\">Plan your mountain escape<\/p>\r\n          <h2>Turn Your Favourite Himachal Travel Photos Into a Real Itinerary<\/h2>\r\n          <p>Tell HimTrails which destinations caught your attention. Get a customised route for couples, families, friends or groups with local planning support from Shimla.<\/p>\r\n          <div class=\"htg-hero__actions\">\r\n            <a class=\"htg-btn htg-btn--gold\" href=\"\/contact-himtrails\/\">Request a customised itinerary<\/a>\r\n            <a class=\"htg-btn htg-btn--ghost\" href=\"\/himachal-pradesh-tour-packages\/\">View Himachal tour packages<\/a>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n  <\/main>\r\n\r\n  <div id=\"htg-lightbox\" class=\"htg-lightbox\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"htg-lightbox-title\" aria-hidden=\"true\">\r\n    <div class=\"htg-lightbox__top\">\r\n      <span id=\"htg-lightbox-counter\" class=\"htg-lightbox__counter\">1 of 1<\/span>\r\n      <button id=\"htg-lightbox-close\" class=\"htg-lightbox__close\" type=\"button\" aria-label=\"Close image viewer\">\r\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\r\n      <\/button>\r\n    <\/div>\r\n    <div id=\"htg-lightbox-stage\" class=\"htg-lightbox__stage\">\r\n      <button id=\"htg-lightbox-prev\" class=\"htg-lightbox__nav htg-lightbox__nav--prev\" type=\"button\" aria-label=\"Previous image\">\r\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 5l-7 7 7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n      <\/button>\r\n      <img decoding=\"async\" id=\"htg-lightbox-image\" class=\"htg-lightbox__image\" src=\"\" alt=\"\">\r\n      <button id=\"htg-lightbox-next\" class=\"htg-lightbox__nav htg-lightbox__nav--next\" type=\"button\" aria-label=\"Next image\">\r\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 5l7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n      <\/button>\r\n    <\/div>\r\n    <div class=\"htg-lightbox__footer\">\r\n      <div class=\"htg-lightbox__caption\">\r\n        <strong id=\"htg-lightbox-title\"><\/strong>\r\n        <span id=\"htg-lightbox-meta\"><\/span>\r\n      <\/div>\r\n      <a id=\"htg-lightbox-link\" class=\"htg-lightbox__link\" href=\"\/himachal-pradesh-tour-packages\/\">Explore destination \u2192<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- FAQPage schema. Do not also enable Rank Math \/ Elementor FAQ schema on this page. -->\r\n  <script type=\"application\/ld+json\">\r\n  {\r\n    \"@context\": \"https:\/\/schema.org\",\r\n    \"@type\": \"FAQPage\",\r\n    \"mainEntity\": [\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"What is included in the Himachal Pradesh Travel Gallery?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"The gallery includes mountain landscapes, valleys, rivers, forests, villages, temples, monasteries, road journeys, adventure activities and seasonal photographs from Himachal Pradesh and connected Himalayan routes covered by HimTrails.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"Which destinations can I browse separately?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"You can filter images for Manali, Leh Ladakh, Spiti Valley, Kasol, Jibhi, Kinnaur, Dharamshala, Bir Billing, Tirthan Valley, Shimla, Narkanda and Chamba. There is also an All HimTrails collection and a Hidden Gems and Other Places filter.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"Why is Leh Ladakh included in a Himachal travel gallery?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Leh Ladakh is geographically outside Himachal Pradesh, but it is closely connected with Manali through the Manali\u2013Leh route and is an important part of many Himalayan road-trip itineraries planned by HimTrails.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"What appears under Hidden Gems and Other Places?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"This filter is intended for specific attractions and smaller locations such as Rohtang Pass, Chandratal Lake, Atal Tunnel, Solang Valley, Sissu, Jalori Pass, Khajjiar, Kufri, Triund, Chitkul and Kalpa.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"Can I open the travel photographs in a larger view?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Yes. Select any photograph to open the lightbox. You can move through the current category with the previous and next controls, keyboard arrow keys or a horizontal swipe on a touch device.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"Are the images suitable for choosing a Himachal destination?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"The gallery provides visual inspiration and helps you compare scenery, but trip decisions should also consider the season, road conditions, altitude, travel time and the needs of your group.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"What is the best time to photograph Himachal Pradesh?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"March to June is popular for green valleys and clear sightseeing, September to November often brings crisp mountain views, and December to February is suitable for snow photographs in selected hill stations.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"Can HimTrails create a trip based on places I select from the gallery?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Yes. Share the destination or attraction names you like, along with your dates, budget and group details. The HimTrails team can suggest a practical route, stays, transport and sightseeing plan.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"How often are new photographs added to the gallery?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"The gallery updates automatically as new destination photographs are published on the HimTrails website, so fresh images from recent seasons and journeys appear in their matching collections.\"}\r\n      },\r\n      {\r\n        \"@type\": \"Question\",\r\n        \"name\": \"May I reuse photographs from the HimTrails gallery?\",\r\n        \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Images should not be downloaded, republished or used commercially without permission from the copyright owner. Contact HimTrails before requesting editorial, promotional or partnership use.\"}\r\n      }\r\n    ]\r\n  }\r\n  <\/script>\r\n\r\n  <!-- CollectionPage + ImageGallery schema: gives Google crawlable image URLs even\r\n       though the live grid is rendered with JavaScript. Rank Math outputs WebPage\r\n       schema by default, not CollectionPage, so this does not duplicate it. -->\r\n  <script type=\"application\/ld+json\">\r\n  {\r\n    \"@context\": \"https:\/\/schema.org\",\r\n    \"@type\": \"CollectionPage\",\r\n    \"name\": \"Himachal Pradesh Travel Gallery\",\r\n    \"url\": \"https:\/\/himtrails.in\/himachal-pradesh-travel-gallery\/\",\r\n    \"description\": \"Browse Himachal Pradesh travel photos by destination \u2014 Manali, Shimla, Spiti Valley, Kasol, Kinnaur, Dharamshala and more, with hidden gems and Himalayan road journeys.\",\r\n    \"inLanguage\": \"en\",\r\n    \"isPartOf\": {\r\n      \"@type\": \"WebSite\",\r\n      \"name\": \"HimTrails\",\r\n      \"url\": \"https:\/\/himtrails.in\/\"\r\n    },\r\n    \"mainEntity\": {\r\n      \"@type\": \"ImageGallery\",\r\n      \"name\": \"HimTrails Himachal Pradesh Photo Collection\",\r\n      \"image\": [\r\n        \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Kothi-Village.jpg\",\r\n        \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Rohtang-Pass.jpg\",\r\n        \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Paragliding-in-Himachal-Pradesh.jpg\",\r\n        \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Trout-Fishing-in-Himachal-Pradesh.jpg\",\r\n        \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Skiing-in-Himachal-Pradesh.jpg\",\r\n        \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/River-Rafting-in-Himachal-Pradesh-1536x864.jpg\"\r\n      ]\r\n    }\r\n  }\r\n  <\/script>\r\n\r\n  <script>\r\n  (() => {\r\n    \"use strict\";\r\n\r\n    const root = document.getElementById(\"ht-gallery-page\");\r\n    if (!root || root.dataset.galleryInitialised === \"true\") return;\r\n    root.dataset.galleryInitialised = \"true\";\r\n\r\n    \/* ==============================================================\r\n       EDITABLE SETTINGS\r\n       ============================================================== *\/\r\n    const CONFIG = {\r\n      useWordPressMediaLibrary: true,\r\n      apiEndpoint: \"\/wp-json\/wp\/v2\/media\",\r\n      itemsPerPage: 12,        \/\/ photos shown per \"Load more\" step\r\n      apiItemsPerPage: 100,    \/\/ WordPress REST maximum\r\n      maxApiPages: 12,         \/\/ up to 1200 newest media items scanned\r\n      apiBatchSize: 4,         \/\/ pages fetched at a time (gentle on the server)\r\n      minimumWidth: 450,\r\n      minimumHeight: 260,\r\n      cacheMinutes: 360,       \/\/ 6 hours \u2014 media libraries change slowly\r\n      cacheKey: \"himtrailsGalleryMediaV4\"\r\n    };\r\n\r\n    \/*\r\n      Manual fallback images.\r\n      Shown only when the WordPress Media endpoint is unavailable.\r\n      Add more objects in the same format when needed.\r\n    *\/\r\n    const MANUAL_FALLBACK_IMAGES = [\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Manali-Logo.jpeg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Manali-Logo.jpeg\",\r\n        alt: \"Manali travel photos including mountains, forest and Atal Tunnel\",\r\n        caption: \"Manali \u2014 mountains, forests and high-altitude routes\",\r\n        categories: [\"manali\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Leh-Logo.webp\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Leh-Logo.webp\",\r\n        alt: \"Leh Ladakh travel photos and Himalayan bike journey\",\r\n        caption: \"Leh Ladakh \u2014 high passes and road-trip landscapes\",\r\n        categories: [\"leh-ladakh\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Spiti-Logo-scaled.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Spiti-Logo-scaled.jpg\",\r\n        alt: \"Spiti Valley travel photos with monastery and night sky\",\r\n        caption: \"Spiti Valley \u2014 monasteries, cold desert and starry skies\",\r\n        categories: [\"spiti-valley\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Kasol-Logo-scaled.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Kasol-Logo-scaled.jpg\",\r\n        alt: \"Kasol travel photos with Parvati River and mountain forest\",\r\n        caption: \"Kasol \u2014 Parvati Valley rivers and forest scenery\",\r\n        categories: [\"kasol\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Shimla-Logo-scaled.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2025\/06\/Shimla-Logo-scaled.jpg\",\r\n        alt: \"Shimla travel photos with heritage railway and Christ Church\",\r\n        caption: \"Shimla \u2014 heritage architecture and mountain railway\",\r\n        categories: [\"shimla\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Rohtang-Pass.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Rohtang-Pass.jpg\",\r\n        alt: \"Snow mountains at Rohtang Pass near Manali Himachal Pradesh\",\r\n        caption: \"Rohtang Pass near Manali\",\r\n        categories: [\"manali\", \"other-places\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Kothi-Village.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Kothi-Village.jpg\",\r\n        alt: \"Kothi Village mountain view near Manali\",\r\n        caption: \"Kothi Village and the Manali valley\",\r\n        categories: [\"manali\", \"other-places\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Paragliding-in-Himachal-Pradesh.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Paragliding-in-Himachal-Pradesh.jpg\",\r\n        alt: \"Paragliding in Bir Billing Himachal Pradesh\",\r\n        caption: \"Paragliding over the Himalayan landscape\",\r\n        categories: [\"bir-billing\", \"other-places\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Trout-Fishing-in-Himachal-Pradesh.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Trout-Fishing-in-Himachal-Pradesh.jpg\",\r\n        alt: \"Trout fishing in Tirthan Valley Himachal Pradesh\",\r\n        caption: \"Trout fishing in the rivers of Himachal Pradesh\",\r\n        categories: [\"tirthan-valley\", \"other-places\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Skiing-in-Himachal-Pradesh.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/Skiing-in-Himachal-Pradesh.jpg\",\r\n        alt: \"Skiing and snow activities in Himachal Pradesh\",\r\n        caption: \"Winter skiing and snow landscapes\",\r\n        categories: [\"manali\", \"shimla\", \"narkanda\", \"other-places\"]\r\n      },\r\n      {\r\n        src: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/River-Rafting-in-Himachal-Pradesh-1536x864.jpg\",\r\n        full: \"https:\/\/himtrails.in\/wp-content\/uploads\/2026\/02\/River-Rafting-in-Himachal-Pradesh-1536x864.jpg\",\r\n        alt: \"River rafting adventure in Himachal Pradesh\",\r\n        caption: \"White-water rafting in Himachal Pradesh\",\r\n        categories: [\"manali\", \"tirthan-valley\", \"other-places\"]\r\n      }\r\n    ];\r\n\r\n    \/*\r\n      Category keywords are PLACE NAMES ONLY.\r\n      Activity words (skiing, paragliding, trout fishing) were removed in v4\r\n      because they mislabelled images \u2014 e.g. a Solang Valley skiing photo was\r\n      being tagged Narkanda. Activities still surface through place names.\r\n    *\/\r\n    const CATEGORIES = [\r\n      {\r\n        id: \"all\",\r\n        label: \"All HimTrails\",\r\n        title: \"All HimTrails\",\r\n        description: \"A mixed collection of destination, landscape, culture and adventure photographs from across Himachal Pradesh and connected Himalayan routes.\",\r\n        url: \"\/himachal-pradesh-tour-packages\/\",\r\n        linkLabel: \"Explore Himachal packages \u2192\",\r\n        keywords: []\r\n      },\r\n      {\r\n        id: \"manali\",\r\n        label: \"Manali\",\r\n        title: \"Manali Travel Photos\",\r\n        description: \"Browse photographs of Manali, Solang Valley, Rohtang Pass, Atal Tunnel, cedar forests, temples and the upper Beas Valley.\",\r\n        url: \"\/destination\/manali\/\",\r\n        linkLabel: \"Read the Manali travel guide \u2192\",\r\n        keywords: [\"manali\", \"solang\", \"rohtang\", \"atal tunnel\", \"vashisht\", \"hidimba\", \"hadimba\", \"old manali\", \"beas kund\", \"gulaba\", \"marhi\", \"kothi village\", \"hampta pass\"]\r\n      },\r\n      {\r\n        id: \"leh-ladakh\",\r\n        label: \"Leh Ladakh\",\r\n        title: \"Leh Ladakh Travel Photos\",\r\n        description: \"Explore high passes, monasteries, lakes and road-trip imagery from Leh, Ladakh and the Manali\u2013Leh Himalayan route.\",\r\n        url: \"\/destination\/leh-ladakh\/\",\r\n        linkLabel: \"Read the Leh Ladakh guide \u2192\",\r\n        keywords: [\"leh\", \"ladakh\", \"pangong\", \"nubra\", \"khardung\", \"tso moriri\", \"lamayuru\", \"alchi\", \"shanti stupa\", \"magnetic hill\", \"zanskar\", \"hanle\", \"chang la\"]\r\n      },\r\n      {\r\n        id: \"spiti-valley\",\r\n        label: \"Spiti Valley\",\r\n        title: \"Spiti Valley Travel Photos\",\r\n        description: \"View cold-desert mountains, monasteries, high villages, Chandratal and remote road journeys across Spiti Valley.\",\r\n        url: \"\/destination\/spiti\/\",\r\n        linkLabel: \"Read the Spiti Valley guide \u2192\",\r\n        keywords: [\"spiti\", \"kaza\", \"key monastery\", \"ki monastery\", \"tabo\", \"dhankar\", \"langza\", \"hikkim\", \"komic\", \"kibber\", \"pin valley\", \"chicham\", \"kunzum\", \"chandratal\"]\r\n      },\r\n      {\r\n        id: \"kasol\",\r\n        label: \"Kasol\",\r\n        title: \"Kasol Travel Photos\",\r\n        description: \"Discover the Parvati River, forest scenery, Manikaran and trekking villages around Kasol and the Parvati Valley.\",\r\n        url: \"\/destination\/kasol\/\",\r\n        linkLabel: \"Read the Kasol travel guide \u2192\",\r\n        keywords: [\"kasol\", \"parvati valley\", \"manikaran\", \"tosh\", \"kheerganga\", \"malana\", \"chalal\", \"grahan\"]\r\n      },\r\n      {\r\n        id: \"jibhi\",\r\n        label: \"Jibhi\",\r\n        title: \"Jibhi Travel Photos\",\r\n        description: \"Browse Jibhi, Shoja, Jalori Pass, forest trails, waterfalls and peaceful scenes from the Banjar Valley.\",\r\n        url: \"\/destination\/jibhi\/\",\r\n        linkLabel: \"Read the Jibhi travel guide \u2192\",\r\n        keywords: [\"jibhi\", \"shoja\", \"jalori\", \"serolsar\", \"banjar valley\", \"mini thailand\"]\r\n      },\r\n      {\r\n        id: \"kinnaur\",\r\n        label: \"Kinnaur\",\r\n        title: \"Kinnaur Travel Photos\",\r\n        description: \"Explore the roads, orchards, villages and mountain scenery of Chitkul, Sangla, Kalpa and the wider Kinnaur district.\",\r\n        url: \"\/destination\/kinnaur\/\",\r\n        linkLabel: \"Read the Kinnaur travel guide \u2192\",\r\n        keywords: [\"kinnaur\", \"kalpa\", \"sangla\", \"chitkul\", \"reckong peo\", \"nako\", \"rakchham\", \"baspa\", \"kinnaur kailash\"]\r\n      },\r\n      {\r\n        id: \"dharamshala\",\r\n        label: \"Dharamshala\",\r\n        title: \"Dharamshala Travel Photos\",\r\n        description: \"View Dhauladhar peaks, Tibetan cultural spaces, monasteries and trails around Dharamshala and McLeodganj.\",\r\n        url: \"\/destination\/dharamshala\/\",\r\n        linkLabel: \"Read the Dharamshala guide \u2192\",\r\n        keywords: [\"dharamshala\", \"dharamsala\", \"mcleodganj\", \"mcleod ganj\", \"bhagsu\", \"triund\", \"dharamkot\", \"naddi\", \"kangra\", \"namgyal\"]\r\n      },\r\n      {\r\n        id: \"bir-billing\",\r\n        label: \"Bir Billing\",\r\n        title: \"Bir Billing Travel Photos\",\r\n        description: \"Browse paragliding scenes, open valley views, monasteries and landscapes from Bir, Billing, Baijnath and nearby areas.\",\r\n        url: \"\/destination\/bir-billing\/\",\r\n        linkLabel: \"Read the Bir Billing guide \u2192\",\r\n        keywords: [\"bir billing\", \"bir-billing\", \"billing\", \"bir\", \"baijnath\", \"palampur\", \"tibetan colony\"]\r\n      },\r\n      {\r\n        id: \"tirthan-valley\",\r\n        label: \"Tirthan Valley\",\r\n        title: \"Tirthan Valley Travel Photos\",\r\n        description: \"Explore riverside villages, trout streams, forest paths and scenery near the Great Himalayan National Park.\",\r\n        url: \"\/destination\/tirthan-valley\/\",\r\n        linkLabel: \"Read the Tirthan Valley guide \u2192\",\r\n        keywords: [\"tirthan\", \"gushaini\", \"ghnp\", \"great himalayan national park\", \"sai ropa\"]\r\n      },\r\n      {\r\n        id: \"shimla\",\r\n        label: \"Shimla\",\r\n        title: \"Shimla Travel Photos\",\r\n        description: \"View Shimla's heritage streets, Ridge, Christ Church, toy-train scenery, forest roads and surrounding hill stations.\",\r\n        url: \"\/destination\/shimla\/\",\r\n        linkLabel: \"Read the Shimla travel guide \u2192\",\r\n        keywords: [\"shimla\", \"the ridge\", \"mall road shimla\", \"christ church shimla\", \"kufri\", \"mashobra\", \"chail\", \"naldehra\", \"summer hill\", \"jakhoo\", \"toy train\"]\r\n      },\r\n      {\r\n        id: \"narkanda\",\r\n        label: \"Narkanda\",\r\n        title: \"Narkanda Travel Photos\",\r\n        description: \"Browse winter snow, Hatu Peak, orchards and quiet mountain views from Narkanda and the upper Shimla region.\",\r\n        url: \"\/destination\/narkanda\/\",\r\n        linkLabel: \"Read the Narkanda guide \u2192\",\r\n        keywords: [\"narkanda\", \"hatu peak\", \"hatu temple\", \"tanni jubbar\", \"thanedar\", \"kotgarh\"]\r\n      },\r\n      {\r\n        id: \"chamba\",\r\n        label: \"Chamba\",\r\n        title: \"Chamba Travel Photos\",\r\n        description: \"Discover temple heritage, Khajjiar, Dalhousie, Bharmour, meadows and mountain scenery across the Chamba region.\",\r\n        url: \"\/destination\/chamba\/\",\r\n        linkLabel: \"Read the Chamba travel guide \u2192\",\r\n        keywords: [\"chamba\", \"khajjiar\", \"dalhousie\", \"bharmour\", \"manimahesh\", \"pangi\", \"chamera\", \"laxmi narayan temple\", \"chaugan\"]\r\n      },\r\n      {\r\n        id: \"other-places\",\r\n        label: \"Hidden Gems & Other Places\",\r\n        title: \"Hidden Gems & Other Places\",\r\n        description: \"Named passes, lakes, villages, waterfalls, temples, valleys and individual attractions beyond the twelve principal destination groups.\",\r\n        url: \"\/attractions-in-himachal-pradesh\/\",\r\n        linkLabel: \"Explore Himachal attractions \u2192\",\r\n        keywords: [\r\n          \"rohtang pass\", \"solang valley\", \"chandratal\", \"chandra tal\", \"atal tunnel\", \"sissu\", \"jalori pass\", \"serolsar\", \"prashar\", \"parashar\", \"barot valley\", \"khajjiar\", \"kufri\", \"triund\", \"kheerganga\", \"chitkul\", \"kalpa\", \"sangla\", \"tosh\", \"malana\", \"manikaran\", \"shoja\", \"dalhousie\", \"mcleodganj\", \"mcleod ganj\", \"hampta pass\", \"baralacha\", \"shinkula\", \"kunzum pass\", \"pin valley\", \"nako lake\", \"hatu peak\", \"great himalayan national park\", \"beas kund\", \"bhagsu\", \"palampur\", \"kangra\", \"manimahesh\", \"pangi valley\"\r\n        ]\r\n      }\r\n    ];\r\n\r\n    const GENERAL_TRAVEL_KEYWORDS = [\r\n      \"himachal\", \"himalaya\", \"himalayan\", \"mountain\", \"valley\", \"snow\", \"trek\", \"camping\", \"rafting\", \"paragliding\", \"skiing\", \"monastery\", \"temple\", \"lake\", \"waterfall\", \"village\", \"travel\"\r\n    ];\r\n\r\n    const EXCLUDED_TERMS = [\r\n      \"site-logo\", \"site logo\", \"favicon\", \"gravatar\", \"avatar\", \"payment-icon\", \"payment icon\", \"qr-code\", \"qr code\", \"placeholder\", \"elementor-placeholder\", \"whatsapp-icon\", \"phone-icon\"\r\n    ];\r\n\r\n    const els = {\r\n      scrollGallery: root.querySelector(\"#htg-scroll-gallery\"),\r\n      gallerySection: root.querySelector(\"#himtrails-photo-gallery\"),\r\n      filters: root.querySelector(\"#htg-filters\"),\r\n      categoryTitle: root.querySelector(\"#htg-category-title\"),\r\n      categoryDescription: root.querySelector(\"#htg-category-description\"),\r\n      categoryLink: root.querySelector(\"#htg-category-link\"),\r\n      status: root.querySelector(\"#htg-status\"),\r\n      refresh: root.querySelector(\"#htg-refresh\"),\r\n      skeletons: root.querySelector(\"#htg-skeletons\"),\r\n      grid: root.querySelector(\"#htg-grid\"),\r\n      empty: root.querySelector(\"#htg-empty\"),\r\n      loadMore: root.querySelector(\"#htg-load-more\"),\r\n      lightbox: root.querySelector(\"#htg-lightbox\"),\r\n      lightboxImage: root.querySelector(\"#htg-lightbox-image\"),\r\n      lightboxTitle: root.querySelector(\"#htg-lightbox-title\"),\r\n      lightboxMeta: root.querySelector(\"#htg-lightbox-meta\"),\r\n      lightboxCounter: root.querySelector(\"#htg-lightbox-counter\"),\r\n      lightboxLink: root.querySelector(\"#htg-lightbox-link\"),\r\n      lightboxClose: root.querySelector(\"#htg-lightbox-close\"),\r\n      lightboxPrev: root.querySelector(\"#htg-lightbox-prev\"),\r\n      lightboxNext: root.querySelector(\"#htg-lightbox-next\"),\r\n      lightboxStage: root.querySelector(\"#htg-lightbox-stage\")\r\n    };\r\n\r\n    const state = {\r\n      allImages: [],\r\n      activeCategory: \"all\",\r\n      filteredImages: [],\r\n      visibleCount: CONFIG.itemsPerPage,\r\n      lightboxIndex: 0,\r\n      lastFocusedElement: null,\r\n      touchStartX: 0,\r\n      initStarted: false\r\n    };\r\n\r\n    \/* ---------- text helpers ---------- *\/\r\n\r\n    function stripHtml(value = \"\") {\r\n      const div = document.createElement(\"div\");\r\n      div.innerHTML = String(value);\r\n      return (div.textContent || div.innerText || \"\").replace(\/\\s+\/g, \" \").trim();\r\n    }\r\n\r\n    function normalise(value = \"\") {\r\n      return stripHtml(value)\r\n        .toLowerCase()\r\n        .replace(\/[_\u2013\u2014-]+\/g, \" \")\r\n        .replace(\/[^a-z0-9\\s]\/g, \" \")\r\n        .replace(\/\\s+\/g, \" \")\r\n        .trim();\r\n    }\r\n\r\n    \/* v4: accepts text that is ALREADY normalised \u2014 normalise the media text\r\n       once per image instead of once per keyword (huge speed-up). *\/\r\n    function normalisedIncludes(normalisedText, keyword) {\r\n      return (\" \" + normalisedText + \" \").includes(\" \" + normalise(keyword) + \" \");\r\n    }\r\n\r\n    function matchesAny(normalisedText, keywords) {\r\n      return keywords.some(keyword => normalisedIncludes(normalisedText, keyword));\r\n    }\r\n\r\n    function getCategory(id) {\r\n      return CATEGORIES.find(category => category.id === id) || CATEGORIES[0];\r\n    }\r\n\r\n    function safeDecode(value) {\r\n      try { return decodeURIComponent(value); } catch (error) { return value; }\r\n    }\r\n\r\n    function getMediaText(media) {\r\n      const rawName = media?.source_url ? (media.source_url.split(\"\/\").pop() || \"\") : \"\";\r\n      return [\r\n        safeDecode(rawName),\r\n        media?.slug,\r\n        media?.title?.rendered,\r\n        media?.alt_text,\r\n        media?.caption?.rendered,\r\n        media?.description?.rendered\r\n      ].filter(Boolean).join(\" \");\r\n    }\r\n\r\n    function chooseCardUrl(media) {\r\n      const sizes = media?.media_details?.sizes || {};\r\n      return sizes.medium_large?.source_url || sizes.large?.source_url || sizes.medium?.source_url || media.source_url || \"\";\r\n    }\r\n\r\n    function buildSrcset(media) {\r\n      const sizes = media?.media_details?.sizes || {};\r\n      const entries = Object.values(sizes)\r\n        .filter(item => item?.source_url && item?.width)\r\n        .sort((a, b) => a.width - b.width)\r\n        .map(item => `${item.source_url} ${item.width}w`);\r\n      return [...new Set(entries)].join(\", \");\r\n    }\r\n\r\n    \/* ---------- classification ---------- *\/\r\n\r\n    function classifyMedia(media) {\r\n      if (!media?.source_url || (media?.media_type && media.media_type !== \"image\")) return null;\r\n\r\n      const normalisedText = normalise(getMediaText(media));\r\n      const width = Number(media?.media_details?.width || 0);\r\n      const height = Number(media?.media_details?.height || 0);\r\n\r\n      if (EXCLUDED_TERMS.some(term => normalisedIncludes(normalisedText, term))) return null;\r\n      if (width && width < CONFIG.minimumWidth) return null;\r\n      if (height && height < CONFIG.minimumHeight) return null;\r\n\r\n      const categoryIds = CATEGORIES\r\n        .filter(category => category.id !== \"all\" && matchesAny(normalisedText, category.keywords))\r\n        .map(category => category.id);\r\n\r\n      const generalMatch = matchesAny(normalisedText, GENERAL_TRAVEL_KEYWORDS);\r\n      if (!categoryIds.length && !generalMatch) return null;\r\n\r\n      const title = stripHtml(media?.title?.rendered) || stripHtml(media?.caption?.rendered) || media.alt_text || \"Himachal Pradesh travel photograph\";\r\n      const caption = stripHtml(media?.caption?.rendered) || title;\r\n      const alt = stripHtml(media?.alt_text) || caption || title;\r\n\r\n      return {\r\n        id: media.id || media.source_url,\r\n        src: chooseCardUrl(media),\r\n        full: media.source_url,\r\n        srcset: buildSrcset(media),\r\n        alt,\r\n        title,\r\n        caption,\r\n        categories: categoryIds,\r\n        date: media.date || \"\"\r\n      };\r\n    }\r\n\r\n    \/* v4: one broken image record can no longer take down the whole gallery *\/\r\n    function classifyMediaSafe(media) {\r\n      try { return classifyMedia(media); } catch (error) { return null; }\r\n    }\r\n\r\n    function normaliseManualImages(images) {\r\n      return images.map((image, index) => ({\r\n        id: `manual-${index}`,\r\n        src: image.src,\r\n        full: image.full || image.src,\r\n        srcset: image.srcset || \"\",\r\n        alt: image.alt || image.caption || \"Himachal Pradesh travel photograph\",\r\n        title: image.title || image.caption || image.alt || \"Himachal Pradesh travel photograph\",\r\n        caption: image.caption || image.alt || \"Himachal Pradesh travel photograph\",\r\n        categories: Array.isArray(image.categories) ? image.categories : [],\r\n        date: image.date || \"\"\r\n      }));\r\n    }\r\n\r\n    function deduplicateImages(images) {\r\n      const seen = new Set();\r\n      return images.filter(image => {\r\n        const key = image.full || image.src;\r\n        if (!key || seen.has(key)) return false;\r\n        seen.add(key);\r\n        return true;\r\n      });\r\n    }\r\n\r\n    \/* ---------- caching (v4: localStorage, 6h, survives new tabs) ---------- *\/\r\n\r\n    function getStore() {\r\n      try {\r\n        localStorage.setItem(\"htg-test\", \"1\");\r\n        localStorage.removeItem(\"htg-test\");\r\n        return localStorage;\r\n      } catch (error) {\r\n        try { return sessionStorage; } catch (e) { return null; }\r\n      }\r\n    }\r\n\r\n    function saveCache(images) {\r\n      const store = getStore();\r\n      if (!store) return;\r\n      try {\r\n        const payload = JSON.stringify({ savedAt: Date.now(), images });\r\n        if (payload.length < 3500000) store.setItem(CONFIG.cacheKey, payload);\r\n      } catch (error) {\r\n        \/* Caching is optional \u2014 ignore quota or privacy-mode errors. *\/\r\n      }\r\n    }\r\n\r\n    function readCache() {\r\n      const store = getStore();\r\n      if (!store) return null;\r\n      try {\r\n        const raw = store.getItem(CONFIG.cacheKey);\r\n        if (!raw) return null;\r\n        const parsed = JSON.parse(raw);\r\n        const maxAge = CONFIG.cacheMinutes * 60 * 1000;\r\n        if (!parsed.savedAt || Date.now() - parsed.savedAt > maxAge || !Array.isArray(parsed.images)) {\r\n          store.removeItem(CONFIG.cacheKey);\r\n          return null;\r\n        }\r\n        return parsed.images;\r\n      } catch (error) {\r\n        return null;\r\n      }\r\n    }\r\n\r\n    function clearCache() {\r\n      const store = getStore();\r\n      if (!store) return;\r\n      try { store.removeItem(CONFIG.cacheKey); } catch (error) {}\r\n    }\r\n\r\n    \/* ---------- Media Library fetch (v4: gentle batches, not 29 parallel) ---------- *\/\r\n\r\n    async function fetchMediaLibrary(forceRefresh = false) {\r\n      if (!CONFIG.useWordPressMediaLibrary) return normaliseManualImages(MANUAL_FALLBACK_IMAGES);\r\n\r\n      if (!forceRefresh) {\r\n        const cached = readCache();\r\n        if (cached?.length) return cached;\r\n      }\r\n\r\n      const fields = \"id,date,slug,alt_text,caption,description,title,source_url,media_details,media_type\";\r\n      const firstUrl = new URL(CONFIG.apiEndpoint, window.location.origin);\r\n      firstUrl.searchParams.set(\"per_page\", String(CONFIG.apiItemsPerPage));\r\n      firstUrl.searchParams.set(\"page\", \"1\");\r\n      firstUrl.searchParams.set(\"orderby\", \"date\");\r\n      firstUrl.searchParams.set(\"order\", \"desc\");\r\n      firstUrl.searchParams.set(\"media_type\", \"image\");\r\n      firstUrl.searchParams.set(\"_fields\", fields);\r\n\r\n      const firstResponse = await fetch(firstUrl.toString(), { credentials: \"same-origin\" });\r\n      if (!firstResponse.ok) throw new Error(`WordPress Media request failed (${firstResponse.status})`);\r\n\r\n      const firstItems = await firstResponse.json();\r\n      const totalPages = Math.min(\r\n        Number(firstResponse.headers.get(\"X-WP-TotalPages\") || 1),\r\n        CONFIG.maxApiPages\r\n      );\r\n\r\n      const allMedia = [].concat(firstItems);\r\n\r\n      for (let page = 2; page <= totalPages; page += CONFIG.apiBatchSize) {\r\n        const batch = [];\r\n        for (let offset = 0; offset < CONFIG.apiBatchSize && page + offset <= totalPages; offset += 1) {\r\n          const pageUrl = new URL(firstUrl.toString());\r\n          pageUrl.searchParams.set(\"page\", String(page + offset));\r\n          batch.push(\r\n            fetch(pageUrl.toString(), { credentials: \"same-origin\" })\r\n              .then(response => response.ok ? response.json() : [])\r\n              .catch(() => [])\r\n          );\r\n        }\r\n        const results = await Promise.all(batch);\r\n        results.forEach(items => allMedia.push(...items));\r\n      }\r\n\r\n      const classified = deduplicateImages(allMedia.map(classifyMediaSafe).filter(Boolean));\r\n\r\n      if (classified.length) saveCache(classified);\r\n      return classified;\r\n    }\r\n\r\n    \/* ---------- rendering ---------- *\/\r\n\r\n    function countForCategory(categoryId) {\r\n      if (categoryId === \"all\") return state.allImages.length;\r\n      return state.allImages.filter(image => image.categories.includes(categoryId)).length;\r\n    }\r\n\r\n    function renderFilters() {\r\n      els.filters.innerHTML = \"\";\r\n      CATEGORIES.forEach(category => {\r\n        const button = document.createElement(\"button\");\r\n        button.type = \"button\";\r\n        button.className = \"htg-filter\";\r\n        button.dataset.category = category.id;\r\n        button.setAttribute(\"aria-pressed\", String(category.id === state.activeCategory));\r\n        button.innerHTML = `<span>${escapeHtml(category.label)}<\/span><span class=\"htg-filter__count\">${countForCategory(category.id)}<\/span>`;\r\n        button.addEventListener(\"click\", () => selectCategory(category.id));\r\n        els.filters.appendChild(button);\r\n      });\r\n    }\r\n\r\n    function selectCategory(categoryId) {\r\n      state.activeCategory = categoryId;\r\n      state.visibleCount = CONFIG.itemsPerPage;\r\n      state.filteredImages = categoryId === \"all\"\r\n        ? [...state.allImages]\r\n        : state.allImages.filter(image => image.categories.includes(categoryId));\r\n\r\n      const category = getCategory(categoryId);\r\n      els.categoryTitle.textContent = category.title;\r\n      els.categoryDescription.textContent = category.description;\r\n      els.categoryLink.href = category.url;\r\n      els.categoryLink.textContent = category.linkLabel;\r\n\r\n      root.querySelectorAll(\".htg-filter\").forEach(button => {\r\n        button.setAttribute(\"aria-pressed\", String(button.dataset.category === categoryId));\r\n      });\r\n\r\n      renderGallery();\r\n    }\r\n\r\n    function categoryLabelsForImage(image) {\r\n      const labels = image.categories\r\n        .map(id => getCategory(id).label)\r\n        .filter(Boolean);\r\n      return labels.slice(0, 3).join(\" \u00b7 \") || \"Himachal Pradesh\";\r\n    }\r\n\r\n    function createCard(image, index) {\r\n      const button = document.createElement(\"button\");\r\n      button.type = \"button\";\r\n      button.className = \"htg-card\";\r\n      button.setAttribute(\"aria-label\", `Open image: ${image.alt}`);\r\n\r\n      const img = document.createElement(\"img\");\r\n      img.src = image.src;\r\n      img.alt = image.alt;\r\n      img.loading = \"lazy\";\r\n      img.decoding = \"async\";\r\n      img.width = 800;\r\n      img.height = 600;\r\n      if (image.srcset) {\r\n        img.srcset = image.srcset;\r\n        img.sizes = \"(max-width: 480px) 100vw, (max-width: 760px) 50vw, (max-width: 1024px) 33vw, 25vw\";\r\n      }\r\n      img.addEventListener(\"error\", () => button.remove(), { once: true });\r\n\r\n      const body = document.createElement(\"span\");\r\n      body.className = \"htg-card__body\";\r\n      body.innerHTML = `<span class=\"htg-card__title\">${escapeHtml(image.caption)}<\/span><span class=\"htg-card__meta\">${escapeHtml(categoryLabelsForImage(image))}<\/span>`;\r\n\r\n      const zoom = document.createElement(\"span\");\r\n      zoom.className = \"htg-card__zoom\";\r\n      zoom.setAttribute(\"aria-hidden\", \"true\");\r\n      zoom.innerHTML = `<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\"><circle cx=\"11\" cy=\"11\" r=\"6.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M16 16l4 4M11 8v6M8 11h6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>`;\r\n\r\n      button.append(img, body, zoom);\r\n      button.addEventListener(\"click\", () => openLightbox(index, button));\r\n      return button;\r\n    }\r\n\r\n    function escapeHtml(value = \"\") {\r\n      return String(value)\r\n        .replace(\/&\/g, \"&amp;\")\r\n        .replace(\/<\/g, \"&lt;\")\r\n        .replace(\/>\/g, \"&gt;\")\r\n        .replace(\/\"\/g, \"&quot;\")\r\n        .replace(\/'\/g, \"&#039;\");\r\n    }\r\n\r\n    function renderGallery() {\r\n      const visibleImages = state.filteredImages.slice(0, state.visibleCount);\r\n      els.grid.innerHTML = \"\";\r\n\r\n      visibleImages.forEach((image, index) => {\r\n        els.grid.appendChild(createCard(image, index));\r\n      });\r\n\r\n      const total = state.filteredImages.length;\r\n      const shown = visibleImages.length;\r\n      const category = getCategory(state.activeCategory);\r\n\r\n      els.empty.hidden = total !== 0;\r\n      els.loadMore.hidden = shown >= total || total === 0;\r\n      els.status.textContent = total\r\n        ? `Showing ${shown} of ${total} ${category.label} photograph${total === 1 ? \"\" : \"s\"}.`\r\n        : `No photographs currently match ${category.label}.`;\r\n    }\r\n\r\n    \/* ---------- lightbox ---------- *\/\r\n\r\n    function openLightbox(index, trigger) {\r\n      if (!state.filteredImages.length) return;\r\n      state.lightboxIndex = Math.max(0, Math.min(index, state.filteredImages.length - 1));\r\n      state.lastFocusedElement = trigger || document.activeElement;\r\n      updateLightbox();\r\n      els.lightbox.classList.add(\"is-open\");\r\n      els.lightbox.setAttribute(\"aria-hidden\", \"false\");\r\n      document.body.classList.add(\"htg-no-scroll\");\r\n      els.lightboxClose.focus();\r\n    }\r\n\r\n    function closeLightbox() {\r\n      els.lightbox.classList.remove(\"is-open\");\r\n      els.lightbox.setAttribute(\"aria-hidden\", \"true\");\r\n      document.body.classList.remove(\"htg-no-scroll\");\r\n      els.lightboxImage.src = \"\";\r\n      els.lightboxImage.alt = \"\";\r\n      if (state.lastFocusedElement && typeof state.lastFocusedElement.focus === \"function\") {\r\n        state.lastFocusedElement.focus();\r\n      }\r\n    }\r\n\r\n    function moveLightbox(direction) {\r\n      const total = state.filteredImages.length;\r\n      if (!total) return;\r\n      state.lightboxIndex = (state.lightboxIndex + direction + total) % total;\r\n      updateLightbox();\r\n    }\r\n\r\n    function updateLightbox() {\r\n      const image = state.filteredImages[state.lightboxIndex];\r\n      if (!image) return;\r\n\r\n      const primaryCategoryId = image.categories.find(id => id !== \"other-places\") || image.categories[0] || \"all\";\r\n      const category = getCategory(primaryCategoryId);\r\n\r\n      els.lightboxImage.src = image.full || image.src;\r\n      els.lightboxImage.alt = image.alt;\r\n      els.lightboxTitle.textContent = image.caption || image.title;\r\n      els.lightboxMeta.textContent = categoryLabelsForImage(image);\r\n      els.lightboxCounter.textContent = `${state.lightboxIndex + 1} of ${state.filteredImages.length}`;\r\n      els.lightboxLink.href = category.url;\r\n      els.lightboxLink.textContent = primaryCategoryId === \"all\" ? \"Explore Himachal packages \u2192\" : `Explore ${category.label} \u2192`;\r\n\r\n      const multiple = state.filteredImages.length > 1;\r\n      els.lightboxPrev.hidden = !multiple;\r\n      els.lightboxNext.hidden = !multiple;\r\n    }\r\n\r\n    function trapLightboxFocus(event) {\r\n      if (event.key !== \"Tab\" || !els.lightbox.classList.contains(\"is-open\")) return;\r\n      const focusable = [...els.lightbox.querySelectorAll(\"button:not([hidden]), a[href]\")];\r\n      if (!focusable.length) return;\r\n      const first = focusable[0];\r\n      const last = focusable[focusable.length - 1];\r\n\r\n      if (event.shiftKey && document.activeElement === first) {\r\n        event.preventDefault();\r\n        last.focus();\r\n      } else if (!event.shiftKey && document.activeElement === last) {\r\n        event.preventDefault();\r\n        first.focus();\r\n      }\r\n    }\r\n\r\n    \/* ---------- initialisation (v4: lazy \u2014 waits until gallery is near view) ---------- *\/\r\n\r\n    async function initialise(forceRefresh = false) {\r\n      state.initStarted = true;\r\n      els.skeletons.hidden = false;\r\n      els.grid.innerHTML = \"\";\r\n      els.empty.hidden = true;\r\n      els.loadMore.hidden = true;\r\n      els.refresh.hidden = true;\r\n      els.status.textContent = forceRefresh ? \"Refreshing the photo collection\u2026\" : \"Loading Himachal Pradesh travel photos\u2026\";\r\n\r\n      try {\r\n        const images = await fetchMediaLibrary(forceRefresh);\r\n        state.allImages = images.length ? images : normaliseManualImages(MANUAL_FALLBACK_IMAGES);\r\n        state.allImages.sort((a, b) => String(b.date).localeCompare(String(a.date)));\r\n\r\n        els.skeletons.hidden = true;\r\n        renderFilters();\r\n        selectCategory(\"all\");\r\n      } catch (error) {\r\n        console.warn(\"HimTrails gallery:\", error);\r\n        state.allImages = normaliseManualImages(MANUAL_FALLBACK_IMAGES);\r\n        els.skeletons.hidden = true;\r\n        els.refresh.hidden = false; \/* \"Try again\" only appears after an error *\/\r\n        renderFilters();\r\n        selectCategory(\"all\");\r\n        els.status.textContent = `Live photos could not be loaded right now \u2014 showing ${state.allImages.length} featured photographs instead.`;\r\n      }\r\n    }\r\n\r\n    function startOnce(forceRefresh = false) {\r\n      if (state.initStarted) return;\r\n      initialise(forceRefresh);\r\n    }\r\n\r\n    \/* Lazy start: fetch only when the visitor approaches the gallery section. *\/\r\n    if (\"IntersectionObserver\" in window && els.gallerySection) {\r\n      const io = new IntersectionObserver(entries => {\r\n        if (entries.some(entry => entry.isIntersecting)) {\r\n          io.disconnect();\r\n          startOnce();\r\n        }\r\n      }, { rootMargin: \"700px 0px\" });\r\n      io.observe(els.gallerySection);\r\n    } else {\r\n      startOnce();\r\n    }\r\n\r\n    \/* ---------- events ---------- *\/\r\n\r\n    if (els.scrollGallery) {\r\n      els.scrollGallery.addEventListener(\"click\", () => {\r\n        startOnce();\r\n        els.gallerySection?.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n      });\r\n    }\r\n\r\n    els.loadMore.addEventListener(\"click\", () => {\r\n      state.visibleCount += CONFIG.itemsPerPage;\r\n      renderGallery();\r\n    });\r\n\r\n    els.refresh.addEventListener(\"click\", () => {\r\n      clearCache();\r\n      initialise(true);\r\n    });\r\n\r\n    els.lightboxClose.addEventListener(\"click\", closeLightbox);\r\n    els.lightboxPrev.addEventListener(\"click\", () => moveLightbox(-1));\r\n    els.lightboxNext.addEventListener(\"click\", () => moveLightbox(1));\r\n\r\n    els.lightbox.addEventListener(\"click\", event => {\r\n      if (event.target === els.lightbox || event.target === els.lightboxStage) closeLightbox();\r\n    });\r\n\r\n    els.lightboxStage.addEventListener(\"touchstart\", event => {\r\n      state.touchStartX = event.changedTouches[0]?.clientX || 0;\r\n    }, { passive: true });\r\n\r\n    els.lightboxStage.addEventListener(\"touchend\", event => {\r\n      const touchEndX = event.changedTouches[0]?.clientX || 0;\r\n      const distance = touchEndX - state.touchStartX;\r\n      if (Math.abs(distance) > 55) moveLightbox(distance > 0 ? -1 : 1);\r\n    }, { passive: true });\r\n\r\n    document.addEventListener(\"keydown\", event => {\r\n      if (!els.lightbox.classList.contains(\"is-open\")) return;\r\n      if (event.key === \"Escape\") closeLightbox();\r\n      if (event.key === \"ArrowLeft\") moveLightbox(-1);\r\n      if (event.key === \"ArrowRight\") moveLightbox(1);\r\n      trapLightboxFocus(event);\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<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Breathe the Heights, Live the Trails Himachal Pradesh Travel Gallery Explore the mountains, valleys, villages, monasteries, lakes and road journeys that define the western Himalayas. Browse the HimTrails photo collection by destination and open any image in an immersive, mobile-friendly lightbox. Explore the gallery \u2193 View Himachal tour packages 12Major destinations 14Photo collections \u221eMountain memories [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"googlesitekit_rrm_CAowjtHDDA:productID":"","ocean_front_end_style_editor":"no","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":"on","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-556","page","type-page","status-publish","hentry","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages\/556","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":84,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages\/556\/revisions"}],"predecessor-version":[{"id":987706,"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/pages\/556\/revisions\/987706"}],"wp:attachment":[{"href":"https:\/\/himtrails.in\/hi\/wp-json\/wp\/v2\/media?parent=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}