[object Object]

← back to Dw Contact Us Pages

Review fixes (Kimi + contrarian): JSON-LD Offer carve-out in layout/theme.liquid; gate on product.template_suffix (covers quick-shop); .dw-contact-us-product CSS scope + min-order notice; null-payload = failure; per-call try/catch; qty batches of 100; template rollback restores null exactly; stale-targets guard; verify checks JSON-LD + min-order

2b12c68d18835d7329b52401bf1b5105a68bc782 · 2026-09-19 10:25:01 -0700 · Steve Abrams

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki

Files touched

Diff

commit 2b12c68d18835d7329b52401bf1b5105a68bc782
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sat Sep 19 10:25:01 2026 -0700

    Review fixes (Kimi + contrarian): JSON-LD Offer carve-out in layout/theme.liquid; gate on product.template_suffix (covers quick-shop); .dw-contact-us-product CSS scope + min-order notice; null-payload = failure; per-call try/catch; qty batches of 100; template rollback restores null exactly; stale-targets guard; verify checks JSON-LD + min-order
    
    Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_0163KBzeE1R39RSbxNmAjbki
---
 .../145556635699/layout/theme.liquid               | 1453 +++++++++++++++++++
 data/theme-preimage/145556635699/manifest.json     |   13 +-
 scripts/assign-template.mjs                        |   14 +-
 scripts/harden-variants.mjs                        |   24 +-
 scripts/lib.mjs                                    |   19 +
 scripts/unpublish-channels.mjs                     |    9 +-
 scripts/verify.mjs                                 |    7 +
 theme/layout/theme.liquid                          | 1454 ++++++++++++++++++++
 theme/snippets/dw-contact-us-block.liquid          |   33 +-
 theme/snippets/product.liquid                      |    3 +-
 10 files changed, 3003 insertions(+), 26 deletions(-)

