{"product_id":"used-nike-cpr-4h-hybrid-right-handed-21-degrees-regular-flex-3","title":"Used Nike CPR 4H Hybrid - Right-Handed - 21 Degrees - Regular Flex","description":"\u003cstyle\u003e\n\/* Force a real 2-column grid on THIS list only, overriding the theme *\/\n#product-desc-list{\n  display:grid !important;\n  grid-template-columns:1fr 1fr;\n  gap:0;\n  list-style:none;\n  margin:0 0 16px 0;\n  padding:0;\n  column-count:initial !important; \/* kill multi-column layout *\/\n}\n#product-desc-list \u003e li{\n  margin:0 !important;\n  padding:6px !important;\n  border-bottom:1px solid #d9d9d9 !important;\n  float:none !important;          \/* kill float layouts *\/\n  width:auto !important;          \/* kill width:50% rules *\/\n}\n#product-desc-list \u003e li._left { border-right:1px solid #d9d9d9 !important; }\n\u003c\/style\u003e\n\n\u003cul id=\"product-desc-list\" style=\"visibility:hidden\"\u003e\n    \u003cli\u003e\n\u003cb\u003eClub Condition:\u003c\/b\u003e Very Good\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eClub Number:\u003c\/b\u003e 4H\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eLoft:\u003c\/b\u003e 21°\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eHandedness:\u003c\/b\u003e Right-Handed\u003c\/li\u003e\n\n\n\n\u003cli\u003e\n\u003cb\u003eLength:\u003c\/b\u003e\n  \u003ca href=\"#\" onclick=\"document.getElementById('lengthChartModal').showModal();return false;\"\u003e\n    40.5 in\n  \u003c\/a\u003e\n\u003c\/li\u003e\n\n\u003cdialog id=\"lengthChartModal\" class=\"length-modal\" onclick=\"if(event.target===this) this.close();\"\u003e\n  \u003cdiv class=\"length-card\"\u003e\n    \u003cbutton type=\"button\" class=\"length-close\" aria-label=\"Close\" onclick=\"this.closest('dialog').close()\"\u003e✕\u003c\/button\u003e\n    \u003cimg id=\"chart-img\" src=\"\/\/nextroundgolf.com\/cdn\/shop\/files\/Hybrid_Standard_Lengths.png?v=1740172902\u0026amp;width=1640\" alt=\"Hybrid Standard Lengths\"\u003e\n  \u003c\/div\u003e\n\u003c\/dialog\u003e\n\n\u003cstyle\u003e\n  \/* Force true centering and sit above theme layers *\/\n  #lengthChartModal.length-modal{\n    position: fixed !important;\n    inset: 50% auto auto 50% !important;\n    transform: translate(-50%, -50%) !important;\n    margin: 0 !important; padding: 0 !important; border: none !important;\n    background: transparent !important;\n    z-index: 999999 !important;\n  }\n  #lengthChartModal::backdrop{ background: rgba(0,0,0,.65); }\n\n  \/* The visible card (bigger + scroll-safe) *\/\n  #lengthChartModal .length-card{\n    position: relative;\n    width: min(90vw, 600px);     \/* \u003c- adjust this for desktop width *\/\n    max-height: 80vh;\n    background: #fff; border-radius: 12px;\n    box-shadow: 0 10px 30px rgba(0,0,0,.35);\n    overflow: hidden;\n  }\n\n  \/* Make image fill card; ignore any width\/height attrs *\/\n  #lengthChartModal img{\n    display: block;\n    width: 100% !important;\n    height: auto !important;\n    max-height: 80vh !important;\n    object-fit: contain;\n  }\n\n  \/* Close button INSIDE the card so it can’t be clipped *\/\n  #lengthChartModal .length-close{\n    position: absolute;\n    top: 8px; right: 8px;\n    width: 36px; height: 36px; border-radius: 999px;\n    border: 2px solid rgba(0,0,0,.2);\n    background: #fff; font-size: 20px; line-height: 1; cursor: pointer;\n    box-shadow: 0 2px 8px rgba(0,0,0,.15);\n  }\n\u003c\/style\u003e\n\n\n\n\n    \u003cli\u003e\n\u003cb\u003eShaft Flex:\u003c\/b\u003e Regular\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eShaft Brand:\u003c\/b\u003e Nike\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eShaft Model:\u003c\/b\u003e Stock Graphite\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eShaft Material:\u003c\/b\u003e Graphite\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eShaft Weight:\u003c\/b\u003e 65g\u003c\/li\u003e\n    \u003cli\u003e\n\u003cb\u003eHeadcover Included?:\u003c\/b\u003e No\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003cscript\u003e\n(function () {\n  \/\/ --- NEW LOGIC START ---\n  \/\/ 1. Capture the department variable\n  const department = \"Men\"; \n  \n  \/\/ 2. Identify the image element\n  const chartImg = document.getElementById('chart-img');\n  \n  \/\/ 3. Define the Women's Chart URL (from your sixth link)\n  const womenChartUrl = \"https:\/\/cdn.shopify.com\/s\/files\/1\/0601\/0165\/6746\/files\/Women_s_Hybrid_Standard_Lengths.png?v=1771424026\u0026width=1640\";\n\n  \/\/ 4. If the department is exactly \"Women\", swap the source\n  if (chartImg \u0026\u0026 department.trim() === 'Women') {\n    chartImg.src = womenChartUrl;\n    chartImg.alt = \"Women's Hybrid Standard Lengths\";\n  }\n  \/\/ --- NEW LOGIC END ---\n\n  const ul = document.getElementById('product-desc-list');\n  if (!ul) return;\n\n  function pruneAndLayout(){\n    \/\/ Remove empty\/unspecified rows instead of hiding them\n    const items = Array.from(ul.querySelectorAll('li'));\n    let kept = [];\n    items.forEach(li =\u003e {\n      const label = li.querySelector('b');\n      const labelText = label ? label.textContent : '';\n      const valueOnly = label\n        ? li.textContent.replace(labelText, '').trim()\n        : li.textContent.trim();\n\n      const emptyish =\n        valueOnly === '' ||\n        valueOnly === '°' ||\n        \/^(Not Specified|Not Specified°|Unspecified|Not Applicable|N\\\/A|NA)$\/i.test(valueOnly);\n\n      if (emptyish) li.remove();\n      else kept.push(li);\n    });\n\n    \/\/ Re-mark visible items as left\/right cells so borders line up\n    kept = Array.from(ul.querySelectorAll('li')); \/\/ in case we removed some\n    kept.forEach((li, i) =\u003e {\n      li.classList.toggle('_left',  i % 2 === 0);\n      li.classList.toggle('_right', i % 2 === 1);\n    });\n\n    \/\/ If odd count, add a blank cell so the last row closes cleanly\n    if (kept.length % 2 === 1) {\n      const filler = document.createElement('li');\n      filler.innerHTML = '';\n      ul.appendChild(filler);\n      filler.classList.add('_right');\n    }\n\n    \/\/ Show after we’re done so there’s no flash\n    ul.style.visibility = 'visible';\n  }\n\n  \/\/ Run immediately (before most theme scripts finish)\n  pruneAndLayout();\n\n  \/\/ Guard: if the theme reflows\/rewrites after our run, fix it again\n  const mo = new MutationObserver(() =\u003e pruneAndLayout());\n  mo.observe(ul, { childList: true, subtree: false, attributes: false });\n})();\n\u003c\/script\u003e\n\n\n\n\u003cstyle\u003e\n  \/*\n   * The theme duplicates the description for desktop tabs and\n   * mobile accordions. Hide empty copies and show every copy that\n   * actually contains a video iframe.\n   *\/\n  .nr-product-video {\n    display: none;\n    margin: 4px 0 32px;\n  }\n\n  .nr-product-video:has(iframe),\n  .nr-product-video.is-ready {\n    display: block !important;\n  }\n\n  .nr-product-video__title {\n    margin: 0 0 14px;\n    text-align: left;\n    color: inherit;\n    font-size: inherit;\n    font-weight: inherit;\n    line-height: inherit;\n  }\n\n  .nr-product-video__frame {\n    position: relative;\n    width: 100%;\n    max-width: 720px;\n    margin: 0;\n    overflow: hidden;\n    aspect-ratio: 16 \/ 9;\n    border-radius: 12px;\n    background: #000000;\n  }\n\n  .nr-product-video__frame iframe {\n    position: absolute !important;\n    inset: 0 !important;\n    display: block !important;\n    width: 100% !important;\n    height: 100% !important;\n    max-width: none !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    border: 0 !important;\n  }\n\n  @media screen and (max-width: 749px) {\n    .nr-product-video {\n      margin: 4px 0 24px;\n    }\n\n    .nr-product-video__title {\n      margin-bottom: 12px;\n      font-size: inherit;\n    }\n\n    .nr-product-video__frame {\n      max-width: 100%;\n      border-radius: 10px;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"nr-desc\"\u003e\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"The Nike CPR Hybrid is a high-performance used golf club that combines modern technology with affordability. Its unique design offers a lower center of gravity, providing exceptional lift and distance, even on off-center hits. The club's compact shape allows for greater control and accuracy, making it an ideal choice for golfers looking to improve their game. With its advanced technology and affordable price point, the Nike CPR Hybrid is a perfect blend of performance and value. This club is particularly beneficial for intermediate golfers seeking to enhance their precision and distance on the course.\"\u003e\n    The Nike CPR Hybrid is a high-performance used golf club that combines modern technology with affordability. Its unique design offers a lower center of gravity, providing exceptional lift and distance, even on off-center hits. The club's compact shape allows for greater control and accuracy, making it an ideal choice for golfers looking to improve their game. With its advanced technology and affordable price point, the Nike CPR Hybrid is a perfect blend of performance and value. This club is particularly beneficial for intermediate golfers seeking to enhance their precision and distance on the course.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"This hybrid shows noticeable face wear from ball strikes, minor scratches on the crown, and light sole wear from play. There are also minor paint chips and deep scratches on the head, indicating regular use.\"\u003e\n    This hybrid shows noticeable face wear from ball strikes, minor scratches on the crown, and light sole wear from play. There are also minor paint chips and deep scratches on the head, indicating regular use.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"nr-product-video\"\u003e\n    \u003cdiv class=\"nr-product-video__title\"\u003e\n      \u003cb\u003e\u003cu\u003eClub Model Overview\u003c\/u\u003e\u003c\/b\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"nr-product-video__frame\"\u003e\n      \n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cstyle\u003e\n  .pured-shaft-section { display: none; }\n  .pured-shaft-section[data-pured^=\"Yes\" i] { display: block; }\n\u003c\/style\u003e\n\u003cdiv class=\"pured-shaft-section section\" data-pured=\"No\"\u003e\n  \u003cb\u003e\u003cu\u003ePured Shaft Upgrade\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n  This shaft has been pured through computerized analysis to identify its most stable, consistent bending plane, optimizing performance, increasing distance, tightening dispersion, and reducing natural structural irregularities.\u003cbr\u003e\u003cbr\u003e\n\u003c\/div\u003e\n\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"Our Next Round Golf club experts recommend the Nike CPR Hybrid for golfers who struggle with long iron shots. With its unique design and technology, this club allows for easier and more accurate shots from the fairway or rough. We believe that this club can help improve your game and give you more confidence on the course.\"\u003e\n    \u003cb\u003e\u003cu\u003eOur Recommendation\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    Our Next Round Golf club experts recommend the Nike CPR Hybrid for golfers who struggle with long iron shots. With its unique design and technology, this club allows for easier and more accurate shots from the fairway or rough. We believe that this club can help improve your game and give you more confidence on the course.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section hide-if-empty\" data-val=\"Nike Golf disrupted the industry with bold designs, Tiger Woods partnerships, and tech-driven clubs before exiting the equipment market. Their legacy lives on through apparel, footwear, and iconic models like the VR and Covert drivers.\"\u003e\n    \u003cb\u003e\u003cu\u003eAbout Nike\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    Nike Golf disrupted the industry with bold designs, Tiger Woods partnerships, and tech-driven clubs before exiting the equipment market. Their legacy lives on through apparel, footwear, and iconic models like the VR and Covert drivers.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section\"\u003e\n    \u003cb\u003e\u003cu\u003ePlaying It Forward\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    By choosing this premium used hybrid, you're not only investing in your own game but also contributing to Next Round Golf's mission of making golf more affordable and accessible for enthusiasts at every skill level. You’re joining a passionate community dedicated to sustainability, continuous improvement, and the shared joy of discovering new potential on the course.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section\"\u003e\n    \u003cb\u003e\u003cu\u003eNext Round Guarantee\u003c\/u\u003e\u003c\/b\u003e\u003cbr\u003e\n    With over 18,000 five star reviews and a 30 day money back guarantee, you can trust Next Round Golf for high-quality used Nike golf clubs.\u003cbr\u003e\u003cbr\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"section\"\u003eStock # S2026-09-04-316770\u003c\/div\u003e\n  \u003cdiv class=\"section\"\u003eMaster SKU # 1004387\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  (function () {\n    function normalizeYouTubeUrl(source) {\n      if (!source) {\n        return source;\n      }\n\n      try {\n        var url = new URL(source, window.location.href);\n        var hostname = url.hostname\n          .toLowerCase()\n          .replace(\/^www\\.\/, \"\");\n        var videoId = \"\";\n\n        if (hostname === \"youtu.be\") {\n          videoId =\n            url.pathname.split(\"\/\").filter(Boolean)[0] || \"\";\n        } else if (\n          hostname === \"youtube.com\" ||\n          hostname === \"m.youtube.com\" ||\n          hostname === \"music.youtube.com\" ||\n          hostname === \"youtube-nocookie.com\"\n        ) {\n          if (url.pathname.indexOf(\"\/embed\/\") === 0) {\n            videoId =\n              url.pathname.replace(\"\/embed\/\", \"\").split(\"\/\")[0];\n          } else if (url.pathname === \"\/watch\") {\n            videoId = url.searchParams.get(\"v\") || \"\";\n          } else if (url.pathname.indexOf(\"\/shorts\/\") === 0) {\n            videoId =\n              url.pathname.replace(\"\/shorts\/\", \"\").split(\"\/\")[0];\n          } else if (url.pathname.indexOf(\"\/live\/\") === 0) {\n            videoId =\n              url.pathname.replace(\"\/live\/\", \"\").split(\"\/\")[0];\n          }\n        }\n\n        if (\n          !videoId ||\n          !\/^[A-Za-z0-9_-]{6,}$\/.test(videoId)\n        ) {\n          return source;\n        }\n\n        var parameters = new URLSearchParams(url.search);\n        parameters.delete(\"v\");\n        parameters.set(\"playsinline\", \"1\");\n\n        var queryString = parameters.toString();\n\n        return (\n          \"https:\/\/www.youtube.com\/embed\/\" +\n          encodeURIComponent(videoId) +\n          (queryString ? \"?\" + queryString : \"\")\n        );\n      } catch (error) {\n        return source;\n      }\n    }\n\n    function prepareVideoBlock(videoBlock) {\n      if (\n        !videoBlock ||\n        videoBlock.getAttribute(\"data-nr-video-ready\") === \"true\"\n      ) {\n        return;\n      }\n\n      var videoFrame = videoBlock.querySelector(\n        \".nr-product-video__frame\"\n      );\n\n      if (!videoFrame) {\n        return;\n      }\n\n      var iframe = videoFrame.querySelector(\"iframe\");\n\n      \/*\n       * Empty copies remain hidden through CSS. Do not remove them,\n       * because the theme can create and populate copies later.\n       *\/\n      if (!iframe) {\n        return;\n      }\n\n      var originalSource = iframe.getAttribute(\"src\") || \"\";\n      var normalizedSource = normalizeYouTubeUrl(originalSource);\n\n      if (\n        normalizedSource \u0026\u0026\n        normalizedSource !== originalSource\n      ) {\n        iframe.setAttribute(\"src\", normalizedSource);\n      }\n\n      iframe.removeAttribute(\"width\");\n      iframe.removeAttribute(\"height\");\n      iframe.removeAttribute(\"frameborder\");\n\n      iframe.setAttribute(\"loading\", \"lazy\");\n      iframe.setAttribute(\"allowfullscreen\", \"\");\n      iframe.setAttribute(\n        \"allow\",\n        \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n      );\n      iframe.setAttribute(\n        \"referrerpolicy\",\n        \"strict-origin-when-cross-origin\"\n      );\n\n      if (\n        !iframe.getAttribute(\"title\") ||\n        iframe.getAttribute(\"title\") === \"YouTube video player\"\n      ) {\n        iframe.setAttribute(\n          \"title\",\n          \"Golf club model overview video\"\n        );\n      }\n\n      videoBlock.setAttribute(\n        \"data-nr-video-ready\",\n        \"true\"\n      );\n      videoBlock.classList.add(\"is-ready\");\n    }\n\n    function initializeProductVideos(root) {\n      if (!root) {\n        return;\n      }\n\n      if (\n        root.nodeType === 1 \u0026\u0026\n        root.matches \u0026\u0026\n        root.matches(\".nr-product-video\")\n      ) {\n        prepareVideoBlock(root);\n      }\n\n      if (!root.querySelectorAll) {\n        return;\n      }\n\n      var videoBlocks = root.querySelectorAll(\n        \".nr-product-video\"\n      );\n\n      Array.prototype.forEach.call(\n        videoBlocks,\n        function (videoBlock) {\n          prepareVideoBlock(videoBlock);\n        }\n      );\n    }\n\n    if (window.nrInitializeProductVideos) {\n      window.nrInitializeProductVideos(document);\n      return;\n    }\n\n    window.nrInitializeProductVideos =\n      initializeProductVideos;\n\n    initializeProductVideos(document);\n\n    if (document.readyState === \"loading\") {\n      document.addEventListener(\n        \"DOMContentLoaded\",\n        function () {\n          initializeProductVideos(document);\n        },\n        { once: true }\n      );\n    }\n\n    \/*\n     * Process description copies created by the theme after the\n     * original Sellbrite description has rendered.\n     *\/\n    var videoObserver = new MutationObserver(\n      function (mutations) {\n        mutations.forEach(function (mutation) {\n          Array.prototype.forEach.call(\n            mutation.addedNodes,\n            function (addedNode) {\n              initializeProductVideos(addedNode);\n            }\n          );\n        });\n      }\n    );\n\n    if (document.documentElement) {\n      videoObserver.observe(document.documentElement, {\n        childList: true,\n        subtree: true\n      });\n    }\n\n    window.setTimeout(function () {\n      initializeProductVideos(document);\n      videoObserver.disconnect();\n    }, 10000);\n  })();\n\u003c\/script\u003e","brand":"Nike","offers":[{"title":"Default Title","offer_id":53948642328852,"sku":"S2026-09-04-316770","price":42.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0601\/0165\/6746\/files\/c0621efa-76e7-58e5-8ad3-85a5441def7f.jpg?v=1788557566","url":"https:\/\/nextroundgolf.com\/products\/used-nike-cpr-4h-hybrid-right-handed-21-degrees-regular-flex-3","provider":"Next Round","version":"1.0","type":"link"}