{"id":6992,"date":"2026-06-06T15:21:24","date_gmt":"2026-06-06T13:21:24","guid":{"rendered":"https:\/\/franceletour.com\/?p=6992"},"modified":"2026-06-09T17:19:05","modified_gmt":"2026-06-09T15:19:05","slug":"tour-de-france-2026-mountain-stages","status":"publish","type":"post","link":"https:\/\/franceletour.com\/fr\/tour-de-france-2026-mountain-stages\/","title":{"rendered":"Tour de France 2026 Mountain Stages: All 8 Stages, Summit Finishes, Climbs &amp; KOM Classification"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\" style=\"text-transform:uppercase\">Tour de France 2026 Mountain Stages: All 8 Stages, Summit Finishes, Climbs &amp; KOM Classification<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">This is the complete guide to Tour de France 2026 mountain stages \u2014 all 8 stages, every categorised climb with confirmed gradient and altitude data, the full KOM classification and mountain points table, detailed elevation profiles for each summit finish, a spectator guide with weather and accommodation, and an analysis of which climbs will decide the race. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/franceletour.com\/tour-de-france-2026-route\/\" data-type=\"page\" data-id=\"6973\">Tour de France 2026 route<\/a> features more mountain climbing than any Tour in five years: 54,450 metres across 21 stages, including what is recorded as the most climbing in any single Tour de France stage in history on Stage 20.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The TDF 2026 mountain stages span five different mountain ranges, the Pyrenees, Massif Central, Vosges, Jura, and Alps, and deliver five summit finishes: Gavarnie-G\u00e8dre (Stage 6), Le Lioran\/Puy Mary (Stage 10), Plateau de Solaison (Stage 15), Orci\u00e8res-Merlette (Stage 18), and Alpe d&#8217;Huez on back-to-back days for the first time in Tour de France history (Stages 19 and 20).<\/p>\n\n\n\n<style>\n.mtn-tldr-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.mtn-tldr-card {\n  background: #f6fbee;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.mtn-tldr-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n}\n\n.mtn-tldr-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.mtn-tldr-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.mtn-tldr-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n}\n\n.mtn-section {\n  display: flex;\n  align-items: flex-start;\n  gap: 10px;\n}\n\n.mtn-section-icon {\n  width: 24px;\n  height: 24px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n  margin-top: 2px;\n}\n\n.mtn-section-icon svg {\n  width: 18px;\n  height: 18px;\n  stroke: #27500A;\n}\n\n.mtn-section-content {\n  flex: 1;\n}\n\n.mtn-section-heading {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.8rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  color: #27500A;\n  margin: 0 0 3px 0;\n}\n\n.mtn-section-text {\n  font-size: 0.85rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  margin: 0;\n}\n\n.mtn-section-text strong {\n  font-weight: 600;\n  color: #000;\n}\n\n.mtn-highlight {\n  background: #FFC72C;\n  color: #000;\n  padding: 0 5px;\n  border-radius: 4px;\n  font-weight: 600;\n  font-size: 0.78rem;\n}\n\n@media (max-width: 600px) {\n  .mtn-tldr-body {\n    padding: 1rem 1.2rem 1.2rem;\n  }\n  .mtn-tldr-title {\n    font-size: 1.05rem !important;\n  }\n}\n<\/style>\n\n<div class=\"mtn-tldr-wrap\">\n  <div class=\"mtn-tldr-card\">\n    \n    <div class=\"mtn-tldr-header\">\n      <h2 class=\"mtn-tldr-title\">TL;DR \u2014 Tour de France 2026 Mountain Stages at a Glance<\/h2>\n      <span class=\"mtn-tldr-badge\">Mountains<\/span>\n    <\/div>\n\n    <div class=\"mtn-tldr-body\">\n\n      <!-- 8 Mountain Stages -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline>\n            <polyline points=\"15 5 21 5 21 11\"><\/polyline>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">8 Mountain Stages<\/p>\n          <p class=\"mtn-section-text\">\n            Stages 3, 6, 10, 14, 15, 18, 19, 20. Five summit finishes. 30 total categorised climbs. 6 new climbs appearing at the Tour for the first time.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Mountain Ranges -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"><\/path>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">Mountain Ranges<\/p>\n          <p class=\"mtn-section-text\">\n            <strong>Pyrenees<\/strong> (Stages 3 + 6) \u00b7 <strong>Massif Central<\/strong> (Stage 10) \u00b7 <strong>Vosges<\/strong> (Stage 14) \u00b7 <strong>Alps<\/strong> (Stages 15, 18, 19, 20). Stage 13 crosses the Jura \u2014 hilly, not officially a mountain stage.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Hardest Stage -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M2 4l3 12h14l3-12-6 5-4-5-4 5-6-5z\"><\/path>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">Hardest Stage<\/p>\n          <p class=\"mtn-section-text\">\n            <strong>Stage 20 (Queen Stage)<\/strong> \u2014 171 km, 5,600m+ climbing. The most climbing in a single Tour stage in recorded history. Col du Galibier at 2,642m is the highest point of the race.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Steepest Summit Finish -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">Steepest Summit Finish<\/p>\n          <p class=\"mtn-section-text\">\n            <strong>Plateau de Solaison (Stage 15)<\/strong> \u2014 11.3 km at 9.1% average. North-facing. No prior Tour reference. The pre-rest-day ambush.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- HC Climbs -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"><\/path>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">HC Climbs<\/p>\n          <p class=\"mtn-section-text\">\n            14 HC-rated climbs across the 8 mountain stages. Points: 25 to 1st, 20 to 2nd, down to 2 for 10th. Souvenir Henri Desgrange (\u20ac5,000) to first rider over the Galibier.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Back-to-Back Alpe d'Huez -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"><\/rect><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"><\/line><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"><\/line><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"><\/line>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">Back\u2011to\u2011Back Alpe d\u2019Huez<\/p>\n          <p class=\"mtn-section-text\">\n            First in Tour de France history. Stage 19 arrives via Col Bayard + Col du Noyer + Col d\u2019Ornon (3,605m total). Stage 20 arrives via Croix de Fer + T\u00e9l\u00e9graphe + Galibier + Sarenne (5,600m+).\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- First Mountain Stage -->\n      <div class=\"mtn-section\">\n        <div class=\"mtn-section-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline>\n          <\/svg>\n        <\/div>\n        <div class=\"mtn-section-content\">\n          <p class=\"mtn-section-heading\">First Mountain Stage<\/p>\n          <p class=\"mtn-section-text\">\n            <strong>Stage 3, July 6<\/strong>, Granollers to Les Angles \u2014 Pyrenees entry, 3,904m climbing.\n          <\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.mtn-quickfacts-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.mtn-quickfacts-card {\n  background: #f6fbee;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.mtn-quickfacts-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n}\n\n.mtn-quickfacts-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.mtn-quickfacts-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n\/* 2-column grid *\/\n.mtn-quickfacts-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 0;\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.mtn-fact-item {\n  display: flex;\n  align-items: flex-start;\n  gap: 10px;\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.1);\n}\n\n\/* remove bottom border for last row items *\/\n.mtn-fact-item:nth-last-child(-n+2) {\n  border-bottom: none;\n}\n\n.mtn-fact-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n  margin-top: 2px;\n}\n\n.mtn-fact-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.mtn-fact-content {\n  flex: 1;\n  min-width: 0;\n}\n\n.mtn-fact-label {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.68rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #27500A;\n  margin: 0 0 3px 0;\n}\n\n.mtn-fact-value {\n  font-size: 0.85rem;\n  color: #1a1a1a;\n  line-height: 1.5;\n  margin: 0;\n}\n\n.mtn-fact-value strong {\n  font-weight: 600;\n  color: #000;\n}\n\n\/* Responsive: single column on mobile *\/\n@media (max-width: 600px) {\n  .mtn-quickfacts-grid {\n    grid-template-columns: 1fr;\n    padding: 1rem 1.2rem 1.2rem;\n  }\n  .mtn-fact-item:nth-last-child(-n+2) {\n    border-bottom: 1px solid rgba(99,153,34,0.1);\n  }\n  .mtn-fact-item:last-child {\n    border-bottom: none;\n  }\n}\n<\/style>\n\n<div class=\"mtn-quickfacts-wrap\">\n  <div class=\"mtn-quickfacts-card\">\n    \n    <div class=\"mtn-quickfacts-header\">\n      <h3 class=\"mtn-quickfacts-title\">Quick Facts \u2014 Mountain Stages<\/h3>\n      <span class=\"mtn-quickfacts-badge\">2026<\/span>\n    <\/div>\n\n    <div class=\"mtn-quickfacts-grid\">\n\n      <!-- Row 1 -->\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"3 17 9 11 13 15 21 5\"\/><polyline points=\"15 5 21 5 21 11\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Mountain stages<\/p>\n          <p class=\"mtn-fact-value\">8 (Stages 3,6,10,14,15,18,19,20)<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Highest point<\/p>\n          <p class=\"mtn-fact-value\">Col du Galibier 2,642m (Stage 20)<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Row 2 -->\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Summit finishes<\/p>\n          <p class=\"mtn-fact-value\">5<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"3 17 9 11 13 15 21 5\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Total categorised climbs<\/p>\n          <p class=\"mtn-fact-value\">30<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Row 3 -->\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">HC climbs<\/p>\n          <p class=\"mtn-fact-value\">14 HC-rated<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">New climbs in 2026<\/p>\n          <p class=\"mtn-fact-value\">6 Tour de France firsts<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Row 4 -->\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"3 17 9 11 13 15 21 5\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Total climbing<\/p>\n          <p class=\"mtn-fact-value\">54,450m (178,740 ft)<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"3 17 9 11 13 15 21 5\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Steepest summit avg<\/p>\n          <p class=\"mtn-fact-value\">Solaison 9.1% (Stage 15)<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Row 5 -->\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Mountain ranges<\/p>\n          <p class=\"mtn-fact-value\">5 \u2014 Pyrenees, Massif Central, Vosges, Jura, Alps<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"mtn-fact-item\">\n        <div class=\"mtn-fact-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M2 4l3 12h14l3-12-6 5-4-5-4 5-6-5z\"\/><\/svg>\n        <\/div>\n        <div class=\"mtn-fact-content\">\n          <p class=\"mtn-fact-label\">Stage with most ever climbing<\/p>\n          <p class=\"mtn-fact-value\">Stage 20 \u2014 5,700m+ (18,700 ft) \u2014 Tour record<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_f1d9e3-89 .kt-block-spacer{height:39px;}.wp-block-kadence-spacer.kt-block-spacer-6992_f1d9e3-89 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_f1d9e3-89\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">What Is a Tour de France Mountain Stage? <br>Classification Explained<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/franceletour.com\/tour-de-france-2026-route\/\" data-type=\"page\" data-id=\"6973\">Tour de France 2026 route map<\/a> has 21 stages officially classified by ASO as: flat (plat), hilly (vallonn\u00e9), mountain (montagne), or time trial. The 8 mountain stages are those featuring multiple Category 1 or HC climbs and\/or a summit finish. Understanding how climbs are categorised helps you read the mountain stages and understand the KOM competition, which determines who can win the polka dot jersey, how teams ration energy, and which climbs produce genuine GC selection versus survivable pain.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How Tour de France Climbs Are Classified \u2014 HC, Category 1, 2, 3 &amp; 4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Tour de France climb classification system has been in use since 1933, when points were first awarded to riders reaching mountain summits. The current five-tier system, HC, Cat 1, Cat 2, Cat 3, Cat 4, was completed in 1979 with the addition of the Hors Cat\u00e9gorie designation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Classification is determined by a combination of climb length and average gradient, with position on the route as a significant modifier. The formula works broadly as: length in kilometres multiplied by gradient percentage squared. A climb that would ordinarily rate as Category 1 automatically receives HC designation if it is the final categorised ascent of a stage; this is why Plateau de Solaison (11.3 km at 9.1%) and Gavarnie-G\u00e8dre (18.7 km at 4%) both carry HC ratings in 2026, despite the Gavarnie average gradient seeming modest on paper.<\/p>\n\n\n\n<style>\n.climb-cat-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.climb-cat-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.climb-cat-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.climb-cat-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.climb-cat-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: yellow;\n  color: block;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.cat-table-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.cat-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 680px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.cat-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.cat-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.cat-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.cat-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.cat-name {\n  font-weight: 700;\n  color: #111;\n}\n\n.cat-desc {\n  font-size: 0.85rem;\n  color: #444;\n}\n\n@media (max-width: 600px) {\n  .cat-table thead th,\n  .cat-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"climb-cat-wrap\">\n  <div class=\"climb-cat-card\">\n    \n    <div class=\"climb-cat-header\">\n      <h3 class=\"climb-cat-title\">Mountain Classification Points \u2013 Tour de France 2026<\/h3>\n      <span class=\"climb-cat-badge\">KOM<\/span>\n    <\/div>\n\n    <div class=\"cat-table-scroll\">\n      <table class=\"cat-table\">\n        <thead>\n          <tr>\n            <th>Category<\/th>\n            <th>Points (1st)<\/th>\n            <th>Points (last)<\/th>\n            <th>Riders paid<\/th>\n            <th>Typical Profile<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"cat-name\">HC<\/td>\n            <td>25<\/td>\n            <td>2 (10th)<\/td>\n            <td>Top 10<\/td>\n            <td class=\"cat-desc\">Major alpine pass or summit finish. Average HC: 16.1km\/7.4% (Tour 2012\u201316). Usually over 1,500m.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"cat-name\">Category 1<\/td>\n            <td>10<\/td>\n            <td>1 (6th)<\/td>\n            <td>Top 6<\/td>\n            <td class=\"cat-desc\">Major climb, not HC. Typically 10\u201320km, 5\u20138% avg. Major Pyrenean and Alpine passes.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"cat-name\">Category 2<\/td>\n            <td>5<\/td>\n            <td>1 (4th)<\/td>\n            <td>Top 4<\/td>\n            <td class=\"cat-desc\">Significant mid-stage climbs. Typically 8\u201314km, 4\u20136% avg. Massif Central and Vosges climbs.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"cat-name\">Category 3<\/td>\n            <td>2<\/td>\n            <td>1 (2nd)<\/td>\n            <td>Top 2<\/td>\n            <td class=\"cat-desc\">Smaller categorised climbs. Typically 4\u20138km, 4\u20136% avg.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"cat-name\">Category 4<\/td>\n            <td>1<\/td>\n            <td>1 (1st)<\/td>\n            <td>1st only<\/td>\n            <td class=\"cat-desc\">Easiest categorised climbs. Under 5km or low average gradient. C\u00f4te-style ascents.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">The Polka Dot Jersey \u2014 How to Win the King of the Mountains<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The maillot \u00e0 pois rouges, the red polka dot jersey, goes to the rider accumulating the most KOM points across all categorised climbs. The race leader on points wears it from Stage 2 onward. HC points (25 to 1st, down through 10 riders) dwarf lower category points \u2014 a rider who wins every HC summit in 2026 earns 250+ points from those climbs alone. The KOM title rarely goes to a GC leader: the typical winner attacks in early breakaways, targets the opening HC summits, and builds an unassailable lead before the GC riders start contesting the final alpine climbs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A special additional prize, the Souvenir Henri Desgrange, is awarded to the first rider to summit the Col du Galibier, named after Tour de France founder Henri Desgrange. The prize is \u20ac5,000 cash and represents one of the most prestigious individual moments in the race. In 2026, the Galibier appears on Stage 20 at 2,642m \u2014 the highest point of the entire race. This is the Souvenir&#8217;s most challenging setting since the 2017 edition.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_bc1b52-77 .kt-block-spacer{height:42px;}.wp-block-kadence-spacer.kt-block-spacer-6992_bc1b52-77 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_bc1b52-77\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">All 8 Tour de France 2026 Mountain Stages \u2014 Dates, Distances &amp; Elevation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The 8 mountain stages of the Tour de France 2026 are distributed across all three weeks, with no rest week exempt from significant climbing. Week 1 delivers two mountain stages in the Pyrenees (Stages 3 and 6), including the first GC queen stage on day six. Week 2 delivers three mountain stages through the Massif Central, Vosges, and Alps (Stages 10, 14, 15). Week 3 delivers three consecutive Alpine stages (Stages 18, 19, 20) that include the Queen Stage and the historic Alpe d&#8217;Huez double. Here is the <a href=\"https:\/\/franceletour.com\/\" data-type=\"page\" data-id=\"6943\">detailed 3-week route schedule<\/a>.<\/p>\n\n\n\n<style>\n.mtn-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.mtn-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.mtn-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.mtn-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.mtn-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.mtn-detail-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.mtn-detail-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 800px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.mtn-detail-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.mtn-detail-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n  white-space: nowrap;\n}\n\n.mtn-detail-table tbody td.route-cell {\n  white-space: normal;\n  font-weight: 600;\n  color: #111;\n}\n\n.mtn-detail-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.mtn-detail-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.queen-stage-row {\n  border-left: 3px solid #FFC72C;\n}\n\n.mtn-detail-footnote {\n  padding: 1rem 1.5rem;\n  background: #EFEEEB;\n  border-top: 1px solid rgba(99,153,34,0.15);\n  font-size: 0.72rem;\n  color: #555;\n  line-height: 1.5;\n}\n\n.mtn-detail-footnote strong {\n  color: #333;\n}\n\n@media (max-width: 600px) {\n  .mtn-detail-table thead th,\n  .mtn-detail-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"mtn-detail-wrap\">\n  <div class=\"mtn-detail-card\">\n    \n    <div class=\"mtn-detail-header\">\n      <h3 class=\"mtn-detail-title\">Mountain Stages in Detail<\/h3>\n      <span class=\"mtn-detail-badge\">8 Stages<\/span>\n    <\/div>\n\n    <div class=\"mtn-detail-scroll\">\n      <table class=\"mtn-detail-table\">\n        <thead>\n          <tr>\n            <th>St.<\/th>\n            <th>Date<\/th>\n            <th>Range<\/th>\n            <th>Route<\/th>\n            <th>km<\/th>\n            <th>Elev.m<\/th>\n            <th>Elev.ft<\/th>\n            <th>PDI<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>3<\/td>\n            <td>Jul 6<\/td>\n            <td>Pyrenees<\/td>\n            <td class=\"route-cell\">Granollers \u2192 Les Angles \u2b50<\/td>\n            <td>187<\/td>\n            <td>3,904<\/td>\n            <td>12,808<\/td>\n            <td>36.0<\/td>\n          <\/tr>\n          <tr>\n            <td>6<\/td>\n            <td>Jul 9<\/td>\n            <td>Pyrenees<\/td>\n            <td class=\"route-cell\">Pau \u2192 Gavarnie-G\u00e8dre \u2b50\u2b50<\/td>\n            <td>164<\/td>\n            <td>3,348<\/td>\n            <td>10,983<\/td>\n            <td>25.7<\/td>\n          <\/tr>\n          <tr>\n            <td>10<\/td>\n            <td>Jul 14<\/td>\n            <td>Massif Central<\/td>\n            <td class=\"route-cell\">Aurillac \u2192 Le Lioran \u2b50 (Bastille Day)<\/td>\n            <td>167<\/td>\n            <td>1,514<\/td>\n            <td>4,966<\/td>\n            <td>32.7<\/td>\n          <\/tr>\n          <tr>\n            <td>14<\/td>\n            <td>Jul 18<\/td>\n            <td>Vosges<\/td>\n            <td class=\"route-cell\">Mulhouse \u2192 Le Markstein Fellering \u2b50<\/td>\n            <td>156<\/td>\n            <td>4,253<\/td>\n            <td>13,953<\/td>\n            <td>35.1<\/td>\n          <\/tr>\n          <tr>\n            <td>15<\/td>\n            <td>Jul 19<\/td>\n            <td>Alps<\/td>\n            <td class=\"route-cell\">Champagnole \u2192 Plateau de Solaison \u2b50<\/td>\n            <td>184<\/td>\n            <td>470*<\/td>\n            <td>1,543*<\/td>\n            <td>36.9<\/td>\n          <\/tr>\n          <tr>\n            <td>18<\/td>\n            <td>Jul 23<\/td>\n            <td>Alps<\/td>\n            <td class=\"route-cell\">Voiron \u2192 Orci\u00e8res-Merlette \u2b50<\/td>\n            <td>185<\/td>\n            <td>5,695<\/td>\n            <td>18,685<\/td>\n            <td>36.6<\/td>\n          <\/tr>\n          <tr>\n            <td>19<\/td>\n            <td>Jul 24<\/td>\n            <td>Alps<\/td>\n            <td class=\"route-cell\">Gap \u2192 Alpe d&#8217;Huez \u2b50<\/td>\n            <td>129<\/td>\n            <td>3,605<\/td>\n            <td>11,827<\/td>\n            <td>34.8<\/td>\n          <\/tr>\n          <tr class=\"queen-stage-row\">\n            <td><strong>20 \u2b50\u2b50<\/strong><\/td>\n            <td>Jul 25<\/td>\n            <td>Alps \/ QUEEN<\/td>\n            <td class=\"route-cell\"><strong>Bourg-d&#8217;Oisans \u2192 Alpe d&#8217;Huez (QUEEN STAGE)<\/strong><\/td>\n            <td>173<\/td>\n            <td>5,700+<\/td>\n            <td>18,700+<\/td>\n            <td>58.8<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n\n    <div class=\"mtn-detail-footnote\">\n      <strong>* Stage 15 PJAMM elevation figure appears compressed due to long flat sections;<\/strong> actual total climbing across stage day is ~4,700m per ASO. PDI = PJAMM Difficulty Index.\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_761924-18 .kt-block-spacer{height:43px;}.wp-block-kadence-spacer.kt-block-spacer-6992_761924-18 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_761924-18\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">Tour de France 2026 Mountain Stages by Mountain Range<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The Pyrenees \u2014 Stages 3 &amp; 6 (July 6 &amp; 9)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The 2026 Tour enters the Pyrenees on Stage 3, before the race has spent a single day on flat French soil. That accelerated timetable is a route design choice: ASO has deliberately denied riders the traditional gentle first-week settlement period. The Eastern Pyrenees (Stage 3) come first, Collada de Toses (9.3 km at 6.5%) into France, then Col du Calvaire (14.9 km at 4.1%) at 1,836m, ending at Les Angles ski station. The Central Pyrenees queen stage arrives three days later on Stage 6.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Pyrenean character is distinct from the Alps: climbs tend to start from lower bases and reach higher in a single sustained effort, with less shelter from wind above 1,800m and longer valley transfers between passes. The Tourmalet&#8217;s Campan approach, 17 km at 7.3%, is considered harder than the Bar\u00e8ges western approach by most professional riders because the gradient is more consistently above the average. Stage 3 total elevation: 3,904m. Stage 6 total elevation: approximately 3,348m; the discrepancy from other sources is likely measurement methodology. ASO quotes over 4,100m, including shorter categorised cols.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Massif Central \u2014 Stage 10 (July 14, Bastille Day)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 10 is the Tour&#8217;s only Massif Central mountain stage in 2026, and it falls on July 14, France&#8217;s national holiday. The Massif Central character defines Stage 10: volcanic plateau terrain, no col above 1,600m, but relentlessly rolling roads without recovery descents between efforts. The Puy Mary at 1,589m is the centrepiece, approached via the Pas de Peyrol, a winding, steep road through the volcanic rock that crowd-lines with French fans in their hundreds of thousands on Bastille Day. Elevation data for Stage 10 is 1,514m (4,966 ft), which reflects only net elevation gain; the actual climbing total across the stage is closer to 3,900m, as confirmed by ASO and cyclingnews.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Vosges \u2014 Stage 14 (July 18)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 14 is the Tour&#8217;s only Vosges mountain stage in 2026. The Vosges are the dark horse mountain range of the entire race. No col exceeds 1,424m. Rounded granite summits, narrow forested roads, and a stage profile that features seven ascents across 156 km create a rhythm entirely different from the Alps or Pyrenees. The critical difference: every climb falls in the 4\u20138 minute effort range rather than the 15\u201325 minute sustained grind that defines alpine GC battles. Riders who generate explosive short-power outperform their overall GC ranking here.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Confirmed climbs for Stage 14: Grand Ballon (1,424m, the highest summit in the Vosges), Platzerwasel, Col du Haag, and Ballon d&#8217;Alsace. The Ballon d&#8217;Alsace deserves historical recognition: it was the first categorised climb ever ridden in Tour de France history, appearing in the 1905 edition. In 2026, it makes its 29th Tour appearance. The stage finishes at Le Markstein Fellering after a short rolling plateau following the final ascent, a plateau finish rather than a clean summit, which means riders who suffer on the final climb cannot simply sit up. Total stage elevation: 4,253m (13,953 ft) \u2014 the highest elevation total of any mountain stage in the first two weeks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Alps \u2014 Stages 15, 18, 19 &amp; 20 (July 19, 23, 24 &amp; 25)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Four of the eight mountain stages are in the Alps, all in Weeks 2 and 3. The Alpine sequence begins with Stage 15&#8217;s savage entry via Le Sal\u00e8ve and Plateau de Solaison before the second rest day, then resumes in Week 3 with three consecutive summit finishes. Alpine character: extreme altitude (Galibier at 2,642m), technical high-speed descents, weather that can shift from 30\u00b0C in the valley to 5\u00b0C at the summit in a single stage, and sustained 15\u201325 minute threshold efforts on the major passes. The 2026 route features the most Alpine mountain stage kilometres since 2017.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">All 8 Mountain Stages \u2014 Route, Climbs &amp; Analysis<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Week One<br><em>First Mountain Stage \u2014 The Pyrenees Entry<\/em><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>July 4\u201312 \u00b7 Stages 3 &amp; 6 are the mountain stages \u00b7 ~7,252m combined mountain stage climbing<\/em><\/p>\n\n\n\n<style>\n.stage-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: orange;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage-detail-wrap\">\n  <div class=\"stage-detail-card\">\n    \n    <div class=\"stage-detail-header\">\n      <h3 class=\"stage-detail-title\">Stage 3 \u2014 Monday, July 6<\/h3>\n      <span class=\"stage-detail-badge\">Pyrenees<\/span>\n    <\/div>\n\n    <div class=\"stage-detail-body\">\n      <div class=\"stage-main-info\">\n        <div class=\"stage-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline><polyline points=\"15 5 21 5 21 11\"><\/polyline>\n          <\/svg>\n          <span>Granollers \u2192 Les Angles \u2b50 Summit Finish<\/span>\n        <\/div>\n\n        <div class=\"stage-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"><\/line><polyline points=\"7 8 3 12 7 16\"><\/polyline>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">187 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">3,904m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"><\/path>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage-description\">\n        The first mountain stage of the 2026 Tour enters the Pyrenees from Granollers, crossing the border into France and finishing at the Les Angles ski station \u2014 a summit finish at high altitude. After the TTT and hilly stages, this is the initial sorting ground for the GC contenders.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage3-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage3-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage3-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage3-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage3-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage3-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage3-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage3-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage3-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage3-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage3-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage3-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.stage3-cat {\n  white-space: nowrap;\n}\n\n@media (max-width: 600px) {\n  .stage3-table thead th,\n  .stage3-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage3-climbs-wrap\">\n  <div class=\"stage3-climbs-card\">\n    \n    <div class=\"stage3-climbs-header\">\n      <h3 class=\"stage3-climbs-title\">Confirmed Climbs \u2014 Stage 3<\/h3>\n      <span class=\"stage3-climbs-badge\">4 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage3-scroll\">\n      <table class=\"stage3-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage3-climb-name\">Col de Sant Feliu de Codines<\/td>\n            <td>~8 km<\/td>\n            <td>~4%<\/td>\n            <td>~700 m<\/td>\n            <td class=\"stage3-cat\">Cat 3 \u2014 Gentle Catalan opener<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage3-climb-name\">Collada de Toses<\/td>\n            <td>9.3 km<\/td>\n            <td>6.5%<\/td>\n            <td>~1,800 m<\/td>\n            <td class=\"stage3-cat\">Cat 1 \u2014 Cross-border climb into France<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage3-climb-name\">Col du Calvaire<\/td>\n            <td>14.9 km<\/td>\n            <td>4.1%<\/td>\n            <td>1,836 m<\/td>\n            <td class=\"stage3-cat\">HC \u2014 Border pass, highest point of stage<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage3-climb-name\">Les Angles (summit finish)<\/td>\n            <td>1.7 km<\/td>\n            <td>6.5%<\/td>\n            <td>1,750 m<\/td>\n            <td class=\"stage3-cat\">HC \u2014 Summit finish. Short final ramp.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 3 is the most front-loaded mountain test of any modern Tour opening week. By the time it starts in Granollers, adjacent to the Formula 1 Circuit de Barcelona-Catalunya, the riders have already contested the <a href=\"https:\/\/franceletour.com\/tour-de-france-2026-stage-1\/\">Stage 1 team time trial<\/a> and the <a href=\"https:\/\/franceletour.com\/tour-de-france-2026-stage-2\/\">Stage 2 Barcelona Montju\u00efc circuit<\/a>. Now they face 187 km and nearly 4,000 metres of climbing, crossing from Catalonia into France via the Collada de Toses and Col du Calvaire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Les Angles ski station finish is a short, sharp 1.7 km ramp at 6.5%, not the hardest summit finish of the race, but it arrives after 185 km of continuous Pyrenean climbing. Any rider who is not fully race-ready reveals it here, three days into the Tour.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 3 has a clear purpose in the route design: it eliminates the idea of a gentle first week and forces GC teams to commit resources early. The race crosses from Spain into France permanently here \u2014 the peloton does not return to Spain after Stage 3.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_b0ebfc-eb .kt-block-spacer{height:43px;}.wp-block-kadence-spacer.kt-block-spacer-6992_b0ebfc-eb .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_b0ebfc-eb\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<style>\n.stage6-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage6-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage6-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage6-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage6-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #FFC72C;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(0,0,0,0.1);\n  white-space: nowrap;\n}\n\n.stage6-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage6-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage6-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage6-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage6-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage6-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage6-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage6-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage6-detail-wrap\">\n  <div class=\"stage6-detail-card\">\n    \n    <div class=\"stage6-detail-header\">\n      <h3 class=\"stage6-detail-title\">Stage 6 \u2014 Thursday, July 9<\/h3>\n      <span class=\"stage6-detail-badge\">Pyrenean Queen<\/span>\n    <\/div>\n\n    <div class=\"stage6-detail-body\">\n      <div class=\"stage6-main-info\">\n        <div class=\"stage6-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"\/><polyline points=\"15 5 21 5 21 11\"\/>\n          <\/svg>\n          <span>Pau \u2192 Gavarnie-G\u00e8dre \u2b50\u2b50 Pyrenean Queen<\/span>\n        <\/div>\n\n        <div class=\"stage6-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><polyline points=\"7 8 3 12 7 16\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">164 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">~4,100m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage6-description\">\n        The hardest Pyrenean stage of the 2026 Tour. Includes the legendary Col d&#8217;Aspin and Col du Tourmalet before the new summit finish at Gavarnie-G\u00e8dre, a UNESCO World Heritage backdrop. A decisive day for the general classification.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage6-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage6-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage6-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage6-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage6-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage6-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage6-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage6-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage6-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage6-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage6-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage6-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.stage6-new {\n  display: inline-block;\n  background: #FFC72C;\n  color: #000;\n  font-size: 0.65rem;\n  font-weight: 700;\n  padding: 2px 6px;\n  border-radius: 4px;\n  vertical-align: middle;\n  margin-left: 4px;\n}\n\n@media (max-width: 600px) {\n  .stage6-table thead th,\n  .stage6-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage6-climbs-wrap\">\n  <div class=\"stage6-climbs-card\">\n    \n    <div class=\"stage6-climbs-header\">\n      <h3 class=\"stage6-climbs-title\">Confirmed Climbs \u2014 Stage 6<\/h3>\n      <span class=\"stage6-climbs-badge\">3 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage6-scroll\">\n      <table class=\"stage6-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage6-climb-name\">Col d&#8217;Aspin<\/td>\n            <td>12 km<\/td>\n            <td>6.5%<\/td>\n            <td>1,490 m<\/td>\n            <td>HC \u2014 74th Tour appearance. 77th including Aspin.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage6-climb-name\">Col du Tourmalet (via Campan)<\/td>\n            <td>17 km<\/td>\n            <td>7.3%<\/td>\n            <td>2,115 m<\/td>\n            <td>HC \u2014 91st\/92nd Tour appearance. Most-climbed in history.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage6-climb-name\">Gavarnie-G\u00e8dre (summit finish) <span class=\"stage6-new\">NEW<\/span><\/td>\n            <td>18.7 km<\/td>\n            <td>4% avg<\/td>\n            <td>~1,350 m<\/td>\n            <td>HC \u2014 New summit finish. UNESCO Cirque backdrop.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6992_2200da-6c, .wp-block-kadence-advancedheading.kt-adv-heading6992_2200da-6c[data-kb-block=\"kb-adv-heading6992_2200da-6c\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6992_2200da-6c mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6992_2200da-6c[data-kb-block=\"kb-adv-heading6992_2200da-6c\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6992_2200da-6c img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6992_2200da-6c[data-kb-block=\"kb-adv-heading6992_2200da-6c\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h4 class=\"kt-adv-heading6992_2200da-6c wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6992_2200da-6c\"><strong>Col du Tourmalet \u2014 stage 6 profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The Campan approach (via Sainte-Marie-de-Campan) climbs 17 km at 7.3% average. The opening 5 km are above 8%, the sustained early ramp is harder than the more famous Bar\u00e8ges western approach. The summit at 2,115m is the second-highest point in the 2026 race. The Tourmalet makes either its 91st or 92nd Tour de France appearance in 2026, depending on the source, it has been climbed more times than any other col in Tour history, first appearing in 1910.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Gavarnie-G\u00e8dre \u2014 stage 6 profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The new summit finish averages 4% over 18.7 km from the valley floor after the Tourmalet descent. The modest average gradient is the stage&#8217;s main tactical deception, 4% after 100 km and two major passes produces a completely different physiological challenge than 4% on fresh legs. The Cirque de Gavarnie behind the finish line is a UNESCO World Heritage glacial amphitheatre, a vertical rock wall of 1,400 metres that forms one of the most dramatic natural backdrops in sport.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 6 is the first definitive GC verdict of the 2026 Tour. Three HC passes in the final 80 km. Teams that burned domestiques in Stages 3 and 4 have fewer resources here. This is where the 2026 race narrative begins: Evenepoel&#8217;s return to the Tourmalet after abandoning here in 2025, Vingegaard&#8217;s first real examination of the Giro-Tour double, and Poga\u010dar&#8217;s first opportunity to demonstrate whether his extraordinary week-one form is repeatable.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_c13863-62 .kt-block-spacer{height:40px;}.wp-block-kadence-spacer.kt-block-spacer-6992_c13863-62 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_c13863-62\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Week Two<br>Massif Central, Vosges &amp; Alps \u2014 Stages 10, 14 &amp; 15<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>July 14\u201319 \u00b7 Three mountain stages \u00b7 Bastille Day + Vosges dark horse + new Alpine summit<\/em><\/p>\n\n\n\n<style>\n.stage10-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage10-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage10-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage10-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage10-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #FFC72C;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(0,0,0,0.1);\n  white-space: nowrap;\n}\n\n.stage10-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage10-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage10-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage10-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage10-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage10-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage10-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage10-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage10-detail-wrap\">\n  <div class=\"stage10-detail-card\">\n    \n    <div class=\"stage10-detail-header\">\n      <h3 class=\"stage10-detail-title\">Stage 10 \u2014 Tuesday, July 14 \u2014 BASTILLE DAY<\/h3>\n      <span class=\"stage10-detail-badge\">Bastille Day<\/span>\n    <\/div>\n\n    <div class=\"stage10-detail-body\">\n      <div class=\"stage10-main-info\">\n        <div class=\"stage10-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"\/><polyline points=\"15 5 21 5 21 11\"\/>\n          <\/svg>\n          <span>Aurillac \u2192 Le Lioran \u2b50 Summit Finish<\/span>\n        <\/div>\n\n        <div class=\"stage10-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><polyline points=\"7 8 3 12 7 16\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">167 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">~3,900m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage10-description\">\n        The iconic Bastille Day stage in the Massif Central. Riders tackle the volcanic climbs of Puy Mary and Pas de Peyrol before the summit finish at Le Lioran. Massive crowds and a French national holiday guarantee an electric atmosphere.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage10-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage10-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage10-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage10-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage10-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage10-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage10-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage10-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage10-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage10-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage10-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage10-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.stage10-new {\n  display: inline-block;\n  background: #FFC72C;\n  color: #000;\n  font-size: 0.65rem;\n  font-weight: 700;\n  padding: 2px 6px;\n  border-radius: 4px;\n  vertical-align: middle;\n  margin-left: 4px;\n}\n\n@media (max-width: 600px) {\n  .stage10-table thead th,\n  .stage10-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage10-climbs-wrap\">\n  <div class=\"stage10-climbs-card\">\n    \n    <div class=\"stage10-climbs-header\">\n      <h3 class=\"stage10-climbs-title\">Confirmed Climbs \u2014 Stage 10<\/h3>\n      <span class=\"stage10-climbs-badge\">4 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage10-scroll\">\n      <table class=\"stage10-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage10-climb-name\">Col de la Griffoul <span class=\"stage10-new\">NEW<\/span><\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>NEW \u2014 First Tour appearance. Approach to Puy Mary.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage10-climb-name\">Col de Pertus \/ Pas de Peyrol<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1 \u2014 Approaches to summit sequence.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage10-climb-name\">Puy Mary<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>1,589 m<\/td>\n            <td>HC \u2014 Massif Central volcanic summit.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage10-climb-name\">Le Lioran (summit finish)<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>Ski stn<\/td>\n            <td>HC \u2014 Summit finish. Ski station. Last visited 2024.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 10 is the Tour&#8217;s most emotionally loaded stage before the Alpine finale. July 14, France&#8217;s F\u00eate Nationale, transforms every roadside crowd into a patriotic wall of noise. ASO has consistently programmed its hardest racing on Bastille Day, and the 2026 edition delivers the Puy Mary volcanic summit with the added drama of the new Col de la Griffoul approach. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Massif Central&#8217;s climbing character, short explosive efforts rather than sustained alpine gradients, produces different GC selection than the Pyrenees or Alps. A rider who excels at 6\u201310 minute power outputs has an inherent advantage here that disappears on the Galibier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The stage revives memories of the 2024 Bastille Day stage to Le Lioran, where Poga\u010dar and Vingegaard sprinted at the summit in a rare two-up finish. In 2026, with more riders in contention and more climbing in the legs, the dynamics at the summit will be different, but the crowd intensity will be identical.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_94187f-35 .kt-block-spacer{height:39px;}.wp-block-kadence-spacer.kt-block-spacer-6992_94187f-35 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_94187f-35\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<style>\n.stage14-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage14-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage14-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage14-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage14-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: yellow;\n  color: #00000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage14-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage14-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage14-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage14-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage14-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage14-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage14-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage14-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage14-detail-wrap\">\n  <div class=\"stage14-detail-card\">\n    \n    <div class=\"stage14-detail-header\">\n      <h3 class=\"stage14-detail-title\">Stage 14 \u2014 Saturday, July 18<\/h3>\n      <span class=\"stage14-detail-badge\">Vosges<\/span>\n    <\/div>\n\n    <div class=\"stage14-detail-body\">\n      <div class=\"stage14-main-info\">\n        <div class=\"stage14-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline><polyline points=\"15 5 21 5 21 11\"><\/polyline>\n          <\/svg>\n          <span>Mulhouse \u2192 Le Markstein Fellering \u2b50<\/span>\n        <\/div>\n\n        <div class=\"stage14-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"><\/line><polyline points=\"7 8 3 12 7 16\"><\/polyline>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">156 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">4,253 m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"><\/path>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage14-description\">\n        A compact but explosive stage in the Vosges mountains. Six categorised climbs crammed into just 156 km, including two new ascents (Col du Page, Col du Haag) and the familiar Grand Ballon. A dark horse day that could upend the GC standings before the Alps.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage14-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage14-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage14-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage14-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage14-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage14-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage14-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage14-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage14-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage14-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage14-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage14-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.stage14-new {\n  display: inline-block;\n  background: #FFC72C;\n  color: #000;\n  font-size: 0.65rem;\n  font-weight: 700;\n  padding: 2px 6px;\n  border-radius: 4px;\n  vertical-align: middle;\n  margin-left: 4px;\n}\n\n@media (max-width: 600px) {\n  .stage14-table thead th,\n  .stage14-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage14-climbs-wrap\">\n  <div class=\"stage14-climbs-card\">\n    \n    <div class=\"stage14-climbs-header\">\n      <h3 class=\"stage14-climbs-title\">Confirmed Climbs \u2014 Stage 14<\/h3>\n      <span class=\"stage14-climbs-badge\">6 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage14-scroll\">\n      <table class=\"stage14-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage14-climb-name\">Col du Page <span class=\"stage14-new\">NEW<\/span><\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>NEW \u2014 First Tour appearance. Early Vosges climb.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage14-climb-name\">Grand Ballon<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>1,424 m<\/td>\n            <td>HC \u2014 Highest peak in Vosges range.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage14-climb-name\">Platzerwasel<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1\/HC \u2014 Mid-stage Vosges climb.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage14-climb-name\">Ballon d&#8217;Alsace<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>~1,250 m<\/td>\n            <td>Cat 1 \u2014 29th Tour appearance. First-ever TdF climb (1905).<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage14-climb-name\">Col du Haag <span class=\"stage14-new\">NEW<\/span><\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>NEW \u2014 Penultimate climb before Le Markstein.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage14-climb-name\">Le Markstein Fellering (summit finish)<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>1,267 m<\/td>\n            <td>HC \u2014 Summit finish after rolling plateau. Shorter mountain stage.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 14 is the 2026 Tour&#8217;s hidden GC trap. At 156 km, the shortest mountain stage of the race, it appears controllable. Seven ascents and 4,253m of climbing in 156 km is one of the highest climbing-per-kilometre ratios of any Tour stage in 2026. The Vosges profile rewards repeatedly explosive 4\u20138 minute efforts, and the sequence, Col du Page, Grand Ballon, Platzerwasel, Ballon d&#8217;Alsace, Col du Haag, Le Markstein, gives riders no extended recovery between efforts.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Ballon d&#8217;Alsace holds a specific historical claim: it was the very first categorised climb in Tour de France history, appearing in the 1905 edition. In 2026, it makes its 29th appearance. Stage 14 also introduces two new Vosges climbs, Col du Page and Col du Haag, whose gradients are unrecorded in previous professional race data. Neither team directors nor GC riders have power-file references for these specific roads. That unknown factor is one of ASO&#8217;s deliberate 2026 route innovations.<\/p>\n\n\n\n<style>\n.stage15-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage15-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage15-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage15-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage15-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #FFC72C;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(0,0,0,0.1);\n  white-space: nowrap;\n}\n\n.stage15-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage15-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage15-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage15-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage15-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage15-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage15-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage15-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage15-detail-wrap\">\n  <div class=\"stage15-detail-card\">\n    \n    <div class=\"stage15-detail-header\">\n      <h3 class=\"stage15-detail-title\">Stage 15 \u2014 Sunday, July 19<\/h3>\n      <span class=\"stage15-detail-badge\">NEW Summit<\/span>\n    <\/div>\n\n    <div class=\"stage15-detail-body\">\n      <div class=\"stage15-main-info\">\n        <div class=\"stage15-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"\/><polyline points=\"15 5 21 5 21 11\"\/>\n          <\/svg>\n          <span>Champagnole \u2192 Plateau de Solaison \u2b50<\/span>\n        <\/div>\n\n        <div class=\"stage15-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><polyline points=\"7 8 3 12 7 16\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">184 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">~4,700 m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage15-description\">\n        The steepest summit finish of the 2026 Tour \u2014 Plateau de Solaison (11.3 km at 9.1%). A new, unknown climb with a north-facing, cold profile. No prior Tour reference. Positioned as the final GC ambush before the second rest day.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage15-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage15-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage15-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage15-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage15-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage15-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage15-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage15-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage15-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage15-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage15-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage15-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.stage15-new {\n  display: inline-block;\n  background: #FFC72C;\n  color: #000;\n  font-size: 0.65rem;\n  font-weight: 700;\n  padding: 2px 6px;\n  border-radius: 4px;\n  vertical-align: middle;\n  margin-left: 4px;\n}\n\n@media (max-width: 600px) {\n  .stage15-table thead th,\n  .stage15-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage15-climbs-wrap\">\n  <div class=\"stage15-climbs-card\">\n    \n    <div class=\"stage15-climbs-header\">\n      <h3 class=\"stage15-climbs-title\">Confirmed Climbs \u2014 Stage 15<\/h3>\n      <span class=\"stage15-climbs-badge\">4 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage15-scroll\">\n      <table class=\"stage15-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage15-climb-name\">C\u00f4te de Doppes<\/td>\n            <td>15.2 km<\/td>\n            <td>3.6%<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 2 \u2014 Long Jura roller before the Alpine section.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage15-climb-name\">C\u00f4te de la Mulaz<\/td>\n            <td>3.6 km<\/td>\n            <td>4.2%<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 3 \u2014 Mid-stage short climb.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage15-climb-name\">Le Sal\u00e8ve <span class=\"stage15-new\">NEW<\/span><\/td>\n            <td>4.7 km<\/td>\n            <td>11.2%<\/td>\n            <td>~1,100 m<\/td>\n            <td>HC \u2014 First Tour appearance. Alpine gateway wall. Over 11% average.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage15-climb-name\">Plateau de Solaison <span class=\"stage15-new\">NEW<\/span> (summit finish)<\/td>\n            <td>11.3 km<\/td>\n            <td>9.1%<\/td>\n            <td>1,947 m<\/td>\n            <td>HC \u2014 NEW summit finish. Steepest avg of race. North-facing.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 15 closes Week 2 and opens the Alps. The day&#8217;s profile runs 184 km from Champagnole with a long opening section of rolling Jura terrain, the C\u00f4te de Doppes at 15.2 km and 3.6% is more of an extended drag than a climb, before the race drops into the Bellegarde valley and begins the Alpine sequence.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Le Sal\u00e8ve profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">4.7 km at 11.2%. A wall. One of the steepest HC climbs by average gradient in 2026. Le Sal\u00e8ve has appeared in the Crit\u00e9rium du Dauphin\u00e9 previously, but this marks its first Tour de France inclusion. The climb faces north toward Geneva and typically sits in shadow in the afternoon. Average gradient of 11.2% sustained over 4.7 km represents approximately 5\u20136 minutes of maximum effort for the best climbers. It functions as a selective filter before the Solaison finale.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Plateau de Solaison profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">11.3 km at 9.1% average. Altitude: 1,947m. North-facing. No prior Tour de France summit finish reference. The climb is known locally and appeared in the 2014 Crit\u00e9rium du Dauphin\u00e9, but zero GC riders have Tour power-file data on Solaison. The gradient averages 9.1% with sections exceeding 12% in the final kilometres. Cold temperatures are common even in July \u2014 the north-facing aspect keeps the road in shadow from mid-afternoon, and at nearly 2,000m the temperature drops rapidly after 16:00.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The tactical significance of Stage 15 is its timing: it is the last stage before Rest Day 2, positioned immediately before the only ITT of the race. A GC rider who loses 60 seconds on Solaison on July 19 faces the ITT on July 21, needing to gain it back \u2014 on a 26 km course that is not long enough to overturn a 60-second deficit without being the superior time trialist. Stage 15 is where the 2026 Tour builds maximum pre-rest-day uncertainty.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_c76322-f5 .kt-block-spacer{height:26px;}.wp-block-kadence-spacer.kt-block-spacer-6992_c76322-f5 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_c76322-f5\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<style>\n.restday2-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.restday2-card {\n  background: #f6fbee;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.restday2-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n}\n\n.restday2-icon {\n  width: 28px;\n  height: 28px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.restday2-icon svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n}\n\n.restday2-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.restday2-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.restday2-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n}\n\n.restday2-body strong {\n  color: #000;\n  font-weight: 600;\n}\n\n@media (max-width: 600px) {\n  .restday2-body {\n    font-size: 0.85rem;\n    padding: 1rem 1.2rem 1.2rem;\n  }\n}\n<\/style>\n\n<div class=\"restday2-wrap\">\n  <div class=\"restday2-card\">\n    \n    <div class=\"restday2-header\">\n      <div class=\"restday2-icon\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\n          <line x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"\/>\n        <\/svg>\n      <\/div>\n      <h3 class=\"restday2-title\">Rest Day 2 \u2014 Monday, July 20 \u2014 Haute-Savoie<\/h3>\n      <span class=\"restday2-badge\">Rest Day<\/span>\n    <\/div>\n\n    <div class=\"restday2-body\">\n      <p>The most consequential rest day of the 2026 Tour. Stage 16 (the only ITT, 26 km, Lake Geneva) follows directly the next morning. Teams spend the rest day reconnoitring the ITT course between \u00c9vian and Thonon, selecting time trial equipment (disc wheels, aero helmets, TT frames), and finalising rider position setups. GC riders who are in deficit after Solaison must decide how hard to push in the ITT versus conserving for the three Alpine summit finishes that follow. The tactical decisions made on July 20 determine July 21&#8217;s result.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_0e1818-e1 .kt-block-spacer{height:40px;}.wp-block-kadence-spacer.kt-block-spacer-6992_0e1818-e1 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_0e1818-e1\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Week Three<br>The Alpine Finale \u2014 Stages 18, 19 &amp; 20<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><em>July 23\u201325 \u00b7 Three consecutive summit finishes \u00b7 Back-to-back Alpe d&#8217;Huez \u00b7 Tour decided here<\/em><\/p>\n\n\n\n<style>\n.stage18-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage18-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage18-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage18-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage18-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: yellow;\n  color: black;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage18-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage18-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage18-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage18-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage18-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage18-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage18-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage18-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage18-detail-wrap\">\n  <div class=\"stage18-detail-card\">\n    \n    <div class=\"stage18-detail-header\">\n      <h4 class=\"stage18-detail-title\">Stage 18 \u2014 Thursday, July 23<\/h4>\n      <span class=\"stage18-detail-badge\">Alpine Opener<\/span>\n    <\/div>\n\n    <div class=\"stage18-detail-body\">\n      <div class=\"stage18-main-info\">\n        <div class=\"stage18-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline><polyline points=\"15 5 21 5 21 11\"><\/polyline>\n          <\/svg>\n          <span>Voiron \u2192 Orci\u00e8res-Merlette \u2b50 Summit Finish<\/span>\n        <\/div>\n\n        <div class=\"stage18-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"><\/line><polyline points=\"7 8 3 12 7 16\"><\/polyline>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">185 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"><\/polyline>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">~3,950 m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"><\/path>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage18-description\">\n        The Alpine block opens with a demanding summit finish at Orci\u00e8res-Merlette. The stage includes the Col de Manse and Col du Festre before the final 7.1 km climb at 6.7% to the ski station \u2014 a classic altitude finish last used in 2020, when Primo\u017e Rogli\u010d won.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage18-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage18-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage18-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage18-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage18-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage18-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage18-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage18-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage18-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage18-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage18-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage18-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n@media (max-width: 600px) {\n  .stage18-table thead th,\n  .stage18-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage18-climbs-wrap\">\n  <div class=\"stage18-climbs-card\">\n    \n    <div class=\"stage18-climbs-header\">\n      <h3 class=\"stage18-climbs-title\">Confirmed Climbs \u2014 Stage 18<\/h3>\n      <span class=\"stage18-climbs-badge\">3 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage18-scroll\">\n      <table class=\"stage18-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage18-climb-name\">Col du Manse<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1 \u2014 Stage 18 major approach climb.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage18-climb-name\">Col du Festre<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1 \u2014 Penultimate approach climb.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage18-climb-name\">Orci\u00e8res-Merlette (summit finish)<\/td>\n            <td>7.1 km<\/td>\n            <td>6.7%<\/td>\n            <td>1,838 m<\/td>\n            <td>HC \u2014 First of three consecutive summits. Last visited 2020.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 18 is the Alpine trilogy opener, the first of three consecutive summit finishes in three days. Voiron to Orci\u00e8res-Merlette via Col du Manse and Col du Festre covers 185 km. The stage is not the hardest of the three, it produces approximately 3,950m of climbing to Stage 19&#8217;s 3,605m and Stage 20&#8217;s 5,700m+, but its function is to set the tactical temperature. A dominant performance here by the yellow jersey holder signals the race may be over. A crack or hesitation signals Stage 19 may be contested with maximum aggression.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Orci\u00e8res-Merlette carries Tour de France legend. Luis Oca\u00f1a arrived here in 1971 after riding solo for 60 km from the valley, finishing 9 minutes ahead of Eddy Merckx in what remains one of the most extraordinary individual performances in race history. Roglic won here in 2020 from a small group. The ski station at 1,838m altitude produces a summit finish where the air pressure is measurably thinner, roughly 79% of sea-level air pressure, making the final minutes of climbing genuinely harder than identical gradient at lower altitude.<\/p>\n\n\n\n<style>\n.stage19-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage19-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage19-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage19-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage19-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #FFC72C;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(0,0,0,0.1);\n  white-space: nowrap;\n}\n\n.stage19-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage19-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage19-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage19-route-block svg {\n  width: 24px;\n  height: 24px;\n  stroke: #27500A;\n  flex-shrink: 0;\n}\n\n.stage19-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage19-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n@media (max-width: 600px) {\n  .stage19-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage19-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage19-detail-wrap\">\n  <div class=\"stage19-detail-card\">\n    \n    <div class=\"stage19-detail-header\">\n      <h3 class=\"stage19-detail-title\">Stage 19 \u2014 Friday, July 24<\/h3>\n      <span class=\"stage19-detail-badge\">Alpe d&#8217;Huez<\/span>\n    <\/div>\n\n    <div class=\"stage19-detail-body\">\n      <div class=\"stage19-main-info\">\n        <div class=\"stage19-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"3 17 9 11 13 15 21 5\"\/><polyline points=\"15 5 21 5 21 11\"\/>\n          <\/svg>\n          <span>Gap \u2192 Alpe d&#8217;Huez \u2b50 \u2014 Day One<\/span>\n        <\/div>\n\n        <div class=\"stage19-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><polyline points=\"7 8 3 12 7 16\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">128 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">3,605 m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Type<\/div>\n              <div class=\"stat-value\">Mountain<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage19-description\">\n        The first of two consecutive summit finishes at Alpe d&#8217;Huez \u2014 the most iconic climb in Tour de France history. Stage 19 climbs from Gap via the Col Bayard, Col du Noyer, and Col d&#8217;Ornon before the classic 21-hairpin ascent (13.8 km at 8.1%). A compact but brutal stage that will test the GC contenders ahead of the Queen Stage.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage19-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage19-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage19-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage19-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage19-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: yellow;\n  color: black;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.stage19-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage19-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage19-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage19-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage19-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage19-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage19-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n@media (max-width: 600px) {\n  .stage19-table thead th,\n  .stage19-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage19-climbs-wrap\">\n  <div class=\"stage19-climbs-card\">\n    \n    <div class=\"stage19-climbs-header\">\n      <h3 class=\"stage19-climbs-title\">Confirmed Climbs \u2014 Stage 19<\/h3>\n      <span class=\"stage19-climbs-badge\">week 3<\/span>\n    <\/div>\n\n    <div class=\"stage19-scroll\">\n      <table class=\"stage19-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage19-climb-name\">Col Bayard<\/td>\n            <td>5.1 km<\/td>\n            <td>7.2%<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1 \u2014 Opening climb. Breakaway launch platform.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage19-climb-name\">Col du Noyer<\/td>\n            <td>7.2 km<\/td>\n            <td>8.5%<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1 \u2014 Sharpest regular pass of Stage 19. First GC selection.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage19-climb-name\">Col d&#8217;Ornon<\/td>\n            <td>5.6 km<\/td>\n            <td>6.2%<\/td>\n            <td>\u2014<\/td>\n            <td>Cat 1 \u2014 Penultimate climb, 35km from Alpe d&#8217;Huez base.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage19-climb-name\">Alpe d&#8217;Huez \u2014 Classic Ascent (summit finish)<\/td>\n            <td>13.8 km<\/td>\n            <td>8.1%<\/td>\n            <td>1,860 m<\/td>\n            <td>HC \u2014 21 numbered hairpins. Day 1 of back-to-back.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 19 is 128 km and 3,605 metres of climbing. Short. Savage. The pace will be high from kilometre zero because the stage is so compact that waiting is tactically pointless \u2014 by the time a rider considers attacking, the Col du Noyer will already be past and the Alpe ascent already underway.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Col du Noyer profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">7.2 km at 8.5%, the sharpest pass of Stage 19 and one of the steepest numbered cols in the entire 2026 race. It appears approximately 60 km from the finish, making it an ideal attack point for breakaway riders who want to build enough time to survive the Alpe d&#8217;Huez peloton charge. For GC riders, the Noyer is the first serious selection test of the stage, any sign of weakness here gets exploited immediately.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Alpe d&#8217;Huez profile \u2014 Day 1<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">13.8 km at 8.1% average from Le Bourg-d&#8217;Oisans at approximately 720m to the summit resort at 1,860m. The 21 numbered hairpins are each named after a Tour de France stage winner on Alpe d&#8217;Huez, from Fausto Coppi at hairpin 21 to the most recent champion at hairpin 1. The toughest sections are the first two kilometres (close to 10% average) and hairpins 10\u201311 in the middle section (also double-digit gradients). Hairpin 7, Dutch Corner, is the most densely packed spectator point in professional cycling. Arriving at Alpe d&#8217;Huez on Stage 19 with GC gaps intact from Stage 18 is the prerequisite for Stage 20 to be a genuine battle rather than a coronation.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_db1e8c-81 .kt-block-spacer{height:29px;}.wp-block-kadence-spacer.kt-block-spacer-6992_db1e8c-81 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_db1e8c-81\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<style>\n.stage20-detail-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage20-detail-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage20-detail-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage20-detail-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage20-detail-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #FFC72C;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(0,0,0,0.1);\n  white-space: nowrap;\n}\n\n.stage20-detail-body {\n  padding: 1.2rem 1.5rem 1.5rem;\n}\n\n.stage20-main-info {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n}\n\n.stage20-route-block {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  font-size: 1.2rem;\n  font-weight: 700;\n  color: #111;\n}\n\n.stage20-route-block svg {\n  width: 28px;\n  height: 28px;\n  stroke: #B8920A;\n  flex-shrink: 0;\n}\n\n.stage20-subtitle {\n  font-size: 0.9rem;\n  font-weight: 500;\n  color: #555;\n  margin-top: -0.5rem;\n  margin-bottom: 0.5rem;\n}\n\n.stage20-stats-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1rem;\n  background: #F8F8F6;\n  border-radius: 12px;\n  padding: 1rem 1.2rem;\n  border: 1px solid rgba(99,153,34,0.1);\n}\n\n.stat-item {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.stat-icon {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  color: #27500A;\n}\n\n.stat-icon svg {\n  width: 16px;\n  height: 16px;\n  stroke: #27500A;\n}\n\n.stat-label {\n  font-size: 0.7rem;\n  font-weight: 600;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  color: #666;\n  margin-bottom: 2px;\n}\n\n.stat-value {\n  font-size: 0.95rem;\n  font-weight: 600;\n  color: #111;\n}\n\n.stage20-description {\n  font-size: 0.9rem;\n  color: #1a1a1a;\n  line-height: 1.6;\n  border-top: 1px solid rgba(99,153,34,0.1);\n  padding-top: 1rem;\n}\n\n.stage20-record {\n  background: #FFC72C;\n  color: #000;\n  font-weight: 600;\n  padding: 2px 8px;\n  border-radius: 4px;\n  font-size: 0.8rem;\n  white-space: nowrap;\n}\n\n@media (max-width: 600px) {\n  .stage20-stats-grid {\n    grid-template-columns: 1fr 1fr;\n  }\n  .stage20-route-block {\n    font-size: 1rem;\n  }\n}\n<\/style>\n\n<div class=\"stage20-detail-wrap\">\n  <div class=\"stage20-detail-card\">\n    \n    <div class=\"stage20-detail-header\">\n      <h3 class=\"stage20-detail-title\">Stage 20 \u2014 Saturday, July 25 \u2014 QUEEN STAGE<\/h3>\n      <span class=\"stage20-detail-badge\">QUEEN<\/span>\n    <\/div>\n\n    <div class=\"stage20-detail-body\">\n      <div class=\"stage20-main-info\">\n        <div class=\"stage20-route-block\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M2 4l3 12h14l3-12-6 5-4-5-4 5-6-5z\"\/>\n            <circle cx=\"12\" cy=\"11\" r=\"2\"\/>\n          <\/svg>\n          <span>Le Bourg-d&#8217;Oisans \u2192 Alpe d&#8217;Huez \u2b50\u2b50<\/span>\n        <\/div>\n        <div class=\"stage20-subtitle\">The Most Climbing in Tour de France History<\/div>\n\n        <div class=\"stage20-stats-grid\">\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"\/><polyline points=\"7 8 3 12 7 16\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Distance<\/div>\n              <div class=\"stat-value\">171 km<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <polyline points=\"3 17 9 11 13 15 21 5\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Elevation Gain<\/div>\n              <div class=\"stat-value\">5,700m+ <span class=\"stage20-record\">RECORD<\/span><\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"stat-item\">\n            <div class=\"stat-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14 2 9.27l6.91-1.01L12 2z\"\/>\n              <\/svg>\n            <\/div>\n            <div>\n              <div class=\"stat-label\">Difficulty (PDI)<\/div>\n              <div class=\"stat-value\">58.8<\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"stage20-description\">\n        The Queen Stage of the 2026 Tour de France \u2014 the hardest single day of racing. Five colossal climbs including the Col de la Croix de Fer, Col du T\u00e9l\u00e9graphe, Col du Galibier (2,642 m, highest point of the race), the newly-paved Col de Sarenne, and a second consecutive finish at Alpe d&#8217;Huez. Total elevation gain exceeds 5,700 metres (18,700 ft) \u2014 a Tour de France record. The yellow jersey will be decided here.\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.stage20-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.stage20-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.stage20-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.stage20-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.stage20-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: yellow;\n  color: #000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(0,0,0,0.1);\n  white-space: nowrap;\n}\n\n.stage20-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.stage20-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.stage20-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.stage20-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.stage20-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.stage20-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.stage20-climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.stage20-new {\n  display: inline-block;\n  background: #FFC72C;\n  color: #000;\n  font-size: 0.65rem;\n  font-weight: 700;\n  padding: 2px 6px;\n  border-radius: 4px;\n  vertical-align: middle;\n  margin-left: 4px;\n}\n\n@media (max-width: 600px) {\n  .stage20-table thead th,\n  .stage20-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"stage20-climbs-wrap\">\n  <div class=\"stage20-climbs-card\">\n    \n    <div class=\"stage20-climbs-header\">\n      <h3 class=\"stage20-climbs-title\">Confirmed Climbs \u2014 Stage 20 (QUEEN STAGE)<\/h3>\n      <span class=\"stage20-climbs-badge\">5 Climbs<\/span>\n    <\/div>\n\n    <div class=\"stage20-scroll\">\n      <table class=\"stage20-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Category \/ Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"stage20-climb-name\">Col de la Croix de Fer<\/td>\n            <td>24 km<\/td>\n            <td>5.2%<\/td>\n            <td>2,067 m<\/td>\n            <td>HC \u2014 Long grinding opener. Alternates steep\/shallow ramps.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage20-climb-name\">Col du T\u00e9l\u00e9graphe<\/td>\n            <td>11.9 km<\/td>\n            <td>7.1%<\/td>\n            <td>1,566 m<\/td>\n            <td>HC \u2014 Almost no descent before Galibier. Continuous sustained effort.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage20-climb-name\">Col du Galibier \u2b50 ROOF OF 2026<\/td>\n            <td>17.7 km<\/td>\n            <td>6.9%<\/td>\n            <td>2,642 m<\/td>\n            <td>HC \u2014 Highest point 2026 Tour. Souvenir Henri Desgrange \u20ac5,000.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage20-climb-name\">Col de Sarenne (SE flank) \u2014 NEW DIRECTION <span class=\"stage20-new\">NEW<\/span><\/td>\n            <td>12.9 km<\/td>\n            <td>7.3%<\/td>\n            <td>\u2014<\/td>\n            <td>HC \u2014 New direction. ASO specifically repaved for 2026. Summit 15km from Alpe finish.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"stage20-climb-name\">Alpe d&#8217;Huez \u2014 Final Section (summit finish)<\/td>\n            <td>3.8 km<\/td>\n            <td>6.1%<\/td>\n            <td>1,860 m<\/td>\n            <td>HC \u2014 Final loop after Sarenne onto classic Alpe d&#8217;Huez road.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Stage 20 is the Tour de France Queen Stage \u2014 and according to PJAMM Cycling&#8217;s database, it features the most climbing of any single stage in Tour de France recorded history: 5,700+ metres (18,700+ feet) in 171 km, producing a PJAMM Difficulty Index (PDI) of 58.8. For reference, a typical alpine mountain stage PDI is 30\u201340. Stage 20&#8217;s 58.8 is among the highest ever recorded in a Grand Tour stage.<\/p>\n\n\n<style>.wp-block-kadence-advancedheading.kt-adv-heading6992_916dfc-f9, .wp-block-kadence-advancedheading.kt-adv-heading6992_916dfc-f9[data-kb-block=\"kb-adv-heading6992_916dfc-f9\"]{font-style:normal;}.wp-block-kadence-advancedheading.kt-adv-heading6992_916dfc-f9 mark.kt-highlight, .wp-block-kadence-advancedheading.kt-adv-heading6992_916dfc-f9[data-kb-block=\"kb-adv-heading6992_916dfc-f9\"] mark.kt-highlight{font-style:normal;color:#f76a0c;-webkit-box-decoration-break:clone;box-decoration-break:clone;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;}.wp-block-kadence-advancedheading.kt-adv-heading6992_916dfc-f9 img.kb-inline-image, .wp-block-kadence-advancedheading.kt-adv-heading6992_916dfc-f9[data-kb-block=\"kb-adv-heading6992_916dfc-f9\"] img.kb-inline-image{width:150px;vertical-align:baseline;}<\/style>\n<h4 class=\"kt-adv-heading6992_916dfc-f9 wp-block-kadence-advancedheading\" data-kb-block=\"kb-adv-heading6992_916dfc-f9\"><strong>Col de la Croix de Fer profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">24 km at 5.2% from Saint-Jean-de-Maurienne. The Croix de Fer is long and psychological rather than consistently steep, it alternates between 7\u20139% ramps and 3\u20134% flatter sections, making pacing difficult. At 2,067m summit altitude, it completes 29 km of continuous climbing before riders even reach the foot of the T\u00e9l\u00e9graphe.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Col du T\u00e9l\u00e9graphe + Col du Galibier profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The T\u00e9l\u00e9graphe (11.9 km at 7.1%) begins almost immediately after the Croix de Fer, there is a short descent to Valloire at 1,430m, then the T\u00e9l\u00e9graphe climbs directly onto the Galibier approach without meaningful recovery. The Galibier itself (17.7 km at 6.9%) reaches 2,642m \u2014 the highest point of the 2026 Tour. The final kilometres exceed 9% as the road crosses above the snow line. At 2,642m, air pressure is approximately 74% of sea level, riders generate roughly 14% less aerobic power at the same perceived effort than at sea level, even with altitude adaptation. Temperatures at the Galibier summit can reach 3\u20138\u00b0C with wind in late July.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Col de Sarenne (south-eastern flank) profile<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">12.9 km at 7.3%. This is the stage&#8217;s defining innovation. In 2013, ASO routed the Tour over the Sarenne descent in the opposite direction, and a French newspaper called it &#8216;la descente la plus stupide du Tour moderne&#8217; \u2014 the most stupid descent in the modern Tour \u2014 due to its unpaved surface and poor condition. For 2026, ASO repaved the south-eastern flank specifically to create this loop. The climb arrives after the Galibier, with the summit of Sarenne 15 km from the Alpe d&#8217;Huez finish line. Riders who descend the Sarenne aggressively gain 60\u201390 seconds over cautious descenders before the final Alpe section.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Alpe d&#8217;Huez \u2014 final section after Sarenne<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">3.8 km at 6.1%. After the Sarenne descent, the road loops around to join the classic Alpe d&#8217;Huez ascent for its final 3.8 km. This is a gentler gradient than the classic full ascent (8.1% average), the 6.1% final section feels dramatically different when arriving with 5,500m of previous climbing in the legs versus arriving from the valley as in Stage 19. The second summit finish on Alpe d&#8217;Huez in consecutive days is the first in Tour de France history.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_e5cddc-54 .kt-block-spacer{height:40px;}.wp-block-kadence-spacer.kt-block-spacer-6992_e5cddc-54 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_e5cddc-54\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">Tour de France 2026 KOM Classification \u2014 All Categorised Climbs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The full mountain points classification table for Tour de France 2026. Points are awarded to the first riders over every categorised summit across all 21 stages. The rider leading the KOM standings wears the polka dot jersey the following day.<\/p>\n\n\n\n<style>\n.full-climbs-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.full-climbs-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.full-climbs-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.full-climbs-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.full-climbs-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: orange;\n  color: #00000;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.full-climbs-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.full-climbs-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 800px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.full-climbs-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.full-climbs-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.4;\n}\n\n.full-climbs-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.full-climbs-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.climb-name {\n  font-weight: 600;\n  color: #111;\n}\n\n.climb-new-badge {\n  display: inline-block;\n  background: #FFC72C;\n  color: #000;\n  font-size: 0.65rem;\n  font-weight: 700;\n  padding: 2px 6px;\n  border-radius: 4px;\n  vertical-align: middle;\n  margin-left: 4px;\n}\n\n@media (max-width: 600px) {\n  .full-climbs-table thead th,\n  .full-climbs-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"full-climbs-wrap\">\n  <div class=\"full-climbs-card\">\n    \n    <div class=\"full-climbs-header\">\n      <h3 class=\"full-climbs-title\">Tour de France 2026 All Categorised Climbs data<\/h3>\n      <span class=\"full-climbs-badge\">Complete List<\/span>\n    <\/div>\n\n    <div class=\"full-climbs-scroll\">\n      <table class=\"full-climbs-table\">\n        <thead>\n          <tr>\n            <th>Climb<\/th>\n            <th>St.<\/th>\n            <th>Cat.<\/th>\n            <th>Length<\/th>\n            <th>Avg %<\/th>\n            <th>Summit<\/th>\n            <th>Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr><td class=\"climb-name\">C\u00f4te du Ch\u00e2teau de Montju\u00efc<\/td><td>2<\/td><td>Cat 2<\/td><td>1.6 km<\/td><td>9.3%<\/td><td>~160m<\/td><td>Barcelona Montju\u00efc circuit climb<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de Sant Feliu de Codines<\/td><td>3<\/td><td>Cat 3<\/td><td>~8km<\/td><td>~4%<\/td><td>~700m<\/td><td>Catalan opener<\/td><\/tr>\n          <tr><td class=\"climb-name\">Collada de Toses<\/td><td>3<\/td><td>Cat 1<\/td><td>9.3 km<\/td><td>6.5%<\/td><td>~1,800m<\/td><td>Cross-border climb<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Calvaire<\/td><td>3<\/td><td>HC<\/td><td>14.9 km<\/td><td>4.1%<\/td><td>1,836m<\/td><td>French border pass<\/td><\/tr>\n          <tr><td class=\"climb-name\">Les Angles \u2014 summit finish<\/td><td>3<\/td><td>HC<\/td><td>1.7 km<\/td><td>6.5%<\/td><td>1,750m<\/td><td>\u2b50 Summit finish<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de Coudins<\/td><td>4<\/td><td>Cat 2<\/td><td>10.5 km<\/td><td>5.5%<\/td><td>\u2014<\/td><td>Cathar country, Stage 4<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de Monts\u00e9gur<\/td><td>4<\/td><td>Cat 1<\/td><td>6.9 km<\/td><td>6.6%<\/td><td>\u2014<\/td><td>35km from Foix finish<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de Hourc\u00e8re (approx)<\/td><td>5<\/td><td>Cat 4<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Minor intermediate climb on flat stage<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col d&#8217;Aspin<\/td><td>6<\/td><td>HC<\/td><td>12 km<\/td><td>6.5%<\/td><td>1,490m<\/td><td>74th Tour appearance<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Tourmalet (via Campan)<\/td><td>6<\/td><td>HC<\/td><td>17 km<\/td><td>7.3%<\/td><td>2,115m<\/td><td>91st\/92nd appearance. Most-climbed in history.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Gavarnie-G\u00e8dre summit \u2014 NEW <span class=\"climb-new-badge\">NEW<\/span><\/td><td>6<\/td><td>HC<\/td><td>18.7 km<\/td><td>4% avg<\/td><td>~1,350m<\/td><td>\u2b50 NEW summit finish. UNESCO backdrop.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Suc au May<\/td><td>9<\/td><td>Cat 2<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Pre-rest-day hilly stage climb<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de la Griffoul \u2014 NEW <span class=\"climb-new-badge\">NEW<\/span><\/td><td>10<\/td><td>Cat 1<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>NEW \u2014 First Tour appearance<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de Pertus<\/td><td>10<\/td><td>Cat 1<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Approach to Puy Mary block<\/td><\/tr>\n          <tr><td class=\"climb-name\">Puy Mary \/ Pas de Peyrol<\/td><td>10<\/td><td>HC<\/td><td>\u2014<\/td><td>\u2014<\/td><td>1,589m<\/td><td>Massif Central centrepiece<\/td><\/tr>\n          <tr><td class=\"climb-name\">Le Lioran \u2014 summit finish<\/td><td>10<\/td><td>HC<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Ski stn<\/td><td>\u2b50 Bastille Day summit<\/td><\/tr>\n          <tr><td class=\"climb-name\">Jura hills (multiple Cat 3\/4)<\/td><td>13<\/td><td>Cat 3\/4<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Hilly stage. Breakaway terrain.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Page \u2014 NEW <span class=\"climb-new-badge\">NEW<\/span><\/td><td>14<\/td><td>Cat 2<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>NEW \u2014 First Tour appearance. Vosges opener.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Grand Ballon<\/td><td>14<\/td><td>HC<\/td><td>\u2014<\/td><td>\u2014<\/td><td>1,424m<\/td><td>Highest Vosges summit<\/td><\/tr>\n          <tr><td class=\"climb-name\">Platzerwasel<\/td><td>14<\/td><td>HC<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Vosges mid-stage climb<\/td><\/tr>\n          <tr><td class=\"climb-name\">Ballon d&#8217;Alsace<\/td><td>14<\/td><td>Cat 1<\/td><td>\u2014<\/td><td>\u2014<\/td><td>~1,250m<\/td><td>29th Tour appearance. First-ever TdF climb 1905.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Haag \u2014 NEW <span class=\"climb-new-badge\">NEW<\/span><\/td><td>14<\/td><td>Cat 1<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>NEW \u2014 Penultimate before Le Markstein.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Le Markstein Fellering \u2014 summit finish<\/td><td>14<\/td><td>HC<\/td><td>\u2014<\/td><td>\u2014<\/td><td>1,267m<\/td><td>\u2b50 Vosges summit finish. Rolling plateau.<\/td><\/tr>\n          <tr><td class=\"climb-name\">C\u00f4te de Doppes<\/td><td>15<\/td><td>Cat 2<\/td><td>15.2 km<\/td><td>3.6%<\/td><td>\u2014<\/td><td>Long Jura roller opening<\/td><\/tr>\n          <tr><td class=\"climb-name\">C\u00f4te de la Mulaz<\/td><td>15<\/td><td>Cat 3<\/td><td>3.6 km<\/td><td>4.2%<\/td><td>\u2014<\/td><td>Short mid-stage climb<\/td><\/tr>\n          <tr><td class=\"climb-name\">Le Sal\u00e8ve \u2014 NEW <span class=\"climb-new-badge\">NEW<\/span><\/td><td>15<\/td><td>HC<\/td><td>4.7 km<\/td><td>11.2%<\/td><td>~1,100m<\/td><td>NEW. Alpine gateway wall. HC by gradient.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Plateau de Solaison \u2014 NEW summit finish <span class=\"climb-new-badge\">NEW<\/span><\/td><td>15<\/td><td>HC<\/td><td>11.3 km<\/td><td>9.1%<\/td><td>1,947m<\/td><td>\u2b50 NEW. Steepest summit finish avg.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Manse<\/td><td>18<\/td><td>Cat 1<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Stage 18 approach. Cat 1.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Festre<\/td><td>18<\/td><td>Cat 1<\/td><td>\u2014<\/td><td>\u2014<\/td><td>\u2014<\/td><td>Penultimate climb before Orci\u00e8res.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Orci\u00e8res-Merlette \u2014 summit finish<\/td><td>18<\/td><td>HC<\/td><td>7.1 km<\/td><td>6.7%<\/td><td>1,838m<\/td><td>\u2b50 Oca\u00f1a legend (1971). Last visited 2020.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col Bayard<\/td><td>19<\/td><td>Cat 1<\/td><td>5.1 km<\/td><td>7.2%<\/td><td>\u2014<\/td><td>Stage 19 opener. Breakaway platform.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Noyer<\/td><td>19<\/td><td>Cat 1<\/td><td>7.2 km<\/td><td>8.5%<\/td><td>\u2014<\/td><td>Sharpest regular pass of Stage 19.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col d&#8217;Ornon<\/td><td>19<\/td><td>Cat 1<\/td><td>5.6 km<\/td><td>6.2%<\/td><td>\u2014<\/td><td>35km from Alpe d&#8217;Huez base.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Alpe d&#8217;Huez \u2014 Classic Ascent<\/td><td>19<\/td><td>HC<\/td><td>13.8 km<\/td><td>8.1%<\/td><td>1,860m<\/td><td>\u2b50 21 hairpins. Dutch Corner at #7. Day 1.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de la Croix de Fer<\/td><td>20<\/td><td>HC<\/td><td>24 km<\/td><td>5.2%<\/td><td>2,067m<\/td><td>Queen Stage opener. Long grind.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du T\u00e9l\u00e9graphe<\/td><td>20<\/td><td>HC<\/td><td>11.9 km<\/td><td>7.1%<\/td><td>1,566m<\/td><td>Leads almost directly onto Galibier.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col du Galibier \u2b50 ROOF 2026<\/td><td>20<\/td><td>HC<\/td><td>17.7 km<\/td><td>6.9%<\/td><td>2,642m<\/td><td>Highest point 2026. Souvenir H. Desgrange \u20ac5,000.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Col de Sarenne \u2014 NEW direction <span class=\"climb-new-badge\">NEW<\/span><\/td><td>20<\/td><td>HC<\/td><td>12.9 km<\/td><td>7.3%<\/td><td>\u2014<\/td><td>NEW direction. ASO-repaved. Summit 15km from Alpe.<\/td><\/tr>\n          <tr><td class=\"climb-name\">Alpe d&#8217;Huez \u2014 Sarenne finale<\/td><td>20<\/td><td>HC<\/td><td>3.8 km<\/td><td>6.1%<\/td><td>1,860m<\/td><td>\u2b50 Final loop. 2nd consecutive day. Tour record.<\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_d79442-4d .kt-block-spacer{height:39px;}.wp-block-kadence-spacer.kt-block-spacer-6992_d79442-4d .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_d79442-4d\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">The Climbs That Could Decide Tour de France 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every mountain stage has GC implications in 2026. But five specific climbs carry the greatest potential to permanently alter the yellow jersey situation. Here is each one, ranked by potential decisiveness, and the tactical question each climb forces riders to answer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Col du Galibier + Alpe d&#8217;Huez \u2014 Stage 20 (July 25)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The decisive pairing. The Galibier at 2,642m is where the attack that wins the Tour will happen \u2014 or where a defending yellow jersey rides their rivals into submission. Riders who survive the Croix de Fer, T\u00e9l\u00e9graphe, and Galibier with a group still around them face the Sarenne descent and then 3.8 km of Alpe d&#8217;Huez. No team has enough domestiques at this point to fully protect its leader. The Stage 20 result on Alpe d&#8217;Huez will almost certainly be different from Stage 19, fatigue produces unpredictable hierarchy shifts on a second consecutive mountain summit. This is the stage that, in 11 of the last 15 Tours, has definitively separated the champion from the podium.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Plateau de Solaison \u2014 Stage 15 (July 19)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The hidden ambush. Solaison is the only HC summit finish in 2026 where no GC rider has power-file reference data. At 9.1% average over 11.3 km, it is the steepest summit finish of the race. A GC rider who loses 60 seconds here before the rest day faces the Stage 16 ITT knowing they cannot easily recover those seconds in 26 km of time trialling. Solaison is ASO&#8217;s deliberate uncertainty injection into the final week: you cannot prepare for a summit you have never raced.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Stage 16 ITT \u2014 \u00c9vian to Thonon (July 21, 26 km)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Technically not a mountain stage, but its positioning between Week 2&#8217;s mountain carnage and Week 3&#8217;s Alpine finale makes it the 2026 Tour&#8217;s most consequential time check. Not long enough for a pure rouleur to gain 3 minutes. Long enough for the reigning Olympic ITT champion to gain 45\u201360 seconds on riders who are not specialists. If Evenepoel wins Stage 16 and the GC is within 90 seconds, the race becomes genuinely three-way for the first time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. Col du Tourmalet \u2014 Stage 6 (July 9)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The 91st or 92nd Tour de France appearance of the most-climbed col in race history. Stage 6 is the first occasion when GC riders cannot control the pace via team tactics alone \u2014 the Tourmalet strips away protection and exposes genuine form. It is the race&#8217;s first real answer to the question that has no other answer: who is actually ready for three weeks of this?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. Le Sal\u00e8ve + Plateau de Solaison \u2014 Stage 15 (July 19)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le Sal\u00e8ve at 4.7 km and 11.2% average precedes Solaison on Stage 15. Combined, they represent 16 km of climbing at above 10% average gradient. Back-to-back walls with no descent recovery between them is a physiological format that eliminates riders who rely on oxygen debt recovery between efforts. It is the only multi-climb sequence in 2026 that combines two HC climbs of over 9% average within the same final 60 km. Riders who survive Le Sal\u00e8ve in difficulty will not survive Solaison.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why the Final Week of Mountain Stages Decides the Tour<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In 11 of the last 15 Tour de France editions, the race winner was determined in the final week \u2014 specifically, by the final mountain stage or the final stage containing a major summit. Three consecutive summit finishes in Stages 18, 19, and 20, with only a flat transition day (Stage 17) for recovery, gives no GC team adequate time to rebuild after a Stage 18 setback. A rider who loses 45 seconds to Poga\u010dar on Orci\u00e8res-Merlette (Stage 18) on July 23 has 48 hours to recover before Stage 20 decides everything. That is one night of sleep and one flat sprint stage. It is not enough.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_fdb939-73 .kt-block-spacer{height:33px;}.wp-block-kadence-spacer.kt-block-spacer-6992_fdb939-73 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_fdb939-73\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">KOM Favourites \u2014 Who Wins the Polka Dot Jersey in 2026?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The polka dot jersey rarely goes to a GC contender in the modern Tour. Poga\u010dar swept the mountains classification in 2022 as a bonus to his yellow jersey attempt, but that required attacking on HC summits he was also targeting for GC time. In 2026, the GC competition is likely to be tight enough that the top five will not waste energy on intermediate mountain points. The polka dot jersey is there for specialist breakaway climbers with strong 15\u201325 minute power.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Primary KOM Contenders<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ben Healy (EF Education-EasyPost)<\/strong>: The Irishman won the Il Lombardia and multiple Tour stages with long-range attacks from breakaways. His power over 20\u201330 minutes on HC climbs makes him the strongest non-GC KOM threat. HC summit points on Stage 6 (Tourmalet, Gavarnie) and Stage 15 (Solaison) are his key targets.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"><strong>Giulio Ciccone (Lidl-Trek)<\/strong>: The Italian won the polka dot jersey in 2019. Ciccone specialises in reaching HC summits first from breakaways and can sustain the effort across multiple mountain stages. He is the most experienced dedicated KOM hunter in the 2026 field.<\/li>\n\n\n\n<li><strong>Alexey Lutsenko (Astana Qazaqstan)<\/strong>: Strong all-round rider with specific abilities on non-summit mountain stages. The Vosges (Stage 14) and Massif Central (Stage 10) are both profile types that suit Lutsenko&#8217;s repeated-effort power capacity.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"><strong>Felix Gall (Decathlon CMA CGM)<\/strong>: Gall won multiple alpine stages in his career via breakaway. If Seixas leads Decathlon&#8217;s GC effort, Gall has freedom to target KOM points independently. The HC climbs on Stages 18\u201320 are high-value targets for a rider operating without GC ambition.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The maximum potential KOM points total if a rider wins every HC climb in 2026 is approximately 350+ points across the 14 HC-rated summits. In practice, no single rider wins all HC points. A polka dot jersey winner typically accumulates 140\u2013200 points across three weeks. <br><br>The critical target stages for KOM accumulation are Stage 6 (three HC climbs, 75 points available), Stage 15 (two HC climbs, 50 points), and Stage 20 (four HC climbs, 100 points available). A rider who wins Stages 6 and 15 HC points from breakaways is almost certainly the polka dot jersey leader entering Week 3.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_99295a-05 .kt-block-spacer{height:40px;}.wp-block-kadence-spacer.kt-block-spacer-6992_99295a-05 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_99295a-05\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" style=\"text-transform:uppercase\">Mountain Stages Spectator Guide \u2014 Viewpoints, Weather &amp; Accommodation<\/h2>\n\n\n\n<style>\n.viewing-mtn-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.viewing-mtn-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.viewing-mtn-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.viewing-mtn-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.viewing-mtn-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.viewing-mtn-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.viewing-mtn-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 650px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.viewing-mtn-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.viewing-mtn-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.5;\n}\n\n.viewing-mtn-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.viewing-mtn-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.spot-location {\n  font-weight: 600;\n  color: #111;\n}\n\n.spot-stage {\n  white-space: nowrap;\n  font-weight: 500;\n}\n\n@media (max-width: 600px) {\n  .viewing-mtn-table thead th,\n  .viewing-mtn-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"viewing-mtn-wrap\">\n  <div class=\"viewing-mtn-card\">\n    \n    <div class=\"viewing-mtn-header\">\n      <h3 class=\"viewing-mtn-title\">Best Viewing Spots on the 2026 Mountain Stages<\/h3>\n      <span class=\"viewing-mtn-badge\">Spectator Guide<\/span>\n    <\/div>\n\n    <div class=\"viewing-mtn-scroll\">\n      <table class=\"viewing-mtn-table\">\n        <thead>\n          <tr>\n            <th>#<\/th>\n            <th>Location<\/th>\n            <th>Stage<\/th>\n            <th>Why It&#8217;s the Best<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>1<\/td>\n            <td class=\"spot-location\">Alpe d&#8217;Huez \u2014 Hairpin 7, Dutch Corner<\/td>\n            <td class=\"spot-stage\">S19 + S20<\/td>\n            <td>Most famous spectator point in cycling. Tens of thousands of Dutch fans camp here for days. Both stages pass on consecutive days.<\/td>\n          <\/tr>\n          <tr>\n            <td>2<\/td>\n            <td class=\"spot-location\">Col du Tourmalet \u2014 Campan approach<\/td>\n            <td class=\"spot-stage\">S6<\/td>\n            <td>91 Tour appearances. The most celebrated climb in cycling history. Visible for the full final hour of climbing from Campan village.<\/td>\n          <\/tr>\n          <tr>\n            <td>3<\/td>\n            <td class=\"spot-location\">Puy Mary Summit \u2014 Bastille Day<\/td>\n            <td class=\"spot-stage\">S10<\/td>\n            <td>The Tour&#8217;s most emotional Bastille Day stage. Volcanic landscape, July 14 national crowd energy, summit atmosphere.<\/td>\n          <\/tr>\n          <tr>\n            <td>4<\/td>\n            <td class=\"spot-location\">Col du Galibier summit (2,642m)<\/td>\n            <td class=\"spot-stage\">S20<\/td>\n            <td>Highest point of the 2026 Tour. Road closes 24\u201348hrs early. Arrive the night before. Cold, exposed, extraordinary atmosphere.<\/td>\n          <\/tr>\n          <tr>\n            <td>5<\/td>\n            <td class=\"spot-location\">Le Markstein Fellering resort<\/td>\n            <td class=\"spot-stage\">S14<\/td>\n            <td>Easiest mountain summit finish to access in 2026. Vosges resort with good parking, flat summit area. Underrated viewing stage.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<style>\n.weather-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.weather-card {\n  background: #ffffff;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.weather-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n  background: #EFEEEB;\n}\n\n.weather-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.weather-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.weather-scroll {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  background: #ffffff;\n}\n\n.weather-table {\n  width: 100%;\n  border-collapse: collapse;\n  min-width: 700px;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n}\n\n.weather-table thead th {\n  font-family: 'Galibier', sans-serif;\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.6px;\n  color: #555;\n  text-align: left;\n  padding: 0.7rem 0.9rem;\n  background: #EFEEEB;\n  border-bottom: 1px solid rgba(99,153,34,0.2);\n  white-space: nowrap;\n}\n\n.weather-table tbody td {\n  padding: 0.7rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.08);\n  vertical-align: top;\n  line-height: 1.5;\n}\n\n.weather-table tbody tr:hover {\n  background: #F8F8F6;\n}\n\n.weather-table tbody tr:last-child td {\n  border-bottom: none;\n}\n\n.weather-location {\n  font-weight: 600;\n  color: #111;\n}\n\n@media (max-width: 600px) {\n  .weather-table thead th,\n  .weather-table tbody td {\n    padding: 0.5rem 0.6rem;\n    font-size: 0.8rem;\n  }\n}\n<\/style>\n\n<div class=\"weather-wrap\">\n  <div class=\"weather-card\">\n    \n    <div class=\"weather-header\">\n      <h3 class=\"weather-title\">Mountain Stage Weather \u2014 What to Expect<\/h3>\n      <span class=\"weather-badge\">Weather Guide<\/span>\n    <\/div>\n\n    <div class=\"weather-scroll\">\n      <table class=\"weather-table\">\n        <thead>\n          <tr>\n            <th>Location<\/th>\n            <th>Altitude<\/th>\n            <th>July Temp<\/th>\n            <th>Weather Notes<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td class=\"weather-location\">Col du Tourmalet<\/td>\n            <td>2,115 m<\/td>\n            <td>8\u201314\u00b0C<\/td>\n            <td>Wind-chill common above 1,800m. Can drop to 5\u00b0C with wind. Bring waterproof and warm layer even if Pau is 30\u00b0C.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"weather-location\">Plateau de Solaison<\/td>\n            <td>1,947 m<\/td>\n            <td>10\u201315\u00b0C<\/td>\n            <td>North-facing \u2014 in shadow from mid-afternoon. Frequent cloud. Stage starts cool and gets colder as the day progresses.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"weather-location\">Le Markstein (Vosges)<\/td>\n            <td>1,267 m<\/td>\n            <td>15\u201322\u00b0C<\/td>\n            <td>Milder than Alps. Rain common in Vosges forested terrain. Bring waterproofs but summit conditions are manageable.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"weather-location\">Col du Galibier<\/td>\n            <td>2,642 m<\/td>\n            <td>3\u201310\u00b0C<\/td>\n            <td>Coldest point of the 2026 Tour. Snow possible even in late July. Strong afternoon winds. Mandatory warm layer, waterproof, sun protection for lower slopes.<\/td>\n          <\/tr>\n          <tr>\n            <td class=\"weather-location\">Alpe d&#8217;Huez summit<\/td>\n            <td>1,860 m<\/td>\n            <td>12\u201320\u00b0C<\/td>\n            <td>Warmer than Galibier. Hot on lower hairpins in afternoon sun. Summit cools significantly by 17:00. Wear layers you can remove.<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Mountain Stage Road Closures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Alpe d&#8217;Huez (Stages 19 + 20)<\/strong>: Mountain road closes to motorised traffic the afternoon before each stage. With two consecutive stage finishes, closure for Stage 20 starts July 23 (two days early) for the upper mountain. No vehicles above Le Bourg-d&#8217;Oisans after approximately 17:00 on July 23.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"><strong>Col du Galibier (Stage 20)<\/strong>: Road typically closes 24\u201348 hours before a Tour summit. Arrive July 24 morning at latest \u2014 or the evening before if camping.<\/li>\n\n\n\n<li><strong>Plateau de Solaison (Stage 15)<\/strong>: Road closes morning of July 19, approximately 08:00 local time. Access by bicycle or foot after closure.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"><strong>Col du Tourmalet (Stage 6)<\/strong>: Typically closes afternoon of July 8 (day before). Campan village remains accessible much later \u2014 best base for early arrival.<\/li>\n\n\n\n<li><strong>Le Markstein \/ Vosges (Stage 14)<\/strong>: Resort access closes morning of July 18. Best parking in Cernay or Guebwiller outside the closure zone.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Accommodation Guide \u2014 Where to Stay for the Mountain Stages<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Alpe d&#8217;Huez (Stages 19 + 20):<\/strong> Alpe d&#8217;Huez resort is fully booked 12+ months ahead for race days. Alternatives: Le Bourg-d&#8217;Oisans (15 min from Alpe base \u2014 no vehicle access on race day, but accessible July 22 for camping above), Grenoble (45 min), Brian\u00e7on (1 hr).<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"><strong>Col du Galibier \/ Stage 20:<\/strong> Valloire (1 hr drive from Galibier, road closes during race), Saint-Michel-de-Maurienne, or Brian\u00e7on for pre-race night accommodation.<\/li>\n\n\n\n<li><strong>Col du Tourmalet (Stage 6):<\/strong> Lourdes (45 min) or Tarbes (40 min) as base. Campan village is the closest accessible point before the road closure.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30);margin-bottom:var(--wp--preset--spacing--30)\"><strong>Plateau de Solaison (Stage 15):<\/strong> Annecy (30 min from Solaison base) or Geneva (45 min) as base. Solaison village has very limited accommodation \u2014 book immediately if targeting this stage.<\/li>\n\n\n\n<li><strong>Le Markstein \/ Vosges (Stage 14):<\/strong> Colmar (30 min) or Mulhouse (45 min) as comfortable hotel base with good transport links to the stage route.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--30)\"><strong>Puy Mary \/ Massif Central (Stage 10):<\/strong> Aurillac (stage start, limited hotel capacity \u2014 book 6+ months out) or Murat (20 min from Puy Mary). Bastille Day crowd means full accommodation for 50km radius.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Ride the Mountain Stage Routes Yourself<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;\u00c9tape du Tour de France 2026 gives amateur riders the chance to tackle Stage 20 \u2014 Le Bourg-d&#8217;Oisans to Alpe d&#8217;Huez via the Croix de Fer, T\u00e9l\u00e9graphe, Galibier, and Sarenne \u2014 covering 170 km and approximately 5,400 metres of climbing. Entry is limited to 16,000 places. Registration at letapedutourdefrance.com opens several months before the event for those wanting to ride the mountain stage routes informally.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_017656-f8 .kt-block-spacer{height:38px;}.wp-block-kadence-spacer.kt-block-spacer-6992_017656-f8 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_017656-f8\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">What the Mountain Stages Mean for the General Classification<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The 2026 mountain stage route was built, explicitly, by Christian Prudhomme, to produce maximum uncertainty until Stage 20. The architecture achieves this through a specific structural logic.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What Type of Rider Does the Mountain Stage Route Favour?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eight mountain stages with five summit finishes and only one ITT of 26 km creates a clear profile requirement: a rider who can time trial competitively (not win, but not lose 3+ minutes), excel on explosive short summit finishes (Solaison 9.1%, Le Sal\u00e8ve 11.2%), survive repeated sustained Alpine efforts (Stage 20&#8217;s Croix de Fer + T\u00e9l\u00e9graphe + Galibier sequence), and maintain that output across three consecutive days of Alpine mountain stages (Stages 18, 19, 20) on days 20, 21, and 22 of a 23-day race. That profile does not describe a pure climber, a pure rouleur, or a one-week specialist. It describes Tadej Poga\u010dar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Vingegaard Path \u2014 Where He Wins the Mountain Stages<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jonas Vingegaard&#8217;s route to the yellow jersey requires winning Stage 6 (Tourmalet-Gavarnie), limiting Stage 16 ITT losses to under 45 seconds, and then producing Stage 20 climbing that definitively exceeds Poga\u010dar. The Giro d&#8217;Italia result will be the key variable entering July: a Vingegaard who has raced the Giro and won it arrives in Barcelona with less time to specifically peak for Tour mountain conditions, but also arrives with 23 days of race climbing in his legs and confidence that cannot be simulated in training. Historically, double Grand Tour winners have either peaked decisively in July or cracked in week two \u2014 there is no middle ground. Coppi, Merckx, Pantani, Indurain: each used the Giro as preparation, not a distraction.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Evenepoel Equation on Mountain Stages<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Remco Evenepoel&#8217;s mountain stage profile creates specific problems for his Tour ambitions. He abandoned on the Tourmalet in 2025; his return to Stage 6 is the most-watched moment of the first week. In 2022, at the Vuelta a Espa\u00f1a, he demonstrated the ability to sustain mountain stage performance across three weeks, finishing fourth in the mountain stages and winning the time trials. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The 2026 route&#8217;s single short ITT reduces his time trial advantage, while the Vosges Stage 14 profile, repeated explosive 4\u20138 minute efforts, plays to his specific power capacity better than sustained 20-minute alpine climbing. If Evenepoel survives Stage 6 within 1 minute of Poga\u010dar and wins Stage 16, the final week Alpine battle becomes unpredictable in a way the pre-race analysis cannot capture.<\/p>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_8e9d0b-5a .kt-block-spacer{height:35px;}.wp-block-kadence-spacer.kt-block-spacer-6992_8e9d0b-5a .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_8e9d0b-5a\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">Tour de France 2026 Mountain Stages \u2014 Frequently Asked Questions<\/h2>\n\n\n\n<style>\n.mtn-faq-wrap {\n  max-width: 960px;\n  margin: 2rem auto;\n  font-family: 'DM Sans', sans-serif;\n}\n\n.mtn-faq-card {\n  background: #f6fbee;\n  border-radius: 20px;\n  border: 1px solid rgba(99,153,34,0.25);\n  overflow: hidden;\n}\n\n.mtn-faq-header {\n  display: flex;\n  align-items: center;\n  gap: 12px;\n  padding: 1.2rem 1.5rem 0.9rem;\n  border-bottom: 1px solid rgba(99,153,34,0.15);\n}\n\n.mtn-faq-title {\n  font-family: 'Galibier', sans-serif !important;\n  font-size: 1.2rem !important;\n  font-weight: 700 !important;\n  text-transform: uppercase !important;\n  letter-spacing: 1.5px !important;\n  color: #111 !important;\n  margin: 0 !important;\n  line-height: 1.2 !important;\n  padding: 0 !important;\n  border: none !important;\n  flex: 1;\n}\n\n.mtn-faq-badge {\n  font-size: 0.65rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.8px;\n  background: #EAF3DE;\n  color: #27500A;\n  padding: 4px 10px;\n  border-radius: 12px;\n  border: 1px solid rgba(99,153,34,0.3);\n  white-space: nowrap;\n}\n\n.mtn-faq-list {\n  padding: 0.8rem 1.5rem 1.5rem;\n  display: flex;\n  flex-direction: column;\n  gap: 0.55rem;\n}\n\n.mtn-faq-item {\n  background: rgba(255,255,255,0.45);\n  border: 1px solid rgba(99,153,34,0.12);\n  border-radius: 12px;\n  overflow: hidden;\n  transition: background 0.2s ease, border-color 0.2s ease;\n}\n\n.mtn-faq-item:hover {\n  background: rgba(255,255,255,0.7);\n  border-color: rgba(99,153,34,0.25);\n}\n\n.mtn-faq-item.open {\n  background: rgba(255,255,255,0.7);\n  border-color: rgba(99,153,34,0.3);\n}\n\n.mtn-faq-question {\n  width: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 1rem;\n  background: none;\n  border: none;\n  padding: 1rem 1.2rem;\n  cursor: pointer;\n  font-family: 'DM Sans', sans-serif;\n  font-size: 0.9rem;\n  font-weight: 600;\n  color: #111;\n  text-align: left;\n  line-height: 1.4;\n  transition: background 0.15s ease;\n}\n\n.mtn-faq-question:hover {\n  background: rgba(234,243,222,0.35);\n}\n\n.mtn-faq-question-text {\n  flex: 1;\n  min-width: 0;\n}\n\n.mtn-faq-icon {\n  width: 22px;\n  height: 22px;\n  flex-shrink: 0;\n  transition: transform 0.25s ease;\n  stroke: #27500A;\n}\n\n.mtn-faq-item.open .mtn-faq-icon {\n  transform: rotate(45deg);\n}\n\n.mtn-faq-answer {\n  max-height: 0;\n  overflow: hidden;\n  transition: max-height 0.4s ease, padding 0.4s ease;\n  padding: 0 1.2rem;\n  font-size: 0.85rem;\n  color: #1a1a1a;\n  line-height: 1.65;\n  background: rgba(255,255,255,0.2);\n  border-top: 1px solid transparent;\n}\n\n.mtn-faq-item.open .mtn-faq-answer {\n  max-height: 600px;\n  padding: 0.9rem 1.2rem 1.1rem;\n  border-top-color: rgba(99,153,34,0.1);\n}\n\n.mtn-faq-answer p {\n  margin: 0;\n}\n\n.mtn-faq-answer strong {\n  color: #000;\n  font-weight: 600;\n}\n\n@media (max-width: 600px) {\n  .mtn-faq-list {\n    padding: 0.6rem 1rem 1.2rem;\n    gap: 0.45rem;\n  }\n  .mtn-faq-question {\n    padding: 0.85rem 1rem;\n    font-size: 0.85rem;\n  }\n  .mtn-faq-answer {\n    padding: 0 1rem;\n    font-size: 0.8rem;\n  }\n  .mtn-faq-item.open .mtn-faq-answer {\n    padding: 0.75rem 1rem 0.95rem;\n  }\n}\n<\/style>\n\n<div class=\"mtn-faq-wrap\">\n  <div class=\"mtn-faq-card\">\n    \n    <div class=\"mtn-faq-header\">\n      <h3 class=\"mtn-faq-title\">FAQs \u2014 your ALL Queries related to mountain stages<\/h3>\n      <span class=\"mtn-faq-badge\">FAQ<\/span>\n    <\/div>\n\n    <div class=\"mtn-faq-list\" id=\"mtnFaqAccordion\">\n\n      <!-- Q1 open by default -->\n      <div class=\"mtn-faq-item open\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"true\">\n          <span class=\"mtn-faq-question-text\">Q: How many mountain stages are in Tour de France 2026?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Tour de France 2026 has <strong>8 mountain stages<\/strong>: Stages 3, 6, 10, 14, 15, 18, 19, and 20. Of these, five have summit finishes and three are in the final week.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q2 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What is the hardest mountain stage in Tour de France 2026?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Stage 20 on July 25 is the hardest \u2014 171 km from Le Bourg-d&#8217;Oisans to Alpe d&#8217;Huez via Croix de Fer, T\u00e9l\u00e9graphe, Galibier (2,642m), Col de Sarenne, and the final Alpe d&#8217;Huez section. <strong>5,700+ metres (18,700+ ft)<\/strong> \u2014 a Tour de France record.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q3 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What are the summit finishes in Tour de France 2026?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>There are <strong>five summit finishes<\/strong>: Gavarnie-G\u00e8dre (S6), Le Lioran\/Puy Mary (S10), Plateau de Solaison (S15), Orci\u00e8res-Merlette (S18), and Alpe d&#8217;Huez on both S19 and S20 \u2014 the first back-to-back Alpe d&#8217;Huez summit finishes in Tour history.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q4 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: How does the Tour de France mountain classification work?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>The polka dot jersey awards points to the first riders over every categorised climb. HC gives 25 points to 1st down to 2 for 10th. Cat 1 gives 10 to 1st, Cat 2 gives 5, Cat 3 gives 2, Cat 4 gives 1 (1st only). The rider with most cumulative points wears the jersey.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q5 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What does HC mean in Tour de France?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>HC (Hors Cat\u00e9gorie) is the hardest climb category, above Cat 1. Average HC: 16.1 km at 7.4%. In 2026 there are 14 HC-rated climbs. Final climbs of a stage are automatically upgraded to HC.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q6 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What is the Souvenir Henri Desgrange?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>A special prize awarded to the first rider over the Col du Galibier, worth <strong>\u20ac5,000<\/strong>. Named after Tour founder Henri Desgrange. In 2026, the Galibier (2,642m) is the highest point of the race on Stage 20.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q7 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What is the Plateau de Solaison?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>A new summit finish in Haute-Savoie (Stage 15, July 19): <strong>11.3 km at 9.1%<\/strong>, rising to 1,947m. Steepest average summit finish of the 2026 race. North-facing, cold, no prior Tour GC reference.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q8 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: Why does Tour de France 2026 have two Alpe d&#8217;Huez stages?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Stage 19 uses the classic ascent, Stage 20 uses a completely different route via Croix de Fer, T\u00e9l\u00e9graphe, Galibier, and Sarenne. ASO designed the back-to-back finish to prevent any team from fully protecting its leader on the same mountain twice in consecutive days.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q9 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What is the first mountain stage of Tour de France 2026?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p><strong>Stage 3 (July 6, Granollers to Les Angles, 187 km)<\/strong> \u2014 crosses into France via Toses and Calvaire before a summit finish at Les Angles. The earliest mountain entry in the modern Tour era.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q10 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What time do Tour de France 2026 mountain stages start?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Neutral rollout around <strong>12:00\u201312:30 CET<\/strong>, racing starts ~13:00 CET. Stage 6 rolls out ~12:00 CET on July 9. Stage 20 (Queen Stage) ~12:00 CET on July 25. Finishes typically between 17:00 and 18:30 CET.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q11 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: Is Alpe d&#8217;Huez in two mountain stages?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Yes. Alpe d&#8217;Huez hosts the summit finish on both Stage 19 (from Gap) and Stage 20 (from Le Bourg-d&#8217;Oisans). First time in Grand Tour history the same mountain appears on consecutive days.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q12 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What is the highest point of Tour de France 2026 mountain stages?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p><strong>Col du Galibier at 2,642m<\/strong> (Stage 20). Second-highest: Col du Tourmalet at 2,115m (Stage 6). Other high finishes: Plateau de Solaison (1,947m) and Orci\u00e8res-Merlette (1,838m).<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q13 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: How steep is Alpe d&#8217;Huez?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Alpe d&#8217;Huez averages <strong>8.1% over 13.8 km<\/strong> from ~720m to 1,860m. Opening 2 km ~10%. Hairpins 10 and 11 push into double digits. 21 numbered hairpins (21 at bottom, 1 at top).<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q14 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: Which mountain stages have new climbs in 2026?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Six new climbs: C\u00f4te de Begues (S2), Gavarnie-G\u00e8dre summit finish (S6), Col de la Griffoul (S10), Col du Page &amp; Col du Haag (S14), Plateau de Solaison summit finish (S15), Col de Sarenne SE flank (S20).<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q15 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: How do I watch Tour de France 2026 mountain stages live?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>USA: Peacock. Australia: SBS On Demand (free). UK: TNT Sports\/Discovery+. France: France TV (free). Germany: ARD (free). Spain: RTVE (free). Netherlands: NOS (free). See our full live coverage guide for complete broadcaster list.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q16 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: Can I attend Tour de France 2026 mountain stages for free?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Yes \u2014 all roadside spectating is free. No tickets required. Arrive early; summit finishes like Alpe d&#8217;Huez, Galibier, and Tourmalet require arriving 24\u201348 hours ahead. Roads are open to cyclists and pedestrians until the caravan passes.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q17 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What mountain ranges does Tour de France 2026 pass through?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Five mountain ranges: <strong>Pyrenees<\/strong> (S3, S6), <strong>Massif Central<\/strong> (S10), <strong>Vosges<\/strong> (S14), <strong>Jura<\/strong> (S13 \u2014 hilly, not mountain-classified), and <strong>Alps<\/strong> (S15, 18, 19, 20). First edition in recent years to include all five.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q18 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: What is the shortest mountain stage in Tour de France 2026?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Stage 19 (Gap to Alpe d&#8217;Huez, 128 km, 3,605m climbing). Highest climbing-per-kilometre ratio of the race: 28.2 m\/km. No tactical neutral zone \u2014 pace is high from the start.<\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q19 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: Where can I find elevation profiles for each mountain stage?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>Official profiles at <strong>letour.fr<\/strong>. Detailed difficulty ratings at <strong>pjammcycling.com<\/strong>. No worries, no need to explore multiple sites, You can find every inch details on this page. <\/p>\n        <\/div>\n      <\/div>\n\n      <!-- Q20 -->\n      <div class=\"mtn-faq-item\">\n        <button class=\"mtn-faq-question\" aria-expanded=\"false\">\n          <span class=\"mtn-faq-question-text\">Q: How do I follow the mountain stages if I cannot watch live?<\/span>\n          <svg class=\"mtn-faq-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\n          <\/svg>\n        <\/button>\n        <div class=\"mtn-faq-answer\">\n          <p>SBS On Demand (Australia) publishes full-stage replays within hours \u2014 the best on-demand option globally. Our live blog archives key moments. Text updates and live commentary are available throughout each stage day.<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  const accordion = document.getElementById('mtnFaqAccordion');\n  if (!accordion) return;\n\n  accordion.addEventListener('click', function(e) {\n    const button = e.target.closest('.mtn-faq-question');\n    if (!button) return;\n\n    const currentItem = button.closest('.mtn-faq-item');\n    const isOpen = currentItem.classList.contains('open');\n\n    \/\/ Close all items\n    accordion.querySelectorAll('.mtn-faq-item').forEach(item => {\n      item.classList.remove('open');\n      item.querySelector('.mtn-faq-question').setAttribute('aria-expanded', 'false');\n    });\n\n    \/\/ Open clicked item if it wasn't already open\n    if (!isOpen) {\n      currentItem.classList.add('open');\n      button.setAttribute('aria-expanded', 'true');\n    }\n  });\n})();\n<\/script>\n\n\n<style>.wp-block-kadence-spacer.kt-block-spacer-6992_a3176c-19 .kt-block-spacer{height:40px;}.wp-block-kadence-spacer.kt-block-spacer-6992_a3176c-19 .kt-divider{border-top-width:1px;height:1px;border-top-color:#eee;width:80%;border-top-style:solid;}<\/style>\n<div class=\"wp-block-kadence-spacer aligncenter kt-block-spacer-6992_a3176c-19\"><div class=\"kt-block-spacer kt-block-spacer-halign-center\"><hr class=\"kt-divider\"\/><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"text-transform:uppercase\">The Mountain Stages Start July 6. The Race Ends July 25 on Alpe d&#8217;Huez.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Eight mountain stages. Thirty categorised climbs. Six new ascents. The Tourmalet, Galibier, Solaison, and Alpe d&#8217;Huez twice. The 2026 Tour de France mountain stages are the most concentrated and consequential in five years. Barcelona starts the story. The Alpe d&#8217;Huez Queen Stage ends it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tour de France 2026 Mountain Stages: All 8 Stages, Summit Finishes, Climbs &amp; KOM Classification This is the complete guide to Tour de France 2026 mountain stages \u2014 all 8 stages, every categorised climb with confirmed gradient and altitude data, the full KOM classification and mountain points table, detailed elevation profiles for each summit finish,&#8230;<\/p>","protected":false},"author":1,"featured_media":6997,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"above","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[28],"tags":[],"class_list":["post-6992","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tour-de-france"],"taxonomy_info":{"category":[{"value":28,"label":"Tour de France"}]},"featured_image_src_large":["https:\/\/franceletour.com\/wp-content\/uploads\/2026\/06\/tour-de-france-2026-mountain-stages-1024x536.png",1024,536,true],"author_info":{"display_name":"Gautier Durfort","author_link":"https:\/\/franceletour.com\/fr\/author\/gautier-durfort\/"},"comment_info":0,"category_info":[{"term_id":28,"name":"Tour de France","slug":"tour-de-france","term_group":0,"term_taxonomy_id":28,"taxonomy":"category","description":"Live the Tour de France cycling race. Get stage results, route maps, team insights, and historical highlights from every edition of Le Grand Boucle.","parent":0,"count":14,"filter":"raw","cat_ID":28,"category_count":14,"category_description":"Live the Tour de France cycling race. Get stage results, route maps, team insights, and historical highlights from every edition of Le Grand Boucle.","cat_name":"Tour de France","category_nicename":"tour-de-france","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/posts\/6992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/comments?post=6992"}],"version-history":[{"count":7,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/posts\/6992\/revisions"}],"predecessor-version":[{"id":7077,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/posts\/6992\/revisions\/7077"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/media\/6997"}],"wp:attachment":[{"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/media?parent=6992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/categories?post=6992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/franceletour.com\/fr\/wp-json\/wp\/v2\/tags?post=6992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}