{"product_id":"original-factory-bmw-floating-wheel-hub-cover-badge-wheel-badge-1-series-3-series-5-series-7-series-x1x3x4x5x6-tire-center-logo","title":"BMW Floating Wheel Hub Cap Badge Set - 56mm\/68mm","description":"\u003cp\u003eUpgrade your BMW's wheels with these original-style floating center cap badges. The gyroscopic floating design keeps the BMW roundel level at all times, even while the wheel is spinning, for a premium always-upright look.\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cstrong\u003eFits BMW 1 Series, 3 Series, 5 Series, 7 Series, X1, X3, X4, X5, X6\u003c\/strong\u003e and more — available in 56mm and 68mm sizes to match your wheel's center bore\u003c\/li\u003e\n\u003cli\u003eSet of 4 caps per order\u003c\/li\u003e\n\u003cli\u003eAvailable in 7 styles: Original Blue \u0026amp; White, Original Anniversary, Limited Edition Collaboration, Original Black \u0026amp; White, Original All-Black, Anniversary Black \u0026amp; White, and Anniversary All-Black\u003c\/li\u003e\n\u003cli\u003eGyroscopic floating mechanism keeps the logo upright at all times, even at speed\u003c\/li\u003e\n\u003cli\u003eSimple press-fit installation onto your existing wheel center caps\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImportant:\u003c\/strong\u003e Measure your wheel's center cap diameter (56mm or 68mm) before ordering to ensure a proper fit.\u003c\/p\u003e\n\u003cstyle\u003e\n  .mb-20:has(.product_custom__field-heading){\n    background:#fdeaea;\n    border:2px solid #d21f1f;\n    border-radius:10px;\n    padding:16px 18px 18px;\n  }\n  .product_custom__field-heading{\n    color:#c41414;\n  }\n  .product_custom__field-description{\n    color:#a81111;\n  }\n  .mb-20:has(.product_custom__field-heading) .form-input{\n    border:2px solid #d21f1f;\n  }\n\u003c\/style\u003e\n\u003cscript\u003e\n(function(){\n  if (window.__bmwModelYearRequired) return;\n  window.__bmwModelYearRequired = true;\n  function fields(){\n    return Array.prototype.slice.call(document.querySelectorAll('input[name^=\"properties[\"]'))\n      .filter(function(i){ return \/BMW\\s*Model\/i.test(i.name) || \/BMW\\s*Model\/i.test(i.placeholder || ''); });\n  }\n  function mark(){\n    fields().forEach(function(i){\n      if (!i.hasAttribute('required')) {\n        i.setAttribute('required','required');\n        i.setAttribute('data-required-property','true');\n        if (i.placeholder \u0026\u0026 i.placeholder.indexOf('*') === -1) i.placeholder = i.placeholder + ' *';\n      }\n    });\n    overlayButtons();\n  }\n  function message(input, show){\n    var box = input.parentNode.querySelector('.bmw-req-msg');\n    if (!box \u0026\u0026 show){\n      box = document.createElement('div');\n      box.className = 'bmw-req-msg';\n      box.style.cssText = 'color:#c41414;font-size:13px;font-weight:600;margin:-8px 0 12px;';\n      box.textContent = 'Please enter your BMW model and production year before adding to cart.';\n      input.parentNode.insertBefore(box, input.nextSibling);\n    }\n    if (box) box.style.display = show ? '' : 'none';\n  }\n  function valid(){\n    var list = fields(), okAll = true, first = null;\n    list.forEach(function(i){\n      var empty = !i.value.trim();\n      message(i, empty);\n      if (empty){ okAll = false; if (!first) first = i; }\n    });\n    if (first){ try { first.focus(); first.scrollIntoView({behavior:'smooth', block:'center'}); } catch(e){} }\n    syncAllOverlays();\n    return okAll;\n  }\n  function overlayButtons(){\n    document.querySelectorAll('div[data-shopify=\"payment-button\"]').forEach(function(container){\n      if (container.dataset.bmwOverlay) { syncOverlay(container); return; }\n      container.dataset.bmwOverlay = 'true';\n      if (getComputedStyle(container).position === 'static') container.style.position = 'relative';\n      var overlay = document.createElement('div');\n      overlay.className = 'bmw-dynbtn-guard';\n      overlay.style.cssText = 'position:absolute;inset:0;z-index:5;';\n      overlay.addEventListener('click', function(e){\n        if (!valid()){ e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); }\n      }, true);\n      container.appendChild(overlay);\n      container._bmwOverlay = overlay;\n      syncOverlay(container);\n    });\n  }\n  function syncOverlay(container){\n    var overlay = container._bmwOverlay;\n    if (!overlay) return;\n    var ok = fields().length === 0 || fields().every(function(i){ return i.value.trim(); });\n    overlay.style.pointerEvents = ok ? 'none' : 'auto';\n  }\n  function syncAllOverlays(){\n    document.querySelectorAll('div[data-shopify=\"payment-button\"]').forEach(syncOverlay);\n  }\n  document.addEventListener('submit', function(e){\n    var f = e.target;\n    if (f \u0026\u0026 (f.action || '').indexOf('\/cart\/add') !== -1 \u0026\u0026 !valid()){\n      e.preventDefault(); e.stopImmediatePropagation();\n    }\n  }, true);\n  document.addEventListener('click', function(e){\n    var b = e.target.closest \u0026\u0026 e.target.closest('[name=\"add\"], .product-form__submit, .shopify-payment-button__button, .btn-checkout-dynamic button');\n    if (b \u0026\u0026 !valid()){ e.preventDefault(); e.stopImmediatePropagation(); }\n  }, true);\n  mark();\n  new MutationObserver(mark).observe(document.documentElement, {childList:true, subtree:true});\n  document.addEventListener('input', function(e){\n    if (e.target \u0026\u0026 fields().indexOf(e.target) !== -1) syncAllOverlays();\n  }, true);\n})();\n\u003c\/script\u003e","brand":"BMWMPARTSHOP","offers":[{"title":"Original Blue \u0026 White \/ 56mm","offer_id":50360497602917,"sku":"6102642057189","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original Blue \u0026 White \/ 68mm","offer_id":50360497635685,"sku":"6102642057190","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original Anniversary \/ 56mm","offer_id":50360497668453,"sku":"6102642057191","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original Anniversary \/ 68mm","offer_id":50360497701221,"sku":"6102642057192","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Limited Edition Collaboration \/ 56mm","offer_id":50360497733989,"sku":"6102642057193","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Limited Edition Collaboration \/ 68mm","offer_id":50360497766757,"sku":"6102642057194","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original Black \u0026 White \/ 56mm","offer_id":50360497799525,"sku":"6102642057195","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original Black \u0026 White \/ 68mm","offer_id":50360497832293,"sku":"6102642057196","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original All-Black \/ 56mm","offer_id":50360497865061,"sku":"6102642057197","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Original All-Black \/ 68mm","offer_id":50360497897829,"sku":"6102642057198","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Anniversary Black \u0026 White \/ 56mm","offer_id":50360497930597,"sku":"6102642057199","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Anniversary Black \u0026 White \/ 68mm","offer_id":50360497963365,"sku":"6102642057200","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Anniversary All-Black \/ 56mm","offer_id":50360497996133,"sku":"6102642057201","price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Anniversary All-Black \/ 68mm","offer_id":50360498028901,"sku":"6102642057202","price":75.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0845\/7437\/2197\/files\/hf_20260917_194440_ceb6fcad-95ea-46c4-91da-86a7301b8374.png?v=1789990065","url":"https:\/\/bmwmpartshop.com\/products\/original-factory-bmw-floating-wheel-hub-cover-badge-wheel-badge-1-series-3-series-5-series-7-series-x1x3x4x5x6-tire-center-logo","provider":"Mpartshop","version":"1.0","type":"link"}