{"product_id":"applicable-to-bmw-led-doors-welcome-lights-laser-lights-door-projection-floor-lights-x1-x2-x3-x4-x5-x6-7","title":"Projecteur laser de bienvenue LED pour portière BMW – X1 à X7","description":"\u003c!--cc-save-badge--\u003e\n\u003cstyle\u003e\n.cc-save-badge{display:inline-block;margin-left:10px;padding:3px 10px;border-radius:20px;background:#d21f1f;color:#fff;font-size:13px;font-weight:800;letter-spacing:.03em;vertical-align:middle;line-height:1.6;}\n.cc-save-note{flex-basis:100%;width:100%;margin-top:4px;font-size:13px;font-weight:600;color:#1e7d32;}\n\u003c\/style\u003e\n\u003cscript\u003e\n(function(){\n  var V=null;\n  function handle(){var m=location.pathname.match(\/\\\/products\\\/([^\\\/?#]+)\/);return m?m[1]:null;}\n  function load(){\n    if(V){return Promise.resolve(V);}\n    var h=handle(); if(!h){return Promise.reject();}\n    return fetch('\/products\/'+h+'.js').then(function(r){return r.json();}).then(function(p){V={};p.variants.forEach(function(v){V[String(v.id)]=v;});return V;});\n  }\n  function currentId(){\n    var el=document.querySelector('form[action*=\"\/cart\/add\"] [name=\"id\"]');\n    if(el \u0026\u0026 el.value){return String(el.value);}\n    var m=location.search.match(\/variant=(\\d+)\/); return m?m[1]:null;\n  }\n  function sep(c,p,t,d){var s=(c\/100).toFixed(p).split('.');return s[0].replace(\/(\\d)(?=(\\d{3})+$)\/g,'$1'+t)+(s[1]?d+s[1]:'');}\n  function money(c){\n    var p=(c%100===0)?0:2,f='';\n    try{f=String(window.themeGlobalVariables.settings.money_format||'');}catch(e){}\n    if(f.indexOf('{'+'{')\u003e-1){\n      var x=document.createElement('textarea');x.innerHTML=f.replace(\/\u003c[^\u003e]*\u003e\/g,'');f=x.value;\n      var k=(f.match(\/\\{\\{\\s*(\\w+)\\s*\\}\\}\/)||[])[1]||'amount',v;\n      if(k.indexOf('no_decimals')\u003e-1){p=0;}\n      if(k.indexOf('comma_separator')\u003e-1){v=sep(c,p,'.',',');}\n      else if(k.indexOf('apostrophe')\u003e-1){v=sep(c,p,\"'\",'.');}\n      else if(k.indexOf('period_and_space')\u003e-1){v=sep(c,p,' ','.');}\n      else if(k.indexOf('space_separator')\u003e-1){v=sep(c,p,' ',',');}\n      else{v=sep(c,p,',','.');}\n      return f.replace(\/\\{\\{\\s*\\w+\\s*\\}\\}\/,function(){return v;});\n    }\n    try{return new Intl.NumberFormat('en',{style:'currency',currency:window.Shopify.currency.active,minimumFractionDigits:p,maximumFractionDigits:p}).format(c\/100);}catch(e){}\n    return '$'+(c\/100).toFixed(p);\n  }\n  function render(){\n    load().then(function(map){\n      var v=map[currentId()];\n      var box=document.querySelector('.product-detail__price .card-product-price');\n      if(!box){return;}\n      var b=box.querySelector('.cc-save-badge'), n=box.querySelector('.cc-save-note');\n      if(v \u0026\u0026 v.compare_at_price \u0026\u0026 v.compare_at_price\u003ev.price){\n        var pct=Math.round((v.compare_at_price-v.price)*100\/v.compare_at_price);\n        if(!b){b=document.createElement('span');b.className='cc-save-badge';box.appendChild(b);}\n        if(!n){n=document.createElement('div');n.className='cc-save-note';box.appendChild(n);}\n        b.textContent='SAVE '+pct+'%';\n        n.textContent='You save '+money(v.compare_at_price-v.price)+' vs. buying separately';\n        b.style.display='';n.style.display='';\n      } else { if(b){b.style.display='none';} if(n){n.style.display='none';} }\n    }).catch(function(){});\n  }\n  var t=null;\n  function later(){clearTimeout(t);t=setTimeout(render,200);}\n  if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',render);}else{render();}\n  document.addEventListener('change',later,true);\n  try{new MutationObserver(function(m){for(var i=0;i\u003cm.length;i++){var x=m[i].target;if(x.closest \u0026\u0026 (x.closest('.cc-save-badge')||x.closest('.cc-save-note'))){return;}}later();}).observe(document.querySelector('.product-detail__price')||document.body,{childList:true,subtree:true,characterData:true});}catch(x){}\n})();\n\u003c\/script\u003e\n\u003c!--\/cc-save-badge--\u003e\n\u003ch3\u003eDescription du produit\u003c\/h3\u003e\n\u003cp\u003eAjoutez un éclairage de bienvenue laser à la portière de votre BMW. Chaque module projette au sol un logo HD net et spécifique au modèle (X1 à X7) à l'ouverture de la portière, grâce à une lentille HD à 4 couches pour une image claire et lumineuse et un boîtier en résine ABS résistant à la chaleur.\u003c\/p\u003e\n\n\u003cp\u003eL'installation remplace directement l'éclairage de portière d'origine — sans découpe, perçage ni démontage de la portière.\u003c\/p\u003e\n\n\u003ch3\u003eCaractéristiques principales\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLentille laser HD en verre à 4 couches pour une projection claire et lumineuse\u003c\/li\u003e\n\u003cli\u003eBoîtier en résine ABS résistant à la chaleur pour une durabilité à long terme\u003c\/li\u003e\n\u003cli\u003eDesign de logo spécifique au modèle (X1–X7)\u003c\/li\u003e\n\u003cli\u003eInstallation en remplacement direct — sans démontage de la portière\u003c\/li\u003e\n\u003cli\u003eDisponible en kit 2 portières (2 pcs) ou kit complet 4 portières (4 pcs)\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eCaractéristiques\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTaille du module : 68 mm x 24 mm\u003c\/li\u003e\n\u003cli\u003eCompatibilité : BMW X1, X2, X3, X4, X5, X6, X7\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eQuestions fréquentes\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eQ : Dois-je modifier mes portières pour l'installer ?\u003c\/strong\u003e\u003cbr\u003e\nR : Non — c'est un remplacement direct plug-and-play de l'éclairage de courtoisie d'origine, sans découpe ni démontage.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ : Dois-je choisir le kit 2 ou 4 portières ?\u003c\/strong\u003e\u003cbr\u003e\nR : Le kit 2 portières équipe uniquement les portières avant ; le kit 4 portières équipe les quatre pour un effet de bienvenue complet.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eQ : Conviendra-t-il à mon modèle BMW exact ?\u003c\/strong\u003e\u003cbr\u003e\nR : Sélectionnez votre modèle (X1–X7) lors du paiement — le logo projeté est spécifique à chaque modèle.\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  }\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    return okAll;\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})();\n\u003c\/script\u003e","brand":"Car Conceptor","offers":[{"title":"BMW X1 \/ 2 portes (2 pcs)","offer_id":49094688047326,"sku":"3976380010","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X1 \/ 4 portes (4 pcs)","offer_id":49094688080094,"sku":"3976380011","price":89.0,"currency_code":"USD","in_stock":true},{"title":"BMW X2 \/ 2 portes (2 pcs)","offer_id":49094688112862,"sku":"3976380012","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X2 \/ 4 portes (4 pcs)","offer_id":49094688145630,"sku":"3976380013","price":89.0,"currency_code":"USD","in_stock":true},{"title":"BMW X3 \/ 2 portes (2 pcs)","offer_id":49094688178398,"sku":"3976380014","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X3 \/ 4 portes (4 pcs)","offer_id":49094688211166,"sku":"3976380015","price":89.0,"currency_code":"USD","in_stock":true},{"title":"BMW X4 \/ 2 portes (2 pcs)","offer_id":49094688243934,"sku":"3976380016","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X4 \/ 4 portes (4 pcs)","offer_id":49094688276702,"sku":"3976380017","price":89.0,"currency_code":"USD","in_stock":true},{"title":"BMW X5 \/ 2 portes (2 pcs)","offer_id":49094688309470,"sku":"3976380018","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X5 \/ 4 portes (4 pcs)","offer_id":49094688342238,"sku":"3976380019","price":89.0,"currency_code":"USD","in_stock":true},{"title":"BMW X6 \/ 2 portes (2 pcs)","offer_id":49094688375006,"sku":"3976380020","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X6 \/ 4 portes (4 pcs)","offer_id":49094688407774,"sku":"3976380021","price":89.0,"currency_code":"USD","in_stock":true},{"title":"BMW X7 \/ 2 portes (2 pcs)","offer_id":49094688440542,"sku":"3976380022","price":59.0,"currency_code":"USD","in_stock":true},{"title":"BMW X7 \/ 4 portes (4 pcs)","offer_id":49094688473310,"sku":"3976380023","price":89.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0806\/9755\/7214\/files\/O1CN01KBv5ei2BF7T2cFueQ__2217612738308-0-cib.jpg?v=1790069065","url":"https:\/\/car-conceptor.com\/fr\/products\/applicable-to-bmw-led-doors-welcome-lights-laser-lights-door-projection-floor-lights-x1-x2-x3-x4-x5-x6-7","provider":"Car Conceptor","version":"1.0","type":"link"}