{"product_id":"mhs-1-bike-package","title":"MHS 1 Bike Package, A Future Proof Modular Hitch System","description":"\u003ch4\u003eWhat's Needed to Build Your Bike Rack:\u003c\/h4\u003e\n\u003cul\u003e\n\u003cli\u003e1 Bike Rack: MHS 1-Bike Package\u003c\/li\u003e\n\u003cli\u003e2 Bike Rack: MHS 1-Bike Package and \u003ca href=\"https:\/\/sariscycling.myshopify.com\/products\/mhs-duo-1-bike-tray\" target=\"_blank\"\u003eMHS DUO 1-Bike Add-On Tray.\u003c\/a\u003e\n\u003c\/li\u003e\n\u003cli\u003eBikes with Fenders - add\u003cspan\u003e \u003c\/span\u003e\u003ca data-auth=\"NotApplicable\" href=\"https:\/\/saris.com\/products\/mhs-duo-fendered-bike-wheel-holder\" title=\"https:\/\/saris.com\/products\/mhs-duo-fendered-bike-wheel-holder\" data-linkindex=\"0\" data-olk-copy-source=\"MessageBody\"\u003eDuo Fender Accessory\u003c\/a\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003ch3\u003eSweet Solitude\u003c\/h3\u003e\n\u003cp\u003eSome days call for a little me-time in the fresh air. Whether that's out on the open road or crushing rock among the trees, the MHS 1+1 Bike platform hitch rack will get you there. Sturdy enough to transport one bike weighing in at 80 pounds, the 1+1 Bike platform is totally eBike friendly. It's modular, too. As part of the Saris Modular Hitch System (MHS), the 1+1 Base can be used as either a standalone bike rack for one, or as a 2-bike rack, with the\u003cspan\u003e \u003c\/span\u003e\u003ca href=\"https:\/\/sariscycling.myshopify.com\/products\/mhs-duo-1-bike-tray\"\u003eMHS DUO 1-Bike Add-On Tray\u003c\/a\u003e.\u003c\/p\u003e\n\u003cp\u003eTilting capabilities? You bet. The MHS 1+1 has multiple configurations for grabbing that \"one last thing\" or storage, loaded with a bike or not. Security? That's covered too, thanks to the included locking hitch pin and built-in lock cables designed to deter sticky-fingered joy riders. As for your bike? The MHS 1+1 is designed to transport a wide variety of bicycles, and to do it without ever touching your bike's paint.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003e**Ships in Multiple Boxes\u003c\/p\u003e\n\n\u003cstyle\u003e\n\/* Remove all gaps and create seamless flow *\/\n.mhs-page-content {\n  width: 100%;\n  margin: 0;\n  padding: 0;\n  line-height: 0;\n}\n\n.mhs-page-content img,\n.mhs-page-content video,\n.mhs-page-content iframe {\n  width: 100%;\n  height: auto;\n  display: block;\n  margin: 0;\n  padding: 0;\n  border: 0;\n}\n\n\/* Mini carousel sections *\/\n.mhs-mini-carousel {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n  background: white;\n  line-height: 0;\n}\n\n.mhs-carousel-track {\n  display: flex;\n  transition: transform 0.4s ease-in-out;\n  will-change: transform;\n}\n\n.mhs-carousel-slide {\n  min-width: 100%;\n  max-width: 100%;\n  flex-shrink: 0;\n  line-height: 0;\n}\n\n.mhs-carousel-slide img {\n  width: 100%;\n  height: auto;\n  display: block;\n  object-fit: contain;\n}\n\n\/* Responsive image map *\/\n.mhs-clickable-img {\n  position: relative;\n  width: 100%;\n  line-height: 0;\n}\n\n.mhs-clickable-img img {\n  width: 100%;\n  height: auto;\n  display: block;\n}\n\n\/* Clickable overlays for accessories *\/\n.mhs-product-overlay {\n  position: absolute;\n  cursor: pointer;\n  transition: background 0.3s;\n  z-index: 5;\n}\n\n.mhs-product-overlay:hover {\n  background: rgba(253, 185, 36, 0.15);\n  outline: 2px solid #FDB924;\n}\n\n\/* Carousel navigation dots - MINIMAL *\/\n.mhs-carousel-dots {\n  position: absolute !important;\n  bottom: 8px !important;\n  left: 50% !important;\n  transform: translateX(-50%) !important;\n  display: flex !important;\n  gap: 6px !important;\n  z-index: 10 !important;\n  padding: 4px 8px !important;\n  background: rgba(0, 0, 0, 0.2) !important;\n  border-radius: 12px !important;\n  backdrop-filter: blur(4px) !important;\n  margin: 0 !important;\n  width: auto !important;\n  height: auto !important;\n}\n\n.mhs-dot {\n  width: 6px !important;\n  height: 6px !important;\n  min-width: 6px !important;\n  min-height: 6px !important;\n  max-width: 6px !important;\n  max-height: 6px !important;\n  border-radius: 50% !important;\n  background: rgba(255, 255, 255, 0.5) !important;\n  border: none !important;\n  cursor: pointer !important;\n  transition: all 0.2s !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  box-shadow: none !important;\n  outline: none !important;\n  flex-shrink: 0 !important;\n}\n\n.mhs-dot:hover {\n  background: rgba(255, 255, 255, 0.8) !important;\n  transform: scale(1.2) !important;\n}\n\n.mhs-dot.active {\n  background: rgba(255, 255, 255, 1) !important;\n  width: 8px !important;\n  height: 8px !important;\n  min-width: 8px !important;\n  min-height: 8px !important;\n  max-width: 8px !important;\n  max-height: 8px !important;\n}\n\n\/* Carousel arrows - Yellow outlined with animation *\/\n.mhs-carousel-arrow {\n  position: absolute !important;\n  top: 50% !important;\n  transform: translateY(-50%) !important;\n  background: rgba(255, 255, 255, 0.95) !important;\n  border: 2px solid #FDB924 !important;\n  width: 36px !important;\n  height: 36px !important;\n  min-width: 36px !important;\n  min-height: 36px !important;\n  border-radius: 50% !important;\n  cursor: pointer !important;\n  z-index: 10 !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  font-size: 20px !important;\n  color: #333 !important;\n  transition: all 0.3s !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  box-shadow: 0 2px 10px rgba(253, 185, 36, 0.4) !important;\n  opacity: 1 !important;\n}\n\n.mhs-carousel-arrow:hover {\n  background: #FDB924 !important;\n  color: white !important;\n  transform: translateY(-50%) scale(1.15) !important;\n  box-shadow: 0 4px 16px rgba(253, 185, 36, 0.6) !important;\n  border-color: #FDB924 !important;\n}\n\n.mhs-carousel-arrow:active {\n  transform: translateY(-50%) scale(1.05) !important;\n}\n\n.mhs-arrow-prev {\n  left: 10px !important;\n}\n\n.mhs-arrow-next {\n  right: 10px !important;\n}\n\n\/* Pulse animation with yellow glow *\/\n@keyframes mhs-pulse-yellow {\n  0%, 100% {\n    transform: translateY(-50%) scale(1);\n    box-shadow: 0 2px 10px rgba(253, 185, 36, 0.4);\n  }\n  50% {\n    transform: translateY(-50%) scale(1.2);\n    box-shadow: 0 4px 20px rgba(253, 185, 36, 0.8), 0 0 0 8px rgba(253, 185, 36, 0.2);\n    border-width: 3px;\n  }\n}\n\n.mhs-arrow-next {\n  animation: mhs-pulse-yellow 2s ease-in-out 3;\n  animation-delay: 0.8s;\n}\n\n\/* Breathing animation - continuous subtle pulse *\/\n@keyframes mhs-breathe {\n  0%, 100% {\n    box-shadow: 0 2px 10px rgba(253, 185, 36, 0.4);\n  }\n  50% {\n    box-shadow: 0 3px 14px rgba(253, 185, 36, 0.6);\n  }\n}\n\n.mhs-carousel-arrow {\n  animation: mhs-breathe 3s ease-in-out infinite;\n}\n\n\/* Video placeholder *\/\n.mhs-video-wrapper {\n  position: relative;\n  width: 100%;\n  cursor: pointer;\n  line-height: 0;\n}\n\n.mhs-video-play-btn {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n  width: 60px;\n  height: 60px;\n  background: rgba(0, 0, 0, 0.6);\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  transition: all 0.3s;\n  z-index: 5;\n  border: 2px solid rgba(255, 255, 255, 0.8);\n}\n\n.mhs-video-wrapper:hover .mhs-video-play-btn {\n  background: rgba(0, 0, 0, 0.8);\n  transform: translate(-50%, -50%) scale(1.05);\n}\n\n.mhs-video-play-btn::after {\n  content: '▶';\n  color: white;\n  font-size: 24px;\n  padding-left: 4px;\n}\n\n\/* Desktop *\/\n@media (min-width: 769px) {\n  .mhs-carousel-dots {\n    bottom: 12px !important;\n    gap: 7px !important;\n    padding: 5px 10px !important;\n  }\n  \n  .mhs-dot {\n    width: 7px !important;\n    height: 7px !important;\n    min-width: 7px !important;\n    min-height: 7px !important;\n    max-width: 7px !important;\n    max-height: 7px !important;\n  }\n  \n  .mhs-dot.active {\n    width: 9px !important;\n    height: 9px !important;\n    min-width: 9px !important;\n    min-height: 9px !important;\n    max-width: 9px !important;\n    max-height: 9px !important;\n  }\n  \n  .mhs-carousel-arrow {\n    width: 40px !important;\n    height: 40px !important;\n    min-width: 40px !important;\n    min-height: 40px !important;\n    font-size: 22px !important;\n    border-width: 2.5px !important;\n  }\n  \n  .mhs-arrow-prev {\n    left: 14px !important;\n  }\n  \n  .mhs-arrow-next {\n    right: 14px !important;\n  }\n  \n  .mhs-video-play-btn {\n    width: 70px;\n    height: 70px;\n  }\n  \n  .mhs-video-play-btn::after {\n    font-size: 28px;\n  }\n}\n\n\/* Mobile *\/\n@media (max-width: 768px) {\n  .mhs-carousel-dots {\n    bottom: 6px !important;\n    gap: 5px !important;\n    padding: 3px 7px !important;\n  }\n  \n  .mhs-dot {\n    width: 5px !important;\n    height: 5px !important;\n    min-width: 5px !important;\n    min-height: 5px !important;\n    max-width: 5px !important;\n    max-height: 5px !important;\n  }\n  \n  .mhs-dot.active {\n    width: 7px !important;\n    height: 7px !important;\n    min-width: 7px !important;\n    min-height: 7px !important;\n    max-width: 7px !important;\n    max-height: 7px !important;\n  }\n  \n  .mhs-carousel-arrow {\n    width: 32px !important;\n    height: 32px !important;\n    min-width: 32px !important;\n    min-height: 32px !important;\n    font-size: 18px !important;\n  }\n  \n  .mhs-arrow-prev {\n    left: 8px !important;\n  }\n  \n  .mhs-arrow-next {\n    right: 8px !important;\n  }\n  \n  .mhs-video-play-btn {\n    width: 50px;\n    height: 50px;\n  }\n  \n  .mhs-video-play-btn::after {\n    font-size: 20px;\n  }\n}\n\u003c\/style\u003e\n\n\u003c!-- MHS Product Page Content --\u003e\n\u003cdiv class=\"mhs-page-content\"\u003e\n  \n  \u003c!-- Hero Video Section --\u003e\n  \u003cdiv id=\"mhsVideoSection\"\u003e\n    \u003cdiv class=\"mhs-video-wrapper\" onclick=\"loadMHSVideo()\"\u003e\n      \u003cimg loading=\"eager\" alt=\"Saris MHS Modular Hitch System\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Intro_a10136f0-c49d-4784-8f7e-2a953bb71c0d.jpg?v=1763929897\"\u003e\n      \u003cdiv class=\"mhs-video-play-btn\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \n  \u003c!-- Features Image --\u003e \n  \u003cimg loading=\"lazy\" alt=\"MHS highly compatible with integrated locks\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Features_350bc4e2-730b-4f1c-b20b-e918c0c6519c.jpg?v=1763929896\"\u003e \n  \n  \u003c!-- Modular Trays Carousel --\u003e\n  \u003cdiv id=\"carousel1\" class=\"mhs-mini-carousel\"\u003e\n    \u003cdiv class=\"mhs-carousel-track\"\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"Choose from 3 modular trays\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Carousel-Racks_40fb7c23-9cf4-4a95-957e-c07f1680cfe6.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"MHS Uno Rack for lightweight bikes\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Carousel-Uno.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"MHS Duo Rack for ebikes\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Carousel-Duo.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"MHS Cargo Basket\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Carousel-Cargo.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cbutton aria-label=\"Previous\" class=\"mhs-carousel-arrow mhs-arrow-prev\" onclick=\"moveCarousel('carousel1', -1)\"\u003e‹\u003c\/button\u003e \n    \u003cbutton aria-label=\"Next\" class=\"mhs-carousel-arrow mhs-arrow-next\" onclick=\"moveCarousel('carousel1', 1)\"\u003e›\u003c\/button\u003e\n    \u003cdiv class=\"mhs-carousel-dots\"\u003e\n      \u003cspan class=\"mhs-dot active\" onclick=\"goToSlide('carousel1', 0)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel1', 1)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel1', 2)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel1', 3)\"\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \n  \u003c!-- Hitch Options Carousel --\u003e\n  \u003cdiv id=\"carousel2\" class=\"mhs-mini-carousel\"\u003e\n    \u003cdiv class=\"mhs-carousel-track\"\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"What are you planning on carrying\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Toggle-Hitch_9c2656bf-88d6-4f71-8898-cc0abf055495.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"MHS 1+1=2 bikes - Hitch Base 4610\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Toggle-MHS-1_1.jpg?v=1763929895\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"MHS 2+1=3 bikes - Hitch Base 4620\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Toggle-MHS-2_1.jpg?v=1763929895\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"MHS 3+1=4 bikes - Hitch Base 4630\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Toggle-MHS-3_1.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"mhs-carousel-slide\"\u003e\u003cimg loading=\"lazy\" alt=\"Mix and match MHS configurations\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Toggle-Compare.jpg?v=1763929896\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cbutton aria-label=\"Previous\" class=\"mhs-carousel-arrow mhs-arrow-prev\" onclick=\"moveCarousel('carousel2', -1)\"\u003e‹\u003c\/button\u003e \n    \u003cbutton aria-label=\"Next\" class=\"mhs-carousel-arrow mhs-arrow-next\" onclick=\"moveCarousel('carousel2', 1)\"\u003e›\u003c\/button\u003e\n    \u003cdiv class=\"mhs-carousel-dots\"\u003e\n      \u003cspan class=\"mhs-dot active\" onclick=\"goToSlide('carousel2', 0)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel2', 1)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel2', 2)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel2', 3)\"\u003e\u003c\/span\u003e \n      \u003cspan class=\"mhs-dot\" onclick=\"goToSlide('carousel2', 4)\"\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \n  \u003c!-- Accessories Image with Clickable Areas --\u003e\n  \u003cdiv class=\"mhs-clickable-img\" id=\"mhsAccessories\"\u003e\n    \u003cimg loading=\"lazy\" alt=\"MHS add-ons and accessories\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Accessories_923e389c-0ea2-470c-a241-24282ffd765e.jpg?v=1763929896\" id=\"mhsAccessoriesImg\"\u003e\n  \u003c\/div\u003e\n  \n  \u003c!-- Lifestyle image --\u003e \n  \u003cimg loading=\"lazy\" alt=\"Saris MHS lifestyle image\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/files\/MHS-A_Premium_Video-Thumbnail_bd8038ea-0c52-47d9-abc7-b882f64d4868.jpg?v=1763929897\"\u003e\n  \n\u003c\/div\u003e\n\n\u003c!-- Scroll to Top with spacing --\u003e\n\u003cp style=\"text-align: center; margin: 30px 0 20px 0; line-height: normal;\"\u003e\n  \u003ca style=\"font-weight: bold; text-decoration: none;\" href=\"#\" onclick=\"window.scrollTo({top: 0, behavior: 'smooth'}); return false;\"\u003e▲ Scroll To Top\u003c\/a\u003e\n\u003c\/p\u003e\n\n\u003cscript\u003e\n\/\/ Carousel state management\nconst carouselStates = {};\n\nfunction initCarousel(carouselId) {\n  if (!carouselStates[carouselId]) {\n    const carousel = document.getElementById(carouselId);\n    if (!carousel) return;\n    \n    const track = carousel.querySelector('.mhs-carousel-track');\n    const slides = track.querySelectorAll('.mhs-carousel-slide');\n    \n    carouselStates[carouselId] = {\n      currentIndex: 0,\n      totalSlides: slides.length,\n      track: track,\n      slides: slides,\n      dots: carousel.querySelectorAll('.mhs-dot'),\n      prevBtn: carousel.querySelector('.mhs-arrow-prev'),\n      nextBtn: carousel.querySelector('.mhs-arrow-next')\n    };\n  }\n}\n\nfunction updateCarousel(carouselId) {\n  const state = carouselStates[carouselId];\n  if (!state) return;\n  \n  state.track.style.transform = `translateX(-${state.currentIndex * 100}%)`;\n  \n  state.dots.forEach((dot, i) =\u003e {\n    if (i === state.currentIndex) {\n      dot.classList.add('active');\n    } else {\n      dot.classList.remove('active');\n    }\n  });\n}\n\nfunction moveCarousel(carouselId, direction) {\n  initCarousel(carouselId);\n  const state = carouselStates[carouselId];\n  if (!state) return;\n  \n  state.currentIndex += direction;\n  \n  if (state.currentIndex \u003c 0) {\n    state.currentIndex = state.totalSlides - 1;\n  } else if (state.currentIndex \u003e= state.totalSlides) {\n    state.currentIndex = 0;\n  }\n  \n  updateCarousel(carouselId);\n}\n\nfunction goToSlide(carouselId, index) {\n  initCarousel(carouselId);\n  const state = carouselStates[carouselId];\n  if (!state) return;\n  \n  state.currentIndex = index;\n  updateCarousel(carouselId);\n}\n\n\/\/ YouTube video lazy loading\nlet videoLoaded = false;\n\nfunction loadMHSVideo() {\n  if (videoLoaded) return;\n  \n  const section = document.getElementById('mhsVideoSection');\n  if (!section) return;\n  \n  const iframe = document.createElement('iframe');\n  iframe.src = 'https:\/\/www.youtube.com\/embed\/KLsTDNILF_8?autoplay=1\u0026rel=0';\n  iframe.style.width = '100%';\n  iframe.style.aspectRatio = '16\/9';\n  iframe.style.display = 'block';\n  iframe.style.border = 'none';\n  iframe.style.margin = '0';\n  iframe.style.padding = '0';\n  iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture';\n  iframe.allowFullscreen = true;\n  iframe.title = 'Saris MHS Modular Hitch System Product Video';\n  \n  section.innerHTML = '';\n  section.appendChild(iframe);\n  videoLoaded = true;\n}\n\n\/\/ Accessories clickable areas - CORRECTED URLS\nfunction createAccessoryHotspots() {\n  const container = document.getElementById('mhsAccessories');\n  const img = document.getElementById('mhsAccessoriesImg');\n  if (!container || !img) return;\n  \n  const products = [\n    { name: 'MHS Uno Add-on Tray', sku: '4651', url: '\/products\/mhs-uno-single-arm-1-bike-add-on-tray', left: '0%', top: '62%', width: '16.5%', height: '38%' },\n    { name: 'MHS Duo Add-on Tray', sku: '4650', url: '\/products\/mhs-duo-1-bike-add-on-tray', left: '19%', top: '62%', width: '16.5%', height: '38%' },\n    { name: 'MHS Duo Fendered Bike Wheel Holder', sku: '4696', url: '\/products\/mhs-duo-fendered-bike-wheel-holder', left: '41.5%', top: '62%', width: '16.5%', height: '38%' },\n    { name: 'MHS Duo Ramp', sku: '4968', url: '\/products\/mhs-ramp', left: '64%', top: '62%', width: '16.5%', height: '38%' },\n    { name: 'MHS Lighting Kit', sku: '4695', url: '\/products\/mhs-light-kit', left: '83.5%', top: '62%', width: '16.5%', height: '38%' }\n  ];\n  \n  products.forEach(product =\u003e {\n    const overlay = document.createElement('a');\n    overlay.href = product.url;\n    overlay.className = 'mhs-product-overlay';\n    overlay.title = `Shop ${product.name}`;\n    overlay.style.left = product.left;\n    overlay.style.top = product.top;\n    overlay.style.width = product.width;\n    overlay.style.height = product.height;\n    container.appendChild(overlay);\n  });\n}\n\n\/\/ Initialize everything\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', initializeEverything);\n} else {\n  initializeEverything();\n}\n\nfunction initializeEverything() {\n  initCarousel('carousel1');\n  initCarousel('carousel2');\n  updateCarousel('carousel1');\n  updateCarousel('carousel2');\n  createAccessoryHotspots();\n}\n\n\/\/ Touch swipe support\ndocument.querySelectorAll('.mhs-mini-carousel').forEach(carousel =\u003e {\n  let touchStartX = 0;\n  let touchEndX = 0;\n  \n  carousel.addEventListener('touchstart', (e) =\u003e {\n    touchStartX = e.changedTouches[0].screenX;\n  }, { passive: true });\n  \n  carousel.addEventListener('touchend', (e) =\u003e {\n    touchEndX = e.changedTouches[0].screenX;\n    const carouselId = carousel.id;\n    \n    if (touchEndX \u003c touchStartX - 50) moveCarousel(carouselId, 1);\n    if (touchEndX \u003e touchStartX + 50) moveCarousel(carouselId, -1);\n  }, { passive: true });\n});\n\u003c\/script\u003e","brand":"Saris","offers":[{"title":"Default Title","offer_id":41334878732467,"sku":"4661","price":999.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0603\/4027\/3331\/products\/MHS1BikePackage_4610_4640_MHS1Bike_IMG_5773.jpg?v=1651778877","url":"https:\/\/saris.com\/products\/mhs-1-bike-package","provider":"Saris","version":"1.0","type":"link"}