Big Acrylic
Need help? Call 1-877-605-6688 Custom Size Pricing
Get an instant quote for any size print Tell us your dimensions, material, and display preference — we'll price it out in seconds.
All materials & displays
25% off sitewide (40% on Canvas)
Tax-free to the US
6–8 day production
How it works
Three steps to your custom print
01
Configure your print
Choose your product, thickness, display type, and dimensions below. Add multiple prints if needed.
02
Get your price instantly
Prices are calculated in real time from our full pricing table — no estimates, no surprises.
03
Send us your image
Once you're happy with the quote, send your file via Google Drive, Dropbox, or WeTransfer and we'll take it from there.
7 days
Customer support, every day of the week
6–8 days
Standard production lead time
0% duty
No duties or taxes to the United States
const P = {
"Acrylic 18 Float":[{s:80,p:34.65},{s:100,p:38.99},{s:144,p:56.3},{s:150,p:46.92},{s:180,p:57.76},{s:192,p:61.37},{s:216,p:68.59},{s:256,p:68.06},{s:288,p:74.26},{s:294,p:77.35},{s:320,p:83.55},{s:384,p:99.01},{s:400,p:89.34},{s:432,p:97.47},{s:576,p:127.24},{s:588,p:129.95},{s:600,p:132.66},{s:648,p:143.48},{s:720,p:157.03},{s:768,p:167.85},{s:784,p:173.27},{s:800,p:175.98},{s:864,p:189.5},{s:900,p:197.63},{s:972,p:211.16},{s:1024,p:211.43},{s:1152,p:239.78},{s:1176,p:244.94},{s:1200,p:247.52},{s:1280,p:265.57},{s:1296,p:268.15},{s:1350,p:278.47},{s:1452,p:299.1},{s:1536,p:317.15},{s:1600,p:330.03},{s:1620,p:335.19},{s:1728,p:355.82},{s:1764,p:363.54},{s:1800,p:371.28},{s:1936,p:399.65},{s:1944,p:399.65},{s:2000,p:385.04},{s:2028,p:389.85},{s:2100,p:404.29},{s:2116,p:406.7},{s:2304,p:442.79},{s:2400,p:459.63},{s:2420,p:464.45},{s:2500,p:478.89},{s:2592,p:498.14},{s:2700,p:641.03},{s:2704,p:641.03},{s:2880,p:674.72},{s:2904,p:679.54},{s:2916,p:681.94},{s:3072,p:713.22},{s:3150,p:727.67},{s:3200,p:737.29},{s:3456,p:785.43}],
"Acrylic 316 Float":[{s:80,p:38.99},{s:100,p:52.0},{s:144,p:73.64},{s:150,p:64.98},{s:180,p:79.41},{s:192,p:83.02},{s:216,p:93.86},{s:256,p:95.91},{s:288,p:108.3},{s:294,p:111.4},{s:320,p:120.66},{s:384,p:145.42},{s:400,p:132.66},{s:432,p:143.48},{s:576,p:189.5},{s:588,p:194.92},{s:600,p:197.63},{s:648,p:213.87},{s:720,p:238.24},{s:768,p:254.48},{s:784,p:259.9},{s:800,p:265.32},{s:864,p:286.98},{s:900,p:297.8},{s:972,p:322.16},{s:1024,p:324.87},{s:1152,p:363.54},{s:1176,p:371.28},{s:1200,p:379.03},{s:1280,p:404.8},{s:1296,p:409.96},{s:1350,p:428.0},{s:1452,p:458.95},{s:1536,p:487.3},{s:1600,p:507.93},{s:1620,p:513.09},{s:1728,p:546.62},{s:1764,p:559.51},{s:1800,p:569.81},{s:1936,p:613.65},{s:1944,p:616.23},{s:2000,p:591.99},{s:2028,p:599.21},{s:2100,p:620.87},{s:2116,p:625.69},{s:2304,p:681.04},{s:2400,p:709.91},{s:2420,p:717.13},{s:2500,p:741.2},{s:2592,p:767.66},{s:2700,p:922.6},{s:2704,p:925.01},{s:2880,p:975.54},{s:2904,p:982.76},{s:2916,p:987.56},{s:3072,p:1033.29},{s:3150,p:1057.36},{s:3200,p:1071.8},{s:3456,p:1146.4}],
"Acrylic 14 Float":[{s:80,p:56.3},{s:100,p:69.31},{s:144,p:99.62},{s:150,p:86.63},{s:180,p:101.09},{s:192,p:108.28},{s:216,p:122.74},{s:256,p:123.76},{s:288,p:136.15},{s:294,p:139.22},{s:320,p:151.61},{s:384,p:182.56},{s:400,p:165.14},{s:432,p:178.69},{s:576,p:235.53},{s:588,p:240.95},{s:600,p:246.37},{s:648,p:265.32},{s:720,p:295.09},{s:768,p:314.05},{s:784,p:319.45},{s:800,p:327.58},{s:864,p:351.95},{s:900,p:368.19},{s:972,p:395.27},{s:1024,p:397.07},{s:1152,p:446.05},{s:1176,p:456.37},{s:1200,p:464.12},{s:1280,p:495.05},{s:1296,p:502.79},{s:1350,p:523.42},{s:1452,p:562.09},{s:1536,p:595.6},{s:1600,p:618.81},{s:1620,p:626.55},{s:1728,p:667.8},{s:1764,p:683.27},{s:1800,p:696.15},{s:1936,p:747.73},{s:1944,p:750.31},{s:2000,p:721.95},{s:2028,p:731.57},{s:2100,p:758.05},{s:2116,p:762.86},{s:2304,p:830.24},{s:2400,p:863.92},{s:2420,p:871.15},{s:2500,p:863.92},{s:2592,p:933.72},{s:2700,p:1095.87},{s:2880,p:1160.83}],
"Acrylic 38 Float":[{s:80,p:64.97},{s:100,p:82.31},{s:144,p:112.63},{s:150,p:97.47},{s:180,p:119.12},{s:192,p:126.35},{s:216,p:140.78},{s:256,p:142.32},{s:288,p:157.8},{s:294,p:160.9},{s:320,p:176.36},{s:384,p:210.41},{s:400,p:192.21},{s:432,p:205.76},{s:576,p:273.43},{s:588,p:278.85},{s:600,p:284.27},{s:648,p:305.93},{s:720,p:341.11},{s:768,p:362.77},{s:784,p:370.9},{s:800,p:379.03},{s:864,p:408.8}],
"Acrylic 18 Flush Mount":[{s:80,p:34.65},{s:100,p:38.99},{s:144,p:56.3},{s:150,p:46.92},{s:180,p:57.76},{s:192,p:61.37},{s:216,p:68.59},{s:256,p:68.06},{s:288,p:74.26},{s:294,p:77.35},{s:320,p:83.55},{s:384,p:99.01},{s:400,p:89.34},{s:432,p:97.47},{s:576,p:127.24},{s:588,p:129.95},{s:600,p:132.66},{s:648,p:143.48},{s:720,p:157.03},{s:768,p:167.85},{s:784,p:173.27},{s:800,p:175.98},{s:864,p:189.5},{s:900,p:197.63},{s:972,p:211.16},{s:1024,p:211.43},{s:1152,p:239.78},{s:1176,p:244.94},{s:1200,p:247.52},{s:1280,p:265.57},{s:1296,p:268.15},{s:1350,p:278.47},{s:1452,p:299.1},{s:1536,p:317.15},{s:1600,p:330.03},{s:1620,p:335.19},{s:1728,p:355.82},{s:1764,p:363.54},{s:1800,p:371.28},{s:1936,p:399.65},{s:1944,p:399.65},{s:2000,p:385.04},{s:2028,p:389.85},{s:2100,p:404.29},{s:2116,p:406.7},{s:2304,p:442.79},{s:2400,p:459.63},{s:2420,p:464.45},{s:2500,p:478.89},{s:2592,p:498.14},{s:2700,p:641.03},{s:2704,p:641.03},{s:2880,p:674.72},{s:2904,p:679.54},{s:2916,p:681.94},{s:3072,p:713.22},{s:3150,p:727.67},{s:3200,p:737.29},{s:3456,p:785.43}],
"Acrylic 316 Flush Mount":[{s:80,p:38.99},{s:100,p:52.0},{s:144,p:73.64},{s:150,p:64.98},{s:180,p:79.41},{s:192,p:83.02},{s:216,p:93.86},{s:256,p:95.91},{s:288,p:108.3},{s:294,p:111.4},{s:320,p:120.66},{s:384,p:145.42},{s:400,p:132.66},{s:432,p:143.48},{s:576,p:189.5},{s:588,p:194.92},{s:600,p:197.63},{s:648,p:213.87},{s:720,p:238.24},{s:768,p:254.48},{s:784,p:259.9},{s:800,p:265.32},{s:864,p:286.98},{s:900,p:297.8},{s:972,p:322.16},{s:1024,p:324.87},{s:1152,p:363.54},{s:1176,p:371.28},{s:1200,p:379.03},{s:1280,p:404.8},{s:1296,p:409.96},{s:1350,p:428.0},{s:1452,p:458.95},{s:1536,p:487.3},{s:1600,p:507.93},{s:1620,p:513.09},{s:1728,p:546.62},{s:1764,p:559.51},{s:1800,p:569.81},{s:1936,p:613.65},{s:1944,p:616.23},{s:2000,p:591.99},{s:2028,p:599.21},{s:2100,p:620.87},{s:2116,p:625.69},{s:2304,p:681.04},{s:2400,p:709.91},{s:2420,p:717.13},{s:2500,p:741.2},{s:2592,p:767.66},{s:2700,p:922.6},{s:2704,p:925.01},{s:2880,p:975.54},{s:2904,p:982.76},{s:2916,p:987.56},{s:3072,p:1033.29},{s:3150,p:1057.36},{s:3200,p:1071.8},{s:3456,p:1146.4}],
"Acrylic 14 Flush Mount":[{s:80,p:56.3},{s:100,p:69.31},{s:144,p:99.62},{s:150,p:86.63},{s:180,p:101.09},{s:192,p:108.28},{s:216,p:122.74},{s:256,p:123.76},{s:288,p:136.15},{s:294,p:139.22},{s:320,p:151.61},{s:384,p:182.56},{s:400,p:165.14},{s:432,p:178.69},{s:576,p:235.53},{s:588,p:240.95},{s:600,p:246.37},{s:648,p:265.32},{s:720,p:295.09},{s:768,p:314.05},{s:784,p:319.45},{s:800,p:327.58},{s:864,p:351.95},{s:900,p:368.19},{s:972,p:395.27},{s:1024,p:397.07},{s:1152,p:446.05},{s:1176,p:456.37},{s:1200,p:464.12},{s:1280,p:495.05},{s:1296,p:502.79},{s:1350,p:523.42},{s:1452,p:562.09},{s:1536,p:595.6},{s:1600,p:618.81},{s:1620,p:626.55},{s:1728,p:667.8},{s:1764,p:683.27},{s:1800,p:696.15},{s:1936,p:747.73},{s:1944,p:750.31},{s:2000,p:721.95},{s:2028,p:731.57},{s:2100,p:758.05},{s:2116,p:762.86},{s:2304,p:830.24},{s:2400,p:863.92},{s:2420,p:871.15},{s:2500,p:863.92},{s:2592,p:933.72},{s:2700,p:1095.87},{s:2880,p:1160.83}],
"Acrylic 38 Flush Mount":[{s:80,p:64.97},{s:100,p:82.31},{s:144,p:112.63},{s:150,p:97.47},{s:180,p:119.12},{s:192,p:126.35},{s:216,p:140.78},{s:256,p:142.32},{s:288,p:157.8},{s:294,p:160.9},{s:320,p:176.36},{s:384,p:210.41},{s:400,p:192.21},{s:432,p:205.76},{s:576,p:273.43},{s:588,p:278.85},{s:600,p:284.27},{s:648,p:305.93},{s:720,p:341.11},{s:768,p:362.77},{s:784,p:370.9},{s:800,p:379.03},{s:864,p:408.8}],
"Acrylic 18 Frame":[{s:80,p:73.64},{s:100,p:82.31},{s:144,p:103.96},{s:150,p:90.25},{s:180,p:101.09},{s:192,p:115.51},{s:216,p:115.51},{s:256,p:123.76},{s:288,p:123.76},{s:294,p:123.76},{s:320,p:129.96},{s:384,p:148.51},{s:400,p:132.66},{s:432,p:148.9},{s:576,p:173.27},{s:588,p:175.98},{s:600,p:181.4},{s:648,p:194.92},{s:720,p:205.76},{s:768,p:230.11},{s:784,p:219.29},{s:800,p:227.42},{s:864,p:238.24},{s:900,p:243.66},{s:972,p:259.9},{s:1024,p:257.85},{s:1152,p:288.78},{s:1176,p:291.36},{s:1200,p:309.4},{s:1280,p:309.4},{s:1296,p:311.98},{s:1350,p:324.87},{s:1452,p:342.92},{s:1536,p:360.98},{s:1600,p:371.28},{s:1620,p:376.45},{s:1728,p:397.07},{s:1764,p:402.23},{s:1800,p:417.7},{s:1936,p:435.75},{s:1944,p:438.33},{s:2000,p:418.72},{s:2028,p:423.54},{s:2100,p:445.2},{s:2116,p:437.97},{s:2304,p:469.27},{s:2400,p:488.52},{s:2420,p:490.93},{s:2500,p:502.96},{s:2592,p:527.02},{s:2700,p:662.69},{s:2704,p:662.69},{s:2880,p:693.97},{s:2904,p:698.79},{s:2916,p:698.79},{s:3072,p:725.27},{s:3150,p:756.54},{s:3200,p:756.54},{s:3456,p:792.64}],
"Acrylic 18 Standoffs":[{s:80,p:64.97},{s:100,p:69.31},{s:144,p:82.31},{s:150,p:68.59},{s:180,p:75.79},{s:192,p:79.41},{s:216,p:83.02},{s:256,p:80.45},{s:288,p:83.55},{s:294,p:86.64},{s:320,p:89.72},{s:384,p:102.11},{s:400,p:92.05},{s:432,p:97.47},{s:576,p:121.82},{s:588,p:121.82},{s:600,p:124.53},{s:648,p:132.66},{s:720,p:143.48},{s:768,p:151.61},{s:784,p:154.32},{s:800,p:157.03},{s:864,p:167.85},{s:900,p:173.27},{s:972,p:184.11},{s:1024,p:183.06},{s:1176,p:206.27},{s:1200,p:211.43},{s:1280,p:221.73},{s:1296,p:224.32}],
"Acrylic 316 Standoffs":[{s:80,p:73.64},{s:100,p:82.31},{s:144,p:99.62},{s:150,p:86.63},{s:180,p:97.47},{s:192,p:101.09},{s:216,p:111.9},{s:256,p:108.3},{s:288,p:117.57},{s:294,p:120.66},{s:320,p:126.86},{s:384,p:148.51},{s:400,p:135.37},{s:432,p:143.48},{s:576,p:184.11},{s:588,p:186.8},{s:600,p:192.21},{s:648,p:203.05},{s:720,p:224.71},{s:768,p:238.24},{s:784,p:243.66},{s:800,p:246.37},{s:864,p:265.32},{s:900,p:276.14},{s:972,p:295.09},{s:1024,p:293.94},{s:1152,p:330.03},{s:1176,p:335.19},{s:1200,p:342.92},{s:1280,p:363.54},{s:1296,p:368.7},{s:1350,p:381.61},{s:1452,p:409.96},{s:1536,p:430.58},{s:1600,p:448.63},{s:1620,p:453.79},{s:1728,p:482.16},{s:1764,p:492.47},{s:1936,p:538.88}],
"Acrylic 14 Standoffs":[{s:80,p:90.95},{s:100,p:99.62},{s:144,p:125.61},{s:150,p:108.28},{s:180,p:122.74},{s:192,p:126.35},{s:216,p:137.16},{s:256,p:133.05},{s:288,p:148.51},{s:294,p:148.51},{s:320,p:160.9},{s:384,p:185.65},{s:400,p:167.85},{s:432,p:178.69},{s:576,p:230.11},{s:588,p:232.82},{s:600,p:238.24},{s:648,p:254.48},{s:720,p:281.56},{s:768,p:297.8},{s:784,p:303.22},{s:800,p:308.64},{s:864,p:330.29},{s:900,p:343.82},{s:972,p:368.19},{s:1024,p:368.7},{s:1152,p:412.54},{s:1176,p:420.28},{s:1200,p:428.0},{s:1280,p:453.79},{s:1296,p:458.95},{s:1350,p:477.0},{s:1452,p:510.51},{s:1536,p:538.88},{s:1600,p:562.09},{s:1620,p:567.25},{s:1728,p:603.34},{s:1764,p:616.23},{s:1800,p:626.55},{s:1936,p:672.97},{s:1944,p:675.53},{s:2000,p:647.35},{s:2028,p:656.97},{s:2100,p:678.63},{s:2116,p:683.45},{s:2304,p:743.61},{s:2400,p:772.48},{s:2420,p:779.71},{s:2592,p:832.64},{s:2700,p:866.33},{s:2880,p:921.68},{s:2904,p:928.9},{s:3072,p:981.84},{s:3150,p:1005.91},{s:3200,p:1022.75},{s:3456,p:1102.17}],
"Acrylic 38 Standoffs":[{s:80,p:99.62},{s:100,p:112.63},{s:144,p:138.61},{s:150,p:119.12},{s:180,p:137.16},{s:192,p:144.39},{s:216,p:155.23},{s:256,p:151.61},{s:288,p:167.07},{s:294,p:170.17},{s:320,p:182.56},{s:384,p:213.48},{s:400,p:194.92},{s:432,p:205.76},{s:576,p:265.32},{s:588,p:270.74},{s:600,p:276.14},{s:648,p:295.09},{s:720,p:327.58},{s:768,p:346.53},{s:784,p:351.95},{s:800,p:360.06},{s:864,p:387.14},{s:900,p:400.69},{s:972,p:430.46},{s:1024,p:430.58},{s:1152,p:482.16},{s:1176,p:489.88},{s:1200,p:500.21},{s:1280,p:531.14},{s:1296,p:538.88},{s:1350,p:559.51},{s:1452,p:600.76},{s:1536,p:631.69},{s:1600,p:657.48},{s:1620,p:665.22},{s:1728,p:709.06},{s:1764,p:721.94},{s:1800,p:737.41},{s:1936,p:791.57},{s:1944,p:794.15},{s:2000,p:760.45},{s:2028,p:772.48},{s:2100,p:798.96},{s:2116,p:803.76},{s:2304,p:873.56},{s:2400,p:909.65},{s:2420,p:916.88},{s:2592,p:979.43},{s:2700,p:1020.35},{s:2880,p:1085.33},{s:2904,p:1094.94},{s:3072,p:1157.52},{s:3150,p:1186.4},{s:3200,p:1203.25},{s:3456,p:1297.1}],
"Acrylic 18 No Hanging":[{s:80,p:25.98},{s:100,p:30.32},{s:144,p:43.32},{s:150,p:36.1},{s:180,p:43.33},{s:192,p:46.92},{s:216,p:50.53},{s:256,p:52.6},{s:288,p:58.8},{s:294,p:58.8},{s:320,p:64.97},{s:384,p:74.26},{s:400,p:67.68},{s:432,p:73.1},{s:576,p:97.47},{s:588,p:97.47},{s:600,p:100.16},{s:648,p:108.29},{s:720,p:119.13},{s:768,p:127.24},{s:784,p:129.95},{s:800,p:132.66},{s:864,p:143.48},{s:900,p:148.9},{s:972,p:159.74},{s:1024,p:159.85},{s:1152,p:180.48},{s:1176,p:183.06},{s:1200,p:188.22},{s:1280,p:201.11},{s:1296,p:203.69},{s:1350,p:211.43},{s:1452,p:226.9},{s:1536,p:239.78},{s:1600,p:250.1},{s:1620,p:252.68},{s:1728,p:268.15},{s:1764,p:273.31},{s:1800,p:281.03},{s:1936,p:301.66},{s:1944,p:301.66},{s:2000,p:291.19},{s:2028,p:293.59},{s:2100,p:303.21},{s:2116,p:305.62},{s:2304,p:334.51},{s:2400,p:346.53},{s:2420,p:351.35},{s:2500,p:360.97},{s:2592,p:375.42},{s:2700,p:389.85},{s:2704,p:389.85},{s:2880,p:416.31},{s:2904,p:418.72},{s:2916,p:421.13},{s:3072,p:442.79},{s:3150,p:454.82},{s:3200,p:462.04},{s:3456,p:498.14}],
"Acrylic 316 No Hanging":[{s:80,p:34.65},{s:100,p:43.32},{s:144,p:60.64},{s:150,p:54.14},{s:180,p:64.98},{s:192,p:68.59},{s:216,p:79.41},{s:256,p:80.45},{s:288,p:89.72},{s:294,p:92.82},{s:320,p:102.11},{s:384,p:120.66},{s:400,p:111.0},{s:432,p:119.13},{s:576,p:159.74},{s:588,p:162.45},{s:600,p:167.85},{s:648,p:181.4},{s:720,p:200.34},{s:768,p:213.87},{s:784,p:219.29},{s:800,p:222.0},{s:864,p:240.95},{s:900,p:251.77},{s:972,p:270.74},{s:1024,p:273.31},{s:1152,p:306.82},{s:1176,p:311.98},{s:1200,p:319.73},{s:1280,p:340.35},{s:1296,p:345.5},{s:1350,p:358.4},{s:1452,p:386.75},{s:1536,p:409.96},{s:1600,p:425.42},{s:1620,p:430.58},{s:1728,p:461.53},{s:1764,p:469.26},{s:1800,p:479.58},{s:1936,p:515.67},{s:1944,p:518.25},{s:2000,p:498.14},{s:2028,p:505.36},{s:2100,p:522.21},{s:2116,p:527.02},{s:2304,p:572.74},{s:2400,p:596.81},{s:2420,p:601.62},{s:2500,p:623.28},{s:2592,p:644.94},{s:2700,p:671.4},{s:2704,p:673.81},{s:2880,p:717.13},{s:2904,p:721.95},{s:2916,p:726.75},{s:3072,p:765.25},{s:3150,p:784.51},{s:3200,p:796.55},{s:3456,p:861.51}],
"Anti-Glare Acrylic 18 Float":[{s:80,p:47.66},{s:100,p:60.64},{s:144,p:82.31},{s:150,p:72.21},{s:180,p:86.63},{s:192,p:90.25},{s:216,p:101.09},{s:256,p:102.11},{s:288,p:114.47},{s:294,p:117.57},{s:320,p:126.86},{s:384,p:151.61},{s:400,p:138.08},{s:432,p:148.9},{s:576,p:194.92},{s:588,p:200.34},{s:600,p:203.05},{s:648,p:219.29},{s:720,p:243.66},{s:768,p:259.9},{s:784,p:265.32},{s:800,p:270.74},{s:864,p:292.4},{s:900,p:303.22},{s:972,p:327.58},{s:1024,p:330.03},{s:1152,p:368.7},{s:1176,p:376.45},{s:1200,p:384.17},{s:1280,p:409.96},{s:1296,p:415.12},{s:1350,p:433.17},{s:1452,p:464.12},{s:1536,p:492.47},{s:1600,p:513.09},{s:1620,p:518.25},{s:1728,p:551.77},{s:1764,p:564.67},{s:1800,p:574.97},{s:1936,p:618.81},{s:1944,p:621.39},{s:2000,p:596.81},{s:2028,p:604.03},{s:2100,p:625.69},{s:2116,p:630.49},{s:2400,p:714.73},{s:2420,p:721.95},{s:2592,p:772.48},{s:2700,p:927.4},{s:2904,p:987.56},{s:3150,p:1062.16},{s:3200,p:1076.62}],
"Anti-Glare Acrylic 18 Standoffs":[{s:80,p:77.65},{s:100,p:85.8},{s:144,p:106.26},{s:150,p:91.95},{s:180,p:102.16},{s:192,p:108.97},{s:216,p:115.79},{s:256,p:113.83},{s:288,p:122.6},{s:294,p:125.52},{s:320,p:134.26},{s:384,p:154.69},{s:400,p:137.91},{s:432,p:148.14},{s:576,p:189.0},{s:588,p:191.56},{s:600,p:194.12},{s:648,p:209.44},{s:720,p:229.87},{s:768,p:242.63},{s:784,p:247.74},{s:800,p:250.3},{s:864,p:268.18},{s:900,p:278.38},{s:972,p:298.82},{s:1024,p:299.19},{s:1176,p:386.75},{s:1200,p:345.4},{s:1280,p:367.29},{s:1296,p:372.16}],
"Anti-Glare Acrylic 18 Frame":[{s:80,p:85.8},{s:100,p:98.08},{s:144,p:130.77},{s:150,p:112.38},{s:180,p:125.99},{s:192,p:143.03},{s:216,p:146.44},{s:256,p:154.69},{s:288,p:157.62},{s:294,p:157.62},{s:320,p:169.3},{s:384,p:195.57},{s:400,p:176.22},{s:432,p:196.65},{s:576,p:237.52},{s:588,p:242.63},{s:600,p:247.74},{s:648,p:268.18},{s:720,p:286.05},{s:768,p:316.71},{s:784,p:309.04},{s:800,p:319.25},{s:864,p:337.14},{s:900,p:347.35},{s:972,p:370.34},{s:1024,p:369.73},{s:1152,p:415.95},{s:1176,p:418.39},{s:1200,p:440.26},{s:1280,p:450.0},{s:1296,p:452.43},{s:1350,p:471.89},{s:1452,p:501.07},{s:1536,p:527.84},{s:1600,p:544.86},{s:1620,p:552.17},{s:1728,p:586.22},{s:1764,p:595.94},{s:1800,p:612.98},{s:1936,p:647.03},{s:1944,p:651.9},{s:2000,p:622.06},{s:2028,p:631.13},{s:2100,p:660.65},{s:2116,p:653.83},{s:2400,p:735.57},{s:2420,p:740.1},{s:2592,p:794.59},{s:2700,p:940.94},{s:2904,p:997.69},{s:3150,p:1079.43},{s:3200,p:1086.23}],
"Metal Float":[{s:80,p:28.88},{s:100,p:32.49},{s:144,p:46.92},{s:150,p:40.21},{s:180,p:49.5},{s:192,p:52.6},{s:216,p:58.8},{s:256,p:59.56},{s:288,p:64.97},{s:294,p:67.68},{s:320,p:73.1},{s:384,p:86.63},{s:400,p:85.09},{s:432,p:92.83},{s:576,p:121.18},{s:588,p:123.76},{s:600,p:126.34},{s:648,p:136.65},{s:720,p:149.55},{s:768,p:159.85},{s:784,p:165.02},{s:800,p:167.6},{s:864,p:180.48},{s:900,p:188.22},{s:972,p:201.11},{s:1024,p:201.82},{s:1152,p:228.88},{s:1176,p:233.81},{s:1200,p:236.27},{s:1280,p:253.5},{s:1296,p:255.96},{s:1350,p:265.82},{s:1452,p:285.5},{s:1536,p:302.73},{s:1600,p:315.03},{s:1620,p:319.96},{s:1728,p:339.65},{s:1764,p:347.02},{s:1800,p:354.41},{s:1936,p:381.49},{s:1944,p:381.49},{s:2000,p:376.67},{s:2028,p:381.38},{s:2100,p:395.5},{s:2116,p:397.86},{s:2304,p:433.17},{s:2400,p:449.64},{s:2420,p:454.36},{s:2500,p:468.48},{s:2592,p:487.31},{s:2700,p:627.1},{s:2704,p:627.1},{s:2880,p:660.05},{s:2904,p:664.76},{s:2916,p:667.12},{s:3072,p:697.72},{s:3150,p:711.86},{s:3200,p:721.26},{s:3456,p:768.36}],
"Metal Standoffs":[{s:80,p:54.14},{s:100,p:57.76},{s:144,p:68.59},{s:150,p:58.8},{s:180,p:64.97},{s:192,p:68.06},{s:216,p:71.16},{s:256,p:70.39},{s:288,p:73.1},{s:294,p:75.81},{s:320,p:78.5},{s:384,p:89.34},{s:400,p:87.67},{s:432,p:92.83},{s:576,p:116.02},{s:588,p:116.02},{s:600,p:118.6},{s:648,p:126.34},{s:720,p:136.65},{s:768,p:144.39},{s:784,p:146.97},{s:800,p:149.55},{s:864,p:159.85},{s:900,p:165.02},{s:972,p:175.34},{s:1024,p:174.74},{s:1152,p:194.43},{s:1176,p:196.89},{s:1200,p:201.82},{s:1280,p:211.66},{s:1296,p:214.12},{s:1350,p:223.97},{s:1452,p:238.74},{s:1536,p:253.5},{s:1600,p:260.89},{s:1620,p:265.82},{s:1728,p:280.58},{s:1764,p:285.5},{s:1800,p:290.41},{s:1936,p:312.57},{s:1944,p:312.57},{s:2000,p:306.05},{s:2028,p:310.76},{s:2100,p:320.17},{s:2116,p:322.52},{s:2304,p:350.76},{s:2400,p:362.54},{s:2420,p:367.26},{s:2500,p:376.67},{s:2592,p:390.79},{s:2700,p:404.92},{s:2704,p:407.26},{s:2880,p:430.81},{s:2904,p:435.52},{s:2916,p:435.52},{s:3072,p:459.07},{s:3150,p:468.48},{s:3200,p:475.54},{s:3456,p:513.21}],
"Metal Flush Mount":[{s:80,p:28.88},{s:100,p:32.49},{s:144,p:46.92},{s:150,p:40.21},{s:180,p:49.5},{s:192,p:52.6},{s:216,p:58.8},{s:256,p:59.56},{s:288,p:64.97},{s:294,p:67.68},{s:320,p:73.1},{s:384,p:86.63},{s:400,p:85.09},{s:432,p:92.83},{s:576,p:121.18},{s:588,p:123.76},{s:600,p:126.34},{s:648,p:136.65},{s:720,p:149.55},{s:768,p:159.85},{s:784,p:165.02},{s:800,p:167.6},{s:864,p:180.48},{s:900,p:188.22},{s:972,p:201.11},{s:1024,p:201.82},{s:1152,p:228.88},{s:1176,p:233.81},{s:1200,p:236.27},{s:1280,p:253.5},{s:1296,p:255.96},{s:1350,p:265.82},{s:1452,p:285.5},{s:1536,p:302.73},{s:1600,p:315.03},{s:1620,p:319.96},{s:1728,p:339.65},{s:1764,p:347.02},{s:1800,p:354.41},{s:1936,p:381.49},{s:1944,p:381.49},{s:2000,p:376.67},{s:2028,p:381.38},{s:2100,p:395.5},{s:2116,p:397.86},{s:2304,p:433.17},{s:2400,p:449.64},{s:2420,p:454.36},{s:2500,p:468.48},{s:2592,p:487.31},{s:2700,p:627.1},{s:2704,p:627.1},{s:2880,p:660.05},{s:2904,p:664.76},{s:2916,p:667.12},{s:3072,p:697.72},{s:3150,p:711.86},{s:3200,p:721.26},{s:3456,p:768.36}],
"Metal Box":[{s:80,p:46.92},{s:100,p:54.14},{s:144,p:68.59},{s:150,p:61.89},{s:180,p:68.06},{s:192,p:71.16},{s:216,p:80.45},{s:256,p:78.5},{s:288,p:86.63},{s:294,p:86.63},{s:320,p:94.76},{s:384,p:111.0},{s:400,p:108.3},{s:432,p:116.02},{s:576,p:149.55},{s:588,p:152.13},{s:600,p:154.71},{s:648,p:165.02},{s:720,p:183.06},{s:768,p:193.38},{s:784,p:195.97},{s:800,p:201.11},{s:864,p:214.01},{s:900,p:224.32},{s:972,p:239.78},{s:1024,p:241.2},{s:1152,p:268.26},{s:1176,p:273.19},{s:1200,p:280.58},{s:1280,p:297.8},{s:1296,p:300.27},{s:1350,p:312.57},{s:1452,p:334.72},{s:1536,p:354.41},{s:1600,p:366.71},{s:1620,p:371.63},{s:1728,p:396.25},{s:1764,p:403.64},{s:1800,p:411.01},{s:1936,p:440.56},{s:1944,p:443.02},{s:2000,p:435.52},{s:2028,p:442.59},{s:2100,p:456.71},{s:2116,p:461.42},{s:2304,p:499.09},{s:2400,p:520.26},{s:2420,p:524.98},{s:2500,p:541.45},{s:2592,p:560.29},{s:2700,p:704.79},{s:2704,p:704.79},{s:2880,p:742.45},{s:2904,p:747.17},{s:2916,p:749.52},{s:3072,p:782.48},{s:3150,p:798.95},{s:3200,p:810.73},{s:3456,p:862.52}],
"Metal No Hanging":[{s:80,p:21.65},{s:100,p:25.26},{s:144,p:36.1},{s:150,p:30.95},{s:180,p:37.14},{s:192,p:40.21},{s:216,p:43.31},{s:256,p:46.03},{s:288,p:51.45},{s:294,p:51.45},{s:320,p:56.85},{s:384,p:64.97},{s:400,p:64.46},{s:432,p:69.62},{s:576,p:92.83},{s:588,p:92.83},{s:600,p:95.39},{s:648,p:103.13},{s:720,p:113.46},{s:768,p:121.18},{s:784,p:123.76},{s:800,p:126.34},{s:864,p:136.65},{s:900,p:141.81},{s:972,p:152.13},{s:1024,p:152.59},{s:1152,p:172.28},{s:1176,p:174.74},{s:1200,p:179.67},{s:1280,p:191.97},{s:1296,p:194.43},{s:1350,p:201.82},{s:1452,p:216.58},{s:1536,p:228.88},{s:1600,p:238.74},{s:1620,p:241.2},{s:1728,p:255.96},{s:1764,p:260.89},{s:1800,p:268.26},{s:1936,p:287.95},{s:1944,p:287.95},{s:2000,p:284.86},{s:2028,p:287.21},{s:2100,p:296.62},{s:2116,p:298.98},{s:2304,p:327.23},{s:2400,p:339.0},{s:2420,p:343.71},{s:2500,p:353.12},{s:2592,p:367.26},{s:2700,p:381.38},{s:2704,p:381.38},{s:2880,p:407.26},{s:2904,p:409.62},{s:2916,p:411.98},{s:3072,p:433.17},{s:3150,p:444.93},{s:3200,p:452.0},{s:3456,p:487.31}],
"Luxe Metal Float":[{s:80,p:37.14},{s:100,p:43.31},{s:144,p:58.8},{s:150,p:51.58},{s:180,p:59.3},{s:192,p:64.46},{s:216,p:67.39},{s:256,p:77.01},{s:288,p:86.64},{s:294,p:89.03},{s:320,p:96.26},{s:384,p:113.1},{s:400,p:117.92},{s:432,p:127.54},{s:576,p:168.45},{s:588,p:170.86},{s:600,p:173.27},{s:648,p:187.7},{s:720,p:209.36},{s:768,p:221.4},{s:784,p:226.2},{s:800,p:231.02},{s:864,p:247.86},{s:900,p:259.91},{s:972,p:279.16},{s:1024,p:293.59},{s:1152,p:329.69},{s:1176,p:336.92},{s:1200,p:344.12},{s:1280,p:365.78},{s:1296,p:370.6},{s:1350,p:385.04},{s:1452,p:413.92},{s:1536,p:437.97},{s:1600,p:454.82},{s:1620,p:462.04},{s:1728,p:490.93},{s:1800,p:512.57},{s:1944,p:551.08},{s:2000,p:567.94},{s:2028,p:575.15},{s:2400,p:681.04}],
"Luxe Metal Traditional Frame":[{s:80,p:64.97},{s:100,p:77.35},{s:144,p:99.01},{s:150,p:85.09},{s:180,p:95.39},{s:192,p:105.72},{s:216,p:103.49},{s:256,p:127.54},{s:288,p:127.54},{s:294,p:129.95},{s:320,p:137.17},{s:384,p:158.83},{s:400,p:161.24},{s:432,p:180.49},{s:576,p:216.59},{s:588,p:221.4},{s:600,p:226.2},{s:648,p:243.05},{s:720,p:262.3},{s:768,p:286.37},{s:784,p:279.16},{s:800,p:288.78},{s:864,p:305.62},{s:900,p:315.25},{s:972,p:336.92},{s:1024,p:351.35},{s:1152,p:394.67},{s:1176,p:397.06},{s:1200,p:416.31},{s:1280,p:425.95},{s:1296,p:428.36},{s:1350,p:447.61},{s:1452,p:474.07},{s:1536,p:500.55},{s:1600,p:514.98},{s:1620,p:522.21},{s:1728,p:553.48},{s:1800,p:579.96},{s:1944,p:616.06},{s:2000,p:630.49},{s:2028,p:637.72},{s:2400,p:743.61}],
"Canvas Float":[{s:80,p:33.31},{s:100,p:30.57},{s:144,p:35.67},{s:150,p:33.69},{s:180,p:34.65},{s:192,p:31.19},{s:216,p:34.66},{s:256,p:38.13},{s:288,p:41.6},{s:294,p:41.6},{s:320,p:45.04},{s:384,p:43.32},{s:400,p:55.45},{s:432,p:42.09},{s:576,p:51.98},{s:588,p:47.64},{s:600,p:50.15},{s:648,p:49.51},{s:720,p:56.31},{s:768,p:57.77},{s:784,p:57.77},{s:800,p:59.81},{s:864,p:63.94},{s:900,p:66.01},{s:972,p:70.14},{s:1024,p:74.27},{s:1152,p:82.51},{s:1176,p:84.58},{s:1200,p:86.64},{s:1280,p:90.77},{s:1296,p:92.82},{s:1350,p:96.95},{s:1452,p:103.14},{s:1536,p:109.32},{s:1600,p:113.45},{s:1620,p:113.45},{s:1728,p:121.71},{s:1764,p:123.77},{s:1800,p:125.82},{s:1936,p:136.15},{s:1944,p:136.15},{s:2000,p:140.28},{s:2028,p:142.33},{s:2100,p:146.45},{s:2116,p:148.52},{s:2304,p:160.89},{s:2400,p:167.09},{s:2420,p:169.15},{s:2500,p:173.28},{s:2592,p:179.46},{s:2700,p:187.72},{s:2704,p:187.72},{s:2880,p:200.09},{s:2904,p:200.09},{s:2916,p:202.16},{s:3072,p:212.46},{s:3150,p:216.59},{s:3200,p:220.72},{s:3456,p:237.22}],
"Canvas Frame":[{s:80,p:100.6},{s:100,p:86.55},{s:144,p:105.76},{s:150,p:104.45},{s:180,p:102.16},{s:192,p:91.55},{s:216,p:91.55},{s:256,p:114.43},{s:288,p:111.16},{s:294,p:107.89},{s:320,p:114.43},{s:384,p:106.25},{s:400,p:130.77},{s:432,p:107.42},{s:576,p:119.11},{s:588,p:106.25},{s:600,p:113.99},{s:648,p:110.92},{s:720,p:120.55},{s:768,p:130.39},{s:784,p:122.6},{s:800,p:128.44},{s:864,p:132.34},{s:900,p:134.27},{s:972,p:142.06},{s:1024,p:147.9},{s:1152,p:165.41},{s:1176,p:165.41},{s:1200,p:177.09},{s:1280,p:173.2},{s:1296,p:175.14},{s:1350,p:182.92},{s:1452,p:190.71},{s:1536,p:200.44},{s:1600,p:204.33},{s:1620,p:206.28},{s:1728,p:217.95},{s:1764,p:219.9},{s:1800,p:229.63},{s:1936,p:237.42},{s:1944,p:239.36},{s:2000,p:243.25},{s:2028,p:247.14},{s:2100,p:260.76},{s:2116,p:252.98},{s:2304,p:270.5},{s:2400,p:282.17},{s:2420,p:282.17},{s:2500,p:288.02},{s:2592,p:303.58},{s:2700,p:413.45},{s:2704,p:413.45},{s:2880,p:429.02},{s:2904,p:432.91},{s:2916,p:430.96},{s:3072,p:446.53},{s:3150,p:466.0},{s:3200,p:464.05},{s:3456,p:481.56}],
"Fabric Frame":[{s:150,p:75.45},{s:216,p:85.69},{s:294,p:96.86},{s:384,p:108.98},{s:600,p:133.19},{s:864,p:155.54},{s:900,p:285.44},{s:972,p:285.44},{s:1024,p:290.82},{s:1152,p:290.82},{s:1176,p:187.21},{s:1200,p:296.41},{s:1280,p:290.82},{s:1296,p:296.41},{s:1350,p:296.41},{s:1452,p:296.41},{s:1536,p:302.23},{s:1600,p:302.23},{s:1620,p:296.41},{s:1728,p:302.23},{s:1764,p:308.46},{s:1800,p:310.15},{s:1936,p:316.54},{s:1944,p:316.92},{s:2000,p:313.28},{s:2028,p:320.86},{s:2100,p:324.25},{s:2116,p:325.0},{s:2304,p:333.83},{s:2400,p:338.35},{s:2500,p:343.05},{s:2592,p:365.41},{s:2640,p:358.65},{s:2704,p:361.65},{s:2880,p:378.95},{s:2916,p:380.64},{s:3150,p:429.98},{s:3200,p:421.05},{s:3220,p:412.97},{s:3640,p:446.24},{s:3920,p:468.42},{s:4240,p:499.25},{s:5120,p:565.41},{s:5400,p:592.11},{s:6030,p:637.5},{s:6480,p:669.92},{s:6600,p:684.59},{s:7400,p:740.23},{s:8000,p:781.95}],
"Fabric No Hanging":[{s:150,p:20.24},{s:216,p:22.99},{s:294,p:25.99},{s:384,p:29.24},{s:600,p:35.73},{s:864,p:41.73},{s:900,p:76.58},{s:972,p:76.58},{s:1024,p:78.03},{s:1152,p:78.03},{s:1176,p:50.23},{s:1200,p:79.53},{s:1280,p:78.03},{s:1296,p:79.53},{s:1350,p:79.53},{s:1452,p:79.53},{s:1536,p:81.09},{s:1600,p:81.09},{s:1620,p:79.53},{s:1728,p:81.09},{s:1764,p:82.89},{s:1800,p:84.59},{s:1936,p:90.98},{s:1944,p:91.35},{s:2000,p:92.14},{s:2028,p:95.3},{s:2100,p:98.68},{s:2116,p:99.44},{s:2304,p:108.27},{s:2400,p:112.78},{s:2500,p:117.48},{s:2592,p:121.8},{s:2640,p:124.06},{s:2704,p:127.07},{s:2880,p:135.34},{s:2916,p:137.03},{s:3150,p:148.03},{s:3200,p:150.38},{s:3220,p:151.32},{s:3640,p:171.05},{s:3920,p:184.21},{s:4240,p:199.25},{s:4720,p:221.8},{s:5120,p:240.6},{s:5400,p:253.76},{s:6030,p:283.36},{s:6480,p:304.51},{s:6600,p:310.15},{s:7400,p:347.74},{s:8000,p:375.94}]
};const PRODUCTS = {
'Acrylic': { emailName:'Acrylic', displays: { 'Float':{t:[{l:'1/8"',k:'18'},{l:'3/16"',k:'316'},{l:'1/4"',k:'14'},{l:'3/8"',k:'38'}]}, 'Flush Mount':{t:[{l:'1/8"',k:'18'},{l:'3/16"',k:'316'},{l:'1/4"',k:'14'},{l:'3/8"',k:'38'}]}, 'Standoffs':{t:[{l:'1/8"',k:'18'},{l:'3/16"',k:'316'},{l:'1/4"',k:'14'},{l:'3/8"',k:'38'}]}, 'Frame':{t:[{l:'1/8"',k:'18'}]}, 'No Hanging':{t:[{l:'1/8"',k:'18'},{l:'3/16"',k:'316'}]} }},
'Anti-Glare Acrylic': { emailName:'Anti-Glare Acrylic', displays: { 'Float':{t:[{l:'1/8"',k:'18'}]}, 'Standoffs':{t:[{l:'1/8"',k:'18'}]}, 'Frame':{t:[{l:'1/8"',k:'18'}]} }},
'Brushed Metal': { emailName:'Brushed Metal', displays: { 'Float':{t:[{l:'—',k:''}]}, 'Flush Mount':{t:[{l:'—',k:''}]}, 'Standoffs':{t:[{l:'—',k:''}]}, 'Box':{t:[{l:'—',k:''}]}, 'No Hanging':{t:[{l:'—',k:''}]} }},
'White Metal': { emailName:'White Metal', displays: { 'Float':{t:[{l:'—',k:''}]}, 'Flush Mount':{t:[{l:'—',k:''}]}, 'Standoffs':{t:[{l:'—',k:''}]}, 'Box':{t:[{l:'—',k:''}]}, 'No Hanging':{t:[{l:'—',k:''}]} }},
'Luxe Metal': { emailName:'Luxe Metal', displays: { 'Float':{t:[{l:'—',k:''}]}, 'Traditional Frame':{t:[{l:'—',k:''}]} }},
'Canvas': { emailName:'Canvas', displays: { 'Stretched':{t:[{l:'—',k:''}]}, 'Stretched w/ Frame':{t:[{l:'—',k:''}]} }},
'Fabric': { emailName:'Fabric', displays: { 'Frame':{t:[{l:'—',k:''}]}, 'No Hanging':{t:[{l:'—',k:''}]} }}
};function getPricingKey(product, display, thick) {
if (product === 'Acrylic') return `Acrylic ${thick} ${display}`;
if (product === 'Anti-Glare Acrylic') return `Anti-Glare Acrylic ${thick} ${display}`;
if (product === 'Brushed Metal' || product === 'White Metal') return `Metal ${display}`;
if (product === 'Luxe Metal') return `Luxe Metal ${display}`;
if (product === 'Canvas') return display === 'Stretched' ? 'Canvas Float' : 'Canvas Frame';
if (product === 'Fabric') return `Fabric ${display}`;
}function getPrice(w, h, product, display, thick) {
const table = P[getPricingKey(product, display, thick)];
if (!table) return null;
const sqi = w * h;
const match = [...table].sort((a,b) => a.s - b.s).find(r => r.s >= sqi);
return match ? {price: match.p, sqi: match.s, inputSqi: sqi} : null;
}let fileProvided = true, printCount = 0;function setFileProvided(val) {
fileProvided = val;
document.getElementById('btn-yes').classList.toggle('active', val);
document.getElementById('btn-no').classList.toggle('active', !val);
}function hasThick(product, display) {
const t = PRODUCTS[product].displays[display].t;
return !(t.length === 1 && t[0].k === '');
}function addPrint() {
printCount++;
const id = printCount;
const container = document.getElementById('prints-container');
const isFirst = container.children.length === 0;
const defP = 'Acrylic', defD = 'Float';
const div = document.createElement('div');
div.className = 'print-card';
div.id = `print-${id}`;
const prodOpts = Object.keys(PRODUCTS).map(p => `${p}`).join('');
const dispOpts = Object.keys(PRODUCTS[defP].displays).map(d => `${d}`).join('');
const thickOpts = PRODUCTS[defP].displays[defD].t.map(t => `${t.l}`).join('');
div.innerHTML = `
Product ${prodOpts}
Thickness ${thickOpts}
Display ${dispOpts}
`;
container.appendChild(div);
}function onProductChange(id) {
const product = document.getElementById(`product-${id}`).value;
const firstD = Object.keys(PRODUCTS[product].displays)[0];
const firstT = PRODUCTS[product].displays[firstD].t[0].k;
document.getElementById(`thick-${id}`).innerHTML = PRODUCTS[product].displays[firstD].t.map(t => `${t.l}`).join('');
document.getElementById(`display-${id}`).innerHTML = Object.keys(PRODUCTS[product].displays).map(d => `${d}`).join('');
document.getElementById(`thick-wrap-${id}`).style.opacity = hasThick(product, firstD) ? '1' : '0.35';
updateCardPrice(id);
}function onDisplayChange(id) {
const product = document.getElementById(`product-${id}`).value;
const display = document.getElementById(`display-${id}`).value;
const firstT = PRODUCTS[product].displays[display].t[0].k;
document.getElementById(`thick-${id}`).innerHTML = PRODUCTS[product].displays[display].t.map(t => `${t.l}`).join('');
document.getElementById(`thick-wrap-${id}`).style.opacity = hasThick(product, display) ? '1' : '0.35';
updateCardPrice(id);
}function updateCardPrice(id) {
const w = parseFloat(document.getElementById(`w-${id}`).value);
const h = parseFloat(document.getElementById(`h-${id}`).value);
const qty = parseInt(document.getElementById(`qty-${id}`).value) || 1;
const product = document.getElementById(`product-${id}`).value;
const display = document.getElementById(`display-${id}`).value;
const thick = document.getElementById(`thick-${id}`).value;
const el = document.getElementById(`price-${id}`);
if (!w || !h) { el.innerHTML = ''; return; }
const result = getPrice(w, h, product, display, thick);
if (!result) { el.innerHTML = `
Size too large for this combination `; return; }
const unit = result.price.toFixed(2);
const total = (result.price * qty).toFixed(2);
const note = result.inputSqi !== result.sqi ? ` · rounded up from ${result.inputSqi} sqi` : '';
el.innerHTML = `
$${unit} each${qty > 1 ? ` · $${total} total (×${qty})` : ''}${note} `;
}function removePrint(id) {
document.getElementById(`print-${id}`).remove();
document.querySelectorAll('.print-card').forEach((c,i) => c.querySelector('.print-number').textContent = `Print ${i+1}`);
}function generate() {
const name = document.getElementById('name').value.trim() || '[Name]';
const cards = document.querySelectorAll('.print-card');
let blocks = [], grandTotal = 0, hasError = false, hasCanvas = false, hasNonCanvas = false;
let productNames = new Set();cards.forEach((card, i) => {
const id = card.id.replace('print-','');
const w = parseFloat(document.getElementById(`w-${id}`).value);
const h = parseFloat(document.getElementById(`h-${id}`).value);
const qty = parseInt(document.getElementById(`qty-${id}`).value) || 1;
const product = document.getElementById(`product-${id}`).value;
const display = document.getElementById(`display-${id}`).value;
const thick = document.getElementById(`thick-${id}`).value;
const ts = PRODUCTS[product].displays[display].t;
const thickLabel = (ts.length === 1 && ts[0].k === '') ? null : ts.find(t=>t.k===thick)?.l;
if (!w || !h) { hasError = true; return; }
const result = getPrice(w, h, product, display, thick);
if (!result) { hasError = true; return; }
productNames.add(PRODUCTS[product].emailName);
if (product === 'Canvas') hasCanvas = true; else hasNonCanvas = true;
const unit = result.price.toFixed(2);
const lineTotal = result.price * qty;
grandTotal += lineTotal;
const priceLine = qty >= 2 ? `Price: $${lineTotal.toFixed(2)}USD ($${unit} per print) + shipping` : `Price: $${unit}USD + shipping`;
const thickLine = thickLabel ? `\nThickness: ${thickLabel}` : '';
const prefix = cards.length > 1 ? `// Print ${i+1}\n` : '';
blocks.push(`${prefix}Product: ${product}\nDisplay: ${display}${thickLine}\nSize: ${w} x ${h}"\nQty: ${qty}\n---\n${priceLine}`);
});if (hasError || !blocks.length) { alert('Please fill in all widths and heights with valid sizes.'); return; }const productList = [...productNames].join(' & ');
const niceImage = fileProvided ? ' - nice image!' : '!';
const opener = `Hi ${name},\n\nThanks for expressing interest in a custom size ${productList} print${niceImage} See pricing for your request below:`;
const totalLine = blocks.length > 1 ? `\n\nOrder Total: $${grandTotal.toFixed(2)}USD + shipping` : '';
const fileInstructions = fileProvided ? '' : `\nI'll be able to receive your image(s) and verify that print requirements are met at the requested size.\nYou can send your file(s) to me via file-sharing platform (Google Drive, Dropbox, etc) or through Wetransfer.com.\n`;
let discountLine = hasCanvas && hasNonCanvas
? '*40% discount applied for canvas (current promo)\n*25% discount applied for all other products (current promo)'
: hasCanvas ? '*40% discount applied for our current promo' : '*25% discount applied for our current promo';const email = `${opener}\n\n${blocks.join('\n\n')}${totalLine}\n\n*comes with hanging hardware as specified above\n${discountLine}\n*tax-free (US)\n\nKindly let me know if you'd like to proceed.\n${fileInstructions}\nLet me know if you have any questions or concerns.\n\nHere to help bring your vision to life,`;document.getElementById('output').textContent = email;
document.getElementById('output-area').style.display = 'block';
document.getElementById('output-area').scrollIntoView({behavior:'smooth', block:'start'});
}function copyEmail() {
navigator.clipboard.writeText(document.getElementById('output').textContent).then(() => {
const btn = document.getElementById('copy-btn');
btn.textContent = 'Copied!';
btn.classList.add('copied');
setTimeout(() => { btn.textContent = 'Copy to clipboard'; btn.classList.remove('copied'); }, 2000);
});
}addPrint();