← back to Glitterwalls
lock storefront scope to GLS/GLM SKU series + sequin/glitter only (143 products from full DW catalog)
5ffb6b32be0f79836da706d42080a75bb6f24689 · 2026-05-08 08:14:09 -0700 · Steve Abrams
Files touched
M data/products.jsonA public/index.html.bak.dwfoot.1778203445660A public/index.html.bak.nspropagate.1778203385086A public/index.html.bak.nspropagate.1778209715036A public/index.html.bak.nspropagate.1778226815138A public/index.html.bak.nspropagate.1778226888790M server.js
Diff
commit 5ffb6b32be0f79836da706d42080a75bb6f24689
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri May 8 08:14:09 2026 -0700
lock storefront scope to GLS/GLM SKU series + sequin/glitter only (143 products from full DW catalog)
---
data/products.json | 6149 +++++++++++++----------
public/index.html.bak.dwfoot.1778203445660 | 969 ++++
public/index.html.bak.nspropagate.1778203385086 | 954 ++++
public/index.html.bak.nspropagate.1778209715036 | 969 ++++
public/index.html.bak.nspropagate.1778226815138 | 971 ++++
public/index.html.bak.nspropagate.1778226888790 | 973 ++++
server.js | 25 +-
7 files changed, 8487 insertions(+), 2523 deletions(-)
diff --git a/data/products.json b/data/products.json
index a6d38a5..5b4f10c 100644
--- a/data/products.json
+++ b/data/products.json
@@ -1,76 +1,150 @@
[
{
- "sku": "le-embossed-faux-grasscloth-xgr-6205",
- "handle": "le-embossed-faux-grasscloth-xgr-6205",
- "title": "Le Embossed Faux Grasscloth | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "DWVS-650095-Sample",
+ "handle": "versace-plain-glitter-gold-cream-wallcovering-versace",
+ "title": "Versace Plain Glitter Gold, Cream Wallcovering | Versace",
+ "vendor": "Versace",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xgr-6205-sample-le-embossed-faux-grasscloth-hollywood-wallcoverings.jpg?v=1775721644",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/c0f71a29af59bb8980ec7de9eb316446.jpg?v=1773706480",
"tags": [
- "Amber",
- "Apricot",
+ "A.S. Création",
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Bedroom",
"Beige",
- "Blonde",
- "Brass",
- "Bronze",
- "Butterscotch",
- "Chestnut",
- "Commercially Cleanable",
- "Embossed",
- "Embossed Texture",
- "Faux Finish",
- "Faux Grasscloth",
+ "Black",
+ "Brown",
+ "Class A Fire Rated",
+ "Color: Gold",
+ "Commercial",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "Cream Wallcovering",
+ "display_variant",
"Gold",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Honey",
- "Le Embossed Faux Grasscloth",
- "Metallic",
- "Natural",
- "Natural Texture",
- "Ochre",
- "Saffron",
- "Tan",
+ "Gray",
+ "Italian",
+ "Living Room",
+ "Luxury",
+ "Mustard Yellow",
+ "Office",
+ "Paper",
+ "Paste the wall",
+ "Solid",
"Textured",
- "Umber",
+ "Trending Wallcovering Collection 2026",
+ "Trending Wallpaper Collection 2026",
+ "Versace",
+ "Versace Home",
+ "Versace Plain Glitter",
+ "Versace Plain Glitter Gold",
+ "Versace VI",
"Wallcovering",
- "Wheat"
+ "Walnut Brown",
+ "Warm",
+ "White",
+ "Yellow"
],
- "max_price": 51.15,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/le-embossed-faux-grasscloth-xgr-6205"
+ "max_price": 289.59,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/versace-plain-glitter-gold-cream-wallcovering-versace"
},
{
- "sku": "faux-wild-rice-fwr-9373",
- "handle": "faux-wild-rice-fwr-9373",
- "title": "Faux Wild Rice | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "DWVS-650096-Sample",
+ "handle": "versace-plain-glitter-pink-grey-purple-wallcovering-versace-1",
+ "title": "Versace Plain Glitter Pink, Grey, Purple Wallcovering | Versace",
+ "vendor": "Versace",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/fwr-9373-sample-faux-wild-rice-hollywood-wallcoverings.jpg?v=1775712096",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/bb31e09fd4fd5636eec6c322680a66d0_e4b0926a-6f4e-48a9-926d-9c88bd3b2035.jpg?v=1773706485",
"tags": [
- "Abstract",
+ "A.S. Création",
+ "AI-Analyzed-v2",
"Architectural",
+ "Bedroom",
+ "Beige",
"Black",
+ "Brown",
+ "Class A Fire Rated",
+ "Color: Brown",
+ "Commercial",
+ "Commercial Wallcovering",
+ "display_variant",
+ "Gray",
+ "Italian",
+ "Living Room",
+ "Luxury",
+ "Office",
+ "Paper",
+ "Purple Wallcovering",
+ "Serene",
+ "Solid",
+ "Tan",
+ "Textured",
+ "Transitional",
+ "Trending Wallcovering Collection 2026",
+ "Trending Wallpaper Collection 2026",
+ "Versace",
+ "Versace Home",
+ "Versace Plain Glitter",
+ "Versace Plain Glitter Pink",
+ "Versace VI",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 289.59,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/versace-plain-glitter-pink-grey-purple-wallcovering-versace-1"
+ },
+ {
+ "sku": "DWVS-650093-Sample",
+ "handle": "versace-plain-glitter-white-cream-wallcovering-versace",
+ "title": "Versace Plain Glitter White, Cream Wallcovering | Versace",
+ "vendor": "Versace",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/f9027002e0b50bc987e02ec3dbe8beed.jpg?v=1773706477",
+ "tags": [
+ "A.S. Création",
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Bedroom",
+ "Beige",
+ "Brown",
+ "Class A Fire Rated",
+ "Color: Beige",
"Commercial",
- "Commercial - Cleanable",
+ "Commercial Wallcovering",
"Contemporary",
- "Elegant Vinyls Vol. 1",
- "Faux Finish",
- "Gold",
- "Grasscloth",
- "Hollywood Wallcoverings",
- "Metallic",
+ "Cream",
+ "Cream Wallcovering",
+ "display_variant",
+ "Italian",
+ "Light Beige",
+ "Light Brown",
+ "Living Room",
+ "Luxury",
+ "Off-white",
+ "Office",
+ "Organic Modern",
+ "Paper",
+ "Serene",
+ "Solid",
"Textured",
+ "Trending Wallcovering Collection 2026",
+ "Trending Wallpaper Collection 2026",
+ "Versace",
+ "Versace Home",
+ "Versace Plain Glitter",
+ "Versace Plain Glitter White",
+ "Versace VI",
"Wallcovering",
- "Yellow"
+ "Walnut"
],
- "max_price": 36.73,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/faux-wild-rice-fwr-9373"
+ "max_price": 289.59,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/versace-plain-glitter-white-cream-wallcovering-versace"
},
{
- "sku": "amity-champagne-bleeding-heart-texture-wallpaper-cca-83285",
+ "sku": "DWJS-90605-Sample",
"handle": "amity-champagne-bleeding-heart-texture-wallpaper-cca-83285",
"title": "Amity Champagne Bleeding Heart Texture Wallcovering",
"vendor": "LA Walls",
@@ -102,11 +176,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 72.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/amity-champagne-bleeding-heart-texture-wallpaper-cca-83285"
},
{
- "sku": "aubrey-brown-crystal-texture-wallpaper-cca-83281",
+ "sku": "DWJS-90601-Sample",
"handle": "aubrey-brown-crystal-texture-wallpaper-cca-83281",
"title": "Aubrey Brown Crystal Texture Wallcovering",
"vendor": "LA Walls",
@@ -136,11 +210,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 72.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/aubrey-brown-crystal-texture-wallpaper-cca-83281"
},
{
- "sku": "aubrey-butter-crystal-texture-wallpaper-cca-83280",
+ "sku": "DWJS-90600-Sample",
"handle": "aubrey-butter-crystal-texture-wallpaper-cca-83280",
"title": "Aubrey Butter Crystal Texture Wallcovering",
"vendor": "LA Walls",
@@ -169,11 +243,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 72.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/aubrey-butter-crystal-texture-wallpaper-cca-83280"
},
{
- "sku": "asha-sand-lotus-texture-wallpaper-cca-83278",
+ "sku": "DWJS-90598-Sample",
"handle": "asha-sand-lotus-texture-wallpaper-cca-83278",
"title": "Asha Sand Lotus Texture Wallcovering",
"vendor": "LA Walls",
@@ -201,11 +275,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/asha-sand-lotus-texture-wallpaper-cca-83278"
},
{
- "sku": "asha-aquamarine-lotus-texture-wallpaper-cca-83277",
+ "sku": "DWJS-90597-Sample",
"handle": "asha-aquamarine-lotus-texture-wallpaper-cca-83277",
"title": "Asha Aquamarine Lotus Texture Wallcovering",
"vendor": "LA Walls",
@@ -233,11 +307,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/asha-aquamarine-lotus-texture-wallpaper-cca-83277"
},
{
- "sku": "asha-gold-lotus-texture-wallpaper-cca-83276",
+ "sku": "DWJS-90596-Sample",
"handle": "asha-gold-lotus-texture-wallpaper-cca-83276",
"title": "Asha Gold Lotus Texture Wallcovering",
"vendor": "LA Walls",
@@ -265,11 +339,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/asha-gold-lotus-texture-wallpaper-cca-83276"
},
{
- "sku": "asha-gilver-lotus-texture-wallpaper-cca-83275",
+ "sku": "DWJS-90595-Sample",
"handle": "asha-gilver-lotus-texture-wallpaper-cca-83275",
"title": "Asha Gilver Lotus Texture Wallcovering",
"vendor": "LA Walls",
@@ -297,11 +371,103 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/asha-gilver-lotus-texture-wallpaper-cca-83275"
},
{
- "sku": "delilah-champagne-tulip-damask-wallpaper-cca-83242",
+ "sku": "DWHD-502551-Sample",
+ "handle": "back-bay-glitterati-hollywood-wallcoverings",
+ "title": "Back Bay Glitterati | Hollywood Wallcoverings",
+ "vendor": "Hollywood Wallcoverings",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/fractal-glitterati.jpg?v=1775751797",
+ "tags": [
+ "100% Vinyl",
+ "Beige",
+ "Brown",
+ "contemporary",
+ "geometric",
+ "Gold",
+ "Hollywood Wallcoverings",
+ "New Arrival",
+ "textured",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 69.37,
+ "aesthetic": "gold",
+ "product_url": "https://designerwallcoverings.com/products/back-bay-glitterati-hollywood-wallcoverings"
+ },
+ {
+ "sku": "DWPX-500050-Sample",
+ "handle": "notte-stellata-black-wallcovering-phillipe-romano",
+ "title": "Notte Stellata - Black Wallcovering | Phillipe Romano",
+ "vendor": "Phillipe Romano",
+ "product_type": "Metallic Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/MI611_MI611_MI611.jpg?v=1775512450",
+ "tags": [
+ "36 Inch Width",
+ "Black",
+ "Class A",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "Fire Rated",
+ "Glamorous",
+ "Glitter",
+ "Glitter Vinyl",
+ "Luxe",
+ "Luxury",
+ "Metallic",
+ "Modern",
+ "Notte Stellata",
+ "Phillipe Romano",
+ "Phillipe Romano Metallic",
+ "Solid",
+ "Textural",
+ "Textured",
+ "Trending Wallcovering Collection 2026",
+ "Wallcovering"
+ ],
+ "max_price": 94.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/notte-stellata-black-wallcovering-phillipe-romano"
+ },
+ {
+ "sku": "DWPX-500049-Sample",
+ "handle": "perla-bianca-white-wallcovering-phillipe-romano",
+ "title": "Perla Bianca - White Wallcovering | Phillipe Romano",
+ "vendor": "Phillipe Romano",
+ "product_type": "Metallic Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/MI610_MI610_MI610.jpg?v=1775512450",
+ "tags": [
+ "36 Inch Width",
+ "Class A",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "Fire Rated",
+ "Foil",
+ "Glam",
+ "Glitter",
+ "Luxe",
+ "Luxury",
+ "Metallic",
+ "Metallic Foil",
+ "Modern",
+ "Perla Bianca",
+ "Phillipe Romano",
+ "Phillipe Romano Metallic",
+ "Solid",
+ "Textural",
+ "Trending Wallcovering Collection 2026",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/perla-bianca-white-wallcovering-phillipe-romano"
+ },
+ {
+ "sku": "DWJS-90562-Sample",
"handle": "delilah-champagne-tulip-damask-wallpaper-cca-83242",
"title": "Delilah Champagne Tulip Damask Wallcovering",
"vendor": "LA Walls",
@@ -333,11 +499,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/delilah-champagne-tulip-damask-wallpaper-cca-83242"
},
{
- "sku": "asha-sand-lotus-damask-wallpaper-cca-83236",
+ "sku": "DWJS-90556-Sample",
"handle": "asha-sand-lotus-damask-wallpaper-cca-83236",
"title": "Asha Sand Lotus Damask Wallcovering",
"vendor": "LA Walls",
@@ -366,11 +532,11 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/asha-sand-lotus-damask-wallpaper-cca-83236"
},
{
- "sku": "asha-aquamarine-lotus-damask-wallpaper-cca-83235",
+ "sku": "DWJS-90555-Sample",
"handle": "asha-aquamarine-lotus-damask-wallpaper-cca-83235",
"title": "Asha Aquamarine Lotus Damask Wallcovering",
"vendor": "LA Walls",
@@ -400,278 +566,273 @@
"YB-Discontinued-2026-04"
],
"max_price": 75.49,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/asha-aquamarine-lotus-damask-wallpaper-cca-83235"
},
{
- "sku": "wells-sand-candy-stripe-wallpaper-cca-83229",
- "handle": "wells-sand-candy-stripe-wallpaper-cca-83229",
- "title": "Wells Sand Candy Stripe Wallcovering",
- "vendor": "LA Walls",
+ "sku": "DWSA-303601-25",
+ "handle": "dwsa-303601-1",
+ "title": "Helene Houndstooth Pink Glitter Contemporary | Architectural Wallcoverings",
+ "vendor": "DW Bespoke Studio",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/1396ca09641c9d6118bac50a4d9805b3.jpg?v=1572309981",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/6280840-houndstooth-check-black-pink-glitter-2_4076b7da-d152-4a2a-91f3-fa8da47ef9b3.jpg?v=1756868308",
"tags": [
+ "Animal/Insects",
"Architectural",
- "Beige",
- "Class A Fire Rated",
+ "Bedroom",
+ "Black",
"Commercial",
- "Cream",
- "Discontinued",
- "Easy Walls",
- "Gold",
- "LA Walls",
- "Metallic",
- "Prepasted",
- "Series: Brewster",
- "Stripe",
- "Stripes",
- "Strippable",
- "Textured",
- "Traditional",
+ "Contemporary",
+ "Custom Wallcovering",
+ "display_variant",
+ "DW Bespoke Studio",
+ "DW Bespoke Studios To Go",
+ "Geometric",
+ "Glamorous",
+ "Houndstooth",
+ "Nursery",
+ "Paper",
+ "Pattern",
+ "Pink",
+ "Playful",
+ "Powder Room",
"Vinyl",
"Wallcovering",
- "Washable",
- "White",
- "YB-Discontinued-2026-04",
- "Yellow"
+ "White"
],
- "max_price": 79.99,
+ "max_price": 558.77,
"aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wells-sand-candy-stripe-wallpaper-cca-83229"
+ "product_url": "https://designerwallcoverings.com/products/dwsa-303601-1"
},
{
- "sku": "camila-silver-modern-damask-wallpaper-wallpaper-cca-82848",
- "handle": "camila-silver-modern-damask-wallpaper-wallpaper-cca-82848",
- "title": "Camila Silver Modern Damask Wallcovering Wallcovering",
- "vendor": "LA Walls",
+ "sku": "GLS-34583-sample",
+ "handle": "george-glass-bead-stripe-gls-34583",
+ "title": "George Glass Bead Stripe",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/5bc6114cf3f8763c3a886d89ebab27e3.jpg?v=1572309957",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped-1773881488301.jpg?v=1773881489",
"tags": [
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
- "Blue",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Contemporary",
- "Damask",
- "Damasks",
- "Discontinued",
- "Easy Walls",
- "Floral",
- "LA Walls",
- "Light Blue",
- "Metallic",
- "Modern",
- "Prepasted",
- "Series: Brewster",
- "Silver",
- "Strippable",
- "Takumi",
- "Vinyl",
- "Wallcovering",
- "Washable",
- "YB-Discontinued-2026-04"
- ],
- "max_price": 75.49,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/camila-silver-modern-damask-wallpaper-wallpaper-cca-82848"
+ "Fabric",
+ "George Glass Bead Stripe",
+ "Glass Bead",
+ "gray",
+ "Hospitality",
+ "Phillipe Romano",
+ "Phillipe Romano Essential Textures",
+ "Reflective",
+ "Retail",
+ "Stripe",
+ "Texture",
+ "Textured",
+ "Transitional",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 4.25,
+ "aesthetic": "all",
+ "product_url": "https://designerwallcoverings.com/products/george-glass-bead-stripe-gls-34583"
},
{
- "sku": "camila-light-blue-modern-damask-wallpaper-wallpaper-cca-82847",
- "handle": "camila-light-blue-modern-damask-wallpaper-wallpaper-cca-82847",
- "title": "Camila Light Blue Modern Damask Wallcovering Wallcovering",
- "vendor": "LA Walls",
+ "sku": "GLS-34582-sample",
+ "handle": "george-glass-bead-stripe-gls-34582",
+ "title": "George Glass Bead Stripe",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/6c08383b1e77c931a2bcfe945ac409bb.jpg?v=1572309957",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped-1773881482817.jpg?v=1773881483",
"tags": [
+ "AI-Analyzed-v3",
"Architectural",
- "Beige",
+ "beige",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Contemporary",
- "Damask",
- "Damasks",
- "Discontinued",
- "Easy Walls",
- "Floral",
- "LA Walls",
- "Light Blue",
- "Metallic",
- "Modern",
- "Prepasted",
- "Series: Brewster",
- "Silver",
- "Strippable",
- "Vinyl",
+ "Fabric",
+ "George Glass Bead Stripe",
+ "Glass Bead",
+ "Glitter",
+ "Off-white",
+ "Phillipe Romano",
+ "Phillipe Romano Essential Textures",
+ "Stripe",
+ "Texture",
+ "Textured",
+ "Transitional",
"Wallcovering",
- "Washable",
- "YB-Discontinued-2026-04"
+ "White"
],
- "max_price": 75.49,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/camila-light-blue-modern-damask-wallpaper-wallpaper-cca-82847"
+ "max_price": 4.25,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/george-glass-bead-stripe-gls-34582"
},
{
- "sku": "camila-moss-modern-damask-wallpaper-wallpaper-cca-82844",
- "handle": "camila-moss-modern-damask-wallpaper-wallpaper-cca-82844",
- "title": "Camila Moss Modern Damask Wallcovering Wallcovering",
- "vendor": "LA Walls",
+ "sku": "GLS-34581-sample",
+ "handle": "george-glass-bead-stripe-gls-34581",
+ "title": "George Glass Bead Stripe",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/f732d6dcd610b98c6c3fc5ab2da0a651.jpg?v=1572309957",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/george-glass-bead-stripe.jpg?v=1773881216",
"tags": [
+ "AI-Analyzed-v3",
"Architectural",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Damask",
- "Damasks",
- "Discontinued",
- "Easy Walls",
- "Floral",
- "Gold",
+ "Contemporary",
+ "Fabric",
+ "George Glass Bead Stripe",
+ "Glass Bead",
"Gray",
- "LA Walls",
- "Metallic",
- "Modern",
- "Prepasted",
- "Series: Brewster",
+ "light gray",
+ "Phillipe Romano",
+ "Phillipe Romano Essential Textures",
"Silver",
- "Strippable",
+ "Stripe",
+ "Texture",
"Textured",
- "Traditional",
- "Vinyl",
- "Wallcovering",
- "Washable",
- "YB-Discontinued-2026-04",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 75.49,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/camila-moss-modern-damask-wallpaper-wallpaper-cca-82844"
+ "max_price": 4.25,
+ "aesthetic": "silver",
+ "product_url": "https://designerwallcoverings.com/products/george-glass-bead-stripe-gls-34581"
},
{
- "sku": "camila-purple-modern-damask-wallpaper-wallpaper-cca-82841",
- "handle": "camila-purple-modern-damask-wallpaper-wallpaper-cca-82841",
- "title": "Camila Purple Modern Damask Wallcovering Wallcovering",
- "vendor": "LA Walls",
+ "sku": "GLS-34580-sample",
+ "handle": "george-glass-bead-stripe-gls-34580",
+ "title": "George Glass Bead Stripe",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/2bd0521a9c326717b2be9a7208ac5bf5_6b4ab5cc-72ea-4cbd-817d-decf3e308a55.jpg?v=1572309957",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/george-glass-bead-stripe_d3594769-6939-4928-9e80-74ff7c522d44.jpg?v=1773881209",
"tags": [
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
+ "Beige",
+ "Bling",
+ "Brown",
"Class A Fire Rated",
"Commercial",
"Contemporary",
- "Damask",
- "Damasks",
- "Discontinued",
- "Easy Walls",
- "Floral",
- "Gray",
- "LA Walls",
- "Metallic",
- "Modern",
- "Prepasted",
- "Purple",
- "Series: Brewster",
- "Silver",
- "Strippable",
+ "George Glass Bead Stripe",
+ "Glass Bead",
+ "Grasscloth",
+ "Hospitality",
+ "Natural Wallcovering",
+ "Phillipe Romano",
+ "Phillipe Romano Essential Textures",
+ "Reflective",
+ "Retail",
+ "Shimmering",
+ "Stripe",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Washable",
- "YB-Discontinued-2026-04"
+ "Traditional",
+ "Transitional",
+ "Wallcovering"
],
- "max_price": 75.49,
+ "max_price": 4.25,
"aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/camila-purple-modern-damask-wallpaper-wallpaper-cca-82841"
+ "product_url": "https://designerwallcoverings.com/products/george-glass-bead-stripe-gls-34580"
},
{
- "sku": "ncw4308-02",
- "handle": "ncw4308-02",
- "title": "Les Rêves Portavo Grey/Ivory - Grey Wallcovering | Nina Campbell",
- "vendor": "Nina Campbell",
+ "sku": "GLIT-106-Penny-sample",
+ "handle": "dazzling-glitter-glass-beaded-wall-paper-penny-glit-106-penny",
+ "title": "Dazzling Glitter Glass Beaded Wallcovering - Penny",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/nina_crop_4497263132723.jpg?v=1775520419",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/d314e9417f4627c6fa59adb342ea9171.jpg?v=1572308924",
"tags": [
+ "AI-Analyzed-v1",
"Architectural",
- "Class A Fire Rated",
+ "Bling",
+ "Bronze",
+ "Brown",
"Commercial",
- "Geometric",
- "Gray",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "Glass Bead",
+ "Glass Beaded",
+ "Glitter",
"Metallic",
- "NCW4308-02",
- "Nina Campbell Wallcovering",
- "Nina Campbell Wallcoverings",
"Paper",
+ "Real Glass Bead",
"Silver",
- "Traditional",
- "Wallcovering",
- "Wallcoverings"
+ "Textured",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/ncw4308-02"
+ "max_price": 204.94,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/dazzling-glitter-glass-beaded-wall-paper-penny-glit-106-penny"
},
{
- "sku": "ncw4308-04",
- "handle": "ncw4308-04",
- "title": "Les Rêves Portavo Coral/Ivory - Orange Wallcovering | Nina Campbell",
- "vendor": "Nina Campbell",
+ "sku": "GLI-100-Lotus Vanilla-sample",
+ "handle": "dazzling-glitter-glass-beaded-wall-paper-lotus-vanilla-gli-100-lotus-vanilla",
+ "title": "Dazzling Glitter Glass Beaded Wallcovering - Lotus Vanilla",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/nina_crop_4497263198259.jpg?v=1775520432",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/864fc9f9aeb1e610d9ba20c5b88c9092.jpg?v=1572308923",
"tags": [
+ "AI-Analyzed-v1",
"Architectural",
- "Chinoiserie",
- "Class A Fire Rated",
+ "Beige",
+ "Bling",
"Commercial",
- "Coral",
- "Geometric",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "Glass Bead",
+ "Glass Beaded",
+ "Glitter",
+ "Gold",
"Metallic",
- "NCW4308-04",
- "Nina Campbell Wallcovering",
- "Nina Campbell Wallcoverings",
"Paper",
- "Pink",
- "Silver",
+ "Real Glass Bead",
+ "Textured",
+ "Vanilla",
"Wallcovering",
- "Wallcoverings",
- "White"
+ "White",
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/ncw4308-04"
+ "max_price": 204.94,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/dazzling-glitter-glass-beaded-wall-paper-lotus-vanilla-gli-100-lotus-vanilla"
},
{
- "sku": "ncw4356-01",
- "handle": "ncw4356-01",
- "title": "Les Indiennes Fortoiseau Ivory/Gold - Gold Wallcovering | Nina Campbell",
- "vendor": "Nina Campbell",
+ "sku": "GLI-102 Glitter Glass-Bronze-sample",
+ "handle": "dazzling-glitter-glass-beaded-wall-paper-bronze-gli-102-glitter-glass-bronze",
+ "title": "Dazzling Glitter Glass Beaded Wallcovering - Bronze",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/nina_crop_4497265066035.jpg?v=1775520640",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/096eca776732158051801c859e8adeef.jpg?v=1572308923",
"tags": [
- "Animal/Insects",
+ "AI-Analyzed-v1",
"Architectural",
- "Bird",
- "Botanical",
- "Class A Fire Rated",
+ "Bling",
+ "Bronze",
+ "Brown",
"Commercial",
- "Fauna",
- "Gold",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "Glass Bead",
+ "Glass Beaded",
+ "Glitter",
"Metallic",
- "NCW4356-01",
- "Nina Campbell Wallcovering",
- "Nina Campbell Wallcoverings",
"Paper",
- "Traditional",
- "Wallcovering",
- "Wallcoverings",
- "White",
- "Yellow"
+ "Real Glass Bead",
+ "Textured",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/ncw4356-01"
+ "max_price": 204.94,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/dazzling-glitter-glass-beaded-wall-paper-bronze-gli-102-glitter-glass-bronze"
},
{
- "sku": "eur-70352-designer-wallcoverings-los-angeles",
+ "sku": "EUR-70352-Sample",
"handle": "eur-70352-designer-wallcoverings-los-angeles",
"title": "Chameleon Glittering holographic diamonds Grey | Osborne & Little Europe",
"vendor": "Osborne & Little",
@@ -708,3219 +869,4173 @@
"Wallcovering"
],
"max_price": 4.25,
- "aesthetic": "all",
+ "aesthetic": "glitter",
"product_url": "https://designerwallcoverings.com/products/eur-70352-designer-wallcoverings-los-angeles"
},
{
- "sku": "immersion-by-innovations-usa-dwc-immersion-1",
- "handle": "immersion-by-innovations-usa-dwc-immersion-1",
- "title": "Immersion | Innovations USA",
- "vendor": "Innovations USA",
- "product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Immersion-1.jpg?v=1736199381",
- "tags": [
- "Abstract",
- "Architectural",
- "ASTM E84",
- "Beige",
- "Commercial",
- "Commercial Wallcovering",
- "Gold",
- "Immersion-1",
- "Innovations USA",
- "Metallic",
- "Paper",
- "Wallcovering",
- "White",
- "Yellow"
- ],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/immersion-by-innovations-usa-dwc-immersion-1"
- },
- {
- "sku": "wolfgordonwallcovering_dwwg_blr-5019m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5019m-jpg",
- "title": "Ballari Mylar - Gold Luster | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLM-4014-SAMPLE",
+ "handle": "leopard-glitter-wallcovering-rainbow-blue",
+ "title": "Leopard Glitter - Rainbow Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5019M.jpg?v=1762288122",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/IMG_0464.heic?v=1748366700",
"tags": [
- "100% Mylar",
- "Abstract",
+ "Animal/Insects",
"Architectural",
- "Ballari Mylar",
"Beige",
- "Brown",
+ "Black",
+ "Bling",
+ "Blue",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gold",
- "Gold Luster",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Fauna",
+ "Glass Bead",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour",
+ "Hollywood Glamour Sequin Glass",
+ "Leopard",
"Metallic",
- "Mylar",
+ "Sequin",
"Textured",
"Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5019m-jpg"
+ "max_price": 108.85,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/leopard-glitter-wallcovering-rainbow-blue"
},
{
- "sku": "wolfgordonwallcovering_dwwg_merg-5808-jpg",
- "handle": "wolfgordonwallcovering_dwwg_merg-5808-jpg",
- "title": "Merge - Copper Wire | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLM-4156-SAMPLE",
+ "handle": "fishnet-sequin-glitter-wallcovering-white-disco-pink",
+ "title": "Fishnet Sequin Glitter - White Disco Pink | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/merg-5808.jpg?v=1762300589",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/fishnet-sequin-glitter-wallcovering-white-disco-pink-swatch-spin.gif?v=1775025627",
"tags": [
- "22% Nylon",
- "3% Polyester",
- "30% Cotton",
- "45% Wool",
+ "AI-Analyzed-v2",
"Architectural",
- "Beige",
- "Black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
- "contemporary",
- "Copper",
- "Copper Wire",
- "Merge",
- "Metallic",
- "Orange",
- "stripe",
- "textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Wool",
- "woven",
- "Woven Upholstery"
+ "Contemporary",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Fabric",
+ "Fishnet Sequin Glitter",
+ "Geometric",
+ "Glass Bead",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Glamour",
+ "Hollywood Glamour Sequin Glass",
+ "Iridescent",
+ "Light Pink",
+ "Pink",
+ "Rose Gold",
+ "Sequin",
+ "Textured",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_merg-5808-jpg"
+ "max_price": 99.98,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/fishnet-sequin-glitter-wallcovering-white-disco-pink"
},
{
- "sku": "wolfgordonwallcovering_dwwg_metm-576-jpg",
- "handle": "wolfgordonwallcovering_dwwg_metm-576-jpg",
- "title": "Metamorphosis - Silver | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLM-4042-SAMPLE",
+ "handle": "metallic-threads-glitter-wallcovering-white-gold-disco-blue",
+ "title": "Metallic Threads Glitter - White/Gold/Disco Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/metm-576.jpg?v=1762301094",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/ScreenShot2022-06-20at11.20.03AM.png?v=1748366634",
"tags": [
- "39% Polyester",
- "61% Olefin",
+ "AI-Analyzed-v2",
"Architectural",
- "Beige",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
"Geometric",
- "Metallic",
- "Metamorphosis",
- "Olefin",
+ "Glass Bead",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Hollywood Glamour",
+ "Hollywood Glamour Sequin Glass",
+ "Lattice",
+ "Metallic Threads Glitter",
+ "Sequin",
"Silver",
- "Textile",
- "Textured",
"Vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "White",
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_metm-576-jpg"
+ "max_price": 99.98,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/metallic-threads-glitter-wallcovering-white-gold-disco-blue"
},
{
- "sku": "wolfgordonwallcovering_dwwg_gsg9-5384-jpg",
- "handle": "wolfgordonwallcovering_dwwg_gsg9-5384-jpg",
- "title": "Glasgow - Gold | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLM-4028-SAMPLE",
+ "handle": "heart-glitter-wallcovering-multi-on-rainbow",
+ "title": "Heart Glitter - Multi On Rainbow | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/gsg9-5384.jpg?v=1762296743",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/heart-glitter-wallcovering-multi-on-rainbow-swatch-spin.gif?v=1775026220",
"tags": [
- "100% Vinyl",
- "abstract",
+ "Abstract",
"Architectural",
- "Beige",
+ "Black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
- "contemporary",
- "Contract",
- "geometric",
- "Glasgow",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Glass Bead",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
"Gold",
+ "Hollywood Glamour",
+ "Hollywood Glamour Sequin Glass",
"Metallic",
- "textured",
+ "Multi",
+ "Pink",
+ "Sequin",
+ "Textured",
"Vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
+ "Walnut",
+ "Whimsical",
+ "White",
"Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_gsg9-5384-jpg"
+ "max_price": 108.85,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/heart-glitter-wallcovering-multi-on-rainbow"
},
{
- "sku": "wolfgordonwallcovering_dwwg_ad9512-jpg",
- "handle": "wolfgordonwallcovering_dwwg_ad9512-jpg",
- "title": "Ambient Metallic - AD9512 | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLM-51348-sample",
+ "handle": "hollywood-glamour-sequin-glitter-glm-51348",
+ "title": "Hollywood Glamour Sequin Glitter - Clear On Light Purple | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/WolfGordonWallcovering_DWWG_ad9511.jpg?v=1733874142",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/34d7539a55024156c090d655bb5899f4.jpg?v=1572309254",
"tags": [
- "Animal/Insects",
+ "Abstract",
"Architectural",
- "Beige",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Contemporary",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Glamorous",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Walls",
"Metallic",
+ "Purple",
+ "Sequin",
+ "Silver",
"Textured",
"Vinyl",
"Wallcovering",
- "Wolf",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "White"
],
"max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_ad9512-jpg"
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-glitter-glm-51348"
},
{
- "sku": "montgomery-metallic-cubed-durable-walls-xwp-52674",
- "handle": "montgomery-metallic-cubed-durable-walls-xwp-52674",
- "title": "Montgomery Metallic Cubed Durable | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "DWC-Arte-40343",
+ "handle": "bandeau-mica-contemporary-wallpaper-5",
+ "title": "Bandeau Mica Contemporary Wallcovering",
+ "vendor": "Arte International",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/xwp-52674-sample-montgomery-metallic-cubed-durable-hollywood-wallcoverings.jpg?v=1775726364",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/40343-N3OD.jpg?v=1573798925",
"tags": [
+ "[Object Object]",
"Architectural",
- "Beige",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
+ "Dark Brown",
"Geometric",
- "Hollywood Wallcoverings",
- "Lattice",
- "Leed Walls",
- "Metallic",
- "Tan",
- "Textured",
+ "Gold Glitter",
+ "Interior Designer",
+ "Peach",
+ "Texture",
"Vinyl",
- "Wallcovering"
+ "Wallcovering",
+ "Warm Taupe"
],
"max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/montgomery-metallic-cubed-durable-walls-xwp-52674"
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/bandeau-mica-contemporary-wallpaper-5"
},
{
- "sku": "wolfgordonwallcovering_dwwg_blr-5027m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5027m-jpg",
- "title": "Ballari Mylar - Silver Glint | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-111 Glass Beads - Gold-sample",
+ "handle": "venezia-glass-beads-wall-paper-gold-gls-111-glass-beads-gold",
+ "title": "Venezia Glass Beads - Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5027M.jpg?v=1762288413",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/936928828518ebf09a70d136c7642b7a.jpg?v=1773881000",
"tags": [
- "100% Mylar",
- "Abstract",
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
- "Ballari Mylar",
- "Black",
+ "Bling",
+ "bronze",
+ "brown",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gray",
- "Metallic",
- "Mylar",
- "Silver",
- "Silver Glint",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gold",
+ "golden brown",
+ "Hospitality",
+ "khaki",
+ "Paper",
+ "Real Glass Beads",
+ "Reflective",
+ "Restaurant",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Traditional",
+ "Venezia Glass Beads Wallcovering",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5027m-jpg"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/venezia-glass-beads-wall-paper-gold-gls-111-glass-beads-gold"
},
{
- "sku": "wolfgordonwallcovering_dwwg_blr-5025m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5025m-jpg",
- "title": "Ballari Mylar - Turquoise | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-112 Glass Beads - Silver-sample",
+ "handle": "venezia-tm-glass-beads-silver-gls-112-glass-beads-silver",
+ "title": "Venezia Glass Beads - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5025M.jpg?v=1762288343",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped-1773881417622.jpg?v=1773881419",
"tags": [
- "100% Mylar",
- "Abstract",
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
- "Ballari Mylar",
- "Blue",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gold",
- "Gray",
- "Metallic",
- "Multi",
- "Mylar",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Hospitality",
+ "Modern",
+ "Real Glass Beads",
+ "Reflective",
+ "Retail",
+ "Shimmering",
+ "Silver",
"Textured",
- "Turquoise",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow"
+ "Venezia(tm) Glass Beads",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5025m-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/venezia-tm-glass-beads-silver-gls-112-glass-beads-silver"
},
{
- "sku": "nautilus-by-innovations-usa-dwc-nautilus-2",
- "handle": "nautilus-by-innovations-usa-dwc-nautilus-2",
- "title": "Nautilus | Innovations USA",
- "vendor": "Innovations USA",
+ "sku": "GLS-113 Glass Beads - Red Rock-sample",
+ "handle": "venezia-glass-beads-red-rock-gls-113-glass-beads-red-rock",
+ "title": "Venezia Glass Beads - Red | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Nautilus-2.jpg?v=1736198902",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/68b450d597f36f1a3ba101e3e799863f.jpg?v=1773870538",
"tags": [
- "AI-Analyzed-v2",
+ "AI-Analyzed-v3",
"Architectural",
- "ASTM E84",
- "Avocado",
- "Beige",
+ "Bling",
+ "brown",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Foil",
- "Gold",
- "Innovations USA",
- "Light Gray",
- "Metal Leaf",
- "Metallic",
- "Moss",
- "Nautilus",
- "Nautilus-2",
+ "dark red",
+ "Eclectic",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Industrial",
+ "maroon",
+ "Modern",
+ "none",
+ "Paper",
+ "Real Glass Beads",
+ "red",
+ "Reflective",
+ "Shimmering",
+ "Solid",
+ "Textural",
"Textured",
- "Wallcovering",
- "Yellow"
+ "Traditional",
+ "Transitional",
+ "Venezia Glass Beads",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/nautilus-by-innovations-usa-dwc-nautilus-2"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/venezia-glass-beads-red-rock-gls-113-glass-beads-red-rock"
},
{
- "sku": "wolfgordonwallcovering_dwwg_kam-5098-jpg",
- "handle": "wolfgordonwallcovering_dwwg_kam-5098-jpg",
- "title": "Kami - Copper | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-115 Glass Beads - Pinki-sample",
+ "handle": "venezia-glass-beads-pinki-gls-115-glass-beads-pinki",
+ "title": "Venezia Glass Beads - Pink | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/kam-5098.jpg?v=1762298243",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/gls-1494829269104-cropped.jpg?v=1773881338",
"tags": [
- "100% Vinyl",
+ "AI-Analyzed-v3",
"Architectural",
- "Brown",
+ "Bling",
+ "burgundy",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
- "contemporary",
- "Contract",
- "Copper",
- "geometric",
- "Kami",
- "Metallic",
- "Orange",
- "textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Contemporary",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "pink",
+ "purple",
+ "Real Glass Beads",
+ "red",
+ "reflective",
+ "Solid",
+ "Textured",
+ "Venezia Glass Beads",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_kam-5098-jpg"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/venezia-glass-beads-pinki-gls-115-glass-beads-pinki"
},
{
- "sku": "immersion-by-innovations-usa-dwc-immersion-3",
- "handle": "immersion-by-innovations-usa-dwc-immersion-3",
- "title": "Immersion | Innovations USA",
- "vendor": "Innovations USA",
+ "sku": "GLS-114 Glass Beads - Bronzino-sample",
+ "handle": "venezia-glass-beads-bronzino-gls-114-glass-beads-bronzino",
+ "title": "Venezia Glass Beaded - Bronze | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Immersion-3.jpg?v=1736199378",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/venezia-glass-beaded-wallcovering---bronzino_2e471c3a-fff6-4db7-a767-ab66ce086024.jpg?v=1773881139",
"tags": [
- "abstract",
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
- "ASTM E84",
- "Black",
- "Brown",
+ "Bling",
+ "bronze",
+ "brown",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "contemporary",
- "Gray",
- "Immersion-3",
- "Innovations USA",
- "Metallic",
- "textured",
- "Vinyl",
+ "Contemporary",
+ "Feature Wall",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gold",
+ "Hospitality",
+ "modern",
+ "Paper",
+ "Real Glass Beads",
+ "reflective",
+ "solid",
+ "Textured",
+ "Traditional",
+ "Transitional",
+ "Venezia Glass Beaded Wallcovering",
"Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/immersion-by-innovations-usa-dwc-immersion-3"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/venezia-glass-beads-bronzino-gls-114-glass-beads-bronzino"
},
{
- "sku": "immersion-by-innovations-usa-dwc-immersion-2",
- "handle": "immersion-by-innovations-usa-dwc-immersion-2",
- "title": "Immersion | Innovations USA",
- "vendor": "Innovations USA",
+ "sku": "GLS-116 Glass Beads - Coffee-sample",
+ "handle": "venezia-glass-beads-coffee-gls-116-glass-beads-coffee",
+ "title": "Venezia Glass Beads - Coffee | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Immersion-2.jpg?v=1736199380",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/venezia-glass-beads---coffee.jpg?v=1773881005",
"tags": [
- "Abstract",
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
- "ASTM E84",
- "Beige",
+ "Bling",
+ "Brown",
"Class A Fire Rated",
+ "coffee",
"Commercial",
- "Commercial Wallcovering",
- "Gold",
- "Immersion-2",
- "Innovations USA",
- "Metallic",
- "Vinyl",
- "Wallcovering",
- "White",
- "Yellow"
+ "Contemporary",
+ "dark brown",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hospitality",
+ "Paper",
+ "Real Glass Beads",
+ "Reflective",
+ "Retail",
+ "Shimmering",
+ "Solid",
+ "Textured",
+ "Transitional",
+ "Venezia Glass Beads",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/immersion-by-innovations-usa-dwc-immersion-2"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/venezia-glass-beads-coffee-gls-116-glass-beads-coffee"
},
{
- "sku": "martin-s-metallic-grasscloth-vinyl-dwx-58173",
- "handle": "martin-s-metallic-grasscloth-vinyl-dwx-58173",
- "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "GLS-107-sample",
+ "handle": "sexy-sequin-wallcovering-miami-beach-gls-107",
+ "title": "Sexy Sequin - Pink | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58173-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724352",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/e7ad686e70a8478d4c42390e86b37863.jpg?v=1773881063",
"tags": [
- "54\" Width",
+ "AI-Analyzed-v3",
"Architectural",
- "Beige",
- "Blue",
- "Brown",
- "Chocolate Brown",
- "Color: Brown",
+ "Bar",
+ "Bling",
+ "burgundy",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Conference Room",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Embossed Texture",
- "Gold",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Green",
- "Hollywood Wallcoverings",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
"Hospitality",
- "Hotel Lobby",
- "Living Room",
- "Luxe",
- "Luxurious",
- "Metallic",
- "Modern",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Navy Blue",
- "Neoclassical",
- "Olive Green",
- "Solid",
- "Stripe",
- "Textured",
- "Traditional",
- "Transitional",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Wide Width",
- "Woven",
- "Yellow"
+ "Iridescent",
+ "Lattice",
+ "maroon",
+ "Maroon->Red",
+ "Multi",
+ "Nightclub",
+ "Real Glass Beads",
+ "Red",
+ "Red->Red",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "silver",
+ "Silver->Gray",
+ "Sparkle",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/martin-s-metallic-grasscloth-vinyl-dwx-58173"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sexy-sequin-wallcovering-miami-beach-gls-107"
},
{
- "sku": "spalt-by-innovations-usa-dwc-spalt-2",
- "handle": "spalt-by-innovations-usa-dwc-spalt-2",
- "title": "Spalt | Innovations USA",
- "vendor": "Innovations USA",
+ "sku": "GLS-106-sample",
+ "handle": "sexy-sequin-wallcovering-blue-dazzle-gls-106",
+ "title": "Sexy Sequin - Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Spalt-2.jpg?v=1736199103",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sexy-sequin-wallcovering--blue-dazzle_54cb4cb4-bf1e-4bbd-8142-fa2f1a6167c7.jpg?v=1773881156",
"tags": [
- "Abstract",
+ "AI-Analyzed-v3",
"Architectural",
- "ASTM E84",
+ "Bar",
+ "Bling",
+ "blue",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
+ "Entertainment",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gray",
- "Innovations USA",
- "Metallic",
- "Silver",
- "Spalt-2",
+ "iridescent",
+ "Multi",
+ "Nightclub",
+ "Real Glass Beads",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "silver",
+ "Sparkle",
"Textured",
- "Vinyl",
"Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/spalt-by-innovations-usa-dwc-spalt-2"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sexy-sequin-wallcovering-blue-dazzle-gls-106"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58160",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58160",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "GLS-109-sample",
+ "handle": "sexy-sequin-wallcovering-atlantic-blue-gls-109",
+ "title": "Sexy Sequin - Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58160-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725567",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/gls-1494847651952-cropped.jpg?v=1773881353",
"tags": [
- "54\" Width",
+ "AI-Analyzed-v3",
"Architectural",
- "Beige",
- "Brown",
- "Champagne",
- "Chocolate Brown",
- "Color: Brown",
+ "Bar",
+ "black",
+ "Bling",
+ "blue",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Embossed Texture",
- "Estimated Type: Paper",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Hallway",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Hotel Lobby",
- "Living Room",
- "Luxe",
- "Metallic",
- "Modern",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Neoclassical",
- "Solid",
- "Sophisticated",
- "Stripe",
- "Taupe",
+ "dark gray",
+ "Entertainment",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Lattice",
+ "lightGray",
+ "Nightclub",
+ "Real Glass Beads",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "silver",
+ "Sparkle",
"Textured",
- "Traditional",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Wide Width",
- "Woven",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58160"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sexy-sequin-wallcovering-atlantic-blue-gls-109"
},
{
- "sku": "wolfgordonwallcovering_dwwg_blr-5015m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5015m-jpg",
- "title": "Ballari Mylar - Buff | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-104-sample",
+ "handle": "sexy-sequin-wallcovering-copper-tinsel-gls-104",
+ "title": "Sexy Sequin - Copper | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5015M.jpg?v=1762287971",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sexy-sequin-wallcovering--copper-tinsel_63156ad3-a42e-4ea2-9c88-5b46a5963e97.jpg?v=1773881163",
"tags": [
- "100% Mylar",
- "Abstract",
+ "AI-Analyzed-v3",
"Architectural",
- "Ballari Mylar",
- "Beige",
+ "Art Deco",
+ "Bling",
+ "brown",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gold",
- "Metallic",
- "Mylar",
+ "Copper",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Iridescent",
+ "Lattice",
+ "Modern",
+ "Multi",
+ "Orange",
+ "Real Glass Beads",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5015m-jpg"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sexy-sequin-wallcovering-copper-tinsel-gls-104"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58159",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58159",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "GLS-108-sample",
+ "handle": "sexy-sequin-wallcovering-deep-mocha-gls-108",
+ "title": "Sexy Sequin - Brown | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58159-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725544",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sexy-sequin-wallcovering--deep-mocha_6b10c92c-d67f-4626-840a-159e70fbd6f3.jpg?v=1773881169",
"tags": [
- "54\" Width",
+ "AI-Analyzed-v3",
"Architectural",
- "Black",
- "Charcoal",
- "Color: Black",
- "Commercial",
- "Commercial Wallcovering",
- "Conference Room",
+ "Art Deco",
+ "Bling",
+ "brown",
+ "browns",
+ "Class A Fire Rated",
+ "Commercial",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Dark Brown",
- "Embossed Texture",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Gray",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Hotel Lobby",
- "Light Grey",
- "Metallic",
- "Minimalist",
- "Modern",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Office",
- "Solid",
- "Sophisticated",
- "Stripe",
+ "copper",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gold",
+ "Maximalist",
+ "Orange",
+ "Real Glass Beads",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "Sparkle",
"Textured",
- "Transitional",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
- "Vinyl",
"Wallcovering",
- "White",
- "Wide Width",
- "Woven"
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58159"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sexy-sequin-wallcovering-deep-mocha-gls-108"
},
{
- "sku": "wolfgordonwallcovering_dwwg_blr-5020m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5020m-jpg",
- "title": "Ballari Mylar - Bronze | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-102-sample",
+ "handle": "sexy-sequin-wallcovering-silver-mirror-gls-102",
+ "title": "Sexy Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5020M.jpg?v=1762288157",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sexy-sequin-wallcovering--silver-mirror_161dfd81-3134-498e-a6cf-9f7188cf989b.jpg?v=1773881176",
"tags": [
- "100% Mylar",
- "Abstract",
+ "AI-Analyzed-v3",
"Architectural",
- "Ballari Mylar",
- "Black",
- "Bronze",
+ "Art Deco",
+ "black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Contract",
- "Gray",
- "Industrial",
- "Metallic",
- "Mylar",
+ "Contemporary",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Lattice",
+ "lightgray",
+ "Real Glass Beads",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "silver",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5020m-jpg"
+ "max_price": 81.47,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sexy-sequin-wallcovering-silver-mirror-gls-102"
},
{
- "sku": "wolfgordonwallcovering_dwwg_am10331-jpg",
- "handle": "wolfgordonwallcovering_dwwg_am10331-jpg",
- "title": "Ambient Metallic | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-418-sample",
+ "handle": "sequin-wall-paper-gold-gls-418",
+ "title": "Sequin - Green | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/am10331.jpg?v=1762285264",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sequin-wall-paper--gold.jpg?v=1773881059",
"tags": [
- "Abstract",
- "Ambient Metallic",
+ "AI-Analyzed-v3",
"Architectural",
+ "Art Deco",
+ "black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Gray",
- "Metallic",
- "Scuffmaster",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gold",
+ "gray",
+ "Lattice",
+ "Paper",
+ "Real Glass Beads",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "White",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_am10331-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sequin-wall-paper-gold-gls-418"
},
{
- "sku": "wolfgordonwallcovering_dwwg_br013-jpg",
- "handle": "wolfgordonwallcovering_dwwg_br013-jpg",
- "title": "Burnished Metallic | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-417-sample",
+ "handle": "sequin-wall-paper-black-gls-417",
+ "title": "Sequin - Black | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/br013.jpg?v=1762288841",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/371c9614029653c869b8980b744600fa.jpg?v=1572308925",
"tags": [
+ "AI-Analyzed-v3",
"Architectural",
- "Bronze",
- "Brown",
- "Burnished Metallic",
+ "black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Industrial",
- "Metallic",
- "Scuffmaster",
+ "Contemporary",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "silver",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_br013-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sequin-wall-paper-black-gls-417"
},
{
- "sku": "wolfgordonwallcovering_dwwg_am11390-jpg",
- "handle": "wolfgordonwallcovering_dwwg_am11390-jpg",
- "title": "AMBIENT METALLIC | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-416-sample",
+ "handle": "sequin-wall-paper-blue-gls-416",
+ "title": "Sequin - Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/am11390.jpg?v=1762358658",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sequin-wall-paper--blue.jpg?v=1773881066",
"tags": [
- "AMBIENT METALLIC",
+ "AI-Analyzed-v3",
"Architectural",
- "Beige",
+ "black",
+ "Black->Black",
+ "Bling",
+ "blue",
+ "Blue->Blue",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Khaki",
- "Metallic",
+ "darkBlue",
+ "Fabric",
+ "Geometric",
+ "Glamorous",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Lattice",
+ "lightBlue",
+ "Paper",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_am11390-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sequin-wall-paper-blue-gls-416"
},
{
- "sku": "wolfgordonwallcovering_dwwg_blr-5021m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5021m-jpg",
- "title": "Ballari Mylar - Copper | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-414-sample",
+ "handle": "the-emerald-s-wizard-green-sequin-walls-gls-414",
+ "title": "The Emerald's Wizard - Green | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5021M.jpg?v=1762288193",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/the-emerald-s-wizard---green-sequin-walls.jpg?v=1773881084",
"tags": [
- "100% Mylar",
- "Abstract",
+ "Accent Wall",
+ "AI-Analyzed-v3",
"Architectural",
- "Ballari Mylar",
- "Brown",
+ "Black",
+ "Black->Black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Copper",
- "Gray",
- "Industrial",
- "Metallic",
- "Mylar",
- "Orange",
+ "Entertainment",
+ "Feature Wall",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Green",
+ "Green->Green",
+ "Lattice",
+ "Modern",
+ "Reflective",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5021m-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/the-emerald-s-wizard-green-sequin-walls-gls-414"
},
{
- "sku": "wolfgordonwallcovering_dwwg_br009-jpg",
- "handle": "wolfgordonwallcovering_dwwg_br009-jpg",
- "title": "Burnished Metallic | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-415-sample",
+ "handle": "sequin-wall-paper-aqua-spa-gls-415",
+ "title": "Sequin Aqua Spa - Teal Blue Aqua | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/br009.jpg?v=1762288727",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sequin-wall-paper-aqua-spa.jpg?v=1773881077",
"tags": [
- "Abstract",
+ "Accent Wall",
+ "AI-Analyzed-v3",
+ "Aqua",
+ "Aqua->Blue",
"Architectural",
- "Beige",
- "Brown",
- "Burnished Metallic",
+ "Bling",
+ "Blue",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Gray",
- "Metallic",
- "Scuffmaster",
+ "Geometric",
+ "Glamorous",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "lightGray",
+ "Paper",
+ "Salon",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Silver",
+ "Spa",
+ "Teal",
+ "Teal->Blue",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_br009-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sequin-wall-paper-aqua-spa-gls-415"
},
{
- "sku": "wolfgordonwallcovering_dwwg_grv-2902_8-jpg",
- "handle": "wolfgordonwallcovering_dwwg_grv-2902_8-jpg",
- "title": "Grove - Nickel | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-516-sample",
+ "handle": "sequin-wall-paper-silver-gls-516",
+ "title": "Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/grv-2902_8.jpg?v=1762296600",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/7e610314a1f2c1732492a4ea5e7f6bcb.jpg?v=1773881186",
"tags": [
- "100% Vinyl",
+ "AI-Analyzed-v3",
"Architectural",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gray",
- "Grove",
- "Metallic",
- "Nickel",
- "Silver",
- "Stripe",
+ "Geometric",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Lattice",
+ "Modern",
+ "Nightclub",
+ "Paper",
+ "Real Glass Beads",
+ "Reflective",
+ "Retail",
+ "Sequin",
+ "Sequin Wallcovering",
+ "Shimmering",
+ "silver",
+ "Sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_grv-2902_8-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sequin-wall-paper-silver-gls-516"
},
{
- "sku": "wolfgordonwallcovering_dwwg_kbt-5127-jpg",
- "handle": "wolfgordonwallcovering_dwwg_kbt-5127-jpg",
- "title": "Kabuto - Amazonite | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "GLS-413-sample",
+ "handle": "sequin-wall-paper-ruby-red-slippers-gls-413",
+ "title": "Sequin Ruby Red Slippers - Red Brick | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/kbt-5127.jpg?v=1762298972",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sequin-wall-paper-ruby-red-slippers.jpg?v=1773881091",
"tags": [
- "100% Mylar",
- "Abstract",
- "Amazonite",
+ "AI-Analyzed-v3",
"Architectural",
- "Black",
- "Blue",
+ "Bar",
+ "black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gold",
- "Kabuto",
- "Metallic",
- "Mylar",
- "Teal",
+ "Fabric",
+ "Geometric",
+ "glam",
+ "Glamorous",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "gray",
+ "Nightclub",
+ "Paper",
+ "red",
+ "Retail",
+ "Sequin",
+ "Sequin Wallcovering",
+ "sparkle",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_kbt-5127-jpg"
+ "max_price": 81.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sequin-wall-paper-ruby-red-slippers-gls-413"
},
{
- "sku": "wolfgordonwallcovering_dwwg_kbt-5126-jpg",
- "handle": "wolfgordonwallcovering_dwwg_kbt-5126-jpg",
- "title": "Kabuto - Silver | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "FXX - 3209-sample",
+ "handle": "cubist-glitter-gold-silver-metallic-fxx-3209",
+ "title": "Cubist Glitter - Cubic Gold Silver Metallic | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/kbt-5126.jpg?v=1762298936",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/a34ddff25bb1d92e35fa14c120830456.jpg?v=1572308970",
"tags": [
- "100% Mylar",
- "Abstract",
"Architectural",
+ "ASTM E84 Class A",
+ "Beige",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Contract",
+ "contemporary",
+ "geometric",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "Gray",
- "Industrial",
- "Kabuto",
"Metallic",
- "Mylar",
- "Textured",
+ "Mica",
+ "Natural",
+ "Silver",
+ "Specialy Wallcoverings",
+ "textured",
"Vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
"Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_kbt-5126-jpg"
+ "max_price": 92.42,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/cubist-glitter-gold-silver-metallic-fxx-3209"
},
{
- "sku": "wolfgordonwallcovering_dwwg_srp-5041-jpg",
- "handle": "wolfgordonwallcovering_dwwg_srp-5041-jpg",
- "title": "Sparta - Shimmer | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "FXX - 3212-sample",
+ "handle": "glamor-glitter-silver-blue-fxx-3212",
+ "title": "Glamor Glitter - Silver Blue",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/srp-5041.jpg?v=1762308799",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/baf0fc3556b10e838e672e60c95cd8b0.jpg?v=1774197601",
"tags": [
- "100% Vinyl",
"Architectural",
+ "ASTM E84 Class A",
+ "Bedroom",
+ "Bling",
+ "Blue",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Gray",
- "RAMPART®",
- "Shimmer",
- "Sparta",
+ "Geometric",
+ "Glitter",
+ "Living Room",
+ "Metallic",
+ "Mica",
+ "Modern",
+ "Natural",
+ "Nursery",
+ "Office",
+ "Phillipe Romano",
+ "Silver",
+ "Silver Blue Metallic",
+ "Specialy Wallcoverings",
+ "Stripe",
+ "Striped",
"Textured",
"Vinyl",
"Wallcovering",
- "White",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Woven"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_srp-5041-jpg"
+ "max_price": 45.16,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/glamor-glitter-silver-blue-fxx-3212"
},
{
- "sku": "wolfgordonwallcovering_dwwg_bbo-4954-jpg",
- "handle": "wolfgordonwallcovering_dwwg_bbo-4954-jpg",
- "title": "Bilbao - Yellow Gold | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "FXX - 3210-sample",
+ "handle": "cubist-glitter-hot-pink-g-fxx-3210",
+ "title": "Cubist Glitter - Cubic Pink Metallic | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/bbo-4954.jpg?v=1762287433",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/3f99ea2889dafc2d0f73357656fd6776.jpg?v=1572308970",
"tags": [
- "100% Mylar",
- "Abstract",
"Architectural",
- "Beige",
- "Bilbao",
+ "ASTM E84 Class A",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Gold",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Magenta",
"Metallic",
- "Mylar",
- "Stripe",
+ "Mica",
+ "Natural",
+ "Pink",
+ "Specialy Wallcoverings",
"Textured",
"Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow",
- "Yellow Gold"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_bbo-4954-jpg"
+ "max_price": 92.42,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/cubist-glitter-hot-pink-g-fxx-3210"
},
{
- "sku": "wolfgordonwallcovering_dwwg_mass-5780-jpg",
- "handle": "wolfgordonwallcovering_dwwg_mass-5780-jpg",
- "title": "Mass - Mahogany | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "FXX - 3214-sample",
+ "handle": "hiya-mica-copper-glitter-fxx-3214",
+ "title": "Hiya Mica - Copper Glitter",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/mass-5780.jpg?v=1762300268",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/9ccd6db8cc2be999ce901567e2a1cf50.jpg?v=1774197815",
"tags": [
- "23% Nylon",
- "36% Wool",
- "37% Cotton",
- "4% Polyester",
- "Abstract",
"Architectural",
+ "Art Deco",
+ "ASTM E84 Class A",
+ "Bedroom",
+ "Bling",
+ "Bronze",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Cotton",
+ "Contemporary",
+ "Copper",
+ "Geometric",
+ "Glam",
+ "Glitter",
"Gold",
- "Mahogany",
- "Mass",
+ "Gray",
+ "Living Room",
"Metallic",
- "Red",
- "Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Woven Upholstery",
- "Yellow"
+ "Mica",
+ "Modern",
+ "Natural",
+ "Office",
+ "Orange",
+ "Phillipe Romano",
+ "Retail",
+ "Specialy Wallcoverings",
+ "Stripe",
+ "Stripes",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_mass-5780-jpg"
+ "max_price": 58.68,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hiya-mica-copper-glitter-fxx-3214"
},
{
- "sku": "wolfgordonwallcovering_dwwg_ros-4146-jpg",
- "handle": "wolfgordonwallcovering_dwwg_ros-4146-jpg",
- "title": "Rossana - True Silver | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "FXX - 3213-sample",
+ "handle": "glamor-glitter-silver-red-rasberry-fxx-3213",
+ "title": "Glamor Glitter - Silver Red Rasberry",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/ros-4146.jpg?v=1762304939",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/b18a2f388926ffd16c386a812b5ae030.jpg?v=1774197703",
"tags": [
- "100% Mylar",
"Architectural",
- "Beige",
+ "Art Deco",
+ "ASTM E84 Class A",
+ "Bedroom",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
+ "Geometric",
+ "Glitter",
"Gray",
+ "Living Room",
"Metallic",
- "Mylar",
- "Rossana",
+ "Mica",
+ "Modern",
+ "Natural",
+ "Nursery",
+ "Phillipe Romano",
+ "Red",
+ "Retail",
"Silver",
+ "Silver Red Metallic",
+ "Specialy Wallcoverings",
+ "Stripe",
+ "Striped",
"Textured",
- "True Silver",
"Vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_ros-4146-jpg"
+ "max_price": 45.16,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/glamor-glitter-silver-red-rasberry-fxx-3213"
},
{
- "sku": "immersion-by-innovations-usa-dwc-immersion-6",
- "handle": "immersion-by-innovations-usa-dwc-immersion-6",
- "title": "Immersion | Innovations USA",
- "vendor": "Innovations USA",
+ "sku": "SKL-300-sample",
+ "handle": "skully-skulls-wallpaper-bronze-on-oil-slick-skl-300",
+ "title": "Skully - Skulls Wallcovering - Bronze on Oil Slick",
+ "vendor": "Phillipe Romano",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Immersion-6.jpg?v=1736199375",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/fab574116079118731086944f96b387a.jpg?v=1734415058",
"tags": [
- "Abstract",
+ "AI-Analyzed-v2",
"Architectural",
- "ASTM E84",
- "Black",
+ "Bling",
+ "Brick",
"Class A Fire Rated",
+ "Cocoa",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
+ "Denim",
+ "Flock Velvet",
+ "Flocked Velvet",
+ "Glitter",
+ "Gold",
"Gray",
- "Immersion-6",
- "Innovations USA",
+ "Light Gray",
+ "Linen",
+ "new flock",
+ "Paper",
+ "Phillipe Romano",
+ "Putty",
+ "Sepia",
+ "Skull",
+ "Skully",
+ "Smoke",
+ "Steel",
+ "Storm",
+ "Tomato",
+ "Traditional",
+ "vinyl",
+ "Wallcovering",
+ "Walnut",
+ "Yellow"
+ ],
+ "max_price": 910,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/skully-skulls-wallpaper-bronze-on-oil-slick-skl-300"
+ },
+ {
+ "sku": "NUD-10099-sample",
+ "handle": "50-pinup-silhouette-silver-and-black-haze-nud-10099-1",
+ "title": "50' Pinup Silhouette - Silver and Black Haze",
+ "vendor": "Designer Wallcoverings",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/c5bef91b9f5f57472ba7557fd895502d_0a4df1d7-aa16-46ae-a7da-d0404bd61ee4.jpg?v=1572309080",
+ "tags": [
+ "Abstract",
+ "Architectural",
+ "Art Deco",
+ "Black",
+ "Bling",
+ "Commercial",
+ "Designer Wallcoverings",
+ "Glitter",
"Metallic",
+ "Paper",
"Silver",
- "Textured",
- "Vinyl",
- "Wallcovering"
+ "Wallcovering",
+ "Woman"
],
"max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/immersion-by-innovations-usa-dwc-immersion-6"
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/50-pinup-silhouette-silver-and-black-haze-nud-10099-1"
},
{
- "sku": "wolfgordonwallcovering_dwwg_sm8005-jpg",
- "handle": "wolfgordonwallcovering_dwwg_sm8005-jpg",
- "title": "SOLID METAL | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "REW-6244-sample",
+ "handle": "lexington-drive-diner-glitter-emboss-rew-6244",
+ "title": "Lexington Drive - Antique Gold | Hollywood Wallcoverings",
+ "vendor": "Designer Wallcoverings",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/sm8005.jpg?v=1762358770",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped_22fa7b49-f5cd-4ddc-b05a-bc9a0fea7b9c.jpg?v=1775515253",
"tags": [
+ "AI-Analyzed-v2",
"Architectural",
+ "Benedict Canyon Collection",
+ "Bling",
"Brown",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
+ "Commercially Cleanable",
"Contemporary",
+ "Designer Wallcoverings",
+ "Embossed Texture",
+ "Glitter",
"Gold",
- "Metallic",
- "Solid",
- "SOLID METAL",
+ "Gold Diner Glitter Vinyl",
+ "Lexington Drive",
+ "Paper",
"Textured",
- "Vinyl",
+ "Traditional",
+ "vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
"Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_sm8005-jpg"
+ "max_price": 66.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/lexington-drive-diner-glitter-emboss-rew-6244"
},
{
- "sku": "wolfgordonwallcovering_dwwg_blr-5026m-jpg",
- "handle": "wolfgordonwallcovering_dwwg_blr-5026m-jpg",
- "title": "Ballari Mylar - Stardust | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "REW-6246-sample",
+ "handle": "lexington-drive-diner-glitter-emboss-rew-6246",
+ "title": "Lexington Drive - Oyster | Hollywood Wallcoverings",
+ "vendor": "Designer Wallcoverings",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/blr-5026M.jpg?v=1762288377",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/017d5204865e68e79f2d66c5cfa07d9a.jpg?v=1572309082",
"tags": [
- "100% Mylar",
- "Abstract",
+ "AI-Analyzed-v2",
+ "Almond",
"Architectural",
- "Ballari Mylar",
- "Black",
- "Brown",
+ "Beige",
+ "Benedict Canyon Collection",
+ "Bling",
+ "Brick",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Contract",
- "Gold",
- "Industrial",
- "Metallic",
- "Mylar",
- "Stardust",
+ "Commercially Cleanable",
+ "Contemporary",
+ "Cream Glitter Vinyl",
+ "Designer Wallcoverings",
+ "Embossed Texture",
+ "Glitter",
+ "Lexington Drive",
+ "Linen",
+ "Silver",
"Textured",
- "Vinyl",
+ "vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_blr-5026m-jpg"
+ "max_price": 66.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/lexington-drive-diner-glitter-emboss-rew-6246"
},
{
- "sku": "wolfgordonwallcovering_dwwg_gsg9-5383-jpg",
- "handle": "wolfgordonwallcovering_dwwg_gsg9-5383-jpg",
- "title": "Glasgow - Copper | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "REW-6245-sample",
+ "handle": "lexington-drive-diner-glitter-emboss-rew-6245",
+ "title": "Lexington Drive - Smoky Pearl | Hollywood Wallcoverings",
+ "vendor": "Designer Wallcoverings",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/gsg9-5383.jpg?v=1762296706",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped_fc099ef7-b83f-4a2a-8324-5bbc62092b25.jpg?v=1775515254",
"tags": [
- "100% Vinyl",
- "abstract",
+ "AI-Analyzed-v2",
"Architectural",
- "Brown",
+ "Benedict Canyon Collection",
+ "Black",
+ "Black Silver Glitter Vinyl",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
- "contemporary",
- "Contract",
- "Copper",
- "geometric",
- "Glasgow",
+ "Commercially Cleanable",
+ "Contemporary",
+ "Designer Wallcoverings",
+ "Embossed Texture",
+ "Glitter",
"Gray",
- "Metallic",
- "Orange",
- "textured",
- "Vinyl",
+ "Lexington Drive",
+ "Textured",
+ "vinyl",
"Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_gsg9-5383-jpg"
+ "max_price": 66.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/lexington-drive-diner-glitter-emboss-rew-6245"
},
{
- "sku": "wolfgordonwallcovering_dwwg_kam-5101-jpg",
- "handle": "wolfgordonwallcovering_dwwg_kam-5101-jpg",
- "title": "Kami - Gold Leaf | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "REW-6248-sample",
+ "handle": "lexington-drive-diner-glitter-emboss-rew-6248",
+ "title": "Lexington Drive - Sienna | Hollywood Wallcoverings",
+ "vendor": "Designer Wallcoverings",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/kam-5101.jpg?v=1762298354",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped_a2eb9ea4-eb15-473e-86d7-a4f6753cd351.jpg?v=1775515255",
"tags": [
- "100% Vinyl",
+ "AI-Analyzed-v2",
"Architectural",
+ "Benedict Canyon Collection",
+ "Bling",
+ "Bronze Glitter Vinyl",
+ "Brown",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
+ "Commercially Cleanable",
"Contemporary",
- "Contract",
- "Embossed",
- "Geometric",
- "Gold",
- "Gold Leaf",
- "Kami",
- "Metallic",
+ "Designer Wallcoverings",
+ "Embossed Texture",
+ "Glitter",
+ "Lexington Drive",
+ "Orange",
+ "Paper",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Yellow"
+ "Traditional",
+ "vinyl",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_kam-5101-jpg"
+ "max_price": 66.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/lexington-drive-diner-glitter-emboss-rew-6248"
},
{
- "sku": "wolfgordonwallcovering_dwwg_kbt-5124-jpg",
- "handle": "wolfgordonwallcovering_dwwg_kbt-5124-jpg",
- "title": "Kabuto - Steel | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "REW-6247-sample",
+ "handle": "lexington-drive-diner-glitter-emboss-rew-6247",
+ "title": "Lexington Drive - Charcoal | Hollywood Wallcoverings",
+ "vendor": "Designer Wallcoverings",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/kbt-5124.jpg?v=1762298865",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cropped_c438696d-a3f2-4325-ae2e-bf8f0a3da2a4.jpg?v=1775515255",
"tags": [
- "100% Mylar",
- "Abstract",
+ "AI-Analyzed-v2",
"Architectural",
- "Brown",
+ "Benedict Canyon Collection",
+ "Black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
- "Contract",
+ "Commercially Cleanable",
+ "Contemporary",
+ "Dark Gray",
+ "Designer Wallcoverings",
+ "Embossed Texture",
+ "Glitter",
"Gray",
- "Industrial",
- "Kabuto",
- "Metallic",
- "Mylar",
+ "Lexington Drive",
"Silver",
- "Steel",
+ "Silver Glitter Vinyl",
"Textured",
- "Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "vinyl",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_kbt-5124-jpg"
+ "max_price": 66.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/lexington-drive-diner-glitter-emboss-rew-6247"
},
{
- "sku": "wolfgordonwallcovering_dwwg_mass-5779-jpg",
- "handle": "wolfgordonwallcovering_dwwg_mass-5779-jpg",
- "title": "Mass - Lake | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "HSW-51500-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51500",
+ "title": "Hollywood Sequin - Purple | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/mass-5779.jpg?v=1762300233",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/de275a20b0e82c57aad318e5d89a51fc.jpg?v=1572309252",
"tags": [
- "23% Nylon",
- "36% Wool",
- "37% Cotton",
- "4% Polyester",
"Abstract",
+ "Amaranth",
"Architectural",
+ "Bling",
"Blue",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Cotton",
- "Lake",
- "Mass",
+ "Eggplant",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Maximalist",
"Metallic",
- "Silver",
+ "Mulberry",
+ "Passes ASTM E84-98",
+ "Pink",
+ "Purple",
+ "Sequin",
+ "Steel",
"Textured",
"Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Woven Upholstery"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_mass-5779-jpg"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51500"
},
{
- "sku": "wolfgordonwallcovering_dwwg_merg-5813-jpg",
- "handle": "wolfgordonwallcovering_dwwg_merg-5813-jpg",
- "title": "Merge - Gold Bracelet | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "HSW-51501-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51501",
+ "title": "Hollywood Sequin - Red | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/merg-5813.jpg?v=1762300760",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/98abe239dbc20035b633981dae1e3515.jpg?v=1572309252",
"tags": [
- "22% Nylon",
- "3% Polyester",
- "30% Cotton",
- "45% Wool",
"Architectural",
- "Beige",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
"Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Gold",
- "Gold Bracelet",
- "Grasscloth",
- "Merge",
+ "Fabric",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Stripe",
+ "Passes ASTM E84-98",
+ "Red",
+ "Sequin",
"Textured",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings",
- "Wool",
- "Woven",
- "Woven Upholstery",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_merg-5813-jpg"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51501"
},
{
- "sku": "wolfgordonwallcovering_dwwg_mru-3296_8-jpg",
- "handle": "wolfgordonwallcovering_dwwg_mru-3296_8-jpg",
- "title": "Marlu - Silver | Wolf Gordon Wallcoverings",
- "vendor": "Wolf Gordon",
+ "sku": "HSW-51502-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51502",
+ "title": "Hollywood Sequin - Teal | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/mru-3296_8.jpg?v=1762301619",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/48cb9c3cfc65b109c7680191ccf6ed66.jpg?v=1572309252",
"tags": [
- "100% Vinyl",
"Architectural",
+ "Black",
+ "Bling",
+ "Blue",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Commercial Wallcoverings",
"Contemporary",
- "Contract",
- "Geometric",
- "Gray",
- "Marlu",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
+ "Passes ASTM E84-98",
+ "Sequin",
"Silver",
"Textured",
"Vinyl",
- "Wallcovering",
- "Wolf Gordon",
- "Wolf Gordon Wallcoverings"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/wolfgordonwallcovering_dwwg_mru-3296_8-jpg"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51502"
},
{
- "sku": "versace-plain-shimmer-pink-wallcovering-versace-1",
- "handle": "versace-plain-shimmer-pink-wallcovering-versace-1",
- "title": "Plain Shimmer Pink Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "HSW-51504-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51504",
+ "title": "Hollywood Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/cdd3a4f35efd781a1146979cbbcbcf95_6ad50bb0-bc76-4b70-95fc-416f94e485a1.jpg?v=1773706491",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/c59db2ee5850cba72a021037edfde779.jpg?v=1572309252",
"tags": [
- "[Object Object]",
- "A.S. Création",
- "AI-Analyzed-v2",
"Architectural",
- "Bedroom",
+ "Black",
+ "Bling",
"Class A Fire Rated",
- "Color: Pink",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "display_variant",
- "Italian",
- "Light Coral",
- "Living Room",
- "Luxury",
- "Office",
- "Paper",
- "Plain Shimmer Pink Wallcovering",
- "Serene",
- "Solid",
+ "Fabric",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Hollywood Sequin",
+ "Lattice",
+ "Metallic",
+ "Passes ASTM E84-98",
+ "Sequin",
+ "Silver",
"Textured",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Plain Shimmer",
- "Versace VI",
"Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-plain-shimmer-pink-wallcovering-versace-1"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51504"
},
{
- "sku": "constantino-crackle-vinyl-dwx-58078",
- "handle": "constantino-crackle-vinyl-dwx-58078",
- "title": "Constantino Crackle Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51503-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51503",
+ "title": "Hollywood Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58078-sample-constantino-crackle-vinyl-hollywood-wallcoverings.jpg?v=1775708783",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/7b8c1c32a66c657f35e1d8494ff7ff15.jpg?v=1572309252",
"tags": [
- "54\" Width",
- "Abstract",
"Architectural",
- "Beige",
- "Commercial",
- "Commercial Wallcovering",
- "Contract",
- "Contract Wallcovering",
- "Crackle",
- "Distressed",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Hollywood Sequin",
+ "Lattice",
+ "Metallic",
+ "Passes ASTM E84-98",
+ "Sequin",
+ "Silver",
+ "Textured",
+ "Tomato",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51503"
+ },
+ {
+ "sku": "HSW-51507-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51507",
+ "title": "Hollywood Sequin - Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/c1944e5964687b1542f3dc6f8e0708ae.jpg?v=1572309252",
+ "tags": [
+ "Architectural",
+ "Art Deco",
+ "Bling",
+ "Blonde",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Hollywood Sequin",
"Metallic",
- "Neutral",
- "Texture",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Traditional",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/constantino-crackle-vinyl-dwx-58078"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51507"
},
{
- "sku": "crushed-costoluto-vinyl-dwx-58009",
- "handle": "crushed-costoluto-vinyl-dwx-58009",
- "title": "Crushed Costoluto Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51506-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51506",
+ "title": "Hollywood Sequin - Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58009-sample-crushed-costoluto-vinyl-hollywood-wallcoverings.jpg?v=1775709696",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/efe80ddfdac2c6f44d040b32d12605fd.jpg?v=1572309252",
"tags": [
- "54\" Width",
- "Abstract",
"Architectural",
- "Beige",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Contract",
- "Contract Wallcovering",
- "Crushed",
+ "Contemporary",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Hollywood Sequin",
"Metallic",
- "Neutral",
- "Organic",
- "Texture",
+ "Passes ASTM E84-98",
+ "Sepia",
+ "Sequin",
"Textured",
- "Traditional",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/crushed-costoluto-vinyl-dwx-58009"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51506"
},
{
- "sku": "crushed-costoluto-vinyl-dwx-58006",
- "handle": "crushed-costoluto-vinyl-dwx-58006",
- "title": "Crushed Costoluto Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51505-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51505",
+ "title": "Hollywood Sequin - Bronze | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58006-sample-crushed-costoluto-vinyl-hollywood-wallcoverings.jpg?v=1775709686",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/b45513e11ba9868087337988e2e7a809.jpg?v=1572309252",
"tags": [
- "54\" Width",
- "Abstract",
"Architectural",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Crushed",
- "Dark Gold",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Hollywood Sequin",
+ "Lattice",
"Metallic",
- "Neutral",
- "Organic",
- "Texture",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/crushed-costoluto-vinyl-dwx-58006"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51505"
},
{
- "sku": "crushed-costoluto-vinyl-dwx-58010",
- "handle": "crushed-costoluto-vinyl-dwx-58010",
- "title": "Crushed Costoluto Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51509-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51509",
+ "title": "Hollywood Sequin - Black | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58010-sample-crushed-costoluto-vinyl-hollywood-wallcoverings.jpg?v=1775709699",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/9e3f6f6ca71fc647da0fa048f0be3d03.jpg?v=1572309252",
"tags": [
- "54\" Width",
"Abstract",
"Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Contract",
- "Contract Wallcovering",
- "Crushed",
- "Dark Gold",
- "Gold",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Contemporary",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Neutral",
- "Organic",
- "Sophisticated",
- "Texture",
+ "Multicolored",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Traditional",
- "Type 2 Vinyl",
"Vinyl",
- "Wallcovering",
- "Warm",
- "Wide Width"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/crushed-costoluto-vinyl-dwx-58010"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51509"
},
{
- "sku": "martin-s-metallic-grasscloth-vinyl-dwx-58168",
- "handle": "martin-s-metallic-grasscloth-vinyl-dwx-58168",
- "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51508-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51508",
+ "title": "Hollywood Sequin - Black | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58168-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724221",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/97a189441f1276400dcc9206daebc879.jpg?v=1572309252",
"tags": [
- "54\" Width",
"Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Fabric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Lattice",
"Metallic",
- "Minimalist",
- "Natural Look",
- "Neutral",
+ "Passes ASTM E84-98",
+ "Sequin",
"Silver",
- "Striped",
- "Taupe",
"Textured",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Wide Width"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/martin-s-metallic-grasscloth-vinyl-dwx-58168"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51508"
},
{
- "sku": "martin-s-metallic-grasscloth-vinyl-dwx-58167",
- "handle": "martin-s-metallic-grasscloth-vinyl-dwx-58167",
- "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51511-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51511",
+ "title": "Hollywood Sequin - Beige | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58167-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724195",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/eae943d6f0f6e5bb18b4bb5c2e61f44c.jpg?v=1572309252",
"tags": [
- "54\" Width",
"Architectural",
"Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Horizontal",
- "Hospitality",
- "Light Beige",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Hollywood Sequin",
+ "Iridescent",
+ "Lattice",
"Metallic",
- "Minimalist",
- "Natural Look",
- "Neutral",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/martin-s-metallic-grasscloth-vinyl-dwx-58167"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51511"
},
{
- "sku": "martin-s-metallic-grasscloth-vinyl-dwx-58172",
- "handle": "martin-s-metallic-grasscloth-vinyl-dwx-58172",
- "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51510-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51510",
+ "title": "Hollywood Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58172-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724324",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/19235740651b3832a926e3473c7527c5.jpg?v=1572309252",
"tags": [
- "54\" Width",
"Architectural",
- "Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Natural",
- "Natural Look",
- "Neutral",
+ "Passes ASTM E84-98",
+ "Rainbow",
+ "Sequin",
"Silver",
"Textured",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/martin-s-metallic-grasscloth-vinyl-dwx-58172"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51510"
},
{
- "sku": "martin-s-metallic-grasscloth-vinyl-dwx-58171",
- "handle": "martin-s-metallic-grasscloth-vinyl-dwx-58171",
- "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51514-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51514",
+ "title": "Hollywood Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58171-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724297",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/IMG_89932.heic?v=1712688011",
"tags": [
- "54\" Width",
"Architectural",
- "Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gray",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Hollywood Sequin",
"Metallic",
- "Minimalist",
- "Natural Look",
- "Neutral",
- "Striped",
+ "Passes ASTM E84-98",
+ "Sequin",
+ "Silver",
"Textured",
- "Type 2 Vinyl",
"Vinyl",
- "Wallcovering",
- "Wide Width"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/martin-s-metallic-grasscloth-vinyl-dwx-58171"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51514"
},
{
- "sku": "martin-s-metallic-grasscloth-vinyl-dwx-58169",
- "handle": "martin-s-metallic-grasscloth-vinyl-dwx-58169",
- "title": "Martin's Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51513-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51513",
+ "title": "Hollywood Sequin - Pink | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58169-sample-martin-s-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775724247",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/IMG_8986.heic?v=1712685142",
"tags": [
- "54\" Width",
"Architectural",
- "Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Fabric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Natural Look",
- "Neutral",
+ "Passes ASTM E84-98",
+ "Pink",
+ "sequin",
"Silver",
- "Striped",
+ "Solid",
"Textured",
- "Traditional",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Wide Width"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/martin-s-metallic-grasscloth-vinyl-dwx-58169"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51513"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58155",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58155",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51512-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51512",
+ "title": "Hollywood Sequin - Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58155-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725434",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/fbd3334c164cce5f7efd35454e67ff77.jpg?v=1572309252",
"tags": [
- "54\" Width",
"Architectural",
"Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Hollywood Sequin",
"Metallic",
- "Minimalist",
- "Natural Look",
- "Neutral",
- "Silver",
- "Striped",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58155"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51512"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58157",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58157",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51517-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51517",
+ "title": "Hollywood Sequin - White | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58157-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725488",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/4d592fe599a9eb20a872b15fa8584e23.jpg?v=1572309253",
"tags": [
- "54\" Width",
"Architectural",
- "Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Natural",
- "Natural Look",
- "Neutral",
+ "Passes ASTM E84-98",
+ "Sequin",
"Silver",
- "Striped",
"Textured",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58157"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51517"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58156",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58156",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51516-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51516",
+ "title": "Hollywood Sequin - White | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58156-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725462",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/7a146abdf439f8eeb78009d8da57077d.jpg?v=1572309253",
"tags": [
- "54\" Width",
+ "Abstract",
"Architectural",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Grasscloth",
- "Gray",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Light Gray",
+ "Fabric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Iridescent",
"Metallic",
- "Minimalist",
- "Natural Look",
- "Neutral",
- "Striped",
+ "Passes ASTM E84-98",
+ "Sequin",
+ "Silver",
"Textured",
- "Type 2 Vinyl",
- "Vinyl",
"Wallcovering",
- "Wide Width"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58156"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51516"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58161",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58161",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51515-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51515",
+ "title": "Hollywood Sequin - White | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58161-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725591",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/fe23d537029c2b11535cf81e289b49d5.jpg?v=1572309252",
"tags": [
- "54\" Width",
- "Animal",
"Architectural",
- "Bedroom",
- "Beige",
- "Brown",
- "Color: Brown",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Embossed Texture",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Hallway",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Insects",
- "Light Brown",
- "Linen Texture",
- "Living Room",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Light Gray",
"Metallic",
- "Minimalist",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Serene",
- "Stripe",
- "Tan",
- "Taupe",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
"Vinyl",
"Wallcovering",
- "Wide Width",
- "Woven"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58161"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51515"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58158",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58158",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51519-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51519",
+ "title": "Hollywood Sequin - Red | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58158-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725515",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/9eb5c5b21fd1a3de27905fbd47749c50.jpg?v=1572309253",
"tags": [
- "54\" Width",
"Architectural",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Gold",
- "Grasscloth",
- "hollywood",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Metallic",
- "Metallic Gold",
- "Natural Look",
- "Neutral",
- "Striped",
- "Textured",
- "Traditional",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Wide Width"
- ],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58158"
- },
- {
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58166",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58166",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
- "product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58166-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725720",
- "tags": [
- "54\" Width",
- "Animal",
- "Architectural",
- "Bedroom",
- "Beige",
- "Champagne",
- "Coastal",
- "Color: Beige",
- "Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Cream",
- "Embossed Texture",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Hallway",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Insects",
- "Light Beige",
- "Linen Texture",
- "Living Room",
+ "Fabric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Hollywood Sequin",
"Metallic",
- "Minimalist",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Sand",
- "Serene",
- "Stripe",
- "Tan",
+ "Passes ASTM E84-98",
+ "Red",
+ "Sequin",
"Textured",
- "Traditional",
- "Transitional",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
- "Vinyl",
"Wallcovering",
- "White",
- "Wide Width",
- "Woven",
"Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58166"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51519"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58164",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58164",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51518-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51518",
+ "title": "Hollywood Sequin - Gray | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58164-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725666",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/7e21a27e25e835850ca1f102cd10e8db.jpg?v=1572309253",
"tags": [
- "54\" Width",
- "Animal",
"Architectural",
- "Bedroom",
- "Blue",
- "Color: Blue",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Embossed Texture",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gray",
- "Hallway",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Insects",
- "Light Gray",
- "Living Room",
+ "Hollywood Sequin",
"Metallic",
- "Minimalist",
- "Modern",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Serene",
+ "Passes ASTM E84-98",
+ "Sequin",
"Silver",
- "Stripe",
- "Teal",
"Textured",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
"Vinyl",
- "Wallcovering",
- "White",
- "Wide Width",
- "Woven"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58164"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51518"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58163",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58163",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51521-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51521",
+ "title": "Hollywood Sequin - Black | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58163-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725643",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/469e171cc188a4822a0e4e3febc08b0e.jpg?v=1572309253",
"tags": [
- "54\" Width",
"Architectural",
- "Bedroom",
- "Beige",
- "Brown",
- "Champagne",
- "Coastal",
- "Color: Gold",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Embossed Texture",
- "Gold",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Grasscloth Weave",
- "Gray",
- "Hallway",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Light Beige",
- "Living Room",
+ "Fabric",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Sand",
+ "Passes ASTM E84-98",
+ "Sequin",
"Silver",
- "Stripe",
- "Tan",
- "Taupe",
"Textured",
- "Traditional",
- "Transitional",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Warm",
- "Wide Width",
- "Woven",
- "Yellow"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58163"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51521"
},
{
- "sku": "milbanks-metallic-grasscloth-vinyl-dwx-58162",
- "handle": "milbanks-metallic-grasscloth-vinyl-dwx-58162",
- "title": "Milbanks Metallic Grasscloth Vinyl | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51520-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51520",
+ "title": "Hollywood Sequin - Purple | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/dwx-58162-sample-milbanks-metallic-grasscloth-vinyl-hollywood-wallcoverings.jpg?v=1775725617",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/9688d3a92e0db3ec8a495af9f09e0b9e.jpg?v=1572309253",
"tags": [
- "54\" Width",
- "Animal",
"Architectural",
- "Bedroom",
- "Beige",
- "Color: Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Contract",
- "Contract Wallcovering",
- "Cream",
- "Ecru",
- "Embossed Texture",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Hallway",
- "Hollywood Wallcoverings",
- "Hospitality",
- "Insects",
- "Light Beige",
- "Light Gray",
- "Linen",
- "Linen Texture",
- "Living Room",
+ "Fabric",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Minimalist",
- "Natural",
- "Natural Look",
- "Natural Texture",
- "Off-white",
- "Organic Modern",
- "Pale Blue",
- "Pale Grey",
- "Serene",
- "Stripe",
+ "Passes ASTM E84-98",
+ "Purple",
+ "Sequin",
+ "Silver",
"Textured",
- "Transitional",
- "Tropicana Durable Vinyls",
- "Type 2 Durable Vinyl",
- "Type 2 Vinyl",
- "Vinyl",
- "Wallcovering",
- "Wide Width",
- "Woven"
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/milbanks-metallic-grasscloth-vinyl-dwx-58162"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51520"
},
{
- "sku": "regal-lattice-screen-printed-wallpaper-tre-12907",
- "handle": "regal-lattice-screen-printed-wallpaper-tre-12907",
- "title": "Regal Lattice - Screen Printed Wallcovering",
- "vendor": "Designer Wallcoverings",
+ "sku": "HSW-51524-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51524",
+ "title": "Hollywood Sequin - Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/3547fe79068d43fd86725b501b7c7f01.jpg?v=1572309178",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/6abda3c871bf3aca90c8cd129cddf41d.jpg?v=1572309253",
"tags": [
"Architectural",
- "Art Deco",
+ "Black",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
"Commercial",
- "Designer Wallcoverings",
+ "Contemporary",
+ "Fabric",
"Geometric",
- "Gray",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Modern",
- "Paper",
- "Screen Print",
- "Silver",
- "Stripe",
- "Suede",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Trellis",
"Wallcovering"
],
- "max_price": 142.16,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/regal-lattice-screen-printed-wallpaper-tre-12907"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51524"
},
{
- "sku": "always-room-for-ice-cream-small-mural-by-retro-walls-rtr-37217",
- "handle": "always-room-for-ice-cream-small-mural-by-retro-walls-rtr-37217",
- "title": "Always Room For Ice Cream Small Mural by Retro Walls",
- "vendor": "Traditional Whimsy",
+ "sku": "HSW-51523-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51523",
+ "title": "Hollywood Sequin - Magenta | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/02e8544327c89298ec5a27a291006a75.jpg?v=1572309701",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/eb7e9324c5fa6db87e3768c84ef01243.jpg?v=1572309253",
"tags": [
- "Abstract",
"Architectural",
- "Beige",
- "Blue",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
- "Green",
- "Heavy-duty Wallcovering with paper top-layer and non-woven backing // Colourfast and washable with a soft cloth // Butted seam (but",
- "Ice Cream Cone",
+ "Contemporary",
+ "Fabric",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
"Metallic",
- "Multi",
- "Mural",
- "Paper",
+ "Passes ASTM E84-98",
"Pink",
- "Retro",
+ "Sequin",
"Textured",
- "Traditional Whimsy",
- "Wallcovering",
- "Whimsical"
+ "Wallcovering"
],
- "max_price": 84,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/always-room-for-ice-cream-small-mural-by-retro-walls-rtr-37217"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51523"
},
{
- "sku": "word-walls-scr-8126",
- "handle": "word-walls-scr-8126",
- "title": "Word Walls",
- "vendor": "Designer Wallcoverings",
+ "sku": "HSW-51522-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51522",
+ "title": "Hollywood Sequin - Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/035314c024143a7310f65960cd6d4d93.jpg?v=1572309108",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/05252e35f60ceb60fb9f66ed4d024b19.jpg?v=1572309253",
"tags": [
- "Abstract",
"Architectural",
- "Beige",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
"Contemporary",
- "Designer Wallcoverings",
+ "Fabric",
+ "Geometric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "Luxury Screen Printed Wallpapers",
+ "Hollywood Sequin",
"Metallic",
- "Paper",
- "Screen Print",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
"Wallcovering",
- "Whimsical Screen Prints Vol. 1",
- "White",
"Yellow"
],
- "max_price": 263.82,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/word-walls-scr-8126"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51522"
},
{
- "sku": "regal-lattice-screen-printed-wallpaper-tre-12906",
- "handle": "regal-lattice-screen-printed-wallpaper-tre-12906",
- "title": "Regal Lattice - Screen Printed Wallcovering",
- "vendor": "Designer Wallcoverings",
+ "sku": "HSW-51526-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51526",
+ "title": "Hollywood Sequin - White | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/765a7692adba432658470a08ef9cbcdf.jpg?v=1572309178",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/96899f7e4f23e376b65ddb07bbdd3af7.jpg?v=1572309253",
"tags": [
"Architectural",
- "Art Deco",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Designer Wallcoverings",
+ "Contemporary",
+ "Denim",
"Geometric",
- "Gray",
- "Lattice",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Lemon",
"Metallic",
- "Modern",
- "Paper",
- "Screen Print",
+ "Passes ASTM E84-98",
+ "Sequin",
"Silver",
- "Suede",
+ "Smoke",
"Textured",
- "Trellis",
+ "Vinyl",
"Wallcovering",
"White"
],
- "max_price": 99.06,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/regal-lattice-screen-printed-wallpaper-tre-12906"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51526"
},
{
- "sku": "moroccan-gold-shimmer-faux-tile-wbs-39662",
- "handle": "moroccan-gold-shimmer-faux-tile-wbs-39662",
- "title": "Moroccan Gold Shimmer Faux Tile | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "HSW-51525-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51525",
+ "title": "Hollywood Sequin - White | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/wbs-39662-sample-moroccan-gold-shimmer-faux-tile-hollywood-wallcoverings.jpg?v=1775726565",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/6cfd905aa6c2eef1aae4721d8f7c7230.jpg?v=1572309253",
"tags": [
"Architectural",
- "Bathroom",
- "Bricks and Stones",
- "Brown",
- "Burnt Sienna",
- "Charcoal",
+ "Bling",
"Class A Fire Rated",
- "Color: Gold",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Embossed Texture",
- "Faux",
- "Faux Finish",
+ "Fabric",
"Geometric",
- "Gold",
- "Gray",
- "Green",
- "Hallway",
- "Hollywood Wallcoverings",
- "Olive",
- "Orange",
- "Organic",
- "Organic Modern",
- "Paper Backed Solid Vinyl Wallcoverings",
- "Powder Room",
- "Rich Woods",
- "Rustic",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Iridescent",
+ "Metallic",
+ "Passes ASTM E84-98",
+ "Sequin",
+ "Silver",
"Textured",
- "Tile",
- "Vinyl",
"Wallcovering",
- "Wallcoverings",
- "Wood"
+ "White"
],
- "max_price": 46.31,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/moroccan-gold-shimmer-faux-tile-wbs-39662"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51525"
},
{
- "sku": "glyph-by-innovations-usa-dwc-glyph-6",
- "handle": "glyph-by-innovations-usa-dwc-glyph-6",
- "title": "Glyph | Innovations USA",
- "vendor": "Innovations USA",
+ "sku": "HSW-51527-sample",
+ "handle": "hollywood-sequin-wallcoverings-hsw-51527",
+ "title": "Hollywood Sequin - Black | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/Glyph-6.jpg?v=1736199454",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/f3185ebd4d93858e1d057b17c95a8d51.jpg?v=1572309253",
"tags": [
"Architectural",
- "ASTM E84",
- "Brown",
+ "Black",
+ "Bling",
"Class A Fire Rated",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Geometric",
- "Glyph-6",
- "Gray",
- "Innovations USA",
+ "Fabric",
+ "Glass Bead",
+ "Glitter",
+ "Glitter Walls",
+ "Hollywood Sequin",
+ "Iridescent",
"Metallic",
- "Silver",
+ "Passes ASTM E84-98",
+ "Sequin",
"Textured",
- "Vinyl",
"Wallcovering"
],
- "max_price": 3.5,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/glyph-by-innovations-usa-dwc-glyph-6"
+ "max_price": 59.99,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-sequin-wallcoverings-hsw-51527"
},
{
- "sku": "mica-madness-real-cork-chip-wallpapers-mic-98624",
- "handle": "mica-madness-real-cork-chip-wallpapers-mic-98624",
- "title": "Mica Madness Real Cork Chip s | Phillipe Romano",
- "vendor": "Phillipe Romano",
+ "sku": "DWS-59516-sample",
+ "handle": "glima-swirl-glitz-stripe-dws-59516",
+ "title": "Glima Swirl Glitz Stripe",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/747552c419b9120a603da7474b097fae.jpg?v=1775083068",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/60cba14b3cc221b859613014070b992f.jpg?v=1572309484",
"tags": [
- "Abstract",
+ "21 meter minimum!!!",
"Architectural",
- "Bathroom",
- "Bedroom",
+ "Beige",
+ "Billionaire'S Club",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
"Contemporary",
- "Cork",
- "Gray",
- "Light Blue",
- "Living Room",
- "Metallic",
- "Mica",
- "Minimalist",
- "Modern",
- "Natural",
- "Naturals",
- "Office",
- "Phillipe Romano",
- "Phillipe Romano Naturals",
- "Silver",
- "Textural",
+ "Glass Bead",
+ "Glass Beaded",
+ "Glitter",
+ "Stripe",
"Textured",
+ "Vinyl",
"Wallcovering",
"White",
- "Wuhan Woven Wallcovering"
+ "White Cream"
],
- "max_price": 34.12,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/mica-madness-real-cork-chip-wallpapers-mic-98624"
+ "max_price": 359.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/glima-swirl-glitz-stripe-dws-59516"
},
{
- "sku": "benedict-canyon-sisal-hlw-73026",
- "handle": "benedict-canyon-sisal-hlw-73026",
- "title": "Benedict Canyon Sisal | Hollywood Wallcoverings",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "DWS-59515-sample",
+ "handle": "glima-swirl-glitz-stripe-dws-59515",
+ "title": "Glima Swirl Glitz Stripe",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/HLW-73026-sample-clean.jpg?v=1774483093",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/6f26bb4079dc08952c9e56859687e1df.jpg?v=1572309484",
"tags": [
+ "21 meter minimum!!!",
"Architectural",
- "Bathroom",
- "Beige",
- "Champagne",
- "Color: Metallic",
+ "Billionaire'S Club",
+ "Bling",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Geometric",
"Glass Bead",
+ "Glass Beaded",
+ "Glitter",
"Gray",
- "Hallway",
- "Hollywood Wallcoverings",
- "Light Grey",
- "Metallic",
- "Modern",
- "Mosaic",
- "Natural",
- "Natural Texture",
- "Naturally Glamorous",
- "Powder Room",
- "Silver",
- "Sisal",
- "Sophisticated",
+ "Paper",
+ "Stripe",
"Textured",
- "Tile",
"Wallcovering",
- "Woven",
- "Yellow"
+ "White",
+ "White Pearl"
],
- "max_price": 63.43,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/benedict-canyon-sisal-hlw-73026"
+ "max_price": 359.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/glima-swirl-glitz-stripe-dws-59515"
},
{
- "sku": "faux-glass-bead-wallpaper-102-fgb-102",
- "handle": "faux-glass-bead-wallpaper-102-fgb-102",
- "title": "Faux Glass Bead Wallcovering - 102 Taupe Shimmer",
- "vendor": "Hollywood Wallcoverings",
+ "sku": "DWS-59518-sample",
+ "handle": "glima-swirl-glitz-stripe-dws-59518",
+ "title": "Glima Swirl Glitz Stripe",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/fgb-102-sample-faux-glass-bead-wallcovering.jpg?v=1775711794",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/a3d8175e7cf9e32ca4ad792079e38f4f.jpg?v=1572309484",
"tags": [
- "AI-Analyzed-v2",
- "Alabaster",
+ "21 meter minimum!!!",
+ "Abstract",
"Architectural",
- "Bedroom",
+ "Billionaire'S Club",
"Bling",
"Class A Fire Rated",
- "Color: Grey",
"Commercial",
- "Commercial Wallcovering",
- "Commercially Rated Cleanable",
"Contemporary",
- "Faux Finish",
- "Faux Glass Bead Wallcovering",
"Glass Bead",
+ "Glass Beaded",
+ "Glitter",
"Gray",
- "Grey",
- "Hallway",
- "Hollywood Wallcoverings",
- "Light Gray",
- "Light Grey",
- "Linen",
- "Living Room",
- "Minimalist",
- "Modern",
- "Platinum",
- "Serene",
+ "Metallic",
"Silver",
- "Solid",
"Textured",
- "vinyl",
+ "Vinyl",
"Wallcovering"
],
- "max_price": 82.74,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/faux-glass-bead-wallpaper-102-fgb-102"
+ "max_price": 359.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/glima-swirl-glitz-stripe-dws-59518"
},
{
- "sku": "ernesto-s-retro-geometric-scr-8065",
- "handle": "ernesto-s-retro-geometric-scr-8065",
- "title": "Ernesto's Retro Geometric",
- "vendor": "Designer Wallcoverings",
+ "sku": "DWS-59517-sample",
+ "handle": "glima-swirl-glitz-stripe-dws-59517",
+ "title": "Glima Swirl Glitz Stripe",
+ "vendor": "Glass Beaded",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/1b2f9d59b3240946335ea39c1bc32d5d.jpg?v=1572309106",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/3c9b0991d40e488adbe52661cf789403.jpg?v=1572309484",
"tags": [
+ "21 meter minimum!!!",
+ "Abstract",
"Architectural",
"Beige",
+ "Billionaire'S Club",
+ "Bling",
+ "Bronze",
+ "Cocoa",
"Commercial",
- "Designer Wallcoverings",
- "Floral",
+ "Contemporary",
+ "Glass Bead",
+ "Glass Beaded",
+ "Glitter",
"Gold",
- "Luxury Screen Printed Wallpapers",
"Metallic",
- "Moss",
"Paper",
- "Screen Print",
- "Traditional",
- "Vine",
+ "Textured",
"Wallcovering",
- "Whimsical Screen Prints Vol. 1",
- "White",
"Yellow"
],
- "max_price": 216.71,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/ernesto-s-retro-geometric-scr-8065"
+ "max_price": 359.41,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/glima-swirl-glitz-stripe-dws-59517"
},
{
- "sku": "regal-lattice-screen-printed-wallpaper-tre-12908",
- "handle": "regal-lattice-screen-printed-wallpaper-tre-12908",
- "title": "Regal Lattice - Screen Printed Wallcovering",
- "vendor": "Designer Wallcoverings",
+ "sku": "GLM-52003--SAMPLE",
+ "handle": "hollywood-glamour-sequin-golden-zebra-glm-52003",
+ "title": "Hollywood Glamour Sequin - Golden Zebra | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/09620171f63a6edf9af7fcb2057d1f67.jpg?v=1572309178",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-golden-zebra-glm-52003-swatch-spin.gif?v=1775027275",
"tags": [
+ "Abstract",
"Architectural",
- "Art Deco",
+ "Black",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
"Commercial",
- "Designer Wallcoverings",
- "Geometric",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
"Gold",
- "Gray",
- "Lattice",
+ "Hollywood Glamour Sequin Glass",
"Metallic",
- "Modern",
- "Paper",
- "Screen Print",
- "Suede",
+ "Sequin",
"Textured",
- "Trellis",
+ "Vinyl",
"Wallcovering",
"Yellow"
],
- "max_price": 99.06,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/regal-lattice-screen-printed-wallpaper-tre-12908"
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-golden-zebra-glm-52003"
},
{
- "sku": "regal-lattice-screen-printed-wallpaper-tre-12905",
- "handle": "regal-lattice-screen-printed-wallpaper-tre-12905",
- "title": "Regal Lattice - Screen Printed Wallcovering",
- "vendor": "Designer Wallcoverings",
+ "sku": "GLM-52000--SAMPLE",
+ "handle": "hollywood-glamour-sequin-blush-glm-52000",
+ "title": "Hollywood Glamour Sequin - Blush | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/9ccc6e8f1d2d741b91faf46f439bd12f.jpg?v=1572309178",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-blush-glm-52000-swatch-spin.gif?v=1775027036",
"tags": [
+ "Abstract",
"Architectural",
- "Art Deco",
- "Beige",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Designer Wallcoverings",
- "Geometric",
- "Gold",
- "Lattice",
+ "Commercial Wallcovering",
+ "Contemporary",
+ "display_variant",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
"Metallic",
- "Modern",
- "Paper",
- "Screen Print",
- "Suede",
+ "Multi",
+ "Pink",
+ "Red",
+ "Rose Gold",
+ "Sequin",
+ "Shell",
+ "Silver",
"Textured",
- "Trellis",
+ "Vinyl",
"Wallcovering",
- "Yellow"
+ "Walnut"
],
- "max_price": 99.06,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/regal-lattice-screen-printed-wallpaper-tre-12905"
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-blush-glm-52000"
},
{
- "sku": "mica-madness-real-cork-chip-wallpapers-mic-98621",
- "handle": "mica-madness-real-cork-chip-wallpapers-mic-98621",
- "title": "Mica Madness Real Cork Chip s | Phillipe Romano",
- "vendor": "Phillipe Romano",
+ "sku": "GLM-52008--SAMPLE",
+ "handle": "hollywood-glamour-sequin-cream-java-brown-glm-52008",
+ "title": "Hollywood Glamour Sequin - Cream Java Brown | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/1d13ceb2cc53fca0c0eed77d922f1bda.jpg?v=1775082717",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-cream-java-brown-glm-52008-swatch-spin.gif?v=1775027117",
"tags": [
"Abstract",
"Architectural",
- "Bedroom",
+ "Beige",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
"Commercial",
"Contemporary",
- "Cork",
- "Gray",
- "Light Silver Grey",
- "Living Room",
+ "display_variant",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Gold",
+ "Hollywood Glamour Sequin Glass",
"Metallic",
- "Mica",
- "Minimalist",
- "Modern",
- "Natural",
- "Naturals",
- "Nickel",
- "Office",
- "Paper",
- "Phillipe Romano",
- "Phillipe Romano Naturals",
- "Retail",
- "Silver",
- "Solid/Textural",
+ "Sequin",
"Textured",
+ "Vinyl",
"Wallcovering",
- "White",
- "Wuhan Woven Wallcovering"
+ "Walnut",
+ "Yellow"
],
- "max_price": 34.12,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/mica-madness-real-cork-chip-wallpapers-mic-98621"
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-cream-java-brown-glm-52008"
},
{
- "sku": "versace-home-shimmer-cream-wallcovering-versace",
- "handle": "versace-home-shimmer-cream-wallcovering-versace",
- "title": "Versace Home Shimmer Cream Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "GLM-52007--SAMPLE",
+ "handle": "hollywood-glamour-sequin-electric-fuschia-pink-glm-52007",
+ "title": "Hollywood Glamour Sequin - Electric Fuschia Pink | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/3b429e45516f21a5b069734b19b8d0de.jpg?v=1773706422",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-electric-fuschia-pink-glm-52007-swatch-spin.gif?v=1775027169",
"tags": [
- "[Object Object]",
- "A.S. Création",
+ "Abstract",
"Architectural",
- "Bedroom",
- "Beige",
+ "Bling",
"Class A Fire Rated",
- "Color: Beige",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
+ "Cranberry",
"display_variant",
- "Hallway",
- "Italian",
- "Living Room",
- "Luxury",
- "Paste the wall",
- "Serene",
- "Solid",
+ "Fuschia",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Pink",
+ "Rosewood",
+ "Sequin",
"Textured",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Home Shimmer",
- "Versace VI",
- "Wallcovering",
- "Walnut"
+ "Vinyl",
+ "Wallcovering"
],
- "max_price": 289.59,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-home-shimmer-cream-wallcovering-versace"
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-electric-fuschia-pink-glm-52007"
},
{
- "sku": "versace-plain-glitter-gold-cream-wallcovering-versace",
- "handle": "versace-plain-glitter-gold-cream-wallcovering-versace",
- "title": "Versace Plain Glitter Gold, Cream Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "GLM-52004--SAMPLE",
+ "handle": "hollywood-glamour-sequin-pinky-town-glm-52004",
+ "title": "Hollywood Glamour Sequin - Pinky Town | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/c0f71a29af59bb8980ec7de9eb316446.jpg?v=1773706480",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-pinky-town-glm-52004-swatch-spin.gif?v=1775027800",
"tags": [
- "A.S. Création",
- "AI-Analyzed-v2",
+ "Abstract",
"Architectural",
- "Bedroom",
- "Beige",
- "Black",
- "Brown",
+ "Bling",
+ "Bubblegum",
"Class A Fire Rated",
- "Color: Gold",
"Commercial",
"Commercial Wallcovering",
"Contemporary",
- "Cream Wallcovering",
+ "Cotton",
+ "Cyan",
"display_variant",
- "Gold",
- "Gray",
- "Italian",
- "Living Room",
- "Luxury",
- "Mustard Yellow",
- "Office",
- "Paper",
- "Paste the wall",
- "Solid",
+ "European",
+ "European Fire Rated; Class 2 : Full Fire Report Available",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Pink",
+ "Sequin",
+ "Silver",
"Textured",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Plain Glitter",
- "Versace Plain Glitter Gold",
- "Versace VI",
+ "Vinyl",
"Wallcovering",
- "Walnut Brown",
- "Warm",
- "White",
- "Yellow"
+ "Wheat"
],
- "max_price": 289.59,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-plain-glitter-gold-cream-wallcovering-versace"
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-pinky-town-glm-52004"
},
{
- "sku": "versace-plain-shimmer-gold-yellow-wallcovering-versace",
- "handle": "versace-plain-shimmer-gold-yellow-wallcovering-versace",
- "title": "Plain Shimmer Gold, Yellow Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "GLM-52010--SAMPLE",
+ "handle": "hollywood-glamour-sequin-deep-red-bordeaux-glm-52010",
+ "title": "Hollywood Glamour Sequin - Deep Red Bordeaux | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/584a9fcd137eba530f12252919caef63.jpg?v=1773706487",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-deep-red-bordeaux-glm-52010-swatch-spin.gif?v=1775027141",
"tags": [
- "A.S. Création",
- "AI-Analyzed-v2",
+ "Abstract",
"Architectural",
- "Baroque",
- "Bedroom",
- "Beige",
- "Brown",
+ "Bling",
+ "Burgundy",
"Class A Fire Rated",
- "Color: Gold",
"Commercial",
- "Commercial Wallcovering",
- "Damask",
- "Dining Room",
"display_variant",
- "Estimated Type: Vinyl",
- "Floral",
- "Gold",
- "Goldenrod",
- "Italian",
- "Living Room",
- "Luxe",
- "Luxurious",
- "Luxury",
- "Paper",
- "Plain Shimmer Gold",
- "Traditional",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Plain Shimmer",
- "Versace VI",
- "Wallcovering",
- "Yellow",
- "Yellow Wallcovering"
+ "Glam",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Red",
+ "Sequin",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
],
- "max_price": 434.39,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-plain-shimmer-gold-yellow-wallcovering-versace"
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-deep-red-bordeaux-glm-52010"
},
{
- "sku": "versace-plain-shimmer-grey-wallcovering-versace-1",
- "handle": "versace-plain-shimmer-grey-wallcovering-versace-1",
- "title": "Plain Shimmer Grey Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "GLM-52009--SAMPLE",
+ "handle": "hollywood-glamour-sequin-silver-multi-color-glm-52009",
+ "title": "Hollywood Glamour Sequin - Silver Multi Color | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/e0a3e3fcc7daac3ee70fc782b7ab2f9a_18f64d04-297c-4988-8dc2-0159c3249ffb.jpg?v=1773706495",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-silver-multi-color-glm-52009-swatch-spin.gif?v=1775027933",
"tags": [
- "[Object Object]",
- "A.S. Création",
- "AI-Analyzed-v2",
+ "Abstract",
"Architectural",
- "Bedroom",
+ "Bling",
"Class A Fire Rated",
- "Color: Grey",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
"display_variant",
- "Italian",
- "Light Gray",
- "Living Room",
- "Luxury",
- "Office",
- "Organic Modern",
- "Pale Grey",
- "Paper",
- "Plain Shimmer Grey Wallcovering",
- "Serene",
- "Solid",
- "Textured",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Plain Shimmer",
- "Versace VI",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Gray",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Sequin",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-silver-multi-color-glm-52009"
+ },
+ {
+ "sku": "GLM-52012--SAMPLE",
+ "handle": "hollywood-glamour-sequin-deep-black-glam-glm-52012",
+ "title": "Hollywood Glamour Sequin - Deep Black Glam | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-deep-black-glam-glm-52012-swatch-spin.gif?v=1775027129",
+ "tags": [
+ "Abstract",
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Sequin",
+ "Silver",
+ "Steel",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-deep-black-glam-glm-52012"
+ },
+ {
+ "sku": "GLM-52011--SAMPLE",
+ "handle": "hollywood-glamour-sequin-christmas-miracle-glm-52011",
+ "title": "Hollywood Glamour Sequin - Christmas Miracle | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/croppy_GLM-52011--SAMPLE.jpg?v=1775577548",
+ "tags": [
+ "Abstract",
+ "Architectural",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "display_variant",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Green",
+ "Hollywood Glamour Sequin Glass",
+ "Maximalist",
+ "Metallic",
+ "Multi",
+ "Red",
+ "Sequin",
+ "Single Dominant Background Color Word",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-christmas-miracle-glm-52011"
+ },
+ {
+ "sku": "GLM-52015--SAMPLE",
+ "handle": "hollywood-glamour-sequin-bright-blue-thunder-glm-52015",
+ "title": "Hollywood Glamour Sequin - Bright Blue Thunder | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-bright-blue-thunder-glm-52015-swatch-spin.gif?v=1775027048",
+ "tags": [
+ "Abstract",
+ "Architectural",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Sequin",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-bright-blue-thunder-glm-52015"
+ },
+ {
+ "sku": "GLM-52014--SAMPLE",
+ "handle": "hollywood-glamour-sequin-blue-thunder-with-black-glm-52014",
+ "title": "Hollywood Glamour Sequin - Blue Thunder With Black | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-blue-thunder-with-black-glm-52014-swatch-spin.gif?v=1775027010",
+ "tags": [
+ "Abstract",
+ "Architectural",
+ "Black",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "Denim",
+ "display_variant",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Sequin",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-blue-thunder-with-black-glm-52014"
+ },
+ {
+ "sku": "GLM-52013--SAMPLE",
+ "handle": "hollywood-glamour-sequin-red-thunder-glm-52013",
+ "title": "Hollywood Glamour Sequin - Red Thunder | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/hollywood-glamour-sequin-red-thunder-glm-52013-swatch-spin.gif?v=1775027850",
+ "tags": [
+ "Abstract",
+ "Architectural",
+ "Bling",
+ "Burgundy",
+ "Class A Fire Rated",
+ "Commercial",
+ "display_variant",
+ "Glam",
+ "Glass Bead",
+ "Glass Bead & Sequin Walls",
+ "Glass Bead Wallcovering",
+ "Glass Beaded Walls",
+ "Glass Beads",
+ "Glitter",
+ "Glitter Wallcovering",
+ "Glitter Walls",
+ "Hollywood Glamour Sequin Glass",
+ "Metallic",
+ "Red",
+ "Sequin",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 74.95,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/hollywood-glamour-sequin-red-thunder-glm-52013"
+ },
+ {
+ "sku": "GLM-53005--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53005",
+ "title": "Eel Skin Sequin - White Yarns & Silver Sequin | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53005-swatch-spin.gif?v=1775025227",
+ "tags": [
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Multi",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White",
+ "White Yarns & Silver Sequin"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53005"
+ },
+ {
+ "sku": "GLM-53003--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53003",
+ "title": "Eel Skin Sequin - Red Shine | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53003-swatch-spin.gif?v=1775025214",
+ "tags": [
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "lattice",
+ "Metallic",
+ "Red",
+ "Red Shine",
+ "Sequin",
+ "Sequin Wallpapers",
+ "textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53003"
+ },
+ {
+ "sku": "GLM-53007--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53007",
+ "title": "Eel Skin Sequin - Blue Ray | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53007-swatch-spin.gif?v=1775025253",
+ "tags": [
+ "Architectural",
+ "Black",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53007"
+ },
+ {
+ "sku": "GLM-53006--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53006",
+ "title": "Eel Skin Sequin - Grey Yarns & Silver Sequin | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53006-swatch-spin.gif?v=1775025239",
+ "tags": [
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Multi",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53006"
+ },
+ {
+ "sku": "GLM-53010--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53010",
+ "title": "Eel Skin Sequin - Aqua Teal Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53010-swatch-spin.gif?v=1775025288",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53010"
+ },
+ {
+ "sku": "GLM-53009--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53009",
+ "title": "Eel Skin Sequin - Fantasy Multi | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53009-swatch-spin.gif?v=1775025276",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fantasy Multi",
+ "geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "lattice",
+ "Metallic",
+ "Pink",
+ "Purple",
+ "Sequin",
+ "Sequin Wallpapers",
+ "textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53009"
+ },
+ {
+ "sku": "GLM-53008--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53008",
+ "title": "Eel Skin Sequin - White Lightning | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53008-swatch-spin.gif?v=1775025264",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Lattice",
+ "Off-White",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Vinyl",
+ "Wallcovering",
+ "White",
+ "White Lightning"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53008"
+ },
+ {
+ "sku": "GLM-53012--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53012",
+ "title": "Eel Skin Sequin - Bronze Beauty | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53012-swatch-spin.gif?v=1775025316",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Orange",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53012"
+ },
+ {
+ "sku": "GLM-53011--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53011",
+ "title": "Eel Skin Sequin - Green Emeralds | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53011-swatch-spin.gif?v=1775025301",
+ "tags": [
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Green",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53011"
+ },
+ {
+ "sku": "GLM-53014--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53014",
+ "title": "Eel Skin Sequin - Deep Aged Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53014-swatch-spin.gif?v=1775025338",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53014"
+ },
+ {
+ "sku": "GLM-53013--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53013",
+ "title": "Eel Skin Sequin - Strong Yellow Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53013-swatch-spin.gif?v=1775025327",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Strong Yellow Gold",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53013"
+ },
+ {
+ "sku": "GLM-53019--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53019",
+ "title": "Eel Skin Sequin - Black Magician | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53019-swatch-spin.gif?v=1775025369",
+ "tags": [
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Black",
+ "Black Magician",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
+ "Maximalist",
+ "Sequin",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53019"
+ },
+ {
+ "sku": "GLM-53018--SAMPLE",
+ "handle": "eel-skin-sequin-glm-53018",
+ "title": "Eel Skin Sequin - Grey Yarns & Silver Sequin | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/eel-skin-sequin-glm-53018-swatch-spin.gif?v=1775025350",
+ "tags": [
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Art Deco",
+ "Black",
+ "Bling",
+ "Bronze",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "Dark Gray",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Grey Yarns & Silver Sequin",
+ "Imported",
+ "Lattice",
+ "Sequin",
+ "Silver",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/eel-skin-sequin-glm-53018"
+ },
+ {
+ "sku": "GLM-53022--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53022",
+ "title": "Sting Ray Sequin - Glacier Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/52ed79611cebe53c7b9e4785f4e1e293.jpg?v=1748367045",
+ "tags": [
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Light Blue",
+ "Sequin",
+ "Silver",
+ "Sting Ray Sequin",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53022"
+ },
+ {
+ "sku": "GLM-53020--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53020",
+ "title": "Sting Ray Sequin - Warm Cream | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/0beaf9f3605890c65026cf7c5359f425.jpg?v=1748367047",
+ "tags": [
+ "Abstract",
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Black",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
+ "Sequin",
+ "Silver",
+ "Sting Ray Sequin",
+ "Vinyl",
+ "Wallcovering",
+ "Warm Cream"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53020"
+ },
+ {
+ "sku": "GLM-53023--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53023",
+ "title": "Sting Ray Sequin - Aegean Mist | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/0ddd82d34ab4009889b24d6f64b8aaac.jpg?v=1748367043",
+ "tags": [
+ "Abstract",
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Light Blue",
+ "Sequin",
+ "Silver",
+ "Sting Ray Sequin",
+ "Texture",
+ "Textured",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53023"
+ },
+ {
+ "sku": "GLM-53025--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53025",
+ "title": "Sting Ray Sequin - Gold Black Scales | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/60f882424bbdf5c0199c32cf0bf643a3.jpg?v=1748367039",
+ "tags": [
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Gold Black Scales",
+ "Imported",
+ "Lattice",
+ "Pattern",
+ "Sequin",
+ "Sting Ray Sequin",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53025"
+ },
+ {
+ "sku": "GLM-53024--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53024",
+ "title": "Sting Ray Sequin - Purple Derma | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/ef0f36a179ed27cac596c3ff29f739bf.jpg?v=1748367041",
+ "tags": [
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Bling",
+ "Brown",
+ "Class A Fire Rated",
+ "Commercial",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Lattice",
+ "Maximalist",
+ "Pattern",
+ "Pink",
+ "Purple",
+ "Purple Derma",
+ "Sequin",
+ "Silver",
+ "Sting Ray Sequin",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53024"
+ },
+ {
+ "sku": "GLM-53031--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53031",
+ "title": "Sting Ray Sequin - Gold Multi Color | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/60e5dfba44d0c7b31f8fae1f3719d740_f0a3ea73-5c19-45e9-ab91-d95b9d89ac78.jpg?v=1748367035",
+ "tags": [
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Foil",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Gold Multi Color",
+ "Imported",
+ "Maximalist",
+ "Metal Leaf",
+ "Metallic",
+ "Orange",
+ "Sequin",
+ "Sting Ray Sequin",
+ "Texture",
+ "Textured",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53031"
+ },
+ {
+ "sku": "GLM-53030--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53030",
+ "title": "Sting Ray Sequin - Golden | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/0beaf9f3605890c65026cf7c5359f425_95292aa1-191a-428e-87b0-275ee76a652a.jpg?v=1748367037",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Texture",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53030"
+ },
+ {
+ "sku": "GLM-53034--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53034",
+ "title": "Sting Ray Sequin - Iridescent | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/796705c06f57d969e395f858f3e97cc0_5acdeb88-da2e-4aa4-b0dd-5ac2b5f94f6f.jpg?v=1748367030",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Green",
+ "Imported",
+ "Metallic",
+ "Pattern",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53034"
+ },
+ {
+ "sku": "GLM-53033--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53033",
+ "title": "Sting Ray Sequin - Opalescent | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/dbf0b42725a88aa6ed54281619b88a43_92ef8201-ee7c-405d-880d-63a55a44e8f9.jpg?v=1748367032",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Texture",
+ "Textured",
+ "Vinyl",
+ "Wallcovering",
+ "White"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53033"
+ },
+ {
+ "sku": "GLM-53032--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53032",
+ "title": "Sting Ray Sequin - Blue Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/294f25b45a8bda9a58fd90e93b1c7249_37aa53a8-542d-4ce4-9352-6f9e2d32ac7f.jpg?v=1748367034",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Lattice",
+ "Light Blue",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Teal",
+ "Textured",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53032"
+ },
+ {
+ "sku": "GLM-53036--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53036",
+ "title": "Sting Ray Sequin - Silver | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/bcb13a5cbd631e9306ca645818946b62_f8170a81-6662-4df6-9491-20df24b9ceb5.jpg?v=1748367026",
+ "tags": [
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Texture",
+ "Textured",
+ "Wallcovering"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53036"
+ },
+ {
+ "sku": "GLM-53035--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53035",
+ "title": "Sting Ray Sequin - Fantasy Multi Color | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/0d725321c570648b66d7a725cc7a281b_06e30eea-54d6-460f-a295-e61b72f065e2.jpg?v=1748367028",
+ "tags": [
+ "abstract",
+ "Architectural",
+ "Beige",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fantasy Multi Color",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Linen",
+ "Metallic",
+ "Pink",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Texture",
+ "textured",
+ "Vinyl",
+ "Wallcovering",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53035"
+ },
+ {
+ "sku": "GLM-53038--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53038",
+ "title": "Sting Ray Sequin - Gilded Sand | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/9bd1f46d8b87de42e168f639746df6a0_21ac11f6-a0a6-4654-8c6b-2481115b6200.jpg?v=1748367022",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gold",
+ "Imported",
+ "Lattice",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Texture",
+ "Textured",
"Wallcovering",
- "Walnut Brown"
+ "White",
+ "Yellow"
+ ],
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53038"
+ },
+ {
+ "sku": "GLM-53037--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53037",
+ "title": "Sting Ray Sequin - Multi Color | Glitter Walls",
+ "vendor": "Glitter Walls",
+ "product_type": "Wallcovering",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/73a925891f9edb8af9f914ca1f8ddb1a_9a043bc9-a44c-40c4-a4f7-b31aa3722cc2.jpg?v=1748367024",
+ "tags": [
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Green",
+ "Imported",
+ "Metallic",
+ "Multi Color",
+ "Orange",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Texture",
+ "Textured",
+ "Vinyl",
+ "Wallcovering"
],
- "max_price": 289.59,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-plain-shimmer-grey-wallcovering-versace-1"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53037"
},
{
- "sku": "versace-plain-glitter-pink-grey-purple-wallcovering-versace-1",
- "handle": "versace-plain-glitter-pink-grey-purple-wallcovering-versace-1",
- "title": "Versace Plain Glitter Pink, Grey, Purple Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "GLM-53041--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53041",
+ "title": "Sting Ray Sequin - Bronze Multi | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/bb31e09fd4fd5636eec6c322680a66d0_e4b0926a-6f4e-48a9-926d-9c88bd3b2035.jpg?v=1773706485",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/278dc6104b1e3816c202fa0cd8d3e758_58a30ba1-bb10-4152-9a33-11912bb14d61.jpg?v=1748367017",
"tags": [
- "A.S. Création",
- "AI-Analyzed-v2",
"Architectural",
- "Bedroom",
- "Beige",
"Black",
+ "Bling",
"Brown",
"Class A Fire Rated",
- "Color: Brown",
"Commercial",
- "Commercial Wallcovering",
+ "Contemporary",
"display_variant",
- "Gray",
- "Italian",
- "Living Room",
- "Luxury",
- "Office",
- "Paper",
- "Purple Wallcovering",
- "Serene",
- "Solid",
- "Tan",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Texture",
"Textured",
- "Transitional",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Plain Glitter",
- "Versace Plain Glitter Pink",
- "Versace VI",
"Wallcovering",
"White"
],
- "max_price": 289.59,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-plain-glitter-pink-grey-purple-wallcovering-versace-1"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53041"
},
{
- "sku": "versace-plain-glitter-white-cream-wallcovering-versace",
- "handle": "versace-plain-glitter-white-cream-wallcovering-versace",
- "title": "Versace Plain Glitter White, Cream Wallcovering | Versace",
- "vendor": "Versace",
+ "sku": "GLM-53040--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53040",
+ "title": "Sting Ray Sequin - Black Knight | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/f9027002e0b50bc987e02ec3dbe8beed.jpg?v=1773706477",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/4fb27594303720cb52239481f385b1db_00efce13-e2bd-4821-a47d-70c32ad2cb8d.jpg?v=1748367018",
"tags": [
- "A.S. Création",
- "AI-Analyzed-v2",
"Architectural",
- "Bedroom",
- "Beige",
- "Brown",
+ "Black",
+ "Bling",
"Class A Fire Rated",
- "Color: Beige",
"Commercial",
- "Commercial Wallcovering",
"Contemporary",
- "Cream",
- "Cream Wallcovering",
"display_variant",
- "Italian",
- "Light Beige",
- "Light Brown",
- "Living Room",
- "Luxury",
- "Off-white",
- "Office",
- "Organic Modern",
- "Paper",
- "Serene",
- "Solid",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Metallic",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Texture",
"Textured",
- "Trending Wallcovering Collection 2026",
- "Trending Wallpaper Collection 2026",
- "Versace",
- "Versace Home",
- "Versace Plain Glitter",
- "Versace Plain Glitter White",
- "Versace VI",
- "Wallcovering",
- "Walnut"
+ "Wallcovering"
],
- "max_price": 289.59,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/versace-plain-glitter-white-cream-wallcovering-versace"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53040"
},
{
- "sku": "dwkk-139813",
- "handle": "dwkk-139813",
- "title": "Visby Paper - Juniper Teal By Lee Jofa | Merkato |Global Wallcovering Print",
- "vendor": "Lee Jofa",
+ "sku": "GLM-53039--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53039",
+ "title": "Sting Ray Sequin - Silver Glaze | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/P2017109_354_2a16e49b-2d4c-4ae0-be35-55469864c219.jpg?v=1753291225",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/91f628bad19a629ce69f0a1e8dfc1fd5_c58e83c8-0f80-491f-8ae6-7f322dfc7883.jpg?v=1748367020",
"tags": [
- "27In",
"Architectural",
- "Archived-Triple-Verified",
- "Archived-Vendor-Gone",
- "Art Deco",
- "Blue",
- "Chevron",
+ "Bling",
+ "Class A Fire Rated",
"Commercial",
- "Dark Green",
+ "Contemporary",
"display_variant",
+ "Eel Skin Sequin",
"Geometric",
- "Global",
- "Gold",
- "Green",
- "Juniper",
- "Lee Jofa",
- "Luxury",
- "Merkato",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
"Metallic",
- "Multi",
- "P2017109.354.0",
- "Paper",
- "Paper - 100%",
"Pattern",
- "Print",
- "Teal",
- "Turquoise",
- "United States",
- "Visby Paper",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Textured",
+ "Vinyl",
"Wallcovering",
- "Yellow"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwkk-139813"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53039"
},
{
- "sku": "dwkk-139760",
- "handle": "dwkk-139760",
- "title": "Fiorentina - Silver/Ivory Silver By Lee Jofa | | Diamond Wallcovering Print",
- "vendor": "Lee Jofa",
+ "sku": "GLM-53043--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53043",
+ "title": "Sting Ray Sequin - Fuschia Pink | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/P2009006_111_0e8257cc-5673-4a40-9b6f-bf4e8b3edf4a.jpg?v=1753291364",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/09640b4f22204b6d383be8235d2b88d0_7110a804-3c45-4818-8983-195e5915f509.jpg?v=1748367013",
"tags": [
- "30In",
"Architectural",
- "Archived-Triple-Verified",
- "Archived-Vendor-Gone",
- "China",
+ "Bling",
+ "Cerise",
+ "Class A Fire Rated",
"Commercial",
"Contemporary",
- "Diamond",
"display_variant",
- "Fabric",
- "Fiorentina",
+ "Eel Skin Sequin",
"Geometric",
- "Grasscloth",
- "Grasscloth Texture",
- "Grasscloth Wallcovering",
- "Ivory",
- "Lee Jofa",
- "Luxury",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Magenta",
"Metallic",
- "Non-Wallcovering",
- "P2009006.111.0",
- "Print",
- "Silver",
- "Silver/Ivory",
- "Sisal - 85%;Cotton - 15%",
+ "Pink",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Texture",
"Textured",
- "Wallcovering",
- "White"
+ "Vinyl",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwkk-139760"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53043"
},
{
- "sku": "dwkk-139597",
- "handle": "dwkk-139597",
- "title": "Chalet - Ivory/Gold Ivory By Lee Jofa Modern | Kelly Wearstler Wallpapers Ii | Modern Wallcovering",
- "vendor": "Lee Jofa",
+ "sku": "GLM-53042--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53042",
+ "title": "Sting Ray Sequin - Aqua Blue | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/GWP-3502_164_3550e42f-ed14-4cb0-9d22-1c628bf1d6ca.jpg?v=1753291540",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/e8b777f437a175b4059a6651d9593413_edef852e-4192-4429-bfb6-d419589036c5.jpg?v=1748367015",
"tags": [
- "27In",
- "AI-Analyzed-v2",
- "Almond",
"Architectural",
- "Archived-Triple-Verified",
- "Archived-Vendor-Gone",
- "Beige",
- "Chalet",
+ "Black",
+ "Bling",
+ "Blue",
+ "Class A Fire Rated",
"Commercial",
"Contemporary",
"display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
"Geometric",
- "Gold",
- "Gwp-3502.164.0",
- "Ivory",
- "Ivory/Gold",
- "Lee Jofa",
- "Lee Jofa Modern",
- "Lemon",
- "Luxury",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Lattice",
"Metallic",
- "Modern",
- "Paper",
- "Paper - 100%",
- "Pattern",
- "United States",
- "Wallcovering",
- "White",
- "Yellow"
+ "Sequin",
+ "Sequin Wallpapers",
+ "Silver",
+ "Texture",
+ "Textured",
+ "Wallcovering"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwkk-139597"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53042"
},
{
- "sku": "dwkk-g5c51fc4a",
- "handle": "dwkk-g5c51fc4a",
- "title": "W3723-4 Gold | Kravet Design | Ronald Redding |Geometric Wallcovering Print",
- "vendor": "Kravet",
+ "sku": "GLM-53046--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53046",
+ "title": "Sting Ray Sequin - Vintage Gold | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/W3723_4_b0a8d57b-5e2b-4e81-826b-7e386c8a0fd6.jpg?v=1753292060",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/e6ec26c09d76c550c6001190e02867eb_42d044b3-7202-4bdb-81bc-8e8a2a7c49a7.jpg?v=1748367008",
"tags": [
- "27In",
+ "AI-Analyzed-v2",
"Architectural",
- "Archived-Triple-Verified",
- "Archived-Vendor-Gone",
- "Beige",
+ "Bling",
"Class A Fire Rated",
"Commercial",
+ "Contemporary",
"display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
"Geometric",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "Kravet",
- "Kravet Design",
- "Metallic",
- "Paper - 100%",
- "Print",
- "Ronald Redding",
+ "Imported",
+ "Iridescent",
+ "Sequin",
+ "Sting Ray Sequin",
+ "Texture",
"Textured",
- "United States",
- "Vinyl",
- "W3723-4",
- "W3723.4.0",
"Wallcovering",
+ "White",
"Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwkk-g5c51fc4a"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53046"
},
{
- "sku": "velluto-wheat-metallic-grasscloth-wallcovering-fentucci",
- "handle": "velluto-wheat-metallic-grasscloth-wallcovering-fentucci",
- "title": "Velluto Wheat Metallic Grasscloth Wallcovering | Fentucci",
- "vendor": "Fentucci",
+ "sku": "GLM-53044--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53044",
+ "title": "Sting Ray Sequin - Deep Fuschia Pink Purple | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/GRS-26570.jpg?v=1776879780",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/05105c8deca50f93d832fb76cf0faf98_804050f9-d54e-4e27-99d8-0446543d0477.jpg?v=1748367011",
"tags": [
- "Fentucci",
- "Grasscloth",
- "Metallic",
- "new-onboard",
- "sample-only",
+ "Abstract",
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Deep Fuschia Pink Purple",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
+ "Maximalist",
+ "Purple",
+ "Sequin",
+ "Sting Ray Sequin",
"Texture",
- "Velluto",
+ "Textured",
"Wallcovering",
- "Wheat"
- ],
- "max_price": 5,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/velluto-wheat-metallic-grasscloth-wallcovering-fentucci"
- },
- {
- "sku": "lost-adventure-quartz-wp-clarke-and-clarke",
- "handle": "lost-adventure-quartz-wp-clarke-and-clarke",
- "title": "Lost Adventure Quartz Wp | Clarke and Clarke",
- "vendor": "Clarke and Clarke",
- "product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/W0201_02_CAC.jpg?v=1776818912",
- "tags": [
- "abstract",
- "Clarke and Clarke",
- "Kravet",
- "metallic",
- "mineral",
- "New Arrival",
- "Origin: United Kingdom",
- "Print",
- "quartz",
- "textured",
- "Wallcovering"
+ "White"
],
- "max_price": 1313.55,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/lost-adventure-quartz-wp-clarke-and-clarke"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53044"
},
{
- "sku": "dwtt-80999-designer-wallcoverings-los-angeles",
- "handle": "dwtt-80999-designer-wallcoverings-los-angeles",
- "title": "Charlotte Raffia Black and Metallic Silver Wallcovering",
- "vendor": "Anna French",
+ "sku": "GLM-53048--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53048",
+ "title": "Sting Ray Sequin - Starlight | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Nara-CharlotteRaffiaWP-01-GCR.jpg?v=1770341584",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/f9600bc969bad4349f77ff4182b6fec9_6bb79739-726b-4865-946b-d6bbd9f18b37.jpg?v=1748367003",
"tags": [
- "AT9842",
- "Bedroom",
+ "Architectural",
"Black",
- "Calm",
- "Charcoal",
- "Charlotte Geomteric Fret Natural Raffia",
- "Charlotte Geomteric Fret Natural Raffia Black",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
"Contemporary",
- "Cool Gray",
- "Dining Room",
- "Dove Gray",
- "Elegant",
- "Entryway",
+ "display_variant",
+ "Eel Skin Sequin",
"Geometric",
- "Ivory",
- "Light Gray",
- "Living Room",
- "Medium Gray",
- "Medium Scale",
+ "Glitter",
+ "Glitter Walls",
+ "Gray",
+ "Imported",
+ "Lattice",
"Metallic",
- "Metallic Silver",
- "Modern",
- "Nara",
- "Neutral",
- "Off-White",
- "Office",
+ "Multi",
"Pattern",
- "Pewter",
- "Powder Room",
- "Refined",
+ "Sequin",
+ "Sequin Wallpapers",
"Silver",
- "Sophisticated",
- "Thibaut Wallcovering",
- "Transitional",
+ "Textured",
+ "Vinyl",
"Wallcovering",
- "Warm Gray"
+ "White"
],
- "max_price": 215.02,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwtt-80999-designer-wallcoverings-los-angeles"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53048"
},
{
- "sku": "dwtt-71978-designer-wallcoverings-los-angeles",
- "handle": "dwtt-71978-designer-wallcoverings-los-angeles",
- "title": "Wallcoverings Natural | Thibaut",
- "vendor": "Thibaut",
+ "sku": "GLM-53047--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53047",
+ "title": "Sting Ray Sequin - Honeycomb Gleam | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/T10060_cf532b0a-d446-4aae-90c4-29401cc089ea.jpg?v=1733893030",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/65cb3a9dcddd4dc6d2b2acd12b10e289_c469c983-72a4-4d7d-b0f4-10facbf925a9.jpg?v=1748367005",
"tags": [
- "Bedroom",
- "Beige",
- "Calm",
- "Damask",
- "Dining Room",
+ "Architectural",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
+ "Contemporary",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Fabric",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
"Gold",
- "Grasscloth",
- "Ivory",
- "Living Room",
- "Medium Scale",
+ "Imported",
"Metallic",
- "Natural",
"Pattern",
- "REVIEW",
- "Sophisticated",
- "T10060",
- "Thibaut",
- "Thibaut Wallcoverings",
- "Traditional",
+ "Sequin",
+ "Sequin Wallpapers",
+ "Textured",
"Wallcovering",
- "Wallcoverings"
+ "White",
+ "Yellow"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwtt-71978-designer-wallcoverings-los-angeles"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53047"
},
{
- "sku": "dwtt-71298-designer-wallcoverings-los-angeles",
- "handle": "dwtt-71298-designer-wallcoverings-los-angeles",
- "title": "Wallcoverings Gold | Thibaut",
- "vendor": "Thibaut",
+ "sku": "GLM-53049--SAMPLE",
+ "handle": "sting-ray-sequin-glm-53049",
+ "title": "Sting Ray Sequin - Black Knight | Glitter Walls",
+ "vendor": "Glitter Walls",
"product_type": "Wallcovering",
- "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/T83020_0405cee7-a5ad-46c1-a4cc-00253b2691f6.jpg?v=1733894266",
+ "image_url": "https://cdn.shopify.com/s/files/1/0015/4117/7456/products/52ed79611cebe53c7b9e4785f4e1e293_5be138b3-2fb9-4205-889a-d4fccea4facb.jpg?v=1748367002",
"tags": [
- "Abstract",
+ "AI-Analyzed-v2",
+ "Architectural",
+ "Black",
+ "Black Knight",
+ "Bling",
+ "Class A Fire Rated",
+ "Commercial",
"Contemporary",
- "Dining Room",
- "Energetic",
- "Entryway",
- "Gold",
- "Living Room",
- "Metallic",
- "Metallic Gold",
- "Non-Woven",
+ "display_variant",
+ "Eel Skin Sequin",
+ "Geometric",
+ "Glitter",
+ "Glitter Walls",
+ "Imported",
"Pattern",
- "REVIEW",
- "Small Scale",
- "Sophisticated",
- "T83020",
- "Thibaut",
- "Thibaut Wallcoverings",
+ "Sequin",
+ "Silver",
+ "Sting Ray Sequin",
+ "Vinyl",
"Wallcovering",
- "Wallcoverings",
- "Warm Gold"
+ "White"
],
- "max_price": 4.25,
- "aesthetic": "all",
- "product_url": "https://designerwallcoverings.com/products/dwtt-71298-designer-wallcoverings-los-angeles"
+ "max_price": 94.5,
+ "aesthetic": "glitter",
+ "product_url": "https://designerwallcoverings.com/products/sting-ray-sequin-glm-53049"
}
]
\ No newline at end of file
diff --git a/public/index.html.bak.dwfoot.1778203445660 b/public/index.html.bak.dwfoot.1778203445660
new file mode 100644
index 0000000..ad91d31
--- /dev/null
+++ b/public/index.html.bak.dwfoot.1778203445660
@@ -0,0 +1,969 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-RK1X75MQ68"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-RK1X75MQ68');
+</script>
+
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Casa Rossa — The romance of glitter.</title>
+<meta name="description" content="Casa Rossa is a curated atelier dedicated entirely to glitter. We do one thing — and we do it carefully.">
+<meta name="theme-color" content="#FFF">
+<link rel="canonical" href="https://glitterwalls.com/">
+<link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
+<link rel="preload" as="image" href="/hero-bg.jpg" fetchpriority="high">
+<script type="application/ld+json">
+{
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ "name": "Casa Rossa",
+ "url": "https://glitterwalls.com/",
+ "email": "info@glitterwalls.com"
+}
+</script>
+<script src="/zd-loader.js" defer></script>
+<style>
+:root {
+ --bg: #FFF;
+ --paper: #000;
+ --muted: #8B7866;
+ --line: #000;
+ --accent: #D70000;
+ --bg-soft: #000;
+ --cols: 6;
+}
+html[data-theme="dark"] {
+ --bg: #000;
+ --paper: #FFF;
+ --muted: #C9B89E;
+ --line: rgba(255,254,250,0.12);
+ --accent: #D70000;
+ --bg-soft: #2a1f15;
+}
+* { margin:0; padding:0; box-sizing:border-box }
+html { scroll-behavior:smooth }
+body { font-family:'Inter', sans-serif; color:var(--paper); -webkit-font-smoothing:antialiased; background:var(--bg); min-height:100vh; overflow-x:hidden }
+/* DW-FASHION-TEMPLATE-OVERRIDE */
+.section-title .accent, .footer-brand, .center-mark, h1, h2, h3 { font-family: 'Monoton', 'Impact', sans-serif !important; font-weight:500 !important; }
+
+/* ===== Auto-hide header ===== */
+header { position:fixed; top:0; left:0; right:0; display:flex; justify-content:space-between; align-items:center; padding:22px 32px; z-index:100; background:rgba(0,0,0,0.55); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); transition:transform .3s }
+.h-link { display:flex; align-items:center; gap:10px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); text-decoration:none; cursor:pointer; background:transparent; border:0 }
+.h-link:hover { opacity:0.7 }
+.h-icon { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.5 }
+
+/* ===== Cinema hero ===== */
+.cinema { position:relative; height:100vh; width:100%; overflow:hidden }
+.cinema-bg { position:absolute; inset:0; background-size:cover; background-position:center; background-image:url('/hero-bg.jpg') }
+.cinema-bg::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 60%, rgba(0,0,0,0.75) 100%) }
+.corner-mark { position:absolute; top:24px; left:32px; font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,0.55), 0 0 1px rgba(0,0,0,0.4); z-index:5 }
+.corner-mark::before { content:"◆ "; margin-right:6px }
+.center-mark { position:absolute; top:clamp(80px,12vh,140px); left:50%; transform:translateX(-50%); font-size:clamp(28px,4vw,56px); font-weight:500; letter-spacing:0.18em; text-transform:uppercase; text-align:center; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,0.65), 0 0 1px rgba(0,0,0,0.5); z-index:5 }
+.center-mark .tm { font-size:14px; vertical-align:super; opacity:0.7; margin-left:0.2em }
+.center-mark .sub { display:block; font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400; font-size:0.4em; letter-spacing:0.04em; text-transform:none; margin-top:14px; opacity:0.85 }
+.meta-line { position:absolute; bottom:32px; left:32px; font-size:10px; letter-spacing:0.28em; text-transform:uppercase; font-weight:700; color:#fff; z-index:5; opacity:0.85 }
+.meta-line .num { font-size:12px; display:block; margin-top:4px; letter-spacing:0.05em }
+.enter { position:absolute; bottom:32px; right:32px; display:flex; align-items:center; gap:14px; font-size:11px; letter-spacing:0.36em; text-transform:uppercase; font-weight:700; color:#fff; text-decoration:none; padding-bottom:6px; border-bottom:1px solid #fff; transition:gap 0.25s; z-index:5 }
+.enter:hover { gap:22px }
+.enter svg { width:24px; height:12px }
+
+/* ===== Section ===== */
+.section { padding:96px 32px }
+.section-header { display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:24px; margin-bottom:32px; padding-bottom:24px; border-bottom:1px solid var(--line) }
+.section-title { font-size:clamp(36px,5vw,64px); font-weight:300; letter-spacing:-0.02em; line-height:1 }
+.section-title .accent { color: var(--accent); font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400 }
+.section-eyebrow { font-size:10px; letter-spacing:0.4em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:16px }
+.section-meta { font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:600; color:var(--muted); text-align:right; line-height:1.6 }
+
+/* ===== Filter bar ===== */
+.filters { display:flex; gap:8px; align-items:center; margin-bottom:18px; flex-wrap:wrap }
+.chip { padding:8px 16px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); background:transparent; border:1px solid var(--line); cursor:pointer; transition:all 0.2s; font-family:inherit }
+.chip:hover { border-color:var(--paper) }
+.chip.active { background:var(--paper); color:var(--bg); border-color:var(--paper) }
+.search { flex:0 1 280px; margin-left:auto; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); padding:6px 0 }
+.search input { flex:1; background:transparent; border:0; color:var(--paper); font-family:inherit; font-size:13px; outline:none; letter-spacing:0.04em }
+.search input::placeholder { color:var(--muted) }
+.search svg { width:16px; height:16px; stroke:var(--muted); fill:none; stroke-width:1.5 }
+
+/* ===== Grid-density slider ===== */
+.density { display:flex; align-items:center; gap:14px; padding:6px 0; margin-bottom:24px }
+.density label { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--muted) }
+.density input[type=range] { flex:1; max-width:240px; -webkit-appearance:none; appearance:none; height:1px; background:var(--line); outline:none }
+.density input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50% }
+.density input[type=range]::-moz-range-thumb { width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50%; border:0 }
+.density .ct { font-size:11px; color:var(--muted); letter-spacing:0.18em; text-transform:uppercase; font-weight:600; min-width:80px }
+
+/* ===== Stats line ===== */
+.stat-line { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:600; color:var(--muted); margin-bottom:24px }
+
+/* ===== Product grid (novasuede pattern: flush grid + slide-up overlay) ===== */
+.grid { display:grid; grid-template-columns:repeat(var(--cols), 1fr); gap:0 }
+.card { position:relative; aspect-ratio:1/1.15; cursor:pointer; overflow:hidden; border:1px solid var(--bg); transition:transform 0.4s cubic-bezier(0.2,0.8,0.2,1); background:var(--bg-soft) }
+.card:hover { transform:scale(1.04); z-index:5 }
+.card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.4s ease }
+.card .overlay { position:absolute; left:0; right:0; bottom:0; padding:20px 16px 14px; background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.85) 100%); transform:translateY(48%); opacity:0.85; transition:transform 0.3s ease, opacity 0.3s ease }
+.card:hover .overlay { transform:translateY(0); opacity:1 }
+.card .pat { font-size:13px; font-weight:600; letter-spacing:0.02em; color:#fff; line-height:1.25; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
+.card .ven { font-size:9px; letter-spacing:0.18em; text-transform:uppercase; color:#fff; opacity:0.7; font-weight:500; margin-top:4px }
+.card .actions { margin-top:10px; display:flex; gap:6px }
+.card .sample-btn { flex:1; padding:7px 10px; background:#fff; color:#000; font-family:inherit; font-size:10px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; border:0; cursor:pointer; text-align:center; transition:all 0.2s }
+.card .sample-btn:hover { background:var(--accent); color:#fff }
+
+@media (max-width:1024px) { .grid { grid-template-columns:repeat(min(var(--cols), 4), 1fr) } }
+@media (max-width:720px) { .grid { grid-template-columns:repeat(2, 1fr) } .density { display:none } }
+
+.sentinel { height:1px }
+.loading { text-align:center; color:var(--muted); padding:32px; font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700 }
+
+/* ===== Footer ===== */
+footer { padding:64px 32px 32px; border-top:1px solid var(--line); margin-top:32px }
+.footer-grid { max-width:1400px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px; margin-bottom:48px }
+.footer-brand { font-size:24px; font-weight:300; letter-spacing:0.32em; text-transform:uppercase; margin-bottom:12px }
+.footer-text { font-size:13px; line-height:1.6; color:var(--muted); max-width:380px }
+.footer-col h4 { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--paper); margin-bottom:18px }
+.footer-col a { display:block; font-size:13px; color:var(--muted); text-decoration:none; margin-bottom:8px; transition:color 0.2s; cursor:pointer; background:transparent; border:0; font-family:inherit; padding:0; text-align:left }
+.footer-col a:hover { color:var(--accent) }
+.footer-bottom { max-width:1400px; margin:0 auto; padding-top:24px; border-top:1px solid var(--line); display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--muted) }
+
+@media (max-width:720px) {
+ .corner-mark, .meta-line, .enter { font-size:10px }
+ .center-mark { font-size:24px; letter-spacing:0.12em; top:clamp(60px,9vh,90px) }
+ .section, footer { padding-left:20px; padding-right:20px }
+ .footer-grid { grid-template-columns:1fr; gap:32px }
+ .search { margin-left:0; flex:1 1 100% }
+}
+
+.theme-toggle { background:transparent; border:1px solid var(--line); width:32px; height:32px; cursor:pointer; color:var(--paper); display:inline-flex; align-items:center; justify-content:center; font-size:14px; line-height:1; transition:all .15s; padding:0 }
+.theme-toggle:hover { border-color:var(--accent); color:var(--accent) }
+
+/* ===== WCAG 2.4.7 — keyboard focus indicators ===== */
+/* Strictly :focus-visible so mouse clicks do NOT show the ring */
+a:focus-visible,
+button:focus-visible,
+input:focus-visible,
+select:focus-visible,
+textarea:focus-visible,
+[tabindex]:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+</style>
+<script>
+(function(){ try { var t = localStorage.getItem('glit_theme') || 'light'; document.documentElement.dataset.theme = t; } catch(e){} })();
+</script>
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Monoton&display=swap">
+
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://glitterwalls.com/">
+<meta property="og:title" content="Glitter Walls">
+<meta property="og:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta property="og:image" content="https://glitterwalls.com/hero-bg.jpg">
+<meta property="og:site_name" content="Glitter Walls">
+<meta property="article:publisher" content="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings">
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:title" content="Glitter Walls">
+<meta name="twitter:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta name="twitter:image" content="https://glitterwalls.com/hero-bg.jpg">
+<!-- graphics-loop pass 13: footer + fb -->
+</head>
+<body>
+<style id="ns-header-modal-styles">
+ .ns-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 18px 36px; background: rgba(10,10,10,0.92) !important; backdrop-filter: blur(8px); border-bottom: 1px solid rgba(245,241,232,0.06); }
+ .ns-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; }
+ .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #a98b5b 0%, #5d4c32 60%, #332a1b 100%); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
+ .ns-name { font-family: -apple-system, "SF Pro Display", "Helvetica Neue", system-ui, sans-serif; font-size: 18px !important; font-weight: 300 !important; letter-spacing: 0.02em !important; color: #f5f1e8 !important; text-transform: none !important; margin: 0 !important; }
+ .ns-name sup { font-size: 0.55em; font-weight: 300; margin-left: 1px; }
+ .ns-nav { display: flex; gap: 32px; align-items: center; list-style: none; padding: 0; margin: 0; }
+ .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; padding: 0 !important; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
+ .ns-nav a:hover, .ns-nav button:hover { color: #ffffff !important; }
+ @media (max-width: 820px) { .ns-header { padding: 14px 18px; } .ns-nav { gap: 16px; } .ns-nav a, .ns-nav button { font-size: 13px !important; } }
+ @media (max-width: 760px) {
+ .ns-header { flex-wrap: wrap; }
+ .ns-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0 4px; }
+ .ns-nav.open { display: flex !important; }
+ .ns-nav a, .ns-nav button { padding: 10px 0 !important; border-bottom: 1px solid rgba(245,241,232,0.08); width: 100%; text-align: left; }
+ .ns-nav a:nth-child(n+5), .ns-nav button:nth-child(n+5) { display: block !important; }
+ .ns-header .mobile-toggle { display: flex !important; }
+ }
+ @media (min-width: 761px) {
+ .ns-header .mobile-toggle { display: none !important; }
+ }
+ .ns-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.78); z-index: 200; align-items: center; justify-content: center; padding: 24px; backdrop-filter: blur(6px); }
+ .ns-modal.show { display: flex; }
+ .ns-modal-card { max-width: 460px; width: 100%; background: #141414 !important; border: 1px solid rgba(245,241,232,0.14); border-radius: 6px; padding: 28px 30px 30px; position: relative; }
+ .ns-modal-card .close-x { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; background: none; border: 1px solid rgba(245,241,232,0.18); color: rgba(245,241,232,0.6) !important; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; }
+ .ns-modal-card .close-x:hover { color: #ffffff !important; border-color: #ffffff; }
+ .ns-modal-card h3 { font-family: -apple-system, "SF Pro Display", system-ui; font-weight: 300 !important; font-size: 22px !important; margin: 0 0 6px !important; color: #f5f1e8 !important; }
+ .ns-modal-card .sub { color: rgba(245,241,232,0.65) !important; font-size: 13px; margin: 0 0 22px; }
+ .ns-actions { display: flex; flex-direction: column; gap: 10px; }
+ .ns-action { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: rgba(245,241,232,0.04) !important; border: 1px solid rgba(245,241,232,0.12) !important; color: #f5f1e8 !important; text-decoration: none !important; cursor: pointer; transition: all 200ms; font: inherit; text-align: left; }
+ .ns-action:hover { background: rgba(245,241,232,0.08) !important; border-color: #d4b683 !important; }
+ .ns-action .ico { width: 32px; height: 32px; border-radius: 50%; background: rgba(212,182,131,0.12); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
+ .ns-action .txt { flex: 1; }
+ .ns-action .txt b { display: block; font-weight: 500; font-size: 14px; color: #f5f1e8 !important; }
+ .ns-action .txt span { font-size: 12px; color: rgba(245,241,232,0.55) !important; }
+
+ /* ─── FINAL CONTRAST PASS — kill remaining gold-solid + white-island defects ─── */
+ /* Replace all gold-fill accents with off-white (Gucci-aesthetic, no DW gold solids) */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active,
+ .drapery-btn, .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover,
+ .drapery-btn:hover, .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ /* Gold accents stay only as edge color (links, glyphs) — not fills */
+ a { color: #d4b683; }
+ a:hover { color: #f5d97a; }
+ /* Authorized-dealer footer line — small caps tracked, muted ink, no gold pill */
+ .authorized, .authorized-dealer p {
+ background: transparent !important;
+ color: rgba(245,241,232,0.5) !important;
+ font-size: 10px !important;
+ letter-spacing: 0.22em !important;
+ text-transform: uppercase !important;
+ padding: 0 !important;
+ border: none !important;
+ margin-top: 14px !important;
+ }
+ /* Kill any straggler white bg in info-card / sample-related cards */
+ .info-card, .info-card-link, .care-highlight, .feature-card, .spec-item {
+ background-color: rgba(245,241,232,0.04) !important;
+ border-color: rgba(245,241,232,0.12) !important;
+ }
+ /* Ensure modal content stays readable — Steve's earlier sweep made it #141414 with white text */
+ .modal-content { background: #141414 !important; color: #f5f1e8 !important; }
+ .modal-content * { color: #f5f1e8 !important; }
+ .modal-content input, .modal-content textarea, .modal-content select {
+ background: rgba(245,241,232,0.05) !important;
+ color: #f5f1e8 !important;
+ border-color: rgba(245,241,232,0.2) !important;
+ }
+ .modal-content label { color: rgba(245,241,232,0.6) !important; }
+ /* Force the wide-tracked NOVASUEDE wordmark to stay white */
+ .ns-wordmark, .ns-wordmark sup { color: #f5f1e8 !important; }
+
+ /* ─── Modal-internal contrast (post-QA defects) ─── */
+ /* Backdrop covers full viewport */
+ .modal { width: 100vw !important; height: 100vh !important; left: 0 !important; top: 0 !important; background: rgba(0, 0, 0, 0.78) !important; backdrop-filter: blur(6px); }
+ /* Chip — flip from white-on-white island to dark card */
+ .request-chip {
+ background: rgba(245, 241, 232, 0.06) !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.18) !important;
+ border-radius: 4px !important;
+ }
+ .request-chip * { color: #f5f1e8 !important; }
+ .request-chip .chip-swatch {
+ /* swatch dot ALWAYS displays the inline-style hex from JS — fight any sweep */
+ border: 1px solid rgba(0, 0, 0, 0.4) !important;
+ }
+ /* + Add to request — hairline white-border on transparent (no gold) */
+ .add-to-request-btn {
+ background: transparent !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.6) !important;
+ border-radius: 0 !important;
+ padding: 12px 22px !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 400 !important;
+ }
+ .add-to-request-btn:hover {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ /* Hex caption visible */
+ .preview-hex, #colorPreviewHex {
+ display: block !important;
+ color: rgba(245, 241, 232, 0.55) !important;
+ font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
+ font-size: 11px !important;
+ margin-top: 4px !important;
+ letter-spacing: 0.04em !important;
+ text-transform: lowercase !important;
+ }
+ /* Color preview name — stays single, prominent */
+ #colorPreviewName {
+ color: #f5f1e8 !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 500 !important;
+ display: block !important;
+ margin-top: 12px !important;
+ }
+
+ /* ─── Mobile hamburger nav (replaces the overflow at <760px) ─── */
+ @media (max-width: 760px) {
+ header .nav-container { flex-wrap: wrap; }
+ header nav { display: none; flex-basis: 100%; flex-direction: column; gap: 6px; padding: 16px 0 6px; }
+ header nav.open { display: flex; }
+ header nav a { padding: 10px 0; border-bottom: 1px solid rgba(245,241,232,0.1); }
+ header .mobile-toggle {
+ display: flex !important;
+ flex-direction: column;
+ gap: 5px;
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+ padding: 8px;
+ }
+ header .mobile-toggle span {
+ width: 22px; height: 1.5px;
+ background: #f5f1e8;
+ display: block;
+ }
+ }
+ @media (min-width: 761px) {
+ header .mobile-toggle { display: none !important; }
+ }
+
+ </style>
+<style id="ns-gold-kill">
+ /* novasuede: kill gold-solid fills, off-white instead. Edge color stays gold. */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active, .drapery-btn,
+ .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover, .drapery-btn:hover,
+ .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ </style>
+<header class="ns-header">
+ <a href="/" class="ns-brand" aria-label="Home">
+ <span class="ns-dot"></span>
+ <span class="ns-name">Casa Rossa</span>
+ </a>
+ <nav class="ns-nav" id="nsPrimaryNav" aria-label="Primary">
+ <a href="/">Home</a>
+ <a href="/about">About</a>
+ <button type="button" onclick="nsContactOpen()">Contact</button>
+ </nav>
+ <button type="button" class="mobile-toggle" aria-label="Toggle menu" aria-controls="nsPrimaryNav" aria-expanded="false" onclick="nsToggleNav(this)">
+ <span></span><span></span><span></span>
+ </button>
+ </header>
+
+<div class="ns-modal" id="nsContactModal" role="dialog" aria-modal="true" aria-labelledby="nsContactTitle" onclick="if(event.target===this)nsContactClose()">
+ <div class="ns-modal-card">
+ <button type="button" class="close-x" onclick="nsContactClose()" aria-label="Close">×</button>
+ <h3 id="nsContactTitle">How can we help?</h3>
+ <p class="sub">Trade-account replies within one business day.</p>
+ <div class="ns-actions">
+ <a class="ns-action" href="#contact" onclick="nsContactClose()"><span class="ico">📋</span><div class="txt"><b>Get a Quote</b><span>Project specs → priced estimate</span></div></a>
+ <a class="ns-action" href="#contact" onclick="nsContactClose();openModal();"><span class="ico">📦</span><div class="txt"><b>Order a Sample</b><span>Free swatch to your shop</span></div></a>
+ <a class="ns-action" href="mailto:info@novasuede.com?subject=Novasuede%20inquiry"><span class="ico">✉️</span><div class="txt"><b>Email Us</b><span>info@novasuede.com</span></div></a>
+ <a class="ns-action" href="tel:888-373-4564"><span class="ico">📞</span><div class="txt"><b>Call Us</b><span>(888) 373-4564 · M–F, 9–5 PT</span></div></a>
+ </div>
+ </div>
+ </div>
+<script>
+ function nsContactOpen() { var m = document.getElementById('nsContactModal'); if (m) m.classList.add('show'); }
+ function nsContactClose() { var m = document.getElementById('nsContactModal'); if (m) m.classList.remove('show'); }
+ function nsToggleNav(btn) {
+ var nav = document.getElementById('nsPrimaryNav');
+ if (!nav) return;
+ var open = nav.classList.toggle('open');
+ btn.setAttribute('aria-expanded', open ? 'true' : 'false');
+ }
+ document.addEventListener('keydown', function(e){ if (e.key === 'Escape') nsContactClose(); });
+</script>
+
+
+
+
+
+<header>
+ <button class="h-link" onclick="dwmOpen('Contact')" aria-label="Contact"><svg class="h-icon" viewBox="0 0 24 24"><path d="M3 7h18M3 12h18M3 17h18"/></svg><span>Contact</span></button>
+ <button class="theme-toggle" id="theme-toggle" aria-label="Theme toggle">☾</button>
+</header>
+
+<section class="cinema">
+ <div class="cinema-bg" id="heroBg"></div>
+ <div class="corner-mark">Sparkle & Glam</div>
+ <div class="center-mark">Glitter Walls</div>
+ <div class="meta-line">Glitter · Sequin · Holographic · Glam<span class="num" id="heroNum"></span></div>
+ <a class="enter" href="#shop">Enter <svg viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.4"><path d="M0 6h22M16 1l6 5-6 5"/></svg></a>
+</section>
+
+
+<section class="section" id="ideas">
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">New this week</h2>
+ <div class="rail" id="railNewest"></div>
+ </div>
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">Curated picks</h2>
+ <div class="rail" id="railCurated"></div>
+ </div>
+</section>
+
+<section class="section" id="shop">
+ <div class="section-header">
+ <div>
+ <div class="section-eyebrow">The Collection</div>
+ <h2 class="section-title"><span class="accent" id="totalCount">—</span> Patterns.</h2>
+ </div>
+ <div class="section-meta">Glitter · Sequin · Holographic · Glam</div>
+ </div>
+
+ <div class="filters" id="facets">
+ <button class="chip active" data-facet="all">All</button>
+ </div>
+
+ <div class="density">
+ <label>Sort</label>
+ <select id="sortSelect" aria-label="Sort products" style="background:transparent;color:inherit;border:1px solid var(--line,rgba(255,255,255,.2));font:inherit;font-size:11px;letter-spacing:.10em;text-transform:uppercase;padding:4px 8px;cursor:pointer;outline:none;margin-right:14px">
+ <option value="newest">Newest</option>
+ <option value="color">Color</option>
+ <option value="style">Style</option>
+ <option value="sku">SKU A→Z</option>
+ <option value="title">Title A→Z</option>
+ <option value="price-asc">Price ↑</option>
+ <option value="price-desc">Price ↓</option>
+ </select>
+ <label>Grid</label>
+ <input type="range" id="densitySlider" min="4" max="12" step="1" value="6" aria-label="Grid columns">
+ <span class="ct" id="densityLabel">6 cols</span>
+ <div class="search">
+ <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M21 21l-5.5-5.5"/></svg>
+ <input type="text" id="searchInput" placeholder="Search by pattern, color…" autocomplete="off">
+ </div>
+ </div>
+
+ <div class="stat-line" id="statLine">Loading…</div>
+ <div class="grid" id="grid"></div>
+ <div class="loading" id="loading">Loading more…</div>
+ <div class="sentinel" id="sentinel"></div>
+</section>
+
+<footer>
+ <div class="footer-grid">
+ <div>
+ <div class="footer-brand">Glitter Walls</div>
+ <p class="footer-text">Glitter Walls is a specialty glam archive within the Designer Wallcoverings family. Real samples ship free.</p>
+ <p class="footer-text" style="margin-top:14px;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;color:var(--paper);opacity:0.7"><a href="/about" style="color:inherit;text-decoration:none;border-bottom:1px solid var(--accent)">About →</a></p>
+ </div>
+ <div class="footer-col">
+ <h4>Aesthetic</h4>
+ <div id="footerFacets"></div>
+ </div>
+ <div class="footer-col">
+ <h4>Trade</h4>
+ <button onclick="dwmOpen('Inquiry')">Project Inquiry</button>
+ <button onclick="dwmOpen('Sample')">Request Sample</button>
+ <button onclick="dwmOpen('Contact')">Contact</button>
+ </div>
+
+ <div class="footer-col">
+ <h4>Social</h4>
+ <a class="fb-link" href="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings" target="_blank" rel="noopener">Facebook</a>
+ </div>
+ </div>
+ <div class="footer-bottom">
+ <span>glitterwalls.com · Casa Rossa</span>
+ <span><a href="mailto:info@glitterwalls.com" style="color:var(--paper);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px">info@glitterwalls.com</a></span>
+ <span id="footerStat"></span>
+ </div>
+</footer>
+
+<script>
+// mini-constellation — 43 niche-stars, current site highlighted in gold
+(function(){
+ const SLUG = "glitterwalls";
+ const NICHES = [
+ ['silkwallpaper','Silk','mat'],['silkwallcoverings','Silk W/C','mat'],['linenwallpaper','Linen','mat'],
+ ['jutewallpaper','Jute','mat'],['raffiawallcoverings','Raffia W/C','mat'],['raffiawalls','Raffia Walls','mat'],
+ ['corkwallcovering','Cork','mat'],['fabricwallpaper','Fabric','mat'],['textilewallpaper','Textile','mat'],
+ ['metallicwallpaper','Metallic','mat'],['silverleafwallpaper','Silver Leaf','mat'],['vinylwallpaper','Vinyl','mat'],
+ ['micawallpaper','Mica','mat'],['madagascarwallpaper','Madagascar','mat'],['mylarwallpaper','Mylar','mat'],
+ ['suedewallpaper','Suede','mat'],
+ ['1800swallpaper','1800s','dec'],['1890swallpaper','1890s','dec'],['1900swallpaper','1900s','dec'],
+ ['1920swallpaper','1920s','dec'],['1930swallpaper','1930s','dec'],['1940swallpaper','1940s','dec'],
+ ['1950swallpaper','1950s','dec'],['1960swallpaper','1960s','dec'],['1970swallpaper','1970s','dec'],
+ ['1980swallpaper','1980s','dec'],['retrowalls','Retro','dec'],['wallpapersback','W. Back','dec'],
+ ['agedwallpaper','Aged','cra'],['handcraftedwallpaper','Handcrafted','cra'],['museumwallpaper','Museum','cra'],
+ ['restorationwallpaper','Restoration','cra'],['pastelwallpaper','Pastel','cra'],['glitterwalls','Glitter','cra'],
+ ['greenwallcoverings','Green','cra'],['naturalwallcoverings','Natural','cra'],['saloonwallpaper','Saloon','cra'],
+ ['contractwallpaper','Contract','use'],['hotelwallcoverings','Hotel','use'],['hospitalitywallpaper','Hospitality','use'],
+ ['healthcarewallpaper','Healthcare','use'],['restaurantwallpaper','Restaurant','use'],['architecturalwallcoverings','Architectural','use']
+ ];
+ const COLOR = { mat:'#c9b687', dec:'#b86a4a', cra:'#6b8e6f', use:'#4a6b8e' };
+ const W = 1080, H = 200, BANDS = ['mat','dec','cra','use'];
+ const groups = { mat:[], dec:[], cra:[], use:[] };
+ for (const n of NICHES) groups[n[2]].push(n);
+ const svg = document.getElementById('miniConst');
+ if (!svg) return;
+ const bandW = W / BANDS.length;
+ let nodes = '';
+ BANDS.forEach((band, bi) => {
+ const list = groups[band];
+ const cx = bi * bandW + bandW / 2;
+ list.forEach((n, i) => {
+ const t = list.length === 1 ? 0.5 : i / (list.length - 1);
+ // deterministic jitter per slug
+ let h = 0; for (let k = 0; k < n[0].length; k++) h = (h * 31 + n[0].charCodeAt(k)) | 0;
+ const jx = ((h & 0xff) / 255 - 0.5) * (bandW * 0.5);
+ const jy = (((h >> 8) & 0xff) / 255 - 0.5) * 6; // tightened from 14 → 6 to prevent same-band collisions (16 mat nodes / 144px = 9px spacing)
+ const x = cx + jx, y = 28 + t * (H - 56) + jy;
+ const isCurrent = n[0] === SLUG;
+ const r = isCurrent ? 8 : 4;
+ const op = isCurrent ? 1 : 0.55;
+ nodes += `<g class="mc-node" data-slug="${n[0]}" data-label="${n[1]}" style="cursor:pointer">
+ <circle cx="${x}" cy="${y}" r="${r}" fill="url(#dna-${band})" fill-opacity="${op}" stroke="${COLOR[band]}" stroke-opacity="${isCurrent?1:0.7}" stroke-width="${isCurrent?2:1}">
+ <title>${n[1]} — ${n[0]}.com</title>
+ </circle>
+ ${isCurrent ? `<circle cx="${x}" cy="${y}" r="${r+5}" fill="none" stroke="${COLOR[band]}" stroke-opacity="0.4" stroke-width="1"><animate attributeName="r" values="${r+5};${r+12};${r+5}" dur="2.4s" repeatCount="indefinite"/><animate attributeName="stroke-opacity" values="0.4;0;0.4" dur="2.4s" repeatCount="indefinite"/></circle>` : ''}
+ </g>`;
+ });
+ });
+ // append nodes after defs
+ svg.insertAdjacentHTML('beforeend', nodes);
+ svg.querySelectorAll('.mc-node').forEach(n => {
+ n.addEventListener('mouseenter', () => n.querySelector('circle').setAttribute('fill-opacity', '1'));
+ n.addEventListener('mouseleave', e => {
+ const isCurrent = n.dataset.slug === SLUG;
+ n.querySelector('circle').setAttribute('fill-opacity', isCurrent ? '1' : '0.55');
+ });
+ n.addEventListener('click', () => window.open('https://' + n.dataset.slug + '.com', '_blank'));
+ });
+})();
+</script>
+
+<script>
+const state = { q:'', facet:'all', page:1, pages:1, total:0, loading:false, exhausted:false };
+const LABELS = {"all":"All"};
+
+function escAttr(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&':'&','<':'<','>':'>','"':'"',"'":''' }[c])); }
+// Image-URL allowlist: only DW Shopify CDN + designerwallcoverings.com (defends against XSS via crafted products.json)
+function safeImg(u) { return /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(u || '') ? u : '/hero-bg.jpg'; }
+function cardHTML(p) {
+ const eager = state.page === 1;
+ return '<img loading="' + (eager ? 'eager' : 'lazy') + '"' + (eager ? ' fetchpriority="high"' : '') + ' src="' + escAttr(safeImg(p.image_url)) + '" alt="' + escAttr(p.title) + '">'
+ + '<div class="overlay">'
+ + '<div class="pat">' + escAttr(p.pattern_name || p.title) + '</div>'
+ + '<div class="ven">' + escAttr((p.vendor || '').replace(/-/g, ' ')) + '</div>'
+ + '<div class="actions">'
+ + '<button class="sample-btn" onclick="event.stopPropagation();dwmOpen(\'Sample\',' + JSON.stringify({sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}).replace(/"/g,'"') + ')">Sample</button>'
+ + '</div></div>';
+}
+
+async function loadFacets() {
+ let f;
+ try {
+ const r = await fetch('/api/facets');
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ f = await r.json();
+ } catch (e) { console.error('loadFacets failed:', e); return; }
+ const el = document.getElementById('facets');
+ for (const [k, v] of Object.entries(f.aesthetics).sort((a,b) => b[1] - a[1])) {
+ const b = document.createElement('button');
+ b.className = 'chip'; b.dataset.facet = k;
+ b.innerHTML = (LABELS[k] || k) + ' <span style="opacity:.55;font-weight:500;margin-left:4px">' + v + '</span>';
+ el.appendChild(b);
+ }
+ el.addEventListener('click', e => {
+ if (e.target.tagName !== 'BUTTON') return;
+ document.querySelectorAll('#facets button').forEach(b => b.classList.remove('active'));
+ e.target.classList.add('active');
+ state.facet = e.target.dataset.facet;
+ resetGrid();
+ });
+ document.getElementById('totalCount').textContent = f.total;
+ document.getElementById('footerStat').textContent = f.total + ' patterns · live archive';
+ // Footer aesthetic links
+ const footerEl = document.getElementById('footerFacets');
+ for (const [k] of Object.entries(f.aesthetics)) {
+ const b = document.createElement('button');
+ b.textContent = LABELS[k] || k;
+ b.onclick = () => { state.facet = k; resetGrid(); document.querySelectorAll('#facets button').forEach(x => x.classList.toggle('active', x.dataset.facet === k)); document.getElementById('shop').scrollIntoView({behavior:'smooth'}); };
+ footerEl.appendChild(b);
+ }
+}
+
+function resetGrid() {
+ state.page = 1; state.exhausted = false;
+ document.getElementById('grid').innerHTML = '';
+ document.getElementById('loading').textContent = 'Loading…';
+ loadGridPage();
+}
+
+async function loadGridPage() {
+ if (state.loading || state.exhausted) return;
+ state.loading = true;
+ const params = new URLSearchParams({ page:state.page, limit:24 });
+ if (state.q) params.set('q', state.q);
+ if (state.facet !== 'all') params.set('aesthetic', state.facet);
+ let data;
+ try {
+ const r = await fetch('/api/products?' + params);
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ data = await r.json();
+ } catch (e) {
+ console.error('loadGridPage failed:', e);
+ document.getElementById('loading').textContent = '— offline — refresh to retry —';
+ state.loading = false;
+ return;
+ }
+ state.total = data.total; state.pages = data.pages;
+
+ if (state.page === 1) {
+ document.getElementById('statLine').textContent = data.total + ' patterns · ' + (state.facet === 'all' ? 'all aesthetics' : (LABELS[state.facet] || state.facet)) + (state.q ? ' · matching "' + state.q + '"' : '');
+ }
+ const grid = document.getElementById('grid');
+ for (const p of data.items) {
+ const a = document.createElement('a');
+ a.className = 'card'; a.href = '#'; a.onclick = (e) => { e.preventDefault(); dwmOpen('Sample',{sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}); };
+ a.innerHTML = cardHTML(p);
+ grid.appendChild(a);
+ }
+ if (state.page >= state.pages || data.items.length === 0) {
+ state.exhausted = true;
+ document.getElementById('loading').textContent = state.total > 0 ? '— end of archive · ' + state.total + ' patterns —' : '';
+ } else state.page++;
+ state.loading = false;
+}
+
+const io = new IntersectionObserver(es => { for (const e of es) if (e.isIntersecting) loadGridPage(); }, { rootMargin:'600px 0px' });
+io.observe(document.getElementById('sentinel'));
+
+document.getElementById('searchInput').addEventListener('input', e => {
+ state.q = e.target.value.trim();
+ clearTimeout(window._t);
+ window._t = setTimeout(resetGrid, 220);
+});
+
+// Density slider
+const slider = document.getElementById('densitySlider');
+const dlabel = document.getElementById('densityLabel');
+function setDensity(n) {
+ document.documentElement.style.setProperty('--cols', n);
+ dlabel.textContent = n + ' cols';
+ try { localStorage.setItem('glit_theme_density', n); } catch(e){}
+}
+slider.addEventListener('input', e => setDensity(parseInt(e.target.value)));
+const savedDensity = parseInt(localStorage.getItem('glit_theme_density') || '6');
+if (savedDensity >= 4 && savedDensity <= 12) { slider.value = savedDensity; setDensity(savedDensity); }
+
+// Theme toggle
+const tb = document.getElementById('theme-toggle');
+function setTheme(t){ document.documentElement.dataset.theme = t; try { localStorage.setItem('glit_theme', t); } catch(e){} tb.textContent = t === 'dark' ? '☾' : '☀'; }
+setTheme(document.documentElement.dataset.theme || 'light');
+tb.addEventListener('click', () => setTheme(document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'));
+
+loadFacets();
+loadGridPage();
+</script>
+<!-- ============================================================
+ DW UNIVERSAL CONTACT MODULE — fashion-house UX
+ Inject before </body> in every DW-family sister site.
+ Self-contained: CSS + 4 modals + JS submission handlers.
+ Uses host site's CSS vars (--bg, --fg, --gold, --rule).
+ ============================================================ -->
+<style>
+ /* === MODAL BASE === */
+ .dwm{position:fixed;inset:0;background:rgba(0,0,0,0.78);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;overflow-y:auto}
+ .dwm.open{display:flex}
+ .dwm-box{background:var(--bg);border:1px solid var(--rule);max-width:520px;width:100%;padding:36px 32px;position:relative;max-height:90vh;overflow-y:auto;animation:dwm-in 0.25s ease}
+ @keyframes dwm-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
+ .dwm-box h3{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:400;font-size:32px;line-height:1.05;margin-bottom:6px;color:var(--fg);letter-spacing:-0.01em}
+ .dwm-box .sub{color:var(--muted);font-size:12px;letter-spacing:0.16em;text-transform:uppercase;margin-bottom:24px;font-weight:500}
+ .dwm-close{position:absolute;top:18px;right:18px;background:transparent;border:0;color:var(--muted);font-size:24px;cursor:pointer;width:32px;height:32px;line-height:1;padding:0}
+ .dwm-close:hover{color:var(--gold)}
+ .dwm-preview{display:flex;gap:14px;align-items:center;padding:12px;background:var(--bg-soft);margin-bottom:18px}
+ .dwm-preview img{width:64px;height:64px;object-fit:cover}
+ .dwm-preview .pn{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:15px;line-height:1.2;color:var(--fg)}
+ .dwm-preview .pc{font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
+ .dwm-field{margin-bottom:14px}
+ .dwm-field label{display:block;font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:500}
+ .dwm-field input,.dwm-field textarea,.dwm-field select{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;padding:8px 4px;font-size:14px;font-family:inherit;color:var(--fg);outline:none;transition:border-color 0.2s}
+ .dwm-field input:focus,.dwm-field textarea:focus{border-bottom-color:var(--gold)}
+ .dwm-field textarea{min-height:60px;resize:vertical}
+ .dwm-submit{background:transparent;color:var(--muted, #c9b89e);border:1px solid var(--muted, #c9b89e);padding:14px 28px;font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:700;cursor:pointer;width:100%;margin-top:8px;transition:background 0.15s, color 0.15s}
+ .dwm-submit:hover{background:var(--muted, #c9b89e);color:var(--bg, #000)}
+
+ .dwm-submit:disabled{opacity:0.5;cursor:default}
+ .dwm-status{margin-top:14px;font-size:11px;letter-spacing:0.16em;text-transform:uppercase;text-align:center;display:none}
+ .dwm-status.ok{color:var(--sage);display:block}
+ .dwm-status.err{color:#e08070;display:block}
+ /* contact-options */
+ .dwm-options{display:flex;flex-direction:column;gap:10px}
+ .dwm-option{display:flex;align-items:center;gap:14px;padding:18px 20px;background:transparent;border:1px solid var(--rule);color:var(--fg);font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:600;cursor:pointer;text-decoration:none;transition:all 0.2s;text-align:left;width:100%}
+ .dwm-option:hover{border-color:var(--gold);color:var(--gold)}
+ .dwm-option svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}
+ .dwm-option .lbl{flex:1;display:block}
+ .dwm-option .val{display:block;font-size:10px;letter-spacing:0.14em;text-transform:none;font-weight:500;opacity:0.65;margin-top:4px}
+
+/* graphics-loop pass 5: serif hero typography + nav legibility */
+.cinema h1, h1.headline { font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 500; letter-spacing: -0.01em }
+.h-link { font-size: 13px; letter-spacing: 0.06em }
+
+/* graphics-loop pass 11: Ideas rails */
+#ideas { padding: 56px 24px 24px; max-width:1600px; margin:0 auto }
+#ideas .rail-block { margin-bottom:48px }
+#ideas .rail-eyebrow { font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:var(--muted, #888); margin-bottom:8px }
+#ideas .rail-title { font-size:clamp(22px,2.6vw,32px); font-weight:500; letter-spacing:-0.01em; margin:0 0 18px; color:var(--ink,#fff) }
+#ideas .rail { display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; scrollbar-width:none }
+#ideas .rail::-webkit-scrollbar { display:none }
+#ideas .rail-card { flex:0 0 240px; scroll-snap-align:start; cursor:pointer; transition:transform 0.2s }
+#ideas .rail-card:hover { transform:translateY(-3px) }
+#ideas .rail-card img { width:100%; aspect-ratio:1; object-fit:cover; display:block; background:var(--card,#222) }
+#ideas .rail-card .rc-title { font-size:13px; font-weight:500; color:var(--paper,#fff); padding:8px 0 2px; line-height:1.3 }
+#ideas .rail-card .rc-meta { font-size:11px; color:var(--muted,#888); letter-spacing:0.06em }
+@media (max-width:720px) { #ideas .rail-card { flex:0 0 160px } }
+</style>
+
+<!-- Contact options modal -->
+<div class="dwm" id="dwmContact" onclick="if(event.target===this)dwmClose('Contact')">
+ <div class="dwm-box" style="max-width:440px">
+ <button class="dwm-close" onclick="dwmClose('Contact')" aria-label="Close">×</button>
+ <h3>Contact</h3>
+ <p class="sub" id="dwmContactSub">Three ways to reach us</p>
+ <div class="dwm-options">
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Inquiry')">
+ <svg viewBox="0 0 24 24"><path d="M4 4h16v12H7l-3 3z"/></svg>
+ <span class="lbl">Send an Inquiry<span class="val">Project name · scope · all the details</span></span>
+ </button>
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Sample')">
+ <svg viewBox="0 0 24 24"><rect x="4" y="6" width="16" height="14"/><path d="M4 10h16M9 6V3h6v3"/></svg>
+ <span class="lbl">Request a Sample<span class="val">Memo sample · ships free · 3–5 business days</span></span>
+ </button>
+ <a class="dwm-option" id="dwmContactEmailLink" href="mailto:info@glitterwalls.com">
+ <svg viewBox="0 0 24 24"><path d="M3 6h18v12H3z"/><path d="M3 6l9 7 9-7"/></svg>
+ <span class="lbl">Email Us<span class="val" id="dwmContactEmailLabel">info@glitterwalls.com</span></span>
+ </a>
+ </div>
+ </div>
+</div>
+
+<!-- Inquiry modal -->
+<div class="dwm" id="dwmInquiry" onclick="if(event.target===this)dwmClose('Inquiry')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Inquiry')" aria-label="Close">×</button>
+ <h3>Project Inquiry</h3>
+ <p class="sub">We'll respond within one business day</p>
+ <form id="dwmInquiryForm" onsubmit="return dwmSubmit(event,'inquiry')">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Phone</label><input type="tel" name="phone"></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Project Name</label><input type="text" name="projectName" required></div>
+ <div class="dwm-field"><label>Project Scope</label><textarea name="projectScope" placeholder="Square footage · room count · timeline" required></textarea></div>
+ <div class="dwm-field"><label>Additional Information</label><textarea name="message" placeholder="Patterns of interest, finish preferences, budget"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Inquiry</button>
+ <div class="dwm-status" id="dwmInquiryStatus"></div>
+ </form>
+ </div>
+</div>
+
+<!-- Sample-request modal -->
+<div class="dwm" id="dwmSample" onclick="if(event.target===this)dwmClose('Sample')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Sample')" aria-label="Close">×</button>
+ <h3>Request a Sample</h3>
+ <p class="sub">Memo sample · ships free · 3–5 business days</p>
+ <div class="dwm-preview" id="dwmSamplePreview" style="display:none">
+ <img id="dwmSampleImg" src="" alt="">
+ <div><div class="pn" id="dwmSampleName"></div><div class="pc" id="dwmSampleSku"></div></div>
+ </div>
+ <form id="dwmSampleForm" onsubmit="return dwmSubmit(event,'sample')">
+ <input type="hidden" name="sku" id="dwmSampleSkuInput">
+ <input type="hidden" name="title" id="dwmSampleTitleInput">
+ <input type="hidden" name="image_url" id="dwmSampleImageInput">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Shipping Address</label><input type="text" name="address" placeholder="Street" required></div>
+ <div class="dwm-field" style="display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px">
+ <input type="text" name="city" placeholder="City" required>
+ <input type="text" name="state" placeholder="State" required>
+ <input type="text" name="zip" placeholder="ZIP" required>
+ </div>
+ <div class="dwm-field"><label>Notes (optional)</label><textarea name="message" placeholder="Project, sq.ft., timing"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Sample Request</button>
+ <div class="dwm-status" id="dwmSampleStatus"></div>
+ </form>
+ </div>
+</div>
+
+<script>
+ // Universal modal control
+ function dwmOpen(name, opts){
+ document.getElementById('dwm' + name).classList.add('open');
+ document.body.style.overflow = 'hidden';
+ if (name === 'Sample' && opts) {
+ document.getElementById('dwmSamplePreview').style.display = 'flex';
+ document.getElementById('dwmSampleImg').src = opts.image_url || '';
+ document.getElementById('dwmSampleName').textContent = opts.title || '';
+ document.getElementById('dwmSampleSku').textContent = opts.sku || '';
+ document.getElementById('dwmSampleSkuInput').value = opts.sku || '';
+ document.getElementById('dwmSampleTitleInput').value = opts.title || '';
+ document.getElementById('dwmSampleImageInput').value = opts.image_url || '';
+ } else if (name === 'Sample') {
+ document.getElementById('dwmSamplePreview').style.display = 'none';
+ document.getElementById('dwmSampleSkuInput').value = '';
+ document.getElementById('dwmSampleTitleInput').value = '';
+ document.getElementById('dwmSampleImageInput').value = '';
+ }
+ }
+ function dwmClose(name){ document.getElementById('dwm'+name).classList.remove('open'); document.body.style.overflow=''; }
+
+ // Universal form submit — POSTs to /api/send-{kind}
+ async function dwmSubmit(e, kind) {
+ e.preventDefault();
+ const form = e.target;
+ const data = Object.fromEntries(new FormData(form).entries());
+ const btn = form.querySelector('.dwm-submit');
+ const status = form.querySelector('.dwm-status');
+ btn.disabled = true; const orig = btn.textContent; btn.textContent = 'Sending…';
+ status.className = 'dwm-status';
+ try {
+ const r = await fetch('/api/send-' + kind, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify(data) });
+ if (!r.ok) throw new Error('HTTP '+r.status);
+ const j = await r.json();
+ status.textContent = kind === 'sample' ? 'Sample request sent — ships within 3–5 business days' : 'Inquiry sent — we respond within 1 business day';
+ status.className = 'dwm-status ok';
+ btn.textContent = 'Sent ✓';
+ setTimeout(() => { dwmClose(kind === 'sample' ? 'Sample' : 'Inquiry'); btn.disabled = false; btn.textContent = orig; status.className = 'dwm-status'; form.reset(); }, 2800);
+ } catch (err) {
+ status.textContent = 'Send failed — please email info@designerwallcoverings.com';
+ status.className = 'dwm-status err';
+ btn.disabled = false; btn.textContent = orig;
+ }
+ return false;
+ }
+
+ // Wire up "Memo samples ship free" badge in hero to open sample modal directly
+ document.querySelectorAll('.hero .badge, [data-open-sample]').forEach(el => {
+ el.style.cursor = 'pointer';
+ el.addEventListener('click', () => dwmOpen('Sample'));
+ });
+
+ // Wire nav "Trade" link to inquiry modal
+ document.querySelectorAll('nav a[href*="designerwallcoverings.com"]').forEach(a => {
+ a.removeAttribute('target');
+ a.removeAttribute('href');
+ a.style.cursor = 'pointer';
+ a.addEventListener('click', e => { e.preventDefault(); dwmOpen('Contact'); });
+ });
+
+ // Override product card clicks — open Sample modal pre-filled instead of redirecting to DW
+ document.addEventListener('click', e => {
+ const card = e.target.closest('.card, .rail-card');
+ if (!card) return;
+ if (card.tagName === 'A' && (card.getAttribute('href') || '').startsWith('/sample/')) {
+ e.preventDefault();
+ const img = card.querySelector('img');
+ const pat = card.querySelector('.pat');
+ const sku = card.getAttribute('href').replace('/sample/', '');
+ dwmOpen('Sample', {
+ sku,
+ title: pat ? pat.textContent.trim() : '',
+ image_url: img ? img.src : ''
+ });
+ }
+ }, true);
+// DW STANDARD: hero pulls from products.json[0].image_url so dw-collections-viewer
+// drag-drop / hero-pin updates the live front page on next deploy.
+// Always upgrades to the largest Shopify variant (strips _NxN size suffix) so
+// the full-page hero stays sharp.
+// DW STANDARD: hero rotates through top-20 NEWEST products on each visit
+// (novasuede.com pattern). Fetches /api/products?limit=100, sorts by created_at desc,
+// takes the freshest 20, picks one per visit via localStorage counter.
+// Falls back to static /hero-bg.jpg on any error.
+(async function rotateHero() {
+ try {
+ const r = await fetch('/api/products?limit=100');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || [])
+ .filter(p => p && p.image_url && /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(p.image_url))
+ .sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')))
+ .slice(0, 20);
+ if (!items.length) return;
+ let visits = 0;
+ try {
+ visits = parseInt(localStorage.getItem('hero_visits') || '0', 10) || 0;
+ localStorage.setItem('hero_visits', String(visits + 1));
+ } catch(e) {}
+ const pick = items[visits % items.length];
+ // Strip _NxN size suffix to get the largest CDN variant
+ const url = pick.image_url.replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ const bg = document.getElementById('heroBg') || document.getElementById('cinemaBg');
+ if (bg) bg.style.backgroundImage = "url('" + url + "')";
+ } catch (e) {}
+})();
+
+
+// DW STANDARD sort-select wire-up (added by fleet patcher)
+(function(){
+ const sortSel = document.getElementById('sortSelect');
+ if (!sortSel) return;
+ const KEY = location.hostname.replace(/\./g, '_') + '_sort';
+ const saved = localStorage.getItem(KEY);
+ if (saved) { try { sortSel.value = saved; } catch(e){} }
+ if (typeof state !== 'undefined') state.sort = sortSel.value;
+ sortSel.addEventListener('change', e => {
+ const v = e.target.value;
+ try { localStorage.setItem(KEY, v); } catch(e){}
+ if (typeof state !== 'undefined') state.sort = v;
+ if (typeof resetGrid === 'function') resetGrid();
+ else location.reload();
+ });
+})();
+
+// graphics-loop pass 11: hydrate Ideas rails from /api/products
+(async function hydrateIdeas() {
+ try {
+ const r = await fetch('/api/products?limit=80');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || []).filter(p => p && p.image_url);
+ if (!items.length) return;
+ const sorted = [...items].sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')));
+ const newest = sorted.slice(0, 12);
+ // Curated = deterministic offset slice (every 5th item starting at idx 3) for variety
+ const curated = items.filter((_, i) => i % 5 === 3).slice(0, 12);
+ function card(p) {
+ const url = (p.image_url || '').replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ return '<a class="rail-card" href="/sample/' + encodeURIComponent(p.handle || p.sku) + '">' +
+ '<img src="' + url + '" alt="' + (p.title || '').replace(/"/g, '"') + '" loading="lazy">' +
+ '<div class="rc-title">' + ((p.title || '').split('|')[0] || '').trim() + '</div>' +
+ '<div class="rc-meta">' + (p.vendor || '') + '</div>' +
+ '</a>';
+ }
+ const r1 = document.getElementById('railNewest');
+ const r2 = document.getElementById('railCurated');
+ if (r1) r1.innerHTML = newest.map(card).join('');
+ if (r2) r2.innerHTML = curated.map(card).join('');
+ } catch(e) {}
+})();
+</script>
+
+</body>
+</html>
diff --git a/public/index.html.bak.nspropagate.1778203385086 b/public/index.html.bak.nspropagate.1778203385086
new file mode 100644
index 0000000..4cd5fce
--- /dev/null
+++ b/public/index.html.bak.nspropagate.1778203385086
@@ -0,0 +1,954 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-RK1X75MQ68"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-RK1X75MQ68');
+</script>
+
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Casa Rossa — The romance of glitter.</title>
+<meta name="description" content="Casa Rossa is a curated atelier dedicated entirely to glitter. We do one thing — and we do it carefully.">
+<meta name="theme-color" content="#FFF">
+<link rel="canonical" href="https://glitterwalls.com/">
+<link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
+<link rel="preload" as="image" href="/hero-bg.jpg" fetchpriority="high">
+<script type="application/ld+json">
+{
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ "name": "Casa Rossa",
+ "url": "https://glitterwalls.com/",
+ "email": "info@glitterwalls.com"
+}
+</script>
+<script src="/zd-loader.js" defer></script>
+<style>
+:root {
+ --bg: #FFF;
+ --paper: #000;
+ --muted: #8B7866;
+ --line: #000;
+ --accent: #D70000;
+ --bg-soft: #000;
+ --cols: 6;
+}
+html[data-theme="dark"] {
+ --bg: #000;
+ --paper: #FFF;
+ --muted: #C9B89E;
+ --line: rgba(255,254,250,0.12);
+ --accent: #D70000;
+ --bg-soft: #2a1f15;
+}
+* { margin:0; padding:0; box-sizing:border-box }
+html { scroll-behavior:smooth }
+body { font-family:'Inter', sans-serif; color:var(--paper); -webkit-font-smoothing:antialiased; background:var(--bg); min-height:100vh; overflow-x:hidden }
+/* DW-FASHION-TEMPLATE-OVERRIDE */
+.section-title .accent, .footer-brand, .center-mark, h1, h2, h3 { font-family: 'Monoton', 'Impact', sans-serif !important; font-weight:500 !important; }
+
+/* ===== Auto-hide header ===== */
+header { position:fixed; top:0; left:0; right:0; display:flex; justify-content:space-between; align-items:center; padding:22px 32px; z-index:100; background:rgba(0,0,0,0.55); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); transition:transform .3s }
+.h-link { display:flex; align-items:center; gap:10px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); text-decoration:none; cursor:pointer; background:transparent; border:0 }
+.h-link:hover { opacity:0.7 }
+.h-icon { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.5 }
+
+/* ===== Cinema hero ===== */
+.cinema { position:relative; height:100vh; width:100%; overflow:hidden }
+.cinema-bg { position:absolute; inset:0; background-size:cover; background-position:center; background-image:url('/hero-bg.jpg') }
+.cinema-bg::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 60%, rgba(0,0,0,0.75) 100%) }
+.corner-mark { position:absolute; top:24px; left:32px; font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,0.55), 0 0 1px rgba(0,0,0,0.4); z-index:5 }
+.corner-mark::before { content:"◆ "; margin-right:6px }
+.center-mark { position:absolute; top:clamp(80px,12vh,140px); left:50%; transform:translateX(-50%); font-size:clamp(28px,4vw,56px); font-weight:500; letter-spacing:0.18em; text-transform:uppercase; text-align:center; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,0.65), 0 0 1px rgba(0,0,0,0.5); z-index:5 }
+.center-mark .tm { font-size:14px; vertical-align:super; opacity:0.7; margin-left:0.2em }
+.center-mark .sub { display:block; font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400; font-size:0.4em; letter-spacing:0.04em; text-transform:none; margin-top:14px; opacity:0.85 }
+.meta-line { position:absolute; bottom:32px; left:32px; font-size:10px; letter-spacing:0.28em; text-transform:uppercase; font-weight:700; color:#fff; z-index:5; opacity:0.85 }
+.meta-line .num { font-size:12px; display:block; margin-top:4px; letter-spacing:0.05em }
+.enter { position:absolute; bottom:32px; right:32px; display:flex; align-items:center; gap:14px; font-size:11px; letter-spacing:0.36em; text-transform:uppercase; font-weight:700; color:#fff; text-decoration:none; padding-bottom:6px; border-bottom:1px solid #fff; transition:gap 0.25s; z-index:5 }
+.enter:hover { gap:22px }
+.enter svg { width:24px; height:12px }
+
+/* ===== Section ===== */
+.section { padding:96px 32px }
+.section-header { display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:24px; margin-bottom:32px; padding-bottom:24px; border-bottom:1px solid var(--line) }
+.section-title { font-size:clamp(36px,5vw,64px); font-weight:300; letter-spacing:-0.02em; line-height:1 }
+.section-title .accent { color: var(--accent); font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400 }
+.section-eyebrow { font-size:10px; letter-spacing:0.4em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:16px }
+.section-meta { font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:600; color:var(--muted); text-align:right; line-height:1.6 }
+
+/* ===== Filter bar ===== */
+.filters { display:flex; gap:8px; align-items:center; margin-bottom:18px; flex-wrap:wrap }
+.chip { padding:8px 16px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); background:transparent; border:1px solid var(--line); cursor:pointer; transition:all 0.2s; font-family:inherit }
+.chip:hover { border-color:var(--paper) }
+.chip.active { background:var(--paper); color:var(--bg); border-color:var(--paper) }
+.search { flex:0 1 280px; margin-left:auto; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); padding:6px 0 }
+.search input { flex:1; background:transparent; border:0; color:var(--paper); font-family:inherit; font-size:13px; outline:none; letter-spacing:0.04em }
+.search input::placeholder { color:var(--muted) }
+.search svg { width:16px; height:16px; stroke:var(--muted); fill:none; stroke-width:1.5 }
+
+/* ===== Grid-density slider ===== */
+.density { display:flex; align-items:center; gap:14px; padding:6px 0; margin-bottom:24px }
+.density label { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--muted) }
+.density input[type=range] { flex:1; max-width:240px; -webkit-appearance:none; appearance:none; height:1px; background:var(--line); outline:none }
+.density input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50% }
+.density input[type=range]::-moz-range-thumb { width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50%; border:0 }
+.density .ct { font-size:11px; color:var(--muted); letter-spacing:0.18em; text-transform:uppercase; font-weight:600; min-width:80px }
+
+/* ===== Stats line ===== */
+.stat-line { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:600; color:var(--muted); margin-bottom:24px }
+
+/* ===== Product grid (novasuede pattern: flush grid + slide-up overlay) ===== */
+.grid { display:grid; grid-template-columns:repeat(var(--cols), 1fr); gap:0 }
+.card { position:relative; aspect-ratio:1/1.15; cursor:pointer; overflow:hidden; border:1px solid var(--bg); transition:transform 0.4s cubic-bezier(0.2,0.8,0.2,1); background:var(--bg-soft) }
+.card:hover { transform:scale(1.04); z-index:5 }
+.card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.4s ease }
+.card .overlay { position:absolute; left:0; right:0; bottom:0; padding:20px 16px 14px; background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.85) 100%); transform:translateY(48%); opacity:0.85; transition:transform 0.3s ease, opacity 0.3s ease }
+.card:hover .overlay { transform:translateY(0); opacity:1 }
+.card .pat { font-size:13px; font-weight:600; letter-spacing:0.02em; color:#fff; line-height:1.25; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
+.card .ven { font-size:9px; letter-spacing:0.18em; text-transform:uppercase; color:#fff; opacity:0.7; font-weight:500; margin-top:4px }
+.card .actions { margin-top:10px; display:flex; gap:6px }
+.card .sample-btn { flex:1; padding:7px 10px; background:#fff; color:#000; font-family:inherit; font-size:10px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; border:0; cursor:pointer; text-align:center; transition:all 0.2s }
+.card .sample-btn:hover { background:var(--accent); color:#fff }
+
+@media (max-width:1024px) { .grid { grid-template-columns:repeat(min(var(--cols), 4), 1fr) } }
+@media (max-width:720px) { .grid { grid-template-columns:repeat(2, 1fr) } .density { display:none } }
+
+.sentinel { height:1px }
+.loading { text-align:center; color:var(--muted); padding:32px; font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700 }
+
+/* ===== Footer ===== */
+footer { padding:64px 32px 32px; border-top:1px solid var(--line); margin-top:32px }
+.footer-grid { max-width:1400px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px; margin-bottom:48px }
+.footer-brand { font-size:24px; font-weight:300; letter-spacing:0.32em; text-transform:uppercase; margin-bottom:12px }
+.footer-text { font-size:13px; line-height:1.6; color:var(--muted); max-width:380px }
+.footer-col h4 { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--paper); margin-bottom:18px }
+.footer-col a { display:block; font-size:13px; color:var(--muted); text-decoration:none; margin-bottom:8px; transition:color 0.2s; cursor:pointer; background:transparent; border:0; font-family:inherit; padding:0; text-align:left }
+.footer-col a:hover { color:var(--accent) }
+.footer-bottom { max-width:1400px; margin:0 auto; padding-top:24px; border-top:1px solid var(--line); display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--muted) }
+
+@media (max-width:720px) {
+ .corner-mark, .meta-line, .enter { font-size:10px }
+ .center-mark { font-size:24px; letter-spacing:0.12em; top:clamp(60px,9vh,90px) }
+ .section, footer { padding-left:20px; padding-right:20px }
+ .footer-grid { grid-template-columns:1fr; gap:32px }
+ .search { margin-left:0; flex:1 1 100% }
+}
+
+.theme-toggle { background:transparent; border:1px solid var(--line); width:32px; height:32px; cursor:pointer; color:var(--paper); display:inline-flex; align-items:center; justify-content:center; font-size:14px; line-height:1; transition:all .15s; padding:0 }
+.theme-toggle:hover { border-color:var(--accent); color:var(--accent) }
+
+/* ===== WCAG 2.4.7 — keyboard focus indicators ===== */
+/* Strictly :focus-visible so mouse clicks do NOT show the ring */
+a:focus-visible,
+button:focus-visible,
+input:focus-visible,
+select:focus-visible,
+textarea:focus-visible,
+[tabindex]:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+</style>
+<script>
+(function(){ try { var t = localStorage.getItem('glit_theme') || 'light'; document.documentElement.dataset.theme = t; } catch(e){} })();
+</script>
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Monoton&display=swap">
+
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://glitterwalls.com/">
+<meta property="og:title" content="Glitter Walls">
+<meta property="og:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta property="og:image" content="https://glitterwalls.com/hero-bg.jpg">
+<meta property="og:site_name" content="Glitter Walls">
+<meta property="article:publisher" content="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings">
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:title" content="Glitter Walls">
+<meta name="twitter:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta name="twitter:image" content="https://glitterwalls.com/hero-bg.jpg">
+<!-- graphics-loop pass 13: footer + fb -->
+</head>
+<body>
+<style id="ns-header-modal-styles">
+ .ns-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 18px 36px; background: rgba(10,10,10,0.92) !important; backdrop-filter: blur(8px); border-bottom: 1px solid rgba(245,241,232,0.06); }
+ .ns-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; }
+ .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #a98b5b 0%, #5d4c32 60%, #332a1b 100%); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
+ .ns-name { font-family: -apple-system, "SF Pro Display", "Helvetica Neue", system-ui, sans-serif; font-size: 18px !important; font-weight: 300 !important; letter-spacing: 0.02em !important; color: #f5f1e8 !important; text-transform: none !important; margin: 0 !important; }
+ .ns-name sup { font-size: 0.55em; font-weight: 300; margin-left: 1px; }
+ .ns-nav { display: flex; gap: 32px; align-items: center; list-style: none; padding: 0; margin: 0; }
+ .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; padding: 0 !important; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
+ .ns-nav a:hover, .ns-nav button:hover { color: #ffffff !important; }
+ @media (max-width: 820px) { .ns-header { padding: 14px 18px; } .ns-nav { gap: 16px; } .ns-nav a, .ns-nav button { font-size: 13px !important; } }
+ @media (max-width: 760px) {
+ .ns-header { flex-wrap: wrap; }
+ .ns-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0 4px; }
+ .ns-nav.open { display: flex !important; }
+ .ns-nav a, .ns-nav button { padding: 10px 0 !important; border-bottom: 1px solid rgba(245,241,232,0.08); width: 100%; text-align: left; }
+ .ns-nav a:nth-child(n+5), .ns-nav button:nth-child(n+5) { display: block !important; }
+ .ns-header .mobile-toggle { display: flex !important; }
+ }
+ @media (min-width: 761px) {
+ .ns-header .mobile-toggle { display: none !important; }
+ }
+ .ns-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.78); z-index: 200; align-items: center; justify-content: center; padding: 24px; backdrop-filter: blur(6px); }
+ .ns-modal.show { display: flex; }
+ .ns-modal-card { max-width: 460px; width: 100%; background: #141414 !important; border: 1px solid rgba(245,241,232,0.14); border-radius: 6px; padding: 28px 30px 30px; position: relative; }
+ .ns-modal-card .close-x { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; background: none; border: 1px solid rgba(245,241,232,0.18); color: rgba(245,241,232,0.6) !important; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; }
+ .ns-modal-card .close-x:hover { color: #ffffff !important; border-color: #ffffff; }
+ .ns-modal-card h3 { font-family: -apple-system, "SF Pro Display", system-ui; font-weight: 300 !important; font-size: 22px !important; margin: 0 0 6px !important; color: #f5f1e8 !important; }
+ .ns-modal-card .sub { color: rgba(245,241,232,0.65) !important; font-size: 13px; margin: 0 0 22px; }
+ .ns-actions { display: flex; flex-direction: column; gap: 10px; }
+ .ns-action { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: rgba(245,241,232,0.04) !important; border: 1px solid rgba(245,241,232,0.12) !important; color: #f5f1e8 !important; text-decoration: none !important; cursor: pointer; transition: all 200ms; font: inherit; text-align: left; }
+ .ns-action:hover { background: rgba(245,241,232,0.08) !important; border-color: #d4b683 !important; }
+ .ns-action .ico { width: 32px; height: 32px; border-radius: 50%; background: rgba(212,182,131,0.12); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
+ .ns-action .txt { flex: 1; }
+ .ns-action .txt b { display: block; font-weight: 500; font-size: 14px; color: #f5f1e8 !important; }
+ .ns-action .txt span { font-size: 12px; color: rgba(245,241,232,0.55) !important; }
+
+ /* ─── FINAL CONTRAST PASS — kill remaining gold-solid + white-island defects ─── */
+ /* Replace all gold-fill accents with off-white (Gucci-aesthetic, no DW gold solids) */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active,
+ .drapery-btn, .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover,
+ .drapery-btn:hover, .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ /* Gold accents stay only as edge color (links, glyphs) — not fills */
+ a { color: #d4b683; }
+ a:hover { color: #f5d97a; }
+ /* Authorized-dealer footer line — small caps tracked, muted ink, no gold pill */
+ .authorized, .authorized-dealer p {
+ background: transparent !important;
+ color: rgba(245,241,232,0.5) !important;
+ font-size: 10px !important;
+ letter-spacing: 0.22em !important;
+ text-transform: uppercase !important;
+ padding: 0 !important;
+ border: none !important;
+ margin-top: 14px !important;
+ }
+ /* Kill any straggler white bg in info-card / sample-related cards */
+ .info-card, .info-card-link, .care-highlight, .feature-card, .spec-item {
+ background-color: rgba(245,241,232,0.04) !important;
+ border-color: rgba(245,241,232,0.12) !important;
+ }
+ /* Ensure modal content stays readable — Steve's earlier sweep made it #141414 with white text */
+ .modal-content { background: #141414 !important; color: #f5f1e8 !important; }
+ .modal-content * { color: #f5f1e8 !important; }
+ .modal-content input, .modal-content textarea, .modal-content select {
+ background: rgba(245,241,232,0.05) !important;
+ color: #f5f1e8 !important;
+ border-color: rgba(245,241,232,0.2) !important;
+ }
+ .modal-content label { color: rgba(245,241,232,0.6) !important; }
+ /* Force the wide-tracked NOVASUEDE wordmark to stay white */
+ .ns-wordmark, .ns-wordmark sup { color: #f5f1e8 !important; }
+
+ /* ─── Modal-internal contrast (post-QA defects) ─── */
+ /* Backdrop covers full viewport */
+ .modal { width: 100vw !important; height: 100vh !important; left: 0 !important; top: 0 !important; background: rgba(0, 0, 0, 0.78) !important; backdrop-filter: blur(6px); }
+ /* Chip — flip from white-on-white island to dark card */
+ .request-chip {
+ background: rgba(245, 241, 232, 0.06) !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.18) !important;
+ border-radius: 4px !important;
+ }
+ .request-chip * { color: #f5f1e8 !important; }
+ .request-chip .chip-swatch {
+ /* swatch dot ALWAYS displays the inline-style hex from JS — fight any sweep */
+ border: 1px solid rgba(0, 0, 0, 0.4) !important;
+ }
+ /* + Add to request — hairline white-border on transparent (no gold) */
+ .add-to-request-btn {
+ background: transparent !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.6) !important;
+ border-radius: 0 !important;
+ padding: 12px 22px !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 400 !important;
+ }
+ .add-to-request-btn:hover {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ /* Hex caption visible */
+ .preview-hex, #colorPreviewHex {
+ display: block !important;
+ color: rgba(245, 241, 232, 0.55) !important;
+ font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
+ font-size: 11px !important;
+ margin-top: 4px !important;
+ letter-spacing: 0.04em !important;
+ text-transform: lowercase !important;
+ }
+ /* Color preview name — stays single, prominent */
+ #colorPreviewName {
+ color: #f5f1e8 !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 500 !important;
+ display: block !important;
+ margin-top: 12px !important;
+ }
+
+ /* ─── Mobile hamburger nav (replaces the overflow at <760px) ─── */
+ @media (max-width: 760px) {
+ header .nav-container { flex-wrap: wrap; }
+ header nav { display: none; flex-basis: 100%; flex-direction: column; gap: 6px; padding: 16px 0 6px; }
+ header nav.open { display: flex; }
+ header nav a { padding: 10px 0; border-bottom: 1px solid rgba(245,241,232,0.1); }
+ header .mobile-toggle {
+ display: flex !important;
+ flex-direction: column;
+ gap: 5px;
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+ padding: 8px;
+ }
+ header .mobile-toggle span {
+ width: 22px; height: 1.5px;
+ background: #f5f1e8;
+ display: block;
+ }
+ }
+ @media (min-width: 761px) {
+ header .mobile-toggle { display: none !important; }
+ }
+
+ </style>
+<header class="ns-header">
+ <a href="#home" class="ns-brand" aria-label="Casa Rossa home">
+ <span class="ns-dot"></span>
+ <span class="ns-name">Casa Rossa</span>
+ </a>
+ <nav class="ns-nav" id="nsPrimaryNav" aria-label="Primary">
+ <a href="#home">Home</a>
+ <a href="#colors">Colors</a>
+ <a href="#specifications">Specifications</a>
+ <a href="fire-ratings.html">Fire Ratings</a>
+ <a href="faq.html">FAQ</a>
+ <a href="about.html">About</a>
+ <button type="button" onclick="nsContactOpen()">Contact</button>
+ </nav>
+ <button type="button" class="mobile-toggle" aria-label="Toggle menu" aria-controls="nsPrimaryNav" aria-expanded="false" onclick="nsToggleNav(this)">
+ <span></span><span></span><span></span>
+ </button>
+ </header>
+<div class="ns-modal" id="nsContactModal" role="dialog" aria-modal="true" aria-labelledby="nsContactTitle" onclick="if(event.target===this)nsContactClose()">
+ <div class="ns-modal-card">
+ <button type="button" class="close-x" onclick="nsContactClose()" aria-label="Close">×</button>
+ <h3 id="nsContactTitle">How can we help?</h3>
+ <p class="sub">Trade-account replies within one business day.</p>
+ <div class="ns-actions">
+ <a class="ns-action" href="#contact" onclick="nsContactClose()"><span class="ico">📋</span><div class="txt"><b>Get a Quote</b><span>Project specs → priced estimate</span></div></a>
+ <a class="ns-action" href="#contact" onclick="nsContactClose();openModal();"><span class="ico">📦</span><div class="txt"><b>Order a Sample</b><span>Free swatch to your shop</span></div></a>
+ <a class="ns-action" href="mailto:info@novasuede.com?subject=Novasuede%20inquiry"><span class="ico">✉️</span><div class="txt"><b>Email Us</b><span>info@novasuede.com · Designer Wallcoverings</span></div></a>
+ <a class="ns-action" href="tel:888-373-4564"><span class="ico">📞</span><div class="txt"><b>Call Us</b><span>(888) 373-4564 · M–F, 9–5 PT</span></div></a>
+ </div>
+ </div>
+ </div>
+<script>
+ function nsContactOpen() { var m = document.getElementById('nsContactModal'); if (m) m.classList.add('show'); }
+ function nsContactClose() { var m = document.getElementById('nsContactModal'); if (m) m.classList.remove('show'); }
+ function nsToggleNav(btn) {
+ var nav = document.getElementById('nsPrimaryNav');
+ if (!nav) return;
+ var open = nav.classList.toggle('open');
+ btn.setAttribute('aria-expanded', open ? 'true' : 'false');
+ }
+ document.addEventListener('keydown', function(e){ if (e.key === 'Escape') nsContactClose(); });
+</script>
+
+
+
+<header>
+ <button class="h-link" onclick="dwmOpen('Contact')" aria-label="Contact"><svg class="h-icon" viewBox="0 0 24 24"><path d="M3 7h18M3 12h18M3 17h18"/></svg><span>Contact</span></button>
+ <button class="theme-toggle" id="theme-toggle" aria-label="Theme toggle">☾</button>
+</header>
+
+<section class="cinema">
+ <div class="cinema-bg" id="heroBg"></div>
+ <div class="corner-mark">Sparkle & Glam</div>
+ <div class="center-mark">Glitter Walls</div>
+ <div class="meta-line">Glitter · Sequin · Holographic · Glam<span class="num" id="heroNum"></span></div>
+ <a class="enter" href="#shop">Enter <svg viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.4"><path d="M0 6h22M16 1l6 5-6 5"/></svg></a>
+</section>
+
+
+<section class="section" id="ideas">
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">New this week</h2>
+ <div class="rail" id="railNewest"></div>
+ </div>
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">Curated picks</h2>
+ <div class="rail" id="railCurated"></div>
+ </div>
+</section>
+
+<section class="section" id="shop">
+ <div class="section-header">
+ <div>
+ <div class="section-eyebrow">The Collection</div>
+ <h2 class="section-title"><span class="accent" id="totalCount">—</span> Patterns.</h2>
+ </div>
+ <div class="section-meta">Glitter · Sequin · Holographic · Glam</div>
+ </div>
+
+ <div class="filters" id="facets">
+ <button class="chip active" data-facet="all">All</button>
+ </div>
+
+ <div class="density">
+ <label>Sort</label>
+ <select id="sortSelect" aria-label="Sort products" style="background:transparent;color:inherit;border:1px solid var(--line,rgba(255,255,255,.2));font:inherit;font-size:11px;letter-spacing:.10em;text-transform:uppercase;padding:4px 8px;cursor:pointer;outline:none;margin-right:14px">
+ <option value="newest">Newest</option>
+ <option value="color">Color</option>
+ <option value="style">Style</option>
+ <option value="sku">SKU A→Z</option>
+ <option value="title">Title A→Z</option>
+ <option value="price-asc">Price ↑</option>
+ <option value="price-desc">Price ↓</option>
+ </select>
+ <label>Grid</label>
+ <input type="range" id="densitySlider" min="4" max="12" step="1" value="6" aria-label="Grid columns">
+ <span class="ct" id="densityLabel">6 cols</span>
+ <div class="search">
+ <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M21 21l-5.5-5.5"/></svg>
+ <input type="text" id="searchInput" placeholder="Search by pattern, color…" autocomplete="off">
+ </div>
+ </div>
+
+ <div class="stat-line" id="statLine">Loading…</div>
+ <div class="grid" id="grid"></div>
+ <div class="loading" id="loading">Loading more…</div>
+ <div class="sentinel" id="sentinel"></div>
+</section>
+
+<footer>
+ <div class="footer-grid">
+ <div>
+ <div class="footer-brand">Glitter Walls</div>
+ <p class="footer-text">Glitter Walls is a specialty glam archive within the Designer Wallcoverings family. Real samples ship free.</p>
+ <p class="footer-text" style="margin-top:14px;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;color:var(--paper);opacity:0.7"><a href="/about" style="color:inherit;text-decoration:none;border-bottom:1px solid var(--accent)">About →</a></p>
+ </div>
+ <div class="footer-col">
+ <h4>Aesthetic</h4>
+ <div id="footerFacets"></div>
+ </div>
+ <div class="footer-col">
+ <h4>Trade</h4>
+ <button onclick="dwmOpen('Inquiry')">Project Inquiry</button>
+ <button onclick="dwmOpen('Sample')">Request Sample</button>
+ <button onclick="dwmOpen('Contact')">Contact</button>
+ </div>
+
+ <div class="footer-col">
+ <h4>Social</h4>
+ <a class="fb-link" href="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings" target="_blank" rel="noopener">Facebook</a>
+ </div>
+ </div>
+ <div class="footer-bottom">
+ <span>glitterwalls.com · Casa Rossa</span>
+ <span><a href="mailto:info@glitterwalls.com" style="color:var(--paper);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px">info@glitterwalls.com</a></span>
+ <span id="footerStat"></span>
+ </div>
+</footer>
+
+<script>
+// mini-constellation — 43 niche-stars, current site highlighted in gold
+(function(){
+ const SLUG = "glitterwalls";
+ const NICHES = [
+ ['silkwallpaper','Silk','mat'],['silkwallcoverings','Silk W/C','mat'],['linenwallpaper','Linen','mat'],
+ ['jutewallpaper','Jute','mat'],['raffiawallcoverings','Raffia W/C','mat'],['raffiawalls','Raffia Walls','mat'],
+ ['corkwallcovering','Cork','mat'],['fabricwallpaper','Fabric','mat'],['textilewallpaper','Textile','mat'],
+ ['metallicwallpaper','Metallic','mat'],['silverleafwallpaper','Silver Leaf','mat'],['vinylwallpaper','Vinyl','mat'],
+ ['micawallpaper','Mica','mat'],['madagascarwallpaper','Madagascar','mat'],['mylarwallpaper','Mylar','mat'],
+ ['suedewallpaper','Suede','mat'],
+ ['1800swallpaper','1800s','dec'],['1890swallpaper','1890s','dec'],['1900swallpaper','1900s','dec'],
+ ['1920swallpaper','1920s','dec'],['1930swallpaper','1930s','dec'],['1940swallpaper','1940s','dec'],
+ ['1950swallpaper','1950s','dec'],['1960swallpaper','1960s','dec'],['1970swallpaper','1970s','dec'],
+ ['1980swallpaper','1980s','dec'],['retrowalls','Retro','dec'],['wallpapersback','W. Back','dec'],
+ ['agedwallpaper','Aged','cra'],['handcraftedwallpaper','Handcrafted','cra'],['museumwallpaper','Museum','cra'],
+ ['restorationwallpaper','Restoration','cra'],['pastelwallpaper','Pastel','cra'],['glitterwalls','Glitter','cra'],
+ ['greenwallcoverings','Green','cra'],['naturalwallcoverings','Natural','cra'],['saloonwallpaper','Saloon','cra'],
+ ['contractwallpaper','Contract','use'],['hotelwallcoverings','Hotel','use'],['hospitalitywallpaper','Hospitality','use'],
+ ['healthcarewallpaper','Healthcare','use'],['restaurantwallpaper','Restaurant','use'],['architecturalwallcoverings','Architectural','use']
+ ];
+ const COLOR = { mat:'#c9b687', dec:'#b86a4a', cra:'#6b8e6f', use:'#4a6b8e' };
+ const W = 1080, H = 200, BANDS = ['mat','dec','cra','use'];
+ const groups = { mat:[], dec:[], cra:[], use:[] };
+ for (const n of NICHES) groups[n[2]].push(n);
+ const svg = document.getElementById('miniConst');
+ if (!svg) return;
+ const bandW = W / BANDS.length;
+ let nodes = '';
+ BANDS.forEach((band, bi) => {
+ const list = groups[band];
+ const cx = bi * bandW + bandW / 2;
+ list.forEach((n, i) => {
+ const t = list.length === 1 ? 0.5 : i / (list.length - 1);
+ // deterministic jitter per slug
+ let h = 0; for (let k = 0; k < n[0].length; k++) h = (h * 31 + n[0].charCodeAt(k)) | 0;
+ const jx = ((h & 0xff) / 255 - 0.5) * (bandW * 0.5);
+ const jy = (((h >> 8) & 0xff) / 255 - 0.5) * 6; // tightened from 14 → 6 to prevent same-band collisions (16 mat nodes / 144px = 9px spacing)
+ const x = cx + jx, y = 28 + t * (H - 56) + jy;
+ const isCurrent = n[0] === SLUG;
+ const r = isCurrent ? 8 : 4;
+ const op = isCurrent ? 1 : 0.55;
+ nodes += `<g class="mc-node" data-slug="${n[0]}" data-label="${n[1]}" style="cursor:pointer">
+ <circle cx="${x}" cy="${y}" r="${r}" fill="url(#dna-${band})" fill-opacity="${op}" stroke="${COLOR[band]}" stroke-opacity="${isCurrent?1:0.7}" stroke-width="${isCurrent?2:1}">
+ <title>${n[1]} — ${n[0]}.com</title>
+ </circle>
+ ${isCurrent ? `<circle cx="${x}" cy="${y}" r="${r+5}" fill="none" stroke="${COLOR[band]}" stroke-opacity="0.4" stroke-width="1"><animate attributeName="r" values="${r+5};${r+12};${r+5}" dur="2.4s" repeatCount="indefinite"/><animate attributeName="stroke-opacity" values="0.4;0;0.4" dur="2.4s" repeatCount="indefinite"/></circle>` : ''}
+ </g>`;
+ });
+ });
+ // append nodes after defs
+ svg.insertAdjacentHTML('beforeend', nodes);
+ svg.querySelectorAll('.mc-node').forEach(n => {
+ n.addEventListener('mouseenter', () => n.querySelector('circle').setAttribute('fill-opacity', '1'));
+ n.addEventListener('mouseleave', e => {
+ const isCurrent = n.dataset.slug === SLUG;
+ n.querySelector('circle').setAttribute('fill-opacity', isCurrent ? '1' : '0.55');
+ });
+ n.addEventListener('click', () => window.open('https://' + n.dataset.slug + '.com', '_blank'));
+ });
+})();
+</script>
+
+<script>
+const state = { q:'', facet:'all', page:1, pages:1, total:0, loading:false, exhausted:false };
+const LABELS = {"all":"All"};
+
+function escAttr(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&':'&','<':'<','>':'>','"':'"',"'":''' }[c])); }
+// Image-URL allowlist: only DW Shopify CDN + designerwallcoverings.com (defends against XSS via crafted products.json)
+function safeImg(u) { return /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(u || '') ? u : '/hero-bg.jpg'; }
+function cardHTML(p) {
+ const eager = state.page === 1;
+ return '<img loading="' + (eager ? 'eager' : 'lazy') + '"' + (eager ? ' fetchpriority="high"' : '') + ' src="' + escAttr(safeImg(p.image_url)) + '" alt="' + escAttr(p.title) + '">'
+ + '<div class="overlay">'
+ + '<div class="pat">' + escAttr(p.pattern_name || p.title) + '</div>'
+ + '<div class="ven">' + escAttr((p.vendor || '').replace(/-/g, ' ')) + '</div>'
+ + '<div class="actions">'
+ + '<button class="sample-btn" onclick="event.stopPropagation();dwmOpen(\'Sample\',' + JSON.stringify({sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}).replace(/"/g,'"') + ')">Sample</button>'
+ + '</div></div>';
+}
+
+async function loadFacets() {
+ let f;
+ try {
+ const r = await fetch('/api/facets');
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ f = await r.json();
+ } catch (e) { console.error('loadFacets failed:', e); return; }
+ const el = document.getElementById('facets');
+ for (const [k, v] of Object.entries(f.aesthetics).sort((a,b) => b[1] - a[1])) {
+ const b = document.createElement('button');
+ b.className = 'chip'; b.dataset.facet = k;
+ b.innerHTML = (LABELS[k] || k) + ' <span style="opacity:.55;font-weight:500;margin-left:4px">' + v + '</span>';
+ el.appendChild(b);
+ }
+ el.addEventListener('click', e => {
+ if (e.target.tagName !== 'BUTTON') return;
+ document.querySelectorAll('#facets button').forEach(b => b.classList.remove('active'));
+ e.target.classList.add('active');
+ state.facet = e.target.dataset.facet;
+ resetGrid();
+ });
+ document.getElementById('totalCount').textContent = f.total;
+ document.getElementById('footerStat').textContent = f.total + ' patterns · live archive';
+ // Footer aesthetic links
+ const footerEl = document.getElementById('footerFacets');
+ for (const [k] of Object.entries(f.aesthetics)) {
+ const b = document.createElement('button');
+ b.textContent = LABELS[k] || k;
+ b.onclick = () => { state.facet = k; resetGrid(); document.querySelectorAll('#facets button').forEach(x => x.classList.toggle('active', x.dataset.facet === k)); document.getElementById('shop').scrollIntoView({behavior:'smooth'}); };
+ footerEl.appendChild(b);
+ }
+}
+
+function resetGrid() {
+ state.page = 1; state.exhausted = false;
+ document.getElementById('grid').innerHTML = '';
+ document.getElementById('loading').textContent = 'Loading…';
+ loadGridPage();
+}
+
+async function loadGridPage() {
+ if (state.loading || state.exhausted) return;
+ state.loading = true;
+ const params = new URLSearchParams({ page:state.page, limit:24 });
+ if (state.q) params.set('q', state.q);
+ if (state.facet !== 'all') params.set('aesthetic', state.facet);
+ let data;
+ try {
+ const r = await fetch('/api/products?' + params);
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ data = await r.json();
+ } catch (e) {
+ console.error('loadGridPage failed:', e);
+ document.getElementById('loading').textContent = '— offline — refresh to retry —';
+ state.loading = false;
+ return;
+ }
+ state.total = data.total; state.pages = data.pages;
+
+ if (state.page === 1) {
+ document.getElementById('statLine').textContent = data.total + ' patterns · ' + (state.facet === 'all' ? 'all aesthetics' : (LABELS[state.facet] || state.facet)) + (state.q ? ' · matching "' + state.q + '"' : '');
+ }
+ const grid = document.getElementById('grid');
+ for (const p of data.items) {
+ const a = document.createElement('a');
+ a.className = 'card'; a.href = '#'; a.onclick = (e) => { e.preventDefault(); dwmOpen('Sample',{sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}); };
+ a.innerHTML = cardHTML(p);
+ grid.appendChild(a);
+ }
+ if (state.page >= state.pages || data.items.length === 0) {
+ state.exhausted = true;
+ document.getElementById('loading').textContent = state.total > 0 ? '— end of archive · ' + state.total + ' patterns —' : '';
+ } else state.page++;
+ state.loading = false;
+}
+
+const io = new IntersectionObserver(es => { for (const e of es) if (e.isIntersecting) loadGridPage(); }, { rootMargin:'600px 0px' });
+io.observe(document.getElementById('sentinel'));
+
+document.getElementById('searchInput').addEventListener('input', e => {
+ state.q = e.target.value.trim();
+ clearTimeout(window._t);
+ window._t = setTimeout(resetGrid, 220);
+});
+
+// Density slider
+const slider = document.getElementById('densitySlider');
+const dlabel = document.getElementById('densityLabel');
+function setDensity(n) {
+ document.documentElement.style.setProperty('--cols', n);
+ dlabel.textContent = n + ' cols';
+ try { localStorage.setItem('glit_theme_density', n); } catch(e){}
+}
+slider.addEventListener('input', e => setDensity(parseInt(e.target.value)));
+const savedDensity = parseInt(localStorage.getItem('glit_theme_density') || '6');
+if (savedDensity >= 4 && savedDensity <= 12) { slider.value = savedDensity; setDensity(savedDensity); }
+
+// Theme toggle
+const tb = document.getElementById('theme-toggle');
+function setTheme(t){ document.documentElement.dataset.theme = t; try { localStorage.setItem('glit_theme', t); } catch(e){} tb.textContent = t === 'dark' ? '☾' : '☀'; }
+setTheme(document.documentElement.dataset.theme || 'light');
+tb.addEventListener('click', () => setTheme(document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'));
+
+loadFacets();
+loadGridPage();
+</script>
+<!-- ============================================================
+ DW UNIVERSAL CONTACT MODULE — fashion-house UX
+ Inject before </body> in every DW-family sister site.
+ Self-contained: CSS + 4 modals + JS submission handlers.
+ Uses host site's CSS vars (--bg, --fg, --gold, --rule).
+ ============================================================ -->
+<style>
+ /* === MODAL BASE === */
+ .dwm{position:fixed;inset:0;background:rgba(0,0,0,0.78);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;overflow-y:auto}
+ .dwm.open{display:flex}
+ .dwm-box{background:var(--bg);border:1px solid var(--rule);max-width:520px;width:100%;padding:36px 32px;position:relative;max-height:90vh;overflow-y:auto;animation:dwm-in 0.25s ease}
+ @keyframes dwm-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
+ .dwm-box h3{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:400;font-size:32px;line-height:1.05;margin-bottom:6px;color:var(--fg);letter-spacing:-0.01em}
+ .dwm-box .sub{color:var(--muted);font-size:12px;letter-spacing:0.16em;text-transform:uppercase;margin-bottom:24px;font-weight:500}
+ .dwm-close{position:absolute;top:18px;right:18px;background:transparent;border:0;color:var(--muted);font-size:24px;cursor:pointer;width:32px;height:32px;line-height:1;padding:0}
+ .dwm-close:hover{color:var(--gold)}
+ .dwm-preview{display:flex;gap:14px;align-items:center;padding:12px;background:var(--bg-soft);margin-bottom:18px}
+ .dwm-preview img{width:64px;height:64px;object-fit:cover}
+ .dwm-preview .pn{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:15px;line-height:1.2;color:var(--fg)}
+ .dwm-preview .pc{font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
+ .dwm-field{margin-bottom:14px}
+ .dwm-field label{display:block;font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:500}
+ .dwm-field input,.dwm-field textarea,.dwm-field select{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;padding:8px 4px;font-size:14px;font-family:inherit;color:var(--fg);outline:none;transition:border-color 0.2s}
+ .dwm-field input:focus,.dwm-field textarea:focus{border-bottom-color:var(--gold)}
+ .dwm-field textarea{min-height:60px;resize:vertical}
+ .dwm-submit{background:transparent;color:var(--muted, #c9b89e);border:1px solid var(--muted, #c9b89e);padding:14px 28px;font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:700;cursor:pointer;width:100%;margin-top:8px;transition:background 0.15s, color 0.15s}
+ .dwm-submit:hover{background:var(--muted, #c9b89e);color:var(--bg, #000)}
+
+ .dwm-submit:disabled{opacity:0.5;cursor:default}
+ .dwm-status{margin-top:14px;font-size:11px;letter-spacing:0.16em;text-transform:uppercase;text-align:center;display:none}
+ .dwm-status.ok{color:var(--sage);display:block}
+ .dwm-status.err{color:#e08070;display:block}
+ /* contact-options */
+ .dwm-options{display:flex;flex-direction:column;gap:10px}
+ .dwm-option{display:flex;align-items:center;gap:14px;padding:18px 20px;background:transparent;border:1px solid var(--rule);color:var(--fg);font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:600;cursor:pointer;text-decoration:none;transition:all 0.2s;text-align:left;width:100%}
+ .dwm-option:hover{border-color:var(--gold);color:var(--gold)}
+ .dwm-option svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}
+ .dwm-option .lbl{flex:1;display:block}
+ .dwm-option .val{display:block;font-size:10px;letter-spacing:0.14em;text-transform:none;font-weight:500;opacity:0.65;margin-top:4px}
+
+/* graphics-loop pass 5: serif hero typography + nav legibility */
+.cinema h1, h1.headline { font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 500; letter-spacing: -0.01em }
+.h-link { font-size: 13px; letter-spacing: 0.06em }
+
+/* graphics-loop pass 11: Ideas rails */
+#ideas { padding: 56px 24px 24px; max-width:1600px; margin:0 auto }
+#ideas .rail-block { margin-bottom:48px }
+#ideas .rail-eyebrow { font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:var(--muted, #888); margin-bottom:8px }
+#ideas .rail-title { font-size:clamp(22px,2.6vw,32px); font-weight:500; letter-spacing:-0.01em; margin:0 0 18px; color:var(--ink,#fff) }
+#ideas .rail { display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; scrollbar-width:none }
+#ideas .rail::-webkit-scrollbar { display:none }
+#ideas .rail-card { flex:0 0 240px; scroll-snap-align:start; cursor:pointer; transition:transform 0.2s }
+#ideas .rail-card:hover { transform:translateY(-3px) }
+#ideas .rail-card img { width:100%; aspect-ratio:1; object-fit:cover; display:block; background:var(--card,#222) }
+#ideas .rail-card .rc-title { font-size:13px; font-weight:500; color:var(--paper,#fff); padding:8px 0 2px; line-height:1.3 }
+#ideas .rail-card .rc-meta { font-size:11px; color:var(--muted,#888); letter-spacing:0.06em }
+@media (max-width:720px) { #ideas .rail-card { flex:0 0 160px } }
+</style>
+
+<!-- Contact options modal -->
+<div class="dwm" id="dwmContact" onclick="if(event.target===this)dwmClose('Contact')">
+ <div class="dwm-box" style="max-width:440px">
+ <button class="dwm-close" onclick="dwmClose('Contact')" aria-label="Close">×</button>
+ <h3>Contact</h3>
+ <p class="sub" id="dwmContactSub">Three ways to reach us</p>
+ <div class="dwm-options">
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Inquiry')">
+ <svg viewBox="0 0 24 24"><path d="M4 4h16v12H7l-3 3z"/></svg>
+ <span class="lbl">Send an Inquiry<span class="val">Project name · scope · all the details</span></span>
+ </button>
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Sample')">
+ <svg viewBox="0 0 24 24"><rect x="4" y="6" width="16" height="14"/><path d="M4 10h16M9 6V3h6v3"/></svg>
+ <span class="lbl">Request a Sample<span class="val">Memo sample · ships free · 3–5 business days</span></span>
+ </button>
+ <a class="dwm-option" id="dwmContactEmailLink" href="mailto:info@glitterwalls.com">
+ <svg viewBox="0 0 24 24"><path d="M3 6h18v12H3z"/><path d="M3 6l9 7 9-7"/></svg>
+ <span class="lbl">Email Us<span class="val" id="dwmContactEmailLabel">info@glitterwalls.com</span></span>
+ </a>
+ </div>
+ </div>
+</div>
+
+<!-- Inquiry modal -->
+<div class="dwm" id="dwmInquiry" onclick="if(event.target===this)dwmClose('Inquiry')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Inquiry')" aria-label="Close">×</button>
+ <h3>Project Inquiry</h3>
+ <p class="sub">We'll respond within one business day</p>
+ <form id="dwmInquiryForm" onsubmit="return dwmSubmit(event,'inquiry')">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Phone</label><input type="tel" name="phone"></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Project Name</label><input type="text" name="projectName" required></div>
+ <div class="dwm-field"><label>Project Scope</label><textarea name="projectScope" placeholder="Square footage · room count · timeline" required></textarea></div>
+ <div class="dwm-field"><label>Additional Information</label><textarea name="message" placeholder="Patterns of interest, finish preferences, budget"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Inquiry</button>
+ <div class="dwm-status" id="dwmInquiryStatus"></div>
+ </form>
+ </div>
+</div>
+
+<!-- Sample-request modal -->
+<div class="dwm" id="dwmSample" onclick="if(event.target===this)dwmClose('Sample')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Sample')" aria-label="Close">×</button>
+ <h3>Request a Sample</h3>
+ <p class="sub">Memo sample · ships free · 3–5 business days</p>
+ <div class="dwm-preview" id="dwmSamplePreview" style="display:none">
+ <img id="dwmSampleImg" src="" alt="">
+ <div><div class="pn" id="dwmSampleName"></div><div class="pc" id="dwmSampleSku"></div></div>
+ </div>
+ <form id="dwmSampleForm" onsubmit="return dwmSubmit(event,'sample')">
+ <input type="hidden" name="sku" id="dwmSampleSkuInput">
+ <input type="hidden" name="title" id="dwmSampleTitleInput">
+ <input type="hidden" name="image_url" id="dwmSampleImageInput">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Shipping Address</label><input type="text" name="address" placeholder="Street" required></div>
+ <div class="dwm-field" style="display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px">
+ <input type="text" name="city" placeholder="City" required>
+ <input type="text" name="state" placeholder="State" required>
+ <input type="text" name="zip" placeholder="ZIP" required>
+ </div>
+ <div class="dwm-field"><label>Notes (optional)</label><textarea name="message" placeholder="Project, sq.ft., timing"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Sample Request</button>
+ <div class="dwm-status" id="dwmSampleStatus"></div>
+ </form>
+ </div>
+</div>
+
+<script>
+ // Universal modal control
+ function dwmOpen(name, opts){
+ document.getElementById('dwm' + name).classList.add('open');
+ document.body.style.overflow = 'hidden';
+ if (name === 'Sample' && opts) {
+ document.getElementById('dwmSamplePreview').style.display = 'flex';
+ document.getElementById('dwmSampleImg').src = opts.image_url || '';
+ document.getElementById('dwmSampleName').textContent = opts.title || '';
+ document.getElementById('dwmSampleSku').textContent = opts.sku || '';
+ document.getElementById('dwmSampleSkuInput').value = opts.sku || '';
+ document.getElementById('dwmSampleTitleInput').value = opts.title || '';
+ document.getElementById('dwmSampleImageInput').value = opts.image_url || '';
+ } else if (name === 'Sample') {
+ document.getElementById('dwmSamplePreview').style.display = 'none';
+ document.getElementById('dwmSampleSkuInput').value = '';
+ document.getElementById('dwmSampleTitleInput').value = '';
+ document.getElementById('dwmSampleImageInput').value = '';
+ }
+ }
+ function dwmClose(name){ document.getElementById('dwm'+name).classList.remove('open'); document.body.style.overflow=''; }
+
+ // Universal form submit — POSTs to /api/send-{kind}
+ async function dwmSubmit(e, kind) {
+ e.preventDefault();
+ const form = e.target;
+ const data = Object.fromEntries(new FormData(form).entries());
+ const btn = form.querySelector('.dwm-submit');
+ const status = form.querySelector('.dwm-status');
+ btn.disabled = true; const orig = btn.textContent; btn.textContent = 'Sending…';
+ status.className = 'dwm-status';
+ try {
+ const r = await fetch('/api/send-' + kind, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify(data) });
+ if (!r.ok) throw new Error('HTTP '+r.status);
+ const j = await r.json();
+ status.textContent = kind === 'sample' ? 'Sample request sent — ships within 3–5 business days' : 'Inquiry sent — we respond within 1 business day';
+ status.className = 'dwm-status ok';
+ btn.textContent = 'Sent ✓';
+ setTimeout(() => { dwmClose(kind === 'sample' ? 'Sample' : 'Inquiry'); btn.disabled = false; btn.textContent = orig; status.className = 'dwm-status'; form.reset(); }, 2800);
+ } catch (err) {
+ status.textContent = 'Send failed — please email info@designerwallcoverings.com';
+ status.className = 'dwm-status err';
+ btn.disabled = false; btn.textContent = orig;
+ }
+ return false;
+ }
+
+ // Wire up "Memo samples ship free" badge in hero to open sample modal directly
+ document.querySelectorAll('.hero .badge, [data-open-sample]').forEach(el => {
+ el.style.cursor = 'pointer';
+ el.addEventListener('click', () => dwmOpen('Sample'));
+ });
+
+ // Wire nav "Trade" link to inquiry modal
+ document.querySelectorAll('nav a[href*="designerwallcoverings.com"]').forEach(a => {
+ a.removeAttribute('target');
+ a.removeAttribute('href');
+ a.style.cursor = 'pointer';
+ a.addEventListener('click', e => { e.preventDefault(); dwmOpen('Contact'); });
+ });
+
+ // Override product card clicks — open Sample modal pre-filled instead of redirecting to DW
+ document.addEventListener('click', e => {
+ const card = e.target.closest('.card, .rail-card');
+ if (!card) return;
+ if (card.tagName === 'A' && (card.getAttribute('href') || '').startsWith('/sample/')) {
+ e.preventDefault();
+ const img = card.querySelector('img');
+ const pat = card.querySelector('.pat');
+ const sku = card.getAttribute('href').replace('/sample/', '');
+ dwmOpen('Sample', {
+ sku,
+ title: pat ? pat.textContent.trim() : '',
+ image_url: img ? img.src : ''
+ });
+ }
+ }, true);
+// DW STANDARD: hero pulls from products.json[0].image_url so dw-collections-viewer
+// drag-drop / hero-pin updates the live front page on next deploy.
+// Always upgrades to the largest Shopify variant (strips _NxN size suffix) so
+// the full-page hero stays sharp.
+// DW STANDARD: hero rotates through top-20 NEWEST products on each visit
+// (novasuede.com pattern). Fetches /api/products?limit=100, sorts by created_at desc,
+// takes the freshest 20, picks one per visit via localStorage counter.
+// Falls back to static /hero-bg.jpg on any error.
+(async function rotateHero() {
+ try {
+ const r = await fetch('/api/products?limit=100');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || [])
+ .filter(p => p && p.image_url && /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(p.image_url))
+ .sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')))
+ .slice(0, 20);
+ if (!items.length) return;
+ let visits = 0;
+ try {
+ visits = parseInt(localStorage.getItem('hero_visits') || '0', 10) || 0;
+ localStorage.setItem('hero_visits', String(visits + 1));
+ } catch(e) {}
+ const pick = items[visits % items.length];
+ // Strip _NxN size suffix to get the largest CDN variant
+ const url = pick.image_url.replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ const bg = document.getElementById('heroBg') || document.getElementById('cinemaBg');
+ if (bg) bg.style.backgroundImage = "url('" + url + "')";
+ } catch (e) {}
+})();
+
+
+// DW STANDARD sort-select wire-up (added by fleet patcher)
+(function(){
+ const sortSel = document.getElementById('sortSelect');
+ if (!sortSel) return;
+ const KEY = location.hostname.replace(/\./g, '_') + '_sort';
+ const saved = localStorage.getItem(KEY);
+ if (saved) { try { sortSel.value = saved; } catch(e){} }
+ if (typeof state !== 'undefined') state.sort = sortSel.value;
+ sortSel.addEventListener('change', e => {
+ const v = e.target.value;
+ try { localStorage.setItem(KEY, v); } catch(e){}
+ if (typeof state !== 'undefined') state.sort = v;
+ if (typeof resetGrid === 'function') resetGrid();
+ else location.reload();
+ });
+})();
+
+// graphics-loop pass 11: hydrate Ideas rails from /api/products
+(async function hydrateIdeas() {
+ try {
+ const r = await fetch('/api/products?limit=80');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || []).filter(p => p && p.image_url);
+ if (!items.length) return;
+ const sorted = [...items].sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')));
+ const newest = sorted.slice(0, 12);
+ // Curated = deterministic offset slice (every 5th item starting at idx 3) for variety
+ const curated = items.filter((_, i) => i % 5 === 3).slice(0, 12);
+ function card(p) {
+ const url = (p.image_url || '').replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ return '<a class="rail-card" href="/sample/' + encodeURIComponent(p.handle || p.sku) + '">' +
+ '<img src="' + url + '" alt="' + (p.title || '').replace(/"/g, '"') + '" loading="lazy">' +
+ '<div class="rc-title">' + ((p.title || '').split('|')[0] || '').trim() + '</div>' +
+ '<div class="rc-meta">' + (p.vendor || '') + '</div>' +
+ '</a>';
+ }
+ const r1 = document.getElementById('railNewest');
+ const r2 = document.getElementById('railCurated');
+ if (r1) r1.innerHTML = newest.map(card).join('');
+ if (r2) r2.innerHTML = curated.map(card).join('');
+ } catch(e) {}
+})();
+</script>
+
+</body>
+</html>
diff --git a/public/index.html.bak.nspropagate.1778209715036 b/public/index.html.bak.nspropagate.1778209715036
new file mode 100644
index 0000000..7039c82
--- /dev/null
+++ b/public/index.html.bak.nspropagate.1778209715036
@@ -0,0 +1,969 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-RK1X75MQ68"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-RK1X75MQ68');
+</script>
+
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Casa Rossa — The romance of glitter.</title>
+<meta name="description" content="Casa Rossa is a curated atelier dedicated entirely to glitter. We do one thing — and we do it carefully.">
+<meta name="theme-color" content="#FFF">
+<link rel="canonical" href="https://glitterwalls.com/">
+<link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
+<link rel="preload" as="image" href="/hero-bg.jpg" fetchpriority="high">
+<script type="application/ld+json">
+{
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ "name": "Casa Rossa",
+ "url": "https://glitterwalls.com/",
+ "email": "info@glitterwalls.com"
+}
+</script>
+<script src="/zd-loader.js" defer></script>
+<style>
+:root {
+ --bg: #FFF;
+ --paper: #000;
+ --muted: #8B7866;
+ --line: #000;
+ --accent: #D70000;
+ --bg-soft: #000;
+ --cols: 6;
+}
+html[data-theme="dark"] {
+ --bg: #000;
+ --paper: #FFF;
+ --muted: #C9B89E;
+ --line: rgba(255,254,250,0.12);
+ --accent: #D70000;
+ --bg-soft: #2a1f15;
+}
+* { margin:0; padding:0; box-sizing:border-box }
+html { scroll-behavior:smooth }
+body { font-family:'Inter', sans-serif; color:var(--paper); -webkit-font-smoothing:antialiased; background:var(--bg); min-height:100vh; overflow-x:hidden }
+/* DW-FASHION-TEMPLATE-OVERRIDE */
+.section-title .accent, .footer-brand, .center-mark, h1, h2, h3 { font-family: 'Monoton', 'Impact', sans-serif !important; font-weight:500 !important; }
+
+/* ===== Auto-hide header ===== */
+header { position:fixed; top:0; left:0; right:0; display:flex; justify-content:space-between; align-items:center; padding:22px 32px; z-index:100; background:rgba(0,0,0,0.55); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); transition:transform .3s }
+.h-link { display:flex; align-items:center; gap:10px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); text-decoration:none; cursor:pointer; background:transparent; border:0 }
+.h-link:hover { opacity:0.7 }
+.h-icon { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.5 }
+
+/* ===== Cinema hero ===== */
+.cinema { position:relative; height:100vh; width:100%; overflow:hidden }
+.cinema-bg { position:absolute; inset:0; background-size:cover; background-position:center; background-image:url('/hero-bg.jpg') }
+.cinema-bg::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 60%, rgba(0,0,0,0.75) 100%) }
+.corner-mark { position:absolute; top:24px; left:32px; font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,0.55), 0 0 1px rgba(0,0,0,0.4); z-index:5 }
+.corner-mark::before { content:"◆ "; margin-right:6px }
+.center-mark { position:absolute; top:clamp(80px,12vh,140px); left:50%; transform:translateX(-50%); font-size:clamp(28px,4vw,56px); font-weight:500; letter-spacing:0.18em; text-transform:uppercase; text-align:center; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,0.65), 0 0 1px rgba(0,0,0,0.5); z-index:5 }
+.center-mark .tm { font-size:14px; vertical-align:super; opacity:0.7; margin-left:0.2em }
+.center-mark .sub { display:block; font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400; font-size:0.4em; letter-spacing:0.04em; text-transform:none; margin-top:14px; opacity:0.85 }
+.meta-line { position:absolute; bottom:32px; left:32px; font-size:10px; letter-spacing:0.28em; text-transform:uppercase; font-weight:700; color:#fff; z-index:5; opacity:0.85 }
+.meta-line .num { font-size:12px; display:block; margin-top:4px; letter-spacing:0.05em }
+.enter { position:absolute; bottom:32px; right:32px; display:flex; align-items:center; gap:14px; font-size:11px; letter-spacing:0.36em; text-transform:uppercase; font-weight:700; color:#fff; text-decoration:none; padding-bottom:6px; border-bottom:1px solid #fff; transition:gap 0.25s; z-index:5 }
+.enter:hover { gap:22px }
+.enter svg { width:24px; height:12px }
+
+/* ===== Section ===== */
+.section { padding:96px 32px }
+.section-header { display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:24px; margin-bottom:32px; padding-bottom:24px; border-bottom:1px solid var(--line) }
+.section-title { font-size:clamp(36px,5vw,64px); font-weight:300; letter-spacing:-0.02em; line-height:1 }
+.section-title .accent { color: var(--accent); font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400 }
+.section-eyebrow { font-size:10px; letter-spacing:0.4em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:16px }
+.section-meta { font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:600; color:var(--muted); text-align:right; line-height:1.6 }
+
+/* ===== Filter bar ===== */
+.filters { display:flex; gap:8px; align-items:center; margin-bottom:18px; flex-wrap:wrap }
+.chip { padding:8px 16px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); background:transparent; border:1px solid var(--line); cursor:pointer; transition:all 0.2s; font-family:inherit }
+.chip:hover { border-color:var(--paper) }
+.chip.active { background:var(--paper); color:var(--bg); border-color:var(--paper) }
+.search { flex:0 1 280px; margin-left:auto; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); padding:6px 0 }
+.search input { flex:1; background:transparent; border:0; color:var(--paper); font-family:inherit; font-size:13px; outline:none; letter-spacing:0.04em }
+.search input::placeholder { color:var(--muted) }
+.search svg { width:16px; height:16px; stroke:var(--muted); fill:none; stroke-width:1.5 }
+
+/* ===== Grid-density slider ===== */
+.density { display:flex; align-items:center; gap:14px; padding:6px 0; margin-bottom:24px }
+.density label { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--muted) }
+.density input[type=range] { flex:1; max-width:240px; -webkit-appearance:none; appearance:none; height:1px; background:var(--line); outline:none }
+.density input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50% }
+.density input[type=range]::-moz-range-thumb { width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50%; border:0 }
+.density .ct { font-size:11px; color:var(--muted); letter-spacing:0.18em; text-transform:uppercase; font-weight:600; min-width:80px }
+
+/* ===== Stats line ===== */
+.stat-line { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:600; color:var(--muted); margin-bottom:24px }
+
+/* ===== Product grid (novasuede pattern: flush grid + slide-up overlay) ===== */
+.grid { display:grid; grid-template-columns:repeat(var(--cols), 1fr); gap:0 }
+.card { position:relative; aspect-ratio:1/1.15; cursor:pointer; overflow:hidden; border:1px solid var(--bg); transition:transform 0.4s cubic-bezier(0.2,0.8,0.2,1); background:var(--bg-soft) }
+.card:hover { transform:scale(1.04); z-index:5 }
+.card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.4s ease }
+.card .overlay { position:absolute; left:0; right:0; bottom:0; padding:20px 16px 14px; background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.85) 100%); transform:translateY(48%); opacity:0.85; transition:transform 0.3s ease, opacity 0.3s ease }
+.card:hover .overlay { transform:translateY(0); opacity:1 }
+.card .pat { font-size:13px; font-weight:600; letter-spacing:0.02em; color:#fff; line-height:1.25; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
+.card .ven { font-size:9px; letter-spacing:0.18em; text-transform:uppercase; color:#fff; opacity:0.7; font-weight:500; margin-top:4px }
+.card .actions { margin-top:10px; display:flex; gap:6px }
+.card .sample-btn { flex:1; padding:7px 10px; background:#fff; color:#000; font-family:inherit; font-size:10px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; border:0; cursor:pointer; text-align:center; transition:all 0.2s }
+.card .sample-btn:hover { background:var(--accent); color:#fff }
+
+@media (max-width:1024px) { .grid { grid-template-columns:repeat(min(var(--cols), 4), 1fr) } }
+@media (max-width:720px) { .grid { grid-template-columns:repeat(2, 1fr) } .density { display:none } }
+
+.sentinel { height:1px }
+.loading { text-align:center; color:var(--muted); padding:32px; font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700 }
+
+/* ===== Footer ===== */
+footer { padding:64px 32px 32px; border-top:1px solid var(--line); margin-top:32px }
+.footer-grid { max-width:1400px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px; margin-bottom:48px }
+.footer-brand { font-size:24px; font-weight:300; letter-spacing:0.32em; text-transform:uppercase; margin-bottom:12px }
+.footer-text { font-size:13px; line-height:1.6; color:var(--muted); max-width:380px }
+.footer-col h4 { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--paper); margin-bottom:18px }
+.footer-col a { display:block; font-size:13px; color:var(--muted); text-decoration:none; margin-bottom:8px; transition:color 0.2s; cursor:pointer; background:transparent; border:0; font-family:inherit; padding:0; text-align:left }
+.footer-col a:hover { color:var(--accent) }
+.footer-bottom { max-width:1400px; margin:0 auto; padding-top:24px; border-top:1px solid var(--line); display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--muted) }
+
+@media (max-width:720px) {
+ .corner-mark, .meta-line, .enter { font-size:10px }
+ .center-mark { font-size:24px; letter-spacing:0.12em; top:clamp(60px,9vh,90px) }
+ .section, footer { padding-left:20px; padding-right:20px }
+ .footer-grid { grid-template-columns:1fr; gap:32px }
+ .search { margin-left:0; flex:1 1 100% }
+}
+
+.theme-toggle { background:transparent; border:1px solid var(--line); width:32px; height:32px; cursor:pointer; color:var(--paper); display:inline-flex; align-items:center; justify-content:center; font-size:14px; line-height:1; transition:all .15s; padding:0 }
+.theme-toggle:hover { border-color:var(--accent); color:var(--accent) }
+
+/* ===== WCAG 2.4.7 — keyboard focus indicators ===== */
+/* Strictly :focus-visible so mouse clicks do NOT show the ring */
+a:focus-visible,
+button:focus-visible,
+input:focus-visible,
+select:focus-visible,
+textarea:focus-visible,
+[tabindex]:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+</style>
+<script>
+(function(){ try { var t = localStorage.getItem('glit_theme') || 'light'; document.documentElement.dataset.theme = t; } catch(e){} })();
+</script>
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Monoton&display=swap">
+
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://glitterwalls.com/">
+<meta property="og:title" content="Glitter Walls">
+<meta property="og:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta property="og:image" content="https://glitterwalls.com/hero-bg.jpg">
+<meta property="og:site_name" content="Glitter Walls">
+<meta property="article:publisher" content="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings">
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:title" content="Glitter Walls">
+<meta name="twitter:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta name="twitter:image" content="https://glitterwalls.com/hero-bg.jpg">
+<!-- graphics-loop pass 13: footer + fb -->
+</head>
+<body>
+<style id="ns-header-modal-styles">
+ .ns-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 18px 36px; background: rgba(10,10,10,0.92) !important; backdrop-filter: blur(8px); border-bottom: 1px solid rgba(245,241,232,0.06); }
+ .ns-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; }
+ .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #a98b5b 0%, #5d4c32 60%, #332a1b 100%); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
+ .ns-name { font-family: -apple-system, "SF Pro Display", "Helvetica Neue", system-ui, sans-serif; font-size: 18px !important; font-weight: 300 !important; letter-spacing: 0.02em !important; color: #f5f1e8 !important; text-transform: none !important; margin: 0 !important; }
+ .ns-name sup { font-size: 0.55em; font-weight: 300; margin-left: 1px; }
+ .ns-nav { display: flex; gap: 32px; align-items: center; list-style: none; padding: 0; margin: 0; }
+ .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; padding: 0 !important; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
+ .ns-nav a:hover, .ns-nav button:hover { color: #ffffff !important; }
+ @media (max-width: 820px) { .ns-header { padding: 14px 18px; } .ns-nav { gap: 16px; } .ns-nav a, .ns-nav button { font-size: 13px !important; } }
+ @media (max-width: 760px) {
+ .ns-header { flex-wrap: wrap; }
+ .ns-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0 4px; }
+ .ns-nav.open { display: flex !important; }
+ .ns-nav a, .ns-nav button { padding: 10px 0 !important; border-bottom: 1px solid rgba(245,241,232,0.08); width: 100%; text-align: left; }
+ .ns-nav a:nth-child(n+5), .ns-nav button:nth-child(n+5) { display: block !important; }
+ .ns-header .mobile-toggle { display: flex !important; }
+ }
+ @media (min-width: 761px) {
+ .ns-header .mobile-toggle { display: none !important; }
+ }
+ .ns-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.78); z-index: 200; align-items: center; justify-content: center; padding: 24px; backdrop-filter: blur(6px); }
+ .ns-modal.show { display: flex; }
+ .ns-modal-card { max-width: 460px; width: 100%; background: #141414 !important; border: 1px solid rgba(245,241,232,0.14); border-radius: 6px; padding: 28px 30px 30px; position: relative; }
+ .ns-modal-card .close-x { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; background: none; border: 1px solid rgba(245,241,232,0.18); color: rgba(245,241,232,0.6) !important; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; }
+ .ns-modal-card .close-x:hover { color: #ffffff !important; border-color: #ffffff; }
+ .ns-modal-card h3 { font-family: -apple-system, "SF Pro Display", system-ui; font-weight: 300 !important; font-size: 22px !important; margin: 0 0 6px !important; color: #f5f1e8 !important; }
+ .ns-modal-card .sub { color: rgba(245,241,232,0.65) !important; font-size: 13px; margin: 0 0 22px; }
+ .ns-actions { display: flex; flex-direction: column; gap: 10px; }
+ .ns-action { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: rgba(245,241,232,0.04) !important; border: 1px solid rgba(245,241,232,0.12) !important; color: #f5f1e8 !important; text-decoration: none !important; cursor: pointer; transition: all 200ms; font: inherit; text-align: left; }
+ .ns-action:hover { background: rgba(245,241,232,0.08) !important; border-color: #d4b683 !important; }
+ .ns-action .ico { width: 32px; height: 32px; border-radius: 50%; background: rgba(212,182,131,0.12); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
+ .ns-action .txt { flex: 1; }
+ .ns-action .txt b { display: block; font-weight: 500; font-size: 14px; color: #f5f1e8 !important; }
+ .ns-action .txt span { font-size: 12px; color: rgba(245,241,232,0.55) !important; }
+
+ /* ─── FINAL CONTRAST PASS — kill remaining gold-solid + white-island defects ─── */
+ /* Replace all gold-fill accents with off-white (Gucci-aesthetic, no DW gold solids) */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active,
+ .drapery-btn, .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover,
+ .drapery-btn:hover, .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ /* Gold accents stay only as edge color (links, glyphs) — not fills */
+ a { color: #d4b683; }
+ a:hover { color: #f5d97a; }
+ /* Authorized-dealer footer line — small caps tracked, muted ink, no gold pill */
+ .authorized, .authorized-dealer p {
+ background: transparent !important;
+ color: rgba(245,241,232,0.5) !important;
+ font-size: 10px !important;
+ letter-spacing: 0.22em !important;
+ text-transform: uppercase !important;
+ padding: 0 !important;
+ border: none !important;
+ margin-top: 14px !important;
+ }
+ /* Kill any straggler white bg in info-card / sample-related cards */
+ .info-card, .info-card-link, .care-highlight, .feature-card, .spec-item {
+ background-color: rgba(245,241,232,0.04) !important;
+ border-color: rgba(245,241,232,0.12) !important;
+ }
+ /* Ensure modal content stays readable — Steve's earlier sweep made it #141414 with white text */
+ .modal-content { background: #141414 !important; color: #f5f1e8 !important; }
+ .modal-content * { color: #f5f1e8 !important; }
+ .modal-content input, .modal-content textarea, .modal-content select {
+ background: rgba(245,241,232,0.05) !important;
+ color: #f5f1e8 !important;
+ border-color: rgba(245,241,232,0.2) !important;
+ }
+ .modal-content label { color: rgba(245,241,232,0.6) !important; }
+ /* Force the wide-tracked NOVASUEDE wordmark to stay white */
+ .ns-wordmark, .ns-wordmark sup { color: #f5f1e8 !important; }
+
+ /* ─── Modal-internal contrast (post-QA defects) ─── */
+ /* Backdrop covers full viewport */
+ .modal { width: 100vw !important; height: 100vh !important; left: 0 !important; top: 0 !important; background: rgba(0, 0, 0, 0.78) !important; backdrop-filter: blur(6px); }
+ /* Chip — flip from white-on-white island to dark card */
+ .request-chip {
+ background: rgba(245, 241, 232, 0.06) !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.18) !important;
+ border-radius: 4px !important;
+ }
+ .request-chip * { color: #f5f1e8 !important; }
+ .request-chip .chip-swatch {
+ /* swatch dot ALWAYS displays the inline-style hex from JS — fight any sweep */
+ border: 1px solid rgba(0, 0, 0, 0.4) !important;
+ }
+ /* + Add to request — hairline white-border on transparent (no gold) */
+ .add-to-request-btn {
+ background: transparent !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.6) !important;
+ border-radius: 0 !important;
+ padding: 12px 22px !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 400 !important;
+ }
+ .add-to-request-btn:hover {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ /* Hex caption visible */
+ .preview-hex, #colorPreviewHex {
+ display: block !important;
+ color: rgba(245, 241, 232, 0.55) !important;
+ font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
+ font-size: 11px !important;
+ margin-top: 4px !important;
+ letter-spacing: 0.04em !important;
+ text-transform: lowercase !important;
+ }
+ /* Color preview name — stays single, prominent */
+ #colorPreviewName {
+ color: #f5f1e8 !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 500 !important;
+ display: block !important;
+ margin-top: 12px !important;
+ }
+
+ /* ─── Mobile hamburger nav (replaces the overflow at <760px) ─── */
+ @media (max-width: 760px) {
+ header .nav-container { flex-wrap: wrap; }
+ header nav { display: none; flex-basis: 100%; flex-direction: column; gap: 6px; padding: 16px 0 6px; }
+ header nav.open { display: flex; }
+ header nav a { padding: 10px 0; border-bottom: 1px solid rgba(245,241,232,0.1); }
+ header .mobile-toggle {
+ display: flex !important;
+ flex-direction: column;
+ gap: 5px;
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+ padding: 8px;
+ }
+ header .mobile-toggle span {
+ width: 22px; height: 1.5px;
+ background: #f5f1e8;
+ display: block;
+ }
+ }
+ @media (min-width: 761px) {
+ header .mobile-toggle { display: none !important; }
+ }
+
+ </style>
+<style id="ns-gold-kill">
+ /* novasuede: kill gold-solid fills, off-white instead. Edge color stays gold. */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active, .drapery-btn,
+ .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover, .drapery-btn:hover,
+ .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ </style>
+<header class="ns-header">
+ <a href="/" class="ns-brand" aria-label="Home">
+ <span class="ns-dot"></span>
+ <span class="ns-name">Casa Rossa</span>
+ </a>
+ <nav class="ns-nav" id="nsPrimaryNav" aria-label="Primary">
+ <a href="/">Home</a>
+ <a href="/about">About</a>
+ <button type="button" onclick="nsContactOpen()">Contact</button>
+ </nav>
+ <button type="button" class="mobile-toggle" aria-label="Toggle menu" aria-controls="nsPrimaryNav" aria-expanded="false" onclick="nsToggleNav(this)">
+ <span></span><span></span><span></span>
+ </button>
+ </header>
+
+<div class="ns-modal" id="nsContactModal" role="dialog" aria-modal="true" aria-labelledby="nsContactTitle" onclick="if(event.target===this)nsContactClose()">
+ <div class="ns-modal-card">
+ <button type="button" class="close-x" onclick="nsContactClose()" aria-label="Close">×</button>
+ <h3 id="nsContactTitle">How can we help?</h3>
+ <p class="sub">Trade-account replies within one business day.</p>
+ <div class="ns-actions">
+ <a class="ns-action" href="#contact" onclick="nsContactClose()"><span class="ico">📋</span><div class="txt"><b>Get a Quote</b><span>Project specs → priced estimate</span></div></a>
+ <a class="ns-action" href="#contact" onclick="nsContactClose();openModal();"><span class="ico">📦</span><div class="txt"><b>Order a Sample</b><span>Free swatch to your shop</span></div></a>
+ <a class="ns-action" href="mailto:info@novasuede.com?subject=Novasuede%20inquiry"><span class="ico">✉️</span><div class="txt"><b>Email Us</b><span>info@novasuede.com</span></div></a>
+ <a class="ns-action" href="tel:888-373-4564"><span class="ico">📞</span><div class="txt"><b>Call Us</b><span>(888) 373-4564 · M–F, 9–5 PT</span></div></a>
+ </div>
+ </div>
+ </div>
+<script>
+ function nsContactOpen() { var m = document.getElementById('nsContactModal'); if (m) m.classList.add('show'); }
+ function nsContactClose() { var m = document.getElementById('nsContactModal'); if (m) m.classList.remove('show'); }
+ function nsToggleNav(btn) {
+ var nav = document.getElementById('nsPrimaryNav');
+ if (!nav) return;
+ var open = nav.classList.toggle('open');
+ btn.setAttribute('aria-expanded', open ? 'true' : 'false');
+ }
+ document.addEventListener('keydown', function(e){ if (e.key === 'Escape') nsContactClose(); });
+</script>
+
+
+
+
+
+<header>
+ <button class="h-link" onclick="dwmOpen('Contact')" aria-label="Contact"><svg class="h-icon" viewBox="0 0 24 24"><path d="M3 7h18M3 12h18M3 17h18"/></svg><span>Contact</span></button>
+ <button class="theme-toggle" id="theme-toggle" aria-label="Theme toggle">☾</button>
+</header>
+
+<section class="cinema">
+ <div class="cinema-bg" id="heroBg"></div>
+ <div class="corner-mark">Sparkle & Glam</div>
+ <div class="center-mark">Glitter Walls</div>
+ <div class="meta-line">Glitter · Sequin · Holographic · Glam<span class="num" id="heroNum"></span></div>
+ <a class="enter" href="#shop">Enter <svg viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.4"><path d="M0 6h22M16 1l6 5-6 5"/></svg></a>
+</section>
+
+
+<section class="section" id="ideas">
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">New this week</h2>
+ <div class="rail" id="railNewest"></div>
+ </div>
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">Curated picks</h2>
+ <div class="rail" id="railCurated"></div>
+ </div>
+</section>
+
+<section class="section" id="shop">
+ <div class="section-header">
+ <div>
+ <div class="section-eyebrow">The Collection</div>
+ <h2 class="section-title"><span class="accent" id="totalCount">—</span> Patterns.</h2>
+ </div>
+ <div class="section-meta">Glitter · Sequin · Holographic · Glam</div>
+ </div>
+
+ <div class="filters" id="facets">
+ <button class="chip active" data-facet="all">All</button>
+ </div>
+
+ <div class="density">
+ <label>Sort</label>
+ <select id="sortSelect" aria-label="Sort products" style="background:transparent;color:inherit;border:1px solid var(--line,rgba(255,255,255,.2));font:inherit;font-size:11px;letter-spacing:.10em;text-transform:uppercase;padding:4px 8px;cursor:pointer;outline:none;margin-right:14px">
+ <option value="newest">Newest</option>
+ <option value="color">Color</option>
+ <option value="style">Style</option>
+ <option value="sku">SKU A→Z</option>
+ <option value="title">Title A→Z</option>
+ <option value="price-asc">Price ↑</option>
+ <option value="price-desc">Price ↓</option>
+ </select>
+ <label>Grid</label>
+ <input type="range" id="densitySlider" min="4" max="12" step="1" value="6" aria-label="Grid columns">
+ <span class="ct" id="densityLabel">6 cols</span>
+ <div class="search">
+ <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M21 21l-5.5-5.5"/></svg>
+ <input type="text" id="searchInput" placeholder="Search by pattern, color…" autocomplete="off">
+ </div>
+ </div>
+
+ <div class="stat-line" id="statLine">Loading…</div>
+ <div class="grid" id="grid"></div>
+ <div class="loading" id="loading">Loading more…</div>
+ <div class="sentinel" id="sentinel"></div>
+</section>
+
+<footer>
+ <div class="footer-grid">
+ <div>
+ <div class="footer-brand">Casa Rossa</div>
+ <p class="footer-text">Casa Rossa — real samples ship free.</p>
+ <p class="footer-text" style="margin-top:14px;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;color:var(--paper);opacity:0.7"><a href="/about" style="color:inherit;text-decoration:none;border-bottom:1px solid var(--accent)">About →</a></p>
+ </div>
+ <div class="footer-col">
+ <h4>Aesthetic</h4>
+ <div id="footerFacets"></div>
+ </div>
+ <div class="footer-col">
+ <h4>Trade</h4>
+ <button onclick="dwmOpen('Inquiry')">Project Inquiry</button>
+ <button onclick="dwmOpen('Sample')">Request Sample</button>
+ <button onclick="dwmOpen('Contact')">Contact</button>
+ </div>
+
+ <div class="footer-col">
+ <h4>Social</h4>
+ <a class="fb-link" href="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings" target="_blank" rel="noopener">Facebook</a>
+ </div>
+ </div>
+ <div class="footer-bottom">
+ <span>glitterwalls.com · Casa Rossa</span>
+ <span><a href="mailto:info@glitterwalls.com" style="color:var(--paper);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px">info@glitterwalls.com</a></span>
+ <span id="footerStat"></span>
+ </div>
+</footer>
+
+<script>
+// mini-constellation — 43 niche-stars, current site highlighted in gold
+(function(){
+ const SLUG = "glitterwalls";
+ const NICHES = [
+ ['silkwallpaper','Silk','mat'],['silkwallcoverings','Silk W/C','mat'],['linenwallpaper','Linen','mat'],
+ ['jutewallpaper','Jute','mat'],['raffiawallcoverings','Raffia W/C','mat'],['raffiawalls','Raffia Walls','mat'],
+ ['corkwallcovering','Cork','mat'],['fabricwallpaper','Fabric','mat'],['textilewallpaper','Textile','mat'],
+ ['metallicwallpaper','Metallic','mat'],['silverleafwallpaper','Silver Leaf','mat'],['vinylwallpaper','Vinyl','mat'],
+ ['micawallpaper','Mica','mat'],['madagascarwallpaper','Madagascar','mat'],['mylarwallpaper','Mylar','mat'],
+ ['suedewallpaper','Suede','mat'],
+ ['1800swallpaper','1800s','dec'],['1890swallpaper','1890s','dec'],['1900swallpaper','1900s','dec'],
+ ['1920swallpaper','1920s','dec'],['1930swallpaper','1930s','dec'],['1940swallpaper','1940s','dec'],
+ ['1950swallpaper','1950s','dec'],['1960swallpaper','1960s','dec'],['1970swallpaper','1970s','dec'],
+ ['1980swallpaper','1980s','dec'],['retrowalls','Retro','dec'],['wallpapersback','W. Back','dec'],
+ ['agedwallpaper','Aged','cra'],['handcraftedwallpaper','Handcrafted','cra'],['museumwallpaper','Museum','cra'],
+ ['restorationwallpaper','Restoration','cra'],['pastelwallpaper','Pastel','cra'],['glitterwalls','Glitter','cra'],
+ ['greenwallcoverings','Green','cra'],['naturalwallcoverings','Natural','cra'],['saloonwallpaper','Saloon','cra'],
+ ['contractwallpaper','Contract','use'],['hotelwallcoverings','Hotel','use'],['hospitalitywallpaper','Hospitality','use'],
+ ['healthcarewallpaper','Healthcare','use'],['restaurantwallpaper','Restaurant','use'],['architecturalwallcoverings','Architectural','use']
+ ];
+ const COLOR = { mat:'#c9b687', dec:'#b86a4a', cra:'#6b8e6f', use:'#4a6b8e' };
+ const W = 1080, H = 200, BANDS = ['mat','dec','cra','use'];
+ const groups = { mat:[], dec:[], cra:[], use:[] };
+ for (const n of NICHES) groups[n[2]].push(n);
+ const svg = document.getElementById('miniConst');
+ if (!svg) return;
+ const bandW = W / BANDS.length;
+ let nodes = '';
+ BANDS.forEach((band, bi) => {
+ const list = groups[band];
+ const cx = bi * bandW + bandW / 2;
+ list.forEach((n, i) => {
+ const t = list.length === 1 ? 0.5 : i / (list.length - 1);
+ // deterministic jitter per slug
+ let h = 0; for (let k = 0; k < n[0].length; k++) h = (h * 31 + n[0].charCodeAt(k)) | 0;
+ const jx = ((h & 0xff) / 255 - 0.5) * (bandW * 0.5);
+ const jy = (((h >> 8) & 0xff) / 255 - 0.5) * 6; // tightened from 14 → 6 to prevent same-band collisions (16 mat nodes / 144px = 9px spacing)
+ const x = cx + jx, y = 28 + t * (H - 56) + jy;
+ const isCurrent = n[0] === SLUG;
+ const r = isCurrent ? 8 : 4;
+ const op = isCurrent ? 1 : 0.55;
+ nodes += `<g class="mc-node" data-slug="${n[0]}" data-label="${n[1]}" style="cursor:pointer">
+ <circle cx="${x}" cy="${y}" r="${r}" fill="url(#dna-${band})" fill-opacity="${op}" stroke="${COLOR[band]}" stroke-opacity="${isCurrent?1:0.7}" stroke-width="${isCurrent?2:1}">
+ <title>${n[1]} — ${n[0]}.com</title>
+ </circle>
+ ${isCurrent ? `<circle cx="${x}" cy="${y}" r="${r+5}" fill="none" stroke="${COLOR[band]}" stroke-opacity="0.4" stroke-width="1"><animate attributeName="r" values="${r+5};${r+12};${r+5}" dur="2.4s" repeatCount="indefinite"/><animate attributeName="stroke-opacity" values="0.4;0;0.4" dur="2.4s" repeatCount="indefinite"/></circle>` : ''}
+ </g>`;
+ });
+ });
+ // append nodes after defs
+ svg.insertAdjacentHTML('beforeend', nodes);
+ svg.querySelectorAll('.mc-node').forEach(n => {
+ n.addEventListener('mouseenter', () => n.querySelector('circle').setAttribute('fill-opacity', '1'));
+ n.addEventListener('mouseleave', e => {
+ const isCurrent = n.dataset.slug === SLUG;
+ n.querySelector('circle').setAttribute('fill-opacity', isCurrent ? '1' : '0.55');
+ });
+ n.addEventListener('click', () => window.open('https://' + n.dataset.slug + '.com', '_blank'));
+ });
+})();
+</script>
+
+<script>
+const state = { q:'', facet:'all', page:1, pages:1, total:0, loading:false, exhausted:false };
+const LABELS = {"all":"All"};
+
+function escAttr(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&':'&','<':'<','>':'>','"':'"',"'":''' }[c])); }
+// Image-URL allowlist: only DW Shopify CDN + designerwallcoverings.com (defends against XSS via crafted products.json)
+function safeImg(u) { return /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(u || '') ? u : '/hero-bg.jpg'; }
+function cardHTML(p) {
+ const eager = state.page === 1;
+ return '<img loading="' + (eager ? 'eager' : 'lazy') + '"' + (eager ? ' fetchpriority="high"' : '') + ' src="' + escAttr(safeImg(p.image_url)) + '" alt="' + escAttr(p.title) + '">'
+ + '<div class="overlay">'
+ + '<div class="pat">' + escAttr(p.pattern_name || p.title) + '</div>'
+ + '<div class="ven">' + escAttr((p.vendor || '').replace(/-/g, ' ')) + '</div>'
+ + '<div class="actions">'
+ + '<button class="sample-btn" onclick="event.stopPropagation();dwmOpen(\'Sample\',' + JSON.stringify({sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}).replace(/"/g,'"') + ')">Sample</button>'
+ + '</div></div>';
+}
+
+async function loadFacets() {
+ let f;
+ try {
+ const r = await fetch('/api/facets');
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ f = await r.json();
+ } catch (e) { console.error('loadFacets failed:', e); return; }
+ const el = document.getElementById('facets');
+ for (const [k, v] of Object.entries(f.aesthetics).sort((a,b) => b[1] - a[1])) {
+ const b = document.createElement('button');
+ b.className = 'chip'; b.dataset.facet = k;
+ b.innerHTML = (LABELS[k] || k) + ' <span style="opacity:.55;font-weight:500;margin-left:4px">' + v + '</span>';
+ el.appendChild(b);
+ }
+ el.addEventListener('click', e => {
+ if (e.target.tagName !== 'BUTTON') return;
+ document.querySelectorAll('#facets button').forEach(b => b.classList.remove('active'));
+ e.target.classList.add('active');
+ state.facet = e.target.dataset.facet;
+ resetGrid();
+ });
+ document.getElementById('totalCount').textContent = f.total;
+ document.getElementById('footerStat').textContent = f.total + ' patterns · live archive';
+ // Footer aesthetic links
+ const footerEl = document.getElementById('footerFacets');
+ for (const [k] of Object.entries(f.aesthetics)) {
+ const b = document.createElement('button');
+ b.textContent = LABELS[k] || k;
+ b.onclick = () => { state.facet = k; resetGrid(); document.querySelectorAll('#facets button').forEach(x => x.classList.toggle('active', x.dataset.facet === k)); document.getElementById('shop').scrollIntoView({behavior:'smooth'}); };
+ footerEl.appendChild(b);
+ }
+}
+
+function resetGrid() {
+ state.page = 1; state.exhausted = false;
+ document.getElementById('grid').innerHTML = '';
+ document.getElementById('loading').textContent = 'Loading…';
+ loadGridPage();
+}
+
+async function loadGridPage() {
+ if (state.loading || state.exhausted) return;
+ state.loading = true;
+ const params = new URLSearchParams({ page:state.page, limit:24 });
+ if (state.q) params.set('q', state.q);
+ if (state.facet !== 'all') params.set('aesthetic', state.facet);
+ let data;
+ try {
+ const r = await fetch('/api/products?' + params);
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ data = await r.json();
+ } catch (e) {
+ console.error('loadGridPage failed:', e);
+ document.getElementById('loading').textContent = '— offline — refresh to retry —';
+ state.loading = false;
+ return;
+ }
+ state.total = data.total; state.pages = data.pages;
+
+ if (state.page === 1) {
+ document.getElementById('statLine').textContent = data.total + ' patterns · ' + (state.facet === 'all' ? 'all aesthetics' : (LABELS[state.facet] || state.facet)) + (state.q ? ' · matching "' + state.q + '"' : '');
+ }
+ const grid = document.getElementById('grid');
+ for (const p of data.items) {
+ const a = document.createElement('a');
+ a.className = 'card'; a.href = '#'; a.onclick = (e) => { e.preventDefault(); dwmOpen('Sample',{sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}); };
+ a.innerHTML = cardHTML(p);
+ grid.appendChild(a);
+ }
+ if (state.page >= state.pages || data.items.length === 0) {
+ state.exhausted = true;
+ document.getElementById('loading').textContent = state.total > 0 ? '— end of archive · ' + state.total + ' patterns —' : '';
+ } else state.page++;
+ state.loading = false;
+}
+
+const io = new IntersectionObserver(es => { for (const e of es) if (e.isIntersecting) loadGridPage(); }, { rootMargin:'600px 0px' });
+io.observe(document.getElementById('sentinel'));
+
+document.getElementById('searchInput').addEventListener('input', e => {
+ state.q = e.target.value.trim();
+ clearTimeout(window._t);
+ window._t = setTimeout(resetGrid, 220);
+});
+
+// Density slider
+const slider = document.getElementById('densitySlider');
+const dlabel = document.getElementById('densityLabel');
+function setDensity(n) {
+ document.documentElement.style.setProperty('--cols', n);
+ dlabel.textContent = n + ' cols';
+ try { localStorage.setItem('glit_theme_density', n); } catch(e){}
+}
+slider.addEventListener('input', e => setDensity(parseInt(e.target.value)));
+const savedDensity = parseInt(localStorage.getItem('glit_theme_density') || '6');
+if (savedDensity >= 4 && savedDensity <= 12) { slider.value = savedDensity; setDensity(savedDensity); }
+
+// Theme toggle
+const tb = document.getElementById('theme-toggle');
+function setTheme(t){ document.documentElement.dataset.theme = t; try { localStorage.setItem('glit_theme', t); } catch(e){} tb.textContent = t === 'dark' ? '☾' : '☀'; }
+setTheme(document.documentElement.dataset.theme || 'light');
+tb.addEventListener('click', () => setTheme(document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'));
+
+loadFacets();
+loadGridPage();
+</script>
+<!-- ============================================================
+ DW UNIVERSAL CONTACT MODULE — fashion-house UX
+ Inject before </body> in every DW-family sister site.
+ Self-contained: CSS + 4 modals + JS submission handlers.
+ Uses host site's CSS vars (--bg, --fg, --gold, --rule).
+ ============================================================ -->
+<style>
+ /* === MODAL BASE === */
+ .dwm{position:fixed;inset:0;background:rgba(0,0,0,0.78);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;overflow-y:auto}
+ .dwm.open{display:flex}
+ .dwm-box{background:var(--bg);border:1px solid var(--rule);max-width:520px;width:100%;padding:36px 32px;position:relative;max-height:90vh;overflow-y:auto;animation:dwm-in 0.25s ease}
+ @keyframes dwm-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
+ .dwm-box h3{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:400;font-size:32px;line-height:1.05;margin-bottom:6px;color:var(--fg);letter-spacing:-0.01em}
+ .dwm-box .sub{color:var(--muted);font-size:12px;letter-spacing:0.16em;text-transform:uppercase;margin-bottom:24px;font-weight:500}
+ .dwm-close{position:absolute;top:18px;right:18px;background:transparent;border:0;color:var(--muted);font-size:24px;cursor:pointer;width:32px;height:32px;line-height:1;padding:0}
+ .dwm-close:hover{color:var(--gold)}
+ .dwm-preview{display:flex;gap:14px;align-items:center;padding:12px;background:var(--bg-soft);margin-bottom:18px}
+ .dwm-preview img{width:64px;height:64px;object-fit:cover}
+ .dwm-preview .pn{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:15px;line-height:1.2;color:var(--fg)}
+ .dwm-preview .pc{font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
+ .dwm-field{margin-bottom:14px}
+ .dwm-field label{display:block;font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:500}
+ .dwm-field input,.dwm-field textarea,.dwm-field select{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;padding:8px 4px;font-size:14px;font-family:inherit;color:var(--fg);outline:none;transition:border-color 0.2s}
+ .dwm-field input:focus,.dwm-field textarea:focus{border-bottom-color:var(--gold)}
+ .dwm-field textarea{min-height:60px;resize:vertical}
+ .dwm-submit{background:transparent;color:var(--muted, #c9b89e);border:1px solid var(--muted, #c9b89e);padding:14px 28px;font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:700;cursor:pointer;width:100%;margin-top:8px;transition:background 0.15s, color 0.15s}
+ .dwm-submit:hover{background:var(--muted, #c9b89e);color:var(--bg, #000)}
+
+ .dwm-submit:disabled{opacity:0.5;cursor:default}
+ .dwm-status{margin-top:14px;font-size:11px;letter-spacing:0.16em;text-transform:uppercase;text-align:center;display:none}
+ .dwm-status.ok{color:var(--sage);display:block}
+ .dwm-status.err{color:#e08070;display:block}
+ /* contact-options */
+ .dwm-options{display:flex;flex-direction:column;gap:10px}
+ .dwm-option{display:flex;align-items:center;gap:14px;padding:18px 20px;background:transparent;border:1px solid var(--rule);color:var(--fg);font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:600;cursor:pointer;text-decoration:none;transition:all 0.2s;text-align:left;width:100%}
+ .dwm-option:hover{border-color:var(--gold);color:var(--gold)}
+ .dwm-option svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}
+ .dwm-option .lbl{flex:1;display:block}
+ .dwm-option .val{display:block;font-size:10px;letter-spacing:0.14em;text-transform:none;font-weight:500;opacity:0.65;margin-top:4px}
+
+/* graphics-loop pass 5: serif hero typography + nav legibility */
+.cinema h1, h1.headline { font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 500; letter-spacing: -0.01em }
+.h-link { font-size: 13px; letter-spacing: 0.06em }
+
+/* graphics-loop pass 11: Ideas rails */
+#ideas { padding: 56px 24px 24px; max-width:1600px; margin:0 auto }
+#ideas .rail-block { margin-bottom:48px }
+#ideas .rail-eyebrow { font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:var(--muted, #888); margin-bottom:8px }
+#ideas .rail-title { font-size:clamp(22px,2.6vw,32px); font-weight:500; letter-spacing:-0.01em; margin:0 0 18px; color:var(--ink,#fff) }
+#ideas .rail { display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; scrollbar-width:none }
+#ideas .rail::-webkit-scrollbar { display:none }
+#ideas .rail-card { flex:0 0 240px; scroll-snap-align:start; cursor:pointer; transition:transform 0.2s }
+#ideas .rail-card:hover { transform:translateY(-3px) }
+#ideas .rail-card img { width:100%; aspect-ratio:1; object-fit:cover; display:block; background:var(--card,#222) }
+#ideas .rail-card .rc-title { font-size:13px; font-weight:500; color:var(--paper,#fff); padding:8px 0 2px; line-height:1.3 }
+#ideas .rail-card .rc-meta { font-size:11px; color:var(--muted,#888); letter-spacing:0.06em }
+@media (max-width:720px) { #ideas .rail-card { flex:0 0 160px } }
+</style>
+
+<!-- Contact options modal -->
+<div class="dwm" id="dwmContact" onclick="if(event.target===this)dwmClose('Contact')">
+ <div class="dwm-box" style="max-width:440px">
+ <button class="dwm-close" onclick="dwmClose('Contact')" aria-label="Close">×</button>
+ <h3>Contact</h3>
+ <p class="sub" id="dwmContactSub">Three ways to reach us</p>
+ <div class="dwm-options">
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Inquiry')">
+ <svg viewBox="0 0 24 24"><path d="M4 4h16v12H7l-3 3z"/></svg>
+ <span class="lbl">Send an Inquiry<span class="val">Project name · scope · all the details</span></span>
+ </button>
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Sample')">
+ <svg viewBox="0 0 24 24"><rect x="4" y="6" width="16" height="14"/><path d="M4 10h16M9 6V3h6v3"/></svg>
+ <span class="lbl">Request a Sample<span class="val">Memo sample · ships free · 3–5 business days</span></span>
+ </button>
+ <a class="dwm-option" id="dwmContactEmailLink" href="mailto:info@glitterwalls.com">
+ <svg viewBox="0 0 24 24"><path d="M3 6h18v12H3z"/><path d="M3 6l9 7 9-7"/></svg>
+ <span class="lbl">Email Us<span class="val" id="dwmContactEmailLabel">info@glitterwalls.com</span></span>
+ </a>
+ </div>
+ </div>
+</div>
+
+<!-- Inquiry modal -->
+<div class="dwm" id="dwmInquiry" onclick="if(event.target===this)dwmClose('Inquiry')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Inquiry')" aria-label="Close">×</button>
+ <h3>Project Inquiry</h3>
+ <p class="sub">We'll respond within one business day</p>
+ <form id="dwmInquiryForm" onsubmit="return dwmSubmit(event,'inquiry')">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Phone</label><input type="tel" name="phone"></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Project Name</label><input type="text" name="projectName" required></div>
+ <div class="dwm-field"><label>Project Scope</label><textarea name="projectScope" placeholder="Square footage · room count · timeline" required></textarea></div>
+ <div class="dwm-field"><label>Additional Information</label><textarea name="message" placeholder="Patterns of interest, finish preferences, budget"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Inquiry</button>
+ <div class="dwm-status" id="dwmInquiryStatus"></div>
+ </form>
+ </div>
+</div>
+
+<!-- Sample-request modal -->
+<div class="dwm" id="dwmSample" onclick="if(event.target===this)dwmClose('Sample')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Sample')" aria-label="Close">×</button>
+ <h3>Request a Sample</h3>
+ <p class="sub">Memo sample · ships free · 3–5 business days</p>
+ <div class="dwm-preview" id="dwmSamplePreview" style="display:none">
+ <img id="dwmSampleImg" src="" alt="">
+ <div><div class="pn" id="dwmSampleName"></div><div class="pc" id="dwmSampleSku"></div></div>
+ </div>
+ <form id="dwmSampleForm" onsubmit="return dwmSubmit(event,'sample')">
+ <input type="hidden" name="sku" id="dwmSampleSkuInput">
+ <input type="hidden" name="title" id="dwmSampleTitleInput">
+ <input type="hidden" name="image_url" id="dwmSampleImageInput">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Shipping Address</label><input type="text" name="address" placeholder="Street" required></div>
+ <div class="dwm-field" style="display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px">
+ <input type="text" name="city" placeholder="City" required>
+ <input type="text" name="state" placeholder="State" required>
+ <input type="text" name="zip" placeholder="ZIP" required>
+ </div>
+ <div class="dwm-field"><label>Notes (optional)</label><textarea name="message" placeholder="Project, sq.ft., timing"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Sample Request</button>
+ <div class="dwm-status" id="dwmSampleStatus"></div>
+ </form>
+ </div>
+</div>
+
+<script>
+ // Universal modal control
+ function dwmOpen(name, opts){
+ document.getElementById('dwm' + name).classList.add('open');
+ document.body.style.overflow = 'hidden';
+ if (name === 'Sample' && opts) {
+ document.getElementById('dwmSamplePreview').style.display = 'flex';
+ document.getElementById('dwmSampleImg').src = opts.image_url || '';
+ document.getElementById('dwmSampleName').textContent = opts.title || '';
+ document.getElementById('dwmSampleSku').textContent = opts.sku || '';
+ document.getElementById('dwmSampleSkuInput').value = opts.sku || '';
+ document.getElementById('dwmSampleTitleInput').value = opts.title || '';
+ document.getElementById('dwmSampleImageInput').value = opts.image_url || '';
+ } else if (name === 'Sample') {
+ document.getElementById('dwmSamplePreview').style.display = 'none';
+ document.getElementById('dwmSampleSkuInput').value = '';
+ document.getElementById('dwmSampleTitleInput').value = '';
+ document.getElementById('dwmSampleImageInput').value = '';
+ }
+ }
+ function dwmClose(name){ document.getElementById('dwm'+name).classList.remove('open'); document.body.style.overflow=''; }
+
+ // Universal form submit — POSTs to /api/send-{kind}
+ async function dwmSubmit(e, kind) {
+ e.preventDefault();
+ const form = e.target;
+ const data = Object.fromEntries(new FormData(form).entries());
+ const btn = form.querySelector('.dwm-submit');
+ const status = form.querySelector('.dwm-status');
+ btn.disabled = true; const orig = btn.textContent; btn.textContent = 'Sending…';
+ status.className = 'dwm-status';
+ try {
+ const r = await fetch('/api/send-' + kind, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify(data) });
+ if (!r.ok) throw new Error('HTTP '+r.status);
+ const j = await r.json();
+ status.textContent = kind === 'sample' ? 'Sample request sent — ships within 3–5 business days' : 'Inquiry sent — we respond within 1 business day';
+ status.className = 'dwm-status ok';
+ btn.textContent = 'Sent ✓';
+ setTimeout(() => { dwmClose(kind === 'sample' ? 'Sample' : 'Inquiry'); btn.disabled = false; btn.textContent = orig; status.className = 'dwm-status'; form.reset(); }, 2800);
+ } catch (err) {
+ status.textContent = 'Send failed — please email info@designerwallcoverings.com';
+ status.className = 'dwm-status err';
+ btn.disabled = false; btn.textContent = orig;
+ }
+ return false;
+ }
+
+ // Wire up "Memo samples ship free" badge in hero to open sample modal directly
+ document.querySelectorAll('.hero .badge, [data-open-sample]').forEach(el => {
+ el.style.cursor = 'pointer';
+ el.addEventListener('click', () => dwmOpen('Sample'));
+ });
+
+ // Wire nav "Trade" link to inquiry modal
+ document.querySelectorAll('nav a[href*="designerwallcoverings.com"]').forEach(a => {
+ a.removeAttribute('target');
+ a.removeAttribute('href');
+ a.style.cursor = 'pointer';
+ a.addEventListener('click', e => { e.preventDefault(); dwmOpen('Contact'); });
+ });
+
+ // Override product card clicks — open Sample modal pre-filled instead of redirecting to DW
+ document.addEventListener('click', e => {
+ const card = e.target.closest('.card, .rail-card');
+ if (!card) return;
+ if (card.tagName === 'A' && (card.getAttribute('href') || '').startsWith('/sample/')) {
+ e.preventDefault();
+ const img = card.querySelector('img');
+ const pat = card.querySelector('.pat');
+ const sku = card.getAttribute('href').replace('/sample/', '');
+ dwmOpen('Sample', {
+ sku,
+ title: pat ? pat.textContent.trim() : '',
+ image_url: img ? img.src : ''
+ });
+ }
+ }, true);
+// DW STANDARD: hero pulls from products.json[0].image_url so dw-collections-viewer
+// drag-drop / hero-pin updates the live front page on next deploy.
+// Always upgrades to the largest Shopify variant (strips _NxN size suffix) so
+// the full-page hero stays sharp.
+// DW STANDARD: hero rotates through top-20 NEWEST products on each visit
+// (novasuede.com pattern). Fetches /api/products?limit=100, sorts by created_at desc,
+// takes the freshest 20, picks one per visit via localStorage counter.
+// Falls back to static /hero-bg.jpg on any error.
+(async function rotateHero() {
+ try {
+ const r = await fetch('/api/products?limit=100');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || [])
+ .filter(p => p && p.image_url && /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(p.image_url))
+ .sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')))
+ .slice(0, 20);
+ if (!items.length) return;
+ let visits = 0;
+ try {
+ visits = parseInt(localStorage.getItem('hero_visits') || '0', 10) || 0;
+ localStorage.setItem('hero_visits', String(visits + 1));
+ } catch(e) {}
+ const pick = items[visits % items.length];
+ // Strip _NxN size suffix to get the largest CDN variant
+ const url = pick.image_url.replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ const bg = document.getElementById('heroBg') || document.getElementById('cinemaBg');
+ if (bg) bg.style.backgroundImage = "url('" + url + "')";
+ } catch (e) {}
+})();
+
+
+// DW STANDARD sort-select wire-up (added by fleet patcher)
+(function(){
+ const sortSel = document.getElementById('sortSelect');
+ if (!sortSel) return;
+ const KEY = location.hostname.replace(/\./g, '_') + '_sort';
+ const saved = localStorage.getItem(KEY);
+ if (saved) { try { sortSel.value = saved; } catch(e){} }
+ if (typeof state !== 'undefined') state.sort = sortSel.value;
+ sortSel.addEventListener('change', e => {
+ const v = e.target.value;
+ try { localStorage.setItem(KEY, v); } catch(e){}
+ if (typeof state !== 'undefined') state.sort = v;
+ if (typeof resetGrid === 'function') resetGrid();
+ else location.reload();
+ });
+})();
+
+// graphics-loop pass 11: hydrate Ideas rails from /api/products
+(async function hydrateIdeas() {
+ try {
+ const r = await fetch('/api/products?limit=80');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || []).filter(p => p && p.image_url);
+ if (!items.length) return;
+ const sorted = [...items].sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')));
+ const newest = sorted.slice(0, 12);
+ // Curated = deterministic offset slice (every 5th item starting at idx 3) for variety
+ const curated = items.filter((_, i) => i % 5 === 3).slice(0, 12);
+ function card(p) {
+ const url = (p.image_url || '').replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ return '<a class="rail-card" href="/sample/' + encodeURIComponent(p.handle || p.sku) + '">' +
+ '<img src="' + url + '" alt="' + (p.title || '').replace(/"/g, '"') + '" loading="lazy">' +
+ '<div class="rc-title">' + ((p.title || '').split('|')[0] || '').trim() + '</div>' +
+ '<div class="rc-meta">' + (p.vendor || '') + '</div>' +
+ '</a>';
+ }
+ const r1 = document.getElementById('railNewest');
+ const r2 = document.getElementById('railCurated');
+ if (r1) r1.innerHTML = newest.map(card).join('');
+ if (r2) r2.innerHTML = curated.map(card).join('');
+ } catch(e) {}
+})();
+</script>
+
+</body>
+</html>
diff --git a/public/index.html.bak.nspropagate.1778226815138 b/public/index.html.bak.nspropagate.1778226815138
new file mode 100644
index 0000000..83b18fd
--- /dev/null
+++ b/public/index.html.bak.nspropagate.1778226815138
@@ -0,0 +1,971 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-RK1X75MQ68"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-RK1X75MQ68');
+</script>
+
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Casa Rossa — The romance of glitter.</title>
+<meta name="description" content="Casa Rossa is a curated atelier dedicated entirely to glitter. We do one thing — and we do it carefully.">
+<meta name="theme-color" content="#FFF">
+<link rel="canonical" href="https://glitterwalls.com/">
+<link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
+<link rel="preload" as="image" href="/hero-bg.jpg" fetchpriority="high">
+<script type="application/ld+json">
+{
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ "name": "Casa Rossa",
+ "url": "https://glitterwalls.com/",
+ "email": "info@glitterwalls.com"
+}
+</script>
+<script src="/zd-loader.js" defer></script>
+<style>
+:root {
+ --bg: #FFF;
+ --paper: #000;
+ --muted: #8B7866;
+ --line: #000;
+ --accent: #D70000;
+ --bg-soft: #000;
+ --cols: 6;
+}
+html[data-theme="dark"] {
+ --bg: #000;
+ --paper: #FFF;
+ --muted: #C9B89E;
+ --line: rgba(255,254,250,0.12);
+ --accent: #D70000;
+ --bg-soft: #2a1f15;
+}
+* { margin:0; padding:0; box-sizing:border-box }
+html { scroll-behavior:smooth }
+body { font-family:'Inter', sans-serif; color:var(--paper); -webkit-font-smoothing:antialiased; background:var(--bg); min-height:100vh; overflow-x:hidden }
+/* DW-FASHION-TEMPLATE-OVERRIDE */
+.section-title .accent, .footer-brand, .center-mark, h1, h2, h3 { font-family: 'Monoton', 'Impact', sans-serif !important; font-weight:500 !important; }
+
+/* ===== Auto-hide header ===== */
+header { position:fixed; top:0; left:0; right:0; display:flex; justify-content:space-between; align-items:center; padding:22px 32px; z-index:100; background:rgba(0,0,0,0.55); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); transition:transform .3s }
+.h-link { display:flex; align-items:center; gap:10px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); text-decoration:none; cursor:pointer; background:transparent; border:0 }
+.h-link:hover { opacity:0.7 }
+.h-icon { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.5 }
+
+/* ===== Cinema hero ===== */
+.cinema { position:relative; height:100vh; width:100%; overflow:hidden }
+.cinema-bg { position:absolute; inset:0; background-size:cover; background-position:center; background-image:url('/hero-bg.jpg') }
+.cinema-bg::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 60%, rgba(0,0,0,0.75) 100%) }
+.corner-mark { position:absolute; top:24px; left:32px; font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,0.55), 0 0 1px rgba(0,0,0,0.4); z-index:5 }
+.corner-mark::before { content:"◆ "; margin-right:6px }
+.center-mark { position:absolute; top:clamp(80px,12vh,140px); left:50%; transform:translateX(-50%); font-size:clamp(28px,4vw,56px); font-weight:500; letter-spacing:0.18em; text-transform:uppercase; text-align:center; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,0.65), 0 0 1px rgba(0,0,0,0.5); z-index:5 }
+.center-mark .tm { font-size:14px; vertical-align:super; opacity:0.7; margin-left:0.2em }
+.center-mark .sub { display:block; font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400; font-size:0.4em; letter-spacing:0.04em; text-transform:none; margin-top:14px; opacity:0.85 }
+.meta-line { position:absolute; bottom:32px; left:32px; font-size:10px; letter-spacing:0.28em; text-transform:uppercase; font-weight:700; color:#fff; z-index:5; opacity:0.85 }
+.meta-line .num { font-size:12px; display:block; margin-top:4px; letter-spacing:0.05em }
+.enter { position:absolute; bottom:32px; right:32px; display:flex; align-items:center; gap:14px; font-size:11px; letter-spacing:0.36em; text-transform:uppercase; font-weight:700; color:#fff; text-decoration:none; padding-bottom:6px; border-bottom:1px solid #fff; transition:gap 0.25s; z-index:5 }
+.enter:hover { gap:22px }
+.enter svg { width:24px; height:12px }
+
+/* ===== Section ===== */
+.section { padding:96px 32px }
+.section-header { display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:24px; margin-bottom:32px; padding-bottom:24px; border-bottom:1px solid var(--line) }
+.section-title { font-size:clamp(36px,5vw,64px); font-weight:300; letter-spacing:-0.02em; line-height:1 }
+.section-title .accent { color: var(--accent); font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400 }
+.section-eyebrow { font-size:10px; letter-spacing:0.4em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:16px }
+.section-meta { font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:600; color:var(--muted); text-align:right; line-height:1.6 }
+
+/* ===== Filter bar ===== */
+.filters { display:flex; gap:8px; align-items:center; margin-bottom:18px; flex-wrap:wrap }
+.chip { padding:8px 16px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); background:transparent; border:1px solid var(--line); cursor:pointer; transition:all 0.2s; font-family:inherit }
+.chip:hover { border-color:var(--paper) }
+.chip.active { background:var(--paper); color:var(--bg); border-color:var(--paper) }
+.search { flex:0 1 280px; margin-left:auto; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); padding:6px 0 }
+.search input { flex:1; background:transparent; border:0; color:var(--paper); font-family:inherit; font-size:13px; outline:none; letter-spacing:0.04em }
+.search input::placeholder { color:var(--muted) }
+.search svg { width:16px; height:16px; stroke:var(--muted); fill:none; stroke-width:1.5 }
+
+/* ===== Grid-density slider ===== */
+.density { display:flex; align-items:center; gap:14px; padding:6px 0; margin-bottom:24px }
+.density label { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--muted) }
+.density input[type=range] { flex:1; max-width:240px; -webkit-appearance:none; appearance:none; height:1px; background:var(--line); outline:none }
+.density input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50% }
+.density input[type=range]::-moz-range-thumb { width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50%; border:0 }
+.density .ct { font-size:11px; color:var(--muted); letter-spacing:0.18em; text-transform:uppercase; font-weight:600; min-width:80px }
+
+/* ===== Stats line ===== */
+.stat-line { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:600; color:var(--muted); margin-bottom:24px }
+
+/* ===== Product grid (novasuede pattern: flush grid + slide-up overlay) ===== */
+.grid { display:grid; grid-template-columns:repeat(var(--cols), 1fr); gap:0 }
+.card { position:relative; aspect-ratio:1/1.15; cursor:pointer; overflow:hidden; border:1px solid var(--bg); transition:transform 0.4s cubic-bezier(0.2,0.8,0.2,1); background:var(--bg-soft) }
+.card:hover { transform:scale(1.04); z-index:5 }
+.card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.4s ease }
+.card .overlay { position:absolute; left:0; right:0; bottom:0; padding:20px 16px 14px; background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.85) 100%); transform:translateY(48%); opacity:0.85; transition:transform 0.3s ease, opacity 0.3s ease }
+.card:hover .overlay { transform:translateY(0); opacity:1 }
+.card .pat { font-size:13px; font-weight:600; letter-spacing:0.02em; color:#fff; line-height:1.25; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
+.card .ven { font-size:9px; letter-spacing:0.18em; text-transform:uppercase; color:#fff; opacity:0.7; font-weight:500; margin-top:4px }
+.card .actions { margin-top:10px; display:flex; gap:6px }
+.card .sample-btn { flex:1; padding:7px 10px; background:#fff; color:#000; font-family:inherit; font-size:10px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; border:0; cursor:pointer; text-align:center; transition:all 0.2s }
+.card .sample-btn:hover { background:var(--accent); color:#fff }
+
+@media (max-width:1024px) { .grid { grid-template-columns:repeat(min(var(--cols), 4), 1fr) } }
+@media (max-width:720px) { .grid { grid-template-columns:repeat(2, 1fr) } .density { display:none } }
+
+.sentinel { height:1px }
+.loading { text-align:center; color:var(--muted); padding:32px; font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700 }
+
+/* ===== Footer ===== */
+footer { padding:64px 32px 32px; border-top:1px solid var(--line); margin-top:32px }
+.footer-grid { max-width:1400px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px; margin-bottom:48px }
+.footer-brand { font-size:24px; font-weight:300; letter-spacing:0.32em; text-transform:uppercase; margin-bottom:12px }
+.footer-text { font-size:13px; line-height:1.6; color:var(--muted); max-width:380px }
+.footer-col h4 { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--paper); margin-bottom:18px }
+.footer-col a { display:block; font-size:13px; color:var(--muted); text-decoration:none; margin-bottom:8px; transition:color 0.2s; cursor:pointer; background:transparent; border:0; font-family:inherit; padding:0; text-align:left }
+.footer-col a:hover { color:var(--accent) }
+.footer-bottom { max-width:1400px; margin:0 auto; padding-top:24px; border-top:1px solid var(--line); display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--muted) }
+
+@media (max-width:720px) {
+ .corner-mark, .meta-line, .enter { font-size:10px }
+ .center-mark { font-size:24px; letter-spacing:0.12em; top:clamp(60px,9vh,90px) }
+ .section, footer { padding-left:20px; padding-right:20px }
+ .footer-grid { grid-template-columns:1fr; gap:32px }
+ .search { margin-left:0; flex:1 1 100% }
+}
+
+.theme-toggle { background:transparent; border:1px solid var(--line); width:32px; height:32px; cursor:pointer; color:var(--paper); display:inline-flex; align-items:center; justify-content:center; font-size:14px; line-height:1; transition:all .15s; padding:0 }
+.theme-toggle:hover { border-color:var(--accent); color:var(--accent) }
+
+/* ===== WCAG 2.4.7 — keyboard focus indicators ===== */
+/* Strictly :focus-visible so mouse clicks do NOT show the ring */
+a:focus-visible,
+button:focus-visible,
+input:focus-visible,
+select:focus-visible,
+textarea:focus-visible,
+[tabindex]:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+</style>
+<script>
+(function(){ try { var t = localStorage.getItem('glit_theme') || 'light'; document.documentElement.dataset.theme = t; } catch(e){} })();
+</script>
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Monoton&display=swap">
+
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://glitterwalls.com/">
+<meta property="og:title" content="Glitter Walls">
+<meta property="og:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta property="og:image" content="https://glitterwalls.com/hero-bg.jpg">
+<meta property="og:site_name" content="Glitter Walls">
+<meta property="article:publisher" content="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings">
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:title" content="Glitter Walls">
+<meta name="twitter:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta name="twitter:image" content="https://glitterwalls.com/hero-bg.jpg">
+<!-- graphics-loop pass 13: footer + fb -->
+</head>
+<body>
+<style id="ns-header-modal-styles">
+ .ns-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 18px 36px; background: rgba(10,10,10,0.92) !important; backdrop-filter: blur(8px); border-bottom: 1px solid rgba(245,241,232,0.06); }
+ .ns-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; }
+ .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #a98b5b 0%, #5d4c32 60%, #332a1b 100%); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
+ .ns-name { font-family: -apple-system, "SF Pro Display", "Helvetica Neue", system-ui, sans-serif; font-size: 18px !important; font-weight: 300 !important; letter-spacing: 0.02em !important; color: #f5f1e8 !important; text-transform: none !important; margin: 0 !important; }
+ .ns-name sup { font-size: 0.55em; font-weight: 300; margin-left: 1px; }
+ .ns-nav { display: flex; gap: 32px; align-items: center; list-style: none; padding: 0; margin: 0; }
+ .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; padding: 0 !important; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
+ .ns-nav a:hover, .ns-nav button:hover { color: #ffffff !important; }
+ @media (max-width: 820px) { .ns-header { padding: 14px 18px; } .ns-nav { gap: 16px; } .ns-nav a, .ns-nav button { font-size: 13px !important; } }
+ @media (max-width: 760px) {
+ .ns-header { flex-wrap: wrap; }
+ .ns-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0 4px; }
+ .ns-nav.open { display: flex !important; }
+ .ns-nav a, .ns-nav button { padding: 10px 0 !important; border-bottom: 1px solid rgba(245,241,232,0.08); width: 100%; text-align: left; }
+ .ns-nav a:nth-child(n+5), .ns-nav button:nth-child(n+5) { display: block !important; }
+ .ns-header .mobile-toggle { display: flex !important; }
+ }
+ @media (min-width: 761px) {
+ .ns-header .mobile-toggle { display: none !important; }
+ }
+ .ns-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.78); z-index: 200; align-items: center; justify-content: center; padding: 24px; backdrop-filter: blur(6px); }
+ .ns-modal.show { display: flex; }
+ .ns-modal-card { max-width: 460px; width: 100%; background: #141414 !important; border: 1px solid rgba(245,241,232,0.14); border-radius: 6px; padding: 28px 30px 30px; position: relative; }
+ .ns-modal-card .close-x { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; background: none; border: 1px solid rgba(245,241,232,0.18); color: rgba(245,241,232,0.6) !important; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; }
+ .ns-modal-card .close-x:hover { color: #ffffff !important; border-color: #ffffff; }
+ .ns-modal-card h3 { font-family: -apple-system, "SF Pro Display", system-ui; font-weight: 300 !important; font-size: 22px !important; margin: 0 0 6px !important; color: #f5f1e8 !important; }
+ .ns-modal-card .sub { color: rgba(245,241,232,0.65) !important; font-size: 13px; margin: 0 0 22px; }
+ .ns-actions { display: flex; flex-direction: column; gap: 10px; }
+ .ns-action { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: rgba(245,241,232,0.04) !important; border: 1px solid rgba(245,241,232,0.12) !important; color: #f5f1e8 !important; text-decoration: none !important; cursor: pointer; transition: all 200ms; font: inherit; text-align: left; }
+ .ns-action:hover { background: rgba(245,241,232,0.08) !important; border-color: #d4b683 !important; }
+ .ns-action .ico { width: 32px; height: 32px; border-radius: 50%; background: rgba(212,182,131,0.12); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
+ .ns-action .txt { flex: 1; }
+ .ns-action .txt b { display: block; font-weight: 500; font-size: 14px; color: #f5f1e8 !important; }
+ .ns-action .txt span { font-size: 12px; color: rgba(245,241,232,0.55) !important; }
+
+ /* ─── FINAL CONTRAST PASS — kill remaining gold-solid + white-island defects ─── */
+ /* Replace all gold-fill accents with off-white (Gucci-aesthetic, no DW gold solids) */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active,
+ .drapery-btn, .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover,
+ .drapery-btn:hover, .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ /* Gold accents stay only as edge color (links, glyphs) — not fills */
+ a { color: #d4b683; }
+ a:hover { color: #f5d97a; }
+ /* Authorized-dealer footer line — small caps tracked, muted ink, no gold pill */
+ .authorized, .authorized-dealer p {
+ background: transparent !important;
+ color: rgba(245,241,232,0.5) !important;
+ font-size: 10px !important;
+ letter-spacing: 0.22em !important;
+ text-transform: uppercase !important;
+ padding: 0 !important;
+ border: none !important;
+ margin-top: 14px !important;
+ }
+ /* Kill any straggler white bg in info-card / sample-related cards */
+ .info-card, .info-card-link, .care-highlight, .feature-card, .spec-item {
+ background-color: rgba(245,241,232,0.04) !important;
+ border-color: rgba(245,241,232,0.12) !important;
+ }
+ /* Ensure modal content stays readable — Steve's earlier sweep made it #141414 with white text */
+ .modal-content { background: #141414 !important; color: #f5f1e8 !important; }
+ .modal-content * { color: #f5f1e8 !important; }
+ .modal-content input, .modal-content textarea, .modal-content select {
+ background: rgba(245,241,232,0.05) !important;
+ color: #f5f1e8 !important;
+ border-color: rgba(245,241,232,0.2) !important;
+ }
+ .modal-content label { color: rgba(245,241,232,0.6) !important; }
+ /* Force the wide-tracked NOVASUEDE wordmark to stay white */
+ .ns-wordmark, .ns-wordmark sup { color: #f5f1e8 !important; }
+
+ /* ─── Modal-internal contrast (post-QA defects) ─── */
+ /* Backdrop covers full viewport */
+ .modal { width: 100vw !important; height: 100vh !important; left: 0 !important; top: 0 !important; background: rgba(0, 0, 0, 0.78) !important; backdrop-filter: blur(6px); }
+ /* Chip — flip from white-on-white island to dark card */
+ .request-chip {
+ background: rgba(245, 241, 232, 0.06) !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.18) !important;
+ border-radius: 4px !important;
+ }
+ .request-chip * { color: #f5f1e8 !important; }
+ .request-chip .chip-swatch {
+ /* swatch dot ALWAYS displays the inline-style hex from JS — fight any sweep */
+ border: 1px solid rgba(0, 0, 0, 0.4) !important;
+ }
+ /* + Add to request — hairline white-border on transparent (no gold) */
+ .add-to-request-btn {
+ background: transparent !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.6) !important;
+ border-radius: 0 !important;
+ padding: 12px 22px !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 400 !important;
+ }
+ .add-to-request-btn:hover {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ /* Hex caption visible */
+ .preview-hex, #colorPreviewHex {
+ display: block !important;
+ color: rgba(245, 241, 232, 0.55) !important;
+ font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
+ font-size: 11px !important;
+ margin-top: 4px !important;
+ letter-spacing: 0.04em !important;
+ text-transform: lowercase !important;
+ }
+ /* Color preview name — stays single, prominent */
+ #colorPreviewName {
+ color: #f5f1e8 !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 500 !important;
+ display: block !important;
+ margin-top: 12px !important;
+ }
+
+ /* ─── Mobile hamburger nav (replaces the overflow at <760px) ─── */
+ @media (max-width: 760px) {
+ header .nav-container { flex-wrap: wrap; }
+ header nav { display: none; flex-basis: 100%; flex-direction: column; gap: 6px; padding: 16px 0 6px; }
+ header nav.open { display: flex; }
+ header nav a { padding: 10px 0; border-bottom: 1px solid rgba(245,241,232,0.1); }
+ header .mobile-toggle {
+ display: flex !important;
+ flex-direction: column;
+ gap: 5px;
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+ padding: 8px;
+ }
+ header .mobile-toggle span {
+ width: 22px; height: 1.5px;
+ background: #f5f1e8;
+ display: block;
+ }
+ }
+ @media (min-width: 761px) {
+ header .mobile-toggle { display: none !important; }
+ }
+
+ </style>
+<style id="ns-gold-kill">
+ /* novasuede: kill gold-solid fills, off-white instead. Edge color stays gold. */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active, .drapery-btn,
+ .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover, .drapery-btn:hover,
+ .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ </style>
+<header class="ns-header">
+ <a href="/" class="ns-brand" aria-label="Home">
+ <span class="ns-dot"></span>
+ <span class="ns-name">Casa Rossa</span>
+ </a>
+ <nav class="ns-nav" id="nsPrimaryNav" aria-label="Primary">
+ <a href="/">Home</a>
+ <a href="/about">About</a>
+ <button type="button" onclick="nsContactOpen()">Contact</button>
+ </nav>
+ <button type="button" class="mobile-toggle" aria-label="Toggle menu" aria-controls="nsPrimaryNav" aria-expanded="false" onclick="nsToggleNav(this)">
+ <span></span><span></span><span></span>
+ </button>
+ </header>
+
+<div class="ns-modal" id="nsContactModal" role="dialog" aria-modal="true" aria-labelledby="nsContactTitle" onclick="if(event.target===this)nsContactClose()">
+ <div class="ns-modal-card">
+ <button type="button" class="close-x" onclick="nsContactClose()" aria-label="Close">×</button>
+ <h3 id="nsContactTitle">How can we help?</h3>
+ <p class="sub">Trade-account replies within one business day.</p>
+ <div class="ns-actions">
+ <a class="ns-action" href="#contact" onclick="nsContactClose()"><span class="ico">📋</span><div class="txt"><b>Get a Quote</b><span>Project specs → priced estimate</span></div></a>
+ <a class="ns-action" href="#contact" onclick="nsContactClose();openModal();"><span class="ico">📦</span><div class="txt"><b>Order a Sample</b><span>Free swatch to your shop</span></div></a>
+ <a class="ns-action" href="mailto:info@glitterwalls.com?subject=Casa%20Rossa%20inquiry"><span class="ico">✉️</span><div class="txt"><b>Email Us</b><span>info@glitterwalls.com</span></div></a>
+ <a class="ns-action" href="tel:888-373-4564"><span class="ico">📞</span><div class="txt"><b>Call Us</b><span>(888) 373-4564 · M–F, 9–5 PT</span></div></a>
+ </div>
+ </div>
+ </div>
+<script>
+ function nsContactOpen() { var m = document.getElementById('nsContactModal'); if (m) m.classList.add('show'); }
+ function nsContactClose() { var m = document.getElementById('nsContactModal'); if (m) m.classList.remove('show'); }
+ function nsToggleNav(btn) {
+ var nav = document.getElementById('nsPrimaryNav');
+ if (!nav) return;
+ var open = nav.classList.toggle('open');
+ btn.setAttribute('aria-expanded', open ? 'true' : 'false');
+ }
+ document.addEventListener('keydown', function(e){ if (e.key === 'Escape') nsContactClose(); });
+</script>
+
+
+
+
+
+
+
+<header>
+ <button class="h-link" onclick="dwmOpen('Contact')" aria-label="Contact"><svg class="h-icon" viewBox="0 0 24 24"><path d="M3 7h18M3 12h18M3 17h18"/></svg><span>Contact</span></button>
+ <button class="theme-toggle" id="theme-toggle" aria-label="Theme toggle">☾</button>
+</header>
+
+<section class="cinema">
+ <div class="cinema-bg" id="heroBg"></div>
+ <div class="corner-mark">Sparkle & Glam</div>
+ <div class="center-mark">Glitter Walls</div>
+ <div class="meta-line">Glitter · Sequin · Holographic · Glam<span class="num" id="heroNum"></span></div>
+ <a class="enter" href="#shop">Enter <svg viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.4"><path d="M0 6h22M16 1l6 5-6 5"/></svg></a>
+</section>
+
+
+<section class="section" id="ideas">
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">New this week</h2>
+ <div class="rail" id="railNewest"></div>
+ </div>
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">Curated picks</h2>
+ <div class="rail" id="railCurated"></div>
+ </div>
+</section>
+
+<section class="section" id="shop">
+ <div class="section-header">
+ <div>
+ <div class="section-eyebrow">The Collection</div>
+ <h2 class="section-title"><span class="accent" id="totalCount">—</span> Patterns.</h2>
+ </div>
+ <div class="section-meta">Glitter · Sequin · Holographic · Glam</div>
+ </div>
+
+ <div class="filters" id="facets">
+ <button class="chip active" data-facet="all">All</button>
+ </div>
+
+ <div class="density">
+ <label>Sort</label>
+ <select id="sortSelect" aria-label="Sort products" style="background:transparent;color:inherit;border:1px solid var(--line,rgba(255,255,255,.2));font:inherit;font-size:11px;letter-spacing:.10em;text-transform:uppercase;padding:4px 8px;cursor:pointer;outline:none;margin-right:14px">
+ <option value="newest">Newest</option>
+ <option value="color">Color</option>
+ <option value="style">Style</option>
+ <option value="sku">SKU A→Z</option>
+ <option value="title">Title A→Z</option>
+ <option value="price-asc">Price ↑</option>
+ <option value="price-desc">Price ↓</option>
+ </select>
+ <label>Grid</label>
+ <input type="range" id="densitySlider" min="4" max="12" step="1" value="6" aria-label="Grid columns">
+ <span class="ct" id="densityLabel">6 cols</span>
+ <div class="search">
+ <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M21 21l-5.5-5.5"/></svg>
+ <input type="text" id="searchInput" placeholder="Search by pattern, color…" autocomplete="off">
+ </div>
+ </div>
+
+ <div class="stat-line" id="statLine">Loading…</div>
+ <div class="grid" id="grid"></div>
+ <div class="loading" id="loading">Loading more…</div>
+ <div class="sentinel" id="sentinel"></div>
+</section>
+
+<footer>
+ <div class="footer-grid">
+ <div>
+ <div class="footer-brand">Casa Rossa</div>
+ <p class="footer-text">Casa Rossa — real samples ship free.</p>
+ <p class="footer-text" style="margin-top:14px;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;color:var(--paper);opacity:0.7"><a href="/about" style="color:inherit;text-decoration:none;border-bottom:1px solid var(--accent)">About →</a></p>
+ </div>
+ <div class="footer-col">
+ <h4>Aesthetic</h4>
+ <div id="footerFacets"></div>
+ </div>
+ <div class="footer-col">
+ <h4>Trade</h4>
+ <button onclick="dwmOpen('Inquiry')">Project Inquiry</button>
+ <button onclick="dwmOpen('Sample')">Request Sample</button>
+ <button onclick="dwmOpen('Contact')">Contact</button>
+ </div>
+
+ <div class="footer-col">
+ <h4>Social</h4>
+ <a class="fb-link" href="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings" target="_blank" rel="noopener">Facebook</a>
+ </div>
+ </div>
+ <div class="footer-bottom">
+ <span>glitterwalls.com · Casa Rossa</span>
+ <span><a href="mailto:info@glitterwalls.com" style="color:var(--paper);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px">info@glitterwalls.com</a></span>
+ <span id="footerStat"></span>
+ </div>
+</footer>
+
+<script>
+// mini-constellation — 43 niche-stars, current site highlighted in gold
+(function(){
+ const SLUG = "glitterwalls";
+ const NICHES = [
+ ['silkwallpaper','Silk','mat'],['silkwallcoverings','Silk W/C','mat'],['linenwallpaper','Linen','mat'],
+ ['jutewallpaper','Jute','mat'],['raffiawallcoverings','Raffia W/C','mat'],['raffiawalls','Raffia Walls','mat'],
+ ['corkwallcovering','Cork','mat'],['fabricwallpaper','Fabric','mat'],['textilewallpaper','Textile','mat'],
+ ['metallicwallpaper','Metallic','mat'],['silverleafwallpaper','Silver Leaf','mat'],['vinylwallpaper','Vinyl','mat'],
+ ['micawallpaper','Mica','mat'],['madagascarwallpaper','Madagascar','mat'],['mylarwallpaper','Mylar','mat'],
+ ['suedewallpaper','Suede','mat'],
+ ['1800swallpaper','1800s','dec'],['1890swallpaper','1890s','dec'],['1900swallpaper','1900s','dec'],
+ ['1920swallpaper','1920s','dec'],['1930swallpaper','1930s','dec'],['1940swallpaper','1940s','dec'],
+ ['1950swallpaper','1950s','dec'],['1960swallpaper','1960s','dec'],['1970swallpaper','1970s','dec'],
+ ['1980swallpaper','1980s','dec'],['retrowalls','Retro','dec'],['wallpapersback','W. Back','dec'],
+ ['agedwallpaper','Aged','cra'],['handcraftedwallpaper','Handcrafted','cra'],['museumwallpaper','Museum','cra'],
+ ['restorationwallpaper','Restoration','cra'],['pastelwallpaper','Pastel','cra'],['glitterwalls','Glitter','cra'],
+ ['greenwallcoverings','Green','cra'],['naturalwallcoverings','Natural','cra'],['saloonwallpaper','Saloon','cra'],
+ ['contractwallpaper','Contract','use'],['hotelwallcoverings','Hotel','use'],['hospitalitywallpaper','Hospitality','use'],
+ ['healthcarewallpaper','Healthcare','use'],['restaurantwallpaper','Restaurant','use'],['architecturalwallcoverings','Architectural','use']
+ ];
+ const COLOR = { mat:'#c9b687', dec:'#b86a4a', cra:'#6b8e6f', use:'#4a6b8e' };
+ const W = 1080, H = 200, BANDS = ['mat','dec','cra','use'];
+ const groups = { mat:[], dec:[], cra:[], use:[] };
+ for (const n of NICHES) groups[n[2]].push(n);
+ const svg = document.getElementById('miniConst');
+ if (!svg) return;
+ const bandW = W / BANDS.length;
+ let nodes = '';
+ BANDS.forEach((band, bi) => {
+ const list = groups[band];
+ const cx = bi * bandW + bandW / 2;
+ list.forEach((n, i) => {
+ const t = list.length === 1 ? 0.5 : i / (list.length - 1);
+ // deterministic jitter per slug
+ let h = 0; for (let k = 0; k < n[0].length; k++) h = (h * 31 + n[0].charCodeAt(k)) | 0;
+ const jx = ((h & 0xff) / 255 - 0.5) * (bandW * 0.5);
+ const jy = (((h >> 8) & 0xff) / 255 - 0.5) * 6; // tightened from 14 → 6 to prevent same-band collisions (16 mat nodes / 144px = 9px spacing)
+ const x = cx + jx, y = 28 + t * (H - 56) + jy;
+ const isCurrent = n[0] === SLUG;
+ const r = isCurrent ? 8 : 4;
+ const op = isCurrent ? 1 : 0.55;
+ nodes += `<g class="mc-node" data-slug="${n[0]}" data-label="${n[1]}" style="cursor:pointer">
+ <circle cx="${x}" cy="${y}" r="${r}" fill="url(#dna-${band})" fill-opacity="${op}" stroke="${COLOR[band]}" stroke-opacity="${isCurrent?1:0.7}" stroke-width="${isCurrent?2:1}">
+ <title>${n[1]} — ${n[0]}.com</title>
+ </circle>
+ ${isCurrent ? `<circle cx="${x}" cy="${y}" r="${r+5}" fill="none" stroke="${COLOR[band]}" stroke-opacity="0.4" stroke-width="1"><animate attributeName="r" values="${r+5};${r+12};${r+5}" dur="2.4s" repeatCount="indefinite"/><animate attributeName="stroke-opacity" values="0.4;0;0.4" dur="2.4s" repeatCount="indefinite"/></circle>` : ''}
+ </g>`;
+ });
+ });
+ // append nodes after defs
+ svg.insertAdjacentHTML('beforeend', nodes);
+ svg.querySelectorAll('.mc-node').forEach(n => {
+ n.addEventListener('mouseenter', () => n.querySelector('circle').setAttribute('fill-opacity', '1'));
+ n.addEventListener('mouseleave', e => {
+ const isCurrent = n.dataset.slug === SLUG;
+ n.querySelector('circle').setAttribute('fill-opacity', isCurrent ? '1' : '0.55');
+ });
+ n.addEventListener('click', () => window.open('https://' + n.dataset.slug + '.com', '_blank'));
+ });
+})();
+</script>
+
+<script>
+const state = { q:'', facet:'all', page:1, pages:1, total:0, loading:false, exhausted:false };
+const LABELS = {"all":"All"};
+
+function escAttr(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&':'&','<':'<','>':'>','"':'"',"'":''' }[c])); }
+// Image-URL allowlist: only DW Shopify CDN + designerwallcoverings.com (defends against XSS via crafted products.json)
+function safeImg(u) { return /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(u || '') ? u : '/hero-bg.jpg'; }
+function cardHTML(p) {
+ const eager = state.page === 1;
+ return '<img loading="' + (eager ? 'eager' : 'lazy') + '"' + (eager ? ' fetchpriority="high"' : '') + ' src="' + escAttr(safeImg(p.image_url)) + '" alt="' + escAttr(p.title) + '">'
+ + '<div class="overlay">'
+ + '<div class="pat">' + escAttr(p.pattern_name || p.title) + '</div>'
+ + '<div class="ven">' + escAttr((p.vendor || '').replace(/-/g, ' ')) + '</div>'
+ + '<div class="actions">'
+ + '<button class="sample-btn" onclick="event.stopPropagation();dwmOpen(\'Sample\',' + JSON.stringify({sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}).replace(/"/g,'"') + ')">Sample</button>'
+ + '</div></div>';
+}
+
+async function loadFacets() {
+ let f;
+ try {
+ const r = await fetch('/api/facets');
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ f = await r.json();
+ } catch (e) { console.error('loadFacets failed:', e); return; }
+ const el = document.getElementById('facets');
+ for (const [k, v] of Object.entries(f.aesthetics).sort((a,b) => b[1] - a[1])) {
+ const b = document.createElement('button');
+ b.className = 'chip'; b.dataset.facet = k;
+ b.innerHTML = (LABELS[k] || k) + ' <span style="opacity:.55;font-weight:500;margin-left:4px">' + v + '</span>';
+ el.appendChild(b);
+ }
+ el.addEventListener('click', e => {
+ if (e.target.tagName !== 'BUTTON') return;
+ document.querySelectorAll('#facets button').forEach(b => b.classList.remove('active'));
+ e.target.classList.add('active');
+ state.facet = e.target.dataset.facet;
+ resetGrid();
+ });
+ document.getElementById('totalCount').textContent = f.total;
+ document.getElementById('footerStat').textContent = f.total + ' patterns · live archive';
+ // Footer aesthetic links
+ const footerEl = document.getElementById('footerFacets');
+ for (const [k] of Object.entries(f.aesthetics)) {
+ const b = document.createElement('button');
+ b.textContent = LABELS[k] || k;
+ b.onclick = () => { state.facet = k; resetGrid(); document.querySelectorAll('#facets button').forEach(x => x.classList.toggle('active', x.dataset.facet === k)); document.getElementById('shop').scrollIntoView({behavior:'smooth'}); };
+ footerEl.appendChild(b);
+ }
+}
+
+function resetGrid() {
+ state.page = 1; state.exhausted = false;
+ document.getElementById('grid').innerHTML = '';
+ document.getElementById('loading').textContent = 'Loading…';
+ loadGridPage();
+}
+
+async function loadGridPage() {
+ if (state.loading || state.exhausted) return;
+ state.loading = true;
+ const params = new URLSearchParams({ page:state.page, limit:24 });
+ if (state.q) params.set('q', state.q);
+ if (state.facet !== 'all') params.set('aesthetic', state.facet);
+ let data;
+ try {
+ const r = await fetch('/api/products?' + params);
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ data = await r.json();
+ } catch (e) {
+ console.error('loadGridPage failed:', e);
+ document.getElementById('loading').textContent = '— offline — refresh to retry —';
+ state.loading = false;
+ return;
+ }
+ state.total = data.total; state.pages = data.pages;
+
+ if (state.page === 1) {
+ document.getElementById('statLine').textContent = data.total + ' patterns · ' + (state.facet === 'all' ? 'all aesthetics' : (LABELS[state.facet] || state.facet)) + (state.q ? ' · matching "' + state.q + '"' : '');
+ }
+ const grid = document.getElementById('grid');
+ for (const p of data.items) {
+ const a = document.createElement('a');
+ a.className = 'card'; a.href = '#'; a.onclick = (e) => { e.preventDefault(); dwmOpen('Sample',{sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}); };
+ a.innerHTML = cardHTML(p);
+ grid.appendChild(a);
+ }
+ if (state.page >= state.pages || data.items.length === 0) {
+ state.exhausted = true;
+ document.getElementById('loading').textContent = state.total > 0 ? '— end of archive · ' + state.total + ' patterns —' : '';
+ } else state.page++;
+ state.loading = false;
+}
+
+const io = new IntersectionObserver(es => { for (const e of es) if (e.isIntersecting) loadGridPage(); }, { rootMargin:'600px 0px' });
+io.observe(document.getElementById('sentinel'));
+
+document.getElementById('searchInput').addEventListener('input', e => {
+ state.q = e.target.value.trim();
+ clearTimeout(window._t);
+ window._t = setTimeout(resetGrid, 220);
+});
+
+// Density slider
+const slider = document.getElementById('densitySlider');
+const dlabel = document.getElementById('densityLabel');
+function setDensity(n) {
+ document.documentElement.style.setProperty('--cols', n);
+ dlabel.textContent = n + ' cols';
+ try { localStorage.setItem('glit_theme_density', n); } catch(e){}
+}
+slider.addEventListener('input', e => setDensity(parseInt(e.target.value)));
+const savedDensity = parseInt(localStorage.getItem('glit_theme_density') || '6');
+if (savedDensity >= 4 && savedDensity <= 12) { slider.value = savedDensity; setDensity(savedDensity); }
+
+// Theme toggle
+const tb = document.getElementById('theme-toggle');
+function setTheme(t){ document.documentElement.dataset.theme = t; try { localStorage.setItem('glit_theme', t); } catch(e){} tb.textContent = t === 'dark' ? '☾' : '☀'; }
+setTheme(document.documentElement.dataset.theme || 'light');
+tb.addEventListener('click', () => setTheme(document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'));
+
+loadFacets();
+loadGridPage();
+</script>
+<!-- ============================================================
+ DW UNIVERSAL CONTACT MODULE — fashion-house UX
+ Inject before </body> in every DW-family sister site.
+ Self-contained: CSS + 4 modals + JS submission handlers.
+ Uses host site's CSS vars (--bg, --fg, --gold, --rule).
+ ============================================================ -->
+<style>
+ /* === MODAL BASE === */
+ .dwm{position:fixed;inset:0;background:rgba(0,0,0,0.78);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;overflow-y:auto}
+ .dwm.open{display:flex}
+ .dwm-box{background:var(--bg);border:1px solid var(--rule);max-width:520px;width:100%;padding:36px 32px;position:relative;max-height:90vh;overflow-y:auto;animation:dwm-in 0.25s ease}
+ @keyframes dwm-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
+ .dwm-box h3{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:400;font-size:32px;line-height:1.05;margin-bottom:6px;color:var(--fg);letter-spacing:-0.01em}
+ .dwm-box .sub{color:var(--muted);font-size:12px;letter-spacing:0.16em;text-transform:uppercase;margin-bottom:24px;font-weight:500}
+ .dwm-close{position:absolute;top:18px;right:18px;background:transparent;border:0;color:var(--muted);font-size:24px;cursor:pointer;width:32px;height:32px;line-height:1;padding:0}
+ .dwm-close:hover{color:var(--gold)}
+ .dwm-preview{display:flex;gap:14px;align-items:center;padding:12px;background:var(--bg-soft);margin-bottom:18px}
+ .dwm-preview img{width:64px;height:64px;object-fit:cover}
+ .dwm-preview .pn{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:15px;line-height:1.2;color:var(--fg)}
+ .dwm-preview .pc{font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
+ .dwm-field{margin-bottom:14px}
+ .dwm-field label{display:block;font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:500}
+ .dwm-field input,.dwm-field textarea,.dwm-field select{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;padding:8px 4px;font-size:14px;font-family:inherit;color:var(--fg);outline:none;transition:border-color 0.2s}
+ .dwm-field input:focus,.dwm-field textarea:focus{border-bottom-color:var(--gold)}
+ .dwm-field textarea{min-height:60px;resize:vertical}
+ .dwm-submit{background:transparent;color:var(--muted, #c9b89e);border:1px solid var(--muted, #c9b89e);padding:14px 28px;font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:700;cursor:pointer;width:100%;margin-top:8px;transition:background 0.15s, color 0.15s}
+ .dwm-submit:hover{background:var(--muted, #c9b89e);color:var(--bg, #000)}
+
+ .dwm-submit:disabled{opacity:0.5;cursor:default}
+ .dwm-status{margin-top:14px;font-size:11px;letter-spacing:0.16em;text-transform:uppercase;text-align:center;display:none}
+ .dwm-status.ok{color:var(--sage);display:block}
+ .dwm-status.err{color:#e08070;display:block}
+ /* contact-options */
+ .dwm-options{display:flex;flex-direction:column;gap:10px}
+ .dwm-option{display:flex;align-items:center;gap:14px;padding:18px 20px;background:transparent;border:1px solid var(--rule);color:var(--fg);font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:600;cursor:pointer;text-decoration:none;transition:all 0.2s;text-align:left;width:100%}
+ .dwm-option:hover{border-color:var(--gold);color:var(--gold)}
+ .dwm-option svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}
+ .dwm-option .lbl{flex:1;display:block}
+ .dwm-option .val{display:block;font-size:10px;letter-spacing:0.14em;text-transform:none;font-weight:500;opacity:0.65;margin-top:4px}
+
+/* graphics-loop pass 5: serif hero typography + nav legibility */
+.cinema h1, h1.headline { font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 500; letter-spacing: -0.01em }
+.h-link { font-size: 13px; letter-spacing: 0.06em }
+
+/* graphics-loop pass 11: Ideas rails */
+#ideas { padding: 56px 24px 24px; max-width:1600px; margin:0 auto }
+#ideas .rail-block { margin-bottom:48px }
+#ideas .rail-eyebrow { font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:var(--muted, #888); margin-bottom:8px }
+#ideas .rail-title { font-size:clamp(22px,2.6vw,32px); font-weight:500; letter-spacing:-0.01em; margin:0 0 18px; color:var(--ink,#fff) }
+#ideas .rail { display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; scrollbar-width:none }
+#ideas .rail::-webkit-scrollbar { display:none }
+#ideas .rail-card { flex:0 0 240px; scroll-snap-align:start; cursor:pointer; transition:transform 0.2s }
+#ideas .rail-card:hover { transform:translateY(-3px) }
+#ideas .rail-card img { width:100%; aspect-ratio:1; object-fit:cover; display:block; background:var(--card,#222) }
+#ideas .rail-card .rc-title { font-size:13px; font-weight:500; color:var(--paper,#fff); padding:8px 0 2px; line-height:1.3 }
+#ideas .rail-card .rc-meta { font-size:11px; color:var(--muted,#888); letter-spacing:0.06em }
+@media (max-width:720px) { #ideas .rail-card { flex:0 0 160px } }
+</style>
+
+<!-- Contact options modal -->
+<div class="dwm" id="dwmContact" onclick="if(event.target===this)dwmClose('Contact')">
+ <div class="dwm-box" style="max-width:440px">
+ <button class="dwm-close" onclick="dwmClose('Contact')" aria-label="Close">×</button>
+ <h3>Contact</h3>
+ <p class="sub" id="dwmContactSub">Three ways to reach us</p>
+ <div class="dwm-options">
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Inquiry')">
+ <svg viewBox="0 0 24 24"><path d="M4 4h16v12H7l-3 3z"/></svg>
+ <span class="lbl">Send an Inquiry<span class="val">Project name · scope · all the details</span></span>
+ </button>
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Sample')">
+ <svg viewBox="0 0 24 24"><rect x="4" y="6" width="16" height="14"/><path d="M4 10h16M9 6V3h6v3"/></svg>
+ <span class="lbl">Request a Sample<span class="val">Memo sample · ships free · 3–5 business days</span></span>
+ </button>
+ <a class="dwm-option" id="dwmContactEmailLink" href="mailto:info@glitterwalls.com">
+ <svg viewBox="0 0 24 24"><path d="M3 6h18v12H3z"/><path d="M3 6l9 7 9-7"/></svg>
+ <span class="lbl">Email Us<span class="val" id="dwmContactEmailLabel">info@glitterwalls.com</span></span>
+ </a>
+ </div>
+ </div>
+</div>
+
+<!-- Inquiry modal -->
+<div class="dwm" id="dwmInquiry" onclick="if(event.target===this)dwmClose('Inquiry')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Inquiry')" aria-label="Close">×</button>
+ <h3>Project Inquiry</h3>
+ <p class="sub">We'll respond within one business day</p>
+ <form id="dwmInquiryForm" onsubmit="return dwmSubmit(event,'inquiry')">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Phone</label><input type="tel" name="phone"></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Project Name</label><input type="text" name="projectName" required></div>
+ <div class="dwm-field"><label>Project Scope</label><textarea name="projectScope" placeholder="Square footage · room count · timeline" required></textarea></div>
+ <div class="dwm-field"><label>Additional Information</label><textarea name="message" placeholder="Patterns of interest, finish preferences, budget"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Inquiry</button>
+ <div class="dwm-status" id="dwmInquiryStatus"></div>
+ </form>
+ </div>
+</div>
+
+<!-- Sample-request modal -->
+<div class="dwm" id="dwmSample" onclick="if(event.target===this)dwmClose('Sample')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Sample')" aria-label="Close">×</button>
+ <h3>Request a Sample</h3>
+ <p class="sub">Memo sample · ships free · 3–5 business days</p>
+ <div class="dwm-preview" id="dwmSamplePreview" style="display:none">
+ <img id="dwmSampleImg" src="" alt="">
+ <div><div class="pn" id="dwmSampleName"></div><div class="pc" id="dwmSampleSku"></div></div>
+ </div>
+ <form id="dwmSampleForm" onsubmit="return dwmSubmit(event,'sample')">
+ <input type="hidden" name="sku" id="dwmSampleSkuInput">
+ <input type="hidden" name="title" id="dwmSampleTitleInput">
+ <input type="hidden" name="image_url" id="dwmSampleImageInput">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Shipping Address</label><input type="text" name="address" placeholder="Street" required></div>
+ <div class="dwm-field" style="display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px">
+ <input type="text" name="city" placeholder="City" required>
+ <input type="text" name="state" placeholder="State" required>
+ <input type="text" name="zip" placeholder="ZIP" required>
+ </div>
+ <div class="dwm-field"><label>Notes (optional)</label><textarea name="message" placeholder="Project, sq.ft., timing"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Sample Request</button>
+ <div class="dwm-status" id="dwmSampleStatus"></div>
+ </form>
+ </div>
+</div>
+
+<script>
+ // Universal modal control
+ function dwmOpen(name, opts){
+ document.getElementById('dwm' + name).classList.add('open');
+ document.body.style.overflow = 'hidden';
+ if (name === 'Sample' && opts) {
+ document.getElementById('dwmSamplePreview').style.display = 'flex';
+ document.getElementById('dwmSampleImg').src = opts.image_url || '';
+ document.getElementById('dwmSampleName').textContent = opts.title || '';
+ document.getElementById('dwmSampleSku').textContent = opts.sku || '';
+ document.getElementById('dwmSampleSkuInput').value = opts.sku || '';
+ document.getElementById('dwmSampleTitleInput').value = opts.title || '';
+ document.getElementById('dwmSampleImageInput').value = opts.image_url || '';
+ } else if (name === 'Sample') {
+ document.getElementById('dwmSamplePreview').style.display = 'none';
+ document.getElementById('dwmSampleSkuInput').value = '';
+ document.getElementById('dwmSampleTitleInput').value = '';
+ document.getElementById('dwmSampleImageInput').value = '';
+ }
+ }
+ function dwmClose(name){ document.getElementById('dwm'+name).classList.remove('open'); document.body.style.overflow=''; }
+
+ // Universal form submit — POSTs to /api/send-{kind}
+ async function dwmSubmit(e, kind) {
+ e.preventDefault();
+ const form = e.target;
+ const data = Object.fromEntries(new FormData(form).entries());
+ const btn = form.querySelector('.dwm-submit');
+ const status = form.querySelector('.dwm-status');
+ btn.disabled = true; const orig = btn.textContent; btn.textContent = 'Sending…';
+ status.className = 'dwm-status';
+ try {
+ const r = await fetch('/api/send-' + kind, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify(data) });
+ if (!r.ok) throw new Error('HTTP '+r.status);
+ const j = await r.json();
+ status.textContent = kind === 'sample' ? 'Sample request sent — ships within 3–5 business days' : 'Inquiry sent — we respond within 1 business day';
+ status.className = 'dwm-status ok';
+ btn.textContent = 'Sent ✓';
+ setTimeout(() => { dwmClose(kind === 'sample' ? 'Sample' : 'Inquiry'); btn.disabled = false; btn.textContent = orig; status.className = 'dwm-status'; form.reset(); }, 2800);
+ } catch (err) {
+ status.textContent = 'Send failed — please email info@designerwallcoverings.com';
+ status.className = 'dwm-status err';
+ btn.disabled = false; btn.textContent = orig;
+ }
+ return false;
+ }
+
+ // Wire up "Memo samples ship free" badge in hero to open sample modal directly
+ document.querySelectorAll('.hero .badge, [data-open-sample]').forEach(el => {
+ el.style.cursor = 'pointer';
+ el.addEventListener('click', () => dwmOpen('Sample'));
+ });
+
+ // Wire nav "Trade" link to inquiry modal
+ document.querySelectorAll('nav a[href*="designerwallcoverings.com"]').forEach(a => {
+ a.removeAttribute('target');
+ a.removeAttribute('href');
+ a.style.cursor = 'pointer';
+ a.addEventListener('click', e => { e.preventDefault(); dwmOpen('Contact'); });
+ });
+
+ // Override product card clicks — open Sample modal pre-filled instead of redirecting to DW
+ document.addEventListener('click', e => {
+ const card = e.target.closest('.card, .rail-card');
+ if (!card) return;
+ if (card.tagName === 'A' && (card.getAttribute('href') || '').startsWith('/sample/')) {
+ e.preventDefault();
+ const img = card.querySelector('img');
+ const pat = card.querySelector('.pat');
+ const sku = card.getAttribute('href').replace('/sample/', '');
+ dwmOpen('Sample', {
+ sku,
+ title: pat ? pat.textContent.trim() : '',
+ image_url: img ? img.src : ''
+ });
+ }
+ }, true);
+// DW STANDARD: hero pulls from products.json[0].image_url so dw-collections-viewer
+// drag-drop / hero-pin updates the live front page on next deploy.
+// Always upgrades to the largest Shopify variant (strips _NxN size suffix) so
+// the full-page hero stays sharp.
+// DW STANDARD: hero rotates through top-20 NEWEST products on each visit
+// (novasuede.com pattern). Fetches /api/products?limit=100, sorts by created_at desc,
+// takes the freshest 20, picks one per visit via localStorage counter.
+// Falls back to static /hero-bg.jpg on any error.
+(async function rotateHero() {
+ try {
+ const r = await fetch('/api/products?limit=100');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || [])
+ .filter(p => p && p.image_url && /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(p.image_url))
+ .sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')))
+ .slice(0, 20);
+ if (!items.length) return;
+ let visits = 0;
+ try {
+ visits = parseInt(localStorage.getItem('hero_visits') || '0', 10) || 0;
+ localStorage.setItem('hero_visits', String(visits + 1));
+ } catch(e) {}
+ const pick = items[visits % items.length];
+ // Strip _NxN size suffix to get the largest CDN variant
+ const url = pick.image_url.replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ const bg = document.getElementById('heroBg') || document.getElementById('cinemaBg');
+ if (bg) bg.style.backgroundImage = "url('" + url + "')";
+ } catch (e) {}
+})();
+
+
+// DW STANDARD sort-select wire-up (added by fleet patcher)
+(function(){
+ const sortSel = document.getElementById('sortSelect');
+ if (!sortSel) return;
+ const KEY = location.hostname.replace(/\./g, '_') + '_sort';
+ const saved = localStorage.getItem(KEY);
+ if (saved) { try { sortSel.value = saved; } catch(e){} }
+ if (typeof state !== 'undefined') state.sort = sortSel.value;
+ sortSel.addEventListener('change', e => {
+ const v = e.target.value;
+ try { localStorage.setItem(KEY, v); } catch(e){}
+ if (typeof state !== 'undefined') state.sort = v;
+ if (typeof resetGrid === 'function') resetGrid();
+ else location.reload();
+ });
+})();
+
+// graphics-loop pass 11: hydrate Ideas rails from /api/products
+(async function hydrateIdeas() {
+ try {
+ const r = await fetch('/api/products?limit=80');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || []).filter(p => p && p.image_url);
+ if (!items.length) return;
+ const sorted = [...items].sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')));
+ const newest = sorted.slice(0, 12);
+ // Curated = deterministic offset slice (every 5th item starting at idx 3) for variety
+ const curated = items.filter((_, i) => i % 5 === 3).slice(0, 12);
+ function card(p) {
+ const url = (p.image_url || '').replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ return '<a class="rail-card" href="/sample/' + encodeURIComponent(p.handle || p.sku) + '">' +
+ '<img src="' + url + '" alt="' + (p.title || '').replace(/"/g, '"') + '" loading="lazy">' +
+ '<div class="rc-title">' + ((p.title || '').split('|')[0] || '').trim() + '</div>' +
+ '<div class="rc-meta">' + (p.vendor || '') + '</div>' +
+ '</a>';
+ }
+ const r1 = document.getElementById('railNewest');
+ const r2 = document.getElementById('railCurated');
+ if (r1) r1.innerHTML = newest.map(card).join('');
+ if (r2) r2.innerHTML = curated.map(card).join('');
+ } catch(e) {}
+})();
+</script>
+
+</body>
+</html>
diff --git a/public/index.html.bak.nspropagate.1778226888790 b/public/index.html.bak.nspropagate.1778226888790
new file mode 100644
index 0000000..3678b68
--- /dev/null
+++ b/public/index.html.bak.nspropagate.1778226888790
@@ -0,0 +1,973 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-RK1X75MQ68"></script>
+<script>
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'G-RK1X75MQ68');
+</script>
+
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>Casa Rossa — The romance of glitter.</title>
+<meta name="description" content="Casa Rossa is a curated atelier dedicated entirely to glitter. We do one thing — and we do it carefully.">
+<meta name="theme-color" content="#FFF">
+<link rel="canonical" href="https://glitterwalls.com/">
+<link href="https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,500;1,400&family=Inter:wght@300;400;500;700&display=swap" rel="stylesheet">
+<link rel="preload" as="image" href="/hero-bg.jpg" fetchpriority="high">
+<script type="application/ld+json">
+{
+ "@context": "https://schema.org",
+ "@type": "Organization",
+ "name": "Casa Rossa",
+ "url": "https://glitterwalls.com/",
+ "email": "info@glitterwalls.com"
+}
+</script>
+<script src="/zd-loader.js" defer></script>
+<style>
+:root {
+ --bg: #FFF;
+ --paper: #000;
+ --muted: #8B7866;
+ --line: #000;
+ --accent: #D70000;
+ --bg-soft: #000;
+ --cols: 6;
+}
+html[data-theme="dark"] {
+ --bg: #000;
+ --paper: #FFF;
+ --muted: #C9B89E;
+ --line: rgba(255,254,250,0.12);
+ --accent: #D70000;
+ --bg-soft: #2a1f15;
+}
+* { margin:0; padding:0; box-sizing:border-box }
+html { scroll-behavior:smooth }
+body { font-family:'Inter', sans-serif; color:var(--paper); -webkit-font-smoothing:antialiased; background:var(--bg); min-height:100vh; overflow-x:hidden }
+/* DW-FASHION-TEMPLATE-OVERRIDE */
+.section-title .accent, .footer-brand, .center-mark, h1, h2, h3 { font-family: 'Monoton', 'Impact', sans-serif !important; font-weight:500 !important; }
+
+/* ===== Auto-hide header ===== */
+header { position:fixed; top:0; left:0; right:0; display:flex; justify-content:space-between; align-items:center; padding:22px 32px; z-index:100; background:rgba(0,0,0,0.55); backdrop-filter:blur(10px); border-bottom:1px solid var(--line); transition:transform .3s }
+.h-link { display:flex; align-items:center; gap:10px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); text-decoration:none; cursor:pointer; background:transparent; border:0 }
+.h-link:hover { opacity:0.7 }
+.h-icon { width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.5 }
+
+/* ===== Cinema hero ===== */
+.cinema { position:relative; height:100vh; width:100%; overflow:hidden }
+.cinema-bg { position:absolute; inset:0; background-size:cover; background-position:center; background-image:url('/hero-bg.jpg') }
+.cinema-bg::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0.35) 0%, rgba(0,0,0,0) 30%, rgba(0,0,0,0) 60%, rgba(0,0,0,0.75) 100%) }
+.corner-mark { position:absolute; top:24px; left:32px; font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,0.55), 0 0 1px rgba(0,0,0,0.4); z-index:5 }
+.corner-mark::before { content:"◆ "; margin-right:6px }
+.center-mark { position:absolute; top:clamp(80px,12vh,140px); left:50%; transform:translateX(-50%); font-size:clamp(28px,4vw,56px); font-weight:500; letter-spacing:0.18em; text-transform:uppercase; text-align:center; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,0.65), 0 0 1px rgba(0,0,0,0.5); z-index:5 }
+.center-mark .tm { font-size:14px; vertical-align:super; opacity:0.7; margin-left:0.2em }
+.center-mark .sub { display:block; font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400; font-size:0.4em; letter-spacing:0.04em; text-transform:none; margin-top:14px; opacity:0.85 }
+.meta-line { position:absolute; bottom:32px; left:32px; font-size:10px; letter-spacing:0.28em; text-transform:uppercase; font-weight:700; color:#fff; z-index:5; opacity:0.85 }
+.meta-line .num { font-size:12px; display:block; margin-top:4px; letter-spacing:0.05em }
+.enter { position:absolute; bottom:32px; right:32px; display:flex; align-items:center; gap:14px; font-size:11px; letter-spacing:0.36em; text-transform:uppercase; font-weight:700; color:#fff; text-decoration:none; padding-bottom:6px; border-bottom:1px solid #fff; transition:gap 0.25s; z-index:5 }
+.enter:hover { gap:22px }
+.enter svg { width:24px; height:12px }
+
+/* ===== Section ===== */
+.section { padding:96px 32px }
+.section-header { display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:24px; margin-bottom:32px; padding-bottom:24px; border-bottom:1px solid var(--line) }
+.section-title { font-size:clamp(36px,5vw,64px); font-weight:300; letter-spacing:-0.02em; line-height:1 }
+.section-title .accent { color: var(--accent); font-family:'Playfair Display', Georgia, serif; font-style:italic; font-weight:400 }
+.section-eyebrow { font-size:10px; letter-spacing:0.4em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:16px }
+.section-meta { font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:600; color:var(--muted); text-align:right; line-height:1.6 }
+
+/* ===== Filter bar ===== */
+.filters { display:flex; gap:8px; align-items:center; margin-bottom:18px; flex-wrap:wrap }
+.chip { padding:8px 16px; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; color:var(--paper); background:transparent; border:1px solid var(--line); cursor:pointer; transition:all 0.2s; font-family:inherit }
+.chip:hover { border-color:var(--paper) }
+.chip.active { background:var(--paper); color:var(--bg); border-color:var(--paper) }
+.search { flex:0 1 280px; margin-left:auto; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); padding:6px 0 }
+.search input { flex:1; background:transparent; border:0; color:var(--paper); font-family:inherit; font-size:13px; outline:none; letter-spacing:0.04em }
+.search input::placeholder { color:var(--muted) }
+.search svg { width:16px; height:16px; stroke:var(--muted); fill:none; stroke-width:1.5 }
+
+/* ===== Grid-density slider ===== */
+.density { display:flex; align-items:center; gap:14px; padding:6px 0; margin-bottom:24px }
+.density label { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--muted) }
+.density input[type=range] { flex:1; max-width:240px; -webkit-appearance:none; appearance:none; height:1px; background:var(--line); outline:none }
+.density input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50% }
+.density input[type=range]::-moz-range-thumb { width:14px; height:14px; background:var(--accent); cursor:pointer; border-radius:50%; border:0 }
+.density .ct { font-size:11px; color:var(--muted); letter-spacing:0.18em; text-transform:uppercase; font-weight:600; min-width:80px }
+
+/* ===== Stats line ===== */
+.stat-line { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:600; color:var(--muted); margin-bottom:24px }
+
+/* ===== Product grid (novasuede pattern: flush grid + slide-up overlay) ===== */
+.grid { display:grid; grid-template-columns:repeat(var(--cols), 1fr); gap:0 }
+.card { position:relative; aspect-ratio:1/1.15; cursor:pointer; overflow:hidden; border:1px solid var(--bg); transition:transform 0.4s cubic-bezier(0.2,0.8,0.2,1); background:var(--bg-soft) }
+.card:hover { transform:scale(1.04); z-index:5 }
+.card img { width:100%; height:100%; object-fit:cover; display:block; transition:transform 0.4s ease }
+.card .overlay { position:absolute; left:0; right:0; bottom:0; padding:20px 16px 14px; background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.85) 100%); transform:translateY(48%); opacity:0.85; transition:transform 0.3s ease, opacity 0.3s ease }
+.card:hover .overlay { transform:translateY(0); opacity:1 }
+.card .pat { font-size:13px; font-weight:600; letter-spacing:0.02em; color:#fff; line-height:1.25; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
+.card .ven { font-size:9px; letter-spacing:0.18em; text-transform:uppercase; color:#fff; opacity:0.7; font-weight:500; margin-top:4px }
+.card .actions { margin-top:10px; display:flex; gap:6px }
+.card .sample-btn { flex:1; padding:7px 10px; background:#fff; color:#000; font-family:inherit; font-size:10px; letter-spacing:0.22em; text-transform:uppercase; font-weight:700; border:0; cursor:pointer; text-align:center; transition:all 0.2s }
+.card .sample-btn:hover { background:var(--accent); color:#fff }
+
+@media (max-width:1024px) { .grid { grid-template-columns:repeat(min(var(--cols), 4), 1fr) } }
+@media (max-width:720px) { .grid { grid-template-columns:repeat(2, 1fr) } .density { display:none } }
+
+.sentinel { height:1px }
+.loading { text-align:center; color:var(--muted); padding:32px; font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700 }
+
+/* ===== Footer ===== */
+footer { padding:64px 32px 32px; border-top:1px solid var(--line); margin-top:32px }
+.footer-grid { max-width:1400px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:48px; margin-bottom:48px }
+.footer-brand { font-size:24px; font-weight:300; letter-spacing:0.32em; text-transform:uppercase; margin-bottom:12px }
+.footer-text { font-size:13px; line-height:1.6; color:var(--muted); max-width:380px }
+.footer-col h4 { font-size:10px; letter-spacing:0.32em; text-transform:uppercase; font-weight:700; color:var(--paper); margin-bottom:18px }
+.footer-col a { display:block; font-size:13px; color:var(--muted); text-decoration:none; margin-bottom:8px; transition:color 0.2s; cursor:pointer; background:transparent; border:0; font-family:inherit; padding:0; text-align:left }
+.footer-col a:hover { color:var(--accent) }
+.footer-bottom { max-width:1400px; margin:0 auto; padding-top:24px; border-top:1px solid var(--line); display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--muted) }
+
+@media (max-width:720px) {
+ .corner-mark, .meta-line, .enter { font-size:10px }
+ .center-mark { font-size:24px; letter-spacing:0.12em; top:clamp(60px,9vh,90px) }
+ .section, footer { padding-left:20px; padding-right:20px }
+ .footer-grid { grid-template-columns:1fr; gap:32px }
+ .search { margin-left:0; flex:1 1 100% }
+}
+
+.theme-toggle { background:transparent; border:1px solid var(--line); width:32px; height:32px; cursor:pointer; color:var(--paper); display:inline-flex; align-items:center; justify-content:center; font-size:14px; line-height:1; transition:all .15s; padding:0 }
+.theme-toggle:hover { border-color:var(--accent); color:var(--accent) }
+
+/* ===== WCAG 2.4.7 — keyboard focus indicators ===== */
+/* Strictly :focus-visible so mouse clicks do NOT show the ring */
+a:focus-visible,
+button:focus-visible,
+input:focus-visible,
+select:focus-visible,
+textarea:focus-visible,
+[tabindex]:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+}
+</style>
+<script>
+(function(){ try { var t = localStorage.getItem('glit_theme') || 'light'; document.documentElement.dataset.theme = t; } catch(e){} })();
+</script>
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Monoton&display=swap">
+
+<meta property="og:type" content="website">
+<meta property="og:url" content="https://glitterwalls.com/">
+<meta property="og:title" content="Glitter Walls">
+<meta property="og:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta property="og:image" content="https://glitterwalls.com/hero-bg.jpg">
+<meta property="og:site_name" content="Glitter Walls">
+<meta property="article:publisher" content="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings">
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:title" content="Glitter Walls">
+<meta name="twitter:description" content="Glitter Walls — Sparkle, sequin & holographic glam wallcoverings.">
+<meta name="twitter:image" content="https://glitterwalls.com/hero-bg.jpg">
+<!-- graphics-loop pass 13: footer + fb -->
+</head>
+<body>
+<style id="ns-header-modal-styles">
+ .ns-header { position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; padding: 18px 36px; background: rgba(10,10,10,0.92) !important; backdrop-filter: blur(8px); border-bottom: 1px solid rgba(245,241,232,0.06); }
+ .ns-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; }
+ .ns-dot { width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #a98b5b 0%, #5d4c32 60%, #332a1b 100%); box-shadow: 0 0 0 1px rgba(245,241,232,0.10), 0 2px 12px rgba(180,90,60,0.30); flex-shrink: 0; }
+ .ns-name { font-family: -apple-system, "SF Pro Display", "Helvetica Neue", system-ui, sans-serif; font-size: 18px !important; font-weight: 300 !important; letter-spacing: 0.02em !important; color: #f5f1e8 !important; text-transform: none !important; margin: 0 !important; }
+ .ns-name sup { font-size: 0.55em; font-weight: 300; margin-left: 1px; }
+ .ns-nav { display: flex; gap: 32px; align-items: center; list-style: none; padding: 0; margin: 0; }
+ .ns-nav a, .ns-nav button { font-family: -apple-system, "SF Pro Text", system-ui, sans-serif; font-size: 15px !important; font-weight: 400 !important; color: #f5f1e8 !important; text-decoration: none !important; background: none !important; border: 0 !important; cursor: pointer; padding: 0 !important; transition: color 200ms; letter-spacing: 0 !important; text-transform: none !important; }
+ .ns-nav a:hover, .ns-nav button:hover { color: #ffffff !important; }
+ @media (max-width: 820px) { .ns-header { padding: 14px 18px; } .ns-nav { gap: 16px; } .ns-nav a, .ns-nav button { font-size: 13px !important; } }
+ @media (max-width: 760px) {
+ .ns-header { flex-wrap: wrap; }
+ .ns-nav { display: none !important; flex-basis: 100%; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0 4px; }
+ .ns-nav.open { display: flex !important; }
+ .ns-nav a, .ns-nav button { padding: 10px 0 !important; border-bottom: 1px solid rgba(245,241,232,0.08); width: 100%; text-align: left; }
+ .ns-nav a:nth-child(n+5), .ns-nav button:nth-child(n+5) { display: block !important; }
+ .ns-header .mobile-toggle { display: flex !important; }
+ }
+ @media (min-width: 761px) {
+ .ns-header .mobile-toggle { display: none !important; }
+ }
+ .ns-modal { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.78); z-index: 200; align-items: center; justify-content: center; padding: 24px; backdrop-filter: blur(6px); }
+ .ns-modal.show { display: flex; }
+ .ns-modal-card { max-width: 460px; width: 100%; background: #141414 !important; border: 1px solid rgba(245,241,232,0.14); border-radius: 6px; padding: 28px 30px 30px; position: relative; }
+ .ns-modal-card .close-x { position: absolute; top: 12px; right: 14px; width: 30px; height: 30px; background: none; border: 1px solid rgba(245,241,232,0.18); color: rgba(245,241,232,0.6) !important; border-radius: 50%; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; }
+ .ns-modal-card .close-x:hover { color: #ffffff !important; border-color: #ffffff; }
+ .ns-modal-card h3 { font-family: -apple-system, "SF Pro Display", system-ui; font-weight: 300 !important; font-size: 22px !important; margin: 0 0 6px !important; color: #f5f1e8 !important; }
+ .ns-modal-card .sub { color: rgba(245,241,232,0.65) !important; font-size: 13px; margin: 0 0 22px; }
+ .ns-actions { display: flex; flex-direction: column; gap: 10px; }
+ .ns-action { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: rgba(245,241,232,0.04) !important; border: 1px solid rgba(245,241,232,0.12) !important; color: #f5f1e8 !important; text-decoration: none !important; cursor: pointer; transition: all 200ms; font: inherit; text-align: left; }
+ .ns-action:hover { background: rgba(245,241,232,0.08) !important; border-color: #d4b683 !important; }
+ .ns-action .ico { width: 32px; height: 32px; border-radius: 50%; background: rgba(212,182,131,0.12); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }
+ .ns-action .txt { flex: 1; }
+ .ns-action .txt b { display: block; font-weight: 500; font-size: 14px; color: #f5f1e8 !important; }
+ .ns-action .txt span { font-size: 12px; color: rgba(245,241,232,0.55) !important; }
+
+ /* ─── FINAL CONTRAST PASS — kill remaining gold-solid + white-island defects ─── */
+ /* Replace all gold-fill accents with off-white (Gucci-aesthetic, no DW gold solids) */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active,
+ .drapery-btn, .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover,
+ .drapery-btn:hover, .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ /* Gold accents stay only as edge color (links, glyphs) — not fills */
+ a { color: #d4b683; }
+ a:hover { color: #f5d97a; }
+ /* Authorized-dealer footer line — small caps tracked, muted ink, no gold pill */
+ .authorized, .authorized-dealer p {
+ background: transparent !important;
+ color: rgba(245,241,232,0.5) !important;
+ font-size: 10px !important;
+ letter-spacing: 0.22em !important;
+ text-transform: uppercase !important;
+ padding: 0 !important;
+ border: none !important;
+ margin-top: 14px !important;
+ }
+ /* Kill any straggler white bg in info-card / sample-related cards */
+ .info-card, .info-card-link, .care-highlight, .feature-card, .spec-item {
+ background-color: rgba(245,241,232,0.04) !important;
+ border-color: rgba(245,241,232,0.12) !important;
+ }
+ /* Ensure modal content stays readable — Steve's earlier sweep made it #141414 with white text */
+ .modal-content { background: #141414 !important; color: #f5f1e8 !important; }
+ .modal-content * { color: #f5f1e8 !important; }
+ .modal-content input, .modal-content textarea, .modal-content select {
+ background: rgba(245,241,232,0.05) !important;
+ color: #f5f1e8 !important;
+ border-color: rgba(245,241,232,0.2) !important;
+ }
+ .modal-content label { color: rgba(245,241,232,0.6) !important; }
+ /* Force the wide-tracked NOVASUEDE wordmark to stay white */
+ .ns-wordmark, .ns-wordmark sup { color: #f5f1e8 !important; }
+
+ /* ─── Modal-internal contrast (post-QA defects) ─── */
+ /* Backdrop covers full viewport */
+ .modal { width: 100vw !important; height: 100vh !important; left: 0 !important; top: 0 !important; background: rgba(0, 0, 0, 0.78) !important; backdrop-filter: blur(6px); }
+ /* Chip — flip from white-on-white island to dark card */
+ .request-chip {
+ background: rgba(245, 241, 232, 0.06) !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.18) !important;
+ border-radius: 4px !important;
+ }
+ .request-chip * { color: #f5f1e8 !important; }
+ .request-chip .chip-swatch {
+ /* swatch dot ALWAYS displays the inline-style hex from JS — fight any sweep */
+ border: 1px solid rgba(0, 0, 0, 0.4) !important;
+ }
+ /* + Add to request — hairline white-border on transparent (no gold) */
+ .add-to-request-btn {
+ background: transparent !important;
+ color: #f5f1e8 !important;
+ border: 1px solid rgba(245, 241, 232, 0.6) !important;
+ border-radius: 0 !important;
+ padding: 12px 22px !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 400 !important;
+ }
+ .add-to-request-btn:hover {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ /* Hex caption visible */
+ .preview-hex, #colorPreviewHex {
+ display: block !important;
+ color: rgba(245, 241, 232, 0.55) !important;
+ font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
+ font-size: 11px !important;
+ margin-top: 4px !important;
+ letter-spacing: 0.04em !important;
+ text-transform: lowercase !important;
+ }
+ /* Color preview name — stays single, prominent */
+ #colorPreviewName {
+ color: #f5f1e8 !important;
+ font-size: 11px !important;
+ letter-spacing: 0.32em !important;
+ text-transform: uppercase !important;
+ font-weight: 500 !important;
+ display: block !important;
+ margin-top: 12px !important;
+ }
+
+ /* ─── Mobile hamburger nav (replaces the overflow at <760px) ─── */
+ @media (max-width: 760px) {
+ header .nav-container { flex-wrap: wrap; }
+ header nav { display: none; flex-basis: 100%; flex-direction: column; gap: 6px; padding: 16px 0 6px; }
+ header nav.open { display: flex; }
+ header nav a { padding: 10px 0; border-bottom: 1px solid rgba(245,241,232,0.1); }
+ header .mobile-toggle {
+ display: flex !important;
+ flex-direction: column;
+ gap: 5px;
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+ padding: 8px;
+ }
+ header .mobile-toggle span {
+ width: 22px; height: 1.5px;
+ background: #f5f1e8;
+ display: block;
+ }
+ }
+ @media (min-width: 761px) {
+ header .mobile-toggle { display: none !important; }
+ }
+
+ </style>
+<style id="ns-gold-kill">
+ /* novasuede: kill gold-solid fills, off-white instead. Edge color stays gold. */
+ .new-badge, .new-arrivals-pill,
+ .color-filter-btn.active, .drapery-btn,
+ .sample-btn-chip, .cb-cta {
+ background: #f5f1e8 !important;
+ color: #0a0a0a !important;
+ border-color: #f5f1e8 !important;
+ }
+ .new-badge:hover, .new-arrivals-pill:hover,
+ .color-filter-btn.active:hover, .drapery-btn:hover,
+ .sample-btn-chip:hover, .cb-cta:hover {
+ background: #fff !important;
+ color: #0a0a0a !important;
+ }
+ </style>
+<header class="ns-header">
+ <a href="/" class="ns-brand" aria-label="Home">
+ <span class="ns-dot"></span>
+ <span class="ns-name">Casa Rossa</span>
+ </a>
+ <nav class="ns-nav" id="nsPrimaryNav" aria-label="Primary">
+ <a href="/">Home</a>
+ <a href="/about">About</a>
+ <button type="button" onclick="nsContactOpen()">Contact</button>
+ </nav>
+ <button type="button" class="mobile-toggle" aria-label="Toggle menu" aria-controls="nsPrimaryNav" aria-expanded="false" onclick="nsToggleNav(this)">
+ <span></span><span></span><span></span>
+ </button>
+ </header>
+
+<div class="ns-modal" id="nsContactModal" role="dialog" aria-modal="true" aria-labelledby="nsContactTitle" onclick="if(event.target===this)nsContactClose()">
+ <div class="ns-modal-card">
+ <button type="button" class="close-x" onclick="nsContactClose()" aria-label="Close">×</button>
+ <h3 id="nsContactTitle">How can we help?</h3>
+ <p class="sub">Trade-account replies within one business day.</p>
+ <div class="ns-actions">
+ <a class="ns-action" href="#contact" onclick="nsContactClose()"><span class="ico">📋</span><div class="txt"><b>Get a Quote</b><span>Project specs → priced estimate</span></div></a>
+ <a class="ns-action" href="#contact" onclick="nsContactClose();openModal();"><span class="ico">📦</span><div class="txt"><b>Order a Sample</b><span>Free swatch to your shop</span></div></a>
+ <a class="ns-action" href="mailto:info@glitterwalls.com?subject=Casa%20Rossa%20inquiry"><span class="ico">✉️</span><div class="txt"><b>Email Us</b><span>info@glitterwalls.com</span></div></a>
+ <a class="ns-action" href="tel:888-373-4564"><span class="ico">📞</span><div class="txt"><b>Call Us</b><span>(888) 373-4564 · M–F, 9–5 PT</span></div></a>
+ </div>
+ </div>
+ </div>
+<script>
+ function nsContactOpen() { var m = document.getElementById('nsContactModal'); if (m) m.classList.add('show'); }
+ function nsContactClose() { var m = document.getElementById('nsContactModal'); if (m) m.classList.remove('show'); }
+ function nsToggleNav(btn) {
+ var nav = document.getElementById('nsPrimaryNav');
+ if (!nav) return;
+ var open = nav.classList.toggle('open');
+ btn.setAttribute('aria-expanded', open ? 'true' : 'false');
+ }
+ document.addEventListener('keydown', function(e){ if (e.key === 'Escape') nsContactClose(); });
+</script>
+
+
+
+
+
+
+
+
+
+<header>
+ <button class="h-link" onclick="dwmOpen('Contact')" aria-label="Contact"><svg class="h-icon" viewBox="0 0 24 24"><path d="M3 7h18M3 12h18M3 17h18"/></svg><span>Contact</span></button>
+ <button class="theme-toggle" id="theme-toggle" aria-label="Theme toggle">☾</button>
+</header>
+
+<section class="cinema">
+ <div class="cinema-bg" id="heroBg"></div>
+ <div class="corner-mark">Sparkle & Glam</div>
+ <div class="center-mark">Glitter Walls</div>
+ <div class="meta-line">Glitter · Sequin · Holographic · Glam<span class="num" id="heroNum"></span></div>
+ <a class="enter" href="#shop">Enter <svg viewBox="0 0 24 12" fill="none" stroke="currentColor" stroke-width="1.4"><path d="M0 6h22M16 1l6 5-6 5"/></svg></a>
+</section>
+
+
+<section class="section" id="ideas">
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">New this week</h2>
+ <div class="rail" id="railNewest"></div>
+ </div>
+ <div class="rail-block">
+ <div class="rail-eyebrow">Ideas</div>
+ <h2 class="rail-title">Curated picks</h2>
+ <div class="rail" id="railCurated"></div>
+ </div>
+</section>
+
+<section class="section" id="shop">
+ <div class="section-header">
+ <div>
+ <div class="section-eyebrow">The Collection</div>
+ <h2 class="section-title"><span class="accent" id="totalCount">—</span> Patterns.</h2>
+ </div>
+ <div class="section-meta">Glitter · Sequin · Holographic · Glam</div>
+ </div>
+
+ <div class="filters" id="facets">
+ <button class="chip active" data-facet="all">All</button>
+ </div>
+
+ <div class="density">
+ <label>Sort</label>
+ <select id="sortSelect" aria-label="Sort products" style="background:transparent;color:inherit;border:1px solid var(--line,rgba(255,255,255,.2));font:inherit;font-size:11px;letter-spacing:.10em;text-transform:uppercase;padding:4px 8px;cursor:pointer;outline:none;margin-right:14px">
+ <option value="newest">Newest</option>
+ <option value="color">Color</option>
+ <option value="style">Style</option>
+ <option value="sku">SKU A→Z</option>
+ <option value="title">Title A→Z</option>
+ <option value="price-asc">Price ↑</option>
+ <option value="price-desc">Price ↓</option>
+ </select>
+ <label>Grid</label>
+ <input type="range" id="densitySlider" min="4" max="12" step="1" value="6" aria-label="Grid columns">
+ <span class="ct" id="densityLabel">6 cols</span>
+ <div class="search">
+ <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><path d="M21 21l-5.5-5.5"/></svg>
+ <input type="text" id="searchInput" placeholder="Search by pattern, color…" autocomplete="off">
+ </div>
+ </div>
+
+ <div class="stat-line" id="statLine">Loading…</div>
+ <div class="grid" id="grid"></div>
+ <div class="loading" id="loading">Loading more…</div>
+ <div class="sentinel" id="sentinel"></div>
+</section>
+
+<footer>
+ <div class="footer-grid">
+ <div>
+ <div class="footer-brand">Casa Rossa</div>
+ <p class="footer-text">Casa Rossa — real samples ship free.</p>
+ <p class="footer-text" style="margin-top:14px;font-size:11px;letter-spacing:0.18em;text-transform:uppercase;font-weight:600;color:var(--paper);opacity:0.7"><a href="/about" style="color:inherit;text-decoration:none;border-bottom:1px solid var(--accent)">About →</a></p>
+ </div>
+ <div class="footer-col">
+ <h4>Aesthetic</h4>
+ <div id="footerFacets"></div>
+ </div>
+ <div class="footer-col">
+ <h4>Trade</h4>
+ <button onclick="dwmOpen('Inquiry')">Project Inquiry</button>
+ <button onclick="dwmOpen('Sample')">Request Sample</button>
+ <button onclick="dwmOpen('Contact')">Contact</button>
+ </div>
+
+ <div class="footer-col">
+ <h4>Social</h4>
+ <a class="fb-link" href="https://www.facebook.com/SteveAbramsDesigns.DesignerWallcoverings" target="_blank" rel="noopener">Facebook</a>
+ </div>
+ </div>
+ <div class="footer-bottom">
+ <span>glitterwalls.com · Casa Rossa</span>
+ <span><a href="mailto:info@glitterwalls.com" style="color:var(--paper);text-decoration:none;border-bottom:1px solid var(--accent);padding-bottom:1px">info@glitterwalls.com</a></span>
+ <span id="footerStat"></span>
+ </div>
+</footer>
+
+<script>
+// mini-constellation — 43 niche-stars, current site highlighted in gold
+(function(){
+ const SLUG = "glitterwalls";
+ const NICHES = [
+ ['silkwallpaper','Silk','mat'],['silkwallcoverings','Silk W/C','mat'],['linenwallpaper','Linen','mat'],
+ ['jutewallpaper','Jute','mat'],['raffiawallcoverings','Raffia W/C','mat'],['raffiawalls','Raffia Walls','mat'],
+ ['corkwallcovering','Cork','mat'],['fabricwallpaper','Fabric','mat'],['textilewallpaper','Textile','mat'],
+ ['metallicwallpaper','Metallic','mat'],['silverleafwallpaper','Silver Leaf','mat'],['vinylwallpaper','Vinyl','mat'],
+ ['micawallpaper','Mica','mat'],['madagascarwallpaper','Madagascar','mat'],['mylarwallpaper','Mylar','mat'],
+ ['suedewallpaper','Suede','mat'],
+ ['1800swallpaper','1800s','dec'],['1890swallpaper','1890s','dec'],['1900swallpaper','1900s','dec'],
+ ['1920swallpaper','1920s','dec'],['1930swallpaper','1930s','dec'],['1940swallpaper','1940s','dec'],
+ ['1950swallpaper','1950s','dec'],['1960swallpaper','1960s','dec'],['1970swallpaper','1970s','dec'],
+ ['1980swallpaper','1980s','dec'],['retrowalls','Retro','dec'],['wallpapersback','W. Back','dec'],
+ ['agedwallpaper','Aged','cra'],['handcraftedwallpaper','Handcrafted','cra'],['museumwallpaper','Museum','cra'],
+ ['restorationwallpaper','Restoration','cra'],['pastelwallpaper','Pastel','cra'],['glitterwalls','Glitter','cra'],
+ ['greenwallcoverings','Green','cra'],['naturalwallcoverings','Natural','cra'],['saloonwallpaper','Saloon','cra'],
+ ['contractwallpaper','Contract','use'],['hotelwallcoverings','Hotel','use'],['hospitalitywallpaper','Hospitality','use'],
+ ['healthcarewallpaper','Healthcare','use'],['restaurantwallpaper','Restaurant','use'],['architecturalwallcoverings','Architectural','use']
+ ];
+ const COLOR = { mat:'#c9b687', dec:'#b86a4a', cra:'#6b8e6f', use:'#4a6b8e' };
+ const W = 1080, H = 200, BANDS = ['mat','dec','cra','use'];
+ const groups = { mat:[], dec:[], cra:[], use:[] };
+ for (const n of NICHES) groups[n[2]].push(n);
+ const svg = document.getElementById('miniConst');
+ if (!svg) return;
+ const bandW = W / BANDS.length;
+ let nodes = '';
+ BANDS.forEach((band, bi) => {
+ const list = groups[band];
+ const cx = bi * bandW + bandW / 2;
+ list.forEach((n, i) => {
+ const t = list.length === 1 ? 0.5 : i / (list.length - 1);
+ // deterministic jitter per slug
+ let h = 0; for (let k = 0; k < n[0].length; k++) h = (h * 31 + n[0].charCodeAt(k)) | 0;
+ const jx = ((h & 0xff) / 255 - 0.5) * (bandW * 0.5);
+ const jy = (((h >> 8) & 0xff) / 255 - 0.5) * 6; // tightened from 14 → 6 to prevent same-band collisions (16 mat nodes / 144px = 9px spacing)
+ const x = cx + jx, y = 28 + t * (H - 56) + jy;
+ const isCurrent = n[0] === SLUG;
+ const r = isCurrent ? 8 : 4;
+ const op = isCurrent ? 1 : 0.55;
+ nodes += `<g class="mc-node" data-slug="${n[0]}" data-label="${n[1]}" style="cursor:pointer">
+ <circle cx="${x}" cy="${y}" r="${r}" fill="url(#dna-${band})" fill-opacity="${op}" stroke="${COLOR[band]}" stroke-opacity="${isCurrent?1:0.7}" stroke-width="${isCurrent?2:1}">
+ <title>${n[1]} — ${n[0]}.com</title>
+ </circle>
+ ${isCurrent ? `<circle cx="${x}" cy="${y}" r="${r+5}" fill="none" stroke="${COLOR[band]}" stroke-opacity="0.4" stroke-width="1"><animate attributeName="r" values="${r+5};${r+12};${r+5}" dur="2.4s" repeatCount="indefinite"/><animate attributeName="stroke-opacity" values="0.4;0;0.4" dur="2.4s" repeatCount="indefinite"/></circle>` : ''}
+ </g>`;
+ });
+ });
+ // append nodes after defs
+ svg.insertAdjacentHTML('beforeend', nodes);
+ svg.querySelectorAll('.mc-node').forEach(n => {
+ n.addEventListener('mouseenter', () => n.querySelector('circle').setAttribute('fill-opacity', '1'));
+ n.addEventListener('mouseleave', e => {
+ const isCurrent = n.dataset.slug === SLUG;
+ n.querySelector('circle').setAttribute('fill-opacity', isCurrent ? '1' : '0.55');
+ });
+ n.addEventListener('click', () => window.open('https://' + n.dataset.slug + '.com', '_blank'));
+ });
+})();
+</script>
+
+<script>
+const state = { q:'', facet:'all', page:1, pages:1, total:0, loading:false, exhausted:false };
+const LABELS = {"all":"All"};
+
+function escAttr(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, c => ({ '&':'&','<':'<','>':'>','"':'"',"'":''' }[c])); }
+// Image-URL allowlist: only DW Shopify CDN + designerwallcoverings.com (defends against XSS via crafted products.json)
+function safeImg(u) { return /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(u || '') ? u : '/hero-bg.jpg'; }
+function cardHTML(p) {
+ const eager = state.page === 1;
+ return '<img loading="' + (eager ? 'eager' : 'lazy') + '"' + (eager ? ' fetchpriority="high"' : '') + ' src="' + escAttr(safeImg(p.image_url)) + '" alt="' + escAttr(p.title) + '">'
+ + '<div class="overlay">'
+ + '<div class="pat">' + escAttr(p.pattern_name || p.title) + '</div>'
+ + '<div class="ven">' + escAttr((p.vendor || '').replace(/-/g, ' ')) + '</div>'
+ + '<div class="actions">'
+ + '<button class="sample-btn" onclick="event.stopPropagation();dwmOpen(\'Sample\',' + JSON.stringify({sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}).replace(/"/g,'"') + ')">Sample</button>'
+ + '</div></div>';
+}
+
+async function loadFacets() {
+ let f;
+ try {
+ const r = await fetch('/api/facets');
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ f = await r.json();
+ } catch (e) { console.error('loadFacets failed:', e); return; }
+ const el = document.getElementById('facets');
+ for (const [k, v] of Object.entries(f.aesthetics).sort((a,b) => b[1] - a[1])) {
+ const b = document.createElement('button');
+ b.className = 'chip'; b.dataset.facet = k;
+ b.innerHTML = (LABELS[k] || k) + ' <span style="opacity:.55;font-weight:500;margin-left:4px">' + v + '</span>';
+ el.appendChild(b);
+ }
+ el.addEventListener('click', e => {
+ if (e.target.tagName !== 'BUTTON') return;
+ document.querySelectorAll('#facets button').forEach(b => b.classList.remove('active'));
+ e.target.classList.add('active');
+ state.facet = e.target.dataset.facet;
+ resetGrid();
+ });
+ document.getElementById('totalCount').textContent = f.total;
+ document.getElementById('footerStat').textContent = f.total + ' patterns · live archive';
+ // Footer aesthetic links
+ const footerEl = document.getElementById('footerFacets');
+ for (const [k] of Object.entries(f.aesthetics)) {
+ const b = document.createElement('button');
+ b.textContent = LABELS[k] || k;
+ b.onclick = () => { state.facet = k; resetGrid(); document.querySelectorAll('#facets button').forEach(x => x.classList.toggle('active', x.dataset.facet === k)); document.getElementById('shop').scrollIntoView({behavior:'smooth'}); };
+ footerEl.appendChild(b);
+ }
+}
+
+function resetGrid() {
+ state.page = 1; state.exhausted = false;
+ document.getElementById('grid').innerHTML = '';
+ document.getElementById('loading').textContent = 'Loading…';
+ loadGridPage();
+}
+
+async function loadGridPage() {
+ if (state.loading || state.exhausted) return;
+ state.loading = true;
+ const params = new URLSearchParams({ page:state.page, limit:24 });
+ if (state.q) params.set('q', state.q);
+ if (state.facet !== 'all') params.set('aesthetic', state.facet);
+ let data;
+ try {
+ const r = await fetch('/api/products?' + params);
+ if (!r.ok) throw new Error('HTTP ' + r.status);
+ data = await r.json();
+ } catch (e) {
+ console.error('loadGridPage failed:', e);
+ document.getElementById('loading').textContent = '— offline — refresh to retry —';
+ state.loading = false;
+ return;
+ }
+ state.total = data.total; state.pages = data.pages;
+
+ if (state.page === 1) {
+ document.getElementById('statLine').textContent = data.total + ' patterns · ' + (state.facet === 'all' ? 'all aesthetics' : (LABELS[state.facet] || state.facet)) + (state.q ? ' · matching "' + state.q + '"' : '');
+ }
+ const grid = document.getElementById('grid');
+ for (const p of data.items) {
+ const a = document.createElement('a');
+ a.className = 'card'; a.href = '#'; a.onclick = (e) => { e.preventDefault(); dwmOpen('Sample',{sku:p.sku||p.handle, title:p.title, image_url:safeImg(p.image_url)}); };
+ a.innerHTML = cardHTML(p);
+ grid.appendChild(a);
+ }
+ if (state.page >= state.pages || data.items.length === 0) {
+ state.exhausted = true;
+ document.getElementById('loading').textContent = state.total > 0 ? '— end of archive · ' + state.total + ' patterns —' : '';
+ } else state.page++;
+ state.loading = false;
+}
+
+const io = new IntersectionObserver(es => { for (const e of es) if (e.isIntersecting) loadGridPage(); }, { rootMargin:'600px 0px' });
+io.observe(document.getElementById('sentinel'));
+
+document.getElementById('searchInput').addEventListener('input', e => {
+ state.q = e.target.value.trim();
+ clearTimeout(window._t);
+ window._t = setTimeout(resetGrid, 220);
+});
+
+// Density slider
+const slider = document.getElementById('densitySlider');
+const dlabel = document.getElementById('densityLabel');
+function setDensity(n) {
+ document.documentElement.style.setProperty('--cols', n);
+ dlabel.textContent = n + ' cols';
+ try { localStorage.setItem('glit_theme_density', n); } catch(e){}
+}
+slider.addEventListener('input', e => setDensity(parseInt(e.target.value)));
+const savedDensity = parseInt(localStorage.getItem('glit_theme_density') || '6');
+if (savedDensity >= 4 && savedDensity <= 12) { slider.value = savedDensity; setDensity(savedDensity); }
+
+// Theme toggle
+const tb = document.getElementById('theme-toggle');
+function setTheme(t){ document.documentElement.dataset.theme = t; try { localStorage.setItem('glit_theme', t); } catch(e){} tb.textContent = t === 'dark' ? '☾' : '☀'; }
+setTheme(document.documentElement.dataset.theme || 'light');
+tb.addEventListener('click', () => setTheme(document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'));
+
+loadFacets();
+loadGridPage();
+</script>
+<!-- ============================================================
+ DW UNIVERSAL CONTACT MODULE — fashion-house UX
+ Inject before </body> in every DW-family sister site.
+ Self-contained: CSS + 4 modals + JS submission handlers.
+ Uses host site's CSS vars (--bg, --fg, --gold, --rule).
+ ============================================================ -->
+<style>
+ /* === MODAL BASE === */
+ .dwm{position:fixed;inset:0;background:rgba(0,0,0,0.78);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;overflow-y:auto}
+ .dwm.open{display:flex}
+ .dwm-box{background:var(--bg);border:1px solid var(--rule);max-width:520px;width:100%;padding:36px 32px;position:relative;max-height:90vh;overflow-y:auto;animation:dwm-in 0.25s ease}
+ @keyframes dwm-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
+ .dwm-box h3{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-weight:400;font-size:32px;line-height:1.05;margin-bottom:6px;color:var(--fg);letter-spacing:-0.01em}
+ .dwm-box .sub{color:var(--muted);font-size:12px;letter-spacing:0.16em;text-transform:uppercase;margin-bottom:24px;font-weight:500}
+ .dwm-close{position:absolute;top:18px;right:18px;background:transparent;border:0;color:var(--muted);font-size:24px;cursor:pointer;width:32px;height:32px;line-height:1;padding:0}
+ .dwm-close:hover{color:var(--gold)}
+ .dwm-preview{display:flex;gap:14px;align-items:center;padding:12px;background:var(--bg-soft);margin-bottom:18px}
+ .dwm-preview img{width:64px;height:64px;object-fit:cover}
+ .dwm-preview .pn{font-family:'Playfair Display',Georgia,serif;font-style:italic;font-size:15px;line-height:1.2;color:var(--fg)}
+ .dwm-preview .pc{font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);margin-top:4px}
+ .dwm-field{margin-bottom:14px}
+ .dwm-field label{display:block;font-size:10px;letter-spacing:0.18em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-weight:500}
+ .dwm-field input,.dwm-field textarea,.dwm-field select{width:100%;border:0;border-bottom:1px solid var(--rule);background:transparent;padding:8px 4px;font-size:14px;font-family:inherit;color:var(--fg);outline:none;transition:border-color 0.2s}
+ .dwm-field input:focus,.dwm-field textarea:focus{border-bottom-color:var(--gold)}
+ .dwm-field textarea{min-height:60px;resize:vertical}
+ .dwm-submit{background:transparent;color:var(--muted, #c9b89e);border:1px solid var(--muted, #c9b89e);padding:14px 28px;font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:700;cursor:pointer;width:100%;margin-top:8px;transition:background 0.15s, color 0.15s}
+ .dwm-submit:hover{background:var(--muted, #c9b89e);color:var(--bg, #000)}
+
+ .dwm-submit:disabled{opacity:0.5;cursor:default}
+ .dwm-status{margin-top:14px;font-size:11px;letter-spacing:0.16em;text-transform:uppercase;text-align:center;display:none}
+ .dwm-status.ok{color:var(--sage);display:block}
+ .dwm-status.err{color:#e08070;display:block}
+ /* contact-options */
+ .dwm-options{display:flex;flex-direction:column;gap:10px}
+ .dwm-option{display:flex;align-items:center;gap:14px;padding:18px 20px;background:transparent;border:1px solid var(--rule);color:var(--fg);font-family:inherit;font-size:11px;letter-spacing:0.20em;text-transform:uppercase;font-weight:600;cursor:pointer;text-decoration:none;transition:all 0.2s;text-align:left;width:100%}
+ .dwm-option:hover{border-color:var(--gold);color:var(--gold)}
+ .dwm-option svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}
+ .dwm-option .lbl{flex:1;display:block}
+ .dwm-option .val{display:block;font-size:10px;letter-spacing:0.14em;text-transform:none;font-weight:500;opacity:0.65;margin-top:4px}
+
+/* graphics-loop pass 5: serif hero typography + nav legibility */
+.cinema h1, h1.headline { font-family: 'Cormorant Garamond', Georgia, serif; font-weight: 500; letter-spacing: -0.01em }
+.h-link { font-size: 13px; letter-spacing: 0.06em }
+
+/* graphics-loop pass 11: Ideas rails */
+#ideas { padding: 56px 24px 24px; max-width:1600px; margin:0 auto }
+#ideas .rail-block { margin-bottom:48px }
+#ideas .rail-eyebrow { font-size:11px; font-weight:700; letter-spacing:0.32em; text-transform:uppercase; color:var(--muted, #888); margin-bottom:8px }
+#ideas .rail-title { font-size:clamp(22px,2.6vw,32px); font-weight:500; letter-spacing:-0.01em; margin:0 0 18px; color:var(--ink,#fff) }
+#ideas .rail { display:flex; gap:14px; overflow-x:auto; scroll-snap-type:x mandatory; padding-bottom:8px; scrollbar-width:none }
+#ideas .rail::-webkit-scrollbar { display:none }
+#ideas .rail-card { flex:0 0 240px; scroll-snap-align:start; cursor:pointer; transition:transform 0.2s }
+#ideas .rail-card:hover { transform:translateY(-3px) }
+#ideas .rail-card img { width:100%; aspect-ratio:1; object-fit:cover; display:block; background:var(--card,#222) }
+#ideas .rail-card .rc-title { font-size:13px; font-weight:500; color:var(--paper,#fff); padding:8px 0 2px; line-height:1.3 }
+#ideas .rail-card .rc-meta { font-size:11px; color:var(--muted,#888); letter-spacing:0.06em }
+@media (max-width:720px) { #ideas .rail-card { flex:0 0 160px } }
+</style>
+
+<!-- Contact options modal -->
+<div class="dwm" id="dwmContact" onclick="if(event.target===this)dwmClose('Contact')">
+ <div class="dwm-box" style="max-width:440px">
+ <button class="dwm-close" onclick="dwmClose('Contact')" aria-label="Close">×</button>
+ <h3>Contact</h3>
+ <p class="sub" id="dwmContactSub">Three ways to reach us</p>
+ <div class="dwm-options">
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Inquiry')">
+ <svg viewBox="0 0 24 24"><path d="M4 4h16v12H7l-3 3z"/></svg>
+ <span class="lbl">Send an Inquiry<span class="val">Project name · scope · all the details</span></span>
+ </button>
+ <button class="dwm-option" type="button" onclick="dwmClose('Contact');dwmOpen('Sample')">
+ <svg viewBox="0 0 24 24"><rect x="4" y="6" width="16" height="14"/><path d="M4 10h16M9 6V3h6v3"/></svg>
+ <span class="lbl">Request a Sample<span class="val">Memo sample · ships free · 3–5 business days</span></span>
+ </button>
+ <a class="dwm-option" id="dwmContactEmailLink" href="mailto:info@glitterwalls.com">
+ <svg viewBox="0 0 24 24"><path d="M3 6h18v12H3z"/><path d="M3 6l9 7 9-7"/></svg>
+ <span class="lbl">Email Us<span class="val" id="dwmContactEmailLabel">info@glitterwalls.com</span></span>
+ </a>
+ </div>
+ </div>
+</div>
+
+<!-- Inquiry modal -->
+<div class="dwm" id="dwmInquiry" onclick="if(event.target===this)dwmClose('Inquiry')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Inquiry')" aria-label="Close">×</button>
+ <h3>Project Inquiry</h3>
+ <p class="sub">We'll respond within one business day</p>
+ <form id="dwmInquiryForm" onsubmit="return dwmSubmit(event,'inquiry')">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Phone</label><input type="tel" name="phone"></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Project Name</label><input type="text" name="projectName" required></div>
+ <div class="dwm-field"><label>Project Scope</label><textarea name="projectScope" placeholder="Square footage · room count · timeline" required></textarea></div>
+ <div class="dwm-field"><label>Additional Information</label><textarea name="message" placeholder="Patterns of interest, finish preferences, budget"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Inquiry</button>
+ <div class="dwm-status" id="dwmInquiryStatus"></div>
+ </form>
+ </div>
+</div>
+
+<!-- Sample-request modal -->
+<div class="dwm" id="dwmSample" onclick="if(event.target===this)dwmClose('Sample')">
+ <div class="dwm-box">
+ <button class="dwm-close" onclick="dwmClose('Sample')" aria-label="Close">×</button>
+ <h3>Request a Sample</h3>
+ <p class="sub">Memo sample · ships free · 3–5 business days</p>
+ <div class="dwm-preview" id="dwmSamplePreview" style="display:none">
+ <img id="dwmSampleImg" src="" alt="">
+ <div><div class="pn" id="dwmSampleName"></div><div class="pc" id="dwmSampleSku"></div></div>
+ </div>
+ <form id="dwmSampleForm" onsubmit="return dwmSubmit(event,'sample')">
+ <input type="hidden" name="sku" id="dwmSampleSkuInput">
+ <input type="hidden" name="title" id="dwmSampleTitleInput">
+ <input type="hidden" name="image_url" id="dwmSampleImageInput">
+ <div class="dwm-field"><label>Name</label><input type="text" name="name" required></div>
+ <div class="dwm-field"><label>Email</label><input type="email" name="email" required></div>
+ <div class="dwm-field"><label>Company / Trade</label><input type="text" name="company"></div>
+ <div class="dwm-field"><label>Shipping Address</label><input type="text" name="address" placeholder="Street" required></div>
+ <div class="dwm-field" style="display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px">
+ <input type="text" name="city" placeholder="City" required>
+ <input type="text" name="state" placeholder="State" required>
+ <input type="text" name="zip" placeholder="ZIP" required>
+ </div>
+ <div class="dwm-field"><label>Notes (optional)</label><textarea name="message" placeholder="Project, sq.ft., timing"></textarea></div>
+ <button type="submit" class="dwm-submit">Send Sample Request</button>
+ <div class="dwm-status" id="dwmSampleStatus"></div>
+ </form>
+ </div>
+</div>
+
+<script>
+ // Universal modal control
+ function dwmOpen(name, opts){
+ document.getElementById('dwm' + name).classList.add('open');
+ document.body.style.overflow = 'hidden';
+ if (name === 'Sample' && opts) {
+ document.getElementById('dwmSamplePreview').style.display = 'flex';
+ document.getElementById('dwmSampleImg').src = opts.image_url || '';
+ document.getElementById('dwmSampleName').textContent = opts.title || '';
+ document.getElementById('dwmSampleSku').textContent = opts.sku || '';
+ document.getElementById('dwmSampleSkuInput').value = opts.sku || '';
+ document.getElementById('dwmSampleTitleInput').value = opts.title || '';
+ document.getElementById('dwmSampleImageInput').value = opts.image_url || '';
+ } else if (name === 'Sample') {
+ document.getElementById('dwmSamplePreview').style.display = 'none';
+ document.getElementById('dwmSampleSkuInput').value = '';
+ document.getElementById('dwmSampleTitleInput').value = '';
+ document.getElementById('dwmSampleImageInput').value = '';
+ }
+ }
+ function dwmClose(name){ document.getElementById('dwm'+name).classList.remove('open'); document.body.style.overflow=''; }
+
+ // Universal form submit — POSTs to /api/send-{kind}
+ async function dwmSubmit(e, kind) {
+ e.preventDefault();
+ const form = e.target;
+ const data = Object.fromEntries(new FormData(form).entries());
+ const btn = form.querySelector('.dwm-submit');
+ const status = form.querySelector('.dwm-status');
+ btn.disabled = true; const orig = btn.textContent; btn.textContent = 'Sending…';
+ status.className = 'dwm-status';
+ try {
+ const r = await fetch('/api/send-' + kind, { method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify(data) });
+ if (!r.ok) throw new Error('HTTP '+r.status);
+ const j = await r.json();
+ status.textContent = kind === 'sample' ? 'Sample request sent — ships within 3–5 business days' : 'Inquiry sent — we respond within 1 business day';
+ status.className = 'dwm-status ok';
+ btn.textContent = 'Sent ✓';
+ setTimeout(() => { dwmClose(kind === 'sample' ? 'Sample' : 'Inquiry'); btn.disabled = false; btn.textContent = orig; status.className = 'dwm-status'; form.reset(); }, 2800);
+ } catch (err) {
+ status.textContent = 'Send failed — please email info@designerwallcoverings.com';
+ status.className = 'dwm-status err';
+ btn.disabled = false; btn.textContent = orig;
+ }
+ return false;
+ }
+
+ // Wire up "Memo samples ship free" badge in hero to open sample modal directly
+ document.querySelectorAll('.hero .badge, [data-open-sample]').forEach(el => {
+ el.style.cursor = 'pointer';
+ el.addEventListener('click', () => dwmOpen('Sample'));
+ });
+
+ // Wire nav "Trade" link to inquiry modal
+ document.querySelectorAll('nav a[href*="designerwallcoverings.com"]').forEach(a => {
+ a.removeAttribute('target');
+ a.removeAttribute('href');
+ a.style.cursor = 'pointer';
+ a.addEventListener('click', e => { e.preventDefault(); dwmOpen('Contact'); });
+ });
+
+ // Override product card clicks — open Sample modal pre-filled instead of redirecting to DW
+ document.addEventListener('click', e => {
+ const card = e.target.closest('.card, .rail-card');
+ if (!card) return;
+ if (card.tagName === 'A' && (card.getAttribute('href') || '').startsWith('/sample/')) {
+ e.preventDefault();
+ const img = card.querySelector('img');
+ const pat = card.querySelector('.pat');
+ const sku = card.getAttribute('href').replace('/sample/', '');
+ dwmOpen('Sample', {
+ sku,
+ title: pat ? pat.textContent.trim() : '',
+ image_url: img ? img.src : ''
+ });
+ }
+ }, true);
+// DW STANDARD: hero pulls from products.json[0].image_url so dw-collections-viewer
+// drag-drop / hero-pin updates the live front page on next deploy.
+// Always upgrades to the largest Shopify variant (strips _NxN size suffix) so
+// the full-page hero stays sharp.
+// DW STANDARD: hero rotates through top-20 NEWEST products on each visit
+// (novasuede.com pattern). Fetches /api/products?limit=100, sorts by created_at desc,
+// takes the freshest 20, picks one per visit via localStorage counter.
+// Falls back to static /hero-bg.jpg on any error.
+(async function rotateHero() {
+ try {
+ const r = await fetch('/api/products?limit=100');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || [])
+ .filter(p => p && p.image_url && /^https:\/\/(?:cdn\.shopify\.com|designerwallcoverings\.com)\//.test(p.image_url))
+ .sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')))
+ .slice(0, 20);
+ if (!items.length) return;
+ let visits = 0;
+ try {
+ visits = parseInt(localStorage.getItem('hero_visits') || '0', 10) || 0;
+ localStorage.setItem('hero_visits', String(visits + 1));
+ } catch(e) {}
+ const pick = items[visits % items.length];
+ // Strip _NxN size suffix to get the largest CDN variant
+ const url = pick.image_url.replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ const bg = document.getElementById('heroBg') || document.getElementById('cinemaBg');
+ if (bg) bg.style.backgroundImage = "url('" + url + "')";
+ } catch (e) {}
+})();
+
+
+// DW STANDARD sort-select wire-up (added by fleet patcher)
+(function(){
+ const sortSel = document.getElementById('sortSelect');
+ if (!sortSel) return;
+ const KEY = location.hostname.replace(/\./g, '_') + '_sort';
+ const saved = localStorage.getItem(KEY);
+ if (saved) { try { sortSel.value = saved; } catch(e){} }
+ if (typeof state !== 'undefined') state.sort = sortSel.value;
+ sortSel.addEventListener('change', e => {
+ const v = e.target.value;
+ try { localStorage.setItem(KEY, v); } catch(e){}
+ if (typeof state !== 'undefined') state.sort = v;
+ if (typeof resetGrid === 'function') resetGrid();
+ else location.reload();
+ });
+})();
+
+// graphics-loop pass 11: hydrate Ideas rails from /api/products
+(async function hydrateIdeas() {
+ try {
+ const r = await fetch('/api/products?limit=80');
+ if (!r.ok) return;
+ const d = await r.json();
+ const items = (d.items || []).filter(p => p && p.image_url);
+ if (!items.length) return;
+ const sorted = [...items].sort((a,b) => String(b.created_at || '').localeCompare(String(a.created_at || '')));
+ const newest = sorted.slice(0, 12);
+ // Curated = deterministic offset slice (every 5th item starting at idx 3) for variety
+ const curated = items.filter((_, i) => i % 5 === 3).slice(0, 12);
+ function card(p) {
+ const url = (p.image_url || '').replace(/(_\d+x\d*)(\.(jpg|jpeg|png|webp|gif))(\?|$)/i, '$2$4');
+ return '<a class="rail-card" href="/sample/' + encodeURIComponent(p.handle || p.sku) + '">' +
+ '<img src="' + url + '" alt="' + (p.title || '').replace(/"/g, '"') + '" loading="lazy">' +
+ '<div class="rc-title">' + ((p.title || '').split('|')[0] || '').trim() + '</div>' +
+ '<div class="rc-meta">' + (p.vendor || '') + '</div>' +
+ '</a>';
+ }
+ const r1 = document.getElementById('railNewest');
+ const r2 = document.getElementById('railCurated');
+ if (r1) r1.innerHTML = newest.map(card).join('');
+ if (r2) r2.innerHTML = curated.map(card).join('');
+ } catch(e) {}
+})();
+</script>
+
+</body>
+</html>
diff --git a/server.js b/server.js
index cbe4d1f..06c8341 100644
--- a/server.js
+++ b/server.js
@@ -26,13 +26,26 @@ const PRODUCTS = DATA_RAW.filter(p => !isJunk(p));
const DROPPED = DATA_RAW.length - PRODUCTS.length;
console.log(`Loaded ${DATA_RAW.length}, kept ${PRODUCTS.length}, dropped ${DROPPED}`);
-// graphics-loop pass 12: niche keyword filter — only show products that fit this site's niche
-const NICHE_POS = ["glitter","sequin","holographic","sparkle","metallic","foil"];
-const NICHE_NEG = ["solid","blank","plain"];
-function nicheFit(p) {
+// Glitterwalls scope (locked 2026-05-08):
+// 1) DW SKU series GLS / GLM, OR
+// 2) any product whose title/tags include "sequin" or "glitter".
+// Both rules are enforced server-side so a future re-pull of products.json
+// can't accidentally widen the storefront beyond this niche.
+function isGlsGlmSku(p) {
+ const candidates = [p.sku, p.handle].filter(Boolean);
+ for (const c of candidates) {
+ const s = String(c).toLowerCase();
+ if (/(^|[^a-z])(gls|glm)([^a-z]|$)/.test(s)) return true;
+ if (/^(gls|glm)[\d.\-_]/.test(s)) return true;
+ }
+ return false;
+}
+function hasSequinOrGlitter(p) {
const blob = ((p.title || '') + ' ' + (p.tags || []).join(' ')).toLowerCase();
- if (NICHE_NEG.some(n => blob.includes(n.toLowerCase()))) return false;
- return NICHE_POS.length === 0 || NICHE_POS.some(k => blob.includes(k.toLowerCase()));
+ return /\bsequin/.test(blob) || /\bglitter/.test(blob);
+}
+function nicheFit(p) {
+ return isGlsGlmSku(p) || hasSequinOrGlitter(p);
}
const PRODUCTS_NICHE = PRODUCTS.filter(nicheFit);
const NICHE_DROPPED = PRODUCTS.length - PRODUCTS_NICHE.length;
← c45778e Casa Rossa UX pass: fix hero/OG/footer, crossfade carousel,
·
back to Glitterwalls
·
hero: hi-res only (>=1600px wide) carousel; 2x2 grid fallbac 8ccb352 →