← back to Artmura Internal
initial scaffold — internal artmura-internal viewer from astek template (pricing tiers, memo/stock/price active requests, call-vendor, no-client-name emails)
cbfb6f97763c68fc26f1ec182713a9d2802f6b64 · 2026-07-02 11:14:05 -0700 · Steve Abrams
Files touched
A .deploy.confA .gitignoreA data/products.jsonA lib/vendor-requests.jsA package-lock.jsonA package.jsonA public/curate.htmlA public/index.htmlA public/product.htmlA public/styles.cssA scripts/build-products-json.jsA server.js
Diff
commit cbfb6f97763c68fc26f1ec182713a9d2802f6b64
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Jul 2 11:14:05 2026 -0700
initial scaffold — internal artmura-internal viewer from astek template (pricing tiers, memo/stock/price active requests, call-vendor, no-client-name emails)
---
.deploy.conf | 5 +
.gitignore | 9 +
data/products.json | 1 +
lib/vendor-requests.js | 161 ++++++
package-lock.json | 1069 ++++++++++++++++++++++++++++++++++++++++
package.json | 17 +
public/curate.html | 160 ++++++
public/index.html | 400 +++++++++++++++
public/product.html | 237 +++++++++
public/styles.css | 286 +++++++++++
scripts/build-products-json.js | 165 +++++++
server.js | 157 ++++++
12 files changed, 2667 insertions(+)
diff --git a/.deploy.conf b/.deploy.conf
new file mode 100644
index 0000000..30d4866
--- /dev/null
+++ b/.deploy.conf
@@ -0,0 +1,5 @@
+# astek-landing deploy config (GATED — do not run without Steve's approval)
+PROJECT_NAME="astek-landing"
+DEPLOY_PATH="/root/Projects/astek-landing"
+HEALTH_URL="https://astek.designerwallcoverings.com/api/products"
+PORT="9944"
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a8112d1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+node_modules/
+.env*
+tmp/
+*.log
+.DS_Store
+dist/
+build/
+.next/
+data/inquiries.jsonl
diff --git a/data/products.json b/data/products.json
new file mode 100644
index 0000000..39138c9
--- /dev/null
+++ b/data/products.json
@@ -0,0 +1 @@
+{"built_at":"2026-07-02T18:13:48.648Z","source":"designerwallcoverings.com live Shopify feed, vendor=Artmura (INTERNAL viewer)","count":144,"dropped_no_image":0,"vendor":{"name":"Artmura","phone":null,"email":null,"account_number":null,"discount_pct":null,"pricing_unit":null,"pricing_model":null,"pricing_notes":null,"sample_price":null},"facets":{"total":144,"books":[["Wallcovering",144]],"series":[["Tabula Corten Stone",1],["Tabula Corten Orange",1],["Tabula Wax Charcoal",1],["Tabula Wax Green",1],["Tabula Wax Teal",1],["Tabula Wax Purple",1],["Tabula Wax Terracotta",1],["Tabula Wax Yellow",1],["Tabula Wax Off-White",1],["Tabula Mica Black",1],["Tabula Mica Pink",1],["Tabula Mica Blue",1],["Tabula Mica Silver",1],["Tabula Mica Brown",1],["Tabula Mica Beige",1],["Tabula Mica White",1],["Tabula Lacca Black",1],["Tabula Lacca Red",1],["Tabula Lacca Teal",1],["Tabula Lacca Yellow",1],["Tabula Lacca Off-White",1],["Tabula Lacca Pink",1],["Tabula Lacca Beige",1],["Fluo Wood Mulberry",1],["Fluo Wood Discus",1],["Fluo Wood Emerald",1],["Fluo Wood Chameleon",1],["Fluo Wood Hortensia",1],["Fluo Wood Butterfly",1],["Fluo Wood Seahorse",1],["Fluo Wood Wisteria",1],["Fluo Wood Light Coral",1],["Metal Wood Carbon",1],["Metal Wood Storm",1],["Metal Wood Steel",1],["Metal Wood Pearl",1],["Metal Wood Ice",1],["Natural Wood Denim",1],["Natural Wood Classic Gray",1],["Natural Wood Mint",1],["Natural Wood Terracotta",1],["Natural Wood Salmon",1],["Natural Wood Peach",1],["Natural Wood Lime",1],["Natural Wood Sea Salt",1],["Natural Wood Simply White",1],["Pure Gold",1],["Pure Beige",1],["Pure Pink",1],["Pure Pearl",1],["Pure Off-White",1],["Pure White",1],["Pentagram Pink",1],["Pentagram Gold",1],["Pentagram Pearl",1],["Pentagram Purple",1],["Flux Copper",1],["Flux Pink",1],["Flux Pearl",1],["Flux Purple",1],["Diapason Purple",1],["Diapason Silver",1],["Crystal Pink",1],["Crystal Silver",1],["Crystal Gold",1],["Ardesia Off-White",1],["Composizione Grey",1],["Composizione Blue",1],["Composizione Red",1],["Composizione Charcoal",1],["Composizione Green",1],["Composizione Gold",1],["Composizione White",1],["Composizione Silver",1],["Composizione Yellow",1],["Composizione Brown",1],["Composizione Stone",1],["Composizione Pearl",1],["Composizione Navy",1],["Composizione Black",1],["Composizione Off-White",1],["Oak Blue",1],["Oak Grey",1],["Oak Off-White",1],["Oak Yellow",1],["Oak Brown",1],["Origami Green",1],["Origami Beige",1],["Origami Grey",1],["Origami Off-White",1],["Origami Taupe",1],["Origami Brown",1],["Origami Red",1],["Origami Black",1],["Origami Stone",1],["Origami Gold",1],["Origami Copper",1],["Origami Blue",1],["Materia Brown",1],["Materia Taupe",1],["Materia Off-White",1],["Materia Grey",1],["Materia Black",1],["Materia Copper",1],["Materia Turquoise",1],["Materia Silver",1],["Materia Gold",1],["Materia White",1],["Materia Pearl",1],["Architecture Red",1],["Architecture Gold",1],["Architecture Silver",1],["Architecture Beige",1],["Architecture Grey",1],["Architecture Off-White",1],["Oriente Teal",1],["Oriente Black",1],["Oriente Brown",1],["Oriente Terracotta",1],["Oriente Gold",1],["New York Red",1],["New York Copper",1],["New York Pearl",1],["New York Gold",1],["New York Silver",1],["Lacca Black",1],["Lacca Beige",1],["Lacca White",1],["Lacca Grey",1],["Lacca Red",1],["Kromo Black",1],["Golden Grey",1],["Golden Off-White",1],["Golden Brown",1],["Golden Gold",1],["Contemporary Black",1],["Contemporary Grey",1],["Contemporary Beige",1],["Contemporary Terracotta",1],["Contemporary Brown",1],["Ardesia Grey",1],["Ardesia Black",1],["Ardesia Brown",1],["Ardesia Silver",1]],"colors":[["white",30],["grey",30],["black",16],["orange",1],["brown",28],["gold",2],["green",11],["teal",1],["blue",24],["purple",1]]},"products":[{"handle":"tabula-corten-stone-artmura","dw_sku":"DWXW-1011532","sku":null,"title":"Tabula Corten Stone Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Corten Stone Wallcovering","series":"Tabula Corten Stone","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Corten Stone is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a warm, weathered look adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-002.jpg?v=1781282944","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-002-room.jpg?v=1781282944","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-002.jpg?v=1781282944","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-002-room.jpg?v=1781282944"],"published_at":"2026-06-12T10:33:23-07:00","inquiry_sku":"DWXW-1011532"},{"handle":"tabula-corten-orange-artmura","dw_sku":"DWXW-1011531","sku":null,"title":"Tabula Corten Orange Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Corten Orange Wallcovering","series":"Tabula Corten Orange","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Corten Orange is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a warm, weathered look adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-001.jpg?v=1781282941","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-001-room.jpg?v=1781282941","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-001.jpg?v=1781282941","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABC-001-room.jpg?v=1781282941"],"published_at":"2026-06-12T10:33:20-07:00","inquiry_sku":"DWXW-1011531"},{"handle":"tabula-wax-charcoal-artmura","dw_sku":"DWXW-1011530","sku":null,"title":"Tabula Wax Charcoal Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Charcoal Wallcovering","series":"Tabula Wax Charcoal","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Charcoal is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-007.jpg?v=1781282996","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room_427ae518-78e3-4a7a-9a5a-52307e133556.jpg?v=1781282996","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-007.jpg?v=1781282996","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room_427ae518-78e3-4a7a-9a5a-52307e133556.jpg?v=1781282996"],"published_at":"2026-06-12T10:33:16-07:00","inquiry_sku":"DWXW-1011530"},{"handle":"tabula-wax-green-artmura","dw_sku":"DWXW-1011529","sku":null,"title":"Tabula Wax Green Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Green Wallcovering","series":"Tabula Wax Green","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Green is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006.jpg?v=1781283000","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006-room.jpg?v=1781283000","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006.jpg?v=1781283000","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006-room.jpg?v=1781283000"],"published_at":"2026-06-12T10:33:12-07:00","inquiry_sku":"DWXW-1011529"},{"handle":"tabula-wax-teal-artmura","dw_sku":"DWXW-1011528","sku":null,"title":"Tabula Wax Teal Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Teal Wallcovering","series":"Tabula Wax Teal","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Teal is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005.jpg?v=1781283011","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room.jpg?v=1781283011","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005.jpg?v=1781283011","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room.jpg?v=1781283011"],"published_at":"2026-06-12T10:33:09-07:00","inquiry_sku":"DWXW-1011528"},{"handle":"tabula-wax-purple-artmura","dw_sku":"DWXW-1011527","sku":null,"title":"Tabula Wax Purple Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Purple Wallcovering","series":"Tabula Wax Purple","color":null,"book":"Wallcovering","color_bucket":"purple","hue":280,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Purple is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-004.jpg?v=1781283007","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006-room_690f0ce2-8a88-42f2-980a-abed0dccf452.jpg?v=1781283007","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-004.jpg?v=1781283007","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006-room_690f0ce2-8a88-42f2-980a-abed0dccf452.jpg?v=1781283007"],"published_at":"2026-06-12T10:33:06-07:00","inquiry_sku":"DWXW-1011527"},{"handle":"tabula-wax-terracotta-artmura","dw_sku":"DWXW-1011526","sku":null,"title":"Tabula Wax Terracotta Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Terracotta Wallcovering","series":"Tabula Wax Terracotta","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Terracotta is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-003.jpg?v=1781283014","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room_f339c298-2362-414a-923d-672a39b3258e.jpg?v=1781283015","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-003.jpg?v=1781283014","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room_f339c298-2362-414a-923d-672a39b3258e.jpg?v=1781283015"],"published_at":"2026-06-12T10:33:02-07:00","inquiry_sku":"DWXW-1011526"},{"handle":"tabula-wax-yellow-artmura","dw_sku":"DWXW-1011525","sku":null,"title":"Tabula Wax Yellow Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Yellow Wallcovering","series":"Tabula Wax Yellow","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Yellow is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-002.jpg?v=1781283018","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006-room_23edcff0-f5f4-4f13-9791-1fca460ba38b.jpg?v=1781283018","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-002.jpg?v=1781283018","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-006-room_23edcff0-f5f4-4f13-9791-1fca460ba38b.jpg?v=1781283018"],"published_at":"2026-06-12T10:32:58-07:00","inquiry_sku":"DWXW-1011525"},{"handle":"tabula-wax-off-white-artmura","dw_sku":"DWXW-1011524","sku":null,"title":"Tabula Wax Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Wax Off-White Wallcovering","series":"Tabula Wax Off-White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Tabula Wax Off-White is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a soft, nuanced surface adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-001.jpg?v=1781283003","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room_ea4ff4be-0859-4d93-9d81-215cb8fbd463.jpg?v=1781283003","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-001.jpg?v=1781283003","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABW-005-room_ea4ff4be-0859-4d93-9d81-215cb8fbd463.jpg?v=1781283003"],"published_at":"2026-06-12T10:32:55-07:00","inquiry_sku":"DWXW-1011524"},{"handle":"tabula-mica-black-artmura","dw_sku":"DWXW-1011523","sku":null,"title":"Tabula Mica Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica Black Wallcovering","series":"Tabula Mica Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica Black is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007.jpg?v=1781282976","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007-room.jpg?v=1781282976","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007.jpg?v=1781282976","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007-room.jpg?v=1781282976"],"published_at":"2026-06-12T10:32:51-07:00","inquiry_sku":"DWXW-1011523"},{"handle":"tabula-mica-pink-artmura","dw_sku":"DWXW-1011522","sku":null,"title":"Tabula Mica Pink Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica Pink Wallcovering","series":"Tabula Mica Pink","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica Pink is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-006.jpg?v=1781282986","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002-room_59134c53-a7fb-4d57-b6c2-be3bdead6131.jpg?v=1781282986","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-006.jpg?v=1781282986","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002-room_59134c53-a7fb-4d57-b6c2-be3bdead6131.jpg?v=1781282986"],"published_at":"2026-06-12T10:32:47-07:00","inquiry_sku":"DWXW-1011522"},{"handle":"tabula-mica-blue-artmura","dw_sku":"DWXW-1011521","sku":null,"title":"Tabula Mica Blue Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica Blue Wallcovering","series":"Tabula Mica Blue","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica Blue is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-005.jpg?v=1781282979","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007-room_36338031-aea6-4110-8000-8046f0a1735f.jpg?v=1781282979","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-005.jpg?v=1781282979","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007-room_36338031-aea6-4110-8000-8046f0a1735f.jpg?v=1781282979"],"published_at":"2026-06-12T10:32:43-07:00","inquiry_sku":"DWXW-1011521"},{"handle":"tabula-mica-silver-artmura","dw_sku":"DWXW-1011520","sku":null,"title":"Tabula Mica Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica Silver Wallcovering","series":"Tabula Mica Silver","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica Silver is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-004.jpg?v=1781282989","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007-room_4476db0f-4b3e-4971-87f4-cf79ac471675.jpg?v=1781282990","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-004.jpg?v=1781282989","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-007-room_4476db0f-4b3e-4971-87f4-cf79ac471675.jpg?v=1781282990"],"published_at":"2026-06-12T10:32:40-07:00","inquiry_sku":"DWXW-1011520"},{"handle":"tabula-mica-brown-artmura","dw_sku":"DWXW-1011519","sku":null,"title":"Tabula Mica Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica Brown Wallcovering","series":"Tabula Mica Brown","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica Brown is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-003.jpg?v=1781282983","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002-room_75111c32-9387-44b8-bea8-c726e93081d8.jpg?v=1781282983","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-003.jpg?v=1781282983","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002-room_75111c32-9387-44b8-bea8-c726e93081d8.jpg?v=1781282983"],"published_at":"2026-06-12T10:32:36-07:00","inquiry_sku":"DWXW-1011519"},{"handle":"tabula-mica-beige-artmura","dw_sku":"DWXW-1011518","sku":null,"title":"Tabula Mica Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica Beige Wallcovering","series":"Tabula Mica Beige","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica Beige is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002.jpg?v=1781282972","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002-room.jpg?v=1781282972","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002.jpg?v=1781282972","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-002-room.jpg?v=1781282972"],"published_at":"2026-06-12T10:32:33-07:00","inquiry_sku":"DWXW-1011518"},{"handle":"tabula-mica-white-artmura","dw_sku":"DWXW-1011517","sku":null,"title":"Tabula Mica White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Mica White Wallcovering","series":"Tabula Mica White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Mica White is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a subtle mineral shimmer adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-001.jpg?v=1781282993","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-001-room.jpg?v=1781282993","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-001.jpg?v=1781282993","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABM-001-room.jpg?v=1781282993"],"published_at":"2026-06-12T10:32:28-07:00","inquiry_sku":"DWXW-1011517"},{"handle":"tabula-lacca-black-artmura","dw_sku":"DWXW-1011516","sku":null,"title":"Tabula Lacca Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Black Wallcovering","series":"Tabula Lacca Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Black is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-007.jpg?v=1781282951","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room_1153b6e3-b307-4abe-a783-73d9630eab9f.jpg?v=1781282951","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-007.jpg?v=1781282951","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room_1153b6e3-b307-4abe-a783-73d9630eab9f.jpg?v=1781282951"],"published_at":"2026-06-12T10:32:25-07:00","inquiry_sku":"DWXW-1011516"},{"handle":"tabula-lacca-red-artmura","dw_sku":"DWXW-1011515","sku":null,"title":"Tabula Lacca Red Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Red Wallcovering","series":"Tabula Lacca Red","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Red is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006.jpg?v=1781282962","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006-room_5d2de33d-1825-4ede-ae77-fc2d9c5748e2.jpg?v=1781282962","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006.jpg?v=1781282962","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006-room_5d2de33d-1825-4ede-ae77-fc2d9c5748e2.jpg?v=1781282962"],"published_at":"2026-06-12T10:32:21-07:00","inquiry_sku":"DWXW-1011515"},{"handle":"tabula-lacca-teal-artmura","dw_sku":"DWXW-1011514","sku":null,"title":"Tabula Lacca Teal Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Teal Wallcovering","series":"Tabula Lacca Teal","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Teal is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-005.jpg?v=1781282966","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room_460a44a7-a0c7-4828-a41b-ae9d2ad4aacc.jpg?v=1781282966","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-005.jpg?v=1781282966","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room_460a44a7-a0c7-4828-a41b-ae9d2ad4aacc.jpg?v=1781282966"],"published_at":"2026-06-12T10:32:18-07:00","inquiry_sku":"DWXW-1011514"},{"handle":"tabula-lacca-yellow-artmura","dw_sku":"DWXW-1011513","sku":null,"title":"Tabula Lacca Yellow Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Yellow Wallcovering","series":"Tabula Lacca Yellow","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Yellow is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-004.jpg?v=1781282969","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006-room_2cca6641-27b1-4705-a838-e1cd0a5f5e62.jpg?v=1781282969","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-004.jpg?v=1781282969","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006-room_2cca6641-27b1-4705-a838-e1cd0a5f5e62.jpg?v=1781282969"],"published_at":"2026-06-12T10:32:14-07:00","inquiry_sku":"DWXW-1011513"},{"handle":"tabula-lacca-off-white-artmura","dw_sku":"DWXW-1011512","sku":null,"title":"Tabula Lacca Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Off-White Wallcovering","series":"Tabula Lacca Off-White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Off-White is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003.jpg?v=1781282955","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room_536d5aee-b3b5-4c58-b03c-344ef9c6146d.jpg?v=1781282955","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003.jpg?v=1781282955","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room_536d5aee-b3b5-4c58-b03c-344ef9c6146d.jpg?v=1781282955"],"published_at":"2026-06-12T10:32:11-07:00","inquiry_sku":"DWXW-1011512"},{"handle":"tabula-lacca-pink-artmura","dw_sku":"DWXW-1011511","sku":null,"title":"Tabula Lacca Pink Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Pink Wallcovering","series":"Tabula Lacca Pink","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Pink is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-002.jpg?v=1781282959","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006-room.jpg?v=1781282959","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-002.jpg?v=1781282959","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-006-room.jpg?v=1781282959"],"published_at":"2026-06-12T10:32:07-07:00","inquiry_sku":"DWXW-1011511"},{"handle":"tabula-lacca-beige-artmura","dw_sku":"DWXW-1011510","sku":null,"title":"Tabula Lacca Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Tabula Lacca Beige Wallcovering","series":"Tabula Lacca Beige","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Tabula Lacca Beige is a designer wallcovering with an irregular grid pattern that feels both geometric and expressive. Its a smoother decorative sheen adds depth to living rooms, dining spaces, and other contemporary interiors that benefit from an artistic architectural finish. Specifications Material Non-Woven Dimensions 38\" wide Wall coverage 10.3 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-001.jpg?v=1781282948","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room.jpg?v=1781282948","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-001.jpg?v=1781282948","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/TABL-003-room.jpg?v=1781282948"],"published_at":"2026-06-12T10:32:04-07:00","inquiry_sku":"DWXW-1011510"},{"handle":"fluo-wood-mulberry-artmura","dw_sku":"DWXW-1008201","sku":null,"title":"Fluo Wood Mulberry Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Mulberry Wallcovering","series":"Fluo Wood Mulberry","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Mulberry is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_009_MULBERRY.jpg?v=1781282623","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_413c8423-f915-49d2-9768-5bf5aacedc1f.jpg?v=1781282623","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_009_MULBERRY.jpg?v=1781282623","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_413c8423-f915-49d2-9768-5bf5aacedc1f.jpg?v=1781282623"],"published_at":"2026-06-12T10:32:00-07:00","inquiry_sku":"DWXW-1008201"},{"handle":"fluo-wood-discus-artmura","dw_sku":"DWXW-1008200","sku":null,"title":"Fluo Wood Discus Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Discus Wallcovering","series":"Fluo Wood Discus","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Discus is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_008_DISCUS.jpg?v=1781282610","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_8165cc4d-b0a0-4b01-9ee9-7e3594484ff6.jpg?v=1781282610","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_008_DISCUS.jpg?v=1781282610","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_8165cc4d-b0a0-4b01-9ee9-7e3594484ff6.jpg?v=1781282610"],"published_at":"2026-06-12T10:31:56-07:00","inquiry_sku":"DWXW-1008200"},{"handle":"fluo-wood-emerald-artmura","dw_sku":"DWXW-1008199","sku":null,"title":"Fluo Wood Emerald Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Emerald Wallcovering","series":"Fluo Wood Emerald","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Emerald is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_007_EMERALD.jpg?v=1781282613","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_490c499b-4648-498a-af57-fb3f1f76091f.jpg?v=1781282613","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_007_EMERALD.jpg?v=1781282613","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_490c499b-4648-498a-af57-fb3f1f76091f.jpg?v=1781282613"],"published_at":"2026-06-12T10:31:53-07:00","inquiry_sku":"DWXW-1008199"},{"handle":"fluo-wood-chameleon-artmura","dw_sku":"DWXW-1008198","sku":null,"title":"Fluo Wood Chameleon Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Chameleon Wallcovering","series":"Fluo Wood Chameleon","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Chameleon is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_006_CHAMELEON.jpg?v=1781282606","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_852508ac-2a1e-446a-be70-67044f36037d.jpg?v=1781282606","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_006_CHAMELEON.jpg?v=1781282606","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_852508ac-2a1e-446a-be70-67044f36037d.jpg?v=1781282606"],"published_at":"2026-06-12T10:31:49-07:00","inquiry_sku":"DWXW-1008198"},{"handle":"fluo-wood-hortensia-artmura","dw_sku":"DWXW-1008197","sku":null,"title":"Fluo Wood Hortensia Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Hortensia Wallcovering","series":"Fluo Wood Hortensia","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Hortensia is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_005_HORTENSIA.jpg?v=1781282617","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_10d4c8ad-f7aa-49f3-af8b-55507b6b5572.jpg?v=1781282617","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_005_HORTENSIA.jpg?v=1781282617","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_10d4c8ad-f7aa-49f3-af8b-55507b6b5572.jpg?v=1781282617"],"published_at":"2026-06-12T10:31:46-07:00","inquiry_sku":"DWXW-1008197"},{"handle":"fluo-wood-butterfly-artmura","dw_sku":"DWXW-1008196","sku":null,"title":"Fluo Wood Butterfly Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Butterfly Wallcovering","series":"Fluo Wood Butterfly","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Butterfly is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_004_BUTTERFLY.jpg?v=1781282603","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_6eaaf860-e4c6-4c34-9569-bf2e2872e693.jpg?v=1781282603","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_004_BUTTERFLY.jpg?v=1781282603","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_6eaaf860-e4c6-4c34-9569-bf2e2872e693.jpg?v=1781282603"],"published_at":"2026-06-12T10:31:42-07:00","inquiry_sku":"DWXW-1008196"},{"handle":"fluo-wood-seahorse-artmura","dw_sku":"DWXW-1008195","sku":null,"title":"Fluo Wood Seahorse Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Seahorse Wallcovering","series":"Fluo Wood Seahorse","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Seahorse is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_003_SEAHORSE.jpg?v=1781282627","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_3e9c9ee5-4b5e-47dc-8239-bc764c119182.jpg?v=1781282627","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_003_SEAHORSE.jpg?v=1781282627","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_3e9c9ee5-4b5e-47dc-8239-bc764c119182.jpg?v=1781282627"],"published_at":"2026-06-12T10:31:38-07:00","inquiry_sku":"DWXW-1008195"},{"handle":"fluo-wood-wisteria-artmura","dw_sku":"DWXW-1008194","sku":null,"title":"Fluo Wood Wisteria Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Wisteria Wallcovering","series":"Fluo Wood Wisteria","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Wisteria is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_002_WYSTERIA.jpg?v=1781282631","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_587e2ba0-e32c-433e-b6c6-730893110141.jpg?v=1781282631","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_002_WYSTERIA.jpg?v=1781282631","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering_587e2ba0-e32c-433e-b6c6-730893110141.jpg?v=1781282631"],"published_at":"2026-06-12T10:31:34-07:00","inquiry_sku":"DWXW-1008194"},{"handle":"fluo-wood-light-coral-artmura","dw_sku":"DWXW-1008193","sku":null,"title":"Fluo Wood Light Coral Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Fluo Wood Light Coral Wallcovering","series":"Fluo Wood Light Coral","color":null,"book":"Wallcovering","color_bucket":"orange","hue":30,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":565,"cost":null,"price_code":null,"body_html":"Fluo Wood Light Coral is a designer wallcovering with a wood-inspired texture and a vivid, nature-led palette. It brings color, movement, and a playful contemporary feel to feature walls, creative interiors, and spaces that call for a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_001_CORAL.jpg?v=1781282620","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering.jpg?v=1781282620","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_F_001_CORAL.jpg?v=1781282620","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUO-WOOD-Collection-La-Scala-Milano-Wallcovering.jpg?v=1781282620"],"published_at":"2026-06-12T10:31:31-07:00","inquiry_sku":"DWXW-1008193"},{"handle":"metal-wood-carbon-artmura","dw_sku":"DWXW-1008192","sku":null,"title":"Metal Wood Carbon Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Metal Wood Carbon Wallcovering","series":"Metal Wood Carbon","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":541,"cost":null,"price_code":null,"body_html":"Metal Wood Carbon is a designer wallcovering that pairs wood-inspired texture with a cooler metallic edge. It adds depth and light play to living rooms, dining spaces, and modern interiors that need a bold but polished statement. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_005_CARBON.jpg?v=1781282752","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_99141af4-412a-4664-9d2f-37bb8df95c9a.jpg?v=1781282752","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_005_CARBON.jpg?v=1781282752","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_99141af4-412a-4664-9d2f-37bb8df95c9a.jpg?v=1781282752"],"published_at":"2026-06-12T10:31:27-07:00","inquiry_sku":"DWXW-1008192"},{"handle":"metal-wood-storm-artmura","dw_sku":"DWXW-1008191","sku":null,"title":"Metal Wood Storm Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Metal Wood Storm Wallcovering","series":"Metal Wood Storm","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":541,"cost":null,"price_code":null,"body_html":"Metal Wood Storm is a designer wallcovering that pairs wood-inspired texture with a cooler metallic edge. It adds depth and light play to living rooms, dining spaces, and modern interiors that need a bold but polished statement. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_004_STORM.jpg?v=1781282766","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_ec4e7940-08c1-40f0-b18b-6f0d7ae7f3e1.jpg?v=1781282766","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_004_STORM.jpg?v=1781282766","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_ec4e7940-08c1-40f0-b18b-6f0d7ae7f3e1.jpg?v=1781282766"],"published_at":"2026-06-12T10:31:23-07:00","inquiry_sku":"DWXW-1008191"},{"handle":"metal-wood-steel-artmura","dw_sku":"DWXW-1008190","sku":null,"title":"Metal Wood Steel Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Metal Wood Steel Wallcovering","series":"Metal Wood Steel","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":541,"cost":null,"price_code":null,"body_html":"Metal Wood Steel is a designer wallcovering that pairs wood-inspired texture with a cooler metallic edge. It adds depth and light play to living rooms, dining spaces, and modern interiors that need a bold but polished statement. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_003_STEEL.jpg?v=1781282763","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_f2e5d493-04e4-4424-8619-0876c31466d1.jpg?v=1781282763","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_003_STEEL.jpg?v=1781282763","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_f2e5d493-04e4-4424-8619-0876c31466d1.jpg?v=1781282763"],"published_at":"2026-06-12T10:31:20-07:00","inquiry_sku":"DWXW-1008190"},{"handle":"metal-wood-pearl-artmura","dw_sku":"DWXW-1008189","sku":null,"title":"Metal Wood Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Metal Wood Pearl Wallcovering","series":"Metal Wood Pearl","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":541,"cost":null,"price_code":null,"body_html":"Metal Wood Pearl is a designer wallcovering that pairs wood-inspired texture with a cooler metallic edge. It adds depth and light play to living rooms, dining spaces, and modern interiors that need a bold but polished statement. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_002_PEARL.jpg?v=1781282759","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_e8ff179c-8674-421a-9fac-20b3916527ec.jpg?v=1781282759","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_002_PEARL.jpg?v=1781282759","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering_e8ff179c-8674-421a-9fac-20b3916527ec.jpg?v=1781282759"],"published_at":"2026-06-12T10:31:16-07:00","inquiry_sku":"DWXW-1008189"},{"handle":"metal-wood-ice-artmura","dw_sku":"DWXW-1008188","sku":null,"title":"Metal Wood Ice Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Metal Wood Ice Wallcovering","series":"Metal Wood Ice","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":541,"cost":null,"price_code":null,"body_html":"Metal Wood Ice is a designer wallcovering that pairs wood-inspired texture with a cooler metallic edge. It adds depth and light play to living rooms, dining spaces, and modern interiors that need a bold but polished statement. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_001_ICE.jpg?v=1781282755","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering.jpg?v=1781282755","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_M_001_ICE.jpg?v=1781282755","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/METAL-WOOD-Collection-La-Scala-Milano-Wallcovering.jpg?v=1781282755"],"published_at":"2026-06-12T10:31:12-07:00","inquiry_sku":"DWXW-1008188"},{"handle":"natural-wood-denim-artmura","dw_sku":"DWXW-1008187","sku":null,"title":"Natural Wood Denim Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Denim Wallcovering","series":"Natural Wood Denim","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Denim is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_009_DENIM.jpg?v=1781282773","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_315463ec-d995-460c-9692-6dcf9c67b7d7.jpg?v=1781282773","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_009_DENIM.jpg?v=1781282773","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_315463ec-d995-460c-9692-6dcf9c67b7d7.jpg?v=1781282773"],"published_at":"2026-06-12T10:31:08-07:00","inquiry_sku":"DWXW-1008187"},{"handle":"natural-wood-classic-gray-artmura","dw_sku":"DWXW-1008186","sku":null,"title":"Natural Wood Classic Gray Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Classic Gray Wallcovering","series":"Natural Wood Classic Gray","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Classic Gray is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_008_CLASSIC_GRAY.jpg?v=1781282769","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_b608be10-6037-493a-b959-c36f9bcc429a.jpg?v=1781282769","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_008_CLASSIC_GRAY.jpg?v=1781282769","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_b608be10-6037-493a-b959-c36f9bcc429a.jpg?v=1781282769"],"published_at":"2026-06-12T10:31:04-07:00","inquiry_sku":"DWXW-1008186"},{"handle":"natural-wood-mint-artmura","dw_sku":"DWXW-1008185","sku":null,"title":"Natural Wood Mint Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Mint Wallcovering","series":"Natural Wood Mint","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Mint is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_007_MINT.jpg?v=1781282780","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_92794a52-033d-4686-ba8e-3badd10b3751.jpg?v=1781282780","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_007_MINT.jpg?v=1781282780","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_92794a52-033d-4686-ba8e-3badd10b3751.jpg?v=1781282780"],"published_at":"2026-06-12T10:31:01-07:00","inquiry_sku":"DWXW-1008185"},{"handle":"natural-wood-terracotta-artmura","dw_sku":"DWXW-1008184","sku":null,"title":"Natural Wood Terracotta Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Terracotta Wallcovering","series":"Natural Wood Terracotta","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Terracotta is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_006_TERRACOTTA.jpg?v=1781282798","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_f6e99f39-37bf-4215-9012-e860e7877c41.jpg?v=1781282798","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_006_TERRACOTTA.jpg?v=1781282798","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_f6e99f39-37bf-4215-9012-e860e7877c41.jpg?v=1781282798"],"published_at":"2026-06-12T10:30:57-07:00","inquiry_sku":"DWXW-1008184"},{"handle":"natural-wood-salmon-artmura","dw_sku":"DWXW-1008183","sku":null,"title":"Natural Wood Salmon Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Salmon Wallcovering","series":"Natural Wood Salmon","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Salmon is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_005_SALMON.jpg?v=1781282787","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_e8b285c0-d0b8-43c0-bcc6-95c4d9f1f34d.jpg?v=1781282787","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_005_SALMON.jpg?v=1781282787","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_e8b285c0-d0b8-43c0-bcc6-95c4d9f1f34d.jpg?v=1781282787"],"published_at":"2026-06-12T10:30:53-07:00","inquiry_sku":"DWXW-1008183"},{"handle":"natural-wood-peach-artmura","dw_sku":"DWXW-1008182","sku":null,"title":"Natural Wood Peach Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Peach Wallcovering","series":"Natural Wood Peach","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Peach is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_004_PEACH.jpg?v=1781282784","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_e27516bf-95bf-463b-8d5a-4753a9c0bfd1.jpg?v=1781282784","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_004_PEACH.jpg?v=1781282784","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_e27516bf-95bf-463b-8d5a-4753a9c0bfd1.jpg?v=1781282784"],"published_at":"2026-06-12T10:30:49-07:00","inquiry_sku":"DWXW-1008182"},{"handle":"natural-wood-lime-artmura","dw_sku":"DWXW-1008181","sku":null,"title":"Natural Wood Lime Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Lime Wallcovering","series":"Natural Wood Lime","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Lime is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_003_LIME.jpg?v=1781282777","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_68d5f8f1-3412-4b36-9106-7e24b68fe8fc.jpg?v=1781282777","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_003_LIME.jpg?v=1781282777","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_68d5f8f1-3412-4b36-9106-7e24b68fe8fc.jpg?v=1781282777"],"published_at":"2026-06-12T10:30:46-07:00","inquiry_sku":"DWXW-1008181"},{"handle":"natural-wood-sea-salt-artmura","dw_sku":"DWXW-1008180","sku":null,"title":"Natural Wood Sea Salt Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Sea Salt Wallcovering","series":"Natural Wood Sea Salt","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Sea Salt is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_002_SEA_SALT.jpg?v=1781282791","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_ce5bfa0a-a09d-4d3b-bfac-36a2642c0388.jpg?v=1781282791","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_002_SEA_SALT.jpg?v=1781282791","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering_ce5bfa0a-a09d-4d3b-bfac-36a2642c0388.jpg?v=1781282791"],"published_at":"2026-06-12T10:30:42-07:00","inquiry_sku":"DWXW-1008180"},{"handle":"natural-wood-simply-white-artmura","dw_sku":"DWXW-1008179","sku":null,"title":"Natural Wood Simply White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Natural Wood Simply White Wallcovering","series":"Natural Wood Simply White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":533,"cost":null,"price_code":null,"body_html":"Natural Wood Simply White is a designer wallcovering with a wood-inspired surface and a softer, more natural character. It creates a warm, textural backdrop for bedrooms, living rooms, and interiors that lean calm, contemporary, and organic. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_001_SIMPLY_WHITE.jpg?v=1781282795","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering.jpg?v=1781282795","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/WOOD_N_001_SIMPLY_WHITE.jpg?v=1781282795","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/NATURAL-WOOD-Collection-La-Scala-Milano-Wallcovering.jpg?v=1781282795"],"published_at":"2026-06-12T10:30:39-07:00","inquiry_sku":"DWXW-1008179"},{"handle":"pure-gold-artmura","dw_sku":"DWXW-1006021","sku":null,"title":"Pure Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pure Gold Wallcovering","series":"Pure Gold","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pure Gold is a designer wallcovering with a minimal, textural surface and a calm contemporary feel. It is a natural fit for bedrooms, living rooms, and quiet interiors that benefit from softness, depth, and restraint. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3007.jpg?v=1781282923","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_6.jpg?v=1781282923","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3007.jpg?v=1781282923","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_6.jpg?v=1781282923"],"published_at":"2026-06-12T10:30:35-07:00","inquiry_sku":"DWXW-1006021"},{"handle":"pure-beige-artmura","dw_sku":"DWXW-1006020","sku":null,"title":"Pure Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pure Beige Wallcovering","series":"Pure Beige","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pure Beige is a designer wallcovering with a minimal, textural surface and a calm contemporary feel. It is a natural fit for bedrooms, living rooms, and quiet interiors that benefit from softness, depth, and restraint. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3004.jpg?v=1781282920","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_5.jpg?v=1781282920","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3004.jpg?v=1781282920","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_5.jpg?v=1781282920"],"published_at":"2026-06-12T10:30:31-07:00","inquiry_sku":"DWXW-1006020"},{"handle":"pure-pink-artmura","dw_sku":"DWXW-1006019","sku":null,"title":"Pure Pink Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pure Pink Wallcovering","series":"Pure Pink","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pure Pink is a designer wallcovering with a minimal, textural surface and a calm contemporary feel. It is a natural fit for bedrooms, living rooms, and quiet interiors that benefit from softness, depth, and restraint. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3003.jpg?v=1781282934","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_4.1.jpg?v=1781282934","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3003.jpg?v=1781282934","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_4.1.jpg?v=1781282934"],"published_at":"2026-06-12T10:30:28-07:00","inquiry_sku":"DWXW-1006019"},{"handle":"pure-pearl-artmura","dw_sku":"DWXW-1006018","sku":null,"title":"Pure Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pure Pearl Wallcovering","series":"Pure Pearl","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pure Pearl is a designer wallcovering with a minimal, textural surface and a calm contemporary feel. It is a natural fit for bedrooms, living rooms, and quiet interiors that benefit from softness, depth, and restraint. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3002.jpg?v=1781282930","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_1_7c5b9a33-2aaf-4e19-ab56-7586eedd0a71.jpg?v=1781282930","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3002.jpg?v=1781282930","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_1_7c5b9a33-2aaf-4e19-ab56-7586eedd0a71.jpg?v=1781282930"],"published_at":"2026-06-12T10:30:24-07:00","inquiry_sku":"DWXW-1006018"},{"handle":"pure-off-white-artmura","dw_sku":"DWXW-1006017","sku":null,"title":"Pure Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pure Off-White Wallcovering","series":"Pure Off-White","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pure Off-White is a designer wallcovering with a minimal, textural surface and a calm contemporary feel. It is a natural fit for bedrooms, living rooms, and quiet interiors that benefit from softness, depth, and restraint. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3001.jpg?v=1781282926","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_2.jpg?v=1781282926","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3001.jpg?v=1781282926","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_2.jpg?v=1781282926"],"published_at":"2026-06-12T10:30:20-07:00","inquiry_sku":"DWXW-1006017"},{"handle":"pure-white-artmura","dw_sku":"DWXW-1006016","sku":null,"title":"Pure White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pure White Wallcovering","series":"Pure White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pure White is a designer wallcovering with a minimal, textural surface and a calm contemporary feel. It is a natural fit for bedrooms, living rooms, and quiet interiors that benefit from softness, depth, and restraint. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3000.jpg?v=1781282937","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_1.jpg?v=1781282937","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PURE3000.jpg?v=1781282937","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pure_1.jpg?v=1781282937"],"published_at":"2026-06-12T10:30:17-07:00","inquiry_sku":"DWXW-1006016"},{"handle":"pentagram-pink-artmura","dw_sku":"DWXW-1006015","sku":null,"title":"Pentagram Pink Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pentagram Pink Wallcovering","series":"Pentagram Pink","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pentagram Pink is a designer wallcovering with a bold geometric rhythm and a textured contemporary finish. It brings structure and visual energy to statement walls, dining spaces, and interiors that lean graphic and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3305.jpg?v=1781282912","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_2_ebb21afc-2294-47d8-ba2a-72dc78d13f8c.jpg?v=1781282912","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3305.jpg?v=1781282912","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_2_ebb21afc-2294-47d8-ba2a-72dc78d13f8c.jpg?v=1781282912"],"published_at":"2026-06-12T10:30:13-07:00","inquiry_sku":"DWXW-1006015"},{"handle":"pentagram-gold-artmura","dw_sku":"DWXW-1006014","sku":null,"title":"Pentagram Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pentagram Gold Wallcovering","series":"Pentagram Gold","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pentagram Gold is a designer wallcovering with a bold geometric rhythm and a textured contemporary finish. It brings structure and visual energy to statement walls, dining spaces, and interiors that lean graphic and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3303.jpg?v=1781282905","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_3.jpg?v=1781282905","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3303.jpg?v=1781282905","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_3.jpg?v=1781282905"],"published_at":"2026-06-12T10:30:09-07:00","inquiry_sku":"DWXW-1006014"},{"handle":"pentagram-pearl-artmura","dw_sku":"DWXW-1006013","sku":null,"title":"Pentagram Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pentagram Pearl Wallcovering","series":"Pentagram Pearl","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pentagram Pearl is a designer wallcovering with a bold geometric rhythm and a textured contemporary finish. It brings structure and visual energy to statement walls, dining spaces, and interiors that lean graphic and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3301.jpg?v=1781282909","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_2_fbe502a7-7035-4564-b6ff-b74a1e7e269c.jpg?v=1781282909","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3301.jpg?v=1781282909","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_2_fbe502a7-7035-4564-b6ff-b74a1e7e269c.jpg?v=1781282909"],"published_at":"2026-06-12T10:30:06-07:00","inquiry_sku":"DWXW-1006013"},{"handle":"pentagram-purple-artmura","dw_sku":"DWXW-1006012","sku":null,"title":"Pentagram Purple Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Pentagram Purple Wallcovering","series":"Pentagram Purple","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Pentagram Purple is a designer wallcovering with a bold geometric rhythm and a textured contemporary finish. It brings structure and visual energy to statement walls, dining spaces, and interiors that lean graphic and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3300.jpg?v=1781282916","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_2.jpg?v=1781282916","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/PENTA3300.jpg?v=1781282916","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Pentagram_2.jpg?v=1781282916"],"published_at":"2026-06-12T10:30:02-07:00","inquiry_sku":"DWXW-1006012"},{"handle":"flux-copper-artmura","dw_sku":"DWXW-1006011","sku":null,"title":"Flux Copper Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Flux Copper Wallcovering","series":"Flux Copper","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Flux Copper is a designer wallcovering with a geometric, textural look that brings movement and depth to the wall. It creates a refined focal point in living rooms, dining spaces, and other contemporary interiors with an architectural point of view. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3204.jpg?v=1781282634","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_2_1cde9a26-4a19-489b-a4f1-e790b5b2b9f3.jpg?v=1781282634","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3204.jpg?v=1781282634","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_2_1cde9a26-4a19-489b-a4f1-e790b5b2b9f3.jpg?v=1781282634"],"published_at":"2026-06-12T10:29:58-07:00","inquiry_sku":"DWXW-1006011"},{"handle":"flux-pink-artmura","dw_sku":"DWXW-1006010","sku":null,"title":"Flux Pink Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Flux Pink Wallcovering","series":"Flux Pink","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Flux Pink is a designer wallcovering with a geometric, textural look that brings movement and depth to the wall. It creates a refined focal point in living rooms, dining spaces, and other contemporary interiors with an architectural point of view. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3203.jpg?v=1781282641","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_3_2e086bb0-5097-4866-8ca0-0b91d9af17c8.jpg?v=1781282641","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3203.jpg?v=1781282641","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_3_2e086bb0-5097-4866-8ca0-0b91d9af17c8.jpg?v=1781282641"],"published_at":"2026-06-12T10:29:55-07:00","inquiry_sku":"DWXW-1006010"},{"handle":"flux-pearl-artmura","dw_sku":"DWXW-1006009","sku":null,"title":"Flux Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Flux Pearl Wallcovering","series":"Flux Pearl","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Flux Pearl is a designer wallcovering with a geometric, textural look that brings movement and depth to the wall. It creates a refined focal point in living rooms, dining spaces, and other contemporary interiors with an architectural point of view. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3201.jpg?v=1781282638","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_3.jpg?v=1781282638","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3201.jpg?v=1781282638","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_3.jpg?v=1781282638"],"published_at":"2026-06-12T10:29:51-07:00","inquiry_sku":"DWXW-1006009"},{"handle":"flux-purple-artmura","dw_sku":"DWXW-1006008","sku":null,"title":"Flux Purple Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Flux Purple Wallcovering","series":"Flux Purple","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Flux Purple is a designer wallcovering with a geometric, textural look that brings movement and depth to the wall. It creates a refined focal point in living rooms, dining spaces, and other contemporary interiors with an architectural point of view. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3200.jpg?v=1781282645","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_2.jpg?v=1781282645","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/FLUX3200.jpg?v=1781282645","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Flux_2.jpg?v=1781282645"],"published_at":"2026-06-12T10:29:48-07:00","inquiry_sku":"DWXW-1006008"},{"handle":"diapason-purple-artmura","dw_sku":"DWXW-1006007","sku":null,"title":"Diapason Purple Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Diapason Purple Wallcovering","series":"Diapason Purple","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Diapason Purple is a designer wallcovering with a rhythmic pattern that brings harmony, movement, and texture to the wall. It suits living rooms, hallways, and feature walls where you want a refined statement with a softer handcrafted feel. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DIAP3705.jpg?v=1781282594","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Diapason-room_db5189e8-0a1e-478f-8c0f-5fab13193d5a.jpg?v=1781282594","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DIAP3705.jpg?v=1781282594","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Diapason-room_db5189e8-0a1e-478f-8c0f-5fab13193d5a.jpg?v=1781282594"],"published_at":"2026-06-12T10:29:44-07:00","inquiry_sku":"DWXW-1006007"},{"handle":"diapason-silver-artmura","dw_sku":"DWXW-1006006","sku":null,"title":"Diapason Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Diapason Silver Wallcovering","series":"Diapason Silver","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Diapason Silver is a designer wallcovering with a rhythmic pattern that brings harmony, movement, and texture to the wall. It suits living rooms, hallways, and feature walls where you want a refined statement with a softer handcrafted feel. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DIAP3702.jpg?v=1781282598","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Diapason-room.jpg?v=1781282598","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/DIAP3702.jpg?v=1781282598","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Diapason-room.jpg?v=1781282598"],"published_at":"2026-06-12T10:29:41-07:00","inquiry_sku":"DWXW-1006006"},{"handle":"crystal-pink-artmura","dw_sku":"DWXW-1006005","sku":null,"title":"Crystal Pink Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Crystal Pink Wallcovering","series":"Crystal Pink","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Crystal Pink is a designer wallcovering with a luminous surface and a sleek contemporary edge. It reflects light beautifully and adds a polished focal point to living rooms, dining spaces, and sophisticated commercial interiors. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/CRY3104.jpg?v=1781282586","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Crystal-room_47942f69-8835-4503-9c7a-ab85206e9c6f.jpg?v=1781282586","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/CRY3104.jpg?v=1781282586","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Crystal-room_47942f69-8835-4503-9c7a-ab85206e9c6f.jpg?v=1781282586"],"published_at":"2026-06-12T10:29:37-07:00","inquiry_sku":"DWXW-1006005"},{"handle":"crystal-silver-artmura","dw_sku":"DWXW-1006004","sku":null,"title":"Crystal Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Crystal Silver Wallcovering","series":"Crystal Silver","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Crystal Silver is a designer wallcovering with a luminous surface and a sleek contemporary edge. It reflects light beautifully and adds a polished focal point to living rooms, dining spaces, and sophisticated commercial interiors. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/CRY3101.jpg?v=1781282590","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Crystal-room_bc6c66dd-0742-4492-8e09-41bb02daeb32.jpg?v=1781282590","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/CRY3101.jpg?v=1781282590","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Crystal-room_bc6c66dd-0742-4492-8e09-41bb02daeb32.jpg?v=1781282590"],"published_at":"2026-06-12T10:29:33-07:00","inquiry_sku":"DWXW-1006004"},{"handle":"crystal-gold-artmura","dw_sku":"DWXW-1006003","sku":null,"title":"Crystal Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Crystal Gold Wallcovering","series":"Crystal Gold","color":null,"book":"Wallcovering","color_bucket":"gold","hue":50,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":471,"cost":null,"price_code":null,"body_html":"Crystal Gold is a designer wallcovering with a luminous surface and a sleek contemporary edge. It reflects light beautifully and adds a polished focal point to living rooms, dining spaces, and sophisticated commercial interiors. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/CRY3100.jpg?v=1781282583","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Crystal-room.jpg?v=1781282583","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/CRY3100.jpg?v=1781282583","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Crystal-room.jpg?v=1781282583"],"published_at":"2026-06-12T10:29:30-07:00","inquiry_sku":"DWXW-1006003"},{"handle":"ardesia-off-white-artmura","dw_sku":"DWXW-1005466","sku":null,"title":"Ardesia Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Ardesia Off-White Wallcovering","series":"Ardesia Off-White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Ardesia Off-White is a designer wallcovering with a stone-inspired texture and an elegant contemporary character. It creates a grounded, tactile backdrop for living rooms, bedrooms, and statement walls that call for quiet depth. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-920.jpg?v=1781282482","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_4_44e1f8d3-9295-4e88-b72f-90d71be8a0aa.jpg?v=1781282482","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-920.jpg?v=1781282482","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_4_44e1f8d3-9295-4e88-b72f-90d71be8a0aa.jpg?v=1781282482"],"published_at":"2026-06-12T10:29:26-07:00","inquiry_sku":"DWXW-1005466"},{"handle":"composizione-grey-artmura","dw_sku":"DWXW-1005464","sku":null,"title":"Composizione Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Grey Wallcovering","series":"Composizione Grey","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Grey is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM606.jpg?v=1781282522","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-600-6.jpg?v=1781282522","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM606.jpg?v=1781282522","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-600-6.jpg?v=1781282522"],"published_at":"2026-06-12T10:29:23-07:00","inquiry_sku":"DWXW-1005464"},{"handle":"composizione-blue-artmura","dw_sku":"DWXW-1005460","sku":null,"title":"Composizione Blue Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Blue Wallcovering","series":"Composizione Blue","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Blue is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM602.jpg?v=1781282493","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-600-2.jpg?v=1781282493","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM602.jpg?v=1781282493","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-600-2.jpg?v=1781282493"],"published_at":"2026-06-12T10:29:09-07:00","inquiry_sku":"DWXW-1005460"},{"handle":"composizione-red-artmura","dw_sku":"DWXW-1005459","sku":null,"title":"Composizione Red Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Red Wallcovering","series":"Composizione Red","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Red is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM601.jpg?v=1781282544","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-600-1.jpg?v=1781282544","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM601.jpg?v=1781282544","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-600-1.jpg?v=1781282544"],"published_at":"2026-06-12T10:29:05-07:00","inquiry_sku":"DWXW-1005459"},{"handle":"composizione-charcoal-artmura","dw_sku":"DWXW-1005457","sku":null,"title":"Composizione Charcoal Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Charcoal Wallcovering","series":"Composizione Charcoal","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Charcoal is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM566.jpg?v=1781282507","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-6.jpg?v=1781282507","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM566.jpg?v=1781282507","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-6.jpg?v=1781282507"],"published_at":"2026-06-12T10:28:58-07:00","inquiry_sku":"DWXW-1005457"},{"handle":"composizione-green-artmura","dw_sku":"DWXW-1005456","sku":null,"title":"Composizione Green Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Green Wallcovering","series":"Composizione Green","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Green is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM565.jpg?v=1781282519","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-5.jpg?v=1781282519","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM565.jpg?v=1781282519","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-5.jpg?v=1781282519"],"published_at":"2026-06-12T10:28:54-07:00","inquiry_sku":"DWXW-1005456"},{"handle":"composizione-gold-artmura","dw_sku":"DWXW-1005454","sku":null,"title":"Composizione Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Gold Wallcovering","series":"Composizione Gold","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Gold is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM563.jpg?v=1781282511","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-3.jpg?v=1781282511","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM563.jpg?v=1781282511","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-3.jpg?v=1781282511"],"published_at":"2026-06-12T10:28:46-07:00","inquiry_sku":"DWXW-1005454"},{"handle":"composizione-white-artmura","dw_sku":"DWXW-1005453","sku":null,"title":"Composizione White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione White Wallcovering","series":"Composizione White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione White is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM562.jpg?v=1781282558","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-2.jpg?v=1781282558","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM562.jpg?v=1781282558","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-2.jpg?v=1781282558"],"published_at":"2026-06-12T10:28:43-07:00","inquiry_sku":"DWXW-1005453"},{"handle":"composizione-silver-artmura","dw_sku":"DWXW-1005452","sku":null,"title":"Composizione Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Silver Wallcovering","series":"Composizione Silver","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Silver is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM561.jpg?v=1781282547","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-1.jpg?v=1781282547","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM561.jpg?v=1781282547","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-560-1.jpg?v=1781282547"],"published_at":"2026-06-12T10:28:39-07:00","inquiry_sku":"DWXW-1005452"},{"handle":"composizione-yellow-artmura","dw_sku":"DWXW-1005450","sku":null,"title":"Composizione Yellow Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Yellow Wallcovering","series":"Composizione Yellow","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Yellow is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM246.jpg?v=1781282561","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-6.jpg?v=1781282561","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM246.jpg?v=1781282561","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-6.jpg?v=1781282561"],"published_at":"2026-06-12T10:28:31-07:00","inquiry_sku":"DWXW-1005450"},{"handle":"composizione-brown-artmura","dw_sku":"DWXW-1005449","sku":null,"title":"Composizione Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Brown Wallcovering","series":"Composizione Brown","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Brown is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM245.jpg?v=1781282497","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-5.jpg?v=1781282497","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM245.jpg?v=1781282497","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-5.jpg?v=1781282497"],"published_at":"2026-06-12T10:28:28-07:00","inquiry_sku":"DWXW-1005449"},{"handle":"composizione-stone-artmura","dw_sku":"DWXW-1005448","sku":null,"title":"Composizione Stone Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Stone Wallcovering","series":"Composizione Stone","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Stone is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM244.jpg?v=1781282555","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-4.jpg?v=1781282555","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM244.jpg?v=1781282555","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-4.jpg?v=1781282555"],"published_at":"2026-06-12T10:28:23-07:00","inquiry_sku":"DWXW-1005448"},{"handle":"composizione-pearl-artmura","dw_sku":"DWXW-1005447","sku":null,"title":"Composizione Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Pearl Wallcovering","series":"Composizione Pearl","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Pearl is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM240.jpg?v=1781282536","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-3.jpg?v=1781282536","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM240.jpg?v=1781282536","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-3.jpg?v=1781282536"],"published_at":"2026-06-12T10:28:20-07:00","inquiry_sku":"DWXW-1005447"},{"handle":"composizione-navy-artmura","dw_sku":"DWXW-1005446","sku":null,"title":"Composizione Navy Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Navy Wallcovering","series":"Composizione Navy","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Navy is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM241.jpg?v=1781282526","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-2.jpg?v=1781282526","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM241.jpg?v=1781282526","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-2.jpg?v=1781282526"],"published_at":"2026-06-12T10:28:15-07:00","inquiry_sku":"DWXW-1005446"},{"handle":"composizione-black-artmura","dw_sku":"DWXW-1005445","sku":null,"title":"Composizione Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Black Wallcovering","series":"Composizione Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Black is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM243.jpg?v=1781282489","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-1.jpg?v=1781282489","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM243.jpg?v=1781282489","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240-1.jpg?v=1781282489"],"published_at":"2026-06-12T10:28:12-07:00","inquiry_sku":"DWXW-1005445"},{"handle":"composizione-off-white-artmura","dw_sku":"DWXW-1005444","sku":null,"title":"Composizione Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Composizione Off-White Wallcovering","series":"Composizione Off-White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Composizione Off-White is a designer wallcovering with a layered abstract composition and a distinctly artistic feel. It adds movement and visual texture to dining rooms, lounges, and other spaces that benefit from a more expressive surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM242.jpg?v=1781282529","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240.jpg?v=1781282529","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Composizione-COM242.jpg?v=1781282529","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-COMPOSIZIONE-240.jpg?v=1781282529"],"published_at":"2026-06-12T10:28:08-07:00","inquiry_sku":"DWXW-1005444"},{"handle":"oak-blue-artmura","dw_sku":"DWXW-1005443","sku":null,"title":"Oak Blue Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oak Blue Wallcovering","series":"Oak Blue","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oak Blue is a designer wallcovering with a wood-inspired surface and a warm, contemporary character. It brings natural depth to bedrooms, living rooms, and other spaces that call for a calm but refined backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK754.jpg?v=1781282821","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-4.jpg?v=1781282821","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK754.jpg?v=1781282821","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-4.jpg?v=1781282821"],"published_at":"2026-06-12T10:28:05-07:00","inquiry_sku":"DWXW-1005443"},{"handle":"oak-grey-artmura","dw_sku":"DWXW-1005442","sku":null,"title":"Oak Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oak Grey Wallcovering","series":"Oak Grey","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oak Grey is a designer wallcovering with a wood-inspired surface and a warm, contemporary character. It brings natural depth to bedrooms, living rooms, and other spaces that call for a calm but refined backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK753.jpg?v=1781282828","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-3.jpg?v=1781282828","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK753.jpg?v=1781282828","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-3.jpg?v=1781282828"],"published_at":"2026-06-12T10:28:01-07:00","inquiry_sku":"DWXW-1005442"},{"handle":"oak-off-white-artmura","dw_sku":"DWXW-1005441","sku":null,"title":"Oak Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oak Off-White Wallcovering","series":"Oak Off-White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oak Off-White is a designer wallcovering with a wood-inspired surface and a warm, contemporary character. It brings natural depth to bedrooms, living rooms, and other spaces that call for a calm but refined backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK752.jpg?v=1781282831","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-2.jpg?v=1781282831","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK752.jpg?v=1781282831","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-2.jpg?v=1781282831"],"published_at":"2026-06-12T10:27:57-07:00","inquiry_sku":"DWXW-1005441"},{"handle":"oak-yellow-artmura","dw_sku":"DWXW-1005440","sku":null,"title":"Oak Yellow Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oak Yellow Wallcovering","series":"Oak Yellow","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oak Yellow is a designer wallcovering with a wood-inspired surface and a warm, contemporary character. It brings natural depth to bedrooms, living rooms, and other spaces that call for a calm but refined backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK751.jpg?v=1781282835","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-1.jpg?v=1781282835","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK751.jpg?v=1781282835","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK-1.jpg?v=1781282835"],"published_at":"2026-06-12T10:27:53-07:00","inquiry_sku":"DWXW-1005440"},{"handle":"oak-brown-artmura","dw_sku":"DWXW-1005439","sku":null,"title":"Oak Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oak Brown Wallcovering","series":"Oak Brown","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oak Brown is a designer wallcovering with a wood-inspired surface and a warm, contemporary character. It brings natural depth to bedrooms, living rooms, and other spaces that call for a calm but refined backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK750.jpg?v=1781282825","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK.jpg?v=1781282825","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Oak-OAK750.jpg?v=1781282825","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-OAK.jpg?v=1781282825"],"published_at":"2026-06-12T10:27:50-07:00","inquiry_sku":"DWXW-1005439"},{"handle":"origami-green-artmura","dw_sku":"DWXW-1005438","sku":null,"title":"Origami Green Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Green Wallcovering","series":"Origami Green","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Green is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-456.jpg?v=1781282885","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-6.jpg?v=1781282885","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-456.jpg?v=1781282885","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-6.jpg?v=1781282885"],"published_at":"2026-06-12T10:27:46-07:00","inquiry_sku":"DWXW-1005438"},{"handle":"origami-beige-artmura","dw_sku":"DWXW-1005435","sku":null,"title":"Origami Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Beige Wallcovering","series":"Origami Beige","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Beige is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-453.jpg?v=1781282857","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-3.jpg?v=1781282857","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-453.jpg?v=1781282857","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-3.jpg?v=1781282857"],"published_at":"2026-06-12T10:27:36-07:00","inquiry_sku":"DWXW-1005435"},{"handle":"origami-grey-artmura","dw_sku":"DWXW-1005434","sku":null,"title":"Origami Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Grey Wallcovering","series":"Origami Grey","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Grey is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-452.jpg?v=1781282888","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-2.jpg?v=1781282888","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-452.jpg?v=1781282888","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-2.jpg?v=1781282888"],"published_at":"2026-06-12T10:27:32-07:00","inquiry_sku":"DWXW-1005434"},{"handle":"origami-off-white-artmura","dw_sku":"DWXW-1005433","sku":null,"title":"Origami Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Off-White Wallcovering","series":"Origami Off-White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Off-White is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-451.jpg?v=1781282891","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-1.jpg?v=1781282892","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-451.jpg?v=1781282891","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450-1.jpg?v=1781282892"],"published_at":"2026-06-12T10:27:29-07:00","inquiry_sku":"DWXW-1005433"},{"handle":"origami-taupe-artmura","dw_sku":"DWXW-1005432","sku":null,"title":"Origami Taupe Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Taupe Wallcovering","series":"Origami Taupe","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Taupe is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-450.jpg?v=1781282902","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450.jpg?v=1781282902","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-450.jpg?v=1781282902","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-450.jpg?v=1781282902"],"published_at":"2026-06-12T10:27:25-07:00","inquiry_sku":"DWXW-1005432"},{"handle":"origami-brown-artmura","dw_sku":"DWXW-1005431","sku":null,"title":"Origami Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Brown Wallcovering","series":"Origami Brown","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Brown is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-446.jpg?v=1781282868","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-6.jpg?v=1781282868","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-446.jpg?v=1781282868","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-6.jpg?v=1781282868"],"published_at":"2026-06-12T10:27:21-07:00","inquiry_sku":"DWXW-1005431"},{"handle":"origami-red-artmura","dw_sku":"DWXW-1005430","sku":null,"title":"Origami Red Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Red Wallcovering","series":"Origami Red","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Red is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-445.jpg?v=1781282895","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-5.jpg?v=1781282895","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-445.jpg?v=1781282895","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-5.jpg?v=1781282895"],"published_at":"2026-06-12T10:27:18-07:00","inquiry_sku":"DWXW-1005430"},{"handle":"origami-black-artmura","dw_sku":"DWXW-1005429","sku":null,"title":"Origami Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Black Wallcovering","series":"Origami Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Black is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-444.jpg?v=1781282860","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-4.jpg?v=1781282860","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-444.jpg?v=1781282860","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-4.jpg?v=1781282860"],"published_at":"2026-06-12T10:27:13-07:00","inquiry_sku":"DWXW-1005429"},{"handle":"origami-stone-artmura","dw_sku":"DWXW-1005428","sku":null,"title":"Origami Stone Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Stone Wallcovering","series":"Origami Stone","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Stone is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-443.jpg?v=1781282898","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-3.jpg?v=1781282898","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-443.jpg?v=1781282898","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-3.jpg?v=1781282898"],"published_at":"2026-06-12T10:27:10-07:00","inquiry_sku":"DWXW-1005428"},{"handle":"origami-gold-artmura","dw_sku":"DWXW-1005427","sku":null,"title":"Origami Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Gold Wallcovering","series":"Origami Gold","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Gold is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-442.jpg?v=1781282878","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-2.jpg?v=1781282878","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-442.jpg?v=1781282878","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-2.jpg?v=1781282878"],"published_at":"2026-06-12T10:27:06-07:00","inquiry_sku":"DWXW-1005427"},{"handle":"origami-copper-artmura","dw_sku":"DWXW-1005426","sku":null,"title":"Origami Copper Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Copper Wallcovering","series":"Origami Copper","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Copper is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-441.jpg?v=1781282874","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-1.jpg?v=1781282875","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-441.jpg?v=1781282874","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440-1.jpg?v=1781282875"],"published_at":"2026-06-12T10:27:03-07:00","inquiry_sku":"DWXW-1005426"},{"handle":"origami-blue-artmura","dw_sku":"DWXW-1005425","sku":null,"title":"Origami Blue Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Origami Blue Wallcovering","series":"Origami Blue","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Origami Blue is a designer wallcovering with a folded geometric motif and a sculptural sense of movement. It adds depth and a crisp contemporary rhythm to feature walls, living rooms, and modern architectural spaces. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-440.jpg?v=1781282864","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440.jpg?v=1781282864","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Origami-ORI-440.jpg?v=1781282864","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-ORIGAMI-440.jpg?v=1781282864"],"published_at":"2026-06-12T10:26:59-07:00","inquiry_sku":"DWXW-1005425"},{"handle":"materia-brown-artmura","dw_sku":"DWXW-1005424","sku":null,"title":"Materia Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Brown Wallcovering","series":"Materia Brown","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Brown is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-346.jpg?v=1781282704","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-340-6.jpg?v=1781282704","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-346.jpg?v=1781282704","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-340-6.jpg?v=1781282704"],"published_at":"2026-06-12T10:26:56-07:00","inquiry_sku":"DWXW-1005424"},{"handle":"materia-taupe-artmura","dw_sku":"DWXW-1005422","sku":null,"title":"Materia Taupe Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Taupe Wallcovering","series":"Materia Taupe","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Taupe is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-344.jpg?v=1781282740","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-340-4.jpg?v=1781282740","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-344.jpg?v=1781282740","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-340-4.jpg?v=1781282740"],"published_at":"2026-06-12T10:26:48-07:00","inquiry_sku":"DWXW-1005422"},{"handle":"materia-off-white-artmura","dw_sku":"DWXW-1005420","sku":null,"title":"Materia Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Off-White Wallcovering","series":"Materia Off-White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Off-White is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-342.jpg?v=1781282722","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_338776fa-71fe-48a1-ab91-e58dbbb9e972.jpg?v=1781282722","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-342.jpg?v=1781282722","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_338776fa-71fe-48a1-ab91-e58dbbb9e972.jpg?v=1781282722"],"published_at":"2026-06-12T10:26:41-07:00","inquiry_sku":"DWXW-1005420"},{"handle":"materia-grey-artmura","dw_sku":"DWXW-1005419","sku":null,"title":"Materia Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Grey Wallcovering","series":"Materia Grey","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Grey is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-341.jpg?v=1781282719","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_651f6ded-6000-4651-8aa0-e8653738550c.jpg?v=1781282719","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-341.jpg?v=1781282719","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_651f6ded-6000-4651-8aa0-e8653738550c.jpg?v=1781282719"],"published_at":"2026-06-12T10:26:37-07:00","inquiry_sku":"DWXW-1005419"},{"handle":"materia-black-artmura","dw_sku":"DWXW-1005417","sku":null,"title":"Materia Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Black Wallcovering","series":"Materia Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Black is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-266.jpg?v=1781282700","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-260-1-6.jpg?v=1781282700","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-266.jpg?v=1781282700","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-260-1-6.jpg?v=1781282700"],"published_at":"2026-06-12T10:26:30-07:00","inquiry_sku":"DWXW-1005417"},{"handle":"materia-copper-artmura","dw_sku":"DWXW-1005416","sku":null,"title":"Materia Copper Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Copper Wallcovering","series":"Materia Copper","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Copper is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-265.jpg?v=1781282708","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-260-2-5.jpg?v=1781282708","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-265.jpg?v=1781282708","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-260-2-5.jpg?v=1781282708","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/OPERA-I-MATERIA-260-1-5.jpg?v=1781282708"],"published_at":"2026-06-12T10:26:27-07:00","inquiry_sku":"DWXW-1005416"},{"handle":"materia-turquoise-artmura","dw_sku":"DWXW-1005415","sku":null,"title":"Materia Turquoise Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Turquoise Wallcovering","series":"Materia Turquoise","color":null,"book":"Wallcovering","color_bucket":"teal","hue":175,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Turquoise is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-264.jpg?v=1781282745","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_3.jpg?v=1781282745","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-264.jpg?v=1781282745","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_3.jpg?v=1781282745","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_adb5bb31-2aa2-4e0c-b1da-b4708706510b.jpg?v=1781282745"],"published_at":"2026-06-12T10:26:23-07:00","inquiry_sku":"DWXW-1005415"},{"handle":"materia-silver-artmura","dw_sku":"DWXW-1005414","sku":null,"title":"Materia Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Silver Wallcovering","series":"Materia Silver","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Silver is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-263.jpg?v=1781282733","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_346e006c-d390-4309-98de-b6e71a792218.jpg?v=1781282733","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-263.jpg?v=1781282733","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_346e006c-d390-4309-98de-b6e71a792218.jpg?v=1781282733"],"published_at":"2026-06-12T10:26:19-07:00","inquiry_sku":"DWXW-1005414"},{"handle":"materia-gold-artmura","dw_sku":"DWXW-1005413","sku":null,"title":"Materia Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Gold Wallcovering","series":"Materia Gold","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Gold is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-262.jpg?v=1781282712","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_4.jpg?v=1781282712","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-262.jpg?v=1781282712","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_4.jpg?v=1781282712"],"published_at":"2026-06-12T10:26:16-07:00","inquiry_sku":"DWXW-1005413"},{"handle":"materia-white-artmura","dw_sku":"DWXW-1005412","sku":null,"title":"Materia White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia White Wallcovering","series":"Materia White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia White is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-261.jpg?v=1781282748","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_55d27cf4-0d02-482c-be1e-0faa8fe2ddd3.jpg?v=1781282748","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-261.jpg?v=1781282748","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1_55d27cf4-0d02-482c-be1e-0faa8fe2ddd3.jpg?v=1781282748"],"published_at":"2026-06-12T10:26:12-07:00","inquiry_sku":"DWXW-1005412"},{"handle":"materia-pearl-artmura","dw_sku":"DWXW-1005411","sku":null,"title":"Materia Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Materia Pearl Wallcovering","series":"Materia Pearl","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Materia Pearl is a designer wallcovering with a tactile, material-led surface and a contemporary handcrafted feel. It adds warmth and texture to feature walls, dining areas, and interiors that benefit from a richer, more layered backdrop. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-260.jpg?v=1781282726","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1.jpg?v=1781282726","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia-MAT-260.jpg?v=1781282726","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Materia_1.jpg?v=1781282726"],"published_at":"2026-06-12T10:26:09-07:00","inquiry_sku":"DWXW-1005411"},{"handle":"architecture-red-artmura","dw_sku":"DWXW-1005410","sku":null,"title":"Architecture Red Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Architecture Red Wallcovering","series":"Architecture Red","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Architecture Red is a designer wallcovering with a structured, architectural pattern and a softly hand-finished feel. It brings depth and rhythm to living rooms, dining spaces, and other interiors that lean clean, modern, and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-556.jpg?v=1781282464","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_3_b31e8f05-cb62-40e7-acf4-05854324c516.jpg?v=1781282464","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-556.jpg?v=1781282464","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_3_b31e8f05-cb62-40e7-acf4-05854324c516.jpg?v=1781282464"],"published_at":"2026-06-12T10:26:05-07:00","inquiry_sku":"DWXW-1005410"},{"handle":"architecture-gold-artmura","dw_sku":"DWXW-1005409","sku":null,"title":"Architecture Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Architecture Gold Wallcovering","series":"Architecture Gold","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Architecture Gold is a designer wallcovering with a structured, architectural pattern and a softly hand-finished feel. It brings depth and rhythm to living rooms, dining spaces, and other interiors that lean clean, modern, and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Achitecture-ARC-555.jpg?v=1781282394","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_4_f746124f-d34f-4ccb-a6b0-3a34e3b307b4.jpg?v=1781282394","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Achitecture-ARC-555.jpg?v=1781282394","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_4_f746124f-d34f-4ccb-a6b0-3a34e3b307b4.jpg?v=1781282394"],"published_at":"2026-06-12T10:26:02-07:00","inquiry_sku":"DWXW-1005409"},{"handle":"architecture-silver-artmura","dw_sku":"DWXW-1005408","sku":null,"title":"Architecture Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Architecture Silver Wallcovering","series":"Architecture Silver","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Architecture Silver is a designer wallcovering with a structured, architectural pattern and a softly hand-finished feel. It brings depth and rhythm to living rooms, dining spaces, and other interiors that lean clean, modern, and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-554.jpg?v=1781282467","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_4_7b4ef99e-1419-487e-a149-ca5b195315a3.jpg?v=1781282467","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-554.jpg?v=1781282467","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_4_7b4ef99e-1419-487e-a149-ca5b195315a3.jpg?v=1781282467"],"published_at":"2026-06-12T10:25:58-07:00","inquiry_sku":"DWXW-1005408"},{"handle":"architecture-beige-artmura","dw_sku":"DWXW-1005407","sku":null,"title":"Architecture Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Architecture Beige Wallcovering","series":"Architecture Beige","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Architecture Beige is a designer wallcovering with a structured, architectural pattern and a softly hand-finished feel. It brings depth and rhythm to living rooms, dining spaces, and other interiors that lean clean, modern, and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-553.jpg?v=1781282391","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_4.jpg?v=1781282391","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-553.jpg?v=1781282391","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_4.jpg?v=1781282391"],"published_at":"2026-06-12T10:25:54-07:00","inquiry_sku":"DWXW-1005407"},{"handle":"architecture-grey-artmura","dw_sku":"DWXW-1005405","sku":null,"title":"Architecture Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Architecture Grey Wallcovering","series":"Architecture Grey","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Architecture Grey is a designer wallcovering with a structured, architectural pattern and a softly hand-finished feel. It brings depth and rhythm to living rooms, dining spaces, and other interiors that lean clean, modern, and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-551.jpg?v=1781282452","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_3.jpg?v=1781282452","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-551.jpg?v=1781282452","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_3.jpg?v=1781282452"],"published_at":"2026-06-12T10:25:47-07:00","inquiry_sku":"DWXW-1005405"},{"handle":"architecture-off-white-artmura","dw_sku":"DWXW-1005404","sku":null,"title":"Architecture Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Architecture Off-White Wallcovering","series":"Architecture Off-White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":369,"cost":null,"price_code":null,"body_html":"Architecture Off-White is a designer wallcovering with a structured, architectural pattern and a softly hand-finished feel. It brings depth and rhythm to living rooms, dining spaces, and other interiors that lean clean, modern, and refined. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-550.jpg?v=1781282460","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_2.jpg?v=1781282460","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture-ARC-550.jpg?v=1781282460","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Architecture_2.jpg?v=1781282460"],"published_at":"2026-06-12T10:25:43-07:00","inquiry_sku":"DWXW-1005404"},{"handle":"oriente-teal-artmura","dw_sku":"DWXW-1005403","sku":null,"title":"Oriente Teal Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oriente Teal Wallcovering","series":"Oriente Teal","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oriente Teal is a designer wallcovering with a decorative pattern and a refined, worldly character. It creates a rich focal point in dining rooms, lounges, and interiors that blend classic influence with a contemporary finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-894.jpg?v=1781282849","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-4.jpg?v=1781282850","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-894.jpg?v=1781282849","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-4.jpg?v=1781282850"],"published_at":"2026-06-12T10:25:40-07:00","inquiry_sku":"DWXW-1005403"},{"handle":"oriente-black-artmura","dw_sku":"DWXW-1005402","sku":null,"title":"Oriente Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oriente Black Wallcovering","series":"Oriente Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oriente Black is a designer wallcovering with a decorative pattern and a refined, worldly character. It creates a rich focal point in dining rooms, lounges, and interiors that blend classic influence with a contemporary finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-893.jpg?v=1781282839","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-3.jpg?v=1781282839","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-893.jpg?v=1781282839","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-3.jpg?v=1781282839"],"published_at":"2026-06-12T10:25:36-07:00","inquiry_sku":"DWXW-1005402"},{"handle":"oriente-brown-artmura","dw_sku":"DWXW-1005401","sku":null,"title":"Oriente Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oriente Brown Wallcovering","series":"Oriente Brown","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oriente Brown is a designer wallcovering with a decorative pattern and a refined, worldly character. It creates a rich focal point in dining rooms, lounges, and interiors that blend classic influence with a contemporary finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-892.jpg?v=1781282842","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-2.jpg?v=1781282843","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-892.jpg?v=1781282842","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-2.jpg?v=1781282843"],"published_at":"2026-06-12T10:25:32-07:00","inquiry_sku":"DWXW-1005401"},{"handle":"oriente-terracotta-artmura","dw_sku":"DWXW-1005400","sku":null,"title":"Oriente Terracotta Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oriente Terracotta Wallcovering","series":"Oriente Terracotta","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oriente Terracotta is a designer wallcovering with a decorative pattern and a refined, worldly character. It creates a rich focal point in dining rooms, lounges, and interiors that blend classic influence with a contemporary finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-891.jpg?v=1781282853","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-1.jpg?v=1781282853","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-891.jpg?v=1781282853","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE-1.jpg?v=1781282853"],"published_at":"2026-06-12T10:25:28-07:00","inquiry_sku":"DWXW-1005400"},{"handle":"oriente-gold-artmura","dw_sku":"DWXW-1005399","sku":null,"title":"Oriente Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Oriente Gold Wallcovering","series":"Oriente Gold","color":null,"book":"Wallcovering","color_bucket":"gold","hue":50,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Oriente Gold is a designer wallcovering with a decorative pattern and a refined, worldly character. It creates a rich focal point in dining rooms, lounges, and interiors that blend classic influence with a contemporary finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-890.jpg?v=1781282846","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE.jpg?v=1781282846","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Orient-OT-890.jpg?v=1781282846","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-ORIENTE.jpg?v=1781282846"],"published_at":"2026-06-12T10:25:25-07:00","inquiry_sku":"DWXW-1005399"},{"handle":"new-york-red-artmura","dw_sku":"DWXW-1005398","sku":null,"title":"New York Red Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"New York Red Wallcovering","series":"New York Red","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"New York Red is a designer wallcovering with an urban, architectural feel and a confident contemporary edge. It works well in living rooms, offices, and modern interiors that need structure, depth, and a strong visual presence. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-824.jpg?v=1781282813","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_7.jpg?v=1781282813","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-824.jpg?v=1781282813","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_7.jpg?v=1781282813"],"published_at":"2026-06-12T10:25:20-07:00","inquiry_sku":"DWXW-1005398"},{"handle":"new-york-copper-artmura","dw_sku":"DWXW-1005397","sku":null,"title":"New York Copper Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"New York Copper Wallcovering","series":"New York Copper","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"New York Copper is a designer wallcovering with an urban, architectural feel and a confident contemporary edge. It works well in living rooms, offices, and modern interiors that need structure, depth, and a strong visual presence. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-823.jpg?v=1781282802","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_4_54df5545-8cc1-4067-916e-4ac8f163c2d3.jpg?v=1781282802","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-823.jpg?v=1781282802","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_4_54df5545-8cc1-4067-916e-4ac8f163c2d3.jpg?v=1781282802"],"published_at":"2026-06-12T10:25:17-07:00","inquiry_sku":"DWXW-1005397"},{"handle":"new-york-pearl-artmura","dw_sku":"DWXW-1005396","sku":null,"title":"New York Pearl Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"New York Pearl Wallcovering","series":"New York Pearl","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"New York Pearl is a designer wallcovering with an urban, architectural feel and a confident contemporary edge. It works well in living rooms, offices, and modern interiors that need structure, depth, and a strong visual presence. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-822.jpg?v=1781282809","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_2.jpg?v=1781282809","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-822.jpg?v=1781282809","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_2.jpg?v=1781282809"],"published_at":"2026-06-12T10:25:13-07:00","inquiry_sku":"DWXW-1005396"},{"handle":"new-york-gold-artmura","dw_sku":"DWXW-1005395","sku":null,"title":"New York Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"New York Gold Wallcovering","series":"New York Gold","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"New York Gold is a designer wallcovering with an urban, architectural feel and a confident contemporary edge. It works well in living rooms, offices, and modern interiors that need structure, depth, and a strong visual presence. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-821.jpg?v=1781282805","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_4.jpg?v=1781282805","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-821.jpg?v=1781282805","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_4.jpg?v=1781282805"],"published_at":"2026-06-12T10:25:09-07:00","inquiry_sku":"DWXW-1005395"},{"handle":"new-york-silver-artmura","dw_sku":"DWXW-1005394","sku":null,"title":"New York Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"New York Silver Wallcovering","series":"New York Silver","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"New York Silver is a designer wallcovering with an urban, architectural feel and a confident contemporary edge. It works well in living rooms, offices, and modern interiors that need structure, depth, and a strong visual presence. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-820.jpg?v=1781282817","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_1.jpg?v=1781282817","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York-NY-820.jpg?v=1781282817","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/New-York_1.jpg?v=1781282817","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-NEW-YORK.jpg?v=1781282817"],"published_at":"2026-06-12T10:25:06-07:00","inquiry_sku":"DWXW-1005394"},{"handle":"lacca-black-artmura","dw_sku":"DWXW-1005393","sku":null,"title":"Lacca Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Lacca Black Wallcovering","series":"Lacca Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Lacca Black is a designer wallcovering with a lacquered look and a smooth, decorative presence. It brings a refined sense of depth to living rooms, bedrooms, and statement spaces that need a more polished finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-704.jpg?v=1781282686","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-4.jpg?v=1781282686","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-704.jpg?v=1781282686","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-4.jpg?v=1781282686"],"published_at":"2026-06-12T10:25:02-07:00","inquiry_sku":"DWXW-1005393"},{"handle":"lacca-beige-artmura","dw_sku":"DWXW-1005392","sku":null,"title":"Lacca Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Lacca Beige Wallcovering","series":"Lacca Beige","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Lacca Beige is a designer wallcovering with a lacquered look and a smooth, decorative presence. It brings a refined sense of depth to living rooms, bedrooms, and statement spaces that need a more polished finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-703.jpg?v=1781282683","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-3.jpg?v=1781282683","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-703.jpg?v=1781282683","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-3.jpg?v=1781282683"],"published_at":"2026-06-12T10:24:59-07:00","inquiry_sku":"DWXW-1005392"},{"handle":"lacca-white-artmura","dw_sku":"DWXW-1005391","sku":null,"title":"Lacca White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Lacca White Wallcovering","series":"Lacca White","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Lacca White is a designer wallcovering with a lacquered look and a smooth, decorative presence. It brings a refined sense of depth to living rooms, bedrooms, and statement spaces that need a more polished finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-702.jpg?v=1781282697","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-2.jpg?v=1781282697","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-702.jpg?v=1781282697","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-2.jpg?v=1781282697"],"published_at":"2026-06-12T10:24:55-07:00","inquiry_sku":"DWXW-1005391"},{"handle":"lacca-grey-artmura","dw_sku":"DWXW-1005390","sku":null,"title":"Lacca Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Lacca Grey Wallcovering","series":"Lacca Grey","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Lacca Grey is a designer wallcovering with a lacquered look and a smooth, decorative presence. It brings a refined sense of depth to living rooms, bedrooms, and statement spaces that need a more polished finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-701.jpg?v=1781282690","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-1.jpg?v=1781282690","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-701.jpg?v=1781282690","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA-1.jpg?v=1781282690"],"published_at":"2026-06-12T10:24:51-07:00","inquiry_sku":"DWXW-1005390"},{"handle":"lacca-red-artmura","dw_sku":"DWXW-1005389","sku":null,"title":"Lacca Red Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Lacca Red Wallcovering","series":"Lacca Red","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Lacca Red is a designer wallcovering with a lacquered look and a smooth, decorative presence. It brings a refined sense of depth to living rooms, bedrooms, and statement spaces that need a more polished finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-700.jpg?v=1781282693","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA.jpg?v=1781282693","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Lacca-LAC-700.jpg?v=1781282693","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-LACCA.jpg?v=1781282693"],"published_at":"2026-06-12T10:24:47-07:00","inquiry_sku":"DWXW-1005389"},{"handle":"kromo-black-artmura","dw_sku":"DWXW-1005385","sku":null,"title":"Kromo Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Kromo Black Wallcovering","series":"Kromo Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Kromo Black is a designer wallcovering with a tonal contemporary design and a sleek, textured finish. It gives living rooms, offices, and modern interiors a polished backdrop with subtle depth and visual interest. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Kromo-KR-901.jpg?v=1781282665","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Kromo_4.jpg?v=1781282665","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Kromo-KR-901.jpg?v=1781282665","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Kromo_4.jpg?v=1781282665"],"published_at":"2026-06-12T10:24:33-07:00","inquiry_sku":"DWXW-1005385"},{"handle":"golden-grey-artmura","dw_sku":"DWXW-1005383","sku":null,"title":"Golden Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Golden Grey Wallcovering","series":"Golden Grey","color":null,"book":"Wallcovering","color_bucket":"blue","hue":215,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Golden Grey is a designer wallcovering with a warm, luminous finish and a decorative contemporary feel. It adds richness and quiet drama to dining rooms, feature walls, and interiors that call for a more elevated surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-854.jpg?v=1781282658","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-GOLDEN-3.jpg?v=1781282658","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-854.jpg?v=1781282658","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-GOLDEN-3.jpg?v=1781282658"],"published_at":"2026-06-12T10:24:25-07:00","inquiry_sku":"DWXW-1005383"},{"handle":"golden-off-white-artmura","dw_sku":"DWXW-1005382","sku":null,"title":"Golden Off-White Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Golden Off-White Wallcovering","series":"Golden Off-White","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Golden Off-White is a designer wallcovering with a warm, luminous finish and a decorative contemporary feel. It adds richness and quiet drama to dining rooms, feature walls, and interiors that call for a more elevated surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-853.jpg?v=1781282661","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-GOLDEN-2.jpg?v=1781282661","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-853.jpg?v=1781282661","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-GOLDEN-2.jpg?v=1781282661"],"published_at":"2026-06-12T10:24:22-07:00","inquiry_sku":"DWXW-1005382"},{"handle":"golden-brown-artmura","dw_sku":"DWXW-1005381","sku":null,"title":"Golden Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Golden Brown Wallcovering","series":"Golden Brown","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Golden Brown is a designer wallcovering with a warm, luminous finish and a decorative contemporary feel. It adds richness and quiet drama to dining rooms, feature walls, and interiors that call for a more elevated surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-852.jpg?v=1781282648","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-852.jpg?v=1781282648","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-852.jpg?v=1781282648"],"published_at":"2026-06-12T10:24:18-07:00","inquiry_sku":"DWXW-1005381"},{"handle":"golden-gold-artmura","dw_sku":"DWXW-1005379","sku":null,"title":"Golden Gold Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Golden Gold Wallcovering","series":"Golden Gold","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Golden Gold is a designer wallcovering with a warm, luminous finish and a decorative contemporary feel. It adds richness and quiet drama to dining rooms, feature walls, and interiors that call for a more elevated surface. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-850.jpg?v=1781282651","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-GOLDEN.jpg?v=1781282651","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Golden-GOL-850.jpg?v=1781282651","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-GOLDEN.jpg?v=1781282651"],"published_at":"2026-06-12T10:24:10-07:00","inquiry_sku":"DWXW-1005379"},{"handle":"contemporary-black-artmura","dw_sku":"DWXW-1005378","sku":null,"title":"Contemporary Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Contemporary Black Wallcovering","series":"Contemporary Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Contemporary Black is a designer wallcovering with a modern pattern and subtle texture that feels polished without being rigid. It works beautifully in living rooms, offices, and other contemporary interiors that need a clean but characterful finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-804-e1468615612290.jpg?v=1781282569","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-4.jpg?v=1781282569","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-804-e1468615612290.jpg?v=1781282569","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-4.jpg?v=1781282569"],"published_at":"2026-06-12T10:24:07-07:00","inquiry_sku":"DWXW-1005378"},{"handle":"contemporary-grey-artmura","dw_sku":"DWXW-1005377","sku":null,"title":"Contemporary Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Contemporary Grey Wallcovering","series":"Contemporary Grey","color":null,"book":"Wallcovering","color_bucket":"green","hue":120,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Contemporary Grey is a designer wallcovering with a modern pattern and subtle texture that feels polished without being rigid. It works beautifully in living rooms, offices, and other contemporary interiors that need a clean but characterful finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-803-e1468615591811.jpg?v=1781282576","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-3.jpg?v=1781282576","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-803-e1468615591811.jpg?v=1781282576","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-3.jpg?v=1781282576"],"published_at":"2026-06-12T10:24:02-07:00","inquiry_sku":"DWXW-1005377"},{"handle":"contemporary-beige-artmura","dw_sku":"DWXW-1005376","sku":null,"title":"Contemporary Beige Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Contemporary Beige Wallcovering","series":"Contemporary Beige","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Contemporary Beige is a designer wallcovering with a modern pattern and subtle texture that feels polished without being rigid. It works beautifully in living rooms, offices, and other contemporary interiors that need a clean but characterful finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-802-e1468615568449.jpg?v=1781282565","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-2.jpg?v=1781282565","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-802-e1468615568449.jpg?v=1781282565","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-2.jpg?v=1781282565"],"published_at":"2026-06-12T10:23:58-07:00","inquiry_sku":"DWXW-1005376"},{"handle":"contemporary-terracotta-artmura","dw_sku":"DWXW-1005375","sku":null,"title":"Contemporary Terracotta Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Contemporary Terracotta Wallcovering","series":"Contemporary Terracotta","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Contemporary Terracotta is a designer wallcovering with a modern pattern and subtle texture that feels polished without being rigid. It works beautifully in living rooms, offices, and other contemporary interiors that need a clean but characterful finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-801-e1468615535604.jpg?v=1781282580","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-1.jpg?v=1781282580","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-801-e1468615535604.jpg?v=1781282580","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY-1.jpg?v=1781282580"],"published_at":"2026-06-12T10:23:54-07:00","inquiry_sku":"DWXW-1005375"},{"handle":"contemporary-brown-artmura","dw_sku":"DWXW-1005374","sku":null,"title":"Contemporary Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Contemporary Brown Wallcovering","series":"Contemporary Brown","color":null,"book":"Wallcovering","color_bucket":"white","hue":null,"hex":null,"sat":null,"val":1,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Contemporary Brown is a designer wallcovering with a modern pattern and subtle texture that feels polished without being rigid. It works beautifully in living rooms, offices, and other contemporary interiors that need a clean but characterful finish. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-800-e1468615740275.jpg?v=1781282572","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY.jpg?v=1781282572","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Contemporary-CO-800-e1468615740275.jpg?v=1781282572","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/COLLEZIONE-OPERA-II-CONTEMPORARY.jpg?v=1781282572"],"published_at":"2026-06-12T10:23:51-07:00","inquiry_sku":"DWXW-1005374"},{"handle":"ardesia-grey-artmura","dw_sku":"DWXW-1005373","sku":null,"title":"Ardesia Grey Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Ardesia Grey Wallcovering","series":"Ardesia Grey","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Ardesia Grey is a designer wallcovering with a stone-inspired texture and an elegant contemporary character. It creates a grounded, tactile backdrop for living rooms, bedrooms, and statement walls that call for quiet depth. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-924.jpg?v=1781282478","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_2_3b1ceea6-0239-4ca9-81fe-02863d3a16a9.jpg?v=1781282478","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-924.jpg?v=1781282478","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_2_3b1ceea6-0239-4ca9-81fe-02863d3a16a9.jpg?v=1781282478"],"published_at":"2026-06-12T10:23:47-07:00","inquiry_sku":"DWXW-1005373"},{"handle":"ardesia-black-artmura","dw_sku":"DWXW-1005372","sku":null,"title":"Ardesia Black Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Ardesia Black Wallcovering","series":"Ardesia Black","color":null,"book":"Wallcovering","color_bucket":"black","hue":null,"hex":null,"sat":null,"val":0,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Ardesia Black is a designer wallcovering with a stone-inspired texture and an elegant contemporary character. It creates a grounded, tactile backdrop for living rooms, bedrooms, and statement walls that call for quiet depth. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-923.jpg?v=1781282471","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_2_bd78f002-a846-4fea-99f4-741aded963a1.jpg?v=1781282471","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-923.jpg?v=1781282471","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_2_bd78f002-a846-4fea-99f4-741aded963a1.jpg?v=1781282471"],"published_at":"2026-06-12T10:23:43-07:00","inquiry_sku":"DWXW-1005372"},{"handle":"ardesia-brown-artmura","dw_sku":"DWXW-1005371","sku":null,"title":"Ardesia Brown Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Ardesia Brown Wallcovering","series":"Ardesia Brown","color":null,"book":"Wallcovering","color_bucket":"brown","hue":25,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Ardesia Brown is a designer wallcovering with a stone-inspired texture and an elegant contemporary character. It creates a grounded, tactile backdrop for living rooms, bedrooms, and statement walls that call for quiet depth. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-922.jpg?v=1781282475","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_4.jpg?v=1781282475","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-922.jpg?v=1781282475","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_4.jpg?v=1781282475"],"published_at":"2026-06-12T10:23:39-07:00","inquiry_sku":"DWXW-1005371"},{"handle":"ardesia-silver-artmura","dw_sku":"DWXW-1005370","sku":null,"title":"Ardesia Silver Wallcovering | Artmura","display_eyebrow":"Artmura","display_name":"Ardesia Silver Wallcovering","series":"Ardesia Silver","color":null,"book":"Wallcovering","color_bucket":"grey","hue":null,"hex":null,"sat":null,"val":0.5,"width":null,"length":null,"repeat":null,"material":null,"match":null,"price":408,"cost":null,"price_code":null,"body_html":"Ardesia Silver is a designer wallcovering with a stone-inspired texture and an elegant contemporary character. It creates a grounded, tactile backdrop for living rooms, bedrooms, and statement walls that call for quiet depth. Specifications Material Non-Woven Dimensions 39\" wide Wall coverage 10.5 sq. ft./yard Grade Residential Lead-time 3-4 weeks Origin Made in Italy","swatch":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-921.jpg?v=1781282486","room":"https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_2.jpg?v=1781282486","images":["https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia-ARD-921.jpg?v=1781282486","https://cdn.shopify.com/s/files/1/0015/4117/7456/files/Ardesia_2.jpg?v=1781282486"],"published_at":"2026-06-12T10:22:52-07:00","inquiry_sku":"DWXW-1005370"}]}
\ No newline at end of file
diff --git a/lib/vendor-requests.js b/lib/vendor-requests.js
new file mode 100644
index 0000000..9c22948
--- /dev/null
+++ b/lib/vendor-requests.js
@@ -0,0 +1,161 @@
+/* Internal purchasing requests — shared module for every *.designerwallcoverings.com
+ internal vendor PDP (astek, reidwitlin, quadrille, sangetsu, …).
+
+ POST /api/request → create REQ-YYMMDD-<id> in dw_unified.vendor_requests;
+ stock/price requests AUTO-EMAIL the vendor via
+ george-gmail (:9850) when a vendor email is on file.
+ POST /api/request/preview → compose the exact email (no insert, no send).
+ GET /api/requests → recent requests for this vendor (internal queue view).
+
+ Hard rules baked in:
+ - NEVER include a client name — emails reference our account number + REQ only.
+ - Vendor emails go out ONLY on an explicit user click behind Basic Auth; the
+ george external-send guard token is passed because that click IS the approval.
+ - No vendor email on file → request is still logged (status no_email) and the
+ caller is told to phone the vendor instead. */
+const fs = require('fs');
+const os = require('os');
+const path = require('path');
+const http = require('http');
+const { Pool } = require('pg');
+
+const GEORGE = process.env.GEORGE_URL || 'http://127.0.0.1:9850';
+const FROM = 'steve@designerwallcoverings.com';
+
+function envFrom(file, key) {
+ try { const m = fs.readFileSync(file, 'utf8').match(new RegExp('^' + key + '=(.+)$', 'm')); return m ? m[1].replace(/^["']|["']$/g, '').trim() : ''; }
+ catch { return ''; }
+}
+const SEND_TOKEN = envFrom(path.join(os.homedir(), 'Projects/george-gmail/.env'), 'GEORGE_EXTERNAL_SEND_TOKEN');
+const PGPASS = envFrom(path.join(os.homedir(), 'Projects/secrets-manager/.env'), 'DW_ADMIN_DB_PASSWORD');
+// george basic auth — mirror george's own resolution: GEORGE_BASIC_AUTH from its
+// .env when set, else the historical fallback (admin + empty password).
+const GEORGE_AUTH = envFrom(path.join(os.homedir(), 'Projects/george-gmail/.env'), 'GEORGE_BASIC_AUTH') || 'admin:';
+
+let pool = null;
+function db() {
+ if (!pool) pool = new Pool({ host: '127.0.0.1', port: 5432, user: 'dw_admin', database: 'dw_unified', password: PGPASS, max: 3 });
+ return pool;
+}
+
+const esc = s => String(s == null ? '' : s).replace(/[&<>]/g, c => ({ '&': '&', '<': '<', '>': '>' }[c]));
+
+// ---- email composition — polite, account-number-only, client-anonymous ----
+function composeEmail(type, vendor, item, reqNo) {
+ const acct = vendor.account_number || null;
+ const ask = type === 'stock'
+ ? 'Could you please check current stock availability on the following item?'
+ : 'Could you please confirm our current net / wholesale cost (and any applicable discount) on the following item?';
+ const subjectHead = type === 'stock' ? 'Stock check' : 'Pricing request';
+ const subject = `${subjectHead} — ${item.title || item.mfr_sku} (${item.mfr_sku || item.dw_sku})${acct ? ` — Acct #${acct}` : ''} — ${reqNo}`;
+ const rows = [
+ ['Pattern', item.title], ['Item / SKU', item.mfr_sku], ['Our ref', item.dw_sku],
+ ['Quantity', item.qty || (type === 'stock' ? 'to be confirmed' : null)],
+ ['Note', item.note],
+ ].filter(r => r[1]);
+ const body = [
+ `<p>Hello ${esc(vendor.name)} team,</p>`,
+ `<p>${ask}</p>`,
+ `<p>${rows.map(r => ` <b>${esc(r[0])}:</b> ${esc(r[1])}`).join('<br>')}</p>`,
+ `<p>This is for Designer Wallcoverings${acct ? `, account #${esc(acct)}` : ''}. Please reference <b>${reqNo}</b> in your reply.</p>`,
+ `<p>Thank you very much — we appreciate your help!</p>`,
+ `<p>Warm regards,<br><br>Designer Wallcoverings — Purchasing<br>${FROM}${acct ? `<br>Account #${esc(acct)}` : ''} · Ref ${reqNo}</p>`,
+ ].join('\n');
+ return { subject, body };
+}
+
+function georgeSend({ to, subject, body }) {
+ return new Promise((resolve) => {
+ const payload = JSON.stringify({ account: 'steve-office', from: FROM, to, subject, body, source: 'vendor-pdp' });
+ const u = new URL(GEORGE + '/api/send');
+ const req = http.request({ hostname: u.hostname, port: u.port, path: u.pathname, method: 'POST',
+ headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload), 'X-Send-Approval': SEND_TOKEN,
+ 'Authorization': 'Basic ' + Buffer.from(GEORGE_AUTH).toString('base64') } }, res => {
+ let d = ''; res.on('data', c => d += c);
+ res.on('end', () => { try { resolve({ status: res.statusCode, ...JSON.parse(d) }); } catch { resolve({ status: res.statusCode, error: d.slice(0, 300) }); } });
+ });
+ req.on('error', e => resolve({ status: 0, error: e.message }));
+ req.setTimeout(15000, () => { req.destroy(); resolve({ status: 0, error: 'george timeout' }); });
+ req.end(payload);
+ });
+}
+
+function reqNoFor(id, createdAt) {
+ const d = new Date(createdAt);
+ const ymd = d.getFullYear().toString().slice(2) + String(d.getMonth() + 1).padStart(2, '0') + String(d.getDate()).padStart(2, '0');
+ return `REQ-${ymd}-${id}`;
+}
+
+function mountVendorRequests(app, { vendorCode, getVendor, dataDir }) {
+ // exact email preview — same composer the send path uses; nothing persisted
+ app.post('/api/request/preview', (req, res) => {
+ const { type, dw_sku, mfr_sku, title, qty, note } = req.body || {};
+ if (!['stock', 'price'].includes(type)) return res.status(400).json({ ok: false, error: 'preview is for stock/price only' });
+ const vendor = getVendor() || {};
+ const { subject, body } = composeEmail(type, vendor, { dw_sku, mfr_sku, title, qty, note }, 'REQ-(assigned on send)');
+ res.json({ ok: true, to: vendor.email || null, from: FROM, subject, body, no_email: !vendor.email, phone: vendor.phone || null });
+ });
+
+ app.post('/api/request', async (req, res) => {
+ const { dw_sku, mfr_sku, title, qty, note, name } = req.body || {};
+ const type = ['memo', 'stock', 'price'].includes(req.body && req.body.type) ? req.body.type : 'memo';
+ if (!dw_sku && !mfr_sku) return res.status(400).json({ ok: false, error: 'sku required' });
+ const vendor = getVendor() || {};
+ try {
+ const ins = await db().query(
+ `INSERT INTO vendor_requests (req_type, vendor_code, vendor_name, vendor_email, account_number,
+ dw_sku, mfr_sku, product_title, qty, note, requested_by, status)
+ VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,'open') RETURNING id, created_at`,
+ [type, vendorCode, vendor.name || null, vendor.email || null, vendor.account_number || null,
+ dw_sku || null, mfr_sku || null, title || null, qty || null, note || null, name || FROM]);
+ const { id, created_at } = ins.rows[0];
+ const reqNo = reqNoFor(id, created_at);
+
+ let status = 'open', emailed = false, message, mail = null;
+ if (type === 'memo') {
+ message = `${reqNo} logged — purchasing will order the memo sample.`;
+ } else if (!vendor.email) {
+ status = 'no_email';
+ message = `${reqNo} logged. No vendor email on file — call ${vendor.name || 'the vendor'}${vendor.phone ? ' at ' + vendor.phone : ''}.`;
+ } else {
+ mail = composeEmail(type, vendor, { dw_sku, mfr_sku, title, qty, note }, reqNo);
+ const to = process.env.REQUEST_EMAIL_OVERRIDE || vendor.email; // override = smoke-test only
+ const sent = await georgeSend({ to, ...mail });
+ if (sent.success) {
+ status = 'emailed'; emailed = true;
+ message = `${reqNo} sent to ${vendor.name} (${to}).`;
+ } else {
+ status = 'email_failed';
+ message = `${reqNo} logged, but the email failed (${sent.error || 'status ' + sent.status}) — call ${vendor.phone || 'the vendor'}.`;
+ }
+ await db().query(
+ `UPDATE vendor_requests SET req_no=$1, status=$2, email_subject=$3, email_body=$4,
+ email_message_id=$5, sent_at=CASE WHEN $2='emailed' THEN now() ELSE NULL END WHERE id=$6`,
+ [reqNo, status, mail.subject, mail.body, sent.messageId || null, id]);
+ }
+ if (type === 'memo' || status === 'no_email') {
+ await db().query(`UPDATE vendor_requests SET req_no=$1, status=$2 WHERE id=$3`, [reqNo, status, id]);
+ }
+ // local trail, same file the old inquiry endpoint used
+ try {
+ fs.appendFileSync(path.join(dataDir, 'inquiries.jsonl'),
+ JSON.stringify({ at: new Date().toISOString(), req_no: reqNo, type, status, sku: dw_sku || mfr_sku, qty: qty || '', note: note || '' }) + '\n');
+ } catch {}
+ res.json({ ok: true, req_no: reqNo, status, emailed, message });
+ } catch (e) {
+ console.error('[vendor-requests]', e.message);
+ res.status(500).json({ ok: false, error: 'request failed: ' + e.message });
+ }
+ });
+
+ app.get('/api/requests', async (_req, res) => {
+ try {
+ const { rows } = await db().query(
+ `SELECT req_no, req_type, status, dw_sku, mfr_sku, product_title, qty, created_at, sent_at
+ FROM vendor_requests WHERE vendor_code=$1 ORDER BY id DESC LIMIT 50`, [vendorCode]);
+ res.json({ requests: rows });
+ } catch (e) { res.status(500).json({ error: e.message }); }
+ });
+}
+
+module.exports = { mountVendorRequests, composeEmail };
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..3e70f13
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,1069 @@
+{
+ "name": "astek-landing",
+ "version": "0.1.1",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "astek-landing",
+ "version": "0.1.1",
+ "dependencies": {
+ "compression": "^1.8.1",
+ "express": "^4.19.2",
+ "pg": "^8.11.5",
+ "playwright": "^1.61.1"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.5",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz",
+ "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.15.1",
+ "raw-body": "~2.5.3",
+ "type-is": "~1.6.18",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
+ "debug": "2.6.9",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
+ "license": "MIT"
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz",
+ "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.22.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz",
+ "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "~1.20.5",
+ "content-disposition": "~0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "~2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "~0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "~6.15.1",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
+ "setprototypeof": "1.2.0",
+ "statuses": "~2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
+ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "~2.0.2",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/on-headers": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz",
+ "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==",
+ "license": "MIT"
+ },
+ "node_modules/pg": {
+ "version": "8.22.0",
+ "resolved": "https://registry.npmjs.org/pg/-/pg-8.22.0.tgz",
+ "integrity": "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==",
+ "license": "MIT",
+ "dependencies": {
+ "pg-connection-string": "^2.14.0",
+ "pg-pool": "^3.14.0",
+ "pg-protocol": "^1.15.0",
+ "pg-types": "2.2.0",
+ "pgpass": "1.0.5"
+ },
+ "engines": {
+ "node": ">= 16.0.0"
+ },
+ "optionalDependencies": {
+ "pg-cloudflare": "^1.4.0"
+ },
+ "peerDependencies": {
+ "pg-native": ">=3.0.1"
+ },
+ "peerDependenciesMeta": {
+ "pg-native": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pg-cloudflare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz",
+ "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==",
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/pg-connection-string": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.0.tgz",
+ "integrity": "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==",
+ "license": "MIT"
+ },
+ "node_modules/pg-int8": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
+ "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/pg-pool": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz",
+ "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "pg": ">=8.0"
+ }
+ },
+ "node_modules/pg-protocol": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.15.0.tgz",
+ "integrity": "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==",
+ "license": "MIT"
+ },
+ "node_modules/pg-types": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
+ "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
+ "license": "MIT",
+ "dependencies": {
+ "pg-int8": "1.0.1",
+ "postgres-array": "~2.0.0",
+ "postgres-bytea": "~1.0.0",
+ "postgres-date": "~1.0.4",
+ "postgres-interval": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pgpass": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
+ "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
+ "license": "MIT",
+ "dependencies": {
+ "split2": "^4.1.0"
+ }
+ },
+ "node_modules/playwright": {
+ "version": "1.61.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.1.tgz",
+ "integrity": "sha512-DWnY5o3YbLWK4GovuAVwpqL+1VwGNdUGrRr++8j8PtQQzvAVZUIMjKQ90fY689sEJZJBbZVw1rXaOKSTitkzPQ==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.61.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.61.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.1.tgz",
+ "integrity": "sha512-h7Qlt6m4REp25qvIdvbDtVmD4LqVXfpRxhORv9L0jzETM05p4fuPJ3dKyuSXQxDSbXnmS79HAgi9589lGSpLkg==",
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/postgres-array": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
+ "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postgres-bytea": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
+ "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postgres-date": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
+ "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postgres-interval": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
+ "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.15.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
+ "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "es-define-property": "^1.0.1",
+ "side-channel": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/send": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.1",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "~2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "~2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "~0.19.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
+ "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4",
+ "side-channel-list": "^1.0.1",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..f3a1720
--- /dev/null
+++ b/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "astek-landing",
+ "version": "0.1.1",
+ "private": true,
+ "description": "Editorial vendor landing for Astek (INTERNAL dw_unified data — not on Shopify)",
+ "scripts": {
+ "scrape": "node scripts/scrape-astek.js",
+ "build-products": "node scripts/build-products-json.js",
+ "start": "node server.js"
+ },
+ "dependencies": {
+ "compression": "^1.8.1",
+ "express": "^4.19.2",
+ "pg": "^8.11.5",
+ "playwright": "^1.61.1"
+ }
+}
diff --git a/public/curate.html b/public/curate.html
new file mode 100644
index 0000000..361bbee
--- /dev/null
+++ b/public/curate.html
@@ -0,0 +1,160 @@
+<!doctype html><html lang="en"><head><meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>Select · Astek → Phillipe Romano</title>
+<style>
+:root{--cols:8;--bg:#0c0d12;--panel:#15171f;--ink:#eef0f5;--mut:#9aa0b0;--acc:#5eead4;--line:#262a36;--new:#f59e0b}
+*{box-sizing:border-box}
+body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
+header{position:sticky;top:0;z-index:9;background:linear-gradient(180deg,#0c0d12,#0c0d12e8);backdrop-filter:blur(8px);
+ border-bottom:1px solid var(--line);padding:10px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
+h1{font-size:14px;margin:0;font-weight:700}
+h1 .pl{color:var(--acc)}
+.pill{background:var(--new);color:#1a1205;font-weight:700;border-radius:999px;padding:2px 10px;font-size:12px;font-variant-numeric:tabular-nums}
+.muted{color:var(--mut)}
+select,input[type=text]{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:5px 8px;font-size:12.5px}
+input[type=range]{accent-color:var(--acc);width:150px}
+.btn{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:5px 11px;cursor:pointer;font-size:12.5px;text-decoration:none}
+.btn:hover{border-color:var(--acc)}
+.btn.on{outline:1px solid var(--acc);color:var(--acc)}
+.ctl{display:flex;align-items:center;gap:6px}
+/* texture-only grid — the image IS the tile */
+.grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:6px;padding:8px 10px 70px}
+.tile{position:relative;aspect-ratio:1/1;background:#0a0b0f;border:1px solid var(--line);border-radius:2px;overflow:hidden;cursor:pointer;user-select:none}
+.tile img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
+.tile:hover{border-color:#414a5e}
+.tile.sel{border-color:var(--acc);box-shadow:inset 0 0 0 2px var(--acc)}
+.tile.sel::after{content:'✓';position:absolute;top:5px;right:5px;width:20px;height:20px;border-radius:50%;
+ background:var(--acc);color:#04251e;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}
+.tile .tip{position:absolute;left:0;right:0;bottom:0;background:#000b;color:#cbd5e1;font-size:10px;padding:2px 6px;
+ white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .12s}
+.tile:hover .tip{opacity:1}
+#more{display:block;margin:8px auto 70px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:9px 18px;cursor:pointer}
+#empty{padding:60px;text-align:center;color:var(--mut)}
+/* selection tray */
+#tray{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;gap:10px;align-items:center;flex-wrap:wrap;
+ background:#0e0f15f2;border-top:1px solid var(--line);padding:9px 14px;backdrop-filter:blur(8px)}
+#tray .cnt{font-weight:700;color:var(--acc);font-variant-numeric:tabular-nums}
+#save{font-size:11px;color:var(--mut)}
+</style></head>
+<body>
+<header>
+ <h1>Astek → <span class="pl">Phillipe Romano</span> · Select</h1>
+ <span class="pill" id="total">…</span>
+ <span class="muted" id="meta"></span>
+ <div class="ctl"><input type="text" id="q" placeholder="search pattern / sku / color…"></div>
+ <div class="ctl"><select id="book"><option value="">All books</option></select></div>
+ <div class="ctl"><select id="color"><option value="">All colors</option></select></div>
+ <div class="ctl"><label class="muted">Grid</label>
+ <input type="range" id="density" min="1" max="20" step="1"><span class="muted" id="denv"></span></div>
+ <a class="btn" href="/">← Catalog</a>
+</header>
+<div class="grid" id="grid"></div>
+<button id="more" style="display:none">Load more</button>
+<div id="empty" style="display:none">No products match.</div>
+<div id="tray">
+ <span><span class="cnt" id="selcount">0</span> selected</span>
+ <button class="btn" id="selvis">☑ Select visible</button>
+ <button class="btn" id="unselvis">☐ Unselect visible</button>
+ <button class="btn" id="showsel">Show selected only</button>
+ <button class="btn" id="clear">✕ Clear all</button>
+ <button class="btn" id="csv">⬇ Export CSV</button>
+ <span id="save" class="muted"></span>
+ <span class="muted" style="margin-left:auto">click = select · shift-click = range · ⌘-click = open product</span>
+</div>
+<script>
+const $=s=>document.querySelector(s);
+const grid=$('#grid');
+let ALL=[], VIEW=[], shown=0, lastIdx=null, showSelOnly=false;
+const PAGE=400;
+const SEL=new Set(); // dw_sku set — the Phillipe Romano candidate list
+const BY_SKU={}; // dw_sku -> product
+function esc(s){return String(s==null?'':s).replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));}
+const dens=localStorage.getItem('astek.cur.density')||'8';
+$('#density').value=dens; $('#denv').textContent=dens;
+document.documentElement.style.setProperty('--cols',dens);
+$('#density').oninput=()=>{const v=$('#density').value;document.documentElement.style.setProperty('--cols',v);
+ $('#denv').textContent=v;localStorage.setItem('astek.cur.density',v);};
+
+function tile(p,idx){
+ const on=SEL.has(p.dw_sku);
+ return `<div class="tile${on?' sel':''}" data-sku="${esc(p.dw_sku)}" data-idx="${idx}" data-href="/product/${encodeURIComponent(p.handle)}">
+ <img loading="lazy" src="${esc(p.swatch)}" alt="${esc(p.display_name||p.sku||'')}">
+ <span class="tip">${esc(p.series||p.display_name||'')}${p.color?' · '+esc(p.color):''} · ${esc(p.sku||'')}</span>
+ </div>`;
+}
+grid.addEventListener('click',e=>{
+ const t=e.target.closest('.tile'); if(!t)return;
+ if(e.metaKey||e.ctrlKey){window.open(t.dataset.href,'_blank');return;}
+ const idx=Number(t.dataset.idx);
+ if(e.shiftKey&&lastIdx!=null){
+ const [a,b]=[Math.min(lastIdx,idx),Math.max(lastIdx,idx)];
+ const turnOn=!SEL.has(t.dataset.sku);
+ for(let i=a;i<=b;i++){const p=VIEW[i];if(!p)continue;turnOn?SEL.add(p.dw_sku):SEL.delete(p.dw_sku);}
+ repaint();
+ }else{
+ SEL.has(t.dataset.sku)?SEL.delete(t.dataset.sku):SEL.add(t.dataset.sku);
+ t.classList.toggle('sel',SEL.has(t.dataset.sku));
+ }
+ lastIdx=idx; syncCount(); saveSoon();
+});
+function repaint(){document.querySelectorAll('.tile').forEach(t=>t.classList.toggle('sel',SEL.has(t.dataset.sku)));}
+function syncCount(){$('#selcount').textContent=SEL.size.toLocaleString();}
+let st;
+function saveSoon(){clearTimeout(st);st=setTimeout(saveNow,700);}
+async function saveNow(){
+ try{
+ const r=await fetch(location.origin+'/api/selection',{method:'POST',headers:{'Content-Type':'application/json'},
+ body:JSON.stringify({skus:[...SEL]})}).then(r=>r.json());
+ $('#save').textContent=r.ok?('saved '+new Date().toLocaleTimeString()):'save failed';
+ }catch{$('#save').textContent='save failed';}
+}
+function applyFilters(){
+ const bk=$('#book').value, cl=$('#color').value, q=$('#q').value.trim().toLowerCase();
+ VIEW=ALL.filter(p=>
+ (!showSelOnly||SEL.has(p.dw_sku))&&
+ (!bk||p.book===bk)&&(!cl||p.color_bucket===cl)&&
+ (!q||[p.display_name,p.series,p.sku,p.dw_sku,p.color,p.book].some(v=>v&&String(v).toLowerCase().includes(q))));
+ shown=0; lastIdx=null; grid.innerHTML=''; renderMore();
+ $('#total').textContent=VIEW.length.toLocaleString()+' designs';
+ $('#empty').style.display=VIEW.length?'none':'block';
+}
+function renderMore(){
+ const slice=VIEW.slice(shown,shown+PAGE);
+ grid.insertAdjacentHTML('beforeend',slice.map((p,i)=>tile(p,shown+i)).join(''));
+ shown+=slice.length;
+ $('#meta').textContent=`${shown.toLocaleString()} of ${VIEW.length.toLocaleString()} shown`;
+ $('#more').style.display=shown<VIEW.length?'block':'none';
+}
+$('#more').onclick=renderMore;
+addEventListener('scroll',()=>{if(shown<VIEW.length&&innerHeight+scrollY>=document.body.offsetHeight-600)renderMore();});
+$('#book').onchange=applyFilters; $('#color').onchange=applyFilters;
+let t; $('#q').oninput=()=>{clearTimeout(t);t=setTimeout(applyFilters,300);};
+$('#selvis').onclick=()=>{VIEW.slice(0,shown).forEach(p=>SEL.add(p.dw_sku));repaint();syncCount();saveSoon();};
+$('#unselvis').onclick=()=>{VIEW.slice(0,shown).forEach(p=>SEL.delete(p.dw_sku));repaint();syncCount();saveSoon();};
+$('#showsel').onclick=()=>{showSelOnly=!showSelOnly;$('#showsel').classList.toggle('on',showSelOnly);applyFilters();};
+$('#clear').onclick=()=>{if(!SEL.size||confirm('Clear all '+SEL.size+' selected?')){SEL.clear();repaint();syncCount();saveSoon();applyFilters();}};
+$('#csv').onclick=()=>{
+ const rows=[['dw_sku','vendor_sku','pattern','color','book','handle','swatch_url']];
+ for(const s of SEL){const p=BY_SKU[s];if(!p)continue;
+ rows.push([p.dw_sku,p.sku,p.series||p.display_name,p.color||'',p.book||'',p.handle,p.swatch||'']);}
+ const csv=rows.map(r=>r.map(v=>'"'+String(v??'').replace(/"/g,'""')+'"').join(',')).join('\n');
+ const a=document.createElement('a');
+ a.href=URL.createObjectURL(new Blob([csv],{type:'text/csv'}));
+ a.download='phillipe-romano-candidates-'+new Date().toISOString().slice(0,10)+'.csv';
+ a.click();
+};
+async function load(){
+ const [pd,fc,sel]=await Promise.all([
+ fetch(location.origin+'/api/products').then(r=>r.json()),
+ fetch(location.origin+'/api/facets').then(r=>r.json()),
+ fetch(location.origin+'/api/selection').then(r=>r.json())]);
+ ALL=pd.products; ALL.forEach(p=>BY_SKU[p.dw_sku]=p);
+ (sel.skus||[]).forEach(s=>SEL.add(s));
+ $('#book').innerHTML='<option value="">All books</option>'+(fc.books||[]).map(([b,n])=>`<option value="${esc(b)}">${esc(b)} (${n.toLocaleString()})</option>`).join('');
+ const colors={}; ALL.forEach(p=>{if(p.color_bucket)colors[p.color_bucket]=(colors[p.color_bucket]||0)+1;});
+ $('#color').innerHTML='<option value="">All colors</option>'+Object.entries(colors).sort((a,b)=>b[1]-a[1]).map(([c,n])=>`<option value="${esc(c)}">${esc(c)} (${n.toLocaleString()})</option>`).join('');
+ syncCount(); applyFilters();
+}
+load();
+</script>
+</body></html>
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..3aa5957
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,400 @@
+<!doctype html><html lang="en"><head><meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>Artmura · Catalog · dw_unified</title>
+<style>
+:root{--cols:6;--fs:1;--bg:#0c0d12;--panel:#15171f;--card:#12141b;--ink:#eef0f5;--mut:#9aa0b0;--acc:#5eead4;--line:#262a36;
+ --new:#f59e0b;--pub:#34d399;--unpub:#94a3b8;--arch:#f87171;--ship:#60a5fa}
+*{box-sizing:border-box}
+body{margin:0;background:var(--bg);color:var(--ink);font:13px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
+header{position:sticky;top:0;z-index:9;background:linear-gradient(180deg,#0c0d12,#0c0d12e8);backdrop-filter:blur(8px);
+ border-bottom:1px solid var(--line);padding:10px 16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
+h1{font-size:15px;margin:0;font-weight:700;letter-spacing:.2px}
+.pill{background:var(--new);color:#1a1205;font-weight:700;border-radius:999px;padding:2px 10px;font-size:12px}
+.muted{color:var(--mut)}
+select,input[type=text]{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:6px 9px;font-size:13px}
+.ctl{display:flex;align-items:center;gap:7px}
+input[type=range]{accent-color:var(--acc)}
+.btn{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer;font-size:13px;text-decoration:none}
+.btn:hover{border-color:var(--acc)}
+/* ── left panel: filters + field tables, ALL collapsed on load ── */
+#layout{display:flex;align-items:flex-start}
+aside{position:sticky;width:230px;min-width:230px;max-height:calc(100vh - 52px);overflow:auto;
+ padding:10px 10px 28px;border-right:1px solid var(--line);background:#0e0f15}
+aside input[type=text]{width:100%;margin-bottom:7px;font-size:12.5px;padding:5px 8px}
+aside details{border-bottom:1px solid var(--line)}
+aside summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;padding:8px 4px;
+ font-size:10.5px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.6px;user-select:none}
+aside summary::-webkit-details-marker{display:none}
+aside summary::before{content:'▸';font-size:9px;color:var(--mut);transition:transform .12s}
+aside details[open] summary::before{transform:rotate(90deg)}
+aside summary:hover{color:var(--ink)}
+aside summary .cur{margin-left:auto;color:var(--acc);text-transform:none;letter-spacing:0;font-weight:600;
+ max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
+.fbody{padding:2px 0 8px}
+.frow{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:3px 8px;border-radius:6px;
+ cursor:pointer;color:var(--mut);font-size:12.5px;user-select:none}
+.frow:hover{background:var(--panel);color:var(--ink)}
+.frow.active{background:var(--panel);color:var(--ink);outline:1px solid var(--acc);outline-offset:-1px}
+.frow .fl{display:inline-flex;align-items:center;gap:7px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
+.frow .n{font-variant-numeric:tabular-nums;font-size:11px;color:var(--mut);flex:none}
+.frow .dot{width:10px;height:10px;border-radius:50%;border:1px solid #0008;display:inline-block;flex:none}
+.frow input[type=checkbox]{accent-color:var(--acc);margin:0 2px 0 0}
+.fmore{padding:3px 8px;font-size:11px;color:var(--mut);font-style:italic}
+#clearf{display:none;margin-top:10px;width:100%}
+main{flex:1;min-width:0}
+@media(max-width:880px){
+ #layout{display:block}
+ aside{position:static;width:auto;max-height:none;border-right:0;border-bottom:1px solid var(--line)}
+}
+/* ── grid — tight, 1pt stroke edges; text scales with density via --fs ── */
+.grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:8px;padding:10px 12px 60px}
+.card{background:var(--card);border:1px solid var(--line);border-radius:2px;overflow:hidden;display:flex;flex-direction:column;position:relative;cursor:pointer}
+.card:hover{border-color:#414a5e}
+.imgwrap{position:relative;width:100%;aspect-ratio:1/1;background:#0a0b0f}
+.imgwrap img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
+.imgwrap img.roomimg{position:absolute;inset:0;opacity:0;transition:opacity .18s ease}
+.imgwrap:hover img.roomimg{opacity:1}
+.roombadge{position:absolute;top:6px;right:6px;z-index:2;background:#000a;color:#cbd5e1;font-size:9px;font-weight:700;border-radius:4px;padding:1px 6px;letter-spacing:.3px}
+.imgwrap.noimg{background:repeating-linear-gradient(45deg,#0a0b0f,#0a0b0f 8px,#101218 8px,#101218 16px)}
+.imgwrap.noimg::after{content:'🚫 no image';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#5b6373;font-size:11px;font-weight:600;letter-spacing:.3px}
+.card .b{padding:calc(6px*var(--fs)) calc(8px*var(--fs)) calc(7px*var(--fs));display:flex;flex-direction:column;gap:calc(3px*var(--fs))}
+.vend{font-size:calc(10px*var(--fs));color:var(--mut);font-weight:600;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
+.ttl{font-weight:600;font-size:calc(12.5px*var(--fs));line-height:1.3;letter-spacing:-.1px}
+.sku{font-family:ui-monospace,Menlo,monospace;font-size:calc(11px*var(--fs));color:var(--mut)}
+/* field visibility toggles (grid view only — list view columns stay intact) */
+body.f-off-vend .grid:not(.list) .vend{display:none}
+body.f-off-ttl .grid:not(.list) .ttl{display:none}
+body.f-off-chips .grid:not(.list) .chips{display:none}
+body.imgonly .grid:not(.list) .card .b{display:none}
+/* ── chips (minimal) ── */
+.chips{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
+.chip{font-size:calc(10px*var(--fs));font-weight:600;border-radius:999px;padding:1px calc(8px*var(--fs));letter-spacing:.2px;white-space:nowrap;border:1px solid transparent}
+.chip.cl{border-color:transparent;color:var(--mut);background:transparent;display:inline-flex;align-items:center;gap:5px;padding-left:0}
+.chip.cl .dot{width:calc(9px*var(--fs));height:calc(9px*var(--fs));border-radius:50%;border:1px solid #0008;display:inline-block}
+.chip.toggle{background:transparent;color:var(--mut);border-color:var(--line);cursor:pointer;user-select:none}
+.chip.toggle:hover{border-color:var(--acc);color:var(--ink)}
+/* ── collapsed detail drawer (direct child of .card so list-mode span works) ── */
+.info{display:none;flex-direction:column;gap:7px;border-top:1px dashed var(--line);padding:8px 8px 9px;cursor:default}
+.card.info-open .info{display:flex}
+.kv{display:grid;grid-template-columns:88px 1fr;gap:4px 10px;font-size:11.5px;align-items:baseline}
+.kv .k{color:var(--mut)}
+.kv .v{text-align:left;word-break:break-word;font-weight:500}
+.lnk{color:var(--acc);text-decoration:none;border:1px solid var(--line);border-radius:6px;padding:2px 7px;font-size:11px}
+.lnk:hover{background:var(--panel)}
+.acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:3px}
+.act{font-size:11px;font-weight:600;border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:7px;padding:4px 10px;cursor:pointer}
+.act:hover{border-color:var(--acc)}
+#more{display:block;margin:8px auto 60px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:9px 18px;cursor:pointer}
+#empty{padding:60px;text-align:center;color:var(--mut)}
+/* ── List view ── aligned CSS-grid rows (.b uses display:contents so its
+ children become columns of the card grid). Fixed type sizes (1 column —
+ density/font scaling is a grid-view concern). */
+:root{--listcols:42px 105px minmax(130px,1.4fr) minmax(90px,1fr) 92px minmax(105px,1fr) 112px minmax(90px,1fr) 64px 64px 84px 92px}
+.grid.list{grid-template-columns:1fr;gap:4px;padding:4px 12px 60px}
+.grid.list .card{
+ display:grid;align-items:center;border-radius:2px;
+ grid-template-columns:var(--listcols);
+ column-gap:12px;min-height:52px;padding:0 12px 0 8px;
+}
+.grid.list .card>.b{display:contents}
+.grid.list .imgwrap{width:42px;min-width:42px;height:42px;aspect-ratio:auto;border-radius:3px;overflow:hidden;margin:5px 0}
+.grid.list .imgwrap.noimg::after{font-size:8px}
+.grid.list .roombadge{display:none}
+.grid.list .vend{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
+.grid.list .ttl{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px}
+.grid.list .chips{flex-wrap:nowrap;gap:6px;overflow:hidden}
+.grid.list .chip{font-size:10px;padding:1px 8px}
+.grid.list .chips .chip.toggle{display:none}
+.grid.list .lc{display:block;font-size:11px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
+.grid.list .lsku,.grid.list .ldw{display:block;font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
+.grid.list .info{grid-column:1 / -1;margin:2px 0 6px;padding:8px 4px 2px}
+.lsku,.ldw,.lc{display:none}
+/* sortable column header — same template as rows, sticky under the main header */
+#listhead{display:none;position:sticky;z-index:8;background:#0e0f15;border-bottom:1px solid var(--line);
+ grid-template-columns:var(--listcols);column-gap:12px;padding:6px 24px 6px 20px;align-items:center}
+body.listmode #listhead{display:grid}
+#listhead .lh{font-size:10.5px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.4px;
+ cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;user-select:none}
+#listhead .lh:hover{color:var(--ink)}
+#listhead .lh.on{color:var(--acc)}
+/* ── corner refresh countdown pill ── */
+.astek-refresh-pill{position:fixed;right:14px;bottom:14px;z-index:25;display:flex;align-items:center;gap:7px;
+ background:#11131bF2;border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:11.5px;
+ color:var(--mut);backdrop-filter:blur(8px);cursor:default;user-select:none}
+.astek-refresh-pill .rp-dot{width:8px;height:8px;border-radius:50%;background:var(--pub)}
+.astek-refresh-pill.rp-live .rp-dot{background:var(--new);animation:rppulse 1s ease-in-out infinite}
+@keyframes rppulse{0%,100%{opacity:1}50%{opacity:.25}}
+</style></head>
+<body>
+<header>
+ <h1>Artmura · Catalog</h1>
+ <span class="pill" id="total">…</span>
+ <span class="muted" id="meta"></span>
+ <div class="ctl"><label class="muted">Sort</label>
+ <select id="sort">
+ <option value="newest">Newest</option>
+ <option value="color">Color</option>
+ <option value="pattern">Pattern A→Z</option>
+ <option value="sku">SKU A→Z</option>
+ <option value="title">Title A→Z</option>
+ <option value="book">Book</option>
+ </select></div>
+ <div class="ctl"><label class="muted">Density</label>
+ <input type="range" id="density" min="3" max="20" step="1"></div>
+ <button class="btn" id="view">▤ List view</button>
+ <a class="btn" href="/curate" title="bulk-select candidates for the Phillipe Romano private label">✓ Select for PR</a>
+</header>
+<div id="layout">
+<aside aria-label="filters">
+ <input type="text" id="q" placeholder="Search pattern / sku / color…">
+ <input type="text" id="pattern" list="patternlist" placeholder="Pattern type-ahead…" title="type-ahead over every pattern in the catalog">
+ <datalist id="patternlist"></datalist>
+ <details id="fieldsbox"><summary>Card fields</summary>
+ <div class="fbody">
+ <label class="frow"><span class="fl"><input type="checkbox" data-fv="vend" checked>Book · series</span></label>
+ <label class="frow"><span class="fl"><input type="checkbox" data-fv="ttl" checked>Title / color</span></label>
+ <label class="frow"><span class="fl"><input type="checkbox" data-fv="chips" checked>Chips · details</span></label>
+ </div>
+ </details>
+ <div id="facetbox"><!-- one collapsed <details> table per data field --></div>
+ <button class="btn" id="clearf">✕ Clear filters</button>
+</aside>
+<main>
+ <div id="listhead" aria-label="sortable columns"></div>
+ <div class="grid" id="grid"></div>
+ <button id="more" style="display:none">Load more</button>
+ <div id="empty" style="display:none">No products match.</div>
+</main>
+</div>
+<script>
+const $=s=>document.querySelector(s);
+const grid=$('#grid');
+let ALL=[], FACETS=null, VIEW=[], shown=0;
+const PAGE=120;
+const BUCKET_HEX={white:'#f4f4f2',grey:'#9aa0aa',black:'#1c1e24',pink:'#f3a8c0',red:'#d0453e',orange:'#e08a3c',
+ brown:'#8a6242',gold:'#c9a75a',green:'#5f8f5c',blue:'#4f7fb5',purple:'#8a6fb5'};
+function esc(s){return String(s==null?'':s).replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));}
+// ── every data field is a left-panel table: collapsed on load, click value = filter ──
+const FIELDS=[
+ ['book','Books'],['color_bucket','Colors'],['series','Patterns'],['color','Colorways'],
+ ['material','Material'],['width','Width'],['length','Length'],['repeat','Repeat'],['match','Match'],
+];
+const FIL={}; // field -> active value ('' = off)
+FIELDS.forEach(([k])=>FIL[k]='');
+let FCOUNTS={}; // field -> [[value,count]…] computed once from ALL
+const FCAP=40; // rows shown per table (top-by-count)
+// persisted prefs (CLAUDE.md: sort + density persist in localStorage)
+$('#sort').value=localStorage.getItem('astek.sort')||'newest';
+// ── density also drives type scale: fewer/larger cards → bigger type, 20/row → smallest ──
+function setDensity(v){
+ v=Number(v);
+ const fs=Math.max(.5,Math.min(1.2, v<=6 ? 1+(6-v)*.06 : 1-(v-6)*.042));
+ document.documentElement.style.setProperty('--cols',v);
+ document.documentElement.style.setProperty('--fs',fs.toFixed(3));
+}
+const dens=localStorage.getItem('astek.density')||'6';
+$('#density').value=dens; setDensity(dens);
+$('#density').oninput=()=>{setDensity($('#density').value);localStorage.setItem('astek.density',$('#density').value);};
+// ── card-field visibility toggles (image-only when all off) ──
+const FVIS=JSON.parse(localStorage.getItem('astek.fieldvis')||'{"vend":true,"ttl":true,"chips":true}');
+function applyFieldVis(){
+ for(const k of ['vend','ttl','chips'])document.body.classList.toggle('f-off-'+k,!FVIS[k]);
+ document.body.classList.toggle('imgonly',!FVIS.vend&&!FVIS.ttl&&!FVIS.chips);
+ document.querySelectorAll('#fieldsbox input[data-fv]').forEach(cb=>cb.checked=!!FVIS[cb.dataset.fv]);
+ localStorage.setItem('astek.fieldvis',JSON.stringify(FVIS));
+}
+document.querySelectorAll('#fieldsbox input[data-fv]').forEach(cb=>{
+ cb.onchange=()=>{FVIS[cb.dataset.fv]=cb.checked;applyFieldVis();};
+});
+applyFieldVis();
+// NOTE: no <a> wrapper around the card — nesting anchors splits the DOM (adoption
+// agency) and litters the grid with empty <a> cells. Navigation is delegated click.
+function card(p){
+ const title=esc(p.display_name||p.series||p.sku||'(untitled)')+(p.color&&p.color!==p.display_name?(', '+esc(p.color)):'');
+ const hasRoom=p.room&&p.room!==p.swatch;
+ const img=p.swatch
+ ?`<div class="imgwrap"><img loading="lazy" src="${esc(p.swatch)}" alt="${title}" onerror="this.style.display='none';this.parentNode.classList.add('noimg')">`+
+ (hasRoom?`<img loading="lazy" class="roomimg" src="${esc(p.room)}" alt=""><span class="roombadge">ROOM</span>`:'')+`</div>`
+ :`<div class="imgwrap noimg"></div>`;
+ const kv=(k,v)=>v?`<div class="kv"><span class="k">${k}</span><span class="v">${esc(v)}</span></div>`:'';
+ const dot=BUCKET_HEX[p.color_bucket]||'#666';
+ return `<div class="card" data-href="/product/${encodeURIComponent(p.handle)}" data-handle="${esc(p.handle)}">
+ ${img}<div class="b">
+ <span class="vend">${esc(p.book||'Artmura')}${p.series&&p.series!==p.display_name?(' · '+esc(p.series)):''}</span>
+ <div class="ttl">${title}</div>
+ <span class="lc" title="Color">${esc(p.color||'')}</span>
+ <div class="chips">
+ ${p.color_bucket?`<span class="chip cl"><span class="dot" style="background:${dot}"></span>${esc(p.color_bucket)}</span>`:''}
+ <span class="chip toggle" onclick="event.stopPropagation();this.closest('.card').classList.toggle('info-open')">ⓘ details</span>
+ </div>
+ <span class="lsku" title="Vendor SKU">${esc(p.sku||'')}</span>
+ <span class="ldw" title="DW SKU">${esc(p.dw_sku||'')}</span>
+ <span class="lc" title="Material">${esc(p.material||'')}</span>
+ <span class="lc" title="Width">${esc(p.width||'')}</span>
+ <span class="lc" title="Length">${esc(p.length||'')}</span>
+ <span class="lc" title="Repeat">${esc(p.repeat||'')}</span>
+ <span class="lc" title="Match">${esc(p.match||'')}</span>
+ </div>
+ <div class="info" onclick="event.stopPropagation()">
+ ${kv('DW SKU',p.dw_sku)}${kv('Vendor SKU',p.sku)}${kv('Series',p.series)}${kv('Book',p.book)}
+ ${kv('Material',p.material)}${kv('Width',p.width)}${kv('Repeat',p.repeat)}${kv('Match',p.match)}
+ <div class="acts">
+ ${p.sku?`<button class="act" data-copy="${esc(p.sku)}" onclick="copyTxt(this)" title="copy vendor SKU">📋 SKU</button>`:''}
+ ${p.dw_sku?`<button class="act" data-copy="${esc(p.dw_sku)}" onclick="copyTxt(this)" title="copy DW SKU">📋 DW</button>`:''}
+ <a class="lnk" href="/product/${encodeURIComponent(p.handle)}">open ↗</a>
+ </div>
+ </div>
+ </div>`;
+}
+// delegated card navigation — anything not interactive opens the PDP
+grid.addEventListener('click',e=>{
+ if(e.target.closest('.chip.toggle,.info,a,button'))return;
+ const c=e.target.closest('.card[data-href]');
+ if(c)location.href=c.dataset.href;
+});
+function copyTxt(btn){
+ const t=btn.dataset.copy||'';
+ navigator.clipboard.writeText(t).then(()=>{
+ const o=btn.textContent; btn.textContent='✓ copied';
+ setTimeout(()=>{btn.textContent=o;},1200);
+ });
+}
+window.copyTxt=copyTxt;
+function applyFilters(){
+ const q=$('#q').value.trim().toLowerCase(), pat=$('#pattern').value.trim().toLowerCase();
+ VIEW=ALL.filter(p=>{
+ for(const [k] of FIELDS){ if(FIL[k]&&String(p[k]??'')!==FIL[k])return false; }
+ if(pat&&!String(p.series||p.display_name||'').toLowerCase().includes(pat))return false;
+ if(q&&![p.display_name,p.series,p.sku,p.dw_sku,p.color,p.book].some(v=>v&&String(v).toLowerCase().includes(q)))return false;
+ return true;
+ });
+ const s=$('#sort').value, cmp={
+ newest:null,
+ color:(a,b)=>(a.hue??999)-(b.hue??999)||(a.val??0)-(b.val??0),
+ pattern:(a,b)=>String(a.series||a.display_name||'').localeCompare(String(b.series||b.display_name||'')),
+ sku:(a,b)=>String(a.sku||a.handle).localeCompare(String(b.sku||b.handle)),
+ title:(a,b)=>String(a.display_name||'').localeCompare(String(b.display_name||'')),
+ book:(a,b)=>String(a.book||'').localeCompare(String(b.book||''))||String(a.series||'').localeCompare(String(b.series||'')),
+ }[s];
+ if(COLSORT.key){
+ const k=COLSORT.key, dir=COLSORT.dir;
+ VIEW=[...VIEW].sort((a,b)=>{
+ const av=a[k], bv=b[k];
+ if(av==null||av==='')return 1; if(bv==null||bv==='')return -1; // empties last either way
+ return dir*String(av).localeCompare(String(bv),undefined,{numeric:true});
+ });
+ }else if(cmp)VIEW=[...VIEW].sort(cmp);
+ shown=0; grid.innerHTML=''; renderMore();
+ $('#total').textContent=VIEW.length.toLocaleString()+' designs';
+ $('#empty').style.display=VIEW.length?'none':'block';
+ renderSide();
+}
+function renderMore(){
+ const slice=VIEW.slice(shown,shown+PAGE);
+ grid.insertAdjacentHTML('beforeend',slice.map(card).join(''));
+ shown+=slice.length;
+ $('#meta').textContent=`${shown.toLocaleString()} of ${VIEW.length.toLocaleString()} shown`;
+ $('#more').style.display=shown<VIEW.length?'block':'none';
+}
+function buildFacetCache(){
+ FCOUNTS={};
+ for(const [k] of FIELDS){
+ const m={};
+ for(const p of ALL){const v=p[k];if(v==null||v==='')continue;m[v]=(m[v]||0)+1;}
+ FCOUNTS[k]=Object.entries(m).sort((a,b)=>b[1]-a[1]);
+ }
+ // Pattern type-ahead over EVERY distinct pattern
+ const series=(FCOUNTS.series||[]).map(([v])=>v).sort((a,b)=>String(a).localeCompare(String(b),undefined,{numeric:true}));
+ $('#patternlist').innerHTML=series.map(s=>`<option value="${esc(s)}">`).join('');
+}
+// left panel — one collapsed <details> table per field; open state survives re-render
+function renderSide(){
+ const openNow=new Set([...document.querySelectorAll('#facetbox details[open]')].map(d=>d.dataset.f));
+ $('#facetbox').innerHTML=FIELDS.map(([k,label])=>{
+ const rows=(FCOUNTS[k]||[]).slice(0,FCAP).map(([v,n])=>{
+ const dot=k==='color_bucket'?`<span class="dot" style="background:${BUCKET_HEX[v]||'#666'}"></span>`:'';
+ return `<div class="frow${FIL[k]===String(v)?' active':''}" onclick="pickF('${k}',this.dataset.v)" data-v="${esc(v)}">
+ <span class="fl">${dot}${esc(v)}</span><span class="n">${n.toLocaleString()}</span></div>`;
+ }).join('');
+ const more=(FCOUNTS[k]||[]).length>FCAP?`<div class="fmore">+ ${(FCOUNTS[k].length-FCAP).toLocaleString()} more — use search</div>`:'';
+ const cur=FIL[k]?`<span class="cur" title="${esc(FIL[k])}">${esc(FIL[k])}</span>`:'';
+ return `<details data-f="${k}"${openNow.has(k)?' open':''}><summary>${label}${cur}</summary><div class="fbody">${rows}${more}</div></details>`;
+ }).join('');
+ $('#clearf').style.display=(Object.values(FIL).some(Boolean)||$('#q').value||$('#pattern').value)?'block':'none';
+}
+function pickF(k,v){FIL[k]=(FIL[k]===v?'':v);applyFilters();}
+window.pickF=pickF;
+$('#clearf').onclick=()=>{FIELDS.forEach(([k])=>FIL[k]='');$('#q').value='';$('#pattern').value='';applyFilters();};
+$('#sort').onchange=()=>{localStorage.setItem('astek.sort',$('#sort').value);COLSORT.key=null;renderListHead();applyFilters();};
+let t; $('#q').oninput=()=>{clearTimeout(t);t=setTimeout(applyFilters,300);};
+let tp; $('#pattern').oninput=()=>{clearTimeout(tp);tp=setTimeout(applyFilters,300);};
+$('#more').onclick=renderMore;
+// ── sortable column header (list view) ──
+const LIST_COLS=[[null,''],['book','Book'],['display_name','Pattern'],['color','Color'],['color_bucket','Bucket'],
+ ['sku','SKU'],['dw_sku','DW SKU'],['material','Material'],['width','Width'],['length','Length'],['repeat','Repeat'],['match','Match']];
+const COLSORT={key:null,dir:1};
+function renderListHead(){
+ $('#listhead').innerHTML=LIST_COLS.map(([k,lbl])=>k
+ ?`<span class="lh${COLSORT.key===k?' on':''}" onclick="colSort('${k}')">${lbl}${COLSORT.key===k?(COLSORT.dir>0?' ▲':' ▼'):''}</span>`
+ :'<span></span>').join('');
+ syncSticky();
+}
+function colSort(k){
+ if(COLSORT.key===k)COLSORT.dir=-COLSORT.dir; else{COLSORT.key=k;COLSORT.dir=1;}
+ renderListHead(); applyFilters();
+}
+window.colSort=colSort;
+function syncSticky(){
+ const h=document.querySelector('header').offsetHeight;
+ $('#listhead').style.top=h+'px';
+ document.querySelector('aside').style.top=h+'px';
+ document.querySelector('aside').style.maxHeight=`calc(100vh - ${h}px)`;
+}
+addEventListener('resize',syncSticky);
+function applyView(){const list=localStorage.getItem('astek.view')==='list';grid.classList.toggle('list',list);document.body.classList.toggle('listmode',list);$('#view').textContent=list?'▦ Grid view':'▤ List view';renderListHead();}
+$('#view').onclick=()=>{localStorage.setItem('astek.view',localStorage.getItem('astek.view')==='list'?'grid':'list');applyView();};
+applyView();
+addEventListener('scroll',()=>{if(shown<VIEW.length&&innerHeight+scrollY>=document.body.offsetHeight-600)renderMore();});
+async function loadAll(){
+ const [pd,fc]=await Promise.all([
+ fetch(location.origin+'/api/products').then(r=>r.json()),
+ fetch(location.origin+'/api/facets').then(r=>r.json())]);
+ ALL=pd.products; FACETS=fc;
+ buildFacetCache(); applyFilters();
+}
+loadAll();
+
+/* ── Corner refresh countdown ──────────────────────────────────────────────
+ Data is rebuilt from dw_unified every 15 min by a cron. This pill counts down
+ to the next refresh (synced to the real data-file timestamp via /api/meta) and
+ pulls fresh data in-place when it lands — no manual reload. */
+(function(){
+ var meta={lastRefresh:null,intervalSec:900}, target=0, waiting=false;
+ var pill=document.createElement('div');
+ pill.className='astek-refresh-pill';
+ pill.title='Artmura catalog data refreshes from Designer Wallcoverings every 15 minutes';
+ pill.innerHTML='<span class="rp-dot"></span><span class="rp-txt">syncing…</span>';
+ document.body.appendChild(pill);
+ var txt=pill.querySelector('.rp-txt');
+ function fmt(s){s=Math.max(0,Math.round(s));var m=Math.floor(s/60);return m+':'+String(s%60).padStart(2,'0');}
+ async function syncMeta(){
+ try{
+ var m=await fetch(location.origin+'/api/meta').then(r=>r.json());
+ var advanced = meta.lastRefresh && m.lastRefresh!==meta.lastRefresh;
+ meta=m;
+ var t=new Date(m.lastRefresh).getTime()+m.intervalSec*1000;
+ target = (t<=Date.now()) ? Date.now()+m.intervalSec*1000 : t; // clamp stale files to a fresh cycle
+ if(advanced) loadAll();
+ return advanced;
+ }catch(e){ return false; }
+ }
+ async function tick(){
+ var rem=(target-Date.now())/1000;
+ if(rem>0){ txt.textContent='Next refresh in '+fmt(rem); pill.classList.remove('rp-live'); }
+ else if(!waiting){ txt.textContent='Updating…'; pill.classList.add('rp-live'); waiting=true;
+ var adv=await syncMeta(); if(!adv) target=Date.now()+7000; waiting=false; }
+ }
+ syncMeta().then(function(){ tick(); setInterval(tick,1000); });
+})();
+</script>
+</body></html>
diff --git a/public/product.html b/public/product.html
new file mode 100644
index 0000000..65d2909
--- /dev/null
+++ b/public/product.html
@@ -0,0 +1,237 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<title>Designer Wallcoverings</title>
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link href="https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
+<link rel="stylesheet" href="/styles.css">
+</head>
+<body>
+
+<a class="corner ul wordmark" href="https://www.designerwallcoverings.com">Designer Wallcoverings</a>
+<nav class="corner ur">
+ <a href="/">The Collection</a>
+ <a href="https://www.designerwallcoverings.com/collections/all" target="_blank" rel="noopener noreferrer">All Wallcoverings</a>
+ <span class="internal-pill" title="Login-gated internal page — not customer-facing">INTERNAL</span>
+</nav>
+
+<main class="pdp" id="pdp"><div class="crumbs">Loading…</div></main>
+
+<a class="shopbar" href="/">← Back to the Artmura collection at <b>Designer Wallcoverings</b></a>
+
+<!-- INTERNAL REQUEST MODAL — memo / stock / price -->
+<div class="modal-back" id="inqBack">
+ <div class="modal" role="dialog" aria-modal="true" aria-labelledby="inqTitle">
+ <button class="mclose" id="inqClose" aria-label="Close">×</button>
+ <div class="eyebrow">Internal — Designer Wallcoverings</div>
+ <h3 id="inqTitle">Request a Memo Sample</h3>
+ <div class="msub" id="inqSub">Logged for purchasing follow-up.</div>
+ <input type="hidden" id="inqType" value="memo">
+ <div id="inqQtyWrap" hidden>
+ <label for="inqQty">Quantity (optional)</label>
+ <input id="inqQty" placeholder="e.g. 30 yards">
+ </div>
+ <label for="inqNote">Note (optional) — <b>the vendor sees this: never include a client name</b></label>
+ <textarea id="inqNote" placeholder="Sidemark by account #, timeline…"></textarea>
+ <div class="preview" id="inqPrev" hidden></div>
+ <div class="msg" id="inqMsg"></div>
+ <div class="mrow"><button class="cta" id="inqSend" style="margin-top:0">Request Memo</button></div>
+ </div>
+</div>
+
+<script>
+const handle=decodeURIComponent(location.pathname.split('/').pop());
+const esc=s=>(s||'').replace(/[&<>"]/g,c=>({'&':'&','<':'<','>':'>','"':'"'}[c]));
+function specRow(k,v){return v?`<div class="row"><span class="k">${k}</span><span class="v">${esc(v)}</span></div>`:'';}
+
+let VM={}; // vendorMeta from /api/config — phone, account #, discount, pricing model
+const money=n=>n==null?null:'$'+Number(n).toFixed(2);
+
+// Internal pricing — retail / designer net / our cost, per the line's pricing model.
+// 'map' lines (Kravet family): retail = MAP = whls cost × 1.5; our cost = whls.
+// Everything else: retail = cost/0.65/0.85, net = cost/0.65, our cost = cost minus
+// the line's vendor_discount_pct when one is on file. Explicit list price wins for retail.
+function priceTiers(p){
+ const cost=p.cost!=null?Number(p.cost):null, list=p.price!=null?Number(p.price):null;
+ const disc=VM.discount_pct!=null?Number(VM.discount_pct):null;
+ let retail=null, net=null, ourCost=null;
+ if(VM.pricing_model==='map' && cost!=null){ retail=cost*1.5; net=cost*1.5; ourCost=cost; }
+ else{
+ ourCost = cost!=null ? (disc!=null? cost*(1-disc/100) : cost) : null;
+ net = cost!=null ? cost/0.65 : (list!=null? list*0.85 : null);
+ retail = list!=null ? list : (cost!=null? cost/0.65/0.85 : null);
+ }
+ return {retail, net, ourCost};
+}
+function priceBox(p){
+ const t=priceTiers(p);
+ const unit=VM.pricing_unit?('/'+String(VM.pricing_unit).replace(/^per\s*/i,'').replace('yard','yd').replace('roll','roll')):'';
+ const row=(k,v)=>`<div class="row"><span class="k">${k}</span><span class="v">${v!=null?esc(money(v)+unit):'—'}</span></div>`;
+ const empty=t.retail==null&&t.net==null&&t.ourCost==null;
+ return `<div class="pricebox">
+ ${row('Retail',t.retail)}
+ ${row('Designer Net',t.net)}
+ ${row('Our Cost'+(VM.discount_pct!=null?' (after '+VM.discount_pct+'% discount)':''),t.ourCost)}
+ ${p.price_code?`<div class="row"><span class="k">Vendor Price Code</span><span class="v">${esc(p.price_code)}</span></div>`:''}
+ ${empty?'<div class="pnote">No pricing on file for this line — use <b>Get Price</b> below.</div>':''}
+ </div>`;
+}
+
+(async()=>{
+ const [cfg,r]=await Promise.all([fetch(location.origin+'/api/config').then(x=>x.json()).catch(()=>({})), fetch(location.origin+'/api/product/'+encodeURIComponent(handle))]);
+ const LINE = cfg.line || cfg.vendor || 'Artmura';
+ VM = cfg.vendorMeta || {};
+ if(cfg.slug){ document.body.dataset.line = cfg.slug; }
+ document.querySelector('.corner.ul').setAttribute('href', cfg.houseUrl || 'https://www.designerwallcoverings.com');
+ if(!r.ok){document.getElementById('pdp').innerHTML='<div class="crumbs"><a href="/">← Back</a></div><h1 style="font-family:var(--serif)">Not found</h1>';return;}
+ const p=await r.json();
+ document.title=`${p.display_name||p.color||p.title} · ${LINE} | Designer Wallcoverings`;
+ const imgs=(p.images&&p.images.length)?p.images:[p.swatch].filter(Boolean);
+ const main=imgs[0]||'';
+ const label=`${p.display_eyebrow||''} ${p.display_name||p.color||''}`.trim();
+
+ document.getElementById('pdp').innerHTML=`
+ <div class="crumbs"><a href="https://www.designerwallcoverings.com">Designer Wallcoverings</a> / <a href="/">${esc(LINE)}</a> / <a href="/#catalog">${esc(p.display_eyebrow||p.series||'')}</a> / ${esc(p.display_name||p.color||p.title)}</div>
+ <div class="pdp-top">
+ <div class="gallery">
+ <div class="main" id="main" style="background-image:url('${main}')"></div>
+ ${imgs.length>1?`<div class="thumbs">${imgs.map((s,i)=>`<div class="t ${i===0?'on':''}" data-s="${s}" style="background-image:url('${s}')"></div>`).join('')}</div>`:''}
+ </div>
+ <div class="rail">
+ <div class="ser">${esc(p.display_eyebrow||p.book||LINE)}</div>
+ <h1>${esc(p.display_name||p.color||p.title)}</h1>
+ <div class="colr">${esc(VM.name||LINE)} · ${esc(p.sku||'')}${p.material?' · '+esc(p.material):''}</div>
+ ${priceBox(p)}
+ <div class="act3">
+ <button class="cta" data-act="memo">Request Memo</button>
+ <button class="cta" data-act="stock">Check Stock</button>
+ <button class="cta" data-act="price">Get Price</button>
+ </div>
+ ${!VM.email?`<div class="noemail">✉️ No vendor email on file — stock & price checks are logged internally; confirm by phone${VM.phone?': '+esc(VM.phone):''}.</div>`:''}
+ ${VM.phone?`<a class="cta ghost call" href="tel:+1${(VM.phone||'').replace(/[^0-9]/g,'')}">📞 Call ${esc(VM.name||LINE)} — ${esc(VM.phone)}${VM.account_number?' · Acct # '+esc(VM.account_number):''}</a>`:''}
+ <div class="spec">
+ ${specRow('Vendor',VM.name||LINE)}
+ ${specRow('Vendor SKU / Model #',p.sku)}
+ ${specRow('DW SKU',p.dw_sku)}
+ ${specRow('Our Account #',VM.account_number)}
+ ${specRow('Vendor Phone',VM.phone)}
+ ${specRow('Pattern',p.series)}
+ ${specRow('Colorway',p.color)}
+ ${specRow('Width',p.width)}
+ ${specRow('Length',p.length)}
+ ${specRow('Repeat',p.repeat)}
+ ${specRow('Material',p.material)}
+ ${specRow('Match',p.match)}
+ ${specRow('Format',p.book)}
+ </div>
+ </div>
+ </div>
+ <div class="story">
+ <div><h3>The story</h3><div>${p.body_html?('<p>'+esc(p.body_html.slice(0,700))+(p.body_html.length>700?'…':'')+'</p>'):('<p>'+esc(p.title)+' from the '+esc(LINE)+' collection.</p>')}</div></div>
+ <div><h3>Specifications</h3><p>${esc([p.width,p.repeat&&('repeat '+p.repeat),p.material].filter(Boolean).join(' · ')||'Digitally printed, made to order.')}</p></div>
+ <div><h3>Ordering (internal)</h3><p>Order direct from ${esc(VM.name||LINE)}${VM.phone?' at '+esc(VM.phone):''}${VM.account_number?', our account # '+esc(VM.account_number):''}. Use the buttons above to log a memo, stock, or price request for purchasing.</p></div>
+ </div>
+ <section class="pairs" id="pairs" hidden>
+ <h3>Pairs well with</h3>
+ <div class="pair-grid" id="pairGrid"></div>
+ </section>`;
+
+ // 3 internal actions → shared modal (internal; no checkout, no external store)
+ ITEM={dw_sku:p.dw_sku, mfr_sku:p.sku, title:(label||p.title||'').trim()};
+ document.querySelectorAll('.act3 .cta').forEach(b=>{
+ b.onclick=()=>openInquiry(b.dataset.act);
+ });
+
+ // JSON-LD Product schema (no price — trade line; canonical → this page)
+ const ld={ "@context":"https://schema.org","@type":"Product",name:p.title,sku:p.sku,
+ brand:{"@type":"Brand",name:LINE},category:"Wallcoverings",image:imgs,
+ description:(p.body_html||'').replace(/<[^>]+>/g,'').slice(0,300) };
+ const s=document.createElement('script');s.type='application/ld+json';s.textContent=JSON.stringify(ld);document.head.appendChild(s);
+ // canonical → this internal page (Astek is not on Shopify, so no external canonical)
+ const c=document.createElement('link');c.rel='canonical';c.href=location.origin+location.pathname;document.head.appendChild(c);
+
+ // pairs well with
+ try{
+ const pr=await (await fetch(location.origin+'/api/pairs/'+encodeURIComponent(handle))).json();
+ if(pr.pairs&&pr.pairs.length){
+ document.getElementById('pairGrid').innerHTML=pr.pairs.map(q=>`
+ <a class="pcard" href="/product/${encodeURIComponent(q.handle)}">
+ <img loading="lazy" decoding="async" alt="${esc(q.title)}" src="${q.swatch||q.room||''}">
+ <div class="pc-b"><span class="pc-s">${esc(q.series||'')}</span><span class="pc-n">${esc(q.color||q.title)}</span></div>
+ </a>`).join('');
+ document.getElementById('pairs').hidden=false;
+ }
+ }catch(e){}
+
+ document.querySelectorAll('.thumbs .t').forEach(t=>t.onclick=()=>{
+ document.getElementById('main').style.backgroundImage=`url('${t.dataset.s}')`;
+ document.querySelectorAll('.thumbs .t').forEach(x=>x.classList.remove('on'));t.classList.add('on');
+ });
+})();
+
+// ---- internal request modal (memo / stock / price) ----
+// stock/price = ACTIVE requests: previews the exact vendor email, then sends via
+// purchasing (george) and returns an internal REQ number. memo = internal log.
+let ITEM={};
+const ACT={
+ memo:{title:'Request a Memo Sample',btn:'Log Memo Request',sub:s=>`Log a memo request for ${s} — purchasing orders the sample.`},
+ stock:{title:'Check Stock',btn:'Send Stock Check',sub:s=>`Emails the vendor a stock check for ${s} (our account # only — no client info). You get a REQ number.`},
+ price:{title:'Get Price',btn:'Send Price Request',sub:s=>`Emails the vendor for our current cost on ${s} (our account # only — no client info). You get a REQ number.`},
+};
+const $=id=>document.getElementById(id);
+function reqPayload(){
+ const type=$('inqType').value;
+ return {type, dw_sku:ITEM.dw_sku, mfr_sku:ITEM.mfr_sku, title:ITEM.title,
+ qty:$('inqQty').value.trim()||null, note:$('inqNote').value.trim()||null};
+}
+let prevTimer=null;
+async function refreshPreview(){
+ const type=$('inqType').value;
+ if(type==='memo'){$('inqPrev').hidden=true;return;}
+ try{
+ const r=await fetch(location.origin+'/api/request/preview',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(reqPayload())});
+ const j=await r.json();
+ if(!j.ok)return;
+ $('inqPrev').hidden=false;
+ $('inqPrev').innerHTML = j.no_email
+ ? `<div class="pv-warn">✉️ No vendor email on file — this logs an internal REQ; confirm by phone${j.phone?': '+esc(j.phone):''}.</div>`
+ : `<div class="pv-h">Email that will be sent</div>
+ <div class="pv-meta"><b>To:</b> ${esc(j.to)} <b>From:</b> ${esc(j.from)}</div>
+ <div class="pv-meta"><b>Subject:</b> ${esc(j.subject)}</div>
+ <div class="pv-body">${j.body}</div>`;
+ }catch(e){}
+}
+function openInquiry(type){
+ const a=ACT[type]||ACT.memo;
+ $('inqType').value=ACT[type]?type:'memo';
+ $('inqTitle').textContent=a.title;
+ $('inqSend').textContent=a.btn;
+ $('inqSub').textContent=a.sub(ITEM.title||ITEM.mfr_sku||'this item');
+ $('inqQtyWrap').hidden = type==='memo';
+ $('inqQty').value=''; $('inqNote').value='';
+ $('inqPrev').hidden=true;
+ const m=$('inqMsg'); m.textContent=''; m.className='msg';
+ $('inqBack').classList.add('on');
+ refreshPreview();
+}
+['inqQty','inqNote'].forEach(id=>$(id).addEventListener('input',()=>{clearTimeout(prevTimer);prevTimer=setTimeout(refreshPreview,500);}));
+$('inqClose').onclick=()=>$('inqBack').classList.remove('on');
+$('inqBack').addEventListener('click',e=>{if(e.target.id==='inqBack')$('inqBack').classList.remove('on');});
+$('inqSend').onclick=async()=>{
+ const m=$('inqMsg');
+ $('inqSend').disabled=true;
+ try{
+ const r=await fetch(location.origin+'/api/request',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(reqPayload())});
+ const j=await r.json();
+ if(j.ok){m.textContent=j.message;m.className='msg ok';setTimeout(()=>$('inqBack').classList.remove('on'),3200);}
+ else{m.textContent=j.error||'Something went wrong.';m.className='msg err';}
+ }catch(e){m.textContent='Network error — request not sent.';m.className='msg err';}
+ $('inqSend').disabled=false;
+};
+
+</script>
+</body>
+</html>
diff --git a/public/styles.css b/public/styles.css
new file mode 100644
index 0000000..76f90df
--- /dev/null
+++ b/public/styles.css
@@ -0,0 +1,286 @@
+/* Designer Wallcoverings vendor-landing — editorial luxury house chrome over a featured line.
+ Warm neutrals, Lora serif display (DW house font), clean specs. */
+:root{
+ --bg:#f6f2ec; /* warm cream */
+ --paper:#fffdf9;
+ --ink:#211d18; /* near-black warm */
+ --ink-soft:#6b6258;
+ --line:#e3dccf;
+ --taupe:#b7a890;
+ --accent:#8c7a5f; /* champagne-taupe */
+ --gold:#a98c54;
+ --cols:4;
+ --maxw:1320px;
+ --serif:"Lora",Georgia,serif;
+ --sans:"Inter","Helvetica Neue",Arial,sans-serif;
+}
+*{box-sizing:border-box}
+html{scroll-behavior:smooth}
+body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
+ -webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55}
+a{color:inherit;text-decoration:none}
+img{display:block;max-width:100%}
+
+/* ---------- top corners (standing rules: logo UL, nav UR) ---------- */
+.corner{position:fixed;top:0;z-index:40;padding:22px 26px;display:flex;align-items:center;gap:18px}
+.corner.ul{left:0}
+.corner.ur{right:0;gap:22px}
+.wordmark{font-family:var(--serif);font-weight:600;letter-spacing:.2em;font-size:16px;
+ text-transform:uppercase;color:var(--ink);white-space:nowrap}
+.on-hero .wordmark{text-shadow:0 1px 18px rgba(0,0,0,.55),0 0 2px rgba(0,0,0,.4)}
+.on-hero.ur a{text-shadow:0 1px 14px rgba(0,0,0,.5)}
+.wordmark .dot{color:var(--gold)}
+.corner.ur a{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);
+ transition:color .2s}
+.corner.ur a:hover{color:var(--ink)}
+.on-hero .wordmark,.on-hero.ur a{color:#fff}
+.on-hero.ur a{color:rgba(255,255,255,.85)}
+
+/* ---------- hero ---------- */
+.hero{position:relative;height:100vh;min-height:620px;overflow:hidden;background:#1a1612}
+.hero .slide{position:absolute;inset:0;background-size:cover;background-position:center;
+ opacity:0;transition:opacity 1.4s ease;transform:scale(1.04)}
+.hero .slide.on{opacity:1}
+/* layered scrim — top band (wordmark+nav), center vignette (headline), bottom (CTA);
+ tuned so a WHITE wordmark clears APCA Lc>=60 on light Italian room shots */
+.hero::after{content:"";position:absolute;inset:0;
+ background:
+ radial-gradient(ellipse 72% 52% at 50% 56%, rgba(18,14,10,.52) 0%, rgba(18,14,10,0) 72%),
+ linear-gradient(180deg, rgba(18,14,10,.64) 0%, rgba(18,14,10,.30) 30%, rgba(18,14,10,.26) 58%, rgba(18,14,10,.68) 100%)}
+.hero-inner{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;
+ align-items:center;justify-content:center;text-align:center;color:#fff;padding:0 24px}
+.hero-eyebrow{font-size:11px;letter-spacing:.4em;text-transform:uppercase;opacity:.92;margin-bottom:20px;
+ padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.4)}
+.hero-kicker{font-size:10.5px;letter-spacing:.4em;text-transform:uppercase;opacity:.8;margin-top:18px}
+.hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(52px,9vw,118px);line-height:.96;
+ margin:0;letter-spacing:.02em;text-shadow:0 2px 30px rgba(0,0,0,.45)}
+.hero .sub{font-family:var(--serif);font-style:italic;font-size:clamp(18px,2.4vw,27px);
+ margin-top:14px;opacity:.94;text-shadow:0 1px 16px rgba(0,0,0,.5)}
+.enter{position:absolute;bottom:42px;left:50%;transform:translateX(-50%);z-index:6;
+ border:1px solid rgba(255,255,255,.55);color:#fff;border-radius:40px;
+ padding:13px 34px;font-size:11px;letter-spacing:.26em;text-transform:uppercase;
+ background:rgba(20,16,12,.18);backdrop-filter:blur(3px);transition:.25s}
+.enter:hover{background:#fff;color:var(--ink);border-color:#fff}
+
+/* ---------- collections strip ---------- */
+.books{max-width:var(--maxw);margin:0 auto;padding:64px 26px 8px;text-align:center}
+.books .eyebrow{font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--ink-soft)}
+.books h2{font-family:var(--serif);font-weight:500;font-size:38px;margin:8px 0 26px}
+.chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
+.chip{border:1px solid var(--line);background:var(--paper);border-radius:30px;
+ padding:9px 18px;font-size:12px;letter-spacing:.04em;cursor:pointer;transition:.2s;color:var(--ink-soft)}
+.chip:hover{border-color:var(--taupe);color:var(--ink)}
+.chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}
+.chip .n{opacity:.55;margin-left:6px;font-variant-numeric:tabular-nums}
+
+/* ---------- controls (sort + density — standing rule) ---------- */
+.controls{position:sticky;top:0;z-index:45;background:rgba(246,242,236,.94);
+ backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
+.controls-in{max-width:var(--maxw);margin:0 auto;padding:14px 26px;display:flex;
+ align-items:center;gap:20px;flex-wrap:wrap}
+.bar-wm{display:none;font-family:var(--serif);font-weight:600;letter-spacing:.28em;
+ text-transform:uppercase;font-size:16px;color:var(--ink)}
+.bar-wm .dot{color:var(--gold)}
+body.scrolled .bar-wm{display:block}
+body.scrolled .corner{opacity:0;pointer-events:none}
+.corner{transition:opacity .3s}
+.count{font-size:12px;letter-spacing:.04em;color:var(--ink-soft);margin-right:auto}
+.count b{color:var(--ink);font-weight:600}
+.ctl{display:flex;align-items:center;gap:9px}
+.ctl label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
+.ctl select{font-family:var(--sans);font-size:13px;border:1px solid var(--line);background:var(--paper);
+ color:var(--ink);border-radius:8px;padding:7px 30px 7px 11px;cursor:pointer;
+ appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%238c7a5f'/%3E%3C/svg%3E");
+ background-repeat:no-repeat;background-position:right 11px center}
+.ctl input[type=range]{width:120px;accent-color:var(--accent)}
+
+/* ---------- color filter bar ---------- */
+.colorbar{max-width:var(--maxw);margin:0 auto;padding:16px 26px 0;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
+.cdot{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--paper);
+ border-radius:30px;padding:6px 13px 6px 8px;font-size:11px;letter-spacing:.04em;text-transform:capitalize;
+ color:var(--ink-soft);cursor:pointer;transition:.18s}
+.cdot span{width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,.15)}
+.cdot.all{padding:6px 14px}
+.cdot:hover{border-color:var(--taupe);color:var(--ink)}
+.cdot.active{background:var(--ink);color:#fff;border-color:var(--ink)}
+
+/* ---------- grid ---------- */
+.grid-wrap{max-width:var(--maxw);margin:0 auto;padding:26px 26px 80px}
+.grid{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:22px}
+.card{background:var(--paper);border:1px solid var(--line);border-radius:4px;overflow:hidden;
+ cursor:pointer;transition:transform .25s ease,box-shadow .25s ease;display:flex;flex-direction:column}
+.card:hover{transform:translateY(-3px);box-shadow:0 16px 40px -22px rgba(33,29,24,.45)}
+.card .ph{aspect-ratio:1/1;width:100%;object-fit:cover;background:var(--paper);display:block;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
+.card:hover .ph{transform:scale(1.055)}
+.card .body{padding:13px 14px 15px}
+.card .ser{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
+.card .nm{font-family:var(--serif);font-size:20px;line-height:1.1;margin:3px 0 2px}
+.card .meta{display:flex;justify-content:space-between;align-items:baseline;margin-top:7px}
+.card .col{font-size:12px;color:var(--ink-soft);display:inline-flex;align-items:center;gap:6px}
+.card .col .dot{width:9px;height:9px;border-radius:50%;border:1px solid rgba(0,0,0,.12);flex:0 0 auto}
+.card .pr{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);transition:.2s}
+.card:hover .pr{color:var(--accent)}
+
+/* ---------- footer ---------- */
+footer{border-top:1px solid var(--line);background:var(--paper)}
+.foot-in{max-width:var(--maxw);margin:0 auto;padding:46px 26px;display:flex;
+ justify-content:space-between;gap:24px;flex-wrap:wrap;font-size:12px;color:var(--ink-soft)}
+.foot-in .wm{font-family:var(--serif);letter-spacing:.3em;text-transform:uppercase;color:var(--ink);font-size:16px}
+.gate{font-size:11px;color:var(--ink-soft);max-width:420px;line-height:1.5}
+
+/* ---------- PDP (Editorial Magazine / Figma V1) ---------- */
+.pdp{max-width:1280px;margin:0 auto;padding:104px 26px 90px}
+.crumbs{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:22px}
+.crumbs a:hover{color:var(--ink)}
+.pdp-top{display:grid;grid-template-columns:1.55fr 1fr;gap:48px;align-items:start}
+.gallery .main{aspect-ratio:4/3;background:#efe9df center/cover;border:1px solid var(--line);border-radius:4px}
+.thumbs{display:flex;gap:10px;margin-top:12px}
+.thumbs .t{width:76px;height:76px;background:#efe9df center/cover;border:1px solid var(--line);
+ border-radius:3px;cursor:pointer;opacity:.7;transition:.2s}
+.thumbs .t.on,.thumbs .t:hover{opacity:1;border-color:var(--taupe)}
+.rail .ser{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
+.rail h1{font-family:var(--serif);font-weight:500;font-size:46px;line-height:1.02;margin:8px 0 4px}
+.rail .colr{font-size:14px;color:var(--ink-soft);margin-bottom:22px}
+.price{font-family:var(--serif);font-size:34px}
+.price small{font-family:var(--sans);font-size:12px;letter-spacing:.06em;color:var(--ink-soft)}
+.cta{display:block;width:100%;text-align:center;margin-top:20px;padding:15px;border-radius:40px;
+ background:var(--ink);color:#fff;font-size:11px;letter-spacing:.22em;text-transform:uppercase;
+ cursor:pointer;border:0;transition:.2s}
+.cta:hover{background:var(--accent)}
+.cta.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);margin-top:10px}
+.cta.ghost:hover{border-color:var(--ink)}
+/* social share — shares the real DW product page */
+.share{display:flex;align-items:center;gap:10px;margin-top:22px;flex-wrap:wrap}
+.share-lbl{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-right:2px}
+.sbtn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;
+ border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);cursor:pointer;transition:.2s;padding:0}
+.sbtn:hover{color:#fff;transform:translateY(-2px)}
+.sbtn.pin:hover{background:#e60023;border-color:#e60023}
+.sbtn.fb:hover{background:#1877f2;border-color:#1877f2}
+.sbtn.x:hover{background:#000;border-color:#000}
+.sbtn.mail:hover{background:var(--accent);border-color:var(--accent)}
+.sbtn.copy:hover{background:var(--ink);border-color:var(--ink)}
+.sbtn.copy.done{background:#3f8a5d;border-color:#3f8a5d;color:#fff}
+
+.spec{margin-top:30px;border-top:1px solid var(--line)}
+.spec .row{display:flex;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--line);font-size:13px}
+.spec .row .k{color:var(--ink-soft);letter-spacing:.04em}
+.spec .row .v{color:var(--ink);text-align:right}
+.story{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;margin-top:64px;
+ padding-top:40px;border-top:1px solid var(--line)}
+.story h3{font-family:var(--serif);font-weight:500;font-size:22px;margin:0 0 12px}
+.story p{font-size:13.5px;color:var(--ink-soft);margin:0}
+.pairs{margin-top:60px;padding-top:40px;border-top:1px solid var(--line)}
+.pairs h3{font-family:var(--serif);font-weight:500;font-size:24px;margin:0 0 22px}
+.pair-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
+.pcard{display:block}
+.pcard img{aspect-ratio:1/1;width:100%;object-fit:cover;border:1px solid var(--line);border-radius:3px;transition:.25s}
+.pcard:hover img{transform:translateY(-3px);box-shadow:0 14px 32px -20px rgba(33,29,24,.5)}
+.pc-b{padding:9px 2px}
+.pc-s{display:block;font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
+.pc-n{display:block;font-family:var(--serif);font-size:16px;line-height:1.1;margin-top:2px}
+@media(max-width:1080px){.pair-grid{grid-template-columns:repeat(3,1fr)}}
+@media(max-width:560px){.pair-grid{grid-template-columns:repeat(2,1fr)}}
+.shopbar{position:fixed;bottom:0;left:0;right:0;z-index:50;background:#211d18;color:#f6f2ec;
+ font-size:12px;letter-spacing:.06em;text-align:center;padding:11px 14px;display:block;
+ text-decoration:none;transition:background .2s}
+.shopbar:hover{background:#2f2920}
+.shopbar b{color:#caa45f;font-weight:600}
+
+@media(max-width:1080px){:root{--cols:3}.pdp-top{grid-template-columns:1fr;gap:30px}.story{grid-template-columns:1fr;gap:26px}}
+@media(max-width:720px){:root{--cols:2}.hero h1{font-size:64px}.grid{gap:14px}}
+
+/* ============================================================
+ FallingStar Studio — hand-painted artist treatment
+ (graphic-designer direction, 2026-06-17). Scoped to the line;
+ Artmura / Thibaut / Schumacher are unaffected.
+ ============================================================ */
+/* monograph register — lighter display weights read as a gallery, not a catalog */
+body[data-line="fallingstar"] .books h2,
+body[data-line="fallingstar"] .card .nm,
+body[data-line="fallingstar"] .rail h1{font-weight:400;letter-spacing:.005em}
+
+/* move 1 — matted artwork: thin ink frame insets the image like framed art */
+body[data-line="fallingstar"] .card{border-color:var(--taupe);border-radius:3px}
+body[data-line="fallingstar"] .card .ph{margin:8px 8px 0;width:calc(100% - 16px);
+ border:1px solid rgba(34,31,24,.28);border-radius:2px}
+body[data-line="fallingstar"] .card .ser{font-style:italic;text-transform:none;letter-spacing:.04em;font-size:11px}
+
+/* move 2 — postage / wax-stamp collection chips */
+body[data-line="fallingstar"] .chip{border-radius:3px;font-family:var(--serif);
+ letter-spacing:.02em;background:var(--paper);box-shadow:inset 0 0 0 2px var(--paper),0 0 0 1px var(--line)}
+body[data-line="fallingstar"] .chip.active{background:var(--accent);color:#fff;border-color:var(--accent);
+ box-shadow:inset 0 0 0 2px var(--accent),0 0 0 1px var(--accent)}
+
+/* move 3 — brushstroke rule under the collections heading */
+body[data-line="fallingstar"] .books h2{position:relative}
+body[data-line="fallingstar"] .books h2::after{content:"";display:block;width:72px;height:9px;margin:16px auto 0;
+ background:var(--accent);opacity:.9;
+ -webkit-mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 9'><path d='M1 5 C12 2,22 7,33 4 C45 1,56 8,71 4 L70 6 C56 9,45 4,33 7 C22 9,12 4,2 7 Z'/></svg>") center/contain no-repeat;
+ mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 72 9'><path d='M1 5 C12 2,22 7,33 4 C45 1,56 8,71 4 L70 6 C56 9,45 4,33 7 C22 9,12 4,2 7 Z'/></svg>") center/contain no-repeat;
+ transform:rotate(-.6deg)}
+
+/* ABOUT — brand story + "in collaboration with Designer Wallcoverings" (standing rule) */
+.about{max-width:760px;margin:0 auto;padding:56px 26px 8px;text-align:center}
+.about .eyebrow{font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--ink-soft)}
+.about h2{font-family:var(--serif);font-weight:500;font-size:32px;margin:8px 0 22px}
+.about-body p{font-size:16px;line-height:1.85;color:var(--ink-soft);margin:0 0 18px;text-align:left}
+.about .dw-collab{font-family:var(--serif);font-style:italic;font-size:16px;color:var(--ink);
+ margin:26px 0 0;padding-top:22px;border-top:1px solid var(--line)}
+
+/* ---------- memo-sample / inquiry modal (internal CTA — no checkout) ---------- */
+.modal-back{position:fixed;inset:0;z-index:80;background:rgba(20,16,12,.55);
+ display:none;align-items:center;justify-content:center;padding:20px}
+.modal-back.on{display:flex}
+.modal{background:var(--paper);border:1px solid var(--line);border-radius:6px;max-width:440px;width:100%;
+ padding:30px 28px;box-shadow:0 30px 80px -30px rgba(33,29,24,.6)}
+.modal .eyebrow{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold)}
+.modal h3{font-family:var(--serif);font-weight:500;font-size:26px;margin:6px 0 4px}
+.modal .msub{font-size:13px;color:var(--ink-soft);margin-bottom:18px}
+.modal label{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin:14px 0 5px}
+.modal input,.modal textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:7px;
+ padding:11px 12px;font-family:var(--sans);font-size:14px;color:var(--ink)}
+.modal textarea{min-height:74px;resize:vertical}
+.modal .mrow{display:flex;gap:12px;margin-top:20px}
+.modal .msg{font-size:13px;margin-top:14px;min-height:18px}
+.modal .msg.ok{color:#3f8a5d}.modal .msg.err{color:#a23b2e}
+.mclose{float:right;border:0;background:none;font-size:22px;line-height:1;color:var(--ink-soft);cursor:pointer;margin:-6px -4px 0 0}
+
+/* ── Corner refresh countdown pill ── */
+.astek-refresh-pill{
+ position:fixed; right:16px; bottom:16px; z-index:9999;
+ display:flex; align-items:center; gap:8px;
+ padding:8px 14px; border-radius:999px;
+ background:rgba(20,20,22,.82); color:#f4f1ea;
+ font:500 12px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
+ letter-spacing:.02em; backdrop-filter:blur(8px);
+ box-shadow:0 4px 18px rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.12);
+ user-select:none; pointer-events:auto;
+}
+.astek-refresh-pill .rp-dot{
+ width:7px; height:7px; border-radius:50%; background:#8bbf9f; flex:0 0 auto;
+ box-shadow:0 0 0 0 rgba(139,191,159,.6); animation:rpPulse 2.4s ease-out infinite;
+}
+.astek-refresh-pill.rp-live .rp-dot{ background:#e6b566; animation-duration:.9s; }
+@keyframes rpPulse{ 0%{box-shadow:0 0 0 0 rgba(139,191,159,.55)} 70%{box-shadow:0 0 0 8px rgba(139,191,159,0)} 100%{box-shadow:0 0 0 0 rgba(139,191,159,0)} }
+@media (max-width:640px){ .astek-refresh-pill{ right:10px; bottom:10px; padding:6px 11px; font-size:11px; } }
+
+/* ── internal PDP — pricing panel + 3-action row + INTERNAL pill ── */
+.internal-pill{font-size:10px;letter-spacing:.18em;font-weight:600;color:#fff;background:#b3261e;
+ padding:4px 10px;border-radius:20px;align-self:center}
+.pricebox{margin-top:18px;border:1px solid var(--line);border-radius:10px;padding:4px 14px;background:rgba(0,0,0,.02)}
+.pricebox .row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
+.pricebox .row:last-child{border-bottom:0}
+.pricebox .row .k{color:var(--ink-soft);letter-spacing:.04em}
+.pricebox .row .v{color:var(--ink);font-weight:600}
+.pricebox .pnote{padding:9px 0;font-size:12.5px;color:var(--ink-soft)}
+.act3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:16px}
+.act3 .cta{margin-top:0;padding:13px 4px;font-size:13px;white-space:nowrap}
+.cta.call{font-size:13.5px}
+.noemail{margin-top:10px;font-size:12.5px;color:#8a5a00;background:#fdf6e3;border:1px solid #eadfc0;border-radius:8px;padding:9px 12px}
+.preview{margin-top:14px;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:rgba(0,0,0,.02);font-size:12.5px;max-height:260px;overflow:auto}
+.preview .pv-h{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:8px}
+.preview .pv-meta{color:var(--ink-soft);margin-bottom:4px}
+.preview .pv-body{margin-top:10px;border-top:1px solid var(--line);padding-top:8px;color:var(--ink)}
+.preview .pv-body p{margin:0 0 8px}
+.preview .pv-warn{color:#8a5a00}
diff --git a/scripts/build-products-json.js b/scripts/build-products-json.js
new file mode 100644
index 0000000..3ce2fe9
--- /dev/null
+++ b/scripts/build-products-json.js
@@ -0,0 +1,165 @@
+#!/usr/bin/env node
+/**
+ * Internal Artmura viewer data — build data/products.json from the LIVE DW
+ * Shopify storefront feed (designerwallcoverings.com/products.json), filtered
+ * to vendor Artmura. The local shopify_products mirror is sparse for Artmura
+ * (no SKUs/prices), so the live feed is the authoritative source — same source
+ * the public artmura microsite (dw-vendor-landing template) builds from.
+ * INTERNAL ONLY. Retail = live variant price (samples excluded). $0 (public feed).
+ */
+const fs = require('fs');
+const path = require('path');
+const { Pool } = require('pg');
+
+const OUT = path.join(__dirname, '..', 'data', 'products.json');
+const FEED = 'https://www.designerwallcoverings.com/products.json';
+const VENDOR = 'Artmura';
+
+const PW = (() => {
+ try {
+ const env = fs.readFileSync(require('os').homedir() + '/Projects/secrets-manager/.env', 'utf8');
+ const m = env.match(/^DW_ADMIN_DB_PASSWORD=(.*)$/m);
+ return m ? m[1].replace(/^["']|["']$/g, '').trim() : '';
+ } catch { return ''; }
+})();
+
+const BUCKET = {
+ white: 'white', ivory: 'white', cream: 'white', beige: 'white',
+ grey: 'grey', gray: 'grey', silver: 'grey', neutral: 'grey', taupe: 'grey',
+ black: 'black', charcoal: 'black',
+ red: 'red', burgundy: 'red',
+ orange: 'orange', rust: 'orange', copper: 'orange', terracotta: 'orange',
+ brown: 'brown', tan: 'brown', bronze: 'brown', chocolate: 'brown',
+ gold: 'gold', yellow: 'gold', mustard: 'gold',
+ green: 'green', olive: 'green', sage: 'green', emerald: 'green',
+ teal: 'teal', turquoise: 'teal', aqua: 'teal',
+ blue: 'blue', navy: 'blue', indigo: 'blue',
+ purple: 'purple', violet: 'purple', lavender: 'purple', plum: 'purple',
+ pink: 'pink', rose: 'pink', blush: 'pink', magenta: 'pink',
+};
+const BUCKET_ORDER = ['white','grey','black','pink','red','orange','brown','gold','green','teal','blue','purple'];
+const BUCKET_HUE = { red:0, orange:30, gold:50, green:120, teal:175, blue:215, purple:280, pink:330, brown:25, white:null, grey:null, black:null };
+
+const clean = s => (s == null ? s : String(s)
+ .replace(/\bWallpapers\b/gi, 'Wallcoverings').replace(/\bWallpaper\b/gi, 'Wallcovering'));
+
+function bucketFor(tags) {
+ for (const t of (tags || [])) {
+ const key = String(t || '').toLowerCase().trim();
+ if (BUCKET[key]) return BUCKET[key];
+ }
+ return null;
+}
+
+async function fetchFeed() {
+ const all = [];
+ for (let page = 1; page <= 40; page++) {
+ const r = await fetch(`${FEED}?limit=250&page=${page}`, { headers: { 'User-Agent': 'DW-internal-viewer' } });
+ if (!r.ok) throw new Error(`feed page ${page}: HTTP ${r.status}`);
+ const j = await r.json();
+ if (!j.products || j.products.length === 0) break;
+ all.push(...j.products);
+ }
+ return all.filter(p => (p.vendor || '').trim() === VENDOR);
+}
+
+// Vendor ops meta — Artmura has no registry row and no fmpro contact on file
+// (2026-07-02), so this usually returns nulls → the PDP shows the no-email
+// banner and stock/price requests log internally. Re-checks PG each build so
+// the moment a contact/discount is added it flows through automatically.
+async function fetchVendorMeta() {
+ const out = { name: VENDOR, phone: null, email: null, account_number: null,
+ discount_pct: null, pricing_unit: null, pricing_model: null, pricing_notes: null, sample_price: null };
+ if (!PW) return out;
+ const pool = new Pool({ host: '127.0.0.1', port: 5432, user: 'dw_admin', database: 'dw_unified', password: PW, max: 1 });
+ try {
+ const vr = (await pool.query(`SELECT vendor_name, vendor_discount_pct, pricing_unit, pricing_model, pricing_notes, sample_price FROM vendor_registry WHERE vendor_name ILIKE $1 OR vendor_code ILIKE $1 LIMIT 1`, [VENDOR])).rows[0] || {};
+ const fm = (await pool.query(`SELECT phone, email_1, account_num FROM fmpro WHERE vendor_name ILIKE $1 AND (phone IS NOT NULL OR email_1 IS NOT NULL) LIMIT 1`, ['%' + VENDOR + '%'])).rows[0] || {};
+ const acct = (fm.account_num || '').trim();
+ const acctOk = /^[A-Za-z0-9][A-Za-z0-9\-\/. ]{1,19}$/.test(acct) && !/discount|resale|on file|%/i.test(acct);
+ Object.assign(out, {
+ name: vr.vendor_name || VENDOR,
+ phone: fm.phone || null,
+ email: fm.email_1 || null,
+ account_number: acctOk ? acct : null,
+ discount_pct: vr.vendor_discount_pct != null ? Number(vr.vendor_discount_pct) : null,
+ pricing_unit: vr.pricing_unit || null,
+ pricing_model: vr.pricing_model || null,
+ pricing_notes: vr.pricing_notes || null,
+ sample_price: vr.sample_price != null ? Number(vr.sample_price) : null,
+ });
+ } catch (e) { console.error('vendor meta lookup failed (using defaults):', e.message); }
+ await pool.end().catch(() => {});
+ return out;
+}
+
+async function main() {
+ const [feed, vendorMeta] = await Promise.all([fetchFeed(), fetchVendorMeta()]);
+
+ const products = [];
+ let dropped = 0;
+ for (const p of feed) {
+ const imgs = (p.images || []).map(i => i.src).filter(Boolean);
+ if (imgs.length === 0) { dropped++; continue; }
+ // retail = the sellable (non-sample) variant's price; samples are $4.25 noise
+ const sellable = (p.variants || []).filter(v => !/sample/i.test(v.title || '')).sort((a, b) => Number(b.price) - Number(a.price));
+ const v0 = sellable[0] || (p.variants || [])[0] || {};
+ const price = v0.price != null && Number(v0.price) > 0 ? Number(v0.price) : null;
+ const sku = v0.sku || null;
+ const dwSku = (sku && /^DW[A-Z]{2}-\d+/.test(sku)) ? sku : null;
+ const title = clean((p.title || '').replace(/\s*\|\s*Artmura\s*$/i, ''));
+ const bucket = bucketFor(p.tags);
+ products.push({
+ handle: p.handle,
+ dw_sku: dwSku,
+ sku: dwSku ? null : sku, // vendor/model # when it isn't our DW sku
+ title: `${title} | ${VENDOR}`,
+ display_eyebrow: VENDOR,
+ display_name: title,
+ series: title.replace(/\s+(Wallcovering|Mural).*$/i, '') || title,
+ color: null,
+ book: p.product_type || VENDOR,
+ color_bucket: bucket,
+ hue: bucket ? BUCKET_HUE[bucket] : null,
+ hex: null, sat: null,
+ val: bucket === 'white' ? 1 : bucket === 'black' ? 0 : 0.5,
+ width: null, length: null, repeat: null, material: null, match: null,
+ price, cost: null, price_code: null,
+ body_html: clean((p.body_html || '').replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim()),
+ swatch: imgs[0] || null,
+ room: imgs[1] || imgs[0] || null,
+ images: imgs.slice(0, 12),
+ published_at: p.published_at || p.created_at,
+ inquiry_sku: dwSku || sku || p.handle,
+ });
+ }
+
+ const facets = { books: {}, series: {}, colors: {} };
+ for (const p of products) {
+ if (p.book) facets.books[p.book] = (facets.books[p.book] || 0) + 1;
+ if (p.series) facets.series[p.series] = (facets.series[p.series] || 0) + 1;
+ if (p.color_bucket) facets.colors[p.color_bucket] = (facets.colors[p.color_bucket] || 0) + 1;
+ }
+ const orderedColors = BUCKET_ORDER.filter(b => facets.colors[b]).map(b => [b, facets.colors[b]]);
+
+ const snapshot = {
+ built_at: new Date().toISOString(),
+ source: 'designerwallcoverings.com live Shopify feed, vendor=Artmura (INTERNAL viewer)',
+ count: products.length,
+ dropped_no_image: dropped,
+ vendor: vendorMeta,
+ facets: {
+ total: products.length,
+ books: Object.entries(facets.books).sort((a, b) => b[1] - a[1]),
+ series: Object.entries(facets.series).sort((a, b) => b[1] - a[1]).slice(0, 300),
+ colors: orderedColors,
+ },
+ products,
+ };
+ fs.writeFileSync(OUT, JSON.stringify(snapshot));
+ console.log(`products.json -> ${OUT}`);
+ console.log(` products: ${products.length} | dropped (no image): ${dropped} | with price: ${products.filter(x => x.price).length}`);
+ await pool_noop();
+}
+async function pool_noop() {}
+main().catch(e => { console.error(e); process.exit(1); });
diff --git a/server.js b/server.js
new file mode 100644
index 0000000..1c22f0b
--- /dev/null
+++ b/server.js
@@ -0,0 +1,157 @@
+/* Astek editorial vendor-landing — Designer Wallcoverings house brand.
+ INTERNAL DATA ONLY: catalog is dw_unified.astek_catalog (NOT on Shopify).
+ Self-contained: reads data/products.json. Links resolve to this site's OWN
+ internal PDPs and a memo-sample/inquiry CTA — never Shopify, never astek.com. */
+const express = require('express');
+const fs = require('fs');
+const path = require('path');
+
+const PORT = process.env.PORT || 0; // 0 = OS-assigned free port
+const DATA = path.join(__dirname, 'data', 'products.json');
+
+const app = express();
+app.use(require('compression')());
+
+// HTTP Basic Auth — internal-only gate (username + password). Override via
+// BASIC_AUTH="user:pass"; defaults to the DW standard admin / DW2024!.
+const [AUTH_USER, AUTH_PASS] = (process.env.BASIC_AUTH || 'admin:DW2024!').split(':');
+app.use((req, res, next) => {
+ const hdr = req.headers.authorization || '';
+ const [scheme, b64] = hdr.split(' ');
+ if (scheme === 'Basic' && b64) {
+ const [u, p] = Buffer.from(b64, 'base64').toString('utf8').split(':');
+ if (u === AUTH_USER && p === AUTH_PASS) return next();
+ }
+ res.set('WWW-Authenticate', 'Basic realm="Artmura - Designer Wallcoverings (internal)"');
+ return res.status(401).send('Authentication required.');
+});
+
+app.use(express.json({ limit: '2mb' }));
+
+let SNAP = { products: [], facets: { total: 0, books: [], series: [], colors: [] } };
+let LIGHT = []; // grid-index payload — heavy PDP-only fields stripped
+let LAST_REFRESH = new Date().toISOString();
+const REFRESH_INTERVAL_SEC = Number(process.env.REFRESH_INTERVAL_SEC || 900); // 15 min, matches the cron
+function load() {
+ SNAP = JSON.parse(fs.readFileSync(DATA, 'utf8'));
+ // the index grid never renders body_html / images[] / eyebrow — keep those PDP-only
+ LIGHT = SNAP.products.map(({ body_html, images, display_eyebrow, published_at, ...p }) => p);
+ try { LAST_REFRESH = fs.statSync(DATA).mtime.toISOString(); } catch { LAST_REFRESH = new Date().toISOString(); }
+ console.log(`[artmura] loaded ${SNAP.products.length} products (data mtime ${LAST_REFRESH})`);
+}
+load();
+// Hot-reload when the 15-min cron rewrites data/products.json — no restart needed.
+fs.watchFile(DATA, { interval: 5000 }, (cur, prev) => {
+ if (cur.mtimeMs !== prev.mtimeMs) { try { load(); } catch (e) { console.error('[artmura] reload failed:', e.message); } }
+});
+
+// House identity — Designer Wallcoverings is the brand; Astek is the featured line.
+const CONFIG = {
+ house: 'Designer Wallcoverings',
+ houseUrl: 'https://www.designerwallcoverings.com',
+ nav: [
+ { label: 'The Collection', href: '#collections' },
+ { label: 'Designer Wallcoverings', href: 'https://www.designerwallcoverings.com' },
+ ],
+ vendor: 'Artmura',
+ line: 'Artmura',
+ wordmark: 'Designer Wallcoverings',
+ eyebrow: 'Internal Catalog — Designer Wallcoverings',
+ kicker: 'Internal use only',
+ tagline: 'Artmura contemporary Italian wallcoverings — internal purchasing viewer.',
+ booksHeading: 'The Artmura Collection',
+ title: 'Artmura — Internal Catalog | Designer Wallcoverings',
+ metaDescription: 'Internal Artmura catalog viewer — Designer Wallcoverings purchasing.',
+ slug: 'artmura',
+ palette: null,
+ about: {
+ paragraphs: [
+ 'Artmura is live on the DW Shopify store; this internal viewer shows the live retail alongside purchasing actions.',
+ 'No vendor email on file yet — stock and price requests log internally.',
+ ],
+ collab: 'Internal viewer — Designer Wallcoverings purchasing.',
+ },
+};
+
+// vendorMeta (phone / our account # / discount / pricing model) rides in from
+// data/products.json — the 15-min refresh keeps it current from PG.
+app.get('/api/config', (_req, res) => res.json({ ...CONFIG, vendorMeta: SNAP.vendor || null }));
+// Refresh metadata — drives the corner countdown pill on the landing.
+app.get('/api/meta', (_req, res) => res.json({
+ lastRefresh: LAST_REFRESH, intervalSec: REFRESH_INTERVAL_SEC,
+ count: SNAP.products.length, now: new Date().toISOString(),
+}));
+app.get('/api/products', (_req, res) => res.json({ count: LIGHT.length, products: LIGHT }));
+app.get('/api/facets', (_req, res) => res.json(SNAP.facets));
+
+app.get('/api/product/:handle', (req, res) => {
+ const p = SNAP.products.find(x => x.handle === req.params.handle);
+ if (!p) return res.status(404).json({ error: 'not found' });
+ res.json(p);
+});
+
+// "Pairs well with" — same/adjacent color family, different pattern (contrast of scale). Up to 6.
+app.get('/api/pairs/:handle', (req, res) => {
+ const p = SNAP.products.find(x => x.handle === req.params.handle);
+ if (!p) return res.status(404).json({ error: 'not found' });
+ const hueDist = (a, b) => { if (a == null || b == null) return 180; const d = Math.abs(a - b) % 360; return d > 180 ? 360 - d : d; };
+ const scored = SNAP.products.filter(x => x.handle !== p.handle && x.series !== p.series).map(x => {
+ let s = 0;
+ if (x.color_bucket && x.color_bucket === p.color_bucket) s += 40;
+ s += Math.max(0, 30 - hueDist(x.hue, p.hue) / 2);
+ s += 20; // always a different pattern (filtered above) — reward scale contrast
+ if (x.book && x.book === p.book) s += 8;
+ return { x, s };
+ }).sort((a, b) => b.s - a.s);
+ // de-dup by series so pairs aren't 6 colorways of one pattern
+ const seen = new Set(), out = [];
+ for (const o of scored) { if (seen.has(o.x.series)) continue; seen.add(o.x.series); out.push(o.x); if (out.length === 6) break; }
+ res.json({ pairs: out });
+});
+
+// Internal purchasing requests — Request Memo / Check Stock / Get Price.
+// REQ-numbered in dw_unified.vendor_requests; stock/price auto-email the vendor
+// via george-gmail when an email is on file (account # only, never a client name).
+const { mountVendorRequests } = require('./lib/vendor-requests');
+mountVendorRequests(app, { vendorCode: 'artmura', getVendor: () => SNAP.vendor || {}, dataDir: path.join(__dirname, 'data') });
+
+// Legacy inquiry endpoint — kept for anything still posting here; logs only.
+const ACTION_MSG = {
+ memo: 'Memo request logged — purchasing will order the sample.',
+ stock: 'Stock check logged — purchasing will confirm availability with the vendor.',
+ price: 'Price request logged — purchasing will confirm current pricing with the vendor.',
+};
+app.post('/api/inquiry', (req, res) => {
+ const { sku, name, email, note } = req.body || {};
+ const type = ['memo', 'stock', 'price'].includes(req.body && req.body.type) ? req.body.type : 'memo';
+ if (!sku || !email) return res.status(400).json({ ok: false, error: 'sku and email required' });
+ const rec = { at: new Date().toISOString(), type, sku, name: name || '', email, note: note || '', ip: req.ip };
+ try {
+ fs.appendFileSync(path.join(__dirname, 'data', 'inquiries.jsonl'), JSON.stringify(rec) + '\n');
+ } catch (e) { return res.status(500).json({ ok: false, error: 'log failed' }); }
+ res.json({ ok: true, message: ACTION_MSG[type] });
+});
+
+// ── Private-label curation (Astek → Phillipe Romano) ─────────────────────
+// Selection is the FIRST step only — picks persist server-side so the later
+// (Steve-gated) private-label push has a durable list. NO Shopify writes here.
+const SEL = path.join(__dirname, 'data', 'selection.json');
+app.get('/api/selection', (_req, res) => {
+ try { res.json(JSON.parse(fs.readFileSync(SEL, 'utf8'))); }
+ catch { res.json({ updated_at: null, count: 0, skus: [] }); }
+});
+app.post('/api/selection', (req, res) => {
+ const skus = Array.isArray(req.body?.skus) ? req.body.skus.filter(s => typeof s === 'string').slice(0, 20000) : null;
+ if (!skus) return res.status(400).json({ ok: false, error: 'skus[] required' });
+ const doc = { updated_at: new Date().toISOString(), label: 'Phillipe Romano candidates', count: skus.length, skus };
+ fs.writeFileSync(SEL, JSON.stringify(doc, null, 1));
+ res.json({ ok: true, count: skus.length });
+});
+
+app.use(express.static(path.join(__dirname, 'public')));
+app.get('/product/:handle', (_req, res) => res.sendFile(path.join(__dirname, 'public', 'product.html')));
+app.get('/curate', (_req, res) => res.sendFile(path.join(__dirname, 'public', 'curate.html')));
+
+const server = app.listen(PORT, () => {
+ console.log(`Artmura internal viewer → http://127.0.0.1:${server.address().port}`);
+});
(oldest)
·
back to Artmura Internal
·
chore: lint clean, refactor, v0.2.0 (session close) 7395dcc →