diff --git a/data/theme-preimage/145556635699/layout/theme.liquid b/data/theme-preimage/145556635699/layout/theme.liquid
new file mode 100644
index 0000000..c80fbda
--- /dev/null
+++ b/data/theme-preimage/145556635699/layout/theme.liquid
@@ -0,0 +1,1453 @@
+{% comment %}DW-CHINA-BLOCK-START{% endcomment %}
+{% assign dw_blocked_countries = "CN" | split: "," %}
+{% assign dw_visitor_country = localization.country.iso_code | upcase %}
+{% assign dw_is_blocked = false %}
+{% for dw_bc in dw_blocked_countries %}
+  {% assign dw_bc_trimmed = dw_bc | strip %}
+  {% if dw_visitor_country == dw_bc_trimmed %}
+    {% assign dw_is_blocked = true %}
+  {% endif %}
+{% endfor %}
+
+{% if dw_is_blocked %}
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<!-- DW-CACHE-TOUCH:20260804-1030-scrolljump -->
+<!-- DW-CHINA-JS-BLOCK-START -->
+<script>
+(function() {
+  var blockedCountries = ['CN'];
+  fetch('/browsing_context_suggestions.json', {method: 'GET', credentials: 'same-origin'})
+    .then(function(r) { return r.json(); })
+    .catch(function() { return null; })
+    .then(function(data) {
+      if (data && data.detected_values && data.detected_values.country && data.detected_values.country.handle) {
+        var detectedCountry = data.detected_values.country.handle.toUpperCase();
+        if (blockedCountries.indexOf(detectedCountry) !== -1) {
+          var container = document.createElement('div');
+          container.innerHTML = '<div style="position:fixed;top:0;left:0;width:100%;height:100%;background:#f5f5f5;z-index:999999;display:flex;align-items:center;justify-content:center;font-family:-apple-system,BlinkMacSystemFont,sans-serif"><div style="text-align:center;padding:60px 40px;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.08);max-width:520px;width:90%"><div style="font-size:48px;margin-bottom:20px">&#127760;</div><h1 style="font-size:24px;margin-bottom:16px;font-weight:600;color:#333">Region Not Available</h1><p style="font-size:16px;line-height:1.6;color:#666;margin-bottom:12px">This store is not available in your region.</p><p style="font-size:16px;line-height:1.6;color:#666">We do not ship to or serve customers in your area at this time.</p></div></div>';
+          document.body.innerHTML = '';
+          document.body.appendChild(container);
+        }
+      }
+    });
+})();
+</script>
+<!-- DW-CHINA-JS-BLOCK-END -->
+
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Region Not Available</title>
+  <style>
+    * { margin: 0; padding: 0; box-sizing: border-box; }
+    body {
+      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+      background: #f5f5f5;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      min-height: 100vh;
+      color: #333;
+    }
+    .container {
+      text-align: center;
+      padding: 60px 40px;
+      background: white;
+      border-radius: 12px;
+      box-shadow: 0 4px 24px rgba(0,0,0,0.08);
+      max-width: 520px;
+      width: 90%;
+    }
+    .icon { font-size: 48px; margin-bottom: 20px; }
+    h1 { font-size: 24px; margin-bottom: 16px; font-weight: 600; }
+    p { font-size: 16px; line-height: 1.6; color: #666; margin-bottom: 12px; }
+    .contact { margin-top: 24px; font-size: 14px; color: #999; }
+    .contact a { color: #2563eb; text-decoration: none; }
+  </style>
+<script src="{{ 'dw-grid-control.js' | asset_url }}" defer></script>
+
+
+
+
+
+<!-- cache-bust: 2026-03-25T00:54:55.724677 -->
+</head>
+<body>
+  <div class="container">
+    <div class="icon">&#127760;</div>
+    <h1>Region Not Available</h1>
+    <p>We're sorry, but this store is not available in your region.</p>
+    <p>We do not ship to or serve customers in your area at this time.</p>
+    <div class="contact">
+      Questions? Contact us at <a href="mailto:info@designerwallcoverings.com">info@designerwallcoverings.com</a>
+    </div>
+  </div>
+
+
+</body>
+</html>
+{% break %}
+{% endif %}
+{% comment %}DW-CHINA-BLOCK-END{% endcomment %}
+
+<!doctype html>
+<html
+  class="
+    no-js
+    loading
+  "
+  lang="{{ request.locale.iso_code }}"
+>
+<head>
+{% render 'cpc-collection-guard' %}
+<!-- Consent Mode v2 (TK-19): default-denied in EEA/UK/CH, analytics granted elsewhere; ads denied globally (DW runs no ads) -->
+<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
+gtag('consent','default',{analytics_storage:'granted',ad_storage:'denied',ad_user_data:'denied',ad_personalization:'denied'});
+gtag('consent','default',{analytics_storage:'denied',ad_storage:'denied',ad_user_data:'denied',ad_personalization:'denied',wait_for_update:500,region:["AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE", "IS", "LI", "NO", "GB", "CH"]});
+</script>
+<!-- Google tag (gtag.js) GA4 G-53F1QBZSG0 -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-53F1QBZSG0"></script>
+<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','G-53F1QBZSG0');</script>
+
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+  <!-- Preconnect Domains -->
+  <link rel="preconnect" href="https://cdn.shopify.com" crossorigin>
+  <link rel="preconnect" href="https://fonts.shopify.com" crossorigin>
+  <link rel="preconnect" href="https://monorail-edge.shopifysvc.com">
+
+  <!-- Preload Assets -->
+  <link rel="preload" href="{{ 'chiko-icons.woff' | asset_url }}" as="font" type="font/woff" crossorigin>
+  <link rel="preload" href="{{ 'pxu-social-icons.woff' | asset_url }}" as="font" type="font/woff" crossorigin>
+
+  <link rel="preload" href="{{ 'theme.css' | asset_url }}" as="style">
+
+  <link rel="preload" href="{{ 'modernizr-2.8.2.min.js' | asset_url  }}" as="script">
+
+  {% if template contains 'cart' %}
+    <link rel="preload" href="{{ '/services/javascripts/countries.js' }}" as="script">
+    <link rel="preload" href="{{ 'shopify_common.js' | shopify_asset_url }}" as="script">
+  {% endif %}
+
+  {% if template contains 'customers' %}
+    <link rel="preload" href="{{ 'shopify_common.js' | shopify_asset_url }}" as="script">
+    <link rel="preload" href="{{ 'customer_area.js' | shopify_asset_url }}" as="script">
+  {% endif %}
+
+  <link rel="preload" href="{{ 'grid.js' | asset_url }}" as="script">
+
+  <script src="//cdata.modernpostcard.com/js/E3CA4636CEDAD4.js" async defer></script>
+
+  <title>
+    {{ page_title }}
+
+    {% if current_tags %}
+      &#8211; {{ current_tags | join: ', ' }}
+    {% endif %}
+
+    {% if current_page != 1 %}
+      &#8211; {{ 'general.pagination.page' | t: page_number: current_page }}
+    {% endif %}
+
+    {% unless page_title contains shop.name %}
+      &#8211; {{ shop.name }}
+    {% endunless %}
+  </title>
+
+  {% if page_description %}
+    <meta name="description" content="{{ page_description | escape }}" />
+  {% endif %}
+
+  {% if settings.favicon %}
+    <link rel="shortcut icon" href="{{ settings.favicon | img_url: '32x32' }}" type="image/png" />
+  {% endif %}
+
+  {% if template contains 'collection' and current_tags %}
+    <meta name="robots" content="noindex" />
+    <link rel="canonical" href="{{ shop.url }}{{ collection.url }}" />
+  {% else %}
+    <link rel="canonical" href="{{ canonical_url }}" />
+  {% endif %}
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+
+  {%- render 'head.import-map' -%}
+  {%- render 'head.is-land' -%}
+
+  {% comment %}
+  {% render 'boost-sd-fallback' %}
+  {% endcomment %}
+    {% comment %}cache-touch 20260730-133317 recompile-guard{% endcomment %}<style>:is(.boost-sd__product-item[data-product-id="4351299584051"],.boost-sd__product-item[data-product-id="4351299649587"],.boost-sd__product-item[data-product-id="4351299715123"],.boost-sd__product-item[data-product-id="4351299747891"],.boost-sd__product-item[data-product-id="4351299878963"],.boost-sd__product-item[data-product-id="4351299977267"],.boost-sd__product-item[data-product-id="4351276875827"],.boost-sd__product-item[data-product-id="4351276941363"],.boost-sd__product-item[data-product-id="4351276974131"],.boost-sd__product-item[data-product-id="4351277072435"],.boost-sd__product-item[data-product-id="4351277203507"],.boost-sd__product-item[data-product-id="4351277236275"],.boost-sd__product-item[data-product-id="4351277269043"],.boost-sd__product-item[data-product-id="4351277301811"],.boost-sd__product-item[data-product-id="4351277334579"],.boost-sd__product-item[data-product-id="4351277465651"],.boost-sd__product-item[data-product-id="4351277498419"],.boost-sd__product-item[data-product-id="4351277563955"],.boost-sd__product-item[data-product-id="4351277727795"],.boost-sd__product-item[data-product-id="4351277826099"],.boost-sd__product-item[data-product-id="4351278022707"],.boost-sd__product-item[data-product-id="4351278219315"],.boost-sd__product-item[data-product-id="4351278284851"],.boost-sd__product-item[data-product-id="4351278448691"],.boost-sd__product-item[data-product-id="4351278579763"],.boost-sd__product-item[data-product-id="4351278743603"],.boost-sd__product-item[data-product-id="4351278809139"],.boost-sd__product-item[data-product-id="4351279005747"],.boost-sd__product-item[data-product-id="4351279038515"],.boost-sd__product-item[data-product-id="4351279169587"],.boost-sd__product-item[data-product-id="4351279202355"],.boost-sd__product-item[data-product-id="4351279235123"],.boost-sd__product-item[data-product-id="4351279267891"],.boost-sd__product-item[data-product-id="4351279333427"],.boost-sd__product-item[data-product-id="4351279398963"],.boost-sd__product-item[data-product-id="4351279431731"],.boost-sd__product-item[data-product-id="4351279562803"],.boost-sd__product-item[data-product-id="4351279595571"],.boost-sd__product-item[data-product-id="4351279661107"],.boost-sd__product-item[data-product-id="4351279693875"],.boost-sd__product-item[data-product-id="4351279759411"],.boost-sd__product-item[data-product-id="4351279792179"],.boost-sd__product-item[data-product-id="4351279824947"],.boost-sd__product-item[data-product-id="4351279923251"],.boost-sd__product-item[data-product-id="4351279988787"],.boost-sd__product-item[data-product-id="4351282118707"],.boost-sd__product-item[data-product-id="4351282741299"],.boost-sd__product-item[data-product-id="4351283331123"],.boost-sd__product-item[data-product-id="4351283363891"],.boost-sd__product-item[data-product-id="4351283494963"],.boost-sd__product-item[data-product-id="4351283593267"],.boost-sd__product-item[data-product-id="4351283953715"],.boost-sd__product-item[data-product-id="4351284052019"],.boost-sd__product-item[data-product-id="4351284215859"],.boost-sd__product-item[data-product-id="4351286116403"],.boost-sd__product-item[data-product-id="4351286247475"],.boost-sd__product-item[data-product-id="4351286411315"],.boost-sd__product-item[data-product-id="4351286575155"],.boost-sd__product-item[data-product-id="4351286902835"],.boost-sd__product-item[data-product-id="4351286968371"],.boost-sd__product-item[data-product-id="4351287066675"],.boost-sd__product-item[data-product-id="4351287099443"],.boost-sd__product-item[data-product-id="4351287328819"],.boost-sd__product-item[data-product-id="4351287885875"],.boost-sd__product-item[data-product-id="4351288672307"],.boost-sd__product-item[data-product-id="4351288770611"],.boost-sd__product-item[data-product-id="4351288999987"],.boost-sd__product-item[data-product-id="4351289557043"],.boost-sd__product-item[data-product-id="4351289851955"],.boost-sd__product-item[data-product-id="4351289884723"],.boost-sd__product-item[data-product-id="4351289917491"],.boost-sd__product-item[data-product-id="4351289950259"],.boost-sd__product-item[data-product-id="4351290834995"],.boost-sd__product-item[data-product-id="4351290933299"],.boost-sd__product-item[data-product-id="4351291097139"],.boost-sd__product-item[data-product-id="4351291162675"],.boost-sd__product-item[data-product-id="4351291621427"],.boost-sd__product-item[data-product-id="4351291654195"],.boost-sd__product-item[data-product-id="4351291752499"],.boost-sd__product-item[data-product-id="4351291785267"],.boost-sd__product-item[data-product-id="4351291818035"],.boost-sd__product-item[data-product-id="4351292899379"],.boost-sd__product-item[data-product-id="4351293292595"],.boost-sd__product-item[data-product-id="4351293390899"],.boost-sd__product-item[data-product-id="4351293456435"],.boost-sd__product-item[data-product-id="4351293521971"],.boost-sd__product-item[data-product-id="4351293849651"],.boost-sd__product-item[data-product-id="4351294079027"],.boost-sd__product-item[data-product-id="4351294144563"],.boost-sd__product-item[data-product-id="4351294210099"],.boost-sd__product-item[data-product-id="4351294439475"],.boost-sd__product-item[data-product-id="4351294472243"],.boost-sd__product-item[data-product-id="4351294537779"],.boost-sd__product-item[data-product-id="4351294603315"],.boost-sd__product-item[data-product-id="4351294668851"],.boost-sd__product-item[data-product-id="4351294799923"],.boost-sd__product-item[data-product-id="4351295029299"],.boost-sd__product-item[data-product-id="4351295094835"],.boost-sd__product-item[data-product-id="4351295127603"],.boost-sd__product-item[data-product-id="4351295815731"],.boost-sd__product-item[data-product-id="4351295848499"],.boost-sd__product-item[data-product-id="4351295914035"],.boost-sd__product-item[data-product-id="4351296045107"],.boost-sd__product-item[data-product-id="4351296110643"],.boost-sd__product-item[data-product-id="4351296176179"],.boost-sd__product-item[data-product-id="4351296274483"],.boost-sd__product-item[data-product-id="4351296503859"],.boost-sd__product-item[data-product-id="4351296536627"],.boost-sd__product-item[data-product-id="4351296569395"],.boost-sd__product-item[data-product-id="4351296798771"],.boost-sd__product-item[data-product-id="4351297060915"],.boost-sd__product-item[data-product-id="4351297093683"],.boost-sd__product-item[data-product-id="4351297159219"],.boost-sd__product-item[data-product-id="4351297257523"],.boost-sd__product-item[data-product-id="4351297323059"],.boost-sd__product-item[data-product-id="4351297355827"],.boost-sd__product-item[data-product-id="4351297388595"],.boost-sd__product-item[data-product-id="4351297912883"],.boost-sd__product-item[data-product-id="4351298109491"],.boost-sd__product-item[data-product-id="4351298207795"],.boost-sd__product-item[data-product-id="4351298273331"],.boost-sd__product-item[data-product-id="4351298699315"],.boost-sd__product-item[data-product-id="4351299256371"],.boost-sd__product-item[data-product-id="4351299321907"],.boost-sd__product-item[data-product-id="4351299387443"],.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-002"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-003"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-004"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-005"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-007"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-008"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-104"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-105"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-106"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-108"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-110"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-111"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-112"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-113"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-114"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-102"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-103"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-104"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-106"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-107"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-111"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-116"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-117"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-121"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-002"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-007"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-008"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-012"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-013"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-015"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-016"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-017"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-018"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-019"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-021"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-022"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-023"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-024"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-026"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-027"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-028"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-029"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-030"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-032"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-033"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2019"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2033"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2047"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2048"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2051"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2053"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2059"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2061"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2064"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-001"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-003"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-006"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-009"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-015"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-016"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-018"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-019"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-024"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-002"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-008"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-009"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-011"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-014"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-018"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-019"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-020"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-021"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-01"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-03"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-05"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-07"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-19"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-20"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-22"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-23"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-24"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-001"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-004"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-006"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-008"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-009"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-014"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-017"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-018"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-020"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-001"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-002"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-004"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-005"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-007"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-009"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-014"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-015"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-016"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-02"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-03"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-04"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-07"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-09"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-10"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-12"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-17"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-18"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-001"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-006"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-012"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-013"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-014"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-016"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-017"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-018"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-019"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-101"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-105"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-108"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-109"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-118"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-127"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-128"]),.boost-sd__product-item:has(a[href*="/products/toban-commercial-wallcovering-toban-tob-102"])) :is(.boost-sd__product-price,.boost-sd__format-currency,button,[class*="quick-view"],[class*="quick-add"]){display:none!important}</style>
+{% render 'boost-infinite-override' %}
+{% if collection.current_vendor == 'Newmor Wallcoverings' %}
+<script>
+// Boost requests JSON for Shopify's virtual vendors collection. Use the existing Newmor collection's real metadata.
+(function(){var original=window.fetch;window.fetch=function(input,init){var raw=typeof input==='string'?input:input&&input.url;var u=new URL(raw,location.origin);var method=(init&&init.method)||(input&&input.method)||'GET';if(method.toUpperCase()==='GET'&&u.origin===location.origin&&u.pathname==='/collections/vendors.json'){u.pathname='/collections/newmor-wallcoverings.json';input=typeof input==='string'?u.href:new Request(u.href,input);}return original.call(this,input,init);};})();
+</script>
+{% endif %}
+    {%- if template.name == 'page' and page.handle == 'trade-only-benefits' -%}
+      <script>
+        (function(){
+          var append=Node.prototype.appendChild;
+          Node.prototype.appendChild=function(node){
+            if(node&&node.tagName==='SCRIPT'&&/cdn3?\.shopixai\.com/i.test(node.src||'')) return node;
+            return append.call(this,node);
+          };
+        })();
+      </script>
+    {%- endif -%}
+    {{ content_for_header }}
+
+  {% liquid
+     assign heading_text_transform = 'none'
+     if settings.heading-font-small-caps
+       assign heading_text_transform = 'uppercase'
+     endif
+
+     assign button_text_transform = 'none'
+     assign button_letter_spacing = '0em'
+     if settings.button-font-small-caps
+       assign button_text_transform = 'uppercase'
+       assign button_letter_spacing = '0.05em'
+     endif
+  %}
+
+  <style>
+    :root {
+      /* ------------------------------------------------------------
+        Typography
+      ------------------------------------------------------------ */
+      /* Body */
+      --element-text-font-size--body-lg: 1.286rem; /* Product price */
+      --element-text-font-size--body-sm: var(--text-size-3-5); /* SKU, installments, variant labels */
+      --element-text-font-family--body: {{ settings.font_body.family }}, {{ settings.font_body.fallback_families }};
+      --element-text-font-weight--body: {{ settings.font_body.weight }};
+
+      /* Headings */
+      --element-text-font-size--heading-xl: 2.5rem; /* Product title */
+      --element-text-font-family--heading: {{ settings.font_heading.family }}, {{ settings.font_heading.fallback_families }};
+      --element-text-font-weight--heading: {{ settings.font_heading.weight }};
+      --element-text-line-height--heading: 1.25;
+      --element-text-text-transform--heading: {{ heading_text_transform }};
+
+      /* Buttons */
+      --element-button-font-family: {{ settings.font_button.family }}, {{ settings.font_button.fallback_families }};
+      --element-button-text-transform: {{ button_text_transform }};
+      --element-button-letter-spacing: {{ button_letter_spacing }};
+
+      /* ------------------------------------------------------------
+        Colors
+      ------------------------------------------------------------ */
+      --color-primary: {{ settings['body-text-color'] }}; 
+      --color-secondary: {{ settings['background-color'] }};
+      --root-color-primary: {{ settings['body-text-color'] }}; 
+      --root-color-secondary: {{ settings['background-color'] }};
+      --color-focus: #0000ff;
+
+      --color-sale-tag-text: {{ settings['background-color'] }};
+      --color-sale-tag: {{ settings['product-badge-background-color'] }};
+      
+      --element-button-color-primary: {{ settings['button-color'] }};
+      --element-button-color-secondary: {{ settings['accent-color'] }};
+      
+      --element-text-color: {{ settings['body-text-color'] }};
+      --element-text-color--heading: {{ settings['heading-color'] }};
+
+      --element-input-color-primary: {{ settings['form-select-color'] }};
+      --element-input-color-secondary: {{ settings['form-select-background'] }};
+
+      /* ------------------------------------------------------------
+        Other
+      ------------------------------------------------------------ */
+      --element-badge-radius: 2px;
+      --element-button-radius: 2px;
+
+      --layout-section-max-inline-size: 1260px;
+      --layout-section-padding-inline: 30px;
+    }
+
+    /* ------------------------------------------------------------
+      Component overrides
+    ------------------------------------------------------------ */
+
+    ::before,
+    ::after {
+      box-sizing: content-box;
+    }
+    product-hot-reload ::before,
+    product-hot-reload ::after {
+      box-sizing: border-box;
+    }
+
+    /* Lightbox */
+    .overlay-lightbox__overlay {
+      z-index: 9999;
+    }
+
+    /* Pick up */
+    .element-icon-in-stock {
+      fill: currentColor;
+    }
+
+    /* Divider */
+    hr.element-divider {
+      height: 0;
+      background: transparent;
+    }
+
+    /* Drawer */
+    overlay-drawer .element-button {
+      --element-button-color-primary: {{ settings.body-text-color }};
+      --element-icon-stroke-width: 3px;
+    }
+
+    /* Heading */
+    .element-text:is([class*=element-text--heading]) {
+      --_color: var(--element-text-color--heading);
+    }
+
+    /* Element Input */
+    .element-input {
+      --_color-box-shadow: {{ settings['form-select-border-color'] }};
+    }
+
+    /* Variant Labels */
+    label.element-text:is([class*=element-text--body]):where(.element-text--body-sm) {
+      color: {{ settings['heading-color'] }};
+      font-size: 1rem;
+
+      .element-text:first-child {
+        color: {{ settings['heading-color'] }};
+      }
+    }
+
+    /* Element Select */
+    element-select {
+      --color-primary: {{ settings['form-select-border-color'] }};
+      --element-button-color-primary: {{ settings['form-select-color'] }};
+      --element-button-color-secondary: {{ settings['form-select-background'] }};
+      --element-button-box-shadow: inset 0 0 0 1px {{ settings['form-select-border-color'] }};
+      --element-button-font-family: {{ settings.font_body.family }}, {{ settings.font_body.fallback_families }};
+      --element-button-text-transform: none;
+    }
+    element-select.element-select__wrapper--focused .element-button {
+      box-shadow: inset 0 0 0 var(--element-button-border-width--focus) var(--_color-focus);
+      border: none;
+    }
+
+    /* Media Gallery */
+    .media-gallery__thumb {
+      border-radius: 0;
+    }
+
+    /* ATC */
+
+    product-form .element-button[type="submit"] {
+      --element-button-padding-block: var(--size-5);
+      --_color-text: {{ settings['button-color'] }};
+      --_color-background: {{ settings['accent-color'] }};
+      --_box-shadow: none;
+
+      &:disabled {
+        color: #888888 !important;
+        background-color: #cccccc !important;
+      }
+    }
+
+    product-form:has(.element-button--shopify-payment-wrapper) .element-button[type="submit"] {
+      --element-button-color-primary: {{ settings['secondary-button-color'] }};
+      --element-button-color-secondary: {{ settings['secondary-button-background'] }};
+    }
+
+    .shopify-payment-button .shopify-payment-button__button.shopify-payment-button__button--unbranded,
+    .shopify-payment-button .shopify-payment-button__button {
+      --element-text-line-height--body-md: 1;
+      --element-button-color-primary: {{ settings['accent-color'] }};
+      --element-button-color-secondary: {{ settings['button-color'] }};
+      --element-button-padding-block: var(--size-5);
+      --_box-shadow: none;
+
+      text-transform: var(--element-button-text-transform);
+    }
+  </style>
+
+  {% assign x_handle = settings.social-x-link | split: 'x.com/' | last | split: 'twitter.com/' | last %}
+  {%
+    render 'social-meta-tags',
+    twitter_handle: x_handle,
+    default_image: page_image,
+  %}
+
+  <!-- Theme CSS -->
+  <link rel="stylesheet" href="{{ 'theme.css' | asset_url }}">
+  {% render 'dw-product-styles' %}
+  <link rel="stylesheet" href="{{ 'custom.css' | asset_url }}">
+  <link rel="stylesheet" href="{{ 'dw-pdp-restyle.css' | asset_url }}">
+  {% if settings.custom-css != blank %}
+    <style>
+      {{ settings.custom-css }}
+    </style>
+  {% endif %}
+
+  <!-- Theme object -->
+  {% comment %}Inject theme-object begin{% endcomment %}
+  <script>
+    var Theme = {};
+    Theme.version = "7.1.0";
+    Theme.name = 'Grid';
+  
+    Theme.currency = {{ shop.currency | json }};
+    Theme.moneyFormat = {{ shop.money_format | strip_html | json }};
+  
+    Theme.pleaseSelectText = "{{ 'general.general.please_select' | t | strip_newlines | escape }}";
+  
+    Theme.addToCartSuccess = "{{ 'products.product.success_html' | t: product: '**product**', cart_link: '**cart_link**', continue_link: '**continue_link**', checkout_link: '**checkout_link**' | strip_newlines | escape }}";
+  
+    {% if shop.customer_accounts_enabled and customer %}
+      Theme.customerLoggedIn = true;
+    {% endif %}
+  
+    Theme.shippingCalculator = true;
+    Theme.shippingButton = "{{ 'cart.shipping_calculator.submit' | t | strip_newlines | escape }}";
+    Theme.shippingDisabled = "{{ 'cart.shipping_calculator.disabled' | t | strip_newlines | escape }}";
+  
+    {% if shop.customer_accounts_enabled and customer and customer.default_address %}
+      Theme.customerAddress = {{ customer.default_address | json }};
+    {% endif %}
+  
+    Theme.shippingCalcErrorMessage = "{{ 'cart.shipping_calculator.error' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcMultiRates = "{{ 'cart.shipping_calculator.rates_html' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcOneRate = "{{ 'cart.shipping_calculator.rate' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcNoRates = "{{ 'cart.shipping_calculator.no_rates' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcRateValues = "{{ 'cart.shipping_calculator.rate_values_html' | t | strip_newlines | replace: '"','\\"' }}";
+  
+    Theme.routes = {
+      "root_url": "{{ routes.root_url }}",
+      "account_url": "{{ routes.account_url }}",
+      "account_login_url": "{{ routes.account_login_url }}",
+      "account_logout_url": "{{ routes.account_logout_url }}",
+      "account_register_url": "{{ routes.account_register_url }}",
+      "account_addresses_url": "{{ routes.account_addresses_url }}",
+      "collections_url": "{{ routes.collections_url }}",
+      "all_products_collection_url": "{{ routes.all_products_collection_url }}",
+      "search_url": "{{ routes.search_url }}",
+      "cart_url": "{{ routes.cart_url }}",
+      "cart_add_url": "{{ routes.cart_add_url }}",
+      "cart_change_url": "{{ routes.cart_change_url }}",
+      "cart_clear_url": "{{ routes.cart_clear_url }}",
+      "product_recommendations_url": "{{ routes.product_recommendations_url }}",
+      "predictive_search_url": "{{ routes.predictive_search_url }}",
+    };
+  </script>
+  {% comment %}Inject theme-object end{% endcomment %}
+
+  {% render 'jquery-snippet' %}
+  <script src="{{ 'custom.js' | asset_url }}" defer></script>
+
+  <script>
+    (function() {
+      document.documentElement.classList.remove('no-js');
+      window.addEventListener('DOMContentLoaded', function() {
+        document.documentElement.classList.remove('loading');
+      });
+      window.setTimeout(function() {
+        document.documentElement.classList.remove('loading');
+      }, 2000);
+
+      if (!window.MutationObserver || !window.MutationObserver.prototype) {
+        return;
+      }
+      var originalObserve = window.MutationObserver.prototype.observe;
+      window.MutationObserver.prototype.observe = function(target, options) {
+        if (!(target instanceof Node)) {
+          return;
+        }
+        return originalObserve.call(this, target, options);
+      };
+    })();
+  </script>
+
+<script src="{{ 'dw-grid-control.js' | asset_url }}" defer></script>
+<script src="{{ 'dw-pdp-size-pills.js' | asset_url }}" defer></script>
+
+
+
+
+
+
+
+
+
+
+
+<!-- DW: Price hiding script REMOVED 2026-03-24 -->
+
+<style>
+/* DW 2026-06-25: grid price-hide REMOVED (Steve) — show prices everywhere */
+/* Restore on product pages + cart */
+#shopify-section-product [class*="price"],
+#shopify-section-product span.money,
+.product-add-to-cart span.money,
+.shopify-product-form span.money,
+.mini-cart span.money,
+.cart span.money {
+  display: inline !important;
+  visibility: visible !important;
+  opacity: 1 !important;
+  height: auto !important;
+  font-size: inherit !important;
+  line-height: inherit !important;
+  position: static !important;
+  pointer-events: auto !important;
+}
+/* Square images */
+.boost-sd__product-item [class*="product-image"],
+.boost-sd__product-item [class*="image-wrapper"] {
+  aspect-ratio: 1/1 !important;
+  overflow: hidden !important;
+}
+.boost-sd__product-item img {
+  width: 100% !important;
+  height: 100% !important;
+  object-fit: cover !important;
+}
+/* Hide View As toggle */
+[class*="view-as"], [class*="viewAs"], .boost-sd__toolbar [class*="view"], .boost-sd [class*="toolbar-view"] {
+  display: none !important;
+}
+/* Hide View As toggle */
+[class*="view-as"],[class*="viewAs"],.boost-sd__toolbar [class*="view"],.boost-sd [class*="toolbar"] [class*="view"]{display:none!important}
+/* Center text */
+.boost-sd__product-item,
+.boost-sd__product-item [class*="title"],
+.boost-sd__product-item [class*="vendor"],
+.boost-sd__product-item p,
+.dw-vendor-link {
+  text-align: center !important;
+}
+</style>
+<!-- DW: killPrices REMOVED 2026-03-24 -->
+
+<!-- /DW -->
+
+{% comment %} DW: ItemList structured data for the Shop-by-Brand page (script tags are stripped from page body_html, so injected here) {% endcomment %}
+{% if page.handle == 'brands' %}{% render 'brands-jsonld' %}{% endif %}
+
+<!-- cache-bust: 2026-03-25T00:54:55.724677 -->
+
+{% if template contains 'product' %}
+<!-- DW: qty-inline v1 — quantity stepper moved to the right of the price (2026-07-02) -->
+<style>
+  .dw-price-qty-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
+  .dw-price-qty-row .product-price{margin:0}
+  .dw-price-qty-row .product-price__unit-price{flex-basis:100%}
+  .dw-qty-inline{display:inline-flex;align-items:center;gap:8px}
+  .dw-qty-inline .product-option-quantity-label{margin:0;white-space:nowrap}
+  .dw-qty-inline .mm_quantity{margin:0}
+  .dw-qty-inline .product-option-quantity-label.hidden,
+  .dw-qty-inline .mm_quantity.hidden{display:none!important}
+</style>
+<script>
+(function(){
+  function relocate(){
+    if(document.querySelector('.dw-qty-inline')) return;
+    var qty=document.querySelector('form[action*="/cart/add"] .mm_quantity');
+    if(!qty) return;
+    var form=qty.closest('form');
+    var priceBox=(form&&form.querySelector('.product__price'))||document.querySelector('.product__price');
+    if(!priceBox) return;
+    var label=(form||document).querySelector('label.product-option-quantity-label');
+    var wrap=document.createElement('span'); wrap.className='dw-qty-inline';
+    if(label) wrap.appendChild(label);
+    wrap.appendChild(qty);
+    priceBox.classList.add('dw-price-qty-row');
+    priceBox.appendChild(wrap);
+  }
+  function init(){ relocate(); setTimeout(relocate,400); setTimeout(relocate,1200); }
+  if(document.readyState!=='loading') init(); else document.addEventListener('DOMContentLoaded',init);
+})();
+</script>
+<!-- /DW qty-inline -->
+{% endif %}
+
+{% if template contains 'product' %}
+{% unless product.handle contains 'dig-' %}
+<!-- DW: price-buy v1 — add-to-cart by price; request pill + PDF row; collapse sample selector (2026-07-06) -->
+<style>
+  .product__price.dw-has-add{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
+  /* unify SKU / price / Quantity to one size (16px) */
+  .product-sku-label{font-size:16px!important}
+  .product__price .product-price-minimum.money,.product__price .money{font-size:16px!important}
+  /* tighten the price row so the qty row sits close WITHOUT a negative margin (no overlap) */
+  .product__price{min-height:0!important}
+  .product__price .product-price{margin:0!important;line-height:1.2!important}
+  /* more space between SKU and price (theme's .product__price margin is locked; use higher specificity) */
+  .product__price.dw-price-qty-row{margin-top:12px!important}
+  /* quantity + add-to-cart on one line below the price */
+  .dw-qty-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}
+  /* match "QUANTITY:" to the SKU/PRICE label style (grey, uppercase, 500); label wraps text in <strong> */
+  .dw-qty-row .product-option-quantity-label,.dw-qty-row .product-option-quantity-label strong{color:rgb(136,136,136)!important;font-weight:500!important;text-transform:uppercase!important;letter-spacing:0.96px!important;font-size:16px!important}
+  .dw-qty-row .product-option-quantity-label{margin:0!important}
+  .dw-qty-row .mm_quantity,.dw-qty-row .mm_quantity *{font-weight:400!important}
+  .dw-qty-row .mm_quantity input.qty,.dw-qty-row .mm_quantity input[name="quantity"]{font-weight:700!important}
+  /* add-to-cart pill to the right of the stepper, SAME size as Request Sample */
+  .dw-qty-row .cowlendar-add-to-cart{width:auto!important;margin:0!important;flex:0 0 auto!important;height:auto!important;min-height:0!important;border-radius:999px!important;font-size:12px!important;font-weight:500!important;padding:10px 30px!important}
+  /* hide add-to-cart until the overlay places it in the qty row (kills the load-flicker);
+     the JS fail-safe reveals it regardless after 15s so it can never stay hidden */
+  input.add-to-cart.cowlendar-add-to-cart{visibility:hidden}
+  input.add-to-cart.cowlendar-add-to-cart.dw-add-ready{visibility:visible}
+  .dw-price-buy-row2{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;max-width:430px}
+  /* Steve 2026-07-28 fix — Download-PDF was clipping in a narrow / zoomed info column.
+     Make Sample + Download-PDF two EQUAL shrink-to-fit halves (box-sizing so padding
+     can't push them past the column edge); they can never overflow/clip, and stack
+     full-width below 600px. */
+  .dw-price-buy-row2 .dl-sample-btn{flex:1 1 calc(50% - 6px)!important;width:auto!important;min-width:0!important;box-sizing:border-box!important;margin:0!important;padding-left:16px!important;padding-right:16px!important;white-space:nowrap!important}
+  .dw-price-buy-row2 .spec-sheet-controls{margin:0!important;transform:none!important;flex:1 1 calc(50% - 6px)!important;width:auto!important;min-width:0!important;max-width:none!important;box-sizing:border-box!important}
+  /* Download PDF -> black pill filling its half (no fixed cap, so it can shrink not clip) */
+  .dw-price-buy-row2 .spec-sheet-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:100%!important;max-width:none!important;min-width:0!important;box-sizing:border-box!important;padding:10px 12px!important;white-space:nowrap!important;background:#000!important;color:#fff!important;border-color:#000!important}
+  .dw-price-buy-row2 .spec-sheet-btn:hover{background:#1a1a1a!important}
+  @media (max-width:600px){
+    .dw-price-buy-row2{max-width:none}
+    .dw-price-buy-row2 .dl-sample-btn,
+    .dw-price-buy-row2 .spec-sheet-controls{flex:1 1 100%!important}
+  }
+  /* single-roll pricing note + dimensions (bolt / min-2 products only) */
+  .dw-sr-note{font-size:12px!important;color:rgb(136,136,136)!important;letter-spacing:.02em;margin-left:6px}
+  .dw-sr-dims{font-size:12px!important;color:rgb(90,90,90)!important;margin-left:18px;white-space:nowrap}
+  .dw-2roll-note{font-size:13px!important;font-weight:600;color:rgb(60,66,70)!important;margin-top:6px;letter-spacing:.01em}
+</style>
+<script>
+(function () {
+  if (window.__dwPriceBuyLoaded) return;
+  window.__dwPriceBuyLoaded = true;
+  function collapseSelector(form) {
+    var select = form.querySelector('select.single-option-selector');
+    if (!select) return false;
+    var opts = Array.prototype.slice.call(select.options);
+    var samples = opts.filter(function (o) { return /sample/i.test(o.value); });
+    if (!(opts.length <= 2 && samples.length >= 1)) return false;
+    var sellable = opts.filter(function (o) { return !/sample/i.test(o.value); })[0];
+    if (sellable && select.value !== sellable.value) {
+      select.value = sellable.value;
+      try { select.dispatchEvent(new Event('change', { bubbles: true })); }
+      catch (e) { var ev = document.createEvent('HTMLEvents'); ev.initEvent('change', true, false); select.dispatchEvent(ev); }
+    }
+    var pills = form.querySelector('.dw-size-pills');
+    if (pills && pills.parentNode) pills.parentNode.removeChild(pills);
+    return true;
+  }
+  // On bolt / min-2-single-roll products only: mark the price "/ single roll",
+  // show the single-roll dimensions, and split Length into D/R + S/R.
+  function srEnhance() {
+    var qi = document.querySelector('.mm_quantity input.qty, .mm_quantity input[name="quantity"]');
+    if (!qi) return;
+    var isBolt = parseInt(qi.getAttribute('min'), 10) === 2 || parseInt(qi.getAttribute('step'), 10) === 2;
+    if (!isBolt) return;
+    // Steve 2026-07-09: min/step==2 ALONE mislabels per-yard FABRICS that carry a
+    // 2-unit factor (UFAC=2 leaked onto ~144 Kravet-family multipurpose/upholstery
+    // goods). Roll language must key off the actual UNIT, not the quantity floor:
+    // only enhance when the sellable variant is genuinely sold by the roll/bolt.
+    var unitText = '';
+    var uSel = document.querySelector('form[action*="/cart/add"] select.single-option-selector');
+    if (uSel) Array.prototype.forEach.call(uSel.options, function (o) {
+      if (!/sample/i.test(o.value)) unitText += ' ' + o.value;
+    });
+    if (!/\b(roll|bolt)\b/i.test(unitText)) return;
+    // read the VISIBLE SPECIFICATIONS (.dw-specs -> .dw-spec-row -> .dw-spec-label/.dw-spec-value)
+    var specs = document.querySelector('.dw-specs');
+    function specVal(re) {
+      var out = null;
+      if (specs) Array.prototype.forEach.call(specs.querySelectorAll('.dw-spec-row'), function (rw) {
+        var l = ((rw.querySelector('.dw-spec-label') || {}).textContent || '').trim();
+        if (re.test(l)) out = ((rw.querySelector('.dw-spec-value') || {}).textContent || '').trim();
+      });
+      return out;
+    }
+    // single-roll length + dimensions (D/R length / 2, since 1 bolt = 2 single rolls)
+    var srLen = specVal(/^Length S\/R$/i);
+    if (!srLen) {
+      var dr = specVal(/^Length(?:\s*D\/R)?$/i);
+      if (dr) { var srHalf = dr.replace(/[\d.]+/g, function (x) { return (Math.round((parseFloat(x) / 2) * 1000) / 1000) + ''; }); srLen = /\d/.test(srHalf) ? srHalf : null; }
+    }
+    var wVal = specVal(/^Width$/i);
+    var srDims = (wVal && srLen) ? (wVal.split(/\s*x\s*/i)[0].trim() + ' x ' + srLen) : null;
+    // rewrite the visible specs once: Length -> Length D/R, add Single Roll + Length S/R rows above it
+    if (specs && !specs.dataset.dwSr) {
+      var lengthRow = null;
+      Array.prototype.forEach.call(specs.querySelectorAll('.dw-spec-row'), function (rw) {
+        if (/^Length$/i.test(((rw.querySelector('.dw-spec-label') || {}).textContent || '').trim())) lengthRow = rw;
+      });
+      if (lengthRow) {
+        specs.dataset.dwSr = '1';
+        lengthRow.querySelector('.dw-spec-label').textContent = 'Length D/R';
+        if (srDims) {
+          var srRow = document.createElement('div'); srRow.className = 'dw-spec-row';
+          srRow.innerHTML = '<span class="dw-spec-label">Length S/R</span><span class="dw-spec-value">' + srLen + '</span>';
+          lengthRow.parentNode.insertBefore(srRow, lengthRow);
+          var dimRow = document.createElement('div'); dimRow.className = 'dw-spec-row';
+          dimRow.innerHTML = '<span class="dw-spec-label">Single Roll</span><span class="dw-spec-value">' + srDims + '</span>';
+          lengthRow.parentNode.insertBefore(dimRow, srRow);
+        }
+      }
+    }
+    // price note + dims
+    var money = document.querySelector('.product__price .product-price-minimum.money');
+    if (money && !document.querySelector('.dw-sr-note')) { var note = document.createElement('span'); note.className = 'dw-sr-note'; note.textContent = '/ single roll'; money.after(note); }
+    var price = document.querySelector('.product__price');
+    if (srDims && price && !price.querySelector('.dw-sr-dims')) { var d = document.createElement('span'); d.className = 'dw-sr-dims'; d.textContent = 'Single roll: ' + srDims; price.appendChild(d); }
+    // Steve 2026-07-08: every 2-roll-minimum product states the increment rule plainly in the buy box.
+    if (price && !price.querySelector('.dw-2roll-note')) { var n2 = document.createElement('div'); n2.className = 'dw-2roll-note'; n2.textContent = 'Sold in 2 roll increments only'; price.appendChild(n2); }
+  }
+
+  // Clean the KEYWORDS list (display-only): drop namespaced tags, spec/operational
+  // tags, leading-"and" artifacts, and case duplicates. Tags stay intact for search.
+  function kwFilter() {
+    var box = document.querySelector('.keywords-desktop');
+    if (!box || box.dataset.dwKw) return;
+    var links = Array.prototype.slice.call(box.querySelectorAll('a'));
+    if (!links.length) return;
+    box.dataset.dwKw = '1';
+    var seen = {};
+    var DROP = /(:|fire\s*rat|astm|class\s*"?a"?|suitable\s+for|coated\s+paper|traffic|light\s+duty|heavy\s+duty|residential\s+use|background\s+color|non[-\s]?woven|scrubbab|removable|paste\s+the|washab)/i;
+    links.forEach(function (a) {
+      var t = (a.textContent || '').trim();
+      var key = t.toLowerCase().replace(/^and\s+/, '').trim();
+      var drop = t === '' || DROP.test(t) || /^and\s+/i.test(t) || seen[key];
+      if (drop) {
+        var nxt = a.nextSibling;
+        if (nxt && nxt.nodeType === 3 && /^[\s,]+$/.test(nxt.nodeValue)) nxt.parentNode.removeChild(nxt);
+        else { var prev = a.previousSibling; if (prev && prev.nodeType === 3 && /^[\s,]+$/.test(prev.nodeValue)) prev.parentNode.removeChild(prev); }
+        a.parentNode.removeChild(a);
+      } else { seen[key] = 1; }
+    });
+  }
+
+  function build() {
+    var form = document.querySelector('.product__form') || document.querySelector('form[action*="/cart/add"]');
+    if (!form) return false;
+    var price = document.querySelector('.product__price');
+    if (!price) return false;
+    var req = form.querySelector('.dl-sample-btn');
+    var pdf = document.querySelector('.spec-sheet-controls');
+    var row2 = document.querySelector('.dw-price-buy-row2');
+    if (!row2 && req) {
+      row2 = document.createElement('div');
+      row2.className = 'dw-price-buy-row2';
+      price.parentNode.insertBefore(row2, price.nextSibling);
+    }
+    if (row2) {
+      if (req && req.parentNode !== row2) row2.appendChild(req);
+      if (pdf && pdf.parentNode !== row2) row2.appendChild(pdf);
+    }
+    // quantity + add-to-cart on their own line, between the price and row2.
+    var qty = document.querySelector('.mm_quantity');
+    var qlabel = document.querySelector('.product-option-quantity-label');
+    var qrow = document.querySelector('.dw-qty-row');
+    if (qty && !qrow) {
+      qrow = document.createElement('div');
+      qrow.className = 'dw-qty-row';
+      price.parentNode.insertBefore(qrow, price.nextSibling);
+    }
+    if (qrow) {
+      if (qlabel && qlabel.parentNode !== qrow) qrow.appendChild(qlabel);
+      if (qty && qty.parentNode !== qrow) qrow.appendChild(qty);
+      var add = document.querySelector('input.add-to-cart.cowlendar-add-to-cart, .cowlendar-add-to-cart');
+      if (add && add.offsetParent !== null && add.parentNode !== qrow) qrow.appendChild(add);
+    }
+    var collapsed = collapseSelector(form);
+    if (collapsed) {
+      Array.prototype.forEach.call(document.querySelectorAll('.dw-size-pill'), function (b) {
+        if (b.parentNode) b.parentNode.removeChild(b);
+      });
+    }
+    return !!(row2 && row2.querySelector('.dl-sample-btn'));
+  }
+  function placeAndReveal() {
+    build();
+    srEnhance();
+    kwFilter();
+    var placed = document.querySelector('.dw-qty-row .cowlendar-add-to-cart');
+    if (placed) placed.classList.add('dw-add-ready');
+  }
+  function init() {
+    placeAndReveal();
+    // cowlendar injects the add-to-cart late; keep trying to place it for ~20s
+    var tries = 0, iv = setInterval(function () { placeAndReveal(); if (++tries > 100) clearInterval(iv); }, 200);
+    try {
+      var mo = new MutationObserver(function () { placeAndReveal(); });
+      mo.observe(document.body, { childList: true, subtree: true });
+      setTimeout(function () { mo.disconnect(); }, 20000);
+    } catch (e) {}
+    // fail-safe: never leave the add-to-cart hidden, even if placement never happens
+    setTimeout(function () { var a = document.querySelector('.cowlendar-add-to-cart'); if (a) a.classList.add('dw-add-ready'); }, 15000);
+  }
+  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init();
+  window.addEventListener('load', function () { setTimeout(placeAndReveal, 800); });
+})();
+</script>
+<!-- /DW price-buy -->
+{% endunless %}
+{% endif %}
+
+</head>
+
+<body
+  class="
+    template-{{ template.name }}
+    template-suffix-{{ template.suffix }}
+
+    {% if customer %}
+      customer-logged-in
+    {% endif %}
+  "
+>
+
+  {%- comment -%}
+    ── China Region Block (added 2026-02-27) ──
+    Blocks visitors from CN country code with a full-screen overlay.
+  {%- endcomment -%}
+  {%- if localization.country.iso_code == 'CN' -%}
+    <div id="region-block" style="position:fixed;inset:0;z-index:999999;background:#ffffff;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:40px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;">
+      <h1 style="font-size:24px;color:#333;margin-bottom:16px;">This store is not available in your region</h1>
+      <p style="font-size:16px;color:#666;max-width:500px;">We apologize for the inconvenience, but this store does not currently serve customers in your region.</p>
+    </div>
+    <style>body{overflow:hidden !important;}</style>
+  {%- endif -%}
+
+  {% render 'dw-samples-banner' %}
+  {% sections 'header-group' %}
+
+  {%- assign dw_trade_experience = false -%}
+  {%- if customer and customer.tags contains 'trade_approved' -%}{%- assign dw_trade_experience = true -%}{%- endif -%}
+  {%- if template.name == 'page' and page.handle == 'trade-only-benefits' -%}
+    {% render 'dw-trade-apply' %}
+  {%- elsif template.name == 'index' and dw_trade_experience -%}
+    {% render 'dw-trade-home' %}
+  {%- else -%}
+    <div style="--background-color: {{ settings.background-color }}">
+      {%
+        render 'age-gate',
+        id: 'page',
+        sections: content_for_layout,
+      %}
+    </div>
+  {%- endif -%}
+
+  {% include 'quickshop' %}
+
+  {% comment %}Inject icon-star-symbol begin{% endcomment %}
+  <svg
+    class="icon-star-reference"
+    aria-hidden="true"
+    focusable="false"
+    role="presentation"
+    xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="3 3 17 17" fill="none"
+  >
+    <symbol id="icon-star">
+      <rect class="icon-star-background" width="20" height="20" fill="currentColor"/>
+      <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
+    </symbol>
+    <clipPath id="icon-star-clip">
+      <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+    </clipPath>
+  </svg>
+  {% comment %}Inject icon-star-symbol end{% endcomment %}
+
+  {%- unless template.name == 'page' and page.handle == 'trade-only-benefits' or template.name == 'index' and dw_trade_experience -%}
+    <div class="main-content">
+      {% comment %}cache-touch 20260730-133317 recompile-guard{% endcomment %}{% render "dw-boost-overrides" %}
+      {% if request.page_type == 'collection' and collection.current_vendor == 'Newmor Wallcoverings' or request.page_type == 'collection' and collection.handle == 'newmor-wallcoverings' or request.page_type == 'collection' and collection.handle == 'newmor-wallcovering' %}
+        {% section 'collection' %}
+      {% else %}
+        {% if request.page_type == 'search' %}{% section 'collection' %}{% endif %}
+        {{ content_for_layout }}
+      {% endif %}
+    </div>
+  {%- endunless -%}
+
+  <script>window.__nwApprovedHandles=["arbour-commercial-wallcovering-arbour-arb-002","arbour-commercial-wallcovering-arbour-arb-003","arbour-commercial-wallcovering-arbour-arb-004","arbour-commercial-wallcovering-arbour-arb-005","arbour-commercial-wallcovering-arbour-arb-007","arbour-commercial-wallcovering-arbour-arb-008","arona-commercial-wallcovering-arona-ar-104","arona-commercial-wallcovering-arona-ar-105","arona-commercial-wallcovering-arona-ar-106","arona-commercial-wallcovering-arona-ar-108","arona-commercial-wallcovering-arona-ar-110","arona-commercial-wallcovering-arona-ar-111","arona-commercial-wallcovering-arona-ar-112","arona-commercial-wallcovering-arona-ar-113","arona-commercial-wallcovering-arona-ar-114","bark-commercial-wallcovering-bark-vbk-102","bark-commercial-wallcovering-bark-vbk-103","bark-commercial-wallcovering-bark-vbk-104","bark-commercial-wallcovering-bark-vbk-106","bark-commercial-wallcovering-bark-vbk-107","bark-commercial-wallcovering-bark-vbk-111","bark-commercial-wallcovering-bark-vbk-116","bark-commercial-wallcovering-bark-vbk-117","bark-commercial-wallcovering-bark-vbk-121","brushed-steel-commercial-wallcovering-brushed-steel-bst-002","brushed-steel-commercial-wallcovering-brushed-steel-bst-007","brushed-steel-commercial-wallcovering-brushed-steel-bst-008","brushed-steel-commercial-wallcovering-brushed-steel-bst-012","brushed-steel-commercial-wallcovering-brushed-steel-bst-013","brushed-steel-commercial-wallcovering-brushed-steel-bst-015","brushed-steel-commercial-wallcovering-brushed-steel-bst-016","brushed-steel-commercial-wallcovering-brushed-steel-bst-017","brushed-steel-commercial-wallcovering-brushed-steel-bst-018","brushed-steel-commercial-wallcovering-brushed-steel-bst-019","brushed-steel-commercial-wallcovering-brushed-steel-bst-021","brushed-steel-commercial-wallcovering-brushed-steel-bst-022","brushed-steel-commercial-wallcovering-brushed-steel-bst-023","brushed-steel-commercial-wallcovering-brushed-steel-bst-024","brushed-steel-commercial-wallcovering-brushed-steel-bst-026","brushed-steel-commercial-wallcovering-brushed-steel-bst-027","brushed-steel-commercial-wallcovering-brushed-steel-bst-028","brushed-steel-commercial-wallcovering-brushed-steel-bst-029","brushed-steel-commercial-wallcovering-brushed-steel-bst-030","brushed-steel-commercial-wallcovering-brushed-steel-bst-032","brushed-steel-commercial-wallcovering-brushed-steel-bst-033","cezanne-commercial-wallcovering-cezanne-czn-2019","cezanne-commercial-wallcovering-cezanne-czn-2033","cezanne-commercial-wallcovering-cezanne-czn-2047","cezanne-commercial-wallcovering-cezanne-czn-2048","cezanne-commercial-wallcovering-cezanne-czn-2051","cezanne-commercial-wallcovering-cezanne-czn-2053","cezanne-commercial-wallcovering-cezanne-czn-2059","cezanne-commercial-wallcovering-cezanne-czn-2061","cezanne-commercial-wallcovering-cezanne-czn-2064","cosmos-commercial-wallcovering-cosmos-cos-001","cosmos-commercial-wallcovering-cosmos-cos-003","cosmos-commercial-wallcovering-cosmos-cos-006","cosmos-commercial-wallcovering-cosmos-cos-009","cosmos-commercial-wallcovering-cosmos-cos-015","cosmos-commercial-wallcovering-cosmos-cos-016","cosmos-commercial-wallcovering-cosmos-cos-018","cosmos-commercial-wallcovering-cosmos-cos-019","cosmos-commercial-wallcovering-cosmos-cos-024","harper-commercial-wallcovering-harper-hpr-002","harper-commercial-wallcovering-harper-hpr-008","harper-commercial-wallcovering-harper-hpr-009","harper-commercial-wallcovering-harper-hpr-011","harper-commercial-wallcovering-harper-hpr-014","harper-commercial-wallcovering-harper-hpr-018","harper-commercial-wallcovering-harper-hpr-019","harper-commercial-wallcovering-harper-hpr-020","harper-commercial-wallcovering-harper-hpr-021","kota-silk-commercial-wallcovering-kota-silk-kot-01","kota-silk-commercial-wallcovering-kota-silk-kot-03","kota-silk-commercial-wallcovering-kota-silk-kot-05","kota-silk-commercial-wallcovering-kota-silk-kot-07","kota-silk-commercial-wallcovering-kota-silk-kot-19","kota-silk-commercial-wallcovering-kota-silk-kot-20","kota-silk-commercial-wallcovering-kota-silk-kot-22","kota-silk-commercial-wallcovering-kota-silk-kot-23","kota-silk-commercial-wallcovering-kota-silk-kot-24","quarry-commercial-wallcovering-quarry-qry-001","quarry-commercial-wallcovering-quarry-qry-004","quarry-commercial-wallcovering-quarry-qry-006","quarry-commercial-wallcovering-quarry-qry-008","quarry-commercial-wallcovering-quarry-qry-009","quarry-commercial-wallcovering-quarry-qry-014","quarry-commercial-wallcovering-quarry-qry-017","quarry-commercial-wallcovering-quarry-qry-018","quarry-commercial-wallcovering-quarry-qry-020","rough-concrete-commercial-wallcovering-rough-concrete-rct-001","rough-concrete-commercial-wallcovering-rough-concrete-rct-002","rough-concrete-commercial-wallcovering-rough-concrete-rct-004","rough-concrete-commercial-wallcovering-rough-concrete-rct-005","rough-concrete-commercial-wallcovering-rough-concrete-rct-007","rough-concrete-commercial-wallcovering-rough-concrete-rct-009","rough-concrete-commercial-wallcovering-rough-concrete-rct-014","rough-concrete-commercial-wallcovering-rough-concrete-rct-015","rough-concrete-commercial-wallcovering-rough-concrete-rct-016","shoreline-commercial-wallcovering-shoreline-sho-02","shoreline-commercial-wallcovering-shoreline-sho-03","shoreline-commercial-wallcovering-shoreline-sho-04","shoreline-commercial-wallcovering-shoreline-sho-07","shoreline-commercial-wallcovering-shoreline-sho-09","shoreline-commercial-wallcovering-shoreline-sho-10","shoreline-commercial-wallcovering-shoreline-sho-12","shoreline-commercial-wallcovering-shoreline-sho-17","shoreline-commercial-wallcovering-shoreline-sho-18","sorrento-commercial-wallcovering-sorrento-sor-001","sorrento-commercial-wallcovering-sorrento-sor-006","sorrento-commercial-wallcovering-sorrento-sor-012","sorrento-commercial-wallcovering-sorrento-sor-013","sorrento-commercial-wallcovering-sorrento-sor-014","sorrento-commercial-wallcovering-sorrento-sor-016","sorrento-commercial-wallcovering-sorrento-sor-017","sorrento-commercial-wallcovering-sorrento-sor-018","sorrento-commercial-wallcovering-sorrento-sor-019","tela-ii-commercial-wallcovering-tela-ii-tel-101","tela-ii-commercial-wallcovering-tela-ii-tel-105","tela-ii-commercial-wallcovering-tela-ii-tel-108","tela-ii-commercial-wallcovering-tela-ii-tel-109","tela-ii-commercial-wallcovering-tela-ii-tel-118","tela-ii-commercial-wallcovering-tela-ii-tel-127","tela-ii-commercial-wallcovering-tela-ii-tel-128","toban-commercial-wallcovering-toban-tob-102"];window.__nwApprovedIds=["4351299584051","4351299649587","4351299715123","4351299747891","4351299878963","4351299977267","4351276875827","4351276941363","4351276974131","4351277072435","4351277203507","4351277236275","4351277269043","4351277301811","4351277334579","4351277465651","4351277498419","4351277563955","4351277727795","4351277826099","4351278022707","4351278219315","4351278284851","4351278448691","4351278579763","4351278743603","4351278809139","4351279005747","4351279038515","4351279169587","4351279202355","4351279235123","4351279267891","4351279333427","4351279398963","4351279431731","4351279562803","4351279595571","4351279661107","4351279693875","4351279759411","4351279792179","4351279824947","4351279923251","4351279988787","4351282118707","4351282741299","4351283331123","4351283363891","4351283494963","4351283593267","4351283953715","4351284052019","4351284215859","4351286116403","4351286247475","4351286411315","4351286575155","4351286902835","4351286968371","4351287066675","4351287099443","4351287328819","4351287885875","4351288672307","4351288770611","4351288999987","4351289557043","4351289851955","4351289884723","4351289917491","4351289950259","4351290834995","4351290933299","4351291097139","4351291162675","4351291621427","4351291654195","4351291752499","4351291785267","4351291818035","4351292899379","4351293292595","4351293390899","4351293456435","4351293521971","4351293849651","4351294079027","4351294144563","4351294210099","4351294439475","4351294472243","4351294537779","4351294603315","4351294668851","4351294799923","4351295029299","4351295094835","4351295127603","4351295815731","4351295848499","4351295914035","4351296045107","4351296110643","4351296176179","4351296274483","4351296503859","4351296536627","4351296569395","4351296798771","4351297060915","4351297093683","4351297159219","4351297257523","4351297323059","4351297355827","4351297388595","4351297912883","4351298109491","4351298207795","4351298273331","4351298699315","4351299256371","4351299321907","4351299387443"];
+// Newmor showroom cards retain a direct product link; only samples on the PDP can be purchased.
+(function(){
+ if(window.__nwShowroomCards)return;window.__nwShowroomCards=true;
+ var handles=new Set(window.__nwApprovedHandles||[]),ids=new Set(window.__nwApprovedIds||[]);
+ function isNewmor(card){if(ids.has(card.dataset.productId))return true;var vendor=card.querySelector('[class*="product-vendor"]');if(vendor&&vendor.textContent.trim().toLowerCase()==='newmor wallcoverings')return true;return Array.from(card.querySelectorAll('a[href*="/products/"]')).some(function(a){try{return handles.has(new URL(a.href).pathname.split('/products/')[1])}catch(e){return false}});}
+ function fix(){document.querySelectorAll('.boost-sd__product-item').forEach(function(card){
+  if(!isNewmor(card))return;
+  card.setAttribute('data-nw-showroom-card','true');
+  card.querySelectorAll('.boost-sd__product-price,.boost-sd__format-currency,[class*="compare-price"],[class*="unit-price"]').forEach(function(n){n.remove()});
+  card.querySelectorAll('button,[class*="quick-view"],[class*="quickView"],[class*="quick-add"],[class*="buy-now"]').forEach(function(n){n.remove()});
+  if(!card.querySelector('.nw-boost-inquiry')){var p=document.createElement('p');p.className='nw-boost-inquiry';p.textContent='Showroom inquiry';card.appendChild(p);}
+ });}
+ new MutationObserver(fix).observe(document.documentElement,{childList:true,subtree:true,characterData:true});
+ document.addEventListener('click',function(e){if(e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;var c=e.target.closest&&e.target.closest('.boost-sd__product-item');if(!c||!isNewmor(c))return;var clicked=e.target.closest('a,button,[role="button"]');if(clicked&&clicked.tagName==='A'&&!clicked.getAttribute('href')?.includes('/products/'))return;var a=c.querySelector('a[href*="/products/"]');if(a){e.preventDefault();e.stopImmediatePropagation();location.assign(a.href);}},true);
+ fix();
+})();
+
+</script>
+  <div class="site-overlay" data-site-overlay></div>
+
+  {% sections 'footer-group' %}
+
+  <!-- Scripts -->
+  <!-- Third Party JS Libraries -->
+  <script src="{{ 'modernizr-2.8.2.min.js' | asset_url  }}" defer></script>
+
+  {% if template contains 'cart' %}
+    <script src="{{ '/services/javascripts/countries.js' }}" defer></script>
+    <script src="{{ 'shopify_common.js' | shopify_asset_url }}" defer></script>
+  {% endif %}
+
+  {% if template contains 'customers' %}
+    <script src="{{ 'shopify_common.js' | shopify_asset_url }}" defer></script>
+    <script src="{{ 'customer_area.js' | shopify_asset_url }}" defer></script>
+  {% endif %}
+
+  <script src="{{ 'grid.js' | asset_url }}" defer></script>
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-article begin{% endcomment %}
+  {% comment %}
+    Article structured data
+    https://developers.google.com/search/docs/data-types/articles
+  {% endcomment %}
+  
+  {% if template contains 'article' %}
+    {%- capture article_description  -%}
+      {%- if article.excerpt != blank -%}
+        {{ article.excerpt | strip_html }}
+      {%- else -%}
+        {{ article.content | truncatewords: 100 | strip_html }}
+      {%- endif -%}
+    {%- endcapture -%}
+  
+    <script type="application/ld+json">
+      {
+        "@context": "http://schema.org",
+        "@type": "BlogPosting",
+        "mainEntityOfPage": {
+          "@type": "WebPage",
+          "@id": "{{ shop.url }}{{ article.url }}"
+        },
+        "headline": {{ article.title | json }},
+        {% if article.image %}
+          "image": {
+            "@type": "ImageObject",
+            "url": {{ article.image | img_url: '800x800' | prepend: 'https:' | json }},
+            "height": 800,
+            "width": 800
+          },
+        {% endif %}
+        "datePublished": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' | json}},
+        "dateModified": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' | json}},
+        "author": {
+          "@type": "Person",
+          "name": {{ article.author | json }}
+        },
+        "publisher": {
+          "@type": "Organization",
+          "name": {{ shop.name | json }},
+          "logo": {
+            "@type": "ImageObject",
+            "url": {{ article.user.image | img_url: '200x200' | prepend: 'https:' | json }}
+          }
+        },
+        "description": {{ article_description | json }}
+      }
+    </script>
+  {% endif %}
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-article end{% endcomment %}
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-breadcrumbs begin{% endcomment %}
+  {% comment %}
+    Breadcrumbs
+    https://developers.google.com/search/docs/data-types/breadcrumbs
+  {% endcomment %}
+  
+  {%- if current_tags -%}
+    {%- assign tag_names = current_tags | join: ', ' %}
+    {% comment %}Converting an array to a handle converts it to a string{% endcomment %}
+    {%- capture tag_handles -%}
+      {%- for tag in current_tags -%}
+        {{- tag | handle | append: '|' -}}
+      {%- endfor -%}
+    {%- endcapture -%}
+  {%- endif -%}
+  
+  {% if collection.url == blank %}
+    {% assign collection_url = '/collections/all' %}
+  {% else %}
+    {% assign collection_url = collection.url %}
+  {% endif %}
+  
+  {% if template.name == 'product'
+      or template.name == 'list-collections'
+      or template.name == 'collection'
+      or template.name == 'blog'
+      or template.name == 'article'
+      or template.name == 'search'
+      or template.name == 'cart'
+      or template.name == 'page'
+  %}
+  
+    <script type="application/ld+json">
+      {
+        "@context": "http://schema.org",
+        "@type": "BreadcrumbList",
+        "itemListElement": [
+        {% case template.name %}
+          {% when 'product' %}
+            {% if product.collections.size >= 1 %}
+              {
+                "@type": "ListItem",
+                "position": 1,
+                "item": {
+                  "@id": "{{ shop.url }}/collections",
+                  "name": {{ 'structured_data.breadcrumbs.collections' | t | json }}
+                }
+              },
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}/collections/{{ product.collections.first.handle }}",
+                  "name": {{ product.collections.first.title | json }}
+                }
+              },
+            {% else %}
+              {
+                "@type": "ListItem",
+                "position": 1,
+                "item": {
+                  "@id": "{{ shop.url }}/products",
+                  "name": {{ 'structured_data.breadcrumbs.products' | t | json }}
+                }
+              },
+            {% endif %}
+            {
+              "@type": "ListItem",
+              "position": {% if product.collections.size >= 1 %}3{% else %}2{% endif %},
+              "item": {
+                "@id": "{{ shop.url }}{{ product.url | within: collection }}",
+                "name": {{ product.title | json }}
+              }
+            }
+          {% when 'list-collections' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/collections",
+                "name": {{ 'structured_data.breadcrumbs.collections' | t | json }}
+              }
+            }
+            {% if current_page != 1 %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}/collections",
+                  "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                }
+              }
+            {% endif %}
+          {% when 'collection' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/collections",
+                "name": {{ 'structured_data.breadcrumbs.collections' | t | json }}
+              }
+            },
+            {
+              "@type": "ListItem",
+              "position": 2,
+              "item": {
+                "@id": "{{ shop.url }}{{ collection_url }}",
+                "name": {{ collection.title | json }}
+              }
+            }
+            {% if current_tags %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 3,
+                "item": {
+                  "@id": "{{ shop.url }}{{ collection_url }}/{{- tag_handles | split: '|' | join: '+' -}}",
+                  "name": {{ 'structured_data.breadcrumbs.tags_html' | t: tags: tag_names | json }}
+                }
+              }
+            {% endif %}
+            {% if current_page != 1 %}
+              {% if current_tags %}
+                {% assign position = 4 %}
+              {% else %}
+                {% assign position = 3 %}
+              {% endif %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": {{ position }},
+                "item": {
+                  "@id": "{{ shop.url }}/collections?page={{ current_page }}",
+                  "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                }
+              }
+            {% endif %}
+          {% when 'blog' or 'article' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}{{ blog.url }}",
+                "name": {{ blog.title | json }}
+              }
+            }
+            {% if template.name == 'article' %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}{{ article.url }}",
+                  "name": {{ article.title | json }}
+                }
+              }
+            {% elsif current_tags %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}{{ blog.url }}/tagged/{{- tag_handles | split: '|' | join: '+' -}}",
+                  "name": {{ 'structured_data.breadcrumbs.tags_html' | t: tags: tag_names | json }}
+                }
+              }
+            {% endif %}
+            {% if current_page != 1 %}
+              {% if current_tags %}
+                {% assign position = 3 %}
+                {%- capture url -%}
+                  {{ shop.url }}{{ blog.url }}/tagged/{{ tag_handles | split: '|' | join: '+' }}?page={{ current_page }}
+                {%- endcapture -%}
+              {% else %}
+                {% assign position = 2 %}
+                  {%- capture url -%}
+                  {{ shop.url }}{{ blog.url }}?page={{ current_page }}
+                {%- endcapture -%}
+              {% endif %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": {{ position }},
+                "item": {
+                  "@id": "{{ url }}",
+                  "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                }
+              }
+            {% endif %}
+          {% when 'search' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/search",
+                "name": {{ 'structured_data.breadcrumbs.search' | t | json }}
+              }
+            }
+            {% if search.performed %}
+            ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}/search?q={{ search.terms }}",
+                  "name": {{ search.terms | json }}
+                }
+              }
+              {% if current_page != 1 %}
+              ,
+                {
+                  "@type": "ListItem",
+                  "position": 3,
+                  "item": {
+                    "@id": "{{ shop.url }}/search?page={{ current_page }}&q={{ search.terms }}",
+                    "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                  }
+                }
+              {% endif %}
+            {% endif %}
+          {% when 'cart' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/cart",
+                "name": {{ 'structured_data.breadcrumbs.cart' | t | json }}
+              }
+            }
+          {% when 'page' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ page.url }}",
+                "name": {{ page.title | json }}
+              }
+            }
+          {% else %}
+          {% endcase %}
+        ]
+      }
+    </script>
+  {% endif %}
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-breadcrumbs end{% endcomment %}
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-product begin{% endcomment %}
+  {% comment %}
+    Product structured data
+    https://developers.google.com/search/docs/data-types/products
+  {% endcomment %}
+  
+  {% if template contains 'product' %}
+    {%- liquid
+      # TK-11404: never let the default JSON-LD offer describe the $4.25 Sample.
+      # If the resolved default variant is sample-like, re-point to the first non-sample variant.
+      assign selected_variant = product.selected_or_first_available_variant | default: product.variants.first
+      assign _sv_sku = selected_variant.sku | default: '' | downcase
+      assign _sv_suffix = _sv_sku | slice: -7, 7
+      assign _sv_title = selected_variant.title | default: '' | downcase
+      assign _sv_is_sample = false
+      if _sv_sku != blank and _sv_suffix == '-sample'
+        assign _sv_is_sample = true
+      elsif _sv_title contains 'sample' and selected_variant.price == 0
+        assign _sv_is_sample = true
+      endif
+      if _sv_is_sample
+        for _v in product.variants
+          assign _v_sku = _v.sku | default: '' | downcase
+          assign _v_suffix = _v_sku | slice: -7, 7
+          assign _v_title = _v.title | default: '' | downcase
+          assign _v_is_sample = false
+          if _v_sku != blank and _v_suffix == '-sample'
+            assign _v_is_sample = true
+          elsif _v_title contains 'sample' and _v.price == 0
+            assign _v_is_sample = true
+          endif
+          unless _v_is_sample
+            assign selected_variant = _v
+            break
+          endunless
+        endfor
+      endif
+    -%}
+    {% assign product_image = selected_variant.featured_image | default: product.featured_image %}
+    {%- capture product_name -%}
+      {{ product.title }}
+      {%- if selected_variant.title != 'Default Title' and selected_variant.option1 == 'Default Title' -%}
+        - {{ selected_variant.title }}
+      {%- endif -%}
+    {%- endcapture -%}
+  
+    {%- assign now = 'now' | date: '%Y-%m-%d' | split: '-' -%}
+    {% capture year_from_now %}{{ now[0] | plus: 1 }}-{{ now[1] }}-{{ now[2] | at_most: 28 }}{% endcapture %}
+  
+    <script type="application/ld+json">
+    {
+      "@context": "http://schema.org/",
+      "@type": "Product",
+      "name": {{ product_name | strip_newlines | json }},
+      "image": {{ product_image | img_url: '1024x1024' | prepend: 'https:' | json }},
+      {% if product.description != blank %}
+        "description": {{ product.description | json }},
+      {% endif %}
+      {% if product.vendor %}
+        "brand": {
+          "@type": "Thing",
+          "name": {{ product.vendor | json }}
+        },
+      {% endif %}
+      {% if selected_variant.sku != blank %}
+        "sku": {{ selected_variant.sku | json }},
+      {% endif %}
+      {% if selected_variant.barcode != blank %}
+        "mpn": {{ selected_variant.barcode | json }},
+      {% endif %}
+      {% if product.vendor == 'Newmor Wallcoverings' %}
+      "url": {{ canonical_url | json }}
+      {% else %}
+      "offers": {
+        "@type": "Offer",
+        "priceCurrency": {{ cart.currency.iso_code | json }},
+        "price": {{ selected_variant.price | divided_by: 100.0 | json }},
+        "availability": "http://schema.org/{% if selected_variant.available %}InStock{% else %}OutOfStock{% endif %}",
+        "url": "{{ shop.url }}{{ selected_variant.url }}",
+        "seller": {
+          "@type": "Organization",
+          "name": {{ shop.name | json }}
+        },
+        "priceValidUntil": {{ year_from_now | json }}
+      }
+      {% endif %}
+    }
+    </script>
+  {% endif %}
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-product end{% endcomment %}
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-website begin{% endcomment %}
+  {% comment %}
+    Store information
+    https://developers.google.com/search/docs/data-types/sitename
+  {% endcomment %}
+  
+  <script type="application/ld+json">
+    {
+      "@context": "http://schema.org",
+      "@type": "WebSite",
+      "name": "{{ shop.name }}",
+      "url": "{{ shop.url }}"
+    }
+  </script>
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-website end{% endcomment %}
+
+  <form id="checkout_form" action="{{ routes.cart_url }}" method="POST" style="display: none;"></form>
+
+  <script>
+    (function () {
+      function handleFirstTab(e) {
+        if (e.keyCode === 9) { // the "I am a keyboard user" key
+          document.body.classList.add('user-is-tabbing');
+          window.removeEventListener('keydown', handleFirstTab);
+        }
+      }
+      window.addEventListener('keydown', handleFirstTab);
+    })();
+  </script>
+  <script>(function(n, v) {/* eslint-disable-next-line max-len */if (window.Shopify && window.Shopify.theme && navigator && navigator.sendBeacon && window.Shopify.designMode) {if (sessionStorage.getItem('oots_beacon')) return;navigator.sendBeacon('https://app.outofthesandbox.com/beacon', new URLSearchParams({shop_domain: window.Shopify.shop.toLowerCase(),shop_id: '{{ shop.id }}',shop_email: '{{ shop.email }}',theme_name: n.toLowerCase(),theme_version: v.toLowerCase(),theme_store_id: window.Shopify.theme.theme_store_id,theme_id: window.Shopify.theme.id,theme_role: window.Shopify.theme.role,}));sessionStorage.setItem('oots_beacon', '');}}('grid','7.1.0'))</script>
+
+<!--Start of Zendesk Chat Script-->
+<script async>
+window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
+d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
+_.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");
+$.src="https://v2.zopim.com/?RH5Yjru86SIJRwOxfiMAf2DTCgdROhhf";z.t=+new Date;$.
+type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
+</script>
+<!--End of Zendesk Chat Script-->
+<!-- Statcounter code for DW - Started 3/5/19
+http://DesignerWallcoverings.com on Shopify -->
+<script type="text/javascript">
+var sc_project=11961678; 
+var sc_invisible=1; 
+var sc_security="9d9a53bd"; 
+var sc_https=1; 
+</script>
+<script type="text/javascript"
+src="https://www.statcounter.com/counter/counter.js"
+async></script>
+<noscript><div class="statcounter"><a title="web statistics"
+href="https://statcounter.com/" target="_blank"><img
+class="statcounter"
+src="https://c.statcounter.com/11961678/0/9d9a53bd/1/"
+alt="web statistics"></a></div></noscript>
+<!-- End of Statcounter Code -->
+
+{% render 'hide-browse-hidden' %}
+
+<!-- DW: price restore band-aid removed 2026-06-11 — root cause (blank saw_variant_price) fixed in product-form-content.liquid; no price-hiding CSS exists. -->
+{%- comment -%} DW Shop-by-Color wheel {%- endcomment -%}
+<script>window.DW_CW_DATA="{{ 'dw-color-wheel-data.json' | asset_url }}";</script>
+<script src="{{ 'dw-color-wheel.js' | asset_url }}" defer></script>
+{%- comment -%} DW Phillip-Jeffries browse hide (stopgap) {%- endcomment -%}
+<script src="{{ 'dw-pj-hide.js' | asset_url }}" defer></script>
+{%- comment -%} DW card hover label: Pattern, Color + Vendor on hover (2026-06-22) {%- endcomment -%}
+<script src="{{ 'dw-card-hover.js' | asset_url }}" defer></script>
+
+<!-- DW min-qty start -->
+{% if template contains 'product' %}
+<script>
+(function () {
+  function minFromText(s) {
+    if (/sample/i.test(s)) return 1;                 // a sample is always a single unit
+    var m = String(s || '').match(/(\d+)\s*yd\s*min/i);
+    return m ? parseInt(m[1], 10) : null;
+  }
+  function qtyInput() {
+    return document.querySelector('.mm_quantity .input-text.qty, .mm_quantity input.qty, .input-text.qty');
+  }
+  // the Size selector = the single-option-selector whose selected label encodes a "yd min"
+  function sizeText() {
+    var sels = document.querySelectorAll('select.single-option-selector, select[name^="options"]');
+    for (var i = 0; i < sels.length; i++) {
+      var s = sels[i];
+      if (s.selectedIndex < 0 || !s.options[s.selectedIndex]) continue;
+      var t = s.options[s.selectedIndex].textContent;
+      if (/yd\s*min|wallcovering|sold\s*per\s*yard|sample/i.test(t)) return t;
+    }
+    return '';
+  }
+  function currentMin() { return minFromText(sizeText()) || 1; }
+
+  function clampUp(qi) {
+    if (qi && qi.getAttribute && qi.getAttribute('data-order-min')) return; // yield: custom.js data-order-* stepper owns MOQ qty
+    var min = parseInt(qi.getAttribute('min'), 10) || 1;
+    var v = parseInt(qi.value, 10);
+    if (isNaN(v) || v < min) { if (String(qi.value) !== String(min)) qi.value = min; }
+  }
+  function applyMin(forceValue) {
+    var qi = qtyInput();
+    if (!qi) return;
+    if (qi.getAttribute('data-order-min')) return; // yield: custom.js data-order-* stepper owns MOQ qty
+    var min = currentMin();
+    if (String(qi.getAttribute('min')) !== String(min)) qi.setAttribute('min', min);
+    if (qi.getAttribute('step') !== '1') qi.setAttribute('step', 1);  // floor only; +1 increments above it
+    var cur = parseInt(qi.value, 10);
+    if (forceValue || isNaN(cur) || cur < min) {
+      if (String(qi.value) !== String(min)) { qi.value = min; qi.dispatchEvent(new Event('change', { bubbles: true })); }
+    } else { clampUp(qi); }
+  }
+
+  function wire() {
+    var qi = qtyInput();
+    if (qi && !qi.__minClamp) {
+      qi.__minClamp = true;
+      ['input', 'change', 'blur', 'keyup'].forEach(function (ev) { qi.addEventListener(ev, function () { clampUp(qi); }); });
+    }
+    // re-clamp after the ± buttons act
+    document.querySelectorAll('.mm_quantity .minus, .mm_quantity .plus').forEach(function (b) {
+      if (b.__minClamp) return; b.__minClamp = true;
+      b.addEventListener('click', function () { setTimeout(function () { clampUp(qtyInput() || {}); }, 20); });
+    });
+    // variant pickers -> jump to the new floor
+    document.querySelectorAll('select.single-option-selector, select[name^="options"], input[type="radio"][name*="ption"]').forEach(function (el) {
+      if (el.__minWired) return; el.__minWired = true;
+      el.addEventListener('change', function () { setTimeout(function () { applyMin(true); }, 40); });
+    });
+    applyMin(true);
+  }
+
+  function start() {
+    wire();
+    // the theme resets qty to 1 at ~1000ms — re-apply after that so the floor wins
+    [1100, 1600, 2500].forEach(function (t) { setTimeout(function () { applyMin(true); }, t); });
+    // the theme REBUILDS the qty widget on variant change (resetting min to 1); a light
+    // recurring re-assert keeps the floor correct without disrupting values at/above it
+    setInterval(function () { wire(); applyMin(false); }, 400);
+  }
+  if (document.readyState !== 'loading') start();
+  else document.addEventListener('DOMContentLoaded', start);
+  // re-wire if the form re-renders (debounced; keeps min synced, never forces value)
+  var d;
+  new MutationObserver(function () { clearTimeout(d); d = setTimeout(function () { wire(); applyMin(false); }, 150); })
+    .observe(document.documentElement, { subtree: true, childList: true });
+})();
+</script>
+{% endif %}
+<!-- DW min-qty end -->
+{% unless customer.tags contains 'trade' %}{% render 'dw-signin-modal' %}{% endunless %}
+{% comment %} Steve 2026-07-28: hover any product chip → show its SKU + product type (site-wide) {% endcomment %}
+{% render 'dw-hover-meta' %}
+{% render 'dw-tile-image-fix', ph: page.handle %}
+</body>
+</html>
diff --git a/data/theme-preimage/145556635699/manifest.json b/data/theme-preimage/145556635699/manifest.json
index 16c7d1c..192a4f4 100644
--- a/data/theme-preimage/145556635699/manifest.json
+++ b/data/theme-preimage/145556635699/manifest.json
@@ -2,7 +2,7 @@
   "themeId": "145556635699",
   "role": "main",
   "name": "DW Sample-Shipping DEV",
