{"title":"Marmoleum","description":"\u003cp\u003eOntdek Marmoleum van Forbo: een natuurlijke, duurzame linoleumvloer op rollen van 200 cm breed. Kies uit twaalf woonkwaliteiten en 203 actuele kleuren. De prijzen worden overzichtelijk getoond per m2. Bestellen gaat per strekkende meter in stappen van 5 cm; 1 strekkende meter is 2 m2.\u003c\/p\u003e","products":[{"product_id":"marmoleum-real","title":"Marmoleum Real","description":"\u003cp\u003eEen klassiek gemarmerd dessin met zorgvuldig samengestelde kleuren voor een natuurlijke, levendige vloer.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3032 mist grey","offer_id":58460594569560,"sku":"FOR-MAR-REAL-3032","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"2499 sand","offer_id":58460594602328,"sku":"FOR-MAR-REAL-2499","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"2621 dove grey","offer_id":58460594635096,"sku":"FOR-MAR-REAL-2621","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"2629 eiger","offer_id":58460594667864,"sku":"FOR-MAR-REAL-2629","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"2713 calico","offer_id":58460594700632,"sku":"FOR-MAR-REAL-2713","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"2767 rust","offer_id":58460594733400,"sku":"FOR-MAR-REAL-2767","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3030 blue","offer_id":58460594766168,"sku":"FOR-MAR-REAL-3030","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3038 Caribbean","offer_id":58460594798936,"sku":"FOR-MAR-REAL-3038","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3048 graphite","offer_id":58460594831704,"sku":"FOR-MAR-REAL-3048","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3053 dove blue","offer_id":58460594864472,"sku":"FOR-MAR-REAL-3053","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3055 fresco blue","offer_id":58460594897240,"sku":"FOR-MAR-REAL-3055","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3075 shell","offer_id":58460594930008,"sku":"FOR-MAR-REAL-3075","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3120 rosato","offer_id":58460594962776,"sku":"FOR-MAR-REAL-3120","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3123 arabesque","offer_id":58460594995544,"sku":"FOR-MAR-REAL-3123","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3127 Bleeckerstreet","offer_id":58460595028312,"sku":"FOR-MAR-REAL-3127","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3136 concrete","offer_id":58460595061080,"sku":"FOR-MAR-REAL-3136","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3137 slate grey","offer_id":58460595093848,"sku":"FOR-MAR-REAL-3137","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3141 Himalaya","offer_id":58460595126616,"sku":"FOR-MAR-REAL-3141","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3146 serene grey","offer_id":58460595159384,"sku":"FOR-MAR-REAL-3146","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3173 Van Gogh","offer_id":58460595192152,"sku":"FOR-MAR-REAL-3173","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3174 Sahara","offer_id":58460595224920,"sku":"FOR-MAR-REAL-3174","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3219 spa","offer_id":58460595257688,"sku":"FOR-MAR-REAL-3219","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3224 chartreuse","offer_id":58460595290456,"sku":"FOR-MAR-REAL-3224","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3225 dandelion","offer_id":58460595323224,"sku":"FOR-MAR-REAL-3225","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3232 horse roan","offer_id":58460595355992,"sku":"FOR-MAR-REAL-3232","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3233 shitake","offer_id":58460595388760,"sku":"FOR-MAR-REAL-3233","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3234 forest ground","offer_id":58460595421528,"sku":"FOR-MAR-REAL-3234","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3236 dark bistre","offer_id":58460595454296,"sku":"FOR-MAR-REAL-3236","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3268 honey suckle","offer_id":58460595487064,"sku":"FOR-MAR-REAL-3268","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3270 violet","offer_id":58460595519832,"sku":"FOR-MAR-REAL-3270","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3272 plum","offer_id":58460595552600,"sku":"FOR-MAR-REAL-3272","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3847 golden saffron","offer_id":58460595585368,"sku":"FOR-MAR-REAL-3847","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3881 green wellness","offer_id":58460595618136,"sku":"FOR-MAR-REAL-3881","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-real-3032.webp?v=1789302019"},{"product_id":"marmoleum-fresco","title":"Marmoleum Fresco","description":"\u003cp\u003eEen subtiel ton-sur-ton gemarmerd dessin met een zachte en rustige uitstraling.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"2939 black","offer_id":58460595650904,"sku":"FOR-MAR-FRESCO-2939","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3125 golden sunset","offer_id":58460595683672,"sku":"FOR-MAR-FRESCO-3125","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3126 Kyoto","offer_id":58460595716440,"sku":"FOR-MAR-FRESCO-3126","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3131 scarlet","offer_id":58460595749208,"sku":"FOR-MAR-FRESCO-3131","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3139 lava","offer_id":58460595781976,"sku":"FOR-MAR-FRESCO-3139","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3203 henna","offer_id":58460595814744,"sku":"FOR-MAR-FRESCO-3203","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3246 shrike","offer_id":58460595847512,"sku":"FOR-MAR-FRESCO-3246","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3247 green","offer_id":58460595880280,"sku":"FOR-MAR-FRESCO-3247","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3251 lemon zest","offer_id":58460595913048,"sku":"FOR-MAR-FRESCO-3251","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3252 sparrow","offer_id":58460595945816,"sku":"FOR-MAR-FRESCO-3252","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3254 clay","offer_id":58460595978584,"sku":"FOR-MAR-FRESCO-3254","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3257 edelweiss","offer_id":58460596011352,"sku":"FOR-MAR-FRESCO-3257","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3259 mustard","offer_id":58460596044120,"sku":"FOR-MAR-FRESCO-3259","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3260 leaf","offer_id":58460596076888,"sku":"FOR-MAR-FRESCO-3260","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3261 marine","offer_id":58460596109656,"sku":"FOR-MAR-FRESCO-3261","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3262 marigold","offer_id":58460596142424,"sku":"FOR-MAR-FRESCO-3262","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3263 rose","offer_id":58460596175192,"sku":"FOR-MAR-FRESCO-3263","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3264 Greek blue","offer_id":58460596207960,"sku":"FOR-MAR-FRESCO-3264","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3265 avocado","offer_id":58460596240728,"sku":"FOR-MAR-FRESCO-3265","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3266 lilac","offer_id":58460596273496,"sku":"FOR-MAR-FRESCO-3266","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3267 aqua","offer_id":58460596306264,"sku":"FOR-MAR-FRESCO-3267","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3269 turquoise","offer_id":58460596339032,"sku":"FOR-MAR-FRESCO-3269","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3271 hunter green","offer_id":58460596371800,"sku":"FOR-MAR-FRESCO-3271","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3273 ruby","offer_id":58460596404568,"sku":"FOR-MAR-FRESCO-3273","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3825 African desert","offer_id":58460596437336,"sku":"FOR-MAR-FRESCO-3825","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3828 blue heaven","offer_id":58460596470104,"sku":"FOR-MAR-FRESCO-3828","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3846 natural corn","offer_id":58460596502872,"sku":"FOR-MAR-FRESCO-3846","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3858 Barbados","offer_id":58460596535640,"sku":"FOR-MAR-FRESCO-3858","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3860 silver shadow","offer_id":58460596568408,"sku":"FOR-MAR-FRESCO-3860","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3861 Arabian pearl","offer_id":58460596601176,"sku":"FOR-MAR-FRESCO-3861","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3866 eternity","offer_id":58460596633944,"sku":"FOR-MAR-FRESCO-3866","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3872 volcanic ash","offer_id":58460596666712,"sku":"FOR-MAR-FRESCO-3872","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3874 walnut","offer_id":58460596699480,"sku":"FOR-MAR-FRESCO-3874","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3883 moonstone","offer_id":58460596732248,"sku":"FOR-MAR-FRESCO-3883","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3885 spring buds","offer_id":58460596765016,"sku":"FOR-MAR-FRESCO-3885","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3889 cinder","offer_id":58460596797784,"sku":"FOR-MAR-FRESCO-3889","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3890 oat","offer_id":58460596830552,"sku":"FOR-MAR-FRESCO-3890","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3891 sage","offer_id":58460596863320,"sku":"FOR-MAR-FRESCO-3891","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-fresco-2939.webp?v=1789301801"},{"product_id":"marmoleum-vivace","title":"Marmoleum Vivace","description":"\u003cp\u003eEen levendig, sterk gemarmerd dessin met rijke kleurcontrasten en goede vuilverhullende eigenschappen.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3405 Granada","offer_id":58460596928856,"sku":"FOR-MAR-VIVACE-3405","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3403 Asian tiger","offer_id":58460596961624,"sku":"FOR-MAR-VIVACE-3403","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3407 donkey island","offer_id":58460596994392,"sku":"FOR-MAR-VIVACE-3407","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3411 sunny day","offer_id":58460597027160,"sku":"FOR-MAR-VIVACE-3411","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3413 green melody","offer_id":58460597059928,"sku":"FOR-MAR-VIVACE-3413","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3420 surprising storm","offer_id":58460597092696,"sku":"FOR-MAR-VIVACE-3420","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3421 oyster mountain","offer_id":58460597125464,"sku":"FOR-MAR-VIVACE-3421","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3426 cork tree","offer_id":58460597158232,"sku":"FOR-MAR-VIVACE-3426","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3427 agate","offer_id":58460597191000,"sku":"FOR-MAR-VIVACE-3427","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-vivace-3405.webp?v=1789302247"},{"product_id":"marmoleum-terra","title":"Marmoleum Terra","description":"\u003cp\u003eEen compact gemarmerd dessin, geïnspireerd op stollingsgesteente, met een natuurlijke structuur.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"5802 alpine mist","offer_id":58460597223768,"sku":"FOR-MAR-TERRA-5802","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"5801 river bank","offer_id":58460597256536,"sku":"FOR-MAR-TERRA-5801","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"5803 weathered sand","offer_id":58460597289304,"sku":"FOR-MAR-TERRA-5803","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"5804 pink granite","offer_id":58460597322072,"sku":"FOR-MAR-TERRA-5804","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-terra-5802.webp?v=1789302236"},{"product_id":"marmoleum-splash","title":"Marmoleum Splash","description":"\u003cp\u003eEen licht en speels dessin met subtiele kleurnuances die van dichtbij tot leven komen.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3433 rockpool","offer_id":58460597354840,"sku":"FOR-MAR-SPLASH-3433","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3428 seashell","offer_id":58460597387608,"sku":"FOR-MAR-SPLASH-3428","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3429 bluemoon","offer_id":58460597420376,"sku":"FOR-MAR-SPLASH-3429","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3430 salsa verde","offer_id":58460597453144,"sku":"FOR-MAR-SPLASH-3430","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3431 limoncello","offer_id":58460597485912,"sku":"FOR-MAR-SPLASH-3431","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3432 fruit punch","offer_id":58460597518680,"sku":"FOR-MAR-SPLASH-3432","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-splash-3433.webp?v=1789302168"},{"product_id":"marmoleum-concrete","title":"Marmoleum Concrete","description":"\u003cp\u003eEen eigentijds Marmoleum dessin met de rustige uitstraling van beton en een subtiele kleurdiepte.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 49,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 99,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 99,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3732 asteroid","offer_id":58460597551448,"sku":"FOR-MAR-CONCRETE-3732","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3702 liquid clay","offer_id":58460597584216,"sku":"FOR-MAR-CONCRETE-3702","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3703 comet","offer_id":58460597616984,"sku":"FOR-MAR-CONCRETE-3703","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3704 satellite","offer_id":58460597649752,"sku":"FOR-MAR-CONCRETE-3704","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3705 meteorite","offer_id":58460597682520,"sku":"FOR-MAR-CONCRETE-3705","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3706 beton","offer_id":58460597715288,"sku":"FOR-MAR-CONCRETE-3706","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3708 fossil","offer_id":58460597748056,"sku":"FOR-MAR-CONCRETE-3708","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3709 silt","offer_id":58460597780824,"sku":"FOR-MAR-CONCRETE-3709","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3712 orange shimmer","offer_id":58460597813592,"sku":"FOR-MAR-CONCRETE-3712","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3723 nebula","offer_id":58460597846360,"sku":"FOR-MAR-CONCRETE-3723","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3724 orbit","offer_id":58460597879128,"sku":"FOR-MAR-CONCRETE-3724","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3725 cosmos","offer_id":58460597911896,"sku":"FOR-MAR-CONCRETE-3725","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3727 drift","offer_id":58460597944664,"sku":"FOR-MAR-CONCRETE-3727","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3733 yellow shimmer","offer_id":58460597977432,"sku":"FOR-MAR-CONCRETE-3733","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3736 green shimmer","offer_id":58460598010200,"sku":"FOR-MAR-CONCRETE-3736","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3749 Arctic","offer_id":58460598042968,"sku":"FOR-MAR-CONCRETE-3749","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3750 pine forest","offer_id":58460598075736,"sku":"FOR-MAR-CONCRETE-3750","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3751 tundra","offer_id":58460598108504,"sku":"FOR-MAR-CONCRETE-3751","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3752 taiga","offer_id":58460598141272,"sku":"FOR-MAR-CONCRETE-3752","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3753 blue ice","offer_id":58460598174040,"sku":"FOR-MAR-CONCRETE-3753","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3754 Sirius","offer_id":58460598206808,"sku":"FOR-MAR-CONCRETE-3754","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3755 glacier","offer_id":58460598239576,"sku":"FOR-MAR-CONCRETE-3755","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3756 Neptune","offer_id":58460598272344,"sku":"FOR-MAR-CONCRETE-3756","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3757 Pluto","offer_id":58460598305112,"sku":"FOR-MAR-CONCRETE-3757","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3758 shale","offer_id":58460598337880,"sku":"FOR-MAR-CONCRETE-3758","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3759 Mercury","offer_id":58460598370648,"sku":"FOR-MAR-CONCRETE-3759","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3760 dust","offer_id":58460598403416,"sku":"FOR-MAR-CONCRETE-3760","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3761 Titan","offer_id":58460598436184,"sku":"FOR-MAR-CONCRETE-3761","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3762 loam","offer_id":58460598468952,"sku":"FOR-MAR-CONCRETE-3762","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3763 blue shimmer","offer_id":58460598501720,"sku":"FOR-MAR-CONCRETE-3763","price":4.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-concrete-3732.webp?v=1789301730"},{"product_id":"marmoleum-cocoa","title":"Marmoleum Cocoa","description":"\u003cp\u003eEen natuurlijke Marmoleum vloer waarin cacaoschillen zorgen voor een herkenbare, tactiele uitstraling.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 49,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 99,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 99,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3584 white chocolate","offer_id":58460598567256,"sku":"FOR-MAR-COCOA-3584","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3580 milk chocolate","offer_id":58460598600024,"sku":"FOR-MAR-COCOA-3580","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3582 earl grey chocolate","offer_id":58460598632792,"sku":"FOR-MAR-COCOA-3582","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3583 chocolate blues","offer_id":58460598665560,"sku":"FOR-MAR-COCOA-3583","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3585 stracciatella","offer_id":58460598698328,"sku":"FOR-MAR-COCOA-3585","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3586 indigo milk","offer_id":58460598731096,"sku":"FOR-MAR-COCOA-3586","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3587 curcuma","offer_id":58460598763864,"sku":"FOR-MAR-COCOA-3587","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3588 eucalyptus","offer_id":58460598796632,"sku":"FOR-MAR-COCOA-3588","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3589 nori","offer_id":58460598829400,"sku":"FOR-MAR-COCOA-3589","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3590 meringue","offer_id":58460598862168,"sku":"FOR-MAR-COCOA-3590","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3591 black tea","offer_id":58460598894936,"sku":"FOR-MAR-COCOA-3591","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3592 salted caramel","offer_id":58460598927704,"sku":"FOR-MAR-COCOA-3592","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3593 matcha","offer_id":58460598960472,"sku":"FOR-MAR-COCOA-3593","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3594 chia seeds","offer_id":58460598993240,"sku":"FOR-MAR-COCOA-3594","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3595 pannacotta","offer_id":58460599026008,"sku":"FOR-MAR-COCOA-3595","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3596 hummus","offer_id":58460599058776,"sku":"FOR-MAR-COCOA-3596","price":4.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-cocoa-3584.webp?v=1789301639"},{"product_id":"marmoleum-piano","title":"Marmoleum Piano","description":"\u003cp\u003eEen verfijnd, gespikkeld dessin dat uni kleuren zachter maakt en gemakkelijk combineert.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 46,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 93,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 93,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3650 polar bear","offer_id":58460599943512,"sku":"FOR-MAR-PIANO-3650","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3601 warm grey","offer_id":58460599976280,"sku":"FOR-MAR-PIANO-3601","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3607 grey dusk","offer_id":58460600009048,"sku":"FOR-MAR-PIANO-3607","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3629 frosty grey","offer_id":58460600041816,"sku":"FOR-MAR-PIANO-3629","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3630 angora","offer_id":58460600074584,"sku":"FOR-MAR-PIANO-3630","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3631 otter","offer_id":58460600107352,"sku":"FOR-MAR-PIANO-3631","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3634 meadow","offer_id":58460600140120,"sku":"FOR-MAR-PIANO-3634","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3642 periwinkle","offer_id":58460600172888,"sku":"FOR-MAR-PIANO-3642","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3645 Neptune blue","offer_id":58460600205656,"sku":"FOR-MAR-PIANO-3645","price":4.69,"currency_code":"EUR","in_stock":true},{"title":"3647 nettle green","offer_id":58460600238424,"sku":"FOR-MAR-PIANO-3647","price":4.69,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-piano-3650.webp?v=1789301992"},{"product_id":"marmoleum-walton","title":"Marmoleum Walton","description":"\u003cp\u003eEen ingetogen, vrijwel effen Marmoleum dessin dat rust en helderheid aan het interieur geeft.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 49,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 99,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 99,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"3369 titanium","offer_id":58460600271192,"sku":"FOR-MAR-WALTON-3369","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3323 black","offer_id":58460600303960,"sku":"FOR-MAR-WALTON-3323","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3352 Berlin red","offer_id":58460600336728,"sku":"FOR-MAR-WALTON-3352","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3353 eggplant purple","offer_id":58460600369496,"sku":"FOR-MAR-WALTON-3353","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3355 rosemary green","offer_id":58460600402264,"sku":"FOR-MAR-WALTON-3355","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3358 petrol","offer_id":58460600435032,"sku":"FOR-MAR-WALTON-3358","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3359 bottle green","offer_id":58460600467800,"sku":"FOR-MAR-WALTON-3359","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3360 vintage blue","offer_id":58460600500568,"sku":"FOR-MAR-WALTON-3360","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3367 alloy","offer_id":58460600533336,"sku":"FOR-MAR-WALTON-3367","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3370 terracotta","offer_id":58460600566104,"sku":"FOR-MAR-WALTON-3370","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3371 cement","offer_id":58460600598872,"sku":"FOR-MAR-WALTON-3371","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3374 cobalt grey","offer_id":58460600631640,"sku":"FOR-MAR-WALTON-3374","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3375 grey adobe","offer_id":58460600664408,"sku":"FOR-MAR-WALTON-3375","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3376 peat","offer_id":58460600697176,"sku":"FOR-MAR-WALTON-3376","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3377 North Sea blue","offer_id":58460600729944,"sku":"FOR-MAR-WALTON-3377","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"3378 stucco","offer_id":58460600762712,"sku":"FOR-MAR-WALTON-3378","price":4.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-walton-3369.webp?v=1789302398"},{"product_id":"marmoleum-soul","title":"Marmoleum Soul","description":"\u003cp\u003eEen pure, biobased Marmoleum vloer met een rustig palet dat de natuurlijke oorsprong van linoleum zichtbaar maakt.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,6 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 33 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 53,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 107,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 107,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"0003 sky","offer_id":58460600926552,"sku":"FOR-MAR-SOUL-0003","price":5.39,"currency_code":"EUR","in_stock":true},{"title":"0001 origin","offer_id":58460600959320,"sku":"FOR-MAR-SOUL-0001","price":5.39,"currency_code":"EUR","in_stock":true},{"title":"0004 ground","offer_id":58460600992088,"sku":"FOR-MAR-SOUL-0004","price":5.39,"currency_code":"EUR","in_stock":true},{"title":"0006 bloom","offer_id":58460601024856,"sku":"FOR-MAR-SOUL-0006","price":5.39,"currency_code":"EUR","in_stock":true},{"title":"0008 beach","offer_id":58460601057624,"sku":"FOR-MAR-SOUL-0008","price":5.39,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-soul-0003.webp?v=1789302133"},{"product_id":"marmoleum-vtwonen","title":"Marmoleum vtwonen","description":"\u003cp\u003eDe stijlvolle Marmoleum wooncollectie van Forbo en vtwonen, samengesteld in een eigentijds natuurlijk kleurenpalet.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs per m2: € 49,90 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs per strekkende meter (200 cm breed, 2 m2): € 99,80 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2 en kost € 99,80 incl. btw.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"VTW101 Leem cocoa","offer_id":58460601319768,"sku":"FOR-MAR-VTWONEN-VTW101","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW102 Dew cocoa","offer_id":58460601352536,"sku":"FOR-MAR-VTWONEN-VTW102","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW103 Steel cocoa","offer_id":58460601385304,"sku":"FOR-MAR-VTWONEN-VTW103","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW104 Concrete cocoa","offer_id":58460601418072,"sku":"FOR-MAR-VTWONEN-VTW104","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW105 Salt cocoa","offer_id":58460601450840,"sku":"FOR-MAR-VTWONEN-VTW105","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW106 Soil cocoa","offer_id":58460601483608,"sku":"FOR-MAR-VTWONEN-VTW106","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW107 Marram cocoa","offer_id":58460601516376,"sku":"FOR-MAR-VTWONEN-VTW107","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW108 Stone cocoa","offer_id":58460601549144,"sku":"FOR-MAR-VTWONEN-VTW108","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW109 Clay cocoa","offer_id":58460601581912,"sku":"FOR-MAR-VTWONEN-VTW109","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW110 Honey marble","offer_id":58460601614680,"sku":"FOR-MAR-VTWONEN-VTW110","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW111 Water marble","offer_id":58460601647448,"sku":"FOR-MAR-VTWONEN-VTW111","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW112 State marble","offer_id":58460601680216,"sku":"FOR-MAR-VTWONEN-VTW112","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW113 Mirre marble","offer_id":58460601712984,"sku":"FOR-MAR-VTWONEN-VTW113","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW114 Almond marble","offer_id":58460601745752,"sku":"FOR-MAR-VTWONEN-VTW114","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW115 Roots basic","offer_id":58460601778520,"sku":"FOR-MAR-VTWONEN-VTW115","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW116 Nickel basic","offer_id":58460601811288,"sku":"FOR-MAR-VTWONEN-VTW116","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW117 Zinc basic","offer_id":58460601844056,"sku":"FOR-MAR-VTWONEN-VTW117","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW118 Cement basic","offer_id":58460601876824,"sku":"FOR-MAR-VTWONEN-VTW118","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW119 Kohl basic","offer_id":58460601909592,"sku":"FOR-MAR-VTWONEN-VTW119","price":4.99,"currency_code":"EUR","in_stock":true},{"title":"VTW120 Truffle basic","offer_id":58460601942360,"sku":"FOR-MAR-VTWONEN-VTW120","price":4.99,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-vtwonen-VTW101.webp?v=1789302282"},{"product_id":"marmoleum-striato","title":"Marmoleum Striato","description":"\u003cp\u003eEen lineair Marmoleum dessin met een warme, natuurlijke richting en een subtiel vloerbeeld.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMerk: Forbo\u003c\/li\u003e\n\u003cli\u003eMateriaal: natuurlijk linoleum\u003c\/li\u003e\n\u003cli\u003eRolbreedte: 200 cm\u003c\/li\u003e\n\u003cli\u003eDikte: 2,5 mm\u003c\/li\u003e\n\u003cli\u003eRollengte: maximaal 32 meter\u003c\/li\u003e\n\u003cli\u003ePrijs Ivory Shades 5252 per m2: € 54,00 incl. btw\u003c\/li\u003e\n\u003cli\u003ePrijs Ivory Shades 5252 per strekkende meter (200 cm breed, 2 m2): € 108,00 incl. btw\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eBestellen kan per 5 cm lengte. De prijs per m2 en de totaalprijs worden bij het bestellen getoond. Marmoleum wordt geleverd op een rol van 200 cm breed; 1 strekkende meter is 2 m2. De prijs is afhankelijk van de gekozen kleur.\u003c\/p\u003e\u003cscript data-marmoleum-2m-calculator\u003e\n(function () {\n  function applyMarmoleumWidth() {\n    var calc = document.querySelector('carpet-length-calculator');\n    if (!calc || calc.dataset.marmoleumWidthPatched === 'true') return;\n    calc.dataset.marmoleumWidthPatched = 'true';\n    var intro = calc.querySelector('.floor-calculator__intro');\n    if (intro) intro.textContent = 'Het Marmoleum is 2 meter breed. Vul de lengte in strekkende meters in; bestellen kan per 5 cm.';\n    var areaOutput = calc.querySelector('[data-carpet-area]');\n    if (areaOutput \u0026\u0026 areaOutput.previousElementSibling) areaOutput.previousElementSibling.textContent = 'Oppervlakte bij 2 meter breed';\n    var input = calc.querySelector('[data-carpet-length]');\n    function sync() {\n      var raw = parseFloat((input \u0026\u0026 input.value || '').replace(',', '.'));\n      var quantity = document.querySelector('input[name=\"quantity\"]');\n      var form = quantity \u0026\u0026 quantity.form;\n      if (!form) return;\n      function setProperty(name, value) {\n        var field = form.querySelector('input[name=\"' + name + '\"]');\n        if (!field) {\n          field = document.createElement('input');\n          field.type = 'hidden';\n          field.name = name;\n          form.appendChild(field);\n        }\n        field.value = value;\n        field.setAttribute('value', value);\n      }\n      setProperty('properties[Breedte]', '2 meter');\n      if (!raw || raw \u003c= 0) return;\n      var units = Math.max(1, Math.ceil((raw * 20) - 0.000001));\n      var meters = units \/ 20;\n      quantity.value = String(units);\n      setProperty('properties[Lengte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters) + ' strekkende meter');\n      setProperty('properties[Oppervlakte]', new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2');\n      if (areaOutput) areaOutput.textContent = new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(meters * 2) + ' m2';\n      var total = calc.querySelector('[data-carpet-total]');\n      var priceCents = parseInt(calc.dataset.priceCents || '0', 10);\n      if (total \u0026\u0026 priceCents) total.textContent = new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format((units * priceCents) \/ 100);\n    }\n    if (input) {\n      input.addEventListener('input', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('blur', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n      input.addEventListener('change', function () { requestAnimationFrame(sync); setTimeout(sync, 150); });\n    }\n    var quantity = document.querySelector('input[name=\"quantity\"]');\n    if (quantity \u0026\u0026 quantity.form) quantity.form.addEventListener('submit', sync, true);\n    document.addEventListener('submit', sync, true);\n    requestAnimationFrame(sync);\n    setTimeout(sync, 200);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', applyMarmoleumWidth, { once: true });\n  } else {\n    applyMarmoleumWidth();\n  }\n  document.addEventListener('shopify:section:load', applyMarmoleumWidth);\n}());\n\u003c\/script\u003e","brand":"Forbo","offers":[{"title":"5252 ivory shades","offer_id":58460601975128,"sku":"FOR-MAR-STRIATO-5252","price":5.4,"currency_code":"EUR","in_stock":true},{"title":"3573 trace of nature","offer_id":58460602007896,"sku":"FOR-MAR-STRIATO-3573","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5217 withered prairie","offer_id":58460602040664,"sku":"FOR-MAR-STRIATO-5217","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5218 Welsh moor","offer_id":58460602073432,"sku":"FOR-MAR-STRIATO-5218","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5225 compressed time","offer_id":58460602106200,"sku":"FOR-MAR-STRIATO-5225","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5231 Cliffs of Moher","offer_id":58460602138968,"sku":"FOR-MAR-STRIATO-5231","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5232 rocky ice","offer_id":58460602171736,"sku":"FOR-MAR-STRIATO-5232","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5248 urban silver","offer_id":58460602204504,"sku":"FOR-MAR-STRIATO-5248","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5249 Stonehenge","offer_id":58460602237272,"sku":"FOR-MAR-STRIATO-5249","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5250 blue basalt","offer_id":58460602270040,"sku":"FOR-MAR-STRIATO-5250","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5251 black glacier","offer_id":58460602302808,"sku":"FOR-MAR-STRIATO-5251","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5253 bleached gold","offer_id":58460602335576,"sku":"FOR-MAR-STRIATO-5253","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5254 red horse","offer_id":58460602368344,"sku":"FOR-MAR-STRIATO-5254","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5255 desert sand","offer_id":58460602401112,"sku":"FOR-MAR-STRIATO-5255","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5256 silt stone","offer_id":58460602433880,"sku":"FOR-MAR-STRIATO-5256","price":5.59,"currency_code":"EUR","in_stock":true},{"title":"5257 sandy chalk","offer_id":58460602466648,"sku":"FOR-MAR-STRIATO-5257","price":5.59,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/files\/marmoleum-striato-5252.webp?v=1789302209"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1010\/7902\/3960\/collections\/marmoleum-real-3032.jpg?v=1789302442","url":"https:\/\/cachetvloershop.nl\/collections\/marmoleum.oembed","provider":"Cachet vloershop","version":"1.0","type":"link"}