{"title":"Floor Care Collection","description":null,"products":[{"product_id":"orvalmere™-easy-spray-microfiber-floor-mop","title":"Orvalmere™ Easy-Spray Microfiber Floor Mop","description":"\u003c!-- Orvalmere™ Easy-Spray Microfiber Floor Mop | Shopify Custom Liquid --\u003e\n\u003cstyle\u003e\n.orv-product{\n  --ink:#17324b;\n  --muted:#667482;\n  --line:#dfe7ec;\n  --soft:#f7fafc;\n  --accent:#c5a56a;\n  width:calc(100% - 32px);\n  max-width:1120px;\n  margin:32px auto;\n  background:#fff;\n  color:var(--ink);\n  font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n  line-height:1.65;\n  border:1px solid var(--line);\n  border-radius:26px;\n  overflow:hidden;\n  box-shadow:0 18px 55px rgba(23,50,75,.08);\n}\n\n.orv-product *{\n  box-sizing:border-box;\n}\n\n.orv-hero{\n  padding:34px;\n  background:linear-gradient(145deg,#fbfdff 0%,#fff 58%,#f7f4ee 100%);\n}\n\n\/* 主图容器 *\/\n.orv-media{\n  width:100%;\n  aspect-ratio:1\/1;\n  border-radius:20px;\n  overflow:hidden;\n  background:#fff;\n  position:relative;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  border:1px solid rgba(223,231,236,.85);\n}\n\n\/* 完整显示产品图片，不裁切 *\/\n.orv-media img{\n  width:100%;\n  height:100%;\n  object-fit:contain;\n  object-position:center;\n  display:none;\n  padding:10px;\n  background:#fff;\n  transition:transform .6s ease;\n}\n\n.orv-media:hover img{\n  transform:scale(1.015);\n}\n\n\/* 缩略图 *\/\n.orv-thumbs{\n  display:grid;\n  grid-template-columns:repeat(4,minmax(0,1fr));\n  gap:10px;\n  margin-top:12px;\n}\n\n.orv-thumbs button{\n  width:100%;\n  padding:0;\n  border:1px solid var(--line);\n  border-radius:12px;\n  overflow:hidden;\n  background:#fff;\n  cursor:pointer;\n  aspect-ratio:1\/1;\n  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease;\n}\n\n.orv-thumbs button:hover{\n  transform:translateY(-2px);\n}\n\n.orv-thumbs img{\n  width:100%;\n  height:100%;\n  object-fit:contain;\n  object-position:center;\n  display:block;\n  padding:4px;\n  background:#fff;\n}\n\n.orv-thumbs button:hover,\n.orv-thumbs button:focus,\n.orv-thumbs button.is-active{\n  border-color:var(--accent);\n  outline:none;\n  box-shadow:0 0 0 2px rgba(197,165,106,.14);\n}\n\n.orv-image-placeholder{\n  position:absolute;\n  inset:0;\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  padding:20px;\n  color:#7a8792;\n  font-size:14px;\n  letter-spacing:.03em;\n  text-align:center;\n  background:linear-gradient(145deg,#f7fafc,#eef3f6);\n}\n\n\/* 产品文字区域 *\/\n.orv-copy{\n  padding:36px 38px 40px;\n}\n\n.orv-kicker{\n  display:inline-block;\n  margin-bottom:14px;\n  padding:7px 12px;\n  color:#8a6d3f;\n  font-size:12px;\n  line-height:1.3;\n  letter-spacing:.14em;\n  text-transform:uppercase;\n  background:#f7f0e3;\n  border:1px solid #eadcc2;\n  border-radius:999px;\n}\n\n.orv-title{\n  margin:0 0 14px;\n  font-size:clamp(28px,4vw,42px);\n  font-weight:700;\n  line-height:1.15;\n  letter-spacing:-.025em;\n  overflow-wrap:break-word;\n}\n\n.orv-desc{\n  max-width:900px;\n  margin:0;\n  color:var(--muted);\n  font-size:16px;\n}\n\n\/* 产品卖点 *\/\n.orv-grid{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:12px;\n  margin-top:26px;\n}\n\n.orv-feature{\n  min-width:0;\n  padding:15px 16px;\n  color:var(--ink);\n  font-size:14px;\n  background:var(--soft);\n  border:1px solid var(--line);\n  border-radius:14px;\n  transition:\n    transform .25s ease,\n    box-shadow .25s ease,\n    border-color .25s ease;\n}\n\n.orv-feature:hover{\n  transform:translateY(-2px);\n  border-color:#cbd8e0;\n  box-shadow:0 8px 22px rgba(23,50,75,.07);\n}\n\n\/* 折叠详情 *\/\n.orv-details{\n  margin-top:28px;\n  border-top:1px solid var(--line);\n}\n\n.orv-details details{\n  border-bottom:1px solid var(--line);\n}\n\n.orv-details summary{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:20px;\n  padding:18px 0;\n  font-weight:650;\n  cursor:pointer;\n  list-style:none;\n}\n\n.orv-details summary::-webkit-details-marker{\n  display:none;\n}\n\n.orv-details summary::after{\n  content:\"+\";\n  flex:0 0 auto;\n  color:#8a6d3f;\n  font-size:24px;\n  font-weight:300;\n  line-height:1;\n  transition:transform .2s ease;\n}\n\n.orv-details details[open] summary::after{\n  transform:rotate(45deg);\n}\n\n.orv-details p{\n  margin:0;\n  padding:0 42px 18px 0;\n  color:var(--muted);\n  font-size:14px;\n}\n\n\/* 电脑端 *\/\n@media(min-width:900px){\n  .orv-hero{\n    padding:46px;\n  }\n\n  .orv-media{\n    width:100%;\n    aspect-ratio:1\/1;\n    max-height:760px;\n  }\n\n  .orv-copy{\n    padding:42px 52px 48px;\n  }\n\n  .orv-grid{\n    grid-template-columns:repeat(3,minmax(0,1fr));\n  }\n}\n\n\/* 平板端 *\/\n@media(max-width:899px){\n  .orv-media{\n    aspect-ratio:1\/1;\n  }\n}\n\n\/* 移动端 *\/\n@media(max-width:640px){\n  .orv-product{\n    width:calc(100% - 20px);\n    margin:18px auto;\n    border-radius:18px;\n  }\n\n  .orv-hero{\n    padding:12px;\n  }\n\n  .orv-media{\n    width:100%;\n    aspect-ratio:1\/1;\n    border-radius:15px;\n  }\n\n  .orv-media img{\n    padding:5px;\n  }\n\n  .orv-copy{\n    padding:26px 20px 30px;\n  }\n\n  .orv-title{\n    font-size:28px;\n  }\n\n  .orv-desc{\n    font-size:15px;\n    line-height:1.65;\n  }\n\n  .orv-grid{\n    grid-template-columns:1fr;\n    gap:9px;\n  }\n\n  .orv-feature{\n    padding:13px 14px;\n  }\n\n  .orv-thumbs{\n    gap:7px;\n    margin-top:9px;\n  }\n\n  .orv-thumbs button{\n    border-radius:9px;\n  }\n\n  .orv-details summary{\n    padding:16px 0;\n    font-size:15px;\n  }\n\n  .orv-details p{\n    padding-right:0;\n  }\n}\n\n\/* 小屏手机 *\/\n@media(max-width:380px){\n  .orv-product{\n    width:calc(100% - 12px);\n  }\n\n  .orv-hero{\n    padding:8px;\n  }\n\n  .orv-copy{\n    padding:23px 16px 27px;\n  }\n\n  .orv-title{\n    font-size:25px;\n  }\n\n  .orv-kicker{\n    font-size:10px;\n    letter-spacing:.1em;\n  }\n}\n\u003c\/style\u003e\n\n\u003csection id=\"01-easy-spray-microfiber-floor-mop\" class=\"orv-product\"\u003e\n\n  \u003cdiv class=\"orv-hero\"\u003e\n\n    \u003cdiv class=\"orv-media\"\u003e\n      \u003cimg id=\"01-easy-spray-microfiber-floor-mop-main\" alt=\"Orvalmere™ Easy-Spray Microfiber Floor Mop\" width=\"1800\" height=\"1800\" loading=\"eager\" decoding=\"async\"\u003e\n\n      \u003cdiv class=\"orv-image-placeholder\" id=\"01-easy-spray-microfiber-floor-mop-placeholder\"\u003e\n        Loading product image…\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"orv-thumbs\" id=\"01-easy-spray-microfiber-floor-mop-thumbs\" hidden\u003e\u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n  (function(){\n    var section = document.getElementById(\n      '01-easy-spray-microfiber-floor-mop'\n    );\n\n    if(!section) return;\n\n    var mainImg = document.getElementById(\n      '01-easy-spray-microfiber-floor-mop-main'\n    );\n\n    var thumbs = document.getElementById(\n      '01-easy-spray-microfiber-floor-mop-thumbs'\n    );\n\n    var placeholder = document.getElementById(\n      '01-easy-spray-microfiber-floor-mop-placeholder'\n    );\n\n    var hasRendered = false;\n\n    function normalize(url){\n      if(!url) return '';\n\n      url = String(url).trim();\n\n      if(url.indexOf('\/\/') === 0){\n        url = window.location.protocol + url;\n      }\n\n      return url;\n    }\n\n    function getLargestFromSrcset(srcset){\n      if(!srcset) return '';\n\n      var parts = srcset\n        .split(',')\n        .map(function(item){\n          var values = item.trim().split(\/\\s+\/);\n          var width = parseInt(\n            (values[1] || '0').replace(\/\\D\/g,''),\n            10\n          ) || 0;\n\n          return {\n            url:values[0],\n            width:width\n          };\n        })\n        .filter(function(item){\n          return item.url;\n        });\n\n      parts.sort(function(a,b){\n        return b.width - a.width;\n      });\n\n      return parts.length ? parts[0].url : '';\n    }\n\n    function getImageUrl(img){\n      var dataZoom = img.getAttribute('data-zoom');\n      var dataMaster = img.getAttribute('data-master');\n      var dataSrc = img.getAttribute('data-src');\n      var dataSrcset = img.getAttribute('data-srcset');\n      var srcset = img.getAttribute('srcset');\n\n      return normalize(\n        dataZoom ||\n        dataMaster ||\n        (\n          dataSrcset\n            ? getLargestFromSrcset(dataSrcset)\n            : ''\n        ) ||\n        (\n          srcset\n            ? getLargestFromSrcset(srcset)\n            : ''\n        ) ||\n        dataSrc ||\n        img.currentSrc ||\n        img.getAttribute('src') ||\n        img.src\n      );\n    }\n\n    function isUsableImage(img,url){\n      if(!url) return false;\n      if(url.indexOf('data:image') === 0) return false;\n      if(url.indexOf('placeholder') !== -1) return false;\n\n      var alt = (img.alt || '').toLowerCase();\n      var className = (img.className || '')\n        .toString()\n        .toLowerCase();\n\n      var parentClass = img.parentElement\n        ? (img.parentElement.className || '')\n            .toString()\n            .toLowerCase()\n        : '';\n\n      var combined = alt + ' ' + className + ' ' + parentClass;\n\n      if(\n        \/logo|icon|avatar|payment|badge|swatch|flag|rating|star\/.test(\n          combined\n        )\n      ){\n        return false;\n      }\n\n      var rect = img.getBoundingClientRect();\n\n      var largeEnough =\n        (img.naturalWidth || 0) \u003e= 250 ||\n        (img.width || 0) \u003e= 250 ||\n        rect.width \u003e= 180;\n\n      return largeEnough;\n    }\n\n    function collectImages(){\n      var selectors = [\n        'media-gallery img',\n        '.product__media img',\n        '.product-media-container img',\n        '.product__media-item img',\n        '.product__media-list img',\n        '.product__media-wrapper img',\n        '.product-gallery img',\n        '.product-gallery__image img',\n        '.product-single__media img',\n        '.product__photos img',\n        '.product-single__photos img',\n        '.product-media img',\n        '[data-media-id] img',\n        '[data-product-media] img',\n        '[data-product-gallery] img',\n        '.product img'\n      ];\n\n      var found = [];\n      var seen = {};\n\n      selectors.forEach(function(selector){\n        document.querySelectorAll(selector).forEach(function(img){\n          if(section.contains(img)) return;\n\n          var url = getImageUrl(img);\n\n          if(!isUsableImage(img,url)) return;\n          if(seen[url]) return;\n\n          seen[url] = true;\n\n          found.push({\n            url:url,\n            alt:\n              img.alt ||\n              'Orvalmere™ Easy-Spray Microfiber Floor Mop'\n          });\n        });\n      });\n\n      \/* Shopify JSON 产品数据后备方案 *\/\n      if(!found.length){\n        document\n          .querySelectorAll(\n            'script[type=\"application\/json\"], script[data-product-json]'\n          )\n          .forEach(function(script){\n            if(found.length \u003e= 6) return;\n\n            try{\n              var data = JSON.parse(script.textContent);\n\n              var images =\n                data.images ||\n                (\n                  data.product \u0026\u0026 data.product.images\n                    ? data.product.images\n                    : []\n                );\n\n              if(!Array.isArray(images)) return;\n\n              images.forEach(function(image){\n                var url = '';\n\n                if(typeof image === 'string'){\n                  url = image;\n                }else if(image){\n                  url =\n                    image.src ||\n                    image.url ||\n                    image.preview_image \u0026\u0026\n                    image.preview_image.src ||\n                    '';\n                }\n\n                url = normalize(url);\n\n                if(!url || seen[url]) return;\n\n                seen[url] = true;\n\n                found.push({\n                  url:url,\n                  alt:\n                    'Orvalmere™ Easy-Spray Microfiber Floor Mop'\n                });\n              });\n            }catch(error){\n              \/* Ignore unrelated JSON blocks. *\/\n            }\n          });\n      }\n\n      \/* OpenGraph 后备图片 *\/\n      if(!found.length){\n        var ogImages = document.querySelectorAll(\n          'meta[property=\"og:image\"],' +\n          'meta[property=\"og:image:secure_url\"]'\n        );\n\n        ogImages.forEach(function(meta){\n          var url = normalize(meta.content);\n\n          if(!url || seen[url]) return;\n\n          seen[url] = true;\n\n          found.push({\n            url:url,\n            alt:'Orvalmere™ Easy-Spray Microfiber Floor Mop'\n          });\n        });\n      }\n\n      return found.slice(0,6);\n    }\n\n    function setMainImage(item){\n      if(!item || !item.url) return;\n\n      mainImg.onload = function(){\n        mainImg.style.display = 'block';\n\n        if(placeholder){\n          placeholder.style.display = 'none';\n        }\n      };\n\n      mainImg.onerror = function(){\n        mainImg.style.display = 'none';\n\n        if(placeholder){\n          placeholder.style.display = 'flex';\n          placeholder.textContent = 'Product image';\n        }\n      };\n\n      mainImg.src = item.url;\n      mainImg.alt =\n        item.alt ||\n        'Orvalmere™ Easy-Spray Microfiber Floor Mop';\n\n      if(mainImg.complete \u0026\u0026 mainImg.naturalWidth \u003e 0){\n        mainImg.style.display = 'block';\n\n        if(placeholder){\n          placeholder.style.display = 'none';\n        }\n      }\n    }\n\n    function render(images){\n      if(hasRendered || !images.length) return false;\n\n      hasRendered = true;\n      setMainImage(images[0]);\n\n      if(images.length \u003e 1){\n        thumbs.innerHTML = '';\n\n        images.slice(0,4).forEach(function(item,index){\n          var button = document.createElement('button');\n          var image = document.createElement('img');\n\n          button.type = 'button';\n\n          button.setAttribute(\n            'aria-label',\n            'View product image ' + (index + 1)\n          );\n\n          image.src = item.url;\n          image.alt =\n            item.alt ||\n            'Orvalmere™ product image ' + (index + 1);\n\n          image.loading = 'lazy';\n          image.decoding = 'async';\n\n          button.appendChild(image);\n\n          button.addEventListener('click',function(){\n            setMainImage(item);\n\n            thumbs\n              .querySelectorAll('button')\n              .forEach(function(currentButton){\n                currentButton.classList.remove('is-active');\n              });\n\n            button.classList.add('is-active');\n          });\n\n          if(index === 0){\n            button.classList.add('is-active');\n          }\n\n          thumbs.appendChild(button);\n        });\n\n        thumbs.hidden = false;\n      }\n\n      return true;\n    }\n\n    function init(attempt){\n      var images = collectImages();\n\n      if(render(images)) return;\n\n      if(attempt \u003c 15){\n        setTimeout(function(){\n          init(attempt + 1);\n        },350);\n      }else if(placeholder){\n        placeholder.textContent = 'Product image';\n      }\n    }\n\n    if(document.readyState === 'loading'){\n      document.addEventListener(\n        'DOMContentLoaded',\n        function(){\n          init(0);\n        }\n      );\n    }else{\n      init(0);\n    }\n  })();\n  \u003c\/script\u003e\n\n  \u003cdiv class=\"orv-copy\"\u003e\n\n    \u003cspan class=\"orv-kicker\"\u003e\n      Floor Care Collection\n    \u003c\/span\u003e\n\n    \u003ch2 class=\"orv-title\"\u003e\n      Orvalmere™ Easy-Spray Microfiber Floor Mop\n    \u003c\/h2\u003e\n\n    \u003cp class=\"orv-desc\"\u003e\n      Make everyday floor cleaning faster and easier with a refined\n      spray-mop design made for modern homes. A wide microfiber cleaning\n      head helps pick up dust, footprints, light spills, and everyday\n      residue, while the slim profile moves smoothly around furniture\n      and along edges.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"orv-grid\"\u003e\n\n      \u003cdiv class=\"orv-feature\"\u003e\n        ✓ Wide microfiber cleaning head\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"orv-feature\"\u003e\n        ✓ Built for quick everyday floor care\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"orv-feature\"\u003e\n        ✓ Slim profile reaches under furniture\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"orv-feature\"\u003e\n        ✓ Reusable pad-friendly design\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"orv-feature\"\u003e\n        ✓ Ideal for common sealed hard floors\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"orv-details\"\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003eDesigned for Everyday Use\u003c\/summary\u003e\n        \u003cp\u003e\n          Created with a clean, understated look that fits naturally\n          into bright modern homes while keeping practical household\n          care simple and approachable.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003eCare \u0026amp; Storage\u003c\/summary\u003e\n        \u003cp\u003e\n          Rinse or wipe the tool after use as appropriate, allow it to\n          dry fully, and store it in a clean, dry area. Follow the care\n          guidance supplied with your product.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n      \u003cdetails\u003e\n        \u003csummary\u003eWhat You’ll Receive\u003c\/summary\u003e\n        \u003cp\u003e\n          Your order includes the Orvalmere™ product and the accessories\n          shown with the selected item. Exact included pieces may vary\n          by product configuration.\n        \u003c\/p\u003e\n      \u003c\/details\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n\u003c\/section\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":52243837026625,"sku":null,"price":39.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1005\/5250\/7713\/files\/1-1-1.png?v=1789976154"},{"product_id":"orvalmere™-deluxe-spin-mop-bucket-system","title":"Orvalmere™ Deluxe Spin Mop \u0026 Bucket System","description":"\u003c!-- Orvalmere™ Deluxe Spin Mop \u0026 Bucket System | Shopify Custom Liquid --\u003e\n\u003cstyle\u003e\n.orv-product{--ink:#17324b;--muted:#667482;--line:#dfe7ec;--soft:#f7fafc;--accent:#c5a56a;width:calc(100% - 32px);max-width:1120px;margin:32px auto;background:#fff;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;line-height:1.65;border:1px solid var(--line);border-radius:26px;overflow:hidden;box-shadow:0 18px 55px rgba(23,50,75,.08)}\n.orv-product *{box-sizing:border-box}.orv-product .orv-hero{padding:34px;background:linear-gradient(145deg,#fbfdff 0%,#fff 58%,#f7f4ee 100%)}.orv-product .orv-media{width:100%;aspect-ratio:1\/1;border-radius:20px;overflow:hidden;background:#fff;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid rgba(223,231,236,.85)}.orv-product .orv-media\u003eimg{width:100%;height:100%;object-fit:contain;object-position:center;display:none;padding:10px;background:#fff;transition:transform .6s ease}.orv-product .orv-media:hover\u003eimg{transform:scale(1.015)}.orv-product .orv-thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.orv-product .orv-thumbs button{width:100%;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;cursor:pointer;aspect-ratio:1\/1;transition:.25s}.orv-product .orv-thumbs button:hover{transform:translateY(-2px)}.orv-product .orv-thumbs img{width:100%;height:100%;object-fit:contain;display:block;padding:4px;background:#fff}.orv-product .orv-thumbs button:hover,.orv-product .orv-thumbs button:focus,.orv-product .orv-thumbs button.is-active{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px rgba(197,165,106,.14)}.orv-product .orv-image-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;color:#7a8792;font-size:14px;letter-spacing:.03em;text-align:center;background:linear-gradient(145deg,#f7fafc,#eef3f6)}.orv-product .orv-copy{padding:36px 38px 40px}.orv-product .orv-kicker{display:inline-block;margin-bottom:14px;padding:7px 12px;color:#8a6d3f;font-size:12px;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;background:#f7f0e3;border:1px solid #eadcc2;border-radius:999px}.orv-product .orv-title{margin:0 0 14px;font-size:clamp(28px,4vw,42px);font-weight:700;line-height:1.15;letter-spacing:-.025em;overflow-wrap:break-word}.orv-product .orv-desc{max-width:900px;margin:0;color:var(--muted);font-size:16px}.orv-product .orv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:26px}.orv-product .orv-feature{min-width:0;padding:15px 16px;color:var(--ink);font-size:14px;background:var(--soft);border:1px solid var(--line);border-radius:14px;transition:.25s}.orv-product .orv-feature:hover{transform:translateY(-2px);border-color:#cbd8e0;box-shadow:0 8px 22px rgba(23,50,75,.07)}.orv-product .orv-details{margin-top:28px;border-top:1px solid var(--line)}.orv-product .orv-details details{border-bottom:1px solid var(--line)}.orv-product .orv-details summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;font-weight:650;cursor:pointer;list-style:none}.orv-product .orv-details summary::-webkit-details-marker{display:none}.orv-product .orv-details summary:after{content:\"+\";flex:0 0 auto;color:#8a6d3f;font-size:24px;font-weight:300;line-height:1;transition:transform .2s ease}.orv-product .orv-details details[open] summary:after{transform:rotate(45deg)}.orv-product .orv-details p{margin:0;padding:0 42px 18px 0;color:var(--muted);font-size:14px}\n@media(min-width:900px){.orv-product .orv-hero{padding:46px}.orv-product .orv-media{max-height:760px}.orv-product .orv-copy{padding:42px 52px 48px}.orv-product .orv-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media(max-width:640px){.orv-product{width:calc(100% - 20px);margin:18px auto;border-radius:18px}.orv-product .orv-hero{padding:12px}.orv-product .orv-media{border-radius:15px}.orv-product .orv-media\u003eimg{padding:5px}.orv-product .orv-copy{padding:26px 20px 30px}.orv-product .orv-title{font-size:28px}.orv-product .orv-desc{font-size:15px}.orv-product .orv-grid{grid-template-columns:1fr;gap:9px}.orv-product .orv-feature{padding:13px 14px}.orv-product .orv-thumbs{gap:7px;margin-top:9px}.orv-product .orv-details p{padding-right:0}}\n\u003c\/style\u003e\n\u003csection id=\"05-deluxe-spin-mop-bucket-system\" class=\"orv-product\"\u003e\n\u003cdiv class=\"orv-hero\"\u003e\n\u003cdiv class=\"orv-media\"\u003e\n\u003cimg class=\"orv-main\" alt=\"Orvalmere™ Deluxe Spin Mop \u0026amp; Bucket System\" width=\"1800\" height=\"1800\" loading=\"eager\" decoding=\"async\"\u003e\u003cdiv class=\"orv-image-placeholder\"\u003eLoading product image…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-thumbs\" hidden\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e(function(){var s=document.getElementById('05-deluxe-spin-mop-bucket-system');if(!s)return;var m=s.querySelector('.orv-main'),t=s.querySelector('.orv-thumbs'),p=s.querySelector('.orv-image-placeholder'),done=false;function norm(u){if(!u)return'';u=String(u).trim();if(u.indexOf('\/\/')===0)u=location.protocol+u;return u}function largest(x){if(!x)return'';var a=x.split(',').map(function(i){var q=i.trim().split(\/\\s+\/);return{u:q[0],w:parseInt((q[1]||'0').replace(\/\\D\/g,''),10)||0}}).filter(function(i){return i.u});a.sort(function(a,b){return b.w-a.w});return a.length?a[0].u:''}function collect(){var sels=['media-gallery img','.product__media img','.product-media-container img','.product__media-item img','.product__media-list img','.product__media-wrapper img','.product-gallery img','.product-gallery__image img','.product-single__media img','.product__photos img','[data-media-id] img','[data-product-media] img','.product img'],f=[],seen={};sels.forEach(function(sel){document.querySelectorAll(sel).forEach(function(i){if(s.contains(i))return;var u=norm(i.getAttribute('data-zoom')||i.getAttribute('data-master')||largest(i.getAttribute('data-srcset'))||largest(i.getAttribute('srcset'))||i.getAttribute('data-src')||i.currentSrc||i.src);if(!u||u.indexOf('data:image')===0||seen[u])return;var z=((i.alt||'')+' '+(i.className||'')).toLowerCase(),r=i.getBoundingClientRect();if(\/logo|icon|avatar|payment|badge|swatch|rating|star\/.test(z))return;if(!((i.naturalWidth||0)\u003e=250||(i.width||0)\u003e=250||r.width\u003e=180))return;seen[u]=1;f.push({u:u,a:i.alt||'Orvalmere™ Deluxe Spin Mop \u0026amp; Bucket System'})})});if(!f.length){document.querySelectorAll('meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"]').forEach(function(o){var u=norm(o.content);if(u\u0026\u0026!seen[u]){seen[u]=1;f.push({u:u,a:'Orvalmere™ Deluxe Spin Mop \u0026amp; Bucket System'})}})}return f.slice(0,6)}function set(x){m.onload=function(){m.style.display='block';p.style.display='none'};m.onerror=function(){m.style.display='none';p.style.display='flex';p.textContent='Product image'};m.src=x.u;m.alt=x.a;if(m.complete\u0026\u0026m.naturalWidth){m.style.display='block';p.style.display='none'}}function render(a){if(done||!a.length)return false;done=true;set(a[0]);if(a.length\u003e1){t.innerHTML='';a.slice(0,4).forEach(function(x,n){var b=document.createElement('button'),i=document.createElement('img');b.type='button';b.setAttribute('aria-label','View product image '+(n+1));i.src=x.u;i.alt=x.a;i.loading='lazy';b.appendChild(i);b.onclick=function(){set(x);t.querySelectorAll('button').forEach(function(e){e.classList.remove('is-active')});b.classList.add('is-active')};if(!n)b.classList.add('is-active');t.appendChild(b)});t.hidden=false}return true}function init(n){if(render(collect()))return;if(n\u003c15)setTimeout(function(){init(n+1)},350);else p.textContent='Product image'}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',function(){init(0)});else init(0)})();\u003c\/script\u003e\n\u003cdiv class=\"orv-copy\"\u003e\n\u003cspan class=\"orv-kicker\"\u003eFloor Care Collection\u003c\/span\u003e\u003ch2 class=\"orv-title\"\u003eOrvalmere™ Deluxe Spin Mop \u0026amp; Bucket System\u003c\/h2\u003e\n\u003cp class=\"orv-desc\"\u003eRefresh hard floors with an efficient mop-and-bucket system designed to simplify rinsing and moisture control. The microfiber mop head helps collect dust and everyday residue, while the spin mechanism supports convenient wringing with less direct hand contact.\u003c\/p\u003e\n\u003cdiv class=\"orv-grid\"\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Integrated spin-wringing system\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Absorbent microfiber mop head\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Designed for everyday hard-floor care\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Long handle supports comfortable reach\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Bucket keeps the routine organized\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-details\"\u003e\n\u003cdetails\u003e\u003csummary\u003eDesigned for Everyday Use\u003c\/summary\u003e\u003cp\u003eCreated with a clean, understated look that fits naturally into bright modern homes while keeping practical household care simple and approachable.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCare \u0026amp; Storage\u003c\/summary\u003e\u003cp\u003eRinse or wipe the tool after use as appropriate, allow it to dry fully, and store it in a clean, dry area. Follow the care guidance supplied with your product.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat You’ll Receive\u003c\/summary\u003e\u003cp\u003eYour order includes the Orvalmere™ product and the accessories shown with the selected item. Exact included pieces may vary by product configuration.\u003c\/p\u003e\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":52243837354305,"sku":null,"price":54.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1005\/5250\/7713\/files\/1-2-1.png?v=1789976196"},{"product_id":"orvalmere™-long-handle-floor-scrub-brush","title":"Orvalmere™ Long-Handle Floor Scrub Brush","description":"\u003c!-- Orvalmere™ Long-Handle Floor Scrub Brush | Shopify Custom Liquid --\u003e\n\u003cstyle\u003e\n.orv-product{--ink:#17324b;--muted:#667482;--line:#dfe7ec;--soft:#f7fafc;--accent:#c5a56a;width:calc(100% - 32px);max-width:1120px;margin:32px auto;background:#fff;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;line-height:1.65;border:1px solid var(--line);border-radius:26px;overflow:hidden;box-shadow:0 18px 55px rgba(23,50,75,.08)}\n.orv-product *{box-sizing:border-box}.orv-product .orv-hero{padding:34px;background:linear-gradient(145deg,#fbfdff 0%,#fff 58%,#f7f4ee 100%)}.orv-product .orv-media{width:100%;aspect-ratio:1\/1;border-radius:20px;overflow:hidden;background:#fff;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid rgba(223,231,236,.85)}.orv-product .orv-media\u003eimg{width:100%;height:100%;object-fit:contain;object-position:center;display:none;padding:10px;background:#fff;transition:transform .6s ease}.orv-product .orv-media:hover\u003eimg{transform:scale(1.015)}.orv-product .orv-thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.orv-product .orv-thumbs button{width:100%;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;cursor:pointer;aspect-ratio:1\/1;transition:.25s}.orv-product .orv-thumbs button:hover{transform:translateY(-2px)}.orv-product .orv-thumbs img{width:100%;height:100%;object-fit:contain;display:block;padding:4px;background:#fff}.orv-product .orv-thumbs button:hover,.orv-product .orv-thumbs button:focus,.orv-product .orv-thumbs button.is-active{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px rgba(197,165,106,.14)}.orv-product .orv-image-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;color:#7a8792;font-size:14px;letter-spacing:.03em;text-align:center;background:linear-gradient(145deg,#f7fafc,#eef3f6)}.orv-product .orv-copy{padding:36px 38px 40px}.orv-product .orv-kicker{display:inline-block;margin-bottom:14px;padding:7px 12px;color:#8a6d3f;font-size:12px;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;background:#f7f0e3;border:1px solid #eadcc2;border-radius:999px}.orv-product .orv-title{margin:0 0 14px;font-size:clamp(28px,4vw,42px);font-weight:700;line-height:1.15;letter-spacing:-.025em;overflow-wrap:break-word}.orv-product .orv-desc{max-width:900px;margin:0;color:var(--muted);font-size:16px}.orv-product .orv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:26px}.orv-product .orv-feature{min-width:0;padding:15px 16px;color:var(--ink);font-size:14px;background:var(--soft);border:1px solid var(--line);border-radius:14px;transition:.25s}.orv-product .orv-feature:hover{transform:translateY(-2px);border-color:#cbd8e0;box-shadow:0 8px 22px rgba(23,50,75,.07)}.orv-product .orv-details{margin-top:28px;border-top:1px solid var(--line)}.orv-product .orv-details details{border-bottom:1px solid var(--line)}.orv-product .orv-details summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;font-weight:650;cursor:pointer;list-style:none}.orv-product .orv-details summary::-webkit-details-marker{display:none}.orv-product .orv-details summary:after{content:\"+\";flex:0 0 auto;color:#8a6d3f;font-size:24px;font-weight:300;line-height:1;transition:transform .2s ease}.orv-product .orv-details details[open] summary:after{transform:rotate(45deg)}.orv-product .orv-details p{margin:0;padding:0 42px 18px 0;color:var(--muted);font-size:14px}\n@media(min-width:900px){.orv-product .orv-hero{padding:46px}.orv-product .orv-media{max-height:760px}.orv-product .orv-copy{padding:42px 52px 48px}.orv-product .orv-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media(max-width:640px){.orv-product{width:calc(100% - 20px);margin:18px auto;border-radius:18px}.orv-product .orv-hero{padding:12px}.orv-product .orv-media{border-radius:15px}.orv-product .orv-media\u003eimg{padding:5px}.orv-product .orv-copy{padding:26px 20px 30px}.orv-product .orv-title{font-size:28px}.orv-product .orv-desc{font-size:15px}.orv-product .orv-grid{grid-template-columns:1fr;gap:9px}.orv-product .orv-feature{padding:13px 14px}.orv-product .orv-thumbs{gap:7px;margin-top:9px}.orv-product .orv-details p{padding-right:0}}\n\u003c\/style\u003e\n\u003csection id=\"09-long-handle-floor-scrub-brush\" class=\"orv-product\"\u003e\n\u003cdiv class=\"orv-hero\"\u003e\n\u003cdiv class=\"orv-media\"\u003e\n\u003cimg class=\"orv-main\" alt=\"Orvalmere™ Long-Handle Floor Scrub Brush\" width=\"1800\" height=\"1800\" loading=\"eager\" decoding=\"async\"\u003e\u003cdiv class=\"orv-image-placeholder\"\u003eLoading product image…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-thumbs\" hidden\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e(function(){var s=document.getElementById('09-long-handle-floor-scrub-brush');if(!s)return;var m=s.querySelector('.orv-main'),t=s.querySelector('.orv-thumbs'),p=s.querySelector('.orv-image-placeholder'),done=false;function norm(u){if(!u)return'';u=String(u).trim();if(u.indexOf('\/\/')===0)u=location.protocol+u;return u}function largest(x){if(!x)return'';var a=x.split(',').map(function(i){var q=i.trim().split(\/\\s+\/);return{u:q[0],w:parseInt((q[1]||'0').replace(\/\\D\/g,''),10)||0}}).filter(function(i){return i.u});a.sort(function(a,b){return b.w-a.w});return a.length?a[0].u:''}function collect(){var sels=['media-gallery img','.product__media img','.product-media-container img','.product__media-item img','.product__media-list img','.product__media-wrapper img','.product-gallery img','.product-gallery__image img','.product-single__media img','.product__photos img','[data-media-id] img','[data-product-media] img','.product img'],f=[],seen={};sels.forEach(function(sel){document.querySelectorAll(sel).forEach(function(i){if(s.contains(i))return;var u=norm(i.getAttribute('data-zoom')||i.getAttribute('data-master')||largest(i.getAttribute('data-srcset'))||largest(i.getAttribute('srcset'))||i.getAttribute('data-src')||i.currentSrc||i.src);if(!u||u.indexOf('data:image')===0||seen[u])return;var z=((i.alt||'')+' '+(i.className||'')).toLowerCase(),r=i.getBoundingClientRect();if(\/logo|icon|avatar|payment|badge|swatch|rating|star\/.test(z))return;if(!((i.naturalWidth||0)\u003e=250||(i.width||0)\u003e=250||r.width\u003e=180))return;seen[u]=1;f.push({u:u,a:i.alt||'Orvalmere™ Long-Handle Floor Scrub Brush'})})});if(!f.length){document.querySelectorAll('meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"]').forEach(function(o){var u=norm(o.content);if(u\u0026\u0026!seen[u]){seen[u]=1;f.push({u:u,a:'Orvalmere™ Long-Handle Floor Scrub Brush'})}})}return f.slice(0,6)}function set(x){m.onload=function(){m.style.display='block';p.style.display='none'};m.onerror=function(){m.style.display='none';p.style.display='flex';p.textContent='Product image'};m.src=x.u;m.alt=x.a;if(m.complete\u0026\u0026m.naturalWidth){m.style.display='block';p.style.display='none'}}function render(a){if(done||!a.length)return false;done=true;set(a[0]);if(a.length\u003e1){t.innerHTML='';a.slice(0,4).forEach(function(x,n){var b=document.createElement('button'),i=document.createElement('img');b.type='button';b.setAttribute('aria-label','View product image '+(n+1));i.src=x.u;i.alt=x.a;i.loading='lazy';b.appendChild(i);b.onclick=function(){set(x);t.querySelectorAll('button').forEach(function(e){e.classList.remove('is-active')});b.classList.add('is-active')};if(!n)b.classList.add('is-active');t.appendChild(b)});t.hidden=false}return true}function init(n){if(render(collect()))return;if(n\u003c15)setTimeout(function(){init(n+1)},350);else p.textContent='Product image'}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',function(){init(0)});else init(0)})();\u003c\/script\u003e\n\u003cdiv class=\"orv-copy\"\u003e\n\u003cspan class=\"orv-kicker\"\u003eFloor Care Collection\u003c\/span\u003e\u003ch2 class=\"orv-title\"\u003eOrvalmere™ Long-Handle Floor Scrub Brush\u003c\/h2\u003e\n\u003cp class=\"orv-desc\"\u003eHandle stubborn everyday floor residue with a long-handle scrub brush designed for leverage and control. The broad brush head covers useful surface area while the extended handle supports a more comfortable standing cleaning position.\u003c\/p\u003e\n\u003cdiv class=\"orv-grid\"\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Long handle reduces bending\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Wide head covers more floor area\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Firm bristles support focused scrubbing\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Suitable for common washable surfaces\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Practical design for routine floor care\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-details\"\u003e\n\u003cdetails\u003e\u003csummary\u003eDesigned for Everyday Use\u003c\/summary\u003e\u003cp\u003eCreated with a clean, understated look that fits naturally into bright modern homes while keeping practical household care simple and approachable.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCare \u0026amp; Storage\u003c\/summary\u003e\u003cp\u003eRinse or wipe the tool after use as appropriate, allow it to dry fully, and store it in a clean, dry area. Follow the care guidance supplied with your product.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat You’ll Receive\u003c\/summary\u003e\u003cp\u003eYour order includes the Orvalmere™ product and the accessories shown with the selected item. Exact included pieces may vary by product configuration.\u003c\/p\u003e\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":52243837944129,"sku":null,"price":29.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1005\/5250\/7713\/files\/1-3-1.png?v=1789976248"},{"product_id":"orvalmere™-long-handle-floor-scrub-brush-1","title":"Orvalmere™ Wide-Blade Floor Squeegee","description":"\u003c!-- Orvalmere™ Wide-Blade Floor Squeegee | Shopify Custom Liquid --\u003e\n\u003cstyle\u003e\n.orv-product{--ink:#17324b;--muted:#667482;--line:#dfe7ec;--soft:#f7fafc;--accent:#c5a56a;width:calc(100% - 32px);max-width:1120px;margin:32px auto;background:#fff;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;line-height:1.65;border:1px solid var(--line);border-radius:26px;overflow:hidden;box-shadow:0 18px 55px rgba(23,50,75,.08)}\n.orv-product *{box-sizing:border-box}.orv-product .orv-hero{padding:34px;background:linear-gradient(145deg,#fbfdff 0%,#fff 58%,#f7f4ee 100%)}.orv-product .orv-media{width:100%;aspect-ratio:1\/1;border-radius:20px;overflow:hidden;background:#fff;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid rgba(223,231,236,.85)}.orv-product .orv-media\u003eimg{width:100%;height:100%;object-fit:contain;object-position:center;display:none;padding:10px;background:#fff;transition:transform .6s ease}.orv-product .orv-media:hover\u003eimg{transform:scale(1.015)}.orv-product .orv-thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.orv-product .orv-thumbs button{width:100%;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;cursor:pointer;aspect-ratio:1\/1;transition:.25s}.orv-product .orv-thumbs button:hover{transform:translateY(-2px)}.orv-product .orv-thumbs img{width:100%;height:100%;object-fit:contain;display:block;padding:4px;background:#fff}.orv-product .orv-thumbs button:hover,.orv-product .orv-thumbs button:focus,.orv-product .orv-thumbs button.is-active{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px rgba(197,165,106,.14)}.orv-product .orv-image-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;color:#7a8792;font-size:14px;letter-spacing:.03em;text-align:center;background:linear-gradient(145deg,#f7fafc,#eef3f6)}.orv-product .orv-copy{padding:36px 38px 40px}.orv-product .orv-kicker{display:inline-block;margin-bottom:14px;padding:7px 12px;color:#8a6d3f;font-size:12px;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;background:#f7f0e3;border:1px solid #eadcc2;border-radius:999px}.orv-product .orv-title{margin:0 0 14px;font-size:clamp(28px,4vw,42px);font-weight:700;line-height:1.15;letter-spacing:-.025em;overflow-wrap:break-word}.orv-product .orv-desc{max-width:900px;margin:0;color:var(--muted);font-size:16px}.orv-product .orv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:26px}.orv-product .orv-feature{min-width:0;padding:15px 16px;color:var(--ink);font-size:14px;background:var(--soft);border:1px solid var(--line);border-radius:14px;transition:.25s}.orv-product .orv-feature:hover{transform:translateY(-2px);border-color:#cbd8e0;box-shadow:0 8px 22px rgba(23,50,75,.07)}.orv-product .orv-details{margin-top:28px;border-top:1px solid var(--line)}.orv-product .orv-details details{border-bottom:1px solid var(--line)}.orv-product .orv-details summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;font-weight:650;cursor:pointer;list-style:none}.orv-product .orv-details summary::-webkit-details-marker{display:none}.orv-product .orv-details summary:after{content:\"+\";flex:0 0 auto;color:#8a6d3f;font-size:24px;font-weight:300;line-height:1;transition:transform .2s ease}.orv-product .orv-details details[open] summary:after{transform:rotate(45deg)}.orv-product .orv-details p{margin:0;padding:0 42px 18px 0;color:var(--muted);font-size:14px}\n@media(min-width:900px){.orv-product .orv-hero{padding:46px}.orv-product .orv-media{max-height:760px}.orv-product .orv-copy{padding:42px 52px 48px}.orv-product .orv-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media(max-width:640px){.orv-product{width:calc(100% - 20px);margin:18px auto;border-radius:18px}.orv-product .orv-hero{padding:12px}.orv-product .orv-media{border-radius:15px}.orv-product .orv-media\u003eimg{padding:5px}.orv-product .orv-copy{padding:26px 20px 30px}.orv-product .orv-title{font-size:28px}.orv-product .orv-desc{font-size:15px}.orv-product .orv-grid{grid-template-columns:1fr;gap:9px}.orv-product .orv-feature{padding:13px 14px}.orv-product .orv-thumbs{gap:7px;margin-top:9px}.orv-product .orv-details p{padding-right:0}}\n\u003c\/style\u003e\n\u003csection id=\"19-wide-blade-floor-squeegee\" class=\"orv-product\"\u003e\n\u003cdiv class=\"orv-hero\"\u003e\n\u003cdiv class=\"orv-media\"\u003e\n\u003cimg class=\"orv-main\" alt=\"Orvalmere™ Wide-Blade Floor Squeegee\" width=\"1800\" height=\"1800\" loading=\"eager\" decoding=\"async\"\u003e\u003cdiv class=\"orv-image-placeholder\"\u003eLoading product image…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-thumbs\" hidden\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e(function(){var s=document.getElementById('19-wide-blade-floor-squeegee');if(!s)return;var m=s.querySelector('.orv-main'),t=s.querySelector('.orv-thumbs'),p=s.querySelector('.orv-image-placeholder'),done=false;function norm(u){if(!u)return'';u=String(u).trim();if(u.indexOf('\/\/')===0)u=location.protocol+u;return u}function largest(x){if(!x)return'';var a=x.split(',').map(function(i){var q=i.trim().split(\/\\s+\/);return{u:q[0],w:parseInt((q[1]||'0').replace(\/\\D\/g,''),10)||0}}).filter(function(i){return i.u});a.sort(function(a,b){return b.w-a.w});return a.length?a[0].u:''}function collect(){var sels=['media-gallery img','.product__media img','.product-media-container img','.product__media-item img','.product__media-list img','.product__media-wrapper img','.product-gallery img','.product-gallery__image img','.product-single__media img','.product__photos img','[data-media-id] img','[data-product-media] img','.product img'],f=[],seen={};sels.forEach(function(sel){document.querySelectorAll(sel).forEach(function(i){if(s.contains(i))return;var u=norm(i.getAttribute('data-zoom')||i.getAttribute('data-master')||largest(i.getAttribute('data-srcset'))||largest(i.getAttribute('srcset'))||i.getAttribute('data-src')||i.currentSrc||i.src);if(!u||u.indexOf('data:image')===0||seen[u])return;var z=((i.alt||'')+' '+(i.className||'')).toLowerCase(),r=i.getBoundingClientRect();if(\/logo|icon|avatar|payment|badge|swatch|rating|star\/.test(z))return;if(!((i.naturalWidth||0)\u003e=250||(i.width||0)\u003e=250||r.width\u003e=180))return;seen[u]=1;f.push({u:u,a:i.alt||'Orvalmere™ Wide-Blade Floor Squeegee'})})});if(!f.length){document.querySelectorAll('meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"]').forEach(function(o){var u=norm(o.content);if(u\u0026\u0026!seen[u]){seen[u]=1;f.push({u:u,a:'Orvalmere™ Wide-Blade Floor Squeegee'})}})}return f.slice(0,6)}function set(x){m.onload=function(){m.style.display='block';p.style.display='none'};m.onerror=function(){m.style.display='none';p.style.display='flex';p.textContent='Product image'};m.src=x.u;m.alt=x.a;if(m.complete\u0026\u0026m.naturalWidth){m.style.display='block';p.style.display='none'}}function render(a){if(done||!a.length)return false;done=true;set(a[0]);if(a.length\u003e1){t.innerHTML='';a.slice(0,4).forEach(function(x,n){var b=document.createElement('button'),i=document.createElement('img');b.type='button';b.setAttribute('aria-label','View product image '+(n+1));i.src=x.u;i.alt=x.a;i.loading='lazy';b.appendChild(i);b.onclick=function(){set(x);t.querySelectorAll('button').forEach(function(e){e.classList.remove('is-active')});b.classList.add('is-active')};if(!n)b.classList.add('is-active');t.appendChild(b)});t.hidden=false}return true}function init(n){if(render(collect()))return;if(n\u003c15)setTimeout(function(){init(n+1)},350);else p.textContent='Product image'}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',function(){init(0)});else init(0)})();\u003c\/script\u003e\n\u003cdiv class=\"orv-copy\"\u003e\n\u003cspan class=\"orv-kicker\"\u003eFloor Care Collection\u003c\/span\u003e\u003ch2 class=\"orv-title\"\u003eOrvalmere™ Wide-Blade Floor Squeegee\u003c\/h2\u003e\n\u003cp class=\"orv-desc\"\u003eMove water and light debris across smooth floors with a wide-blade squeegee designed for efficient household cleanup. The long handle supports comfortable reach while the broad flexible edge covers more surface with each pass.\u003c\/p\u003e\n\u003cdiv class=\"orv-grid\"\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Wide blade covers generous surface area\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Long handle supports standing use\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Moves water across smooth floors\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Useful in bathrooms, kitchens, and patios\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Simple rinse-clean design\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-details\"\u003e\n\u003cdetails\u003e\u003csummary\u003eDesigned for Everyday Use\u003c\/summary\u003e\u003cp\u003eCreated with a clean, understated look that fits naturally into bright modern homes while keeping practical household care simple and approachable.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCare \u0026amp; Storage\u003c\/summary\u003e\u003cp\u003eRinse or wipe the tool after use as appropriate, allow it to dry fully, and store it in a clean, dry area. Follow the care guidance supplied with your product.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat You’ll Receive\u003c\/summary\u003e\u003cp\u003eYour order includes the Orvalmere™ product and the accessories shown with the selected item. Exact included pieces may vary by product configuration.\u003c\/p\u003e\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":52243838009665,"sku":null,"price":28.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1005\/5250\/7713\/files\/1-4-1.png?v=1789976300"},{"product_id":"orvalmere™-multi-surface-microfiber-mop-pad-set","title":"Orvalmere™ Multi-Surface Microfiber Mop Pad Set","description":"\u003c!-- Orvalmere™ Multi-Surface Microfiber Mop Pad Set | Shopify Custom Liquid --\u003e\n\u003cstyle\u003e\n.orv-product{--ink:#17324b;--muted:#667482;--line:#dfe7ec;--soft:#f7fafc;--accent:#c5a56a;width:calc(100% - 32px);max-width:1120px;margin:32px auto;background:#fff;color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;line-height:1.65;border:1px solid var(--line);border-radius:26px;overflow:hidden;box-shadow:0 18px 55px rgba(23,50,75,.08)}\n.orv-product *{box-sizing:border-box}.orv-product .orv-hero{padding:34px;background:linear-gradient(145deg,#fbfdff 0%,#fff 58%,#f7f4ee 100%)}.orv-product .orv-media{width:100%;aspect-ratio:1\/1;border-radius:20px;overflow:hidden;background:#fff;position:relative;display:flex;align-items:center;justify-content:center;border:1px solid rgba(223,231,236,.85)}.orv-product .orv-media\u003eimg{width:100%;height:100%;object-fit:contain;object-position:center;display:none;padding:10px;background:#fff;transition:transform .6s ease}.orv-product .orv-media:hover\u003eimg{transform:scale(1.015)}.orv-product .orv-thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:12px}.orv-product .orv-thumbs button{width:100%;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff;cursor:pointer;aspect-ratio:1\/1;transition:.25s}.orv-product .orv-thumbs button:hover{transform:translateY(-2px)}.orv-product .orv-thumbs img{width:100%;height:100%;object-fit:contain;display:block;padding:4px;background:#fff}.orv-product .orv-thumbs button:hover,.orv-product .orv-thumbs button:focus,.orv-product .orv-thumbs button.is-active{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px rgba(197,165,106,.14)}.orv-product .orv-image-placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;color:#7a8792;font-size:14px;letter-spacing:.03em;text-align:center;background:linear-gradient(145deg,#f7fafc,#eef3f6)}.orv-product .orv-copy{padding:36px 38px 40px}.orv-product .orv-kicker{display:inline-block;margin-bottom:14px;padding:7px 12px;color:#8a6d3f;font-size:12px;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;background:#f7f0e3;border:1px solid #eadcc2;border-radius:999px}.orv-product .orv-title{margin:0 0 14px;font-size:clamp(28px,4vw,42px);font-weight:700;line-height:1.15;letter-spacing:-.025em;overflow-wrap:break-word}.orv-product .orv-desc{max-width:900px;margin:0;color:var(--muted);font-size:16px}.orv-product .orv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:26px}.orv-product .orv-feature{min-width:0;padding:15px 16px;color:var(--ink);font-size:14px;background:var(--soft);border:1px solid var(--line);border-radius:14px;transition:.25s}.orv-product .orv-feature:hover{transform:translateY(-2px);border-color:#cbd8e0;box-shadow:0 8px 22px rgba(23,50,75,.07)}.orv-product .orv-details{margin-top:28px;border-top:1px solid var(--line)}.orv-product .orv-details details{border-bottom:1px solid var(--line)}.orv-product .orv-details summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;font-weight:650;cursor:pointer;list-style:none}.orv-product .orv-details summary::-webkit-details-marker{display:none}.orv-product .orv-details summary:after{content:\"+\";flex:0 0 auto;color:#8a6d3f;font-size:24px;font-weight:300;line-height:1;transition:transform .2s ease}.orv-product .orv-details details[open] summary:after{transform:rotate(45deg)}.orv-product .orv-details p{margin:0;padding:0 42px 18px 0;color:var(--muted);font-size:14px}\n@media(min-width:900px){.orv-product .orv-hero{padding:46px}.orv-product .orv-media{max-height:760px}.orv-product .orv-copy{padding:42px 52px 48px}.orv-product .orv-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}\n@media(max-width:640px){.orv-product{width:calc(100% - 20px);margin:18px auto;border-radius:18px}.orv-product .orv-hero{padding:12px}.orv-product .orv-media{border-radius:15px}.orv-product .orv-media\u003eimg{padding:5px}.orv-product .orv-copy{padding:26px 20px 30px}.orv-product .orv-title{font-size:28px}.orv-product .orv-desc{font-size:15px}.orv-product .orv-grid{grid-template-columns:1fr;gap:9px}.orv-product .orv-feature{padding:13px 14px}.orv-product .orv-thumbs{gap:7px;margin-top:9px}.orv-product .orv-details p{padding-right:0}}\n\u003c\/style\u003e\n\u003csection id=\"14-multi-surface-microfiber-mop-pad-set\" class=\"orv-product\"\u003e\n\u003cdiv class=\"orv-hero\"\u003e\n\u003cdiv class=\"orv-media\"\u003e\n\u003cimg class=\"orv-main\" alt=\"Orvalmere™ Multi-Surface Microfiber Mop Pad Set\" width=\"1800\" height=\"1800\" loading=\"eager\" decoding=\"async\"\u003e\u003cdiv class=\"orv-image-placeholder\"\u003eLoading product image…\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-thumbs\" hidden\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e(function(){var s=document.getElementById('14-multi-surface-microfiber-mop-pad-set');if(!s)return;var m=s.querySelector('.orv-main'),t=s.querySelector('.orv-thumbs'),p=s.querySelector('.orv-image-placeholder'),done=false;function norm(u){if(!u)return'';u=String(u).trim();if(u.indexOf('\/\/')===0)u=location.protocol+u;return u}function largest(x){if(!x)return'';var a=x.split(',').map(function(i){var q=i.trim().split(\/\\s+\/);return{u:q[0],w:parseInt((q[1]||'0').replace(\/\\D\/g,''),10)||0}}).filter(function(i){return i.u});a.sort(function(a,b){return b.w-a.w});return a.length?a[0].u:''}function collect(){var sels=['media-gallery img','.product__media img','.product-media-container img','.product__media-item img','.product__media-list img','.product__media-wrapper img','.product-gallery img','.product-gallery__image img','.product-single__media img','.product__photos img','[data-media-id] img','[data-product-media] img','.product img'],f=[],seen={};sels.forEach(function(sel){document.querySelectorAll(sel).forEach(function(i){if(s.contains(i))return;var u=norm(i.getAttribute('data-zoom')||i.getAttribute('data-master')||largest(i.getAttribute('data-srcset'))||largest(i.getAttribute('srcset'))||i.getAttribute('data-src')||i.currentSrc||i.src);if(!u||u.indexOf('data:image')===0||seen[u])return;var z=((i.alt||'')+' '+(i.className||'')).toLowerCase(),r=i.getBoundingClientRect();if(\/logo|icon|avatar|payment|badge|swatch|rating|star\/.test(z))return;if(!((i.naturalWidth||0)\u003e=250||(i.width||0)\u003e=250||r.width\u003e=180))return;seen[u]=1;f.push({u:u,a:i.alt||'Orvalmere™ Multi-Surface Microfiber Mop Pad Set'})})});if(!f.length){document.querySelectorAll('meta[property=\"og:image\"],meta[property=\"og:image:secure_url\"]').forEach(function(o){var u=norm(o.content);if(u\u0026\u0026!seen[u]){seen[u]=1;f.push({u:u,a:'Orvalmere™ Multi-Surface Microfiber Mop Pad Set'})}})}return f.slice(0,6)}function set(x){m.onload=function(){m.style.display='block';p.style.display='none'};m.onerror=function(){m.style.display='none';p.style.display='flex';p.textContent='Product image'};m.src=x.u;m.alt=x.a;if(m.complete\u0026\u0026m.naturalWidth){m.style.display='block';p.style.display='none'}}function render(a){if(done||!a.length)return false;done=true;set(a[0]);if(a.length\u003e1){t.innerHTML='';a.slice(0,4).forEach(function(x,n){var b=document.createElement('button'),i=document.createElement('img');b.type='button';b.setAttribute('aria-label','View product image '+(n+1));i.src=x.u;i.alt=x.a;i.loading='lazy';b.appendChild(i);b.onclick=function(){set(x);t.querySelectorAll('button').forEach(function(e){e.classList.remove('is-active')});b.classList.add('is-active')};if(!n)b.classList.add('is-active');t.appendChild(b)});t.hidden=false}return true}function init(n){if(render(collect()))return;if(n\u003c15)setTimeout(function(){init(n+1)},350);else p.textContent='Product image'}if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',function(){init(0)});else init(0)})();\u003c\/script\u003e\n\u003cdiv class=\"orv-copy\"\u003e\n\u003cspan class=\"orv-kicker\"\u003eFloor Care Collection\u003c\/span\u003e\u003ch2 class=\"orv-title\"\u003eOrvalmere™ Multi-Surface Microfiber Mop Pad Set\u003c\/h2\u003e\n\u003cp class=\"orv-desc\"\u003eRefresh your floor-care routine with reusable microfiber mop pads designed to collect dust, hair, and everyday residue across common sealed hard floors. The soft textured surface supports effective cleaning while remaining convenient to wash and reuse.\u003c\/p\u003e\n\u003cdiv class=\"orv-grid\"\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Reusable microfiber construction\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Collects dust, hair, and light residue\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Suitable for common sealed hard floors\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Soft texture supports everyday care\u003c\/div\u003e\n\u003cdiv class=\"orv-feature\"\u003e✓ Washable design reduces disposable waste\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"orv-details\"\u003e\n\u003cdetails\u003e\u003csummary\u003eDesigned for Everyday Use\u003c\/summary\u003e\u003cp\u003eCreated with a clean, understated look that fits naturally into bright modern homes while keeping practical household care simple and approachable.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCare \u0026amp; Storage\u003c\/summary\u003e\u003cp\u003eRinse or wipe the tool after use as appropriate, allow it to dry fully, and store it in a clean, dry area. Follow the care guidance supplied with your product.\u003c\/p\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat You’ll Receive\u003c\/summary\u003e\u003cp\u003eYour order includes the Orvalmere™ product and the accessories shown with the selected item. Exact included pieces may vary by product configuration.\u003c\/p\u003e\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":52243839582529,"sku":null,"price":24.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1005\/5250\/7713\/files\/1-5-1.png?v=1789976341"}],"url":"https:\/\/orvalmere.com\/collections\/floor-care-collection.oembed","provider":"𝐨𝐫𝐯𝐚𝐥𝐦𝐞𝐫𝐞™","version":"1.0","type":"link"}