-  "captured_at": "2026-09-19T17:15:49.826Z",
+  "captured_at": "2026-09-19T17:25:01.063Z",
   "files": [
     {
       "key": "assets/dw-contact-us-cards.js",
@@ -11,12 +11,19 @@
       "remote_bytes": 0,
       "local_bytes": 4416
     },
+    {
+      "key": "layout/theme.liquid",
+      "created": false,
+      "identical": false,
+      "remote_bytes": 92303,
+      "local_bytes": 92535
+    },
     {
       "key": "snippets/dw-contact-us-block.liquid",
       "created": true,
       "identical": false,
       "remote_bytes": 0,
-      "local_bytes": 14926
+      "local_bytes": 16439
     },
     {
       "key": "snippets/hide-browse-hidden.liquid",
@@ -37,7 +44,7 @@
       "created": false,
       "identical": false,
       "remote_bytes": 3157,
-      "local_bytes": 3619
+      "local_bytes": 3712
     },
     {
       "key": "templates/product.contact-us.json",
diff --git a/scripts/assign-template.mjs b/scripts/assign-template.mjs
index 74fd17f..3953222 100644
--- a/scripts/assign-template.mjs
+++ b/scripts/assign-template.mjs
@@ -5,7 +5,7 @@
 //   node scripts/assign-template.mjs --rollback --apply
 // Preimage (old templateSuffix, exactly as read) -> data/ledger-template.jsonl
 import { join } from 'node:path';
-import { ROOT, parseArgs, banner, gql, loadTargets, appendJsonl, readJsonl, logReversible } from './lib.mjs';
+import { ROOT, parseArgs, banner, gql, loadTargets, appendJsonl, readJsonl, logReversible, payloadErrors, assertFreshTargets } from './lib.mjs';
 
 const a = parseArgs();
 const SUFFIX = 'contact-us';
@@ -21,10 +21,10 @@ let work;
 if (a.rollback) {
   const rows = readJsonl(LEDGER).filter((r) => r.applied);
   const latest = new Map();
-  for (const r of rows) latest.set(r.productId, r);
-  // Shopify has no "null" for templateSuffix on write: '' clears it, which is how a
-  // product with templateSuffix null reads afterwards. Recorded verbatim either way.
-  work = [...latest.values()].map((r) => ({ id: r.productId, handle: r.handle, to: r.before ?? '' }));
+  for (const r of rows) if (!latest.has(r.productId)) latest.set(r.productId, r); // FIRST record = true preimage
+  // Restore EXACTLY what was read: null stays null (ProductInput.templateSuffix is nullable),
+  // '' stays '' (140 Ralph Lauren products carried '' before). Kimi review fix.
+  work = [...latest.values()].map((r) => ({ id: r.productId, handle: r.handle, to: r.before === undefined ? null : r.before }));
 } else {
   work = loadTargets()
     .filter((p) => p.templateSuffix !== SUFFIX)
@@ -40,8 +40,8 @@ if (!a.apply) { console.log('\nDRY-RUN: nothing was written.'); process.exit(0);
 
 let ok = 0, fail = 0;
 for (const w of work) {
-  const d = await gql(M, { input: { id: w.id, templateSuffix: w.to } });
-  const errs = d.productUpdate?.userErrors || [];
+  let d; try { d = await gql(M, { input: { id: w.id, templateSuffix: w.to } }); } catch (e) { d = { _err: String(e.message || e) }; }
+  const errs = d._err ? [{ message: d._err.slice(0, 300) }] : payloadErrors(d.productUpdate, 'productUpdate');
   if (errs.length) { fail++; console.error(`  FAIL ${w.handle}: ${JSON.stringify(errs)}`); }
   else {
     ok++;
diff --git a/scripts/harden-variants.mjs b/scripts/harden-variants.mjs
index 7b6a45c..e05da5d 100644
--- a/scripts/harden-variants.mjs
+++ b/scripts/harden-variants.mjs
@@ -17,7 +17,7 @@
 // levels:[{locationId, on_hand, available}]}. --rollback replays it in reverse order
 // (policy -> quantities -> tracked:false last) so tracked=false is restored for the 598.
 import { join } from 'node:path';
-import { ROOT, parseArgs, banner, gql, loadTargets, appendJsonl, readJsonl, logReversible, chunk, isSampleVariant } from './lib.mjs';
+import { ROOT, parseArgs, banner, gql, loadTargets, appendJsonl, readJsonl, logReversible, chunk, isSampleVariant, payloadErrors, assertFreshTargets } from './lib.mjs';
 
 const a = parseArgs();
 const LEDGER = join(ROOT, 'data', 'ledger-variants.jsonl');
@@ -92,6 +92,7 @@ for (const x of plan.slice(0, 3)) {
   console.log(`  e.g. ${x.handle} / "${x.title}" ${x.sku || '(no sku)'} — tracked ${a.rollback ? '->' + x.targetTracked : (x.before.tracked + ' -> true')}, on_hand ${a.rollback ? JSON.stringify(x.targetLevels) : JSON.stringify(x.before.levels.map((l) => l.on_hand)) + ' -> 0'}`);
 }
 if (!a.apply) { console.log('\nDRY-RUN: nothing was written.'); process.exit(0); }
+assertFreshTargets(a);
 
 // ---------------------------------------------------------------- apply
 // PREIMAGE FIRST (TK-11925 review fix): every variant's before-state is appended to the
@@ -111,6 +112,8 @@ if (!a.rollback) {
 let ok = 0, fail = 0;
 const failed = [];
 function note(msg) { fail++; failed.push(msg); console.error('  FAIL ' + msg); }
+// One failed call must not abort the run (the ledger is already written; every op is idempotent).
+async function safe(label, fn) { try { return await fn(); } catch (e) { note(`${label}: ${String(e.message || e).slice(0, 300)}`); return null; } }
 
 // Order matters. Forward: tracked -> qty -> policy. Rollback: policy -> qty -> tracked(false last).
 const steps = a.rollback ? ['policy', 'qty', 'tracked'] : ['tracked', 'qty', 'policy'];
@@ -119,8 +122,9 @@ for (const step of steps) {
   if (step === 'tracked') {
     const items = plan.filter((x) => a.rollback ? x.targetTracked === false : x.before.tracked !== true);
     for (const x of items) {
-      const d = await gql(M_TRACK, { id: x.inventoryItemId, input: { tracked: a.rollback ? x.targetTracked : true } });
-      const e = d.inventoryItemUpdate?.userErrors || [];
+      const d = await safe(`tracked ${x.sku}`, () => gql(M_TRACK, { id: x.inventoryItemId, input: { tracked: a.rollback ? x.targetTracked : true } }));
+      if (d === null) continue;
+      const e = payloadErrors(d.inventoryItemUpdate, 'inventoryItemUpdate');
       e.length ? note(`tracked ${x.sku}: ${JSON.stringify(e)}`) : ok++;
     }
     console.log(`  tracked step: ${items.length} calls`);
@@ -132,12 +136,13 @@ for (const step of steps) {
         rows.push({ inventoryItemId: x.inventoryItemId, locationId: l.locationId, quantity: a.rollback ? l.on_hand : 0 });
       }
     }
-    for (const b of chunk(rows, 200)) {
-      const d = await gql(M_QTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true, quantities: b } });
-      const e = d.inventorySetQuantities?.userErrors || [];
+    for (const b of chunk(rows, 100)) {   // Shopify caps inventorySetQuantities at 100 quantities/call
+      const d = await safe(`qty batch(${b.length})`, () => gql(M_QTY, { input: { name: 'on_hand', reason: 'correction', ignoreCompareQuantity: true, quantities: b } }));
+      if (d === null) continue;
+      const e = payloadErrors(d.inventorySetQuantities, 'inventorySetQuantities');
       e.length ? note(`qty batch(${b.length}): ${JSON.stringify(e).slice(0, 300)}`) : (ok += b.length);
     }
-    console.log(`  qty step: ${rows.length} rows in ${Math.ceil(rows.length / 200)} batches`);
+    console.log(`  qty step: ${rows.length} rows in ${Math.ceil(rows.length / 100)} batches`);
   }
   if (step === 'policy') {
     const byProduct = new Map();
@@ -146,8 +151,9 @@ for (const step of steps) {
       byProduct.get(x.productId).push({ id: x.variantId, inventoryPolicy: a.rollback ? x.targetPolicy : 'DENY' });
     }
     for (const [pid, variants] of byProduct) {
-      const d = await gql(M_POLICY, { productId: pid, variants });
-      const e = d.productVariantsBulkUpdate?.userErrors || [];
+      const d = await safe(`policy ${pid}`, () => gql(M_POLICY, { productId: pid, variants }));
+      if (d === null) continue;
+      const e = payloadErrors(d.productVariantsBulkUpdate, 'productVariantsBulkUpdate');
       e.length ? note(`policy ${pid}: ${JSON.stringify(e).slice(0, 200)}`) : (ok += variants.length);
     }
     console.log(`  policy step: ${byProduct.size} productVariantsBulkUpdate calls`);
diff --git a/scripts/lib.mjs b/scripts/lib.mjs
index 6b5fbf3..9fd5c16 100644
--- a/scripts/lib.mjs
+++ b/scripts/lib.mjs
@@ -179,3 +179,22 @@ export function chunk(arr, n) {
   for (let i = 0; i < arr.length; i += n) out.push(arr.slice(i, i + n));
   return out;
 }
+
+// TK-11925 review fixes (Kimi): a NULL mutation payload (bad id, missing scope) must never
+// count as success — only a payload with an empty userErrors list is a success.
+export function payloadErrors(payload, label) {
+  if (!payload) return [{ field: null, message: `${label}: null payload (bad id / scope / not found)` }];
+  return payload.userErrors || [];
+}
+// Refuse to --apply against a stale enumeration: the preimage must be fresh, or the
+// rollback restores stock counts that a real sale may have changed since capture.
+import { statSync } from 'node:fs';
+export function assertFreshTargets(args, maxHours = 2) {
+  if (!args.apply || args['stale-ok']) return;
+  const f = join(ROOT, 'data', 'targets.json');
+  const ageH = (Date.now() - statSync(f).mtimeMs) / 3.6e6;
+  if (ageH > maxHours) {
+    console.error(`REFUSED: data/targets.json is ${ageH.toFixed(1)}h old (> ${maxHours}h). Run node scripts/enumerate.mjs first, or pass --stale-ok.`);
+    process.exit(2);
+  }
+}
diff --git a/scripts/unpublish-channels.mjs b/scripts/unpublish-channels.mjs
index 24c636f..b5ac273 100644
--- a/scripts/unpublish-channels.mjs
+++ b/scripts/unpublish-channels.mjs
@@ -10,7 +10,7 @@
 //   Buy Button        gid://shopify/Publication/22497296496
 // Online Store stays PUBLISHED — the PDP must remain reachable; it is the contact-us page.
 import { join } from 'node:path';
-import { ROOT, parseArgs, banner, gql, loadTargets, appendJsonl, readJsonl, logReversible, TARGET_PUBLICATIONS } from './lib.mjs';
+import { ROOT, parseArgs, banner, gql, loadTargets, appendJsonl, readJsonl, logReversible, TARGET_PUBLICATIONS, payloadErrors, assertFreshTargets } from './lib.mjs';
 
 const a = parseArgs();
 const LEDGER = join(ROOT, 'data', 'ledger-channels.jsonl');
@@ -54,9 +54,10 @@ if (!a.apply) { console.log('\nDRY-RUN: nothing was written.'); process.exit(0);
 let ok = 0, fail = 0;
 for (const w of work) {
   const input = w.pubs.map((publicationId) => ({ publicationId }));
-  const d = await gql(a.rollback ? M_PUB : M_UNPUB, { id: w.id, input });
-  const node = a.rollback ? d.publishablePublish : d.publishableUnpublish;
-  const e = node?.userErrors || [];
+  let d; try { d = await gql(a.rollback ? M_PUB : M_UNPUB, { id: w.id, input }); } catch (e) { d = { _err: String(e.message || e) }; }
+  const node = d._err ? null : (a.rollback ? d.publishablePublish : d.publishableUnpublish);
+  if (d._err) console.error('  FAIL ' + w.handle + ': ' + d._err.slice(0, 200));
+  const e = d._err ? [{ message: d._err }] : payloadErrors(node, a.rollback ? 'publishablePublish' : 'publishableUnpublish');
   if (e.length) { fail++; console.error(`  FAIL ${w.handle}: ${JSON.stringify(e).slice(0, 200)}`); }
   else {
     ok++;
diff --git a/scripts/verify.mjs b/scripts/verify.mjs
index ebe3853..5360815 100644
--- a/scripts/verify.mjs
+++ b/scripts/verify.mjs
@@ -102,6 +102,13 @@ for (const p of sample) {
       set('no_sample_button', smpBtn ? 'FAIL' : 'PASS', smpBtn ? 'sample UI in product details' : 'none in product details');
     }
     set('body_class', /template-suffix-contact-us/.test(html) ? 'PASS' : 'FAIL', 'body.template-suffix-contact-us hook');
+    // Review fixes (contrarian #3/#4): structured data must carry NO Offer/price, and the
+    // out-of-loop RL "Minimum order" notice must not render on a page with nothing to order.
+    const ld = [...html.matchAll(/<script type="application\/ld\+json">([\s\S]*?)<\/script>/g)].map((m) => m[1]).join('\n');
+    const hasOffer = /"@type":\s*"Offer"|"offers"\s*:/.test(ld);
+    set('no_jsonld_offer', ld ? (hasOffer ? 'FAIL' : 'PASS') : 'NOT-MEASURED', ld ? (hasOffer ? 'Offer/price present in JSON-LD' : 'no Offer in JSON-LD') : 'no JSON-LD block found');
+    const minOrder = /class="min-order-notice"|data-min-order-notice/.test(html);
+    set('min_order_notice_hidden', minOrder ? 'WARN' : 'PASS', minOrder ? 'min-order markup present (hidden by CSS only)' : 'no min-order markup');
   }
 
   // -- 3. public product json
diff --git a/theme/layout/theme.liquid b/theme/layout/theme.liquid
new file mode 100644
index 0000000..36c080f
--- /dev/null
+++ b/theme/layout/theme.liquid
@@ -0,0 +1,1454 @@
+{% comment %}DW-CHINA-BLOCK-START{% endcomment %}
+{% assign dw_blocked_countries = "CN" | split: "," %}
+{% assign dw_visitor_country = localization.country.iso_code | upcase %}
+{% assign dw_is_blocked = false %}
+{% for dw_bc in dw_blocked_countries %}
+  {% assign dw_bc_trimmed = dw_bc | strip %}
+  {% if dw_visitor_country == dw_bc_trimmed %}
+    {% assign dw_is_blocked = true %}
+  {% endif %}
+{% endfor %}
+
+{% if dw_is_blocked %}
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<!-- DW-CACHE-TOUCH:20260804-1030-scrolljump -->
+<!-- DW-CHINA-JS-BLOCK-START -->
+<script>
+(function() {
+  var blockedCountries = ['CN'];
+  fetch('/browsing_context_suggestions.json', {method: 'GET', credentials: 'same-origin'})
+    .then(function(r) { return r.json(); })
+    .catch(function() { return null; })
+    .then(function(data) {
+      if (data && data.detected_values && data.detected_values.country && data.detected_values.country.handle) {
+        var detectedCountry = data.detected_values.country.handle.toUpperCase();
+        if (blockedCountries.indexOf(detectedCountry) !== -1) {
+          var container = document.createElement('div');
+          container.innerHTML = '<div style="position:fixed;top:0;left:0;width:100%;height:100%;background:#f5f5f5;z-index:999999;display:flex;align-items:center;justify-content:center;font-family:-apple-system,BlinkMacSystemFont,sans-serif"><div style="text-align:center;padding:60px 40px;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.08);max-width:520px;width:90%"><div style="font-size:48px;margin-bottom:20px">&#127760;</div><h1 style="font-size:24px;margin-bottom:16px;font-weight:600;color:#333">Region Not Available</h1><p style="font-size:16px;line-height:1.6;color:#666;margin-bottom:12px">This store is not available in your region.</p><p style="font-size:16px;line-height:1.6;color:#666">We do not ship to or serve customers in your area at this time.</p></div></div>';
+          document.body.innerHTML = '';
+          document.body.appendChild(container);
+        }
+      }
+    });
+})();
+</script>
+<!-- DW-CHINA-JS-BLOCK-END -->
+
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Region Not Available</title>
+  <style>
+    * { margin: 0; padding: 0; box-sizing: border-box; }
+    body {
+      font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
+      background: #f5f5f5;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      min-height: 100vh;
+      color: #333;
+    }
+    .container {
+      text-align: center;
+      padding: 60px 40px;
+      background: white;
+      border-radius: 12px;
+      box-shadow: 0 4px 24px rgba(0,0,0,0.08);
+      max-width: 520px;
+      width: 90%;
+    }
+    .icon { font-size: 48px; margin-bottom: 20px; }
+    h1 { font-size: 24px; margin-bottom: 16px; font-weight: 600; }
+    p { font-size: 16px; line-height: 1.6; color: #666; margin-bottom: 12px; }
+    .contact { margin-top: 24px; font-size: 14px; color: #999; }
+    .contact a { color: #2563eb; text-decoration: none; }
+  </style>
+<script src="{{ 'dw-grid-control.js' | asset_url }}" defer></script>
+
+
+
+
+
+<!-- cache-bust: 2026-03-25T00:54:55.724677 -->
+</head>
+<body>
+  <div class="container">
+    <div class="icon">&#127760;</div>
+    <h1>Region Not Available</h1>
+    <p>We're sorry, but this store is not available in your region.</p>
+    <p>We do not ship to or serve customers in your area at this time.</p>
+    <div class="contact">
+      Questions? Contact us at <a href="mailto:info@designerwallcoverings.com">info@designerwallcoverings.com</a>
+    </div>
+  </div>
+
+
+</body>
+</html>
+{% break %}
+{% endif %}
+{% comment %}DW-CHINA-BLOCK-END{% endcomment %}
+
+<!doctype html>
+<html
+  class="
+    no-js
+    loading
+  "
+  lang="{{ request.locale.iso_code }}"
+>
+<head>
+{% render 'cpc-collection-guard' %}
+<!-- Consent Mode v2 (TK-19): default-denied in EEA/UK/CH, analytics granted elsewhere; ads denied globally (DW runs no ads) -->
+<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
+gtag('consent','default',{analytics_storage:'granted',ad_storage:'denied',ad_user_data:'denied',ad_personalization:'denied'});
+gtag('consent','default',{analytics_storage:'denied',ad_storage:'denied',ad_user_data:'denied',ad_personalization:'denied',wait_for_update:500,region:["AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE", "IS", "LI", "NO", "GB", "CH"]});
+</script>
+<!-- Google tag (gtag.js) GA4 G-53F1QBZSG0 -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-53F1QBZSG0"></script>
+<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','G-53F1QBZSG0');</script>
+
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+
+  <!-- Preconnect Domains -->
+  <link rel="preconnect" href="https://cdn.shopify.com" crossorigin>
+  <link rel="preconnect" href="https://fonts.shopify.com" crossorigin>
+  <link rel="preconnect" href="https://monorail-edge.shopifysvc.com">
+
+  <!-- Preload Assets -->
+  <link rel="preload" href="{{ 'chiko-icons.woff' | asset_url }}" as="font" type="font/woff" crossorigin>
+  <link rel="preload" href="{{ 'pxu-social-icons.woff' | asset_url }}" as="font" type="font/woff" crossorigin>
+
+  <link rel="preload" href="{{ 'theme.css' | asset_url }}" as="style">
+
+  <link rel="preload" href="{{ 'modernizr-2.8.2.min.js' | asset_url  }}" as="script">
+
+  {% if template contains 'cart' %}
+    <link rel="preload" href="{{ '/services/javascripts/countries.js' }}" as="script">
+    <link rel="preload" href="{{ 'shopify_common.js' | shopify_asset_url }}" as="script">
+  {% endif %}
+
+  {% if template contains 'customers' %}
+    <link rel="preload" href="{{ 'shopify_common.js' | shopify_asset_url }}" as="script">
+    <link rel="preload" href="{{ 'customer_area.js' | shopify_asset_url }}" as="script">
+  {% endif %}
+
+  <link rel="preload" href="{{ 'grid.js' | asset_url }}" as="script">
+
+  <script src="//cdata.modernpostcard.com/js/E3CA4636CEDAD4.js" async defer></script>
+
+  <title>
+    {{ page_title }}
+
+    {% if current_tags %}
+      &#8211; {{ current_tags | join: ', ' }}
+    {% endif %}
+
+    {% if current_page != 1 %}
+      &#8211; {{ 'general.pagination.page' | t: page_number: current_page }}
+    {% endif %}
+
+    {% unless page_title contains shop.name %}
+      &#8211; {{ shop.name }}
+    {% endunless %}
+  </title>
+
+  {% if page_description %}
+    <meta name="description" content="{{ page_description | escape }}" />
+  {% endif %}
+
+  {% if settings.favicon %}
+    <link rel="shortcut icon" href="{{ settings.favicon | img_url: '32x32' }}" type="image/png" />
+  {% endif %}
+
+  {% if template contains 'collection' and current_tags %}
+    <meta name="robots" content="noindex" />
+    <link rel="canonical" href="{{ shop.url }}{{ collection.url }}" />
+  {% else %}
+    <link rel="canonical" href="{{ canonical_url }}" />
+  {% endif %}
+  <meta name="viewport" content="width=device-width,initial-scale=1" />
+
+  {%- render 'head.import-map' -%}
+  {%- render 'head.is-land' -%}
+
+  {% comment %}
+  {% render 'boost-sd-fallback' %}
+  {% endcomment %}
+    {% comment %}cache-touch 20260730-133317 recompile-guard{% endcomment %}<style>:is(.boost-sd__product-item[data-product-id="4351299584051"],.boost-sd__product-item[data-product-id="4351299649587"],.boost-sd__product-item[data-product-id="4351299715123"],.boost-sd__product-item[data-product-id="4351299747891"],.boost-sd__product-item[data-product-id="4351299878963"],.boost-sd__product-item[data-product-id="4351299977267"],.boost-sd__product-item[data-product-id="4351276875827"],.boost-sd__product-item[data-product-id="4351276941363"],.boost-sd__product-item[data-product-id="4351276974131"],.boost-sd__product-item[data-product-id="4351277072435"],.boost-sd__product-item[data-product-id="4351277203507"],.boost-sd__product-item[data-product-id="4351277236275"],.boost-sd__product-item[data-product-id="4351277269043"],.boost-sd__product-item[data-product-id="4351277301811"],.boost-sd__product-item[data-product-id="4351277334579"],.boost-sd__product-item[data-product-id="4351277465651"],.boost-sd__product-item[data-product-id="4351277498419"],.boost-sd__product-item[data-product-id="4351277563955"],.boost-sd__product-item[data-product-id="4351277727795"],.boost-sd__product-item[data-product-id="4351277826099"],.boost-sd__product-item[data-product-id="4351278022707"],.boost-sd__product-item[data-product-id="4351278219315"],.boost-sd__product-item[data-product-id="4351278284851"],.boost-sd__product-item[data-product-id="4351278448691"],.boost-sd__product-item[data-product-id="4351278579763"],.boost-sd__product-item[data-product-id="4351278743603"],.boost-sd__product-item[data-product-id="4351278809139"],.boost-sd__product-item[data-product-id="4351279005747"],.boost-sd__product-item[data-product-id="4351279038515"],.boost-sd__product-item[data-product-id="4351279169587"],.boost-sd__product-item[data-product-id="4351279202355"],.boost-sd__product-item[data-product-id="4351279235123"],.boost-sd__product-item[data-product-id="4351279267891"],.boost-sd__product-item[data-product-id="4351279333427"],.boost-sd__product-item[data-product-id="4351279398963"],.boost-sd__product-item[data-product-id="4351279431731"],.boost-sd__product-item[data-product-id="4351279562803"],.boost-sd__product-item[data-product-id="4351279595571"],.boost-sd__product-item[data-product-id="4351279661107"],.boost-sd__product-item[data-product-id="4351279693875"],.boost-sd__product-item[data-product-id="4351279759411"],.boost-sd__product-item[data-product-id="4351279792179"],.boost-sd__product-item[data-product-id="4351279824947"],.boost-sd__product-item[data-product-id="4351279923251"],.boost-sd__product-item[data-product-id="4351279988787"],.boost-sd__product-item[data-product-id="4351282118707"],.boost-sd__product-item[data-product-id="4351282741299"],.boost-sd__product-item[data-product-id="4351283331123"],.boost-sd__product-item[data-product-id="4351283363891"],.boost-sd__product-item[data-product-id="4351283494963"],.boost-sd__product-item[data-product-id="4351283593267"],.boost-sd__product-item[data-product-id="4351283953715"],.boost-sd__product-item[data-product-id="4351284052019"],.boost-sd__product-item[data-product-id="4351284215859"],.boost-sd__product-item[data-product-id="4351286116403"],.boost-sd__product-item[data-product-id="4351286247475"],.boost-sd__product-item[data-product-id="4351286411315"],.boost-sd__product-item[data-product-id="4351286575155"],.boost-sd__product-item[data-product-id="4351286902835"],.boost-sd__product-item[data-product-id="4351286968371"],.boost-sd__product-item[data-product-id="4351287066675"],.boost-sd__product-item[data-product-id="4351287099443"],.boost-sd__product-item[data-product-id="4351287328819"],.boost-sd__product-item[data-product-id="4351287885875"],.boost-sd__product-item[data-product-id="4351288672307"],.boost-sd__product-item[data-product-id="4351288770611"],.boost-sd__product-item[data-product-id="4351288999987"],.boost-sd__product-item[data-product-id="4351289557043"],.boost-sd__product-item[data-product-id="4351289851955"],.boost-sd__product-item[data-product-id="4351289884723"],.boost-sd__product-item[data-product-id="4351289917491"],.boost-sd__product-item[data-product-id="4351289950259"],.boost-sd__product-item[data-product-id="4351290834995"],.boost-sd__product-item[data-product-id="4351290933299"],.boost-sd__product-item[data-product-id="4351291097139"],.boost-sd__product-item[data-product-id="4351291162675"],.boost-sd__product-item[data-product-id="4351291621427"],.boost-sd__product-item[data-product-id="4351291654195"],.boost-sd__product-item[data-product-id="4351291752499"],.boost-sd__product-item[data-product-id="4351291785267"],.boost-sd__product-item[data-product-id="4351291818035"],.boost-sd__product-item[data-product-id="4351292899379"],.boost-sd__product-item[data-product-id="4351293292595"],.boost-sd__product-item[data-product-id="4351293390899"],.boost-sd__product-item[data-product-id="4351293456435"],.boost-sd__product-item[data-product-id="4351293521971"],.boost-sd__product-item[data-product-id="4351293849651"],.boost-sd__product-item[data-product-id="4351294079027"],.boost-sd__product-item[data-product-id="4351294144563"],.boost-sd__product-item[data-product-id="4351294210099"],.boost-sd__product-item[data-product-id="4351294439475"],.boost-sd__product-item[data-product-id="4351294472243"],.boost-sd__product-item[data-product-id="4351294537779"],.boost-sd__product-item[data-product-id="4351294603315"],.boost-sd__product-item[data-product-id="4351294668851"],.boost-sd__product-item[data-product-id="4351294799923"],.boost-sd__product-item[data-product-id="4351295029299"],.boost-sd__product-item[data-product-id="4351295094835"],.boost-sd__product-item[data-product-id="4351295127603"],.boost-sd__product-item[data-product-id="4351295815731"],.boost-sd__product-item[data-product-id="4351295848499"],.boost-sd__product-item[data-product-id="4351295914035"],.boost-sd__product-item[data-product-id="4351296045107"],.boost-sd__product-item[data-product-id="4351296110643"],.boost-sd__product-item[data-product-id="4351296176179"],.boost-sd__product-item[data-product-id="4351296274483"],.boost-sd__product-item[data-product-id="4351296503859"],.boost-sd__product-item[data-product-id="4351296536627"],.boost-sd__product-item[data-product-id="4351296569395"],.boost-sd__product-item[data-product-id="4351296798771"],.boost-sd__product-item[data-product-id="4351297060915"],.boost-sd__product-item[data-product-id="4351297093683"],.boost-sd__product-item[data-product-id="4351297159219"],.boost-sd__product-item[data-product-id="4351297257523"],.boost-sd__product-item[data-product-id="4351297323059"],.boost-sd__product-item[data-product-id="4351297355827"],.boost-sd__product-item[data-product-id="4351297388595"],.boost-sd__product-item[data-product-id="4351297912883"],.boost-sd__product-item[data-product-id="4351298109491"],.boost-sd__product-item[data-product-id="4351298207795"],.boost-sd__product-item[data-product-id="4351298273331"],.boost-sd__product-item[data-product-id="4351298699315"],.boost-sd__product-item[data-product-id="4351299256371"],.boost-sd__product-item[data-product-id="4351299321907"],.boost-sd__product-item[data-product-id="4351299387443"],.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-002"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-003"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-004"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-005"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-007"]),.boost-sd__product-item:has(a[href*="/products/arbour-commercial-wallcovering-arbour-arb-008"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-104"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-105"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-106"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-108"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-110"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-111"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-112"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-113"]),.boost-sd__product-item:has(a[href*="/products/arona-commercial-wallcovering-arona-ar-114"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-102"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-103"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-104"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-106"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-107"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-111"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-116"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-117"]),.boost-sd__product-item:has(a[href*="/products/bark-commercial-wallcovering-bark-vbk-121"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-002"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-007"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-008"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-012"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-013"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-015"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-016"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-017"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-018"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-019"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-021"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-022"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-023"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-024"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-026"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-027"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-028"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-029"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-030"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-032"]),.boost-sd__product-item:has(a[href*="/products/brushed-steel-commercial-wallcovering-brushed-steel-bst-033"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2019"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2033"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2047"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2048"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2051"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2053"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2059"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2061"]),.boost-sd__product-item:has(a[href*="/products/cezanne-commercial-wallcovering-cezanne-czn-2064"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-001"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-003"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-006"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-009"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-015"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-016"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-018"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-019"]),.boost-sd__product-item:has(a[href*="/products/cosmos-commercial-wallcovering-cosmos-cos-024"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-002"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-008"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-009"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-011"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-014"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-018"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-019"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-020"]),.boost-sd__product-item:has(a[href*="/products/harper-commercial-wallcovering-harper-hpr-021"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-01"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-03"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-05"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-07"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-19"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-20"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-22"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-23"]),.boost-sd__product-item:has(a[href*="/products/kota-silk-commercial-wallcovering-kota-silk-kot-24"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-001"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-004"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-006"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-008"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-009"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-014"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-017"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-018"]),.boost-sd__product-item:has(a[href*="/products/quarry-commercial-wallcovering-quarry-qry-020"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-001"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-002"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-004"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-005"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-007"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-009"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-014"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-015"]),.boost-sd__product-item:has(a[href*="/products/rough-concrete-commercial-wallcovering-rough-concrete-rct-016"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-02"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-03"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-04"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-07"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-09"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-10"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-12"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-17"]),.boost-sd__product-item:has(a[href*="/products/shoreline-commercial-wallcovering-shoreline-sho-18"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-001"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-006"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-012"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-013"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-014"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-016"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-017"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-018"]),.boost-sd__product-item:has(a[href*="/products/sorrento-commercial-wallcovering-sorrento-sor-019"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-101"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-105"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-108"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-109"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-118"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-127"]),.boost-sd__product-item:has(a[href*="/products/tela-ii-commercial-wallcovering-tela-ii-tel-128"]),.boost-sd__product-item:has(a[href*="/products/toban-commercial-wallcovering-toban-tob-102"])) :is(.boost-sd__product-price,.boost-sd__format-currency,button,[class*="quick-view"],[class*="quick-add"]){display:none!important}</style>
+{% render 'boost-infinite-override' %}
+{% if collection.current_vendor == 'Newmor Wallcoverings' %}
+<script>
+// Boost requests JSON for Shopify's virtual vendors collection. Use the existing Newmor collection's real metadata.
+(function(){var original=window.fetch;window.fetch=function(input,init){var raw=typeof input==='string'?input:input&&input.url;var u=new URL(raw,location.origin);var method=(init&&init.method)||(input&&input.method)||'GET';if(method.toUpperCase()==='GET'&&u.origin===location.origin&&u.pathname==='/collections/vendors.json'){u.pathname='/collections/newmor-wallcoverings.json';input=typeof input==='string'?u.href:new Request(u.href,input);}return original.call(this,input,init);};})();
+</script>
+{% endif %}
+    {%- if template.name == 'page' and page.handle == 'trade-only-benefits' -%}
+      <script>
+        (function(){
+          var append=Node.prototype.appendChild;
+          Node.prototype.appendChild=function(node){
+            if(node&&node.tagName==='SCRIPT'&&/cdn3?\.shopixai\.com/i.test(node.src||'')) return node;
+            return append.call(this,node);
+          };
+        })();
+      </script>
+    {%- endif -%}
+    {{ content_for_header }}
+
+  {% liquid
+     assign heading_text_transform = 'none'
+     if settings.heading-font-small-caps
+       assign heading_text_transform = 'uppercase'
+     endif
+
+     assign button_text_transform = 'none'
+     assign button_letter_spacing = '0em'
+     if settings.button-font-small-caps
+       assign button_text_transform = 'uppercase'
+       assign button_letter_spacing = '0.05em'
+     endif
+  %}
+
+  <style>
+    :root {
+      /* ------------------------------------------------------------
+        Typography
+      ------------------------------------------------------------ */
+      /* Body */
+      --element-text-font-size--body-lg: 1.286rem; /* Product price */
+      --element-text-font-size--body-sm: var(--text-size-3-5); /* SKU, installments, variant labels */
+      --element-text-font-family--body: {{ settings.font_body.family }}, {{ settings.font_body.fallback_families }};
+      --element-text-font-weight--body: {{ settings.font_body.weight }};
+
+      /* Headings */
+      --element-text-font-size--heading-xl: 2.5rem; /* Product title */
+      --element-text-font-family--heading: {{ settings.font_heading.family }}, {{ settings.font_heading.fallback_families }};
+      --element-text-font-weight--heading: {{ settings.font_heading.weight }};
+      --element-text-line-height--heading: 1.25;
+      --element-text-text-transform--heading: {{ heading_text_transform }};
+
+      /* Buttons */
+      --element-button-font-family: {{ settings.font_button.family }}, {{ settings.font_button.fallback_families }};
+      --element-button-text-transform: {{ button_text_transform }};
+      --element-button-letter-spacing: {{ button_letter_spacing }};
+
+      /* ------------------------------------------------------------
+        Colors
+      ------------------------------------------------------------ */
+      --color-primary: {{ settings['body-text-color'] }}; 
+      --color-secondary: {{ settings['background-color'] }};
+      --root-color-primary: {{ settings['body-text-color'] }}; 
+      --root-color-secondary: {{ settings['background-color'] }};
+      --color-focus: #0000ff;
+
+      --color-sale-tag-text: {{ settings['background-color'] }};
+      --color-sale-tag: {{ settings['product-badge-background-color'] }};
+      
+      --element-button-color-primary: {{ settings['button-color'] }};
+      --element-button-color-secondary: {{ settings['accent-color'] }};
+      
+      --element-text-color: {{ settings['body-text-color'] }};
+      --element-text-color--heading: {{ settings['heading-color'] }};
+
+      --element-input-color-primary: {{ settings['form-select-color'] }};
+      --element-input-color-secondary: {{ settings['form-select-background'] }};
+
+      /* ------------------------------------------------------------
+        Other
+      ------------------------------------------------------------ */
+      --element-badge-radius: 2px;
+      --element-button-radius: 2px;
+
+      --layout-section-max-inline-size: 1260px;
+      --layout-section-padding-inline: 30px;
+    }
+
+    /* ------------------------------------------------------------
+      Component overrides
+    ------------------------------------------------------------ */
+
+    ::before,
+    ::after {
+      box-sizing: content-box;
+    }
+    product-hot-reload ::before,
+    product-hot-reload ::after {
+      box-sizing: border-box;
+    }
+
+    /* Lightbox */
+    .overlay-lightbox__overlay {
+      z-index: 9999;
+    }
+
+    /* Pick up */
+    .element-icon-in-stock {
+      fill: currentColor;
+    }
+
+    /* Divider */
+    hr.element-divider {
+      height: 0;
+      background: transparent;
+    }
+
+    /* Drawer */
+    overlay-drawer .element-button {
+      --element-button-color-primary: {{ settings.body-text-color }};
+      --element-icon-stroke-width: 3px;
+    }
+
+    /* Heading */
+    .element-text:is([class*=element-text--heading]) {
+      --_color: var(--element-text-color--heading);
+    }
+
+    /* Element Input */
+    .element-input {
+      --_color-box-shadow: {{ settings['form-select-border-color'] }};
+    }
+
+    /* Variant Labels */
+    label.element-text:is([class*=element-text--body]):where(.element-text--body-sm) {
+      color: {{ settings['heading-color'] }};
+      font-size: 1rem;
+
+      .element-text:first-child {
+        color: {{ settings['heading-color'] }};
+      }
+    }
+
+    /* Element Select */
+    element-select {
+      --color-primary: {{ settings['form-select-border-color'] }};
+      --element-button-color-primary: {{ settings['form-select-color'] }};
+      --element-button-color-secondary: {{ settings['form-select-background'] }};
+      --element-button-box-shadow: inset 0 0 0 1px {{ settings['form-select-border-color'] }};
+      --element-button-font-family: {{ settings.font_body.family }}, {{ settings.font_body.fallback_families }};
+      --element-button-text-transform: none;
+    }
+    element-select.element-select__wrapper--focused .element-button {
+      box-shadow: inset 0 0 0 var(--element-button-border-width--focus) var(--_color-focus);
+      border: none;
+    }
+
+    /* Media Gallery */
+    .media-gallery__thumb {
+      border-radius: 0;
+    }
+
+    /* ATC */
+
+    product-form .element-button[type="submit"] {
+      --element-button-padding-block: var(--size-5);
+      --_color-text: {{ settings['button-color'] }};
+      --_color-background: {{ settings['accent-color'] }};
+      --_box-shadow: none;
+
+      &:disabled {
+        color: #888888 !important;
+        background-color: #cccccc !important;
+      }
+    }
+
+    product-form:has(.element-button--shopify-payment-wrapper) .element-button[type="submit"] {
+      --element-button-color-primary: {{ settings['secondary-button-color'] }};
+      --element-button-color-secondary: {{ settings['secondary-button-background'] }};
+    }
+
+    .shopify-payment-button .shopify-payment-button__button.shopify-payment-button__button--unbranded,
+    .shopify-payment-button .shopify-payment-button__button {
+      --element-text-line-height--body-md: 1;
+      --element-button-color-primary: {{ settings['accent-color'] }};
+      --element-button-color-secondary: {{ settings['button-color'] }};
+      --element-button-padding-block: var(--size-5);
+      --_box-shadow: none;
+
+      text-transform: var(--element-button-text-transform);
+    }
+  </style>
+
+  {% assign x_handle = settings.social-x-link | split: 'x.com/' | last | split: 'twitter.com/' | last %}
+  {%
+    render 'social-meta-tags',
+    twitter_handle: x_handle,
+    default_image: page_image,
+  %}
+
+  <!-- Theme CSS -->
+  <link rel="stylesheet" href="{{ 'theme.css' | asset_url }}">
+  {% render 'dw-product-styles' %}
+  <link rel="stylesheet" href="{{ 'custom.css' | asset_url }}">
+  <link rel="stylesheet" href="{{ 'dw-pdp-restyle.css' | asset_url }}">
+  {% if settings.custom-css != blank %}
+    <style>
+      {{ settings.custom-css }}
+    </style>
+  {% endif %}
+
+  <!-- Theme object -->
+  {% comment %}Inject theme-object begin{% endcomment %}
+  <script>
+    var Theme = {};
+    Theme.version = "7.1.0";
+    Theme.name = 'Grid';
+  
+    Theme.currency = {{ shop.currency | json }};
+    Theme.moneyFormat = {{ shop.money_format | strip_html | json }};
+  
+    Theme.pleaseSelectText = "{{ 'general.general.please_select' | t | strip_newlines | escape }}";
+  
+    Theme.addToCartSuccess = "{{ 'products.product.success_html' | t: product: '**product**', cart_link: '**cart_link**', continue_link: '**continue_link**', checkout_link: '**checkout_link**' | strip_newlines | escape }}";
+  
+    {% if shop.customer_accounts_enabled and customer %}
+      Theme.customerLoggedIn = true;
+    {% endif %}
+  
+    Theme.shippingCalculator = true;
+    Theme.shippingButton = "{{ 'cart.shipping_calculator.submit' | t | strip_newlines | escape }}";
+    Theme.shippingDisabled = "{{ 'cart.shipping_calculator.disabled' | t | strip_newlines | escape }}";
+  
+    {% if shop.customer_accounts_enabled and customer and customer.default_address %}
+      Theme.customerAddress = {{ customer.default_address | json }};
+    {% endif %}
+  
+    Theme.shippingCalcErrorMessage = "{{ 'cart.shipping_calculator.error' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcMultiRates = "{{ 'cart.shipping_calculator.rates_html' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcOneRate = "{{ 'cart.shipping_calculator.rate' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcNoRates = "{{ 'cart.shipping_calculator.no_rates' | t | strip_newlines | replace: '"','\\"' }}";
+    Theme.shippingCalcRateValues = "{{ 'cart.shipping_calculator.rate_values_html' | t | strip_newlines | replace: '"','\\"' }}";
+  
+    Theme.routes = {
+      "root_url": "{{ routes.root_url }}",
+      "account_url": "{{ routes.account_url }}",
+      "account_login_url": "{{ routes.account_login_url }}",
+      "account_logout_url": "{{ routes.account_logout_url }}",
+      "account_register_url": "{{ routes.account_register_url }}",
+      "account_addresses_url": "{{ routes.account_addresses_url }}",
+      "collections_url": "{{ routes.collections_url }}",
+      "all_products_collection_url": "{{ routes.all_products_collection_url }}",
+      "search_url": "{{ routes.search_url }}",
+      "cart_url": "{{ routes.cart_url }}",
+      "cart_add_url": "{{ routes.cart_add_url }}",
+      "cart_change_url": "{{ routes.cart_change_url }}",
+      "cart_clear_url": "{{ routes.cart_clear_url }}",
+      "product_recommendations_url": "{{ routes.product_recommendations_url }}",
+      "predictive_search_url": "{{ routes.predictive_search_url }}",
+    };
+  </script>
+  {% comment %}Inject theme-object end{% endcomment %}
+
+  {% render 'jquery-snippet' %}
+  <script src="{{ 'custom.js' | asset_url }}" defer></script>
+
+  <script>
+    (function() {
+      document.documentElement.classList.remove('no-js');
+      window.addEventListener('DOMContentLoaded', function() {
+        document.documentElement.classList.remove('loading');
+      });
+      window.setTimeout(function() {
+        document.documentElement.classList.remove('loading');
+      }, 2000);
+
+      if (!window.MutationObserver || !window.MutationObserver.prototype) {
+        return;
+      }
+      var originalObserve = window.MutationObserver.prototype.observe;
+      window.MutationObserver.prototype.observe = function(target, options) {
+        if (!(target instanceof Node)) {
+          return;
+        }
+        return originalObserve.call(this, target, options);
+      };
+    })();
+  </script>
+
+<script src="{{ 'dw-grid-control.js' | asset_url }}" defer></script>
+<script src="{{ 'dw-pdp-size-pills.js' | asset_url }}" defer></script>
+
+
+
+
+
+
+
+
+
+
+
+<!-- DW: Price hiding script REMOVED 2026-03-24 -->
+
+<style>
+/* DW 2026-06-25: grid price-hide REMOVED (Steve) — show prices everywhere */
+/* Restore on product pages + cart */
+#shopify-section-product [class*="price"],
+#shopify-section-product span.money,
+.product-add-to-cart span.money,
+.shopify-product-form span.money,
+.mini-cart span.money,
+.cart span.money {
+  display: inline !important;
+  visibility: visible !important;
+  opacity: 1 !important;
+  height: auto !important;
+  font-size: inherit !important;
+  line-height: inherit !important;
+  position: static !important;
+  pointer-events: auto !important;
+}
+/* Square images */
+.boost-sd__product-item [class*="product-image"],
+.boost-sd__product-item [class*="image-wrapper"] {
+  aspect-ratio: 1/1 !important;
+  overflow: hidden !important;
+}
+.boost-sd__product-item img {
+  width: 100% !important;
+  height: 100% !important;
+  object-fit: cover !important;
+}
+/* Hide View As toggle */
+[class*="view-as"], [class*="viewAs"], .boost-sd__toolbar [class*="view"], .boost-sd [class*="toolbar-view"] {
+  display: none !important;
+}
+/* Hide View As toggle */
+[class*="view-as"],[class*="viewAs"],.boost-sd__toolbar [class*="view"],.boost-sd [class*="toolbar"] [class*="view"]{display:none!important}
+/* Center text */
+.boost-sd__product-item,
+.boost-sd__product-item [class*="title"],
+.boost-sd__product-item [class*="vendor"],
+.boost-sd__product-item p,
+.dw-vendor-link {
+  text-align: center !important;
+}
+</style>
+<!-- DW: killPrices REMOVED 2026-03-24 -->
+
+<!-- /DW -->
+
+{% comment %} DW: ItemList structured data for the Shop-by-Brand page (script tags are stripped from page body_html, so injected here) {% endcomment %}
+{% if page.handle == 'brands' %}{% render 'brands-jsonld' %}{% endif %}
+
+<!-- cache-bust: 2026-03-25T00:54:55.724677 -->
+
+{% if template contains 'product' %}
+<!-- DW: qty-inline v1 — quantity stepper moved to the right of the price (2026-07-02) -->
+<style>
+  .dw-price-qty-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
+  .dw-price-qty-row .product-price{margin:0}
+  .dw-price-qty-row .product-price__unit-price{flex-basis:100%}
+  .dw-qty-inline{display:inline-flex;align-items:center;gap:8px}
+  .dw-qty-inline .product-option-quantity-label{margin:0;white-space:nowrap}
+  .dw-qty-inline .mm_quantity{margin:0}
+  .dw-qty-inline .product-option-quantity-label.hidden,
+  .dw-qty-inline .mm_quantity.hidden{display:none!important}
+</style>
+<script>
+(function(){
+  function relocate(){
+    if(document.querySelector('.dw-qty-inline')) return;
+    var qty=document.querySelector('form[action*="/cart/add"] .mm_quantity');
+    if(!qty) return;
+    var form=qty.closest('form');
+    var priceBox=(form&&form.querySelector('.product__price'))||document.querySelector('.product__price');
+    if(!priceBox) return;
+    var label=(form||document).querySelector('label.product-option-quantity-label');
+    var wrap=document.createElement('span'); wrap.className='dw-qty-inline';
+    if(label) wrap.appendChild(label);
+    wrap.appendChild(qty);
+    priceBox.classList.add('dw-price-qty-row');
+    priceBox.appendChild(wrap);
+  }
+  function init(){ relocate(); setTimeout(relocate,400); setTimeout(relocate,1200); }
+  if(document.readyState!=='loading') init(); else document.addEventListener('DOMContentLoaded',init);
+})();
+</script>
+<!-- /DW qty-inline -->
+{% endif %}
+
+{% if template contains 'product' %}
+{% unless product.handle contains 'dig-' %}
+<!-- DW: price-buy v1 — add-to-cart by price; request pill + PDF row; collapse sample selector (2026-07-06) -->
+<style>
+  .product__price.dw-has-add{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
+  /* unify SKU / price / Quantity to one size (16px) */
+  .product-sku-label{font-size:16px!important}
+  .product__price .product-price-minimum.money,.product__price .money{font-size:16px!important}
+  /* tighten the price row so the qty row sits close WITHOUT a negative margin (no overlap) */
+  .product__price{min-height:0!important}
+  .product__price .product-price{margin:0!important;line-height:1.2!important}
+  /* more space between SKU and price (theme's .product__price margin is locked; use higher specificity) */
+  .product__price.dw-price-qty-row{margin-top:12px!important}
+  /* quantity + add-to-cart on one line below the price */
+  .dw-qty-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}
+  /* match "QUANTITY:" to the SKU/PRICE label style (grey, uppercase, 500); label wraps text in <strong> */
+  .dw-qty-row .product-option-quantity-label,.dw-qty-row .product-option-quantity-label strong{color:rgb(136,136,136)!important;font-weight:500!important;text-transform:uppercase!important;letter-spacing:0.96px!important;font-size:16px!important}
+  .dw-qty-row .product-option-quantity-label{margin:0!important}
+  .dw-qty-row .mm_quantity,.dw-qty-row .mm_quantity *{font-weight:400!important}
+  .dw-qty-row .mm_quantity input.qty,.dw-qty-row .mm_quantity input[name="quantity"]{font-weight:700!important}
+  /* add-to-cart pill to the right of the stepper, SAME size as Request Sample */
+  .dw-qty-row .cowlendar-add-to-cart{width:auto!important;margin:0!important;flex:0 0 auto!important;height:auto!important;min-height:0!important;border-radius:999px!important;font-size:12px!important;font-weight:500!important;padding:10px 30px!important}
+  /* hide add-to-cart until the overlay places it in the qty row (kills the load-flicker);
+     the JS fail-safe reveals it regardless after 15s so it can never stay hidden */
+  input.add-to-cart.cowlendar-add-to-cart{visibility:hidden}
+  input.add-to-cart.cowlendar-add-to-cart.dw-add-ready{visibility:visible}
+  .dw-price-buy-row2{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;max-width:430px}
+  /* Steve 2026-07-28 fix — Download-PDF was clipping in a narrow / zoomed info column.
+     Make Sample + Download-PDF two EQUAL shrink-to-fit halves (box-sizing so padding
+     can't push them past the column edge); they can never overflow/clip, and stack
+     full-width below 600px. */
+  .dw-price-buy-row2 .dl-sample-btn{flex:1 1 calc(50% - 6px)!important;width:auto!important;min-width:0!important;box-sizing:border-box!important;margin:0!important;padding-left:16px!important;padding-right:16px!important;white-space:nowrap!important}
+  .dw-price-buy-row2 .spec-sheet-controls{margin:0!important;transform:none!important;flex:1 1 calc(50% - 6px)!important;width:auto!important;min-width:0!important;max-width:none!important;box-sizing:border-box!important}
+  /* Download PDF -> black pill filling its half (no fixed cap, so it can shrink not clip) */
+  .dw-price-buy-row2 .spec-sheet-btn{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:100%!important;max-width:none!important;min-width:0!important;box-sizing:border-box!important;padding:10px 12px!important;white-space:nowrap!important;background:#000!important;color:#fff!important;border-color:#000!important}
+  .dw-price-buy-row2 .spec-sheet-btn:hover{background:#1a1a1a!important}
+  @media (max-width:600px){
+    .dw-price-buy-row2{max-width:none}
+    .dw-price-buy-row2 .dl-sample-btn,
+    .dw-price-buy-row2 .spec-sheet-controls{flex:1 1 100%!important}
+  }
+  /* single-roll pricing note + dimensions (bolt / min-2 products only) */
+  .dw-sr-note{font-size:12px!important;color:rgb(136,136,136)!important;letter-spacing:.02em;margin-left:6px}
+  .dw-sr-dims{font-size:12px!important;color:rgb(90,90,90)!important;margin-left:18px;white-space:nowrap}
+  .dw-2roll-note{font-size:13px!important;font-weight:600;color:rgb(60,66,70)!important;margin-top:6px;letter-spacing:.01em}
+</style>
+<script>
+(function () {
+  if (window.__dwPriceBuyLoaded) return;
+  window.__dwPriceBuyLoaded = true;
+  function collapseSelector(form) {
+    var select = form.querySelector('select.single-option-selector');
+    if (!select) return false;
+    var opts = Array.prototype.slice.call(select.options);
+    var samples = opts.filter(function (o) { return /sample/i.test(o.value); });
+    if (!(opts.length <= 2 && samples.length >= 1)) return false;
+    var sellable = opts.filter(function (o) { return !/sample/i.test(o.value); })[0];
+    if (sellable && select.value !== sellable.value) {
+      select.value = sellable.value;
+      try { select.dispatchEvent(new Event('change', { bubbles: true })); }
+      catch (e) { var ev = document.createEvent('HTMLEvents'); ev.initEvent('change', true, false); select.dispatchEvent(ev); }
+    }
+    var pills = form.querySelector('.dw-size-pills');
+    if (pills && pills.parentNode) pills.parentNode.removeChild(pills);
+    return true;
+  }
+  // On bolt / min-2-single-roll products only: mark the price "/ single roll",
+  // show the single-roll dimensions, and split Length into D/R + S/R.
+  function srEnhance() {
+    var qi = document.querySelector('.mm_quantity input.qty, .mm_quantity input[name="quantity"]');
+    if (!qi) return;
+    var isBolt = parseInt(qi.getAttribute('min'), 10) === 2 || parseInt(qi.getAttribute('step'), 10) === 2;
+    if (!isBolt) return;
+    // Steve 2026-07-09: min/step==2 ALONE mislabels per-yard FABRICS that carry a
+    // 2-unit factor (UFAC=2 leaked onto ~144 Kravet-family multipurpose/upholstery
+    // goods). Roll language must key off the actual UNIT, not the quantity floor:
+    // only enhance when the sellable variant is genuinely sold by the roll/bolt.
+    var unitText = '';
+    var uSel = document.querySelector('form[action*="/cart/add"] select.single-option-selector');
+    if (uSel) Array.prototype.forEach.call(uSel.options, function (o) {
+      if (!/sample/i.test(o.value)) unitText += ' ' + o.value;
+    });
+    if (!/\b(roll|bolt)\b/i.test(unitText)) return;
+    // read the VISIBLE SPECIFICATIONS (.dw-specs -> .dw-spec-row -> .dw-spec-label/.dw-spec-value)
+    var specs = document.querySelector('.dw-specs');
+    function specVal(re) {
+      var out = null;
+      if (specs) Array.prototype.forEach.call(specs.querySelectorAll('.dw-spec-row'), function (rw) {
+        var l = ((rw.querySelector('.dw-spec-label') || {}).textContent || '').trim();
+        if (re.test(l)) out = ((rw.querySelector('.dw-spec-value') || {}).textContent || '').trim();
+      });
+      return out;
+    }
+    // single-roll length + dimensions (D/R length / 2, since 1 bolt = 2 single rolls)
+    var srLen = specVal(/^Length S\/R$/i);
+    if (!srLen) {
+      var dr = specVal(/^Length(?:\s*D\/R)?$/i);
+      if (dr) { var srHalf = dr.replace(/[\d.]+/g, function (x) { return (Math.round((parseFloat(x) / 2) * 1000) / 1000) + ''; }); srLen = /\d/.test(srHalf) ? srHalf : null; }
+    }
+    var wVal = specVal(/^Width$/i);
+    var srDims = (wVal && srLen) ? (wVal.split(/\s*x\s*/i)[0].trim() + ' x ' + srLen) : null;
+    // rewrite the visible specs once: Length -> Length D/R, add Single Roll + Length S/R rows above it
+    if (specs && !specs.dataset.dwSr) {
+      var lengthRow = null;
+      Array.prototype.forEach.call(specs.querySelectorAll('.dw-spec-row'), function (rw) {
+        if (/^Length$/i.test(((rw.querySelector('.dw-spec-label') || {}).textContent || '').trim())) lengthRow = rw;
+      });
+      if (lengthRow) {
+        specs.dataset.dwSr = '1';
+        lengthRow.querySelector('.dw-spec-label').textContent = 'Length D/R';
+        if (srDims) {
+          var srRow = document.createElement('div'); srRow.className = 'dw-spec-row';
+          srRow.innerHTML = '<span class="dw-spec-label">Length S/R</span><span class="dw-spec-value">' + srLen + '</span>';
+          lengthRow.parentNode.insertBefore(srRow, lengthRow);
+          var dimRow = document.createElement('div'); dimRow.className = 'dw-spec-row';
+          dimRow.innerHTML = '<span class="dw-spec-label">Single Roll</span><span class="dw-spec-value">' + srDims + '</span>';
+          lengthRow.parentNode.insertBefore(dimRow, srRow);
+        }
+      }
+    }
+    // price note + dims
+    var money = document.querySelector('.product__price .product-price-minimum.money');
+    if (money && !document.querySelector('.dw-sr-note')) { var note = document.createElement('span'); note.className = 'dw-sr-note'; note.textContent = '/ single roll'; money.after(note); }
+    var price = document.querySelector('.product__price');
+    if (srDims && price && !price.querySelector('.dw-sr-dims')) { var d = document.createElement('span'); d.className = 'dw-sr-dims'; d.textContent = 'Single roll: ' + srDims; price.appendChild(d); }
+    // Steve 2026-07-08: every 2-roll-minimum product states the increment rule plainly in the buy box.
+    if (price && !price.querySelector('.dw-2roll-note')) { var n2 = document.createElement('div'); n2.className = 'dw-2roll-note'; n2.textContent = 'Sold in 2 roll increments only'; price.appendChild(n2); }
+  }
+
+  // Clean the KEYWORDS list (display-only): drop namespaced tags, spec/operational
+  // tags, leading-"and" artifacts, and case duplicates. Tags stay intact for search.
+  function kwFilter() {
+    var box = document.querySelector('.keywords-desktop');
+    if (!box || box.dataset.dwKw) return;
+    var links = Array.prototype.slice.call(box.querySelectorAll('a'));
+    if (!links.length) return;
+    box.dataset.dwKw = '1';
+    var seen = {};
+    var DROP = /(:|fire\s*rat|astm|class\s*"?a"?|suitable\s+for|coated\s+paper|traffic|light\s+duty|heavy\s+duty|residential\s+use|background\s+color|non[-\s]?woven|scrubbab|removable|paste\s+the|washab)/i;
+    links.forEach(function (a) {
+      var t = (a.textContent || '').trim();
+      var key = t.toLowerCase().replace(/^and\s+/, '').trim();
+      var drop = t === '' || DROP.test(t) || /^and\s+/i.test(t) || seen[key];
+      if (drop) {
+        var nxt = a.nextSibling;
+        if (nxt && nxt.nodeType === 3 && /^[\s,]+$/.test(nxt.nodeValue)) nxt.parentNode.removeChild(nxt);
+        else { var prev = a.previousSibling; if (prev && prev.nodeType === 3 && /^[\s,]+$/.test(prev.nodeValue)) prev.parentNode.removeChild(prev); }
+        a.parentNode.removeChild(a);
+      } else { seen[key] = 1; }
+    });
+  }
+
+  function build() {
+    var form = document.querySelector('.product__form') || document.querySelector('form[action*="/cart/add"]');
+    if (!form) return false;
+    var price = document.querySelector('.product__price');
+    if (!price) return false;
+    var req = form.querySelector('.dl-sample-btn');
+    var pdf = document.querySelector('.spec-sheet-controls');
+    var row2 = document.querySelector('.dw-price-buy-row2');
+    if (!row2 && req) {
+      row2 = document.createElement('div');
+      row2.className = 'dw-price-buy-row2';
+      price.parentNode.insertBefore(row2, price.nextSibling);
+    }
+    if (row2) {
+      if (req && req.parentNode !== row2) row2.appendChild(req);
+      if (pdf && pdf.parentNode !== row2) row2.appendChild(pdf);
+    }
+    // quantity + add-to-cart on their own line, between the price and row2.
+    var qty = document.querySelector('.mm_quantity');
+    var qlabel = document.querySelector('.product-option-quantity-label');
+    var qrow = document.querySelector('.dw-qty-row');
+    if (qty && !qrow) {
+      qrow = document.createElement('div');
+      qrow.className = 'dw-qty-row';
+      price.parentNode.insertBefore(qrow, price.nextSibling);
+    }
+    if (qrow) {
+      if (qlabel && qlabel.parentNode !== qrow) qrow.appendChild(qlabel);
+      if (qty && qty.parentNode !== qrow) qrow.appendChild(qty);
+      var add = document.querySelector('input.add-to-cart.cowlendar-add-to-cart, .cowlendar-add-to-cart');
+      if (add && add.offsetParent !== null && add.parentNode !== qrow) qrow.appendChild(add);
+    }
+    var collapsed = collapseSelector(form);
+    if (collapsed) {
+      Array.prototype.forEach.call(document.querySelectorAll('.dw-size-pill'), function (b) {
+        if (b.parentNode) b.parentNode.removeChild(b);
+      });
+    }
+    return !!(row2 && row2.querySelector('.dl-sample-btn'));
+  }
+  function placeAndReveal() {
+    build();
+    srEnhance();
+    kwFilter();
+    var placed = document.querySelector('.dw-qty-row .cowlendar-add-to-cart');
+    if (placed) placed.classList.add('dw-add-ready');
+  }
+  function init() {
+    placeAndReveal();
+    // cowlendar injects the add-to-cart late; keep trying to place it for ~20s
+    var tries = 0, iv = setInterval(function () { placeAndReveal(); if (++tries > 100) clearInterval(iv); }, 200);
+    try {
+      var mo = new MutationObserver(function () { placeAndReveal(); });
+      mo.observe(document.body, { childList: true, subtree: true });
+      setTimeout(function () { mo.disconnect(); }, 20000);
+    } catch (e) {}
+    // fail-safe: never leave the add-to-cart hidden, even if placement never happens
+    setTimeout(function () { var a = document.querySelector('.cowlendar-add-to-cart'); if (a) a.classList.add('dw-add-ready'); }, 15000);
+  }
+  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init();
+  window.addEventListener('load', function () { setTimeout(placeAndReveal, 800); });
+})();
+</script>
+<!-- /DW price-buy -->
+{% endunless %}
+{% endif %}
+
+</head>
+
+<body
+  class="
+    template-{{ template.name }}
+    template-suffix-{{ template.suffix }}
+
+    {% if customer %}
+      customer-logged-in
+    {% endif %}
+  "
+>
+
+  {%- comment -%}
+    ── China Region Block (added 2026-02-27) ──
+    Blocks visitors from CN country code with a full-screen overlay.
+  {%- endcomment -%}
+  {%- if localization.country.iso_code == 'CN' -%}
+    <div id="region-block" style="position:fixed;inset:0;z-index:999999;background:#ffffff;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:40px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;">
+      <h1 style="font-size:24px;color:#333;margin-bottom:16px;">This store is not available in your region</h1>
+      <p style="font-size:16px;color:#666;max-width:500px;">We apologize for the inconvenience, but this store does not currently serve customers in your region.</p>
+    </div>
+    <style>body{overflow:hidden !important;}</style>
+  {%- endif -%}
+
+  {% render 'dw-samples-banner' %}
+  {% sections 'header-group' %}
+
+  {%- assign dw_trade_experience = false -%}
+  {%- if customer and customer.tags contains 'trade_approved' -%}{%- assign dw_trade_experience = true -%}{%- endif -%}
+  {%- if template.name == 'page' and page.handle == 'trade-only-benefits' -%}
+    {% render 'dw-trade-apply' %}
+  {%- elsif template.name == 'index' and dw_trade_experience -%}
+    {% render 'dw-trade-home' %}
+  {%- else -%}
+    <div style="--background-color: {{ settings.background-color }}">
+      {%
+        render 'age-gate',
+        id: 'page',
+        sections: content_for_layout,
+      %}
+    </div>
+  {%- endif -%}
+
+  {% include 'quickshop' %}
+
+  {% comment %}Inject icon-star-symbol begin{% endcomment %}
+  <svg
+    class="icon-star-reference"
+    aria-hidden="true"
+    focusable="false"
+    role="presentation"
+    xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="3 3 17 17" fill="none"
+  >
+    <symbol id="icon-star">
+      <rect class="icon-star-background" width="20" height="20" fill="currentColor"/>
+      <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
+    </symbol>
+    <clipPath id="icon-star-clip">
+      <path d="M10 3L12.163 7.60778L17 8.35121L13.5 11.9359L14.326 17L10 14.6078L5.674 17L6.5 11.9359L3 8.35121L7.837 7.60778L10 3Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+    </clipPath>
+  </svg>
+  {% comment %}Inject icon-star-symbol end{% endcomment %}
+
+  {%- unless template.name == 'page' and page.handle == 'trade-only-benefits' or template.name == 'index' and dw_trade_experience -%}
+    <div class="main-content">
+      {% comment %}cache-touch 20260730-133317 recompile-guard{% endcomment %}{% render "dw-boost-overrides" %}
+      {% if request.page_type == 'collection' and collection.current_vendor == 'Newmor Wallcoverings' or request.page_type == 'collection' and collection.handle == 'newmor-wallcoverings' or request.page_type == 'collection' and collection.handle == 'newmor-wallcovering' %}
+        {% section 'collection' %}
+      {% else %}
+        {% if request.page_type == 'search' %}{% section 'collection' %}{% endif %}
+        {{ content_for_layout }}
+      {% endif %}
+    </div>
+  {%- endunless -%}
+
+  <script>window.__nwApprovedHandles=["arbour-commercial-wallcovering-arbour-arb-002","arbour-commercial-wallcovering-arbour-arb-003","arbour-commercial-wallcovering-arbour-arb-004","arbour-commercial-wallcovering-arbour-arb-005","arbour-commercial-wallcovering-arbour-arb-007","arbour-commercial-wallcovering-arbour-arb-008","arona-commercial-wallcovering-arona-ar-104","arona-commercial-wallcovering-arona-ar-105","arona-commercial-wallcovering-arona-ar-106","arona-commercial-wallcovering-arona-ar-108","arona-commercial-wallcovering-arona-ar-110","arona-commercial-wallcovering-arona-ar-111","arona-commercial-wallcovering-arona-ar-112","arona-commercial-wallcovering-arona-ar-113","arona-commercial-wallcovering-arona-ar-114","bark-commercial-wallcovering-bark-vbk-102","bark-commercial-wallcovering-bark-vbk-103","bark-commercial-wallcovering-bark-vbk-104","bark-commercial-wallcovering-bark-vbk-106","bark-commercial-wallcovering-bark-vbk-107","bark-commercial-wallcovering-bark-vbk-111","bark-commercial-wallcovering-bark-vbk-116","bark-commercial-wallcovering-bark-vbk-117","bark-commercial-wallcovering-bark-vbk-121","brushed-steel-commercial-wallcovering-brushed-steel-bst-002","brushed-steel-commercial-wallcovering-brushed-steel-bst-007","brushed-steel-commercial-wallcovering-brushed-steel-bst-008","brushed-steel-commercial-wallcovering-brushed-steel-bst-012","brushed-steel-commercial-wallcovering-brushed-steel-bst-013","brushed-steel-commercial-wallcovering-brushed-steel-bst-015","brushed-steel-commercial-wallcovering-brushed-steel-bst-016","brushed-steel-commercial-wallcovering-brushed-steel-bst-017","brushed-steel-commercial-wallcovering-brushed-steel-bst-018","brushed-steel-commercial-wallcovering-brushed-steel-bst-019","brushed-steel-commercial-wallcovering-brushed-steel-bst-021","brushed-steel-commercial-wallcovering-brushed-steel-bst-022","brushed-steel-commercial-wallcovering-brushed-steel-bst-023","brushed-steel-commercial-wallcovering-brushed-steel-bst-024","brushed-steel-commercial-wallcovering-brushed-steel-bst-026","brushed-steel-commercial-wallcovering-brushed-steel-bst-027","brushed-steel-commercial-wallcovering-brushed-steel-bst-028","brushed-steel-commercial-wallcovering-brushed-steel-bst-029","brushed-steel-commercial-wallcovering-brushed-steel-bst-030","brushed-steel-commercial-wallcovering-brushed-steel-bst-032","brushed-steel-commercial-wallcovering-brushed-steel-bst-033","cezanne-commercial-wallcovering-cezanne-czn-2019","cezanne-commercial-wallcovering-cezanne-czn-2033","cezanne-commercial-wallcovering-cezanne-czn-2047","cezanne-commercial-wallcovering-cezanne-czn-2048","cezanne-commercial-wallcovering-cezanne-czn-2051","cezanne-commercial-wallcovering-cezanne-czn-2053","cezanne-commercial-wallcovering-cezanne-czn-2059","cezanne-commercial-wallcovering-cezanne-czn-2061","cezanne-commercial-wallcovering-cezanne-czn-2064","cosmos-commercial-wallcovering-cosmos-cos-001","cosmos-commercial-wallcovering-cosmos-cos-003","cosmos-commercial-wallcovering-cosmos-cos-006","cosmos-commercial-wallcovering-cosmos-cos-009","cosmos-commercial-wallcovering-cosmos-cos-015","cosmos-commercial-wallcovering-cosmos-cos-016","cosmos-commercial-wallcovering-cosmos-cos-018","cosmos-commercial-wallcovering-cosmos-cos-019","cosmos-commercial-wallcovering-cosmos-cos-024","harper-commercial-wallcovering-harper-hpr-002","harper-commercial-wallcovering-harper-hpr-008","harper-commercial-wallcovering-harper-hpr-009","harper-commercial-wallcovering-harper-hpr-011","harper-commercial-wallcovering-harper-hpr-014","harper-commercial-wallcovering-harper-hpr-018","harper-commercial-wallcovering-harper-hpr-019","harper-commercial-wallcovering-harper-hpr-020","harper-commercial-wallcovering-harper-hpr-021","kota-silk-commercial-wallcovering-kota-silk-kot-01","kota-silk-commercial-wallcovering-kota-silk-kot-03","kota-silk-commercial-wallcovering-kota-silk-kot-05","kota-silk-commercial-wallcovering-kota-silk-kot-07","kota-silk-commercial-wallcovering-kota-silk-kot-19","kota-silk-commercial-wallcovering-kota-silk-kot-20","kota-silk-commercial-wallcovering-kota-silk-kot-22","kota-silk-commercial-wallcovering-kota-silk-kot-23","kota-silk-commercial-wallcovering-kota-silk-kot-24","quarry-commercial-wallcovering-quarry-qry-001","quarry-commercial-wallcovering-quarry-qry-004","quarry-commercial-wallcovering-quarry-qry-006","quarry-commercial-wallcovering-quarry-qry-008","quarry-commercial-wallcovering-quarry-qry-009","quarry-commercial-wallcovering-quarry-qry-014","quarry-commercial-wallcovering-quarry-qry-017","quarry-commercial-wallcovering-quarry-qry-018","quarry-commercial-wallcovering-quarry-qry-020","rough-concrete-commercial-wallcovering-rough-concrete-rct-001","rough-concrete-commercial-wallcovering-rough-concrete-rct-002","rough-concrete-commercial-wallcovering-rough-concrete-rct-004","rough-concrete-commercial-wallcovering-rough-concrete-rct-005","rough-concrete-commercial-wallcovering-rough-concrete-rct-007","rough-concrete-commercial-wallcovering-rough-concrete-rct-009","rough-concrete-commercial-wallcovering-rough-concrete-rct-014","rough-concrete-commercial-wallcovering-rough-concrete-rct-015","rough-concrete-commercial-wallcovering-rough-concrete-rct-016","shoreline-commercial-wallcovering-shoreline-sho-02","shoreline-commercial-wallcovering-shoreline-sho-03","shoreline-commercial-wallcovering-shoreline-sho-04","shoreline-commercial-wallcovering-shoreline-sho-07","shoreline-commercial-wallcovering-shoreline-sho-09","shoreline-commercial-wallcovering-shoreline-sho-10","shoreline-commercial-wallcovering-shoreline-sho-12","shoreline-commercial-wallcovering-shoreline-sho-17","shoreline-commercial-wallcovering-shoreline-sho-18","sorrento-commercial-wallcovering-sorrento-sor-001","sorrento-commercial-wallcovering-sorrento-sor-006","sorrento-commercial-wallcovering-sorrento-sor-012","sorrento-commercial-wallcovering-sorrento-sor-013","sorrento-commercial-wallcovering-sorrento-sor-014","sorrento-commercial-wallcovering-sorrento-sor-016","sorrento-commercial-wallcovering-sorrento-sor-017","sorrento-commercial-wallcovering-sorrento-sor-018","sorrento-commercial-wallcovering-sorrento-sor-019","tela-ii-commercial-wallcovering-tela-ii-tel-101","tela-ii-commercial-wallcovering-tela-ii-tel-105","tela-ii-commercial-wallcovering-tela-ii-tel-108","tela-ii-commercial-wallcovering-tela-ii-tel-109","tela-ii-commercial-wallcovering-tela-ii-tel-118","tela-ii-commercial-wallcovering-tela-ii-tel-127","tela-ii-commercial-wallcovering-tela-ii-tel-128","toban-commercial-wallcovering-toban-tob-102"];window.__nwApprovedIds=["4351299584051","4351299649587","4351299715123","4351299747891","4351299878963","4351299977267","4351276875827","4351276941363","4351276974131","4351277072435","4351277203507","4351277236275","4351277269043","4351277301811","4351277334579","4351277465651","4351277498419","4351277563955","4351277727795","4351277826099","4351278022707","4351278219315","4351278284851","4351278448691","4351278579763","4351278743603","4351278809139","4351279005747","4351279038515","4351279169587","4351279202355","4351279235123","4351279267891","4351279333427","4351279398963","4351279431731","4351279562803","4351279595571","4351279661107","4351279693875","4351279759411","4351279792179","4351279824947","4351279923251","4351279988787","4351282118707","4351282741299","4351283331123","4351283363891","4351283494963","4351283593267","4351283953715","4351284052019","4351284215859","4351286116403","4351286247475","4351286411315","4351286575155","4351286902835","4351286968371","4351287066675","4351287099443","4351287328819","4351287885875","4351288672307","4351288770611","4351288999987","4351289557043","4351289851955","4351289884723","4351289917491","4351289950259","4351290834995","4351290933299","4351291097139","4351291162675","4351291621427","4351291654195","4351291752499","4351291785267","4351291818035","4351292899379","4351293292595","4351293390899","4351293456435","4351293521971","4351293849651","4351294079027","4351294144563","4351294210099","4351294439475","4351294472243","4351294537779","4351294603315","4351294668851","4351294799923","4351295029299","4351295094835","4351295127603","4351295815731","4351295848499","4351295914035","4351296045107","4351296110643","4351296176179","4351296274483","4351296503859","4351296536627","4351296569395","4351296798771","4351297060915","4351297093683","4351297159219","4351297257523","4351297323059","4351297355827","4351297388595","4351297912883","4351298109491","4351298207795","4351298273331","4351298699315","4351299256371","4351299321907","4351299387443"];
+// Newmor showroom cards retain a direct product link; only samples on the PDP can be purchased.
+(function(){
+ if(window.__nwShowroomCards)return;window.__nwShowroomCards=true;
+ var handles=new Set(window.__nwApprovedHandles||[]),ids=new Set(window.__nwApprovedIds||[]);
+ function isNewmor(card){if(ids.has(card.dataset.productId))return true;var vendor=card.querySelector('[class*="product-vendor"]');if(vendor&&vendor.textContent.trim().toLowerCase()==='newmor wallcoverings')return true;return Array.from(card.querySelectorAll('a[href*="/products/"]')).some(function(a){try{return handles.has(new URL(a.href).pathname.split('/products/')[1])}catch(e){return false}});}
+ function fix(){document.querySelectorAll('.boost-sd__product-item').forEach(function(card){
+  if(!isNewmor(card))return;
+  card.setAttribute('data-nw-showroom-card','true');
+  card.querySelectorAll('.boost-sd__product-price,.boost-sd__format-currency,[class*="compare-price"],[class*="unit-price"]').forEach(function(n){n.remove()});
+  card.querySelectorAll('button,[class*="quick-view"],[class*="quickView"],[class*="quick-add"],[class*="buy-now"]').forEach(function(n){n.remove()});
+  if(!card.querySelector('.nw-boost-inquiry')){var p=document.createElement('p');p.className='nw-boost-inquiry';p.textContent='Showroom inquiry';card.appendChild(p);}
+ });}
+ new MutationObserver(fix).observe(document.documentElement,{childList:true,subtree:true,characterData:true});
+ document.addEventListener('click',function(e){if(e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;var c=e.target.closest&&e.target.closest('.boost-sd__product-item');if(!c||!isNewmor(c))return;var clicked=e.target.closest('a,button,[role="button"]');if(clicked&&clicked.tagName==='A'&&!clicked.getAttribute('href')?.includes('/products/'))return;var a=c.querySelector('a[href*="/products/"]');if(a){e.preventDefault();e.stopImmediatePropagation();location.assign(a.href);}},true);
+ fix();
+})();
+
+</script>
+  <div class="site-overlay" data-site-overlay></div>
+
+  {% sections 'footer-group' %}
+
+  <!-- Scripts -->
+  <!-- Third Party JS Libraries -->
+  <script src="{{ 'modernizr-2.8.2.min.js' | asset_url  }}" defer></script>
+
+  {% if template contains 'cart' %}
+    <script src="{{ '/services/javascripts/countries.js' }}" defer></script>
+    <script src="{{ 'shopify_common.js' | shopify_asset_url }}" defer></script>
+  {% endif %}
+
+  {% if template contains 'customers' %}
+    <script src="{{ 'shopify_common.js' | shopify_asset_url }}" defer></script>
+    <script src="{{ 'customer_area.js' | shopify_asset_url }}" defer></script>
+  {% endif %}
+
+  <script src="{{ 'grid.js' | asset_url }}" defer></script>
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-article begin{% endcomment %}
+  {% comment %}
+    Article structured data
+    https://developers.google.com/search/docs/data-types/articles
+  {% endcomment %}
+  
+  {% if template contains 'article' %}
+    {%- capture article_description  -%}
+      {%- if article.excerpt != blank -%}
+        {{ article.excerpt | strip_html }}
+      {%- else -%}
+        {{ article.content | truncatewords: 100 | strip_html }}
+      {%- endif -%}
+    {%- endcapture -%}
+  
+    <script type="application/ld+json">
+      {
+        "@context": "http://schema.org",
+        "@type": "BlogPosting",
+        "mainEntityOfPage": {
+          "@type": "WebPage",
+          "@id": "{{ shop.url }}{{ article.url }}"
+        },
+        "headline": {{ article.title | json }},
+        {% if article.image %}
+          "image": {
+            "@type": "ImageObject",
+            "url": {{ article.image | img_url: '800x800' | prepend: 'https:' | json }},
+            "height": 800,
+            "width": 800
+          },
+        {% endif %}
+        "datePublished": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' | json}},
+        "dateModified": {{ article.published_at | date: '%Y-%m-%dT%H:%M:%S%z' | json}},
+        "author": {
+          "@type": "Person",
+          "name": {{ article.author | json }}
+        },
+        "publisher": {
+          "@type": "Organization",
+          "name": {{ shop.name | json }},
+          "logo": {
+            "@type": "ImageObject",
+            "url": {{ article.user.image | img_url: '200x200' | prepend: 'https:' | json }}
+          }
+        },
+        "description": {{ article_description | json }}
+      }
+    </script>
+  {% endif %}
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-article end{% endcomment %}
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-breadcrumbs begin{% endcomment %}
+  {% comment %}
+    Breadcrumbs
+    https://developers.google.com/search/docs/data-types/breadcrumbs
+  {% endcomment %}
+  
+  {%- if current_tags -%}
+    {%- assign tag_names = current_tags | join: ', ' %}
+    {% comment %}Converting an array to a handle converts it to a string{% endcomment %}
+    {%- capture tag_handles -%}
+      {%- for tag in current_tags -%}
+        {{- tag | handle | append: '|' -}}
+      {%- endfor -%}
+    {%- endcapture -%}
+  {%- endif -%}
+  
+  {% if collection.url == blank %}
+    {% assign collection_url = '/collections/all' %}
+  {% else %}
+    {% assign collection_url = collection.url %}
+  {% endif %}
+  
+  {% if template.name == 'product'
+      or template.name == 'list-collections'
+      or template.name == 'collection'
+      or template.name == 'blog'
+      or template.name == 'article'
+      or template.name == 'search'
+      or template.name == 'cart'
+      or template.name == 'page'
+  %}
+  
+    <script type="application/ld+json">
+      {
+        "@context": "http://schema.org",
+        "@type": "BreadcrumbList",
+        "itemListElement": [
+        {% case template.name %}
+          {% when 'product' %}
+            {% if product.collections.size >= 1 %}
+              {
+                "@type": "ListItem",
+                "position": 1,
+                "item": {
+                  "@id": "{{ shop.url }}/collections",
+                  "name": {{ 'structured_data.breadcrumbs.collections' | t | json }}
+                }
+              },
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}/collections/{{ product.collections.first.handle }}",
+                  "name": {{ product.collections.first.title | json }}
+                }
+              },
+            {% else %}
+              {
+                "@type": "ListItem",
+                "position": 1,
+                "item": {
+                  "@id": "{{ shop.url }}/products",
+                  "name": {{ 'structured_data.breadcrumbs.products' | t | json }}
+                }
+              },
+            {% endif %}
+            {
+              "@type": "ListItem",
+              "position": {% if product.collections.size >= 1 %}3{% else %}2{% endif %},
+              "item": {
+                "@id": "{{ shop.url }}{{ product.url | within: collection }}",
+                "name": {{ product.title | json }}
+              }
+            }
+          {% when 'list-collections' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/collections",
+                "name": {{ 'structured_data.breadcrumbs.collections' | t | json }}
+              }
+            }
+            {% if current_page != 1 %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}/collections",
+                  "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                }
+              }
+            {% endif %}
+          {% when 'collection' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/collections",
+                "name": {{ 'structured_data.breadcrumbs.collections' | t | json }}
+              }
+            },
+            {
+              "@type": "ListItem",
+              "position": 2,
+              "item": {
+                "@id": "{{ shop.url }}{{ collection_url }}",
+                "name": {{ collection.title | json }}
+              }
+            }
+            {% if current_tags %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 3,
+                "item": {
+                  "@id": "{{ shop.url }}{{ collection_url }}/{{- tag_handles | split: '|' | join: '+' -}}",
+                  "name": {{ 'structured_data.breadcrumbs.tags_html' | t: tags: tag_names | json }}
+                }
+              }
+            {% endif %}
+            {% if current_page != 1 %}
+              {% if current_tags %}
+                {% assign position = 4 %}
+              {% else %}
+                {% assign position = 3 %}
+              {% endif %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": {{ position }},
+                "item": {
+                  "@id": "{{ shop.url }}/collections?page={{ current_page }}",
+                  "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                }
+              }
+            {% endif %}
+          {% when 'blog' or 'article' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}{{ blog.url }}",
+                "name": {{ blog.title | json }}
+              }
+            }
+            {% if template.name == 'article' %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}{{ article.url }}",
+                  "name": {{ article.title | json }}
+                }
+              }
+            {% elsif current_tags %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}{{ blog.url }}/tagged/{{- tag_handles | split: '|' | join: '+' -}}",
+                  "name": {{ 'structured_data.breadcrumbs.tags_html' | t: tags: tag_names | json }}
+                }
+              }
+            {% endif %}
+            {% if current_page != 1 %}
+              {% if current_tags %}
+                {% assign position = 3 %}
+                {%- capture url -%}
+                  {{ shop.url }}{{ blog.url }}/tagged/{{ tag_handles | split: '|' | join: '+' }}?page={{ current_page }}
+                {%- endcapture -%}
+              {% else %}
+                {% assign position = 2 %}
+                  {%- capture url -%}
+                  {{ shop.url }}{{ blog.url }}?page={{ current_page }}
+                {%- endcapture -%}
+              {% endif %}
+              ,
+              {
+                "@type": "ListItem",
+                "position": {{ position }},
+                "item": {
+                  "@id": "{{ url }}",
+                  "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                }
+              }
+            {% endif %}
+          {% when 'search' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/search",
+                "name": {{ 'structured_data.breadcrumbs.search' | t | json }}
+              }
+            }
+            {% if search.performed %}
+            ,
+              {
+                "@type": "ListItem",
+                "position": 2,
+                "item": {
+                  "@id": "{{ shop.url }}/search?q={{ search.terms }}",
+                  "name": {{ search.terms | json }}
+                }
+              }
+              {% if current_page != 1 %}
+              ,
+                {
+                  "@type": "ListItem",
+                  "position": 3,
+                  "item": {
+                    "@id": "{{ shop.url }}/search?page={{ current_page }}&q={{ search.terms }}",
+                    "name": {{ 'structured_data.breadcrumbs.page' | t: page: current_page | json }}
+                  }
+                }
+              {% endif %}
+            {% endif %}
+          {% when 'cart' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ shop.url }}/cart",
+                "name": {{ 'structured_data.breadcrumbs.cart' | t | json }}
+              }
+            }
+          {% when 'page' %}
+            {
+              "@type": "ListItem",
+              "position": 1,
+              "item": {
+                "@id": "{{ page.url }}",
+                "name": {{ page.title | json }}
+              }
+            }
+          {% else %}
+          {% endcase %}
+        ]
+      }
+    </script>
+  {% endif %}
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-breadcrumbs end{% endcomment %}
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-product begin{% endcomment %}
+  {% comment %}
+    Product structured data
+    https://developers.google.com/search/docs/data-types/products
+  {% endcomment %}
+  
+  {% if template contains 'product' %}
+    {%- liquid
+      # TK-11404: never let the default JSON-LD offer describe the $4.25 Sample.
+      # If the resolved default variant is sample-like, re-point to the first non-sample variant.
+      assign selected_variant = product.selected_or_first_available_variant | default: product.variants.first
+      assign _sv_sku = selected_variant.sku | default: '' | downcase
+      assign _sv_suffix = _sv_sku | slice: -7, 7
+      assign _sv_title = selected_variant.title | default: '' | downcase
+      assign _sv_is_sample = false
+      if _sv_sku != blank and _sv_suffix == '-sample'
+        assign _sv_is_sample = true
+      elsif _sv_title contains 'sample' and selected_variant.price == 0
+        assign _sv_is_sample = true
+      endif
+      if _sv_is_sample
+        for _v in product.variants
+          assign _v_sku = _v.sku | default: '' | downcase
+          assign _v_suffix = _v_sku | slice: -7, 7
+          assign _v_title = _v.title | default: '' | downcase
+          assign _v_is_sample = false
+          if _v_sku != blank and _v_suffix == '-sample'
+            assign _v_is_sample = true
+          elsif _v_title contains 'sample' and _v.price == 0
+            assign _v_is_sample = true
+          endif
+          unless _v_is_sample
+            assign selected_variant = _v
+            break
+          endunless
+        endfor
+      endif
+    -%}
+    {% assign product_image = selected_variant.featured_image | default: product.featured_image %}
+    {%- capture product_name -%}
+      {{ product.title }}
+      {%- if selected_variant.title != 'Default Title' and selected_variant.option1 == 'Default Title' -%}
+        - {{ selected_variant.title }}
+      {%- endif -%}
+    {%- endcapture -%}
+  
+    {%- assign now = 'now' | date: '%Y-%m-%d' | split: '-' -%}
+    {% capture year_from_now %}{{ now[0] | plus: 1 }}-{{ now[1] }}-{{ now[2] | at_most: 28 }}{% endcapture %}
+  
+    <script type="application/ld+json">
+    {
+      "@context": "http://schema.org/",
+      "@type": "Product",
+      "name": {{ product_name | strip_newlines | json }},
+      "image": {{ product_image | img_url: '1024x1024' | prepend: 'https:' | json }},
+      {% if product.description != blank %}
+        "description": {{ product.description | json }},
+      {% endif %}
+      {% if product.vendor %}
+        "brand": {
+          "@type": "Thing",
+          "name": {{ product.vendor | json }}
+        },
+      {% endif %}
+      {% if selected_variant.sku != blank %}
+        "sku": {{ selected_variant.sku | json }},
+      {% endif %}
+      {% if selected_variant.barcode != blank %}
+        "mpn": {{ selected_variant.barcode | json }},
+      {% endif %}
+      {% comment %} TK-11925: contact-us products (Designers Guild / Ralph Lauren / Christian Lacroix) publish NO Offer/price in structured data, same carve-out as Newmor. {% endcomment %}
+      {% if product.vendor == 'Newmor Wallcoverings' or product.template_suffix == 'contact-us' %}
+      "url": {{ canonical_url | json }}
+      {% else %}
+      "offers": {
+        "@type": "Offer",
+        "priceCurrency": {{ cart.currency.iso_code | json }},
+        "price": {{ selected_variant.price | divided_by: 100.0 | json }},
+        "availability": "http://schema.org/{% if selected_variant.available %}InStock{% else %}OutOfStock{% endif %}",
+        "url": "{{ shop.url }}{{ selected_variant.url }}",
+        "seller": {
+          "@type": "Organization",
+          "name": {{ shop.name | json }}
+        },
+        "priceValidUntil": {{ year_from_now | json }}
+      }
+      {% endif %}
+    }
+    </script>
+  {% endif %}
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-product end{% endcomment %}
+
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-website begin{% endcomment %}
+  {% comment %}
+    Store information
+    https://developers.google.com/search/docs/data-types/sitename
+  {% endcomment %}
+  
+  <script type="application/ld+json">
+    {
+      "@context": "http://schema.org",
+      "@type": "WebSite",
+      "name": "{{ shop.name }}",
+      "url": "{{ shop.url }}"
+    }
+  </script>
+  {% comment %}Inject @pixelunion/shopify-structured-data/structured-data-website end{% endcomment %}
+
+  <form id="checkout_form" action="{{ routes.cart_url }}" method="POST" style="display: none;"></form>
+
+  <script>
+    (function () {
+      function handleFirstTab(e) {
+        if (e.keyCode === 9) { // the "I am a keyboard user" key
+          document.body.classList.add('user-is-tabbing');
+          window.removeEventListener('keydown', handleFirstTab);
+        }
+      }
+      window.addEventListener('keydown', handleFirstTab);
+    })();
+  </script>
+  <script>(function(n, v) {/* eslint-disable-next-line max-len */if (window.Shopify && window.Shopify.theme && navigator && navigator.sendBeacon && window.Shopify.designMode) {if (sessionStorage.getItem('oots_beacon')) return;navigator.sendBeacon('https://app.outofthesandbox.com/beacon', new URLSearchParams({shop_domain: window.Shopify.shop.toLowerCase(),shop_id: '{{ shop.id }}',shop_email: '{{ shop.email }}',theme_name: n.toLowerCase(),theme_version: v.toLowerCase(),theme_store_id: window.Shopify.theme.theme_store_id,theme_id: window.Shopify.theme.id,theme_role: window.Shopify.theme.role,}));sessionStorage.setItem('oots_beacon', '');}}('grid','7.1.0'))</script>
+
+<!--Start of Zendesk Chat Script-->
+<script async>
+window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
+d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
+_.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");
+$.src="https://v2.zopim.com/?RH5Yjru86SIJRwOxfiMAf2DTCgdROhhf";z.t=+new Date;$.
+type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
+</script>
+<!--End of Zendesk Chat Script-->
+<!-- Statcounter code for DW - Started 3/5/19
+http://DesignerWallcoverings.com on Shopify -->
+<script type="text/javascript">
+var sc_project=11961678; 
+var sc_invisible=1; 
+var sc_security="9d9a53bd"; 
+var sc_https=1; 
+</script>
+<script type="text/javascript"
+src="https://www.statcounter.com/counter/counter.js"
+async></script>
+<noscript><div class="statcounter"><a title="web statistics"
+href="https://statcounter.com/" target="_blank"><img
+class="statcounter"
+src="https://c.statcounter.com/11961678/0/9d9a53bd/1/"
+alt="web statistics"></a></div></noscript>
+<!-- End of Statcounter Code -->
+
+{% render 'hide-browse-hidden' %}
+
+<!-- DW: price restore band-aid removed 2026-06-11 — root cause (blank saw_variant_price) fixed in product-form-content.liquid; no price-hiding CSS exists. -->
+{%- comment -%} DW Shop-by-Color wheel {%- endcomment -%}
+<script>window.DW_CW_DATA="{{ 'dw-color-wheel-data.json' | asset_url }}";</script>
+<script src="{{ 'dw-color-wheel.js' | asset_url }}" defer></script>
+{%- comment -%} DW Phillip-Jeffries browse hide (stopgap) {%- endcomment -%}
+<script src="{{ 'dw-pj-hide.js' | asset_url }}" defer></script>
+{%- comment -%} DW card hover label: Pattern, Color + Vendor on hover (2026-06-22) {%- endcomment -%}
+<script src="{{ 'dw-card-hover.js' | asset_url }}" defer></script>
+
+<!-- DW min-qty start -->
+{% if template contains 'product' %}
+<script>
+(function () {
+  function minFromText(s) {
+    if (/sample/i.test(s)) return 1;                 // a sample is always a single unit
+    var m = String(s || '').match(/(\d+)\s*yd\s*min/i);
+    return m ? parseInt(m[1], 10) : null;
+  }
+  function qtyInput() {
+    return document.querySelector('.mm_quantity .input-text.qty, .mm_quantity input.qty, .input-text.qty');
+  }
+  // the Size selector = the single-option-selector whose selected label encodes a "yd min"
+  function sizeText() {
+    var sels = document.querySelectorAll('select.single-option-selector, select[name^="options"]');
+    for (var i = 0; i < sels.length; i++) {
+      var s = sels[i];
+      if (s.selectedIndex < 0 || !s.options[s.selectedIndex]) continue;
+      var t = s.options[s.selectedIndex].textContent;
+      if (/yd\s*min|wallcovering|sold\s*per\s*yard|sample/i.test(t)) return t;
+    }
+    return '';
+  }
+  function currentMin() { return minFromText(sizeText()) || 1; }
+
+  function clampUp(qi) {
+    if (qi && qi.getAttribute && qi.getAttribute('data-order-min')) return; // yield: custom.js data-order-* stepper owns MOQ qty
+    var min = parseInt(qi.getAttribute('min'), 10) || 1;
+    var v = parseInt(qi.value, 10);
+    if (isNaN(v) || v < min) { if (String(qi.value) !== String(min)) qi.value = min; }
+  }
+  function applyMin(forceValue) {
+    var qi = qtyInput();
+    if (!qi) return;
+    if (qi.getAttribute('data-order-min')) return; // yield: custom.js data-order-* stepper owns MOQ qty
+    var min = currentMin();
+    if (String(qi.getAttribute('min')) !== String(min)) qi.setAttribute('min', min);
+    if (qi.getAttribute('step') !== '1') qi.setAttribute('step', 1);  // floor only; +1 increments above it
+    var cur = parseInt(qi.value, 10);
+    if (forceValue || isNaN(cur) || cur < min) {
+      if (String(qi.value) !== String(min)) { qi.value = min; qi.dispatchEvent(new Event('change', { bubbles: true })); }
+    } else { clampUp(qi); }
+  }
+
+  function wire() {
+    var qi = qtyInput();
+    if (qi && !qi.__minClamp) {
+      qi.__minClamp = true;
+      ['input', 'change', 'blur', 'keyup'].forEach(function (ev) { qi.addEventListener(ev, function () { clampUp(qi); }); });
+    }
+    // re-clamp after the ± buttons act
+    document.querySelectorAll('.mm_quantity .minus, .mm_quantity .plus').forEach(function (b) {
+      if (b.__minClamp) return; b.__minClamp = true;
+      b.addEventListener('click', function () { setTimeout(function () { clampUp(qtyInput() || {}); }, 20); });
+    });
+    // variant pickers -> jump to the new floor
+    document.querySelectorAll('select.single-option-selector, select[name^="options"], input[type="radio"][name*="ption"]').forEach(function (el) {
+      if (el.__minWired) return; el.__minWired = true;
+      el.addEventListener('change', function () { setTimeout(function () { applyMin(true); }, 40); });
+    });
+    applyMin(true);
+  }
+
+  function start() {
+    wire();
+    // the theme resets qty to 1 at ~1000ms — re-apply after that so the floor wins
+    [1100, 1600, 2500].forEach(function (t) { setTimeout(function () { applyMin(true); }, t); });
+    // the theme REBUILDS the qty widget on variant change (resetting min to 1); a light
+    // recurring re-assert keeps the floor correct without disrupting values at/above it
+    setInterval(function () { wire(); applyMin(false); }, 400);
+  }
+  if (document.readyState !== 'loading') start();
+  else document.addEventListener('DOMContentLoaded', start);
+  // re-wire if the form re-renders (debounced; keeps min synced, never forces value)
+  var d;
+  new MutationObserver(function () { clearTimeout(d); d = setTimeout(function () { wire(); applyMin(false); }, 150); })
+    .observe(document.documentElement, { subtree: true, childList: true });
+})();
+</script>
+{% endif %}
+<!-- DW min-qty end -->
+{% unless customer.tags contains 'trade' %}{% render 'dw-signin-modal' %}{% endunless %}
+{% comment %} Steve 2026-07-28: hover any product chip → show its SKU + product type (site-wide) {% endcomment %}
+{% render 'dw-hover-meta' %}
+{% render 'dw-tile-image-fix', ph: page.handle %}
+</body>
+</html>
diff --git a/theme/snippets/dw-contact-us-block.liquid b/theme/snippets/dw-contact-us-block.liquid
index bc67fdf..51a5ce6 100644
--- a/theme/snippets/dw-contact-us-block.liquid
+++ b/theme/snippets/dw-contact-us-block.liquid
@@ -22,7 +22,7 @@
   Render with:  {% render 'dw-contact-us-block', product: product %}
 {%- endcomment -%}
 
-{%- if template.suffix == 'contact-us' -%}
+{%- if product.template_suffix == 'contact-us' -%}
 {%- liquid
   assign dw_cu_sku = ''
   for v in product.variants
@@ -224,7 +224,36 @@
   body.template-suffix-contact-us .shopify-payment-button,
   body.template-suffix-contact-us .product-form__buy-buttons,
   body.template-suffix-contact-us .quick-shop-modal-trigger,
-  body.template-suffix-contact-us .product-details .money{display:none!important}
+  body.template-suffix-contact-us .product-details .money,
+  body.template-suffix-contact-us .min-order-notice,
+  body.template-suffix-contact-us [data-min-order-notice],
+  body.template-suffix-contact-us .product-option-quantity-label,
+  body.template-suffix-contact-us .dw-sample-cta,
+  body.template-suffix-contact-us [data-sample-add],
+  .dw-contact-us-product .product__price,
+  .dw-contact-us-product .product__form,
+  .dw-contact-us-product .product-price,
+  .dw-contact-us-product .product-price__unit-price,
+  .dw-contact-us-product [data-product-form] .product__form,
+  .dw-contact-us-product [data-product-form] .product__price,
+  .dw-contact-us-product .cfp-section,
+  .dw-contact-us-product .dw-quote-section,
+  .dw-contact-us-product .dw-sample-banner,
+  .dw-contact-us-product .add-to-cart,
+  .dw-contact-us-product .dl-sample-btn,
+  .dw-contact-us-product .dl-second-sample-btn,
+  .dw-contact-us-product .product-options,
+  .dw-contact-us-product .mm_quantity,
+  .dw-contact-us-product .shopify-payment-button,
+  .dw-contact-us-product .product-form__buy-buttons,
+  .dw-contact-us-product .quick-shop-modal-trigger,
+  .dw-contact-us-product .product-details .money,
+  .dw-contact-us-product .min-order-notice,
+  .dw-contact-us-product [data-min-order-notice],
+  .dw-contact-us-product .product-option-quantity-label,
+  .dw-contact-us-product .dw-sample-cta,
+  .dw-contact-us-product [data-sample-add]{display:none!important}
+  /* TK-11925 review: .dw-contact-us-product covers the quick-shop modal + any non-PDP context; min-order notice lives outside the block loop. */
 </style>
 
 <script>
diff --git a/theme/snippets/product.liquid b/theme/snippets/product.liquid
index 9d5d182..0df9c53 100644
--- a/theme/snippets/product.liquid
+++ b/theme/snippets/product.liquid
@@ -41,6 +41,7 @@
 <div
   class="
     product
+    {% if product.template_suffix == 'contact-us' %}dw-contact-us-product{% endif %}
     {% if images_layout == 'masonry' %}
       product-masonry
     {% endif %}
@@ -77,7 +78,7 @@
     image column for products on templates/product.contact-us.json (Designers Guild, Ralph
     Lauren, Christian Lacroix Europe). The snippet self-gates on template.suffix too, so this
     is a no-op on every other product. Purely additive. {%- endcomment -%}
-  {% if template.suffix == 'contact-us' %}{% render 'dw-contact-us-block', product: product %}{% endif %}
+  {% if product.template_suffix == 'contact-us' %}{% render 'dw-contact-us-block', product: product %}{% endif %}
 
   <div class="product-details-wrapper">
     <div class="product-details">

← 942c738 harden-variants: append per-variant preimage ledger BEFORE t  ·  back to Dw Contact Us Pages  ·  harden-variants --limit N canary flag; README review-driven b8b6045 →