1<!doctype html> 2<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" lang="en-US" > 3 <head> 4 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 5 <meta name="viewport" content="initial-scale=1"> 6 7 <!-- This is Squarespace. --><!-- venndesign2 --> 8<base href=""> 9<meta charset="utf-8" /> 10<title>Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture</title> 11<meta http-equiv="Accept-CH" content="Sec-CH-UA-Platform-Version, Sec-CH-UA-Model" /><link rel="icon" type="image/x-icon" href="https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/1605998049236-4H6DI2M88LZ4HKRDPJTW/favicon.ico"/> 12<meta property="og:site_name" content="Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture"/> 13<meta property="og:title" content="Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture"/> 14<meta property="og:type" content="website"/> 15<meta property="og:image" content="http://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w"/> 16<meta itemprop="name" content="Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture"/> 17<meta itemprop="thumbnailUrl" content="http://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w"/> 18<link rel="image_src" href="http://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w" /> 19<meta itemprop="image" content="http://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w"/> 20<meta name="twitter:title" content="Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture"/> 21<meta name="twitter:image" content="http://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w"/> 22<meta name="twitter:card" content="summary"/> 23<meta name="description" content="" /> 24<link rel="preconnect" href="https://images.squarespace-cdn.com"> 25<link rel="preconnect" href="https://use.typekit.net" crossorigin> 26<link rel="preconnect" href="https://p.typekit.net" crossorigin>
27<script type="text/javascript" src="//use.typekit.net/ik/qsy3vgljDnKxC4xgmVxqiRYypdrmuOXz1nFDb02wPb3felvIfFHN4UJLFRbh52jhWD9tF2sR529oZ2IaFQy8wDiywQ4cZA4RFgnoMKG0jAFu-WsoShFGZAsude80ZkoRdhXCHKoyjamTiY8Djhy8ZYmC-Ao1Oco8if37OcBDOcu8OfG0SaBujW48SagyjhmDjhy8ZYmC-Ao1OcFzdP37O1Z8dcoqZWFTZhtkO1FUiABkZWF3jAF8OcFzdPUyjamTiY8Djhy8ZYmC-Ao1OcFzdPUyjamTiY8Djhy8ZYmC-Ao1Oco8ifUySkolZPUCdhFydeyzSabCSaBujW48SagyjhmDjhy8ZYmC-Ao1OcFzdPUhZAo0ZemD-Ai0OcFzOYZ8dcoqZWFTZhtkO1FUiABkZWF3jAF8OcFzdPUaiaS0jAFu-WsoShFGZAsude80ZkoRdhXCiaiaOcBRiA8XpWFR-emqiAUTdcS0dcmXOYiaikoySkolZPUaiaS0SaBujW48SagyjhmDjhy8ZYmC-Ao1OcFzdPUaiaS0icm0dcs8Sh81dKoRdkUaiaS0icm0dcs8Sh81dRJ0SaBujW48Sagyjh90jhNlJ6U3ScNt-AuyOAozicIK2e48dYqlZe8DSeUypPJIjcmCpPJ4Z1mXiW4yOWgXH6qJ73IbMg6gJMJ7fbRKHyMMeMw6MKG4fHvgIMMjgfMfH6GJCwbgIMMjgPMfH6qJK3IbMg6YJMJ7f6KzN3IbMs6IJMJ7f6KCN3IbMy6IJMJ7f6KlN3IbMy6YJMJ7f6KnN3IbMy65JMJ7f6K0N3IbMy6sJMJ7fbKImsM2eMb6MKG4fJBmIMwjgkMfqMeeqzH6g6.js" async fetchpriority="high" onload="try{Typekit.load();}catch(e){} document.documentElement.classList.remove('wf-loading');"></script>
vendor: 1 bytes, line 27
27
28<script>document.documentElement.classList.add('wf-loading')</script>
28 29<style>@keyframes fonts-loading { 0%, 99% { color: transparent; } } html.wf-loading * { animation: fonts-loading 3s; }</style> 30<link rel="preconnect" href="https://file.squarespace-cdn.com" crossorigin> 31<style data-sqsp-font-ids="6a313aef7d426c0f400804d1,6a313cb3494e3c6626e645ca,6a313952691a2d058d1a1aed,6a313705f906cb6ef8dce552"> 32/* math */ 33@font-face { 34 font-family: 'Roboto'; 35 font-style: normal; 36 font-weight: 400; 37 font-display: swap; 38 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/8a9618fb-2f5c-401e-903f-4f3e76d46ee3/math.woff2') format('woff2'); 39 unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF; 40} 41/* greek-ext */ 42@font-face { 43 font-family: 'Roboto'; 44 font-style: normal; 45 font-weight: 400; 46 font-display: swap; 47 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/e7721029-9c93-41a2-9c65-a50bc7ee984c/greek-ext.woff2') format('woff2'); 48 unicode-range: U+1F00-1FFF; 49} 50/* latin */ 51@font-face { 52 font-family: 'Roboto'; 53 font-style: normal; 54 font-weight: 400; 55 font-display: swap; 56 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/74534a3f-2c12-4fac-b36b-7d5fffdca709/latin.woff2') format('woff2'); 57 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 58} 59/* greek */ 60@font-face { 61 font-family: 'Roboto'; 62 font-style: normal; 63 font-weight: 400; 64 font-display: swap; 65 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/8c396c29-f890-459f-b884-db4d54948998/greek.woff2') format('woff2'); 66 unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; 67} 68/* latin-ext */ 69@font-face { 70 font-family: 'Roboto'; 71 font-style: normal; 72 font-weight: 400; 73 font-display: swap; 74 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/b6a444ac-6c80-4487-a860-e33cd6d5cf98/latin-ext.woff2') format('woff2'); 75 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 76} 77/* vietnamese */ 78@font-face { 79 font-family: 'Roboto'; 80 font-style: normal; 81 font-weight: 400; 82 font-display: swap; 83 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/8123d4cd-3a2a-4166-b38e-b779581b81d3/vietnamese.woff2') format('woff2'); 84 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 85} 86/* cyrillic */ 87@font-face { 88 font-family: 'Roboto'; 89 font-style: normal; 90 font-weight: 400; 91 font-display: swap; 92 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/12708170-a296-4d2c-a4f4-3dd81b4d8208/cyrillic.woff2') format('woff2'); 93 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 94} 95/* symbols */ 96@font-face { 97 font-family: 'Roboto'; 98 font-style: normal; 99 font-weight: 400; 100 font-display: swap; 101 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/0875af1a-79ef-4b4e-9f6c-f03b4dff8766/symbols.woff2') format('woff2'); 102 unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF; 103} 104/* cyrillic-ext */ 105@font-face { 106 font-family: 'Roboto'; 107 font-style: normal; 108 font-weight: 400; 109 font-display: swap; 110 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/417a6222-09a6-4e22-9cbf-b14450e5089a/cyrillic-ext.woff2') format('woff2'); 111 unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 112} 113/* vietnamese */ 114@font-face { 115 font-family: 'Work Sans'; 116 font-style: normal; 117 font-weight: 500; 118 font-display: swap; 119 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/54edb56c-ff8a-4d20-9382-08133737d40d/vietnamese.woff2') format('woff2'); 120 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 121} 122/* latin-ext */ 123@font-face { 124 font-family: 'Work Sans'; 125 font-style: normal; 126 font-weight: 500; 127 font-display: swap; 128 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/a4f673b0-49a9-470c-af82-949ebeaafc90/latin-ext.woff2') format('woff2'); 129 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
129BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 130} 131/* latin */ 132@font-face { 133 font-family: 'Work Sans'; 134 font-style: normal; 135 font-weight: 500; 136 font-display: swap; 137 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/ad543023-f3da-4ee7-b903-7d8d744fbe96/latin.woff2') format('woff2'); 138 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 139} 140/* vietnamese */ 141@font-face { 142 font-family: 'Work Sans'; 143 font-style: normal; 144 font-weight: 300; 145 font-display: swap; 146 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/f5c716a6-5414-438c-bbab-8d9750b53de5/vietnamese.woff2') format('woff2'); 147 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 148} 149/* latin */ 150@font-face { 151 font-family: 'Work Sans'; 152 font-style: normal; 153 font-weight: 300; 154 font-display: swap; 155 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/55c697ab-a250-4bb2-a8e6-47322ce90d57/latin.woff2') format('woff2'); 156 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 157} 158/* latin-ext */ 159@font-face { 160 font-family: 'Work Sans'; 161 font-style: normal; 162 font-weight: 300; 163 font-display: swap; 164 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/31956cd0-3b84-46a4-8284-75f8d9b63c42/latin-ext.woff2') format('woff2'); 165 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 166} 167/* vietnamese */ 168@font-face { 169 font-family: 'Work Sans'; 170 font-style: italic; 171 font-weight: 400; 172 font-display: swap; 173 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/eec81333-1ab3-4908-aa12-21142fc9b0df/vietnamese.woff2') format('woff2'); 174 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 175} 176/* latin-ext */ 177@font-face { 178 font-family: 'Work Sans'; 179 font-style: italic; 180 font-weight: 400; 181 font-display: swap; 182 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/5d3874b7-daa0-41d7-9e7b-feb731cbca4c/latin-ext.woff2') format('woff2'); 183 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 184} 185/* latin */ 186@font-face { 187 font-family: 'Work Sans'; 188 font-style: italic; 189 font-weight: 400; 190 font-display: swap; 191 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/40f9fffb-24e9-4da7-bbed-d1ef25cb26e5/latin.woff2') format('woff2'); 192 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 193} 194/* vietnamese */ 195@font-face { 196 font-family: 'Work Sans'; 197 font-style: normal; 198 font-weight: 700; 199 font-display: swap; 200 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/b242a786-aee4-4399-8e0e-c210872592ec/vietnamese.woff2') format('woff2'); 201 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 202} 203/* latin */ 204@font-face { 205 font-family: 'Work Sans'; 206 font-style: normal; 207 font-weight: 700; 208 font-display: swap; 209 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/ac82d915-3ded-4e8f-b788-59902f0a9a31/latin.woff2') format('woff2'); 210 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 211} 212/* latin-ext */ 213@font-face { 214 font-family: 'Work Sans'; 215 font-style: normal; 216 font-weight: 700; 217 font-display: swap; 218 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/01ab3112-033c-4322-a9de-d7d7e5436fd6/latin-ext.woff2') format('woff2'); 219 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
219BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 220} 221/* vietnamese */ 222@font-face { 223 font-family: 'Oswald'; 224 font-style: normal; 225 font-weight: 700; 226 font-display: swap; 227 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/368bd071-42c3-468c-9fef-7dd523c166af/vietnamese.woff2') format('woff2'); 228 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 229} 230/* cyrillic-ext */ 231@font-face { 232 font-family: 'Oswald'; 233 font-style: normal; 234 font-weight: 700; 235 font-display: swap; 236 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/fddf03d1-f3a6-4959-bf5c-f1cd2e737db2/cyrillic-ext.woff2') format('woff2'); 237 unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 238} 239/* cyrillic */ 240@font-face { 241 font-family: 'Oswald'; 242 font-style: normal; 243 font-weight: 700; 244 font-display: swap; 245 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/efaac1f3-36a2-4fd1-b129-2fe18f4fa766/cyrillic.woff2') format('woff2'); 246 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 247} 248/* latin-ext */ 249@font-face { 250 font-family: 'Oswald'; 251 font-style: normal; 252 font-weight: 700; 253 font-display: swap; 254 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/007b0417-9200-496c-87c8-073e4234daea/latin-ext.woff2') format('woff2'); 255 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 256} 257/* latin */ 258@font-face { 259 font-family: 'Oswald'; 260 font-style: normal; 261 font-weight: 700; 262 font-display: swap; 263 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/90ab4a5d-8a5b-4f76-b1ac-22b64d8b3e35/latin.woff2') format('woff2'); 264 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 265} 266/* latin */ 267@font-face { 268 font-family: 'Oswald'; 269 font-style: normal; 270 font-weight: 400; 271 font-display: swap; 272 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/c02dd75d-df69-4519-9bfc-eedeadf97567/latin.woff2') format('woff2'); 273 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 274} 275/* cyrillic */ 276@font-face { 277 font-family: 'Oswald'; 278 font-style: normal; 279 font-weight: 400; 280 font-display: swap; 281 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/ea7b6a81-be63-404b-a1a6-47158bc6cafb/cyrillic.woff2') format('woff2'); 282 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 283} 284/* latin-ext */ 285@font-face { 286 font-family: 'Oswald'; 287 font-style: normal; 288 font-weight: 400; 289 font-display: swap; 290 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/c5f42a30-212b-4593-9ded-a48112aa7091/latin-ext.woff2') format('woff2'); 291 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 292} 293/* cyrillic-ext */ 294@font-face { 295 font-family: 'Oswald'; 296 font-style: normal; 297 font-weight: 400; 298 font-display: swap; 299 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/c58bb968-41bf-4732-bfcb-61e35aa32b70/cyrillic-ext.woff2') format('woff2'); 300 unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 301} 302/* vietnamese */ 303@font-face { 304 font-family: 'Oswald'; 305 font-style: normal; 306 font-weight: 400; 307 font-display: swap; 308 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/17d3d32d-4f55-43f4-b2e1-4795869b4768/vietnamese.woff2') format('woff2'); 309 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 310} 311/* latin-ext */ 312@font-face { 313 font-family: 'Libre Baskerville'; 314 font-style: normal; 315 font-weight: 700; 316 font-display: swap; 317 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/15b5c853-9b64-4099-a53b-6183bd715077/latin-ext.woff2') format('woff2'); 318 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
318BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 319} 320/* latin */ 321@font-face { 322 font-family: 'Libre Baskerville'; 323 font-style: normal; 324 font-weight: 700; 325 font-display: swap; 326 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/ab44c71b-f48b-4670-a167-846043cf99a4/latin.woff2') format('woff2'); 327 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 328} 329/* vietnamese */ 330@font-face { 331 font-family: 'Work Sans'; 332 font-style: italic; 333 font-weight: 700; 334 font-display: swap; 335 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/0596c9ef-dec1-4885-ad6d-7443abfe70e0/vietnamese.woff2') format('woff2'); 336 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 337} 338/* latin-ext */ 339@font-face { 340 font-family: 'Work Sans'; 341 font-style: italic; 342 font-weight: 700; 343 font-display: swap; 344 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/5bb1f76e-0203-4319-ab7b-7905c85f4108/latin-ext.woff2') format('woff2'); 345 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 346} 347/* latin */ 348@font-face { 349 font-family: 'Work Sans'; 350 font-style: italic; 351 font-weight: 700; 352 font-display: swap; 353 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/0707da75-31c7-40b6-86b4-9bebbaa12a05/latin.woff2') format('woff2'); 354 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 355} 356/* vietnamese */ 357@font-face { 358 font-family: 'Work Sans'; 359 font-style: normal; 360 font-weight: 400; 361 font-display: swap; 362 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/d51c75e7-b7f3-43e9-82e8-aa5f8e46da49/vietnamese.woff2') format('woff2'); 363 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 364} 365/* latin */ 366@font-face { 367 font-family: 'Work Sans'; 368 font-style: normal; 369 font-weight: 400; 370 font-display: swap; 371 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/67e140c1-0737-4145-afc4-9f498d6f4b39/latin.woff2') format('woff2'); 372 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 373} 374/* latin-ext */ 375@font-face { 376 font-family: 'Work Sans'; 377 font-style: normal; 378 font-weight: 400; 379 font-display: swap; 380 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/925aca0d-35dc-4703-a91e-214c19b99bd5/latin-ext.woff2') format('woff2'); 381 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 382} 383/* greek-ext */ 384@font-face { 385 font-family: 'Roboto'; 386 font-style: normal; 387 font-weight: 100; 388 font-display: swap; 389 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/eb572e52-2096-425d-9e89-8ee10b9294b0/greek-ext.woff2') format('woff2'); 390 unicode-range: U+1F00-1FFF; 391} 392/* greek */ 393@font-face { 394 font-family: 'Roboto'; 395 font-style: normal; 396 font-weight: 100; 397 font-display: swap; 398 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/ae508010-2247-40cf-a7c6-e228a1a34a3b/greek.woff2') format('woff2'); 399 unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; 400} 401/* symbols */ 402@font-face { 403 font-family: 'Roboto'; 404 font-style: normal; 405 font-weight: 100; 406 font-display: swap; 407 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/fb8524a7-e20d-43c9-8777-67446eb32640/symbols.woff2') format('woff2'); 408 unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF; 409} 410/* vietnamese */ 411@font-face { 412 font-family: 'Roboto'; 413 font-style: normal; 414 font-weight: 100; 415 font-display: swap; 416 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/d5a69188-23ca-4777-b5bf-8b862002c14a/vietnamese.woff2') format('woff2'); 417 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 418} 419/* cyrillic */ 420@font-face { 421 font-family: 'Roboto'; 422 font-style: normal; 423 font-weight: 100; 424 font-display: swap; 425 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/70f42a2a-475d-4132-9632-88b0a7bd17f4/cyrillic.woff2') format('woff2'); 426 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 427} 428/* cyrillic-ext */ 429@font-face { 430 font-family: 'Roboto'; 431 font-style: normal; 432 font-weight: 100; 433 font-display: swap; 434 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/ec537f80-11a7-454f-a065-9a8234496dcc/cyrillic-ext.woff2') format('woff2'); 435 unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 436} 437/* math */ 438@font-face { 439 font-family: 'Roboto'; 440 font-style: normal; 441 font-weight: 100; 442 font-display: swap; 443 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/55b72f1e-4bad-4c64-b8cf-d7b4a8bb66e9/math.woff2') format('woff2'); 444 unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2
444038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF; 445} 446/* latin-ext */ 447@font-face { 448 font-family: 'Roboto'; 449 font-style: normal; 450 font-weight: 100; 451 font-display: swap; 452 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/6f0e7f47-a182-4fcc-82f1-5e8fee85a14b/latin-ext.woff2') format('woff2'); 453 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 454} 455/* latin */ 456@font-face { 457 font-family: 'Roboto'; 458 font-style: normal; 459 font-weight: 100; 460 font-display: swap; 461 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/2499d243-cc27-43e3-b13c-a2bf51716177/latin.woff2') format('woff2'); 462 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 463} 464/* vietnamese */ 465@font-face { 466 font-family: 'Work Sans'; 467 font-style: italic; 468 font-weight: 300; 469 font-display: swap; 470 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/23059a6d-2ab9-4bc2-b93e-0668daf359c8/vietnamese.woff2') format('woff2'); 471 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 472} 473/* latin */ 474@font-face { 475 font-family: 'Work Sans'; 476 font-style: italic; 477 font-weight: 300; 478 font-display: swap; 479 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/bad5678c-86c8-4208-8576-d50633ee6626/latin.woff2') format('woff2'); 480 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 481} 482/* latin-ext */ 483@font-face { 484 font-family: 'Work Sans'; 485 font-style: italic; 486 font-weight: 300; 487 font-display: swap; 488 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/333ab454-9ec3-4f1b-b84e-36cbfb949dcb/latin-ext.woff2') format('woff2'); 489 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 490} 491/* latin */ 492@font-face { 493 font-family: 'Work Sans'; 494 font-style: normal; 495 font-weight: 100; 496 font-display: swap; 497 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/375285f3-8ad6-4398-8b68-1f2374049dfb/latin.woff2') format('woff2'); 498 unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 499} 500/* latin-ext */ 501@font-face { 502 font-family: 'Work Sans'; 503 font-style: normal; 504 font-weight: 100; 505 font-display: swap; 506 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/e05679be-1567-4eeb-85ea-084b6cf8365a/latin-ext.woff2') format('woff2'); 507 unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 508} 509/* vietnamese */ 510@font-face { 511 font-family: 'Work Sans'; 512 font-style: normal; 513 font-weight: 100; 514 font-display: swap; 515 src: url('https://file.squarespace-cdn.com/content/v2/namespaces/fonts/libraries/sqsp/assets/abf6dbfd-fe86-4367-a271-1d2098db72ef/vietnamese.woff2') format('woff2'); 516 unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; 517} 518</style>
518<script type="text/javascript" crossorigin="anonymous" nomodule="nomodule" src="//assets.squarespace.com/@sqs/polyfiller/1.6/legacy.js"></script>
vendor: 1 bytes, line 518
518
519<script type="text/javascript" crossorigin="anonymous" src="//assets.squarespace.com/@sqs/polyfiller/1.6/modern.js"></script>
vendor: 1 bytes, line 519
519
520<script data-name="static-context">Static = window.Static || {}; Static.SQUARESPACE_CONTEXT = {"betaFeatureFlags":["commerce_product_payment_plan_editing","modernized-pdp-m2-enabled","order_status_page_checkout_landing_enabled","i18n_beta_website_locales","campaigns_merch_state","marketing_landing_page","campaigns_thumbnail_layout","campaigns_discount_section_in_automations","campaigns_discount_section_in_blasts","enable_form_submission_trigger","campaigns_table_v2","member_areas_feature","cdk_website_components_video_lazy_loading_enabled","enable_modernized_pdp_m3_layout_ux","output_template_css_assets","campaigns_import_discounts","enable_modernized_pdp_m3_fluid","marketing_automations","sms-campaigns","contacts_and_campaigns_redesign","campaigns_new_image_layout_picker"],"facebookAppId":"314192535267336","facebookApiVersion":"v6.0","rollups":{"squarespace-announcement-bar":{"js":"//assets.squarespace.com/universal/scripts-compressed/announcement-bar-836f2f08f68326a4-min.en-US.js"},"squarespace-audio-player":{"css":"//assets.squarespace.com/universal/styles-compressed/audio-player-b05f5197a871c566-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/audio-player-6fb992ddfaa509af-min.en-US.js"},"squarespace-blog-collection-list":{"css":"//assets.squarespace.com/universal/styles-compressed/blog-collection-list-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/blog-collection-list-3a5374d437fc6d00-min.en-US.js"},"squarespace-calendar-block-renderer":{"css":"//assets.squarespace.com/universal/styles-compressed/calendar-block-renderer-c3fef2a497c8e56b-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/calendar-block-renderer-1488f231552cc2f1-min.en-US.js"},"squarespace-chartjs-helpers":{"css":"//assets.squarespace.com/universal/styles-compressed/chartjs-helpers-96b256171ee039c1-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/chartjs-helpers-522a53304a318d5d-min.en-US.js"},"squarespace-comments":{"css":"//assets.squarespace.com/universal/styles-compressed/comments-a54bc6cc70c2a74a-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/comments-312339166b5ad66f-min.en-US.js"},"squarespace-custom-css-popup":{"css":"//assets.squarespace.com/universal/styles-compressed/custom-css-popup-3fdd945b3c1d9689-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/custom-css-popup-5436102fc646f2fc-min.en-US.js"},"squarespace-dialog":{"css":"//assets.squarespace.com/universal/styles-compressed/dialog-86aacd645d83874c-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/dialog-86609c0b60da577a-min.en-US.js"},"squarespace-events-collection":{"css":"//assets.squarespace.com/universal/styles-compressed/events-collection-c3fef2a497c8e56b-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/events-collection-f3b4cd016de9317e-min.en-US.js"},"squarespace-form-rendering-utils":{"js":"//assets.squarespace.com/universal/scripts-compressed/form-rendering-utils-54ace3853df228db-min.en-US.js"},"squarespace-forms":{"css":"//assets.squarespace.com/universal/styles-compressed/forms-0afd3c6ac30bbab1-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/forms-be0b8c73146bec85-min.en-US.js"},"squarespace-gallery-collection-list":{"css":"//assets.squarespace.com/universal/styles-compressed/gallery-collection-list-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/gallery-collection-list-e50dc2cea7153bb8-min.en-US.js"},"squarespace-image-zoom":{"css":"//assets.squarespace.com/universal/styles-compressed/image-zoom-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/image-zoom-0ca1efc2ac068abc-min.en-US.js"},"squarespace-pinterest":{"css":"//assets.squarespace.com/universal/styles-compressed/pinterest-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/pinterest-523a849b69d70eb5-min.en-US.js"},"squarespace-popup-overlay":{"css":"//assets.squarespace.com/universal/styles-compressed/popup-overlay-b742b752f5880972-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/popup-overlay-df7b05add6c30fcd-min.en-US.js"},"squarespace-product-quick-view":{"css":"//assets.squarespace.com/universal/styles-compressed/product-quick-view-0afd3c6ac30bbab1-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/product-quick-view-b01bc65ad40d0f05-min.en-US.js"},"squarespace-products-collection-item-v2":{"css":"//assets.squarespace.com/universal/styles-compressed/products-collection-item-v2-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/products-collection-item-v2-7fbb3f7b25936e86-min.en-US.js"},"squarespace-products-collection-list-v2":{"css":"//assets.squarespace.com/universal/styles-compressed/products-collection-list-v2-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/products-collection-list-v2-a0f681feaaa1d600-min.en-US.js"},"squarespace-search-page":{"css":"//assets.squarespace.com/universal/styles-compressed/search-page-90a67fc09b9b32c6-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/search-page-6b1889e7794d1996-min.en-US.js"},"squarespace-search-preview":{"js":"//assets.squarespace.com/universal/scripts-compressed/search-preview-251f22aa63cbf1d4-min.en-US.js"},"squarespace-simple-liking":{"css":"//assets.squarespace.com/universal/styles-compressed/simple-liking-701bf8bbc05ec6aa-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/simple-liking-75b6582783ed07a5-min.en-US.js"},"squarespace-social-buttons":{"css":"//assets.squarespace.com/universal/styles-compressed/social-buttons-95032e5fa98e47a5-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/social-buttons-0187f9df0b19ce87-min.en-US.js"},"squarespace-tourdates":{"css":"//assets.squarespace.com/universal/styles-compressed/tourdates-b4046463b72f34e2-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/tourdates-793d65bead4aae95-min.en-US.js"}
520,"squarespace-website-overlays-manager":{"css":"//assets.squarespace.com/universal/styles-compressed/website-overlays-manager-07ea5a4e004e6710-min.en-US.css","js":"//assets.squarespace.com/universal/scripts-compressed/website-overlays-manager-5a8fe5f9a9d0c08f-min.en-US.js"}},"pageType":102,"website":{"id":"5844c859d1758e37a12febc4","captchaSettings":{"siteKey":"6Le_NcAZAAAAACSRo4hO77WXgKLrCVnlcTXU3qXh","enabledForDonations":false},"cloneable":false,"contentModifiedOn":1782590926966,"developerMode":false,"formattingLocale":"en-US","fullSiteTitle":"Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture","identifier":"venndesign2","imageMetadataProcessingEnabled":false,"isHstsEnabled":false,"language":"en-US","location":{"mapLat":44.93022120000001,"mapLng":-122.89790929999998,"addressLine1":"","addressLine2":"Dallas TX","addressCountry":"United States"},"logoImageId":"6414d49512ec880fa33a54cf","primaryDomain":"www.venndesign.co","screenshotId":"ff36d19fe25dab9b09cecf704ba7d33fe76e53c5248d2359e23eb4d1a6ed63ea","shareButtonOptions":{"7":true,"1":true,"2":true,"6":true},"showOwnerLogin":false,"siteDescription":"<p class=\"\" style=\"white-space:pre-wrap;\">Build a Movement Rich Environment in your home and office. Proudly manufactured in Dallas, TX, USA. Created by Tyler Benner.</p>","siteStatus":{},"siteTagLine":"","siteTitle":"Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture","socialLogoImageId":"5fb9980e4ae5a37ee132545a","sslSetting":3,"timeZone":"America/Los_Angeles","translationLocale":"en-US","typekitId":"","websiteType":4,"hasBeenCloneable":false,"statsMigrated":false,"authenticUrl":"https://www.venndesign.co","baseUrl":"https://www.venndesign.co","internalUrl":"https://venndesign2.squarespace.com","logoImageUrl":"//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg","machineTimeZoneOffset":-25200000,"socialAccounts":[{"serviceId":2,"userId":"10100581119638514","screenname":"Venn Design","addedOn":1484872927524,"profileUrl":"https://www.facebook.com/venndesignco","iconUrl":"http://graph.facebook.com/10100581119638514/picture?type=square","metaData":{"service":"facebook"},"iconEnabled":true,"serviceName":"facebook"},{"serviceId":64,"screenname":"Instagram","addedOn":1585940679390,"profileUrl":"http://www.instagram.com/venndesign","iconEnabled":true,"serviceName":"instagram-unauth"},{"serviceId":61,"userId":"471470792148899768","screenname":"Venn Design ","addedOn":1484872892368,"profileUrl":"https://www.pinterest.com/venndesignco/","iconUrl":"https://s-media-cache-ak0.pinimg.com/avatars/venndesignco_1459316808_60.jpg","metaData":{"service":"pinterest"},"iconEnabled":true,"serviceName":"pinterest-unauth"},{"serviceId":62,"screenname":"Twitter","addedOn":1585940696676,"profileUrl":"http://twitter.com/venndesignco","iconEnabled":true,"serviceName":"twitter-unauth"}],"socialLogoImageUrl":"//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/1605998606735-HKAC6RIOPX4DQXDMAZ1Y/venndesign+logo+small+solid+circle+centered+2000x+square.png","timeZoneAbbr":"PDT","timeZoneOffset":-25200000},"websiteSettings":{"id":"5844c859d1758e37a12febc7","websiteId":"5844c859d1758e37a12febc4","type":"Business","subjects":[],"country":"US","state":"OR","simpleLikingEnabled":true,"mobileInfoBarSettings":{"isContactEmailEnabled":false,"isContactPhoneNumberEnabled":false,"isLocationEnabled":false,"isBusinessHoursEnabled":false},"announcementBarSettings":{"style":2,"text":"<p data-rte-preserve-empty=\"true\" style=\"white-space:pre-wrap;\">Join our Newsletter for FREE USA SHIPPING</p>","clickthroughUrl":{"url":"https://www.venndesign.co/#home6-newsletter-signup","newWindow":true}},"popupOverlaySettings":{"style":1,"showOnScroll":true,"scrollPercentage":75,"showOnTimer":true,"timerDelay":30000,"showUntilSignup":true,"displayFrequency":30,"enableMobile":true,"enabledPages":["5e3b95c50b06e7250665c5b1","5844d6b437c581d99d99bca7","5ed16ff0df699b54f87e2715","6372af0bd26f426b1567ed98","5844d763ff7c507cc22488c8","5844dfbd197aeafb4a1c3e69","612e804ee285e72000a93023","5ff1e9ae8268c96dbb69c8a0","5844df4d44024382e46b8b41"],"showOnAllPages":false,"version":1},"commentLikesAllowed":true,"commentAnonAllowed":true,"commentThreaded":true,"commentApprovalRequired":false,"commentAvatarsOn":true,"commentSortType":2,"commentFlagThreshold":0,"commentFlagsAllowed":true,"commentEnableByDefault":true,"commentDisableAfterDaysDefault":0,"disqusShortn
520ame":"","commentsEnabled":false,"contactPhoneNumber":"","businessHours":{"monday":{"text":"","ranges":[{}]},"tuesday":{"text":"","ranges":[{}]},"wednesday":{"text":"","ranges":[{}]},"thursday":{"text":"","ranges":[{}]},"friday":{"text":"","ranges":[{}]},"saturday":{"text":"","ranges":[{}]},"sunday":{"text":"","ranges":[{}]}},"storeSettings":{"returnPolicy":null,"termsOfService":null,"privacyPolicy":null,"expressCheckout":false,"continueShoppingLinkUrl":"store","useLightCart":false,"showNoteField":false,"shippingCountryDefaultValue":"US","billToShippingDefaultValue":true,"showShippingPhoneNumber":true,"isShippingPhoneRequired":false,"showBillingPhoneNumber":true,"isBillingPhoneRequired":false,"currenciesSupported":["USD","AUD","CAD","CHF","DKK","EUR","GBP","HKD","MXN","NOK","NZD","SEK","SGD"],"defaultCurrency":"USD","selectedCurrency":"USD","multicurrencyEnabled":true,"measurementStandard":1,"orderConfirmationInjectCode":"<!-- Google Tag Manager -->\n
520<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://load.server.venndesign.co/zjqqydcz.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-PSQHM7J');<\/script>\n<!-- End Google Tag Manager -->\n\n\n\n<!-- Peach's Affiliate Programs -->\n
520<script src=\"https://peachs.co/embeds/affinity.min.js\" data-program-id=\"66\" data-affiliate-order-id=\"{orderId}\" data-order-subtotal=\"{orderSubtotalCents}\" data-order-total=\"{orderGrandTotalCents}\" data-email-address=\"{customerEmailAddress}\"><\/script>\n<!-- End Peach's Affiliate Programs -->\n\n<!-- Pinterest Checkout Event Code -->\n
520<script>\npintrk('track', 'checkout',{\nvalue: {orderGrandTotal},\n order_id: {OrderID},\n currency: 'USD'\norder_quantity:1\n});\n<\/script>\n<noscript>\n<img height=\"1\" width=\"1\" style=\"display:none;\" alt=\"\"\nsrc=\"https://ct.pinterest.com/v3/?tid=549761818334&event=checkout&noscript=1\"/>\n</noscript>\n<!-- End Pinterest Checkout Event Code -->","showCustomCheckoutForm":false,"checkoutPageMarketingOptInEnabled":true,"enableMailingListOptInByDefault":true,"sameAsRetailLocation":false,"merchandisingSettings":{"scarcityEnabledOnProductItems":false,"scarcityEnabledOnProductBlocks":false,"scarcityMessageType":"DEFAULT_SCARCITY_MESSAGE","scarcityThreshold":10,"multipleQuantityAllowedForServices":true,"restockNotificationsEnabled":false,"restockNotificationsMailingListSignUpEnabled":false,"relatedProductsEnabled":true,"relatedProductsOrdering":"random","soldOutVariantsDropdownDisabled":false,"productComposerOptedIn":false,"productComposerABTestOptedOut":false,"productReviewsEnabled":false,"displayImportedProductReviewsEnabled":false,"hasOptedToCollectNativeReviews":false},"minimumOrderSubtotalEnabled":false,"minimumOrderSubtotal":{"currency":"USD","value":"0.00"},"addToCartConfirmationType":2,"isLive":true,"multipleQuantityAllowedForServices":true},"useEscapeKeyToLogin":true,"ssBadgeType":1,"ssBadgePosition":4,"ssBadgeVisibility":1,"ssBadgeDevices":1,"pinterestOverlayOptions":{"mode":"disabled"},"userAccountsSettings":{"loginAllowed":true,"signupAllowed":true}},"cookieSettings":{"isCookieBannerEnabled":false,"isRestrictiveCookiePolicyEnabled":false,"cookieBannerText":"","cookieBannerTheme":"","cookieBannerVariant":"","cookieBannerPosition":"","cookieBannerCtaVariant":"","cookieBannerCtaText":"","cookieBannerAcceptType":"OPT_IN","cookieBannerOptOutCtaText":"","cookieBannerHasOptOut":false,"cookieBannerHasManageCookies":true,"cookieBannerManageCookiesLabel":"","cookieBannerSavedPreferencesText":"","cookieBannerSavedPreferencesLayout":"PILL"},"websiteCloneable":false,"subscribed":false,"appDomain":"squarespace.com","templateTweakable":true,"tweakJSON":{"aspect-ratio":"Auto","gallery-arrow-style":"No Background","gallery-aspect-ratio":"3:2 Standard","gallery-auto-crop":"true","gallery-autoplay":"false","gallery-design":"Slideshow","gallery-info-overlay":"Show on Hover","gallery-loop":"false","gallery-navigation":"Bullets","gallery-show-arrows":"true","gallery-transitions":"Fade","galleryArrowBackground":"rgba(34,34,34,1)","galleryArrowColor":"rgba(255,255,255,1)","galleryAutoplaySpeed":"3","galleryCircleColor":"rgba(255,255,255,1)","galleryInfoBackground":"rgba(0, 0, 0, .7)","galleryThumbnailSize":"100px","gridSize":"350px","gridSpacing":"20px","tweak-blog-list-columns":"3","tweak-blog-list-item-image-aspect-ratio-grid":"1:1 Square","tweak-blog-list-item-image-aspect-ratio-stacked":"1:1 Square","tweak-blog-list-item-image-show":"true","tweak-blog-list-spacing":"25px","tweak-blog-list-style":"Grid","tweak-footer-layout":"Columns","tweak-header-bottom-overlay-on-index-gallery":"false","tweak-index-gallery-apply-bottom-spacing":"true","tweak-index-gallery-autoplay-duration":"2","tweak-index-gallery-autoplay-enable":"true","tweak-index-gallery-fixed-height":"true","tweak-index-gallery-height":"100vh","tweak-index-gallery-indicators":"Lines","tweak-index-gallery-layout":"Packed","tweak-index-gallery-transition":"Fade","tweak-index-gallery-transition-duration":"500","tweak-index-nav-position":"Right","tweak-index-page-apply-bottom-spacing":"false","tweak-index-page-fullscreen":"None","tweak-index-page-min-height":"50vh","tweak-mobile-breakpoint":"900px","tweak-overlay-parallax-enabled":"false","tweak-overlay-parallax-new-math":"false","tweak-product-item-image-zoom-factor":"2.5","tweak-product-list-item-hover-behavior":"Show Alternate Image","tweak-product-list-items-per-row":"4","tweak-related-products-items-per-row":"3","tweak-related-products-title-spacing":"50px","tweak-site-ajax-loading-enable":"false","tweak-site-border-show":"false","tweak-site-border-width":"14px"},"templateId":"55f0aac0e4b0f0a5b7e0b22e","templateVersion":"7","pageFeatures":[4],"gmRenderKey":"QUl6YVN5Q0JUUk9xNkx1dkZfSUUxcjQ2LVQ0QWVUU1YtMGQ3bXk4","templateScriptsRootUrl":"https://static1.squarespace.com/static/ta/55f0a9b0e4b0f3eb70352f6d/360/scripts/","impersonatedSession":false,"tzData":{"zones":[[-480,"US","P%sT",null]],"rules":{"US":[[1967,2006,null,"Oct","lastSun","2:00","0","S"],[1987,2006,null,"Apr","Sun>=1","2:00","1:00","D"],[2007,"max",null,"Mar","Sun>=8","2:00","1:00","D"],[2007,"max",null,"Nov","Sun>=1","2:00","0","S"]]}},"showAnnouncementBar":true,"recaptchaEnterpriseContext":{"recaptchaEnterpriseSiteKey":"6LdDFQwjAAAAAPigEvvPgEVbb7QBm-TkVJdDTlAv"},"i18nContext":{"timeZoneData":{"id":"America/Los_Angeles","name":"Pacific Time"}},"env":"PRODUCTION","visitorFormContext":{"formFieldFormats":{"countries":[{"name":"Afghanistan","code":"AF","phoneCode":"+93"},{"name":"\u00C5land Islands","code":"AX","phoneCode":"+358"},{"name":"Albania","code":"AL","phoneCode":"+355"},{"name":"Algeria","code":"DZ","phoneCode":"+213"},{"name":"American Samoa","code":"AS","phoneCode":"+1"},{"name":"Andorra","code":"AD","phoneCode":"+376"},{"name":"Angola","code":"AO","phoneCode":"+244"},{"name":"Anguilla","code":"AI","phoneCode":"+1"},{"name":"Antigua & Barbuda","code":"AG","phoneCode":"+1"},{"name":"Argentina","code":"AR","phoneCode":"+54"},{"name":"Armenia","code":"AM","phoneCode":"+374"},{"name":"Aruba","code":"AW","phoneCode":"+297"},{"name":"Ascension Island","code":"AC","phoneCode":"+247"},{"name":"Australia","code":"AU","phoneCode":"+61"},{"name":"Austria","code":"AT","phoneCode":"+43"},{"name":"Azerbaijan","code":"AZ","phoneCode":"+994"},{"name":"Bahamas","code":"BS","phoneCode":"+1"},{"name":"Bahrain","code":"BH","phoneCode":"+973"},{"name":"Bangladesh","code":"BD","phoneCode":"+880"},{"name":"Barbados","code":"BB","phoneCode":"+1"},{"name":"Belarus","code":"BY","phoneCode":"+375"},{"name":"Belgium","code":"BE","phoneCode":"+32"},{"name":"Belize","code":"BZ","phoneCode":"+501"},{"name":"Benin","code":"BJ","phoneCode":"+229"},{"name":"Bermuda","code":"BM","phoneCode":"+1"},{"name":"Bhutan","code":"BT","phoneCode":"+975"},{"name":"Bolivia","code":"BO","phoneCode":"+591"},{"name":"Bosnia & Herzegovina","code":"BA","phoneCode":"+387"},{"name":"Botswana","code":"BW","phoneCode":"+267"},{"name":"Brazil","code":"BR","phoneCode":"+55"},{"name":"British Indian Ocean Territory","code":"IO","phoneCode":"+246"},{"name":"British Virgin Islands","code":"VG","phoneCode":"+1"},{"name":"Brunei","code":"BN","phoneCode":"+673"},{"name":"Bulgaria","code":"BG","phoneCode":"+359"},{"name":"Burkina Faso","code":"BF","phoneCode":"+226"},{"name":"Burundi","code":"BI","phoneCode":"+257"},{"name":"Cambodia","code":"KH","phoneCode":"+855"},{"name":"Cameroon","code":"CM","phoneCode":"+237"},{"name":"Canada","code":"CA","phoneCode":"+1"},{"name":"Cape Verde","code":"CV","phoneCode":"+238"},{"name":"Caribbean Netherlands","code":"BQ","phoneCode":"+599"},{"name":"Cayman Islands","code":"KY","phoneCode":"+1"},{"name":"Central African Republic","code":"CF","phoneCode":"+236"},{"name":"Chad","code":"TD","phoneCode":"+235"},{"name":"Chile","code":"CL","phoneCode":"+56"},{"name":"China","code":"CN","phoneCode":"+86"},{"name":"Christmas Island","code":"CX","phoneCode":"+61"},{"name":"Cocos (Keeling) Islands","code":"CC","phoneCode":"+61"},{"name":"Colombia","code":"CO","phoneCode":"+57"},{"name":"Comoros","code":"KM","phoneCode":"+269"},{"name":"Congo - Brazzaville","code":"CG","phoneCode":"+242"},{"name":"Congo - Kinshasa","code":"CD","phoneCode":"+243"},{"name":"Cook Islands","code":"CK","phoneCode":"+682"},{"name":"Costa Rica","code":"CR","phoneCode":"+506"},{"name":"C\u00F4te d\u2019Ivoire","code":"CI","phoneCode":"+225"},{"name":"Croatia","code":"HR","phoneCode":"+385"},{"name":"Cuba","code":"CU","phoneCode":"+53"},{"name":"Cura\u00E7ao","code":"CW","phoneCode":"+599"},{"name":"Cyprus","code":"CY","phoneCode":"+357"},{"name":"Czechia","code":"CZ","phoneCode":"+420"},{"name":"Denmark","code":"DK","phoneCode":"+45"},{"name":"Djibouti","code":"DJ","phoneCode":"+253"},{"name":"Dominica","code":"DM","phoneCode":"+1"},{"name":"Dominican Republic","code":"DO","phoneCode":"+1"},{"name":"Ecuador","code":"EC","phoneCode":"+593"},{"name":"Egypt","code":"EG","phoneCode":"+20"},{"name":"El Salvador","code":"SV","phoneCode":"+503"},{"name":"Equatorial Guinea","code":"GQ","phoneCode":"+240"},{"name":"Eritrea","code":"ER","phoneCode":"+291"},{"name":"Estonia","code":"EE","phoneCode":"+372"},{"name":"Eswatini","code":"SZ","phoneCode":"+268"},{"name":"Ethiopia","code":"ET","phoneCode":"+251"},{"name":"Falkland Islands","code":"FK","phoneCode":"+500"},{"name":"Faroe Islands","code":"FO","phoneCode":"+298"},{"name":"Fiji","code":"FJ","phoneCode":"+679"},{"name":"Finland","code":"FI","phoneCode":"+358"},{"name":"France","code":"FR","phoneCode":"+33"},{"name":"French Guiana","code":"GF","phoneCode":"+594"},{"name":"French Polynesia","code":"PF","phoneCode":"+689"},{"name":"Gabon","code":"GA","phoneCode":"+241"},{"name":"Gambia","code":"GM","phoneCode":"+220"},{"name":"Georgia","code":"GE","phoneCode":"+995"},{"name":"Germany","code":"DE","phoneCode":"+49"},{"name":"Ghana","code":"GH","phoneCode":"+233"},{"name":"Gibraltar","code":"GI","phoneCode":"+350"},{"name":"Greece","code":"GR","phoneCode":"+30"},{"name":"Greenland","code":"GL","phoneCode":"+299"},{"name":"Grenada","code":"GD","phoneCode":"+1"},{"name":"Guadeloupe","code":"GP","phoneCode":"+590"},{"name":"Guam","code":"GU","phoneCode":"+1"},{"name":"Guatemala","code":"GT","phoneCode":"+502"},{"name":"Guernsey","code":"GG","phoneCode":"+44"},{"name":"Guinea","code":"GN","phoneCode":"+224"},{"name":"Guinea-Bissau","code":"GW","phoneCode":"+245"},{"name":"Guyana","code":"GY","phoneCode":"+592"},{"name":"Haiti","code":"HT","phoneCode":"+509"},{"name":"Honduras","code":"HN","phoneCode":"+504"},{"name":"Hong Kong SAR China","code":"HK","phoneCode":"+852"},{"name":"Hungary","code":"HU","phoneCode":"+36"},{"name":"Iceland","code":"IS","phoneCode":"+354"},{"name":"India","code":"IN","phoneCode":"+91"},{"name":"Indonesia","code":"ID","phoneCode":"+62"},{"name":"Iran","code":"IR","phoneCode":"+98"},{"name":"Iraq","code":"IQ","phoneCode":"+964"},{"name":"Ireland","code":"IE","phoneCode":"+353"},{"name":"Isle of Man","code":"IM","phoneCode":"+44"},{"name":"Israel","code":"IL","phoneCode":"+972"},{"name":"Italy","code":"IT","phoneCode":"+39"},{"name":"Jamaica","code":"JM","phoneCode":"+1"},{"name":"Japan","code":"JP","phoneCode":"+81"},{"name":"Jersey","code":"JE","phoneCode":"+44"},{"name":"Jordan","code":"JO","phoneCode":"+962"},{"name":"Kazakhstan","code":"KZ","phoneCode":"+7"},{"name":"Kenya","code":"KE","phoneCode":"+254"},{"name":"Kiribati","code":"KI","phoneCode":"+686"},{"name":"Kosovo","code":"XK","phoneCode":"+383"},{"name":"Kuwait","code":"KW","phoneCode":"+965"},{"name":"Kyrgyzstan","code":"KG","phoneCode":"+996"},{"name":"Laos","code":"LA","phoneCode":"+856"},{"name":"Latvia","code":"LV","phoneCode":"+371"},{"name":"Lebanon","code":"LB","phoneCode":"+961"},{"name":"Lesotho","code":"LS","phoneCode":"+266"},{"name":"Liberia","code":"LR","phoneCode":"+231"},{"name":"Libya","code":"LY","phoneCode":"+218"},{"name":"Liechtenstein","code":"LI","phoneCode":"+423"},{"name":"Lithuania","code":"LT","phoneCode":"+370"},{"name":"Luxembourg","code":"LU","phoneCode":"+352"},{"name":"Macao SAR China","code":"MO","phoneCode":"+853"},{"name":"Madagascar","code":"MG","phoneCode":"+261"},{"name":"Malawi","code":"MW","phoneCode":"+265"},{"name":"Malaysia","code":"MY","phoneCode":"+60"},{"name":"Maldives","code":"MV","phoneCode":"+960"},{"name":"Mali","code":"ML","phoneCode":"+223"},{"name":"Malta","code":"MT","phoneCode":"+356"},{"name":"Marshall Islands","code":"MH","phoneCode":"+692"},{"name":"Martinique","code":"MQ","phoneCode":"+596"},{"name":"Mauritania","code":"MR","phoneCode":"+222"},{"name":"Mauritius","code":"MU","phoneCode":"+230"},{"name":"Mayotte","code":"YT","phoneCode":"+262"},{"name":"Mexico","code":"MX","phoneCode":"+52"},{"name":"Micronesia","code":"FM","phoneCode":"+691"},{"name":"Moldova","code":"MD","phoneCode":"+373"},{"name":"Monaco","code":"MC","phoneCode":"+377"},{"name":"Mongolia","code":"MN","phoneCode":"+976"},{"name":"Montenegro","code":"ME","phoneCode":"+382"},{"name":"Montserrat","code":"MS","phoneCode":"+1"},{"name":"Morocco","code":"MA","phoneCode":"+212"},{"name":"Mozambique","code":"MZ","phoneCode":"+258"},{"name":"Myanmar (Burma)","code":"MM","phoneCode":"+95"},{"name":"Namibia","code":"NA","phoneCode":"+264"},{"name":"Nauru","code":"NR","phoneCode":"+674"},{"name":"Nepal","code":"NP","phoneCode":"+977"},{"name":"Netherlands","code":"NL","phoneCode":"+31"},{"name":"New Caledonia","code":"NC","phoneCode":"+687"},{"name":"New Zealand","code":"NZ","phoneCode":"+64"},{"name":"Nicaragua","code":"NI","phoneCode":"+505"},{"name":"Niger","code":"NE","phoneCode":"+227"},{"name":"Nigeria","code":"NG","phoneCode":"+234"},{"name":"Niue","code":"NU","phoneCode":"+683"},{"name":"Norfolk Island","code":"NF","phoneCode":"+672"},{"name":"Northern Mariana Islands","code":"MP","phoneCode":"+1"},{"name":"North Korea","code":"KP","phoneCode":"+850"},{"name":"North Macedonia","code":"MK","phoneCode":"+389"},{"name":"Norway","code":"NO","phoneCode":"+47"},{"name":"Oman","code":"OM","phoneCode":"+968"},{"name":"Pakistan","code":"PK","phoneCode":"+92"},{"name":"Palau","code":"PW","phoneCode":"+680"},{"name":"Palestinian Territories","code":"PS","phoneCode":"+970"},{"name":"Panama","code":"PA","phoneCode":"+507"},{"name":"Papua New Guinea","code":"PG","phoneCode":"+675"},{"name":"Paraguay","code":"PY","phoneCode":"+595"},{"name":"Peru","code":"PE","phoneCode":"+51"},{"name":"Philippines","code":"PH","phoneCode":"+63"},{"name":"Poland","code":"PL","phoneCode":"+48"},{"name":"Portugal","code":"PT","phoneCode":"+351"},{"name":"Puerto Rico","code":"PR","phoneCode":"+1"},{"name":"Qatar","code":"QA","phoneCode":"+974"},{"name":"R\u00E9union","code":"RE","phoneCode":"+262"},{"name":"Romania","code":"RO","phoneCode":"+40"},{"name":"Russia","code":"RU","phoneCode":"+7"},{"name":"Rwanda","code":"RW","phoneCode":"+250"},{"name":"Samoa","code":"WS","phoneCode":"+685"},{"name":"San Marino","code":"SM","phoneCode":"+378"},{"name":"S\u00E3o Tom\u00E9 & Pr\u00EDncipe","code":"ST","phoneCode":"+239"},{"name":"Saudi Arabia","code":"SA","phoneCode":"+966"},{"name":"Senegal","code":"SN","phoneCode":"+221"},{"name":"Serbia","code":"RS","phoneCode":"+381"},{"name":"Seychelles","code":"SC","phoneCode":"+248"},{"name":"Sierra Leone","code":"SL","phoneCode":"+232"},{"name":"Singapore","code":"SG","phoneCode":"+65"},{"name":"Sint Maarten","code":"SX","phoneCode":"+1"},{"name":"Slovakia","code":"SK","phoneCode":"+421"},{"name":"Slovenia","code":"SI","phoneCode":"+386"},{"name":"Solomon Islands","code":"SB","phoneCode":"+677"},{"name":"Somalia","code":"SO","phoneCode":"+252"},{"name":"South Africa","code":"ZA","phoneCode":"+27"},{"name":"South Korea","code":"KR","phoneCode":"+82"},{"name":"South Sudan","code":"SS","phoneCode":"+211"},{"name":"Spain","code":"ES","phoneCode":"+34"},{"name":"Sri Lanka","code":"LK","phoneCode":"+94"},{"name":"St. Barth\u00E9lemy","code":"BL","phoneCode":"+590"},{"name":"St. Helena","code":"SH","phoneCode":"+290"},{"name":"St. Kitts & Nevis","code":"KN","phoneCode":"+1"},{"name":"St. Lucia","code":"LC","phoneCode":"+1"},{"name":"St. Martin","code":"MF","phoneCode":"+590"},{"name":"St. Pierre & Miquelon","code":"PM","phoneCode":"+508"},{"name":"St. Vincent & Grenadines","code":"VC","phoneCode":"+1"},{"name":"Sudan","code":"SD","phoneCode":"+249"},{"name":"Suriname","code":"SR","phoneCode":"+597"},{"name":"Svalbard & Jan Mayen","code":"SJ","phoneCode":"+47"},{"name":"Sweden","code":"SE","phoneCode":"+46"},{"name":"Switzerland","code":"CH","phoneCode":"+41"},{"name":"Syria","code":"SY","phoneCode":"+963"},{"name":"Taiwan","code":"TW","phoneCode":"+886"},{"name":"Tajikistan","code":"TJ","phoneCode":"+992"},{"name":"Tanzania","code":"TZ","phoneCode":"+255"},{"name":"Thailand","code":"TH","phoneCode":"+66"},{"name":"Timor-Leste","code":"TL","phoneCode":"+670"},{"name":"Togo","code":"TG","phoneCode":"+228"},{"name":"Tokelau","code":"TK","phoneCode":"+690"},{"name":"Tonga","code":"TO","phoneCode":"+676"},{"name":"Trinida
520d & Tobago","code":"TT","phoneCode":"+1"},{"name":"Tristan da Cunha","code":"TA","phoneCode":"+290"},{"name":"Tunisia","code":"TN","phoneCode":"+216"},{"name":"T\u00FCrkiye","code":"TR","phoneCode":"+90"},{"name":"Turkmenistan","code":"TM","phoneCode":"+993"},{"name":"Turks & Caicos Islands","code":"TC","phoneCode":"+1"},{"name":"Tuvalu","code":"TV","phoneCode":"+688"},{"name":"U.S. Virgin Islands","code":"VI","phoneCode":"+1"},{"name":"Uganda","code":"UG","phoneCode":"+256"},{"name":"Ukraine","code":"UA","phoneCode":"+380"},{"name":"United Arab Emirates","code":"AE","phoneCode":"+971"},{"name":"United Kingdom","code":"GB","phoneCode":"+44"},{"name":"United States","code":"US","phoneCode":"+1"},{"name":"Uruguay","code":"UY","phoneCode":"+598"},{"name":"Uzbekistan","code":"UZ","phoneCode":"+998"},{"name":"Vanuatu","code":"VU","phoneCode":"+678"},{"name":"Vatican City","code":"VA","phoneCode":"+39"},{"name":"Venezuela","code":"VE","phoneCode":"+58"},{"name":"Vietnam","code":"VN","phoneCode":"+84"},{"name":"Wallis & Futuna","code":"WF","phoneCode":"+681"},{"name":"Western Sahara","code":"EH","phoneCode":"+212"},{"name":"Yemen","code":"YE","phoneCode":"+967"},{"name":"Zambia","code":"ZM","phoneCode":"+260"},{"name":"Zimbabwe","code":"ZW","phoneCode":"+263"}],"initialPhoneFormat":{"id":0,"type":"PHONE_NUMBER","country":"US","labelLocale":"en-US","fields":[{"type":"SEPARATOR","label":"(","identifier":"LeftParen","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"1","identifier":"1","length":3,"required":false,"metadata":{}},{"type":"SEPARATOR","label":")","identifier":"RightParen","length":0,"required":false,"metadata":{}},{"type":"SEPARATOR","label":" ","identifier":"Space","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"2","identifier":"2","length":3,"required":false,"metadata":{}},{"type":"SEPARATOR","label":"-","identifier":"Dash","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"3","identifier":"3","length":14,"required":false,"metadata":{}}]},"initialNameOrder":"GIVEN_FIRST","initialAddressFormat":{"id":0,"type":"ADDRESS","country":"US","labelLocale":"en","fields":[{"type":"FIELD","label":"Address Line 1","identifier":"Line1","length":0,"required":true,"metadata":{"autocomplete":"address-line1"}},{"type":"SEPARATOR","label":"\n","identifier":"Newline","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"Address Line 2","identifier":"Line2","length":0,"required":false,"metadata":{"autocomplete":"address-line2"}},{"type":"SEPARATOR","label":"\n","identifier":"Newline","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"City","identifier":"City","length":0,"required":true,"metadata":{"autocomplete":"address-level2"}},{"type":"SEPARATOR","label":",","identifier":"Comma","length":0,"required":false,"metadata":{}},{"type":"SEPARATOR","label":" ","identifier":"Space","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"State","identifier":"State","length":0,"required":true,"metadata":{"autocomplete":"address-level1"}},{"type":"SEPARATOR","label":" ","identifier":"Space","length":0,"required":false,"metadata":{}},{"type":"FIELD","label":"ZIP Code","identifier":"Zip","length":0,"required":true,"metadata":{"autocomplete":"postal-code"}}]}},"localizedStrings":{"validation":{"noValidSelection":"A valid selection must be made.","invalidUrl":"Must be a valid URL.","stringTooLong":"Value should have a length no longer than {0}.","containsInvalidKey":"{0} contains an invalid key.","invalidTwitterUsername":"Must be a valid Twitter username.","valueOutsideRange":"Value must be in the range {0} to {1}.","invalidPassword":"Passwords should not contain whitespace.","missingRequiredSubfields":"{0} is missing required subfields: {1}","invalidCurrency":"Currency value should be formatted like 1234 or 123.99.","invalidMapSize":"Value should contain exactly {0} elements.","subfieldsRequired":"All fields in {0} are required.","formSubmissionFailed":"Form submission failed. Review the following information: {0}.","invalidCountryCode":"Country code should have an optional plus and up to 4 digits.","invali
520dDate":"This is not a real date.","required":"{0} is required.","invalidStringLength":"Value should be {0} characters long.","invalidEmail":"Email addresses should follow the format [email protected].","invalidListLength":"Value should be {0} elements long.","allEmpty":"Please fill out at least one form field.","missingRequiredQuestion":"Missing a required question.","invalidQuestion":"Contained an invalid question.","captchaFailure":"Captcha validation failed. Please try again.","stringTooShort":"Value should have a length of at least {0}.","invalid":"{0} is not valid.","formErrors":"Form Errors","containsInvalidValue":"{0} contains an invalid value.","invalidUnsignedNumber":"Numbers must contain only digits and no other characters.","invalidName":"Valid names contain only letters, numbers, spaces, ', or - characters."},"submit":"Submit","status":{"title":"{@} Block","learnMore":"Learn more"},"name":{"firstName":"First Name","lastName":"Last Name"},"lightbox":{"openForm":"Open Form"},"likert":{"agree":"Agree","stronglyDisagree":"Strongly Disagree","disagree":"Disagree","stronglyAgree":"Strongly Agree","neutral":"Neutral"},"time":{"am":"AM","second":"Second","pm":"PM","minute":"Minute","amPm":"AM/PM","hour":"Hour"},"notFound":"Form not found.","date":{"yyyy":"YYYY","year":"Year","mm":"MM","day":"Day","month":"Month","dd":"DD"},"phone":{"country":"Country","number":"Number","prefix":"Prefix","areaCode":"Area Code","line":"Line"},"submitError":"Unable to submit form. Please try again later.","address":{"stateProvince":"State/Province","country":"Country","zipPostalCode":"Zip/Postal Code","address2":"Address 2","address1":"Address 1","city":"City"},"email":{"signUp":"Sign up for news and updates"},"required":"(required)","invalidData":"Invalid form data."}}};</script>
520<script type="text/javascript">SQUARESPACE_ROLLUPS = {};</script>
vendor: 1 bytes, line 520
520
521<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/visitor-site-error-reporter-857906e2f8b59eb7-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-visitor_site_error_reporter');</script>
vendor: 1 bytes, line 521
521
522<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/visitor-site-error-reporter-857906e2f8b59eb7-min.en-US.js" ></script>
522<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/extract-css-runtime-5fd80ebb4c56858a-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-extract_css_runtime');</script>
vendor: 1 bytes, line 522
522
523<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/extract-css-runtime-5fd80ebb4c56858a-min.en-US.js" ></script>
523<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/extract-css-moment-js-vendor-a5cfdec1ae227f33-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-extract_css_moment_js_vendor');</script>
vendor: 1 bytes, line 523
523
524<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/extract-css-moment-js-vendor-a5cfdec1ae227f33-min.en-US.js" ></script>
524<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/cldr-resource-pack-2c5e18cab442f0cf-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-cldr_resource_pack');</script>
vendor: 1 bytes, line 524
524
525<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/cldr-resource-pack-2c5e18cab442f0cf-min.en-US.js" ></script>
525<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/common-vendors-stable-784b947826b4c445-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-common_vendors_stable');</script>
vendor: 1 bytes, line 525
525
526<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/common-vendors-stable-784b947826b4c445-min.en-US.js" ></script>
526<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/common-vendors-aedb5cee3a9dd458-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-common_vendors');</script>
vendor: 1 bytes, line 526
526
527<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/common-vendors-aedb5cee3a9dd458-min.en-US.js" ></script>
527<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/common-f3b0ba49e516a794-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-common');</script>
vendor: 1 bytes, line 527
527
528<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/common-f3b0ba49e516a794-min.en-US.js" ></script>
528<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/commerce-e0976e549007655a-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-commerce');</script>
vendor: 1 bytes, line 528
528
529<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/commerce-e0976e549007655a-min.en-US.js" ></script>
529<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].css = ["//assets.squarespace.com/universal/styles-compressed/commerce-d50e5960dc9fd059-min.en-US.css"]; })(SQUARESPACE_ROLLUPS, 'squarespace-commerce');</script>
529 530<link rel="stylesheet" type="text/css" href="//assets.squarespace.com/universal/styles-compressed/commerce-d50e5960dc9fd059-min.en-US.css">
530<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].js = ["//assets.squarespace.com/universal/scripts-compressed/user-account-core-d6554b6cf16980c6-min.en-US.js"]; })(SQUARESPACE_ROLLUPS, 'squarespace-user_account_core');</script>
vendor: 1 bytes, line 530
530
531<script crossorigin="anonymous" src="//assets.squarespace.com/universal/scripts-compressed/user-account-core-d6554b6cf16980c6-min.en-US.js" ></script>
531<script>(function(rollups, name) { if (!rollups[name]) { rollups[name] = {}; } rollups[name].css = ["//assets.squarespace.com/universal/styles-compressed/user-account-core-bf8b0e0129e2a7ba-min.en-US.css"]; })(SQUARESPACE_ROLLUPS, 'squarespace-user_account_core');</script>
531 532<link rel="stylesheet" type="text/css" href="//assets.squarespace.com/universal/styles-compressed/user-account-core-bf8b0e0129e2a7ba-min.en-US.css"><link rel="stylesheet" type="text/css" href="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.newsletter/58d67523-2cf5-42f9-95a4-1e436b9263fe_104/website.components.newsletter.styles.css"/><link rel="stylesheet" type="text/css" href="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.code/cfd3d1e7-62c0-46c2-9802-ba86767fc9b2_986/website.components.code.styles.css"/>
532<script src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.code/cfd3d1e7-62c0-46c2-9802-ba86767fc9b2_986/website.components.code.visitor.js"></script>
532<script src="https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.newsletter/58d67523-2cf5-42f9-95a4-1e436b9263fe_104/website.components.newsletter.visitor.js"></script>
532<script>Squarespace.load(window);</script>
vendor: 1 bytes, line 532
532
533<script type="application/ld+json">{"url":"https://www.venndesign.co","name":"Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture","description":"<p class=\"\" style=\"white-space:pre-wrap;\">Build a Movement Rich Environment in your home and office. Proudly manufactured in Dallas, TX, USA. Created by Tyler Benner.</p>","image":"//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg","@context":"http://schema.org","@type":"WebSite"}</script>
533<script type="application/ld+json">{"address":"Dallas TX\nUnited States","image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/t/6414d49512ec880fa33a54cf/1782590926966/","openingHours":", , , , , , ","@context":"http://schema.org","@type":"LocalBusiness"}</script>
533<link rel="stylesheet" type="text/css" href="https://static1.squarespace.com/static/sitecss/5844c859d1758e37a12febc4/577/55f0aac0e4b0f0a5b7e0b22e/5844c859d1758e37a12febca/360/site.css?nocustom=true"/><link rel="stylesheet" type="text/css" href="https://static1.squarespace.com/static/custom-css/5844c859d1758e37a12febc4/5844c859d1758e37a12febca/64/custom.css"/><!-- Mailchimp Popup -->
534<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/706f81b7439c291b35c0729f9/12e9d7f4b60638411e32ba54a.js");</script>
534 535 536 537<!-- Google Tag Manager -->
538<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://load.server.venndesign.co/zjqqydcz.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-PSQHM7J');</script>
538 539<!-- End Google Tag Manager --> 540 541 542<!-- Google Tag Manager (noscript) --> 543<noscript><iframe src="https://load.server.venndesign.co/ns.html?id=GTM-PSQHM7J" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 544<!-- End Google Tag Manager (noscript) --> 545 546 547
548<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script>
vendor: 1 bytes, line 548
548
549<script src="/s/twcsl.js"></script>
549 550 551 552<!-- Mini Cart Square Refresh --> 553<link rel="stylesheet" href="https://www.squarerefresh.xyz/assets/plugins/slide-out/css/mini-cart.min.css"> 554<!-- Mini Cart Square Refresh --> 555 556 557<!-- FAQs Square Refresh --> 558<link rel="stylesheet" href="https://www.squarerefresh.xyz/assets/plugins/facts/css/facts.min.css"> 559<!-- FAQs Square Refresh --> 560 561 562 563<!-- Slides Square Refresh --> 564<link rel="stylesheet" href="https://www.squarerefresh.xyz/assets/plugins/slides/css/slides.min.css"> 565<!-- Slides Square Refresh --> 566 567 568 569<!-- 570 571 begin store price change 572 573 License : < https://bit.ly/3F8sn8W > 574 575 Version : 0.5.0 576 577 SS Versions : 7.1, 7.0 578 579 v7.1 580 Fluid 581 Engine 582 Compatible : Not Applicable 583 584 v7.0 Templates : Brine ( Aria, Blend, Burke, Cacao, Clay, Fairfield, Feed, 585 Foster, Greenwich, Hatch, Heights, Hunter, Hyde, Impact, 586 Jaunt, Juke, Keene, Kin, Lincoln, Maple, Margot, Marta, 587 Mentor, Mercer, Miller, Mojave, Moksha, Motto, Nueva, Pedro, 588 Pursuit, Rally, Rover, Royce, Sofia, Sonora, Stella, Thorne, 589 Vow, Wav, West ) 590 591 Five 592 593 Montauk ( Julia, Kent, Om ) 594 595 your template is not listed? then it is not currently 596 supported 597 598 Dependancies : twcsl < https://bit.ly/3JSggyu > 599 600 Notes : the code is comprised of several tags all of which must be 601 present for the effect to work 602 603 the code adds a data-twc-spc-mo attribute with value of 604 false on the element with class product-price. by changing 605 the attribute value to true you will cause a mutation which 606 will cause the search replace text to run. the attribute 607 value will be set to false after the search replace text run 608 609 the code fails silently. poorly formed regular expressions 610 will stop the processing of search/replace text pairs 611 612 By : Thomas Creedon < http://www.tomsWeb.consulting/ > 613 614 --> 615 616
616<script> 617 618 if ( window.twc == undefined ) window.twc = { }; 619 620 twc.x8af7a0e8 = { 621 622 searchReplaceText : { 623 624 /* 625 626 the format of each line is a search text and a replacement text or 627 replacement text function 628 629 if the text has single quotes in them then put a backslash before 630 the single quotes. example: it's becomes it\'s 631 632 search text can be a string or a regular expression, backslashes 633 need to be escaped in regular expressions 634 635 replacement text can use regular expression grouping syntax when the 636 search text is a regular expression 637 638 replacement text functions need to accept node, isDetail, text, and 639 searchText parameters. the function must return replacement text or a 640 boolean. true tells the code to continue to the next search/replace 641 pair without making the replacement. false means skip all further 642 replacements. your function needs to be defined before this code runs 643 644 following are example lines. copy an example line below and paste 645 after the example lines. remove '// ' at beginning of pasted line. 646 repeat for as many times as needed 647 648 */ 649 650 // search text and replacment text example line follows 651 652 /* remove decimal from price, using regular expression, backslash must 653 be escaped with \, the replacement text uses special replacement 654 patterns */ 655 656 '/(\\d+(?:,\\d{3})*)(?:\\.\\d{2})?/' : '$1', 657 658 // '[enter search text here between single quotes]' : '[enter replacement text here between single quotes]', 659 660 // search text and replacment text function example line follows 661 662 // '[enter search text here between single quotes]' : [enter replacement text function name here], 663 664 }, 665 666 afterpay : false, // change afterpay prices, use false or true 667 668 }; 669 670 </script>
670 671 672 <!-- do not change anything below, there be the borg here --> 673 674 <style> 675 676 .ProductItem .ProductItem-details .product-price, 677 .ProductItem .ProductItem-details .afterpayString 678 679 { 680 681 visibility : hidden; 682 683 } 684 685 body.twc-spc-show .ProductItem .ProductItem-details .product-price, 686 body.twc-spc-show .ProductItem .ProductItem-details .afterpayString 687 688 { 689 690 visibility : visible; 691 692 } 693 694 </style> 695 696
696<script> 697 698 ( ( ) => { 699 700 // bail if no mutation observer available 701 702 if ( ! ( 'MutationObserver' in window ) ) return; 703 704 const initialize = ( ) => { 705 706 const isDetail = twcsl.page.store.detail.is; 707 708 const options = twc.x8af7a0e8; 709 710 const keys = Object.keys ( options.searchReplaceText ); 711 712 const changeText = ( node ) => { 713 714 const walker = 715 716 document.createTreeWalker ( node, NodeFilter.SHOW_TEXT ); 717 718 while ( walker.nextNode ( ) ) { 719 720 const node = walker.currentNode; 721 722 let t = node.data; 723 724 $.each ( keys, function ( i, s ) { 725 726 const m = s.match ( /\/(.+)\/(.*)/ ); 727 728 let r = options.searchReplaceText [ s ]; 729 730 if ( m !== null ) { // m appears to be a regex pattern 731 732 try { 733 734 s = new RegExp ( m [ 1 ], m [ 2 ] ); 735 736 } catch { 737 738 return; // bail on error 739 740 } 741 742 if ( ! s.test ( t ) ) return true; // continue if text no match 743 744 } 745 746 if ( typeof r == 'function' ) { 747 748 r = r ( node, isDetail, t, s ); 749 750 if ( typeof r == 'boolean' ) return r; 751 752 } 753 754 t = t.replace ( s, r ); 755 756 } ); 757 758 node.data = t; 759 760 } 761 762 } 763 764 const $productPrices = $( '.product-price' ) 765 766 .each ( function ( ) { 767 768 changeText ( this ); 769 770 } ); 771 772 const $afterpayPrices = $( '.afterpayString' ); 773 774 if ( options.afterpay ) 775 776 $afterpayPrices.each ( function ( ) { 777 778 changeText ( this ); 779 780 } ); 781 782 if ( ! isDetail ) return; // bail if not detail 783 784 const attribute = 'data-twc-spc-mo'; 785 786 const observer = new MutationObserver ( mutations => { 787 788 $.each ( mutations, function ( ) { 789 790 // continue if no added nodes 791 792 if ( ! this.addedNodes.length ) return true; 793 794 const target = this.target; 795 796 // previous change was forced 797 798 if ( this.attributeName == attribute ) 799 800 if ( $( target ).attr ( attribute ) == 'true' ) 801 802 $( target ).attr ( attribute, 'false' ); 803 804 else if ( this.oldValue == 'true' ) 805 806 return true; 807 808 observer.disconnect ( ); 809 810 changeText ( target ); 811 812 pricesObserve ( ); 813 814 } ); 815 816 } ); 817 818 const pricesObserve = ( ) => { 819 820 // listen for changes in product prices 821 822 $productPrices.each ( function ( ) { 823 824 observer.observe ( this, { 825 826 attributeFilter : [ attribute ], 827 828 attributeOldValue : true, 829 830 childList : true 831 832 } ); 833 834 } ); 835 836 // listen for changes in afterpay prices 837 838 if ( options.afterpay ) 839 840 $afterpayPrices.each ( function ( ) { 841 842 observer.observe ( this, { 843 844 attributeFilter : [ attribute ], 845 846 attributeOldValue : true, 847 848 childList : true, 849 850 subtree : true 851 852 } ); 853 854 } ); 855 856 }; 857 858 pricesObserve ( ); 859 860 $( 'body' ).addClass ( 'twc-spc-show' ); 861 862 }; 863 864 switch ( true ) { 865 866 case twcsl.ss.is71 : 867 868 $( initialize ); 869 870 break; 871 872 case twcsl.ss.is70 : 873 874 Squarespace.onInitialize ( Y, initialize ); 875 876 break; 877 878 } 879 880 } ) ( ); 881 882 </script>
882 883 884 <!-- end store price change --> 885 <!-- end store price change --> 886 <!-- end store price change --> 887 <!-- end store price change --> 888 <!-- end store price change --> 889 <!-- end store price change --> 890 <!-- end store price change --> 891 <!-- end store price change --> 892 <!-- end store price change --> 893 <!-- end store price change --> 894 <!-- end store price change --> 895 <!-- end store price change --> 896 897 898 899 900 901 902 903 904 905
906<script type="application/ld+json"> 907 { 908 "@context": "http://schema.org", 909 "@type": "Organization", 910 "name": "Venn Design", 911 "url": "http://www.venndesign.co", 912 "address": "1214 Sullivan Drive Cedar Hill Texas USA", 913 "sameAs": [ 914 "https://www.facebook.com/venndesignco", 915 "https://www.instagram.com/venndesign", 916 "https://www.twitter.com/venndesignco", 917 "https://www.pinterest.com/venndesign/", 918 "https://www.linkedin.com/company/venn-design-co" 919 ] 920 } 921</script>
921 922 923 924<!â Plugin Wiremo Integration â>
925<script src="https://storage.googleapis.com/staticprod/plugin-wiremo-integration.js"> 926</script>
vendor: 1 bytes, line 926
926
927<script>pluginWiremoIntegration();</script>
927 928<!â End Plugin Wiremo Integration â> 929 930<!-- Start of Wiremo script --> 931
931<script> 932 (function () { 933 var d = document, 934 s = d.createElement('script'); 935 s.src = 'https://wapi.wiremo.co/v1/attach/carousel/62e199c62827376df077af7e'; 936 (d.head || d.body).appendChild(s); 937 })(); 938 </script>
938 939<!-- End of Wiremo Script --> 940 941<!-- Peach's Affiliate Programs -->
942<script src="https://peachs.co/embeds/affinity.min.js" data-program-id="66"></script>
942 943<!-- END Peach's Affiliate Programs --> 944 945 946<!-- Pinterest Base Code -->
947<script type="text/javascript"> 948!function(e){if(!window.pintrk){window.pintrk=function() 949{window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var 950n=window.pintrk;n.queue=[],n.version="3.0";var 951t=document.createElement("script");t.async=!0,t.src=e;var 952r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r)}} 953("https://s.pinimg.com/ct/core.js"); 954 955pintrk('load','549761818334', { em: '{customerEmailAddress}', }); 956pintrk('page'); 957</script>
957 958<noscript> 959<img height="1" width="1" style="display:none;" alt="" 960src="https://ct.pinterest.com/v3/?tid=549761818334&noscript=1" /> 961</noscript> 962<!-- End Pinterest Base Code --> 963 964 965 966<!-- Pinterest Pixel - Tracking clicks on Buttons -->
967<script> 968 function ptTrackingClicks() { 969 // Add to Cart 970 var cartButton = document.querySelector('.sqs-add-to-cart-button'); 971 if (cartButton) { 972 cartButton.addEventListener('click', function() { 973 pintrk('track', 'AddToCart',{ 974 product_id: '12345' 975 }); 976 }, false); 977 } 978 } 979 document.addEventListener('DOMContentLoaded', ptTrackingClicks); 980</script>
980 981<!-- end Pinterest Pixel - Tracking clicks on Buttons --> 982 983 984 985 986 987 988 989 990 991 992<link rel="preconnect" href="https://venn-motion.pages.dev" crossorigin> 993<link rel="dns-prefetch" href="//venn-motion.pages.dev"> 994<link rel="preload" href="https://venn-motion.pages.dev/motion-textures.js?v=3" as="script"> 995<link rel="preload" href="https://venn-motion.pages.dev/motion.bundle.js?v=3" as="script">
995<script>Static.COOKIE_BANNER_CAPABLE = true;</script>
vendor: 64 bytes, lines 995-996
995 996<script async src="https://www.googletagmanager.com/gtag/js?id=
996UA-38341504-1
vendor: 11 bytes, line 996
996"></script>
996<script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('set', 'developer_id.dZjQwMz', true);gtag('config', 'UA-38341504-1');</script>
996<!-- End of Squarespace Headers --> 997 </head> 998 <body id="" class="tweak-site-width-option-full-width tweak-icon-weight-light tweak-site-ajax-loading-bar-show ancillary-header-top-left-layout-stacked ancillary-header-top-center-layout-stacked ancillary-header-top-right-layout-horizontal ancillary-header-bottom-left-layout-horizontal ancillary-header-bottom-center-layout-stacked ancillary-header-bottom-right-layout-horizontal ancillary-header-branding-position-top-center ancillary-header-tagline-position-top-left ancillary-header-primary-nav-position-top-left ancillary-header-secondary-nav-position-top-right ancillary-header-social-position-hide ancillary-header-search-position-hide ancillary-header-cart-position-top-right ancillary-header-account-position-hide tweak-header-primary-nav-hover-style-active tweak-header-primary-nav-button-style-solid tweak-header-primary-nav-button-shape-square tweak-header-secondary-nav-inherit-styles tweak-header-secondary-nav-hover-style-active tweak-header-secondary-nav-button-style-solid tweak-header-secondary-nav-button-shape-square tweak-header-search-style-underlined tweak-header-search-placeholder-show tweak-header-cart-style-text tweak-header-account-style-text tweak-index-nav-style-none tweak-index-nav-position-right tweak-index-nav-text-show tweak-index-page-fullscreen-none tweak-index-page-scroll-indicator-none tweak-index-page-scroll-indicator-icon-arrow tweak-index-page-scroll-indicator-icon-weight-hairline tweak-index-gallery-layout-packed tweak-index-gallery-spacing-sides-show tweak-index-gallery-spacing-top-bottom-show tweak-index-gallery-fixed-height tweak-index-gallery-apply-bottom-spacing tweak-index-gallery-hover-style-plain tweak-index-gallery-controls-small-arrows tweak-index-gallery-controls-icon-weight-hairline tweak-index-gallery-indicators-lines tweak-index-gallery-autoplay-enable tweak-index-gallery-transition-fade tweak-index-gallery-content-position-top-left tweak-index-gallery-content-text-alignment-left tweak-footer-show tweak-footer-layout-columns tweak-footer-layout-columns-auto tweak-footer-stacked-alignment-left tweak-footer-business-info-show tweak-mobile-bar-top-fixed ancillary-mobile-bar-branding-position-top-left ancillary-mobile-bar-menu-icon-position-top-right tweak-mobile-bar-menu-icon-hamburger ancillary-mobile-bar-search-icon-position-hide ancillary-mobile-bar-cart-position-bottom-right tweak-mobile-bar-cart-style-text ancillary-mobile-bar-account-position-hide tweak-mobile-bar-account-style-text tweak-mobile-overlay-slide-origin-left tweak-mobile-overlay-close-show tweak-mobile-overlay-menu-primary-button-style-solid tweak-mobile-overlay-menu-primary-button-shape-square tweak-mobile-overlay-menu-secondary-button-style-solid tweak-mobile-overlay-menu-secondary-button-shape-square tweak-quote-block-alignment-left tweak-social-icons-style-solid tweak-social-icons-shape-square hide-album-share-link tweak-blog-meta-primary-none tweak-blog-meta-secondary-none tweak-blog-list-style-grid tweak-blog-list-separator-show tweak-blog-list-alignment-left tweak-blog-list-item-image-show tweak-blog-list-item-image-aspect-ratio-grid-11-square tweak-blog-list-item-image-aspect-ratio-stacked-11-square tweak-blog-list-item-title-show tweak-blog-list-item-body-show tweak-blog-list-item-readmore-inline tweak-blog-list-item-meta-position-below-title tweak-blog-list-pagination-link-label-show tweak-blog-list-pagination-link-icon-s
998how tweak-blog-list-pagination-link-icon-weight-light tweak-blog-item-alignment-center tweak-blog-item-meta-position-below-title tweak-blog-item-share-position-below-content tweak-blog-item-pagination-link-icon-show tweak-blog-item-pagination-link-label-show tweak-blog-item-pagination-link-meta-hide tweak-blog-item-pagination-link-icon-weight-hairline event-disable-item-pages event-show-past-events event-thumbnails event-thumbnail-size-32-standard event-date-label event-date-label-time event-list-show-cats event-list-date event-list-time event-list-address event-list-icalgcal-links event-excerpts event-item-back-link gallery-design-slideshow aspect-ratio-auto lightbox-style-dark gallery-navigation-bullets gallery-info-overlay-show-on-hover gallery-aspect-ratio-32-standard gallery-arrow-style-no-background gallery-transitions-fade gallery-show-arrows gallery-auto-crop tweak-product-list-image-aspect-ratio-34-three-four-vertical tweak-product-list-item-hover-behavior-show-alternate-image tweak-product-list-meta-position-under tweak-product-list-mobile-meta-position-overlay tweak-product-list-meta-alignment-under-left tweak-product-list-meta-alignment-overlay-bottom-left tweak-product-list-show-title tweak-product-list-show-price tweak-product-list-filter-display-top tweak-product-list-filter-alignment-left tweak-product-item-nav-show-none tweak-product-item-nav-pagination-style-previousnext tweak-product-item-nav-breadcrumb-alignment-left tweak-product-item-nav-pagination-alignment-right tweak-product-item-gallery-position-left tweak-product-item-gallery-design-slideshow tweak-product-item-gallery-aspect-ratio-11-square tweak-product-item-gallery-thumbnail-alignment-left tweak-product-item-details-alignment-left tweak-product-item-details-show-title tweak-product-item-details-show-price tweak-product-item-details-show-excerpt tweak-product-item-details-excerpt-position-below-add-to-cart-button tweak-product-item-details-show-variants tweak-product-item-details-show-quantity tweak-product-item-details-options-style-square tweak-product-item-details-show-add-to-cart-button tweak-product-item-details-add-to-cart-button-style-solid tweak-product-item-details-add-to-cart-button-shape-square tweak-product-item-details-add-to-cart-button-padding-medium tweak-product-item-image-zoom-enabled tweak-product-item-image-zoom-behavior-click tweak-product-item-lightbox-enabled tweak-related-products-image-aspect-ratio-11-square tweak-related-products-meta-alignment-under-center tweak-product-badge-style-rectangle tweak-product-badge-position-bottom-right tweak-product-badge-inset-floating newsletter-style-custom hide-opentable-icons opentable-style-dark small-button-style-solid small-button-shape-square medium-button-style-solid medium-button-shape-rounded large-button-style-solid large-button-shape-rounded image-block-poster-text-alignment-center image-block-card-dynamic-font-sizing image-block-card-content-position-center image-block-card-text-alignment-left image-block-overlap-content-position-center image-block-overlap-text-alignment-left image-block-collage-dynamic-font-sizing image-block-collage-content-position-top image-block-collage-text-alignment-left image-block-stack-dynamic-font-sizing image-block-stack-text-alignment-left button-style-solid button-corner-style-square tweak-product-quick-view-button-style-floating tweak-product-quick-view-button-position-bottom tweak-product-quick-view-lightbox-excerpt-display-truncate tweak-product-quick-view-lightbox-show-arrows tweak-product-quick-view-lightbox-show-close-button tweak-product-quick-view-lightbox-controls-weight-medium tweak-share-buttons-style-icon-only tweak-share-buttons-icons-show tweak-share-buttons-labels-show tweak-share-buttons-counts-show native-currency-code-usd mobile-style-available sqs-has-custom-cart has-logo-image has-social has-cart enable-load-effects has-primary-nav has-footer-nav has-user-accounts" data-controller="HashManager, SiteLoader, MobileClassname"> 999 1000 <div class="Loader"></div> 1001 1002 <div class="Mobile" data-nc-base="mobile-bar" data-controller="AncillaryLayout"> 1003 <div class="Mobile-bar Mobile-bar--top" data-nc-group="top" data-controller="MobileOffset"> 1004 1005 <div data-nc-container="top-left"> 1006 <a href="/" class="Mobile-bar-branding" data-nc-element="branding" data-content-field="site-title"> 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 <img src="//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg" alt="Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture" sizes="240px" class="Mobile-bar-branding-logo" style="display:block" srcset="//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=100w 100w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=300w 300w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=500w 500w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=750w 750w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1000w 1000w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w 1500w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs"> 1026 1027 1028 1029 1030 </a> 1031 </div> 1032 <div data-nc-container="top-center"></div> 1033 <div data-nc-container="top-right"></div> 1034 </div> 1035 <div class="Mobile-bar Mobile-bar--bottom" data-nc-group="bottom" data-controller="MobileOffset"> 1036 <div data-nc-container="bottom-left"> 1037 <button 1038 class="Mobile-bar-menu" 1039 data-nc-element="menu-icon" 1040 data-controller-overlay="menu" 1041 data-controller="MobileOverlayToggle" 1042 aria-label="Open navigation menu" 1043 > 1044 <svg class="Icon Icon--hamburger" viewBox="0 0 24 18"> 1045 <use xlink:href="/assets/ui-icons.svg#hamburger-icon--even" class="use--even"></use> 1046 <use xlink:href="/assets/ui-icons.svg#hamburger-icon--odd" class="use--odd"></use> 1047 </svg> 1048 <svg class="Icon Icon--hotdog" viewBox="0 0 24 14"> 1049 <use xlink:href="/assets/ui-icons.svg#hotdog-icon--even" class="use--even"></use> 1050 <use xlink:href="/assets/ui-icons.svg#hotdog-icon--odd" class="use--odd"></use> 1051 </svg> 1052 <svg class="Icon Icon--plus" viewBox="0 0 20 20"> 1053 <use xlink:href="/assets/ui-icons.svg#plus-icon--even" class="use--even"></use> 1054 <use xlink:href="/assets/ui-icons.svg#plus-icon--odd" class="use--odd"></use> 1055 </svg> 1056 <svg class="Icon Icon--dots-horizontal" viewBox="0 0 25 7"> 1057 <use xlink:href="/assets/ui-icons.svg#dots-horizontal-icon--even" class="use--even"></use> 1058 <use xlink:href="/assets/ui-icons.svg#dots-horizontal-icon--odd" class="use--odd"></use> 1059 </svg> 1060 <svg class="Icon Icon--dots-vertical" viewBox="0 0 7 25"> 1061 <use xlink:href="/assets/ui-icons.svg#dots-vertical-icon--even" class="use--even"></use> 1062 <use xlink:href="/assets/ui-icons.svg#dots-vertical-icon--odd" class="use--odd"></use> 1063 </svg> 1064 <svg class="Icon Icon--squares-horizontal" viewBox="0 0 25 7"> 1065 <use xlink:href="/assets/ui-icons.svg#squares-horizontal-icon--even" class="use--even"></use> 1066 <use xlink:href="/assets/ui-icons.svg#squares-horizontal-icon--odd" class="use--odd"></use> 1067 </svg>
1068 <svg class="Icon Icon--squares-vertical" viewBox="0 0 7 25"> 1069 <use xlink:href="/assets/ui-icons.svg#squares-vertical-icon--even" class="use--even"></use> 1070 <use xlink:href="/assets/ui-icons.svg#squares-vertical-icon--odd" class="use--odd"></use> 1071 </svg> 1072 </button> 1073 </div> 1074 <div data-nc-container="bottom-center"> 1075 1076 <a href="/cart" class="Cart sqs-custom-cart" data-nc-element="cart" data-test="template-cart"> 1077 <span class="Cart-inner"> 1078 <span class="Cart-label">Cart</span> 1079 1080 <svg class="Icon Icon--bag-alt" viewBox="0 0 28 28"> 1081 <use class="use--odd" xlink:href="/assets/ui-icons.svg#bag-icon-alt--odd"></use> 1082 <use class="use--even" xlink:href="/assets/ui-icons.svg#bag-icon-alt--even"></use> 1083 </svg> 1084 <svg class="Icon Icon--bag" viewBox="0 0 34 38"> 1085 <use class="use--odd" xlink:href="/assets/ui-icons.svg#bag-icon--odd"></use> 1086 <use class="use--even" xlink:href="/assets/ui-icons.svg#bag-icon--even"></use> 1087 </svg> 1088 <svg class="Icon Icon--cart-alt" viewBox="0 0 28 28"> 1089 <use class="use--odd" xlink:href="/assets/ui-icons.svg#cart-icon-alt--odd"></use> 1090 <use class="use--even" xlink:href="/assets/ui-icons.svg#cart-icon-alt--even"></use> 1091 </svg> 1092 <svg class="Icon Icon--cart" viewBox="0 0 31 26"> 1093 <use class="use--odd" xlink:href="/assets/ui-icons.svg#cart-icon--odd"></use> 1094 <use class="use--even" xlink:href="/assets/ui-icons.svg#cart-icon--even"></use> 1095 </svg> 1096 1097 <span class="sqs-cart-quantity">0</span> 1098 </span> 1099 </a> 1100 1101 </div> 1102 <div data-nc-container="bottom-right"> 1103 1104 <div class="Mobile-bar-account" data-nc-element="account" data-controller="UserAccountLink"> 1105 <button class="user-accounts-text-link"> 1106 <span class="unauth">Sign In</span> 1107 <span class="auth">My Account</span> 1108 </button> 1109 <div class="user-accounts-icon"> 1110 <svg class="Icon Icon--user-accounts" viewBox="0 0 28 28"> 1111 <use class="use--odd" xlink:href="/assets/ui-icons.svg#accounts-icon--odd"></use> 1112 <use class="use--even" xlink:href="/assets/ui-icons.svg#accounts-icon--even"></use> 1113</svg> 1114 1115 </div> 1116 </div> 1117 1118 <a href="/search" class="Mobile-bar-search" data-nc-element="search-icon" aria-label="Search"> 1119 <svg class="Icon Icon--search" viewBox="0 0 20 20"> 1120 <use xlink:href="/assets/ui-icons.svg#search-icon"></use> 1121 </svg> 1122 </a> 1123 </div> 1124 </div> 1125 1126 <div class="Mobile-overlay"> 1127 <div class="Mobile-overlay-menu" data-controller="MobileOverlayFolders"> 1128 <div class="Mobile-overlay-menu-main"> 1129 <nav class="Mobile-overlay-nav Mobile-overlay-nav--primary" data-content-field="navigation"> 1130 1131 1132 1133 1134 1135 1136 <a href="/store" class="Mobile-overlay-nav-item"> 1137 Store 1138 </a> 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 <a href="/philosophy" class="Mobile-overlay-nav-item"> 1150 Philosophy 1151 </a> 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 <a href="/blog" class="Mobile-overlay-nav-item"> 1162 Blog 1163 </a> 1164 1165 1166 1167 1168 1169 1170 1171 1172 <a href="/contact" class="Mobile-overlay-nav-item"> 1173 Contact 1174 </a> 1175 1176 1177 1178 1179 1180 1181 </nav> 1182 <nav class="Mobile-overlay-nav Mobile-overlay-nav--secondary" data-content-field="navigation"> 1183 1184 </nav> 1185 </div> 1186 <div class="Mobile-overlay-folders" data-content-field="navigation"> 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 </div> 1198 </div> 1199 <button class="Mobile-overlay-close" data-controller="MobileOverlayToggle" aria-label="Close navigation menu"> 1200 <svg class="Icon Icon--close" viewBox="0 0 16 16"> 1201 <use xlink:href="/assets/ui-icons.svg#close-icon"></use> 1202 </svg> 1203 </button> 1204 <div class="Mobile-overlay-back" data-controller="MobileOverlayToggle"></div> 1205 </div> 1206</div> 1207 1208 1209 <div class="Parallax-host-outer"> 1210 <div class="Parallax-host" data-parallax-host> 1211 1212 1213 1214 1215 1216 1217 1218 </div> 1219 </div> 1220 1221 <div class="Site" data-nc-base="header" data-controller="AncillaryLayout"> 1222 <div class="sqs-announcement-bar-dropzone"></div> 1223 1224 <header class="Header Header--top"> 1225 <div class="Header-inner Header-inner--top" data-nc-group="top"> 1226 <div data-nc-container="top-left"> 1227 1228 <div class="Header-search" data-nc-element="search"> 1229 <form class="Header-search-form" action="/search" method="get" role="search"> 1230 <input class="Header-search-form-input" name="q" type="text" spellcheck="false" value="" autocomplete="off" placeholder="Search" aria-label="Search"/> 1231 <button class="Header-search-form-submit" type="submit" data-test="template-search" aria-label="Search"> 1232 <svg class="Icon Icon--search--small" viewBox="0 0 15 15"> 1233 <use xlink:href="/assets/ui-icons.svg#search-icon--small"></use> 1234 </svg> 1235 <svg class="Icon Icon--search" viewBox="0 0 20 20"> 1236 <use xlink:href="/assets/ui-icons.svg#search-icon"></use> 1237 </svg> 1238 </button> 1239 </form> 1240 </div> 1241 1242 </div> 1243 <div data-nc-container="top-center"> 1244 1245 <div class="Header-account" data-nc-element="account" data-controller="UserAccountLink"> 1246 <button class="user-accounts-text-link">
1247 <span class="unauth">Sign In</span> 1248 <span class="auth">My Account</span> 1249 </button> 1250 <div class="user-accounts-icon"> 1251 <svg class="Icon Icon--user-accounts" viewBox="0 0 28 28"> 1252 <use class="use--odd" xlink:href="/assets/ui-icons.svg#accounts-icon--odd"></use> 1253 <use class="use--even" xlink:href="/assets/ui-icons.svg#accounts-icon--even"></use> 1254</svg> 1255 1256 </div> 1257 </div> 1258 1259 1260 <div class="Header-social" data-nc-element="social"> 1261 1262 <nav class="SocialLinks" data-content-field="connected-accounts"> 1263 <div class="SocialLinks-inner"> 1264 <a href="https://www.facebook.com/venndesignco" target="_blank" class="SocialLinks-link facebook" style=""> 1265 <div> 1266 <svg class="SocialLinks-link-svg" viewBox="0 0 64 64"> 1267 1268 <use class="SocialLinks-link-icon" xlink:href="#facebook-icon"></use> 1269 <use class="SocialLinks-link-mask" xlink:href="#facebook-mask"></use> 1270 </svg> 1271 </div> 1272 </a><a href="http://www.instagram.com/venndesign" target="_blank" class="SocialLinks-link instagram-unauth" style=""> 1273 <div> 1274 <svg class="SocialLinks-link-svg" viewBox="0 0 64 64"> 1275 1276 <use class="SocialLinks-link-icon" xlink:href="#instagram-unauth-icon"></use> 1277 <use class="SocialLinks-link-mask" xlink:href="#instagram-unauth-mask"></use> 1278 </svg> 1279 </div> 1280 </a><a href="https://www.pinterest.com/venndesignco/" target="_blank" class="SocialLinks-link pinterest-unauth" style=""> 1281 <div> 1282 <svg class="SocialLinks-link-svg" viewBox="0 0 64 64"> 1283 1284 <use class="SocialLinks-link-icon" xlink:href="#pinterest-unauth-icon"></use> 1285 <use class="SocialLinks-link-mask" xlink:href="#pinterest-unauth-mask"></use> 1286 </svg> 1287 </div> 1288 </a><a href="http://twitter.com/venndesignco" target="_blank" class="SocialLinks-link twitter-unauth" style=""> 1289 <div> 1290 <svg class="SocialLinks-link-svg" viewBox="0 0 64 64"> 1291 1292 <use class="SocialLinks-link-icon" xlink:href="#twitter-unauth-icon"></use> 1293 <use class="SocialLinks-link-mask" xlink:href="#twitter-unauth-mask"></use> 1294 </svg> 1295 </div> 1296 </a> 1297 </div> 1298 </nav> 1299 1300 </div> 1301 1302 </div> 1303 <div data-nc-container="top-right"> 1304 1305 1306 <a href="/cart" class="Cart sqs-custom-cart" data-nc-element="cart" data-test="template-cart"> 1307 <span class="Cart-inner"> 1308 <span class="Cart-label">Cart</span> 1309 1310 <svg class="Icon Icon--bag-alt" viewBox="0 0 28 28"> 1311 <use class="use--odd" xlink:href="/assets/ui-icons.svg#bag-icon-alt--odd"></use> 1312 <use class="use--even" xlink:href="/assets/ui-icons.svg#bag-icon-alt--even"></use> 1313 </svg> 1314 <svg class="Icon Icon--bag" viewBox="0 0 34 38"> 1315 <use class="use--odd" xlink:href="/assets/ui-icons.svg#bag-icon--odd"></use> 1316 <use class="use--even" xlink:href="/assets/ui-icons.svg#bag-icon--even"></use> 1317 </svg> 1318 <svg class="Icon Icon--cart-alt" viewBox="0 0 28 28"> 1319 <use class="use--odd" xlink:href="/assets/ui-icons.svg#cart-icon-alt--odd"></use> 1320 <use class="use--even" xlink:href="/assets/ui-icons.svg#cart-icon-alt--even"></use> 1321 </svg> 1322 <svg class="Icon Icon--cart" viewBox="0 0 31 26"> 1323 <use class="use--odd" xlink:href="/assets/ui-icons.svg#cart-icon--odd"></use> 1324 <use class="use--even" xlink:href="/assets/ui-icons.svg#cart-icon--even"></use> 1325 </svg> 1326 1327 <span class="sqs-cart-quantity">0</span> 1328 </span> 1329 </a> 1330 1331 1332 </div> 1333 </div> 1334 </header> 1335 1336 <div class="Site-inner"> 1337 1338 <header class="Header Header--bottom"> 1339 <div class="Header-inner Header-inner--bottom" data-nc-group="bottom"> 1340 <div data-nc-container="bottom-left"> 1341 <nav class="Header-nav Header-nav--primary" data-nc-element="primary-nav" data-content-field="navigation"> 1342 1343 <div class="Header-nav-inner"> 1344 <a href="/store" class="Header-nav-item" data-test="template-nav">Store</a><a href="/philosophy" class="Header-nav-item" data-test="template-nav">Philosophy</a><a href="/blog" class="Header-nav-item" data-test="template-nav">Blog</a><a href="/contact" class="Header-nav-item" data-test="template-nav">Contact</a> 1345 </div> 1346 1347 </nav> 1348 </div> 1349 <div data-nc-container="bottom-center"> 1350 1351 <a href="/" class="Header-branding" data-nc-element="branding" data-content-field="site-title"> 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 <img src="//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg" alt="Venn Design | Ergonomic Desk Chairs, Office Chairs, Sitting Cushions, Floor Pads, and Wellness Furniture" sizes="320px" class="Header-branding-logo" style="display:block" srcset="//images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=100w 100w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=300w 300w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=500w 500w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=750w 750w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1000w 1000w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=1500w 1500w, //images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/a5121991-f8de-41d6-b386-922654a12d14/Venn+Design+logo%402000x-100.jpg?format=2500w 2500w" loading="lazy" decoding="async" data-loader="sqs"> 1372 1373 1374 1375 1376 </a> 1377 1378 1379 </div> 1380 <div data-nc-container="bottom-right"> 1381 1382 <nav class="Header-nav Header-nav--secondary" data-nc-element="secondary-nav" data-content-field="navigation"> 1383 1384 </nav> 1385 1386 </div> 1387 </div> 1388 </header> 1389 1390 <div class="Content-outer"> 1391 1392 1393 <main class="Main" > 1394 1395 <section class="Main-content" data-content-field="main-content"> 1396 <div class="sqs-search-page"> 1397 <div class="sqs-search-page-input"> 1398 <div class="spinner-wrapper"></div> 1399 </div> 1400 <div class="sqs-search-page-output hide" style="opacity: 0"> 1401 <div class="sqs-search-page-notice hide"></div> 1402 1403 <div class="sqs-search-page-result" > 1404 <div class="sqs-search-container-list sqs-search-page-list"> 1405 <div class="search-results"> 1406 1407 </div> 1408 </div> 1409 </div> 1410 <div class="sqs-search-page-more-wrapper"> 1411 <div 1412 role="button" 1413 tabindex="0" 1414 class="sqs-search-page-more sqs-system-button-style-mixin sqs-editable-button sqs-button-element--primary" 1415 >
1416 <span>See more</span> 1417 <div class="spinner-wrapper"></div> 1418 </div> 1419 </div> 1420 </div> 1421 1422</div> 1423 </section> 1424 1425 </main> 1426 1427 </div> 1428 </div> 1429 1430 <footer class="Footer" role="contentinfo" data-controller="FooterBreakpoints"> 1431 1432 <div class="Footer-inner clear"> 1433 1434 <div class="sqs-layout sqs-grid-12 columns-12 Footer-blocks Footer-blocks--top sqs-alternate-block-style-container empty" data-layout-label="Footer Top Blocks" data-type="block-field" data-updated-on="1689469872382" id="footerBlocksTop"><div class="row sqs-row"><div class="col sqs-col-12 span-12"></div></div></div> 1435 1436 <div class="Footer-middle"> 1437 <div class="Footer-business"> 1438 1439 1440 <div class="Footer-business-info"> 1441 1442 1443 1444 1445 <div class="Footer-business-info-item">Dallas TX,</div> 1446 <div class="Footer-business-info-item Footer-business-info-item--country">United States</div> 1447 1448 1449 1450 1451 <a href="mailto:[email protected]" title="[email protected]" target="_blank" class="Footer-business-info-item Footer-business-info-item--email">[email protected]</a> 1452 1453 </div> 1454 1455 1456 1457 1458 <div class="Footer-business-hours"> 1459 <div class="Footer-business-hours-heading">Hours</div> 1460 1461 1462 1463 1464 1465 1466 1467 </div> 1468 1469 1470 1471 </div> 1472 1473 <div class="sqs-layout sqs-grid-12 columns-12 Footer-blocks Footer-blocks--middle sqs-alternate-block-style-container empty" data-layout-label="Footer Middle Blocks" data-type="block-field" data-updated-on="1455302480316" id="footerBlocksMiddle"><div class="row sqs-row"><div class="col sqs-col-12 span-12"></div></div></div> 1474 1475 1476 <nav class="Footer-nav" data-content-field="navigation"> 1477 1478 <div class="Footer-nav-group"><div class="Footer-nav-folder-heading">Info</div> 1479 1480 1481 1482 1483 <a href="/faq" class="Footer-nav-folder-item">FAQ - Shipping</a> 1484 1485 1486 1487 1488 1489 <a href="/about-us" class="Footer-nav-folder-item">About Us</a> 1490 1491 1492 1493 1494 1495 <a href="/wholesale" class="Footer-nav-folder-item">Wholesale</a> 1496 1497 1498 1499 1500 </div><div class="Footer-nav-group"></div><div class="Footer-nav-group"><div class="Footer-nav-folder-heading">Social</div> 1501 1502 1503 1504 1505 1506 <a href="http://instagram.com/venndesign" target="_blank" class="Footer-nav-folder-item">Instagram</a> 1507 1508 1509 1510 1511 1512 1513 1514 <a href="http://facebook.com/venndesignco" target="_blank" class="Footer-nav-folder-item">Facebook</a> 1515 1516 1517 1518 1519 1520 1521 1522 <a href="http://pinterest.com/venndesign" target="_blank" class="Footer-nav-folder-item">Pinterest</a> 1523 1524 1525 1526 1527 1528 1529 1530 <a href="https://www.tiktok.com/@venndesign" class="Footer-nav-folder-item">TikTok</a> 1531 1532 1533 1534 1535 1536 </div><div class="Footer-nav-group"></div> 1537 1538 </nav> 1539 1540 </div> 1541 1542 <div class="sqs-layout sqs-grid-12 columns-12 Footer-blocks Footer-blocks--bottom sqs-alternate-block-style-container" data-layout-label="Footer Bottom Blocks" data-type="block-field" data-updated-on="1769441506043" id="footerBlocksBottom"><div class="row sqs-row"><div class="col sqs-col-6 span-6"><div class="sqs-block html-block sqs-block-html" data-block-type="2" data-border-radii="{"topLeft":{"unit":"px","value":0.0},"topRight":{"unit":"px","value":0.0},"bottomLeft":{"unit":"px","value":0.0},"bottomRight":{"unit":"px","value":0.0}}" data-sqsp-block="text" id="block-yui_3_17_2_40_1444941911080_5166"><div class="sqs-block-content"> 1543 1544<div class="sqs-html-content" data-sqsp-text-block-content> 1545 <p class="" style="white-space:pre-wrap;"><strong>venndesign.co â 2026</strong></p><p class="" style="white-space:pre-wrap;">Powered by <a href="http://squarespace.com">Squarespace</a></p> 1546</div> 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572</div></div></div><div class="col sqs-col-6 span-6"><div class="sqs-block website-component-block sqs-block-website-component sqs-block-newsletter newsletter-block" data-block-css="["https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.newsletter/58d67523-2cf5-42f9-95a4-1e436b9263fe_104/web
1572site.components.newsletter.styles.css"]" data-block-scripts="["https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.newsletter/58d67523-2cf5-42f9-95a4-1e436b9263fe_104/website.components.newsletter.visitor.js"]" data-block-type="1337" data-definition-name="website.components.newsletter" data-sqsp-block="newsletter" data-website-component-id="yui_3_17_2_1_1763861505516_6634" id="block-yui_3_17_2_1_1763861505516_6634"><div class="sqs-block-content"> 1573<div class="newsletter-form-banner newsletter-form-banner--hidden"> 1574 1575 1576 1577<div class="sqs-blockStatus" > 1578 1579 <div class="sqs-blockStatus-box"> 1580 <div class="sqs-blockStatus-box-title">Newsletter Block</div> 1581 <div class="sqs-blockStatus-box-message"> 1582 This newsletter signup form needs a storage option. Edit the block and enter a storage location via the <strong>Storage</strong> tab. 1583 1584 </div> 1585 </div> 1586</div> 1587 1588</div> 1589<div class="newsletter-form-wrapper 1590 1591 newsletter-form-wrapper--layoutFloat 1592 newsletter-form-wrapper--alignRight 1593 1594 "> 1595 <form 1596 class="newsletter-form" 1597 data-form-id="6922643fb4d0d63e3067d1cb" 1598 1599 data-form-submission="message" 1600 data-collection-id="" 1601 data-object-name="" 1602 data-error-submit="Error processing form submission. Please reload and try again." 1603 data-error-unknown="Unknown error, please try again later." 1604 data-error-form-key="Could not get a form submission key, please try again later." 1605 data-error-401="Unable to submit form. Please try again later." 1606 data-error-404="This form has not been configured yet." 1607 data-error-429="Unable to submit form. Submission rate limit exceeded. Please try again later." 1608 data-error-500="Unable to send form. Please try again later." 1609 data-submitting-text="Submittingâ¦" 1610 autocomplete="on" 1611 method="POST" 1612 novalidate> 1613 <header class="newsletter-form-header"> 1614 <h2 class="newsletter-form-header-title">Want Free USA Delivery?</h2> 1615 <div class="newsletter-form-header-description"><p data-rte-preserve-empty="true" style="white-space:pre-wrap;">Sign up to receive a code for Free USA Shipping straight to your inbox!</p></div> 1616 </header> 1617 <div class="newsletter-form-body"> 1618 <div class="newsletter-form-fields-wrapper form-fields" style="vertical-align: middle;"> 1619 1620 1621 1622 <div id="email-yui_3_17_2_1_1763861505516_6639" class="newsletter-form-field-wrapper form-item field email required" style="vertical-align: bottom;"> 1623 <label class="newsletter-form-field-label title" for="email-yui_3_17_2_1_1763861505516_6639-field">Email Address</label> 1624 <input id="email-yui_3_17_2_1_1763861505516_6639-field" class="newsletter-form-field-element field-element" name="email" x-autocompletetype="email" autocomplete="email" type="email" spellcheck="false" placeholder="Email Address" /> 1625 </div> 1626 1627 1628 1629 1630 </div> 1631 <div data-animation-role="button" class="newsletter-form-button-wrapper submit-wrapper" style="vertical-align: middle;"> 1632 <button 1633 class=" 1634 newsletter-form-button 1635 sqs-system-button 1636 sqs-editable-button-layout 1637 sqs-editable-button-style 1638 sqs-editable-button-shape 1639 sqs-button-element--primary 1640 " 1641 type="submit" 1642 value="Sign Up" 1643 > 1644 <span class="newsletter-form-spinner sqs-spin light large"></span> 1645 <span class="newsletter-form-button-label">Sign Up</span> 1646 <span class="newsletter-form-button-icon"></span> 1647 </button> 1648 </div> 1649 1650 <div class="captcha-container 1651 1652 align-center 1653 1654 " 1655 data-theme="light" 1656 ></div> 1657 1658 </div> 1659 <div class="newsletter-form-footnote"><p data-rte-preserve-empty="true" style="white-space:pre-wrap;"></p></div> 1660 <div class="hidden form-submission-text"><p data-rte-preserve-empty="true" style="white-space:pre-wrap;">Thank you! Use code <strong>FREESHIPPING</strong> for free delivery on your next order.</p></div> 1661 <div class="hidden form-submission-html" data-submission-html=""></div> 1662 </form> 1663</div> 1664 1665<style>.fe-block-yui_3_17_2_1_1763861505516_6634 {mix-blend-mode: ; 1666 }</style> 1667 1668<!-- SQUARESPACE_JSONT_ERROR 1669 1670website.components.newsletter 1671 1672(line/character offsets reference the template source code) 1673 1674 1: RuntimeError EXPRESSION_PARSE at line 2 character 1: Error parsing expression: Unexpected character at 22: ? 1675 1676--></div></div><div class="sqs-block website-component-block sqs-block-website-component sqs-block-code code-block" data-block-css="["https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.c
1676ode/cfd3d1e7-62c0-46c2-9802-ba86767fc9b2_986/website.components.code.styles.css"]" data-block-scripts="["https://definitions.sqspcdn.com/website-component-definition/static-assets/website.components.code/cfd3d1e7-62c0-46c2-9802-ba86767fc9b2_986/website.components.code.visitor.js"]" data-block-type="1337" data-definition-name="website.components.code" data-sqsp-block="code" data-website-component-id="yui_3_17_2_1_1768576468917_23411" id="block-yui_3_17_2_1_1768576468917_23411"><div class="sqs-block-content"> 1677 1678 1679<div 1680 class="sqs-code-container" 1681 1682 1683 data-localized="{"enableSafeModeButton":"Preview in safe mode","enableSafeModeText":"This block contains embedded scripts. Embedded scripts are disabled while you're logged in and editing your site.","enableSafeModeTitle":"Embedded Scripts","exitSafeModeButton":"Exit safe preview","exitSafeModeText":"Please view the page after logging out for accurate rendering.","exitSafeModeTitle":"Safe Preview","globalSafeMode":"Embedded Code: This block contains embedded code that has been disabled.","scriptDisabled":"Script Disabled"}" 1684 1685 1686 1687 1688> 1689 1690 <a id="footer-newsletter"></a> 1691 1692 1693 1694 1695 1696</div> 1697 1698<style class="transform-overrides-vars"> 1699 1700</style> 1701 1702</div></div></div></div></div> 1703 1704 </div> 1705 1706</footer> 1707 1708 1709 </div> 1710 1711
1711<script src="https://static1.squarespace.com/static/ta/55f0a9b0e4b0f3eb70352f6d/360/scripts/site-bundle.js" type="text/javascript"></script>
1711 1712 1713 <!-- Mini Cart Square Refresh -->
1714<script> 1715var slideOut = { 1716 cartSide: "right", // Position, left or right 1717 animation: "fade", // Animation, slide or fade 1718 textCart: "Shopping Cart", // Custom Cart Text or HTML 1719 textButton: "Checkout", // Custom Checkout Text 1720 showIfCartUpdated: true, // Show Cart when update true or false 1721 closeOutside: true, // Close cart on overlay click true or false 1722 // textTop: "*psst*", // Custom Top Text 1723 textAboveButton: "Free USA Shipping", // Custom Bottom text 1724 emptyMessageText: "You have nothing in your shopping cart.", // Empty Message text 1725 continueButtonText: "CONTINUE SHOPPING", // Continue Button text 1726}; 1727</script>
vendor: 1 bytes, line 1727
1727
1728<script src="https://www.squarerefresh.xyz/assets/plugins/slide-out/js/slide-out.min.js"></script>
1728 1729<!-- Mini Cart Square Refresh --> 1730 1731 1732<!-- FAQs Square Refresh -->
1733<script src="https://www.squarerefresh.xyz/assets/plugins/facts/js/facts.min.js"></script>
1733 1734<!-- FAQs Square Refresh --> 1735 1736 1737<!-- Slides Square Refresh -->
1738<script src="https://www.squarerefresh.xyz/assets/plugins/slides/js/slides.min.js"></script>
1738 1739<!-- Slides Square Refresh --> 1740 1741 1742 1743 1744<!-- remove .00 cents pricing from prices -->
1745<script src="https://cdn.jsdelivr.net/.../[email protected]/dist/ready.umd.js"></script>
vendor: 1 bytes, line 1745
1745
1746<script>!function(){function reformatPrice(price){var priceClone=price.cloneNode(!0);function reformat(){priceClone.innerHTML=price.innerHTML;var target=priceClone.querySelector(".sqs-money-native")||priceClone,textNode=priceClone.querySelector(".sqs-money-native");target.textContent.length>1?target.textContent=format(target.textContent):textNode&&(textNode.textContent=format(textNode.textContent))}function format(text){return text.replace(/\.\d{2}/,"")}function watch(){var observer;new MutationObserver(reformat).observe(price,{childList:!0})}priceClone.classList.add("product-price-clone"),price.parentNode.insertBefore(priceClone,price.nextElementSibling),price.style.display="none",reformat(),watch()}ready(".product-price:not(.product-price-clone),.original-price:not(.product-price-clone)",reformatPrice)}();</script>
1746 1747<!-- remove .00 cents pricing from prices --> 1748 1749 1750<!-- Plugin Swatches --> 1751<link href="/s/plugin-swatches.css" rel="stylesheet">
1752<script src="/s/plugin-swatches.js"></script>
vendor: 1 bytes, line 1752
1752
1753<script>pluginSwatches({"optionName":"Solid Wood Type","showTooltip":"true","backgrounds":"Red Oak: http://www.venndesign.co/s/RoMi_Desk_Red_Oak.jpeg,Cherry: http://www.venndesign.co/s/RoMi_Desk_Cherry.jpeg,Walnut: http://www.venndesign.co/s/RoMi_Desk_Walnut.jpeg,Maple: http://www.venndesign.co/s/RoMi_Desk_Maple.jpeg,Quarter Sawn White Oak: http://www.venndesign.co/s/RoMi_Desk_Quarter_Sawn_White_Oak.jpeg,Hickory: http://www.venndesign.co/s/RoMi_Desk_Hickory.jpeg"});</script>
1753 1754
1755<script>pluginSwatches({"optionName":"Accent Finish","showTooltip":"true","backgrounds":"Default - Same Finish: http://www.venndesign.co/s/RoMi_Desk_Default_Same_Finish.jpeg,White Paint: #FFFFFF,Natural Maple: http://www.venndesign.co/s/RoMi_Desk_Natural_Maple.jpeg,Stained Maple - Driftwood: http://www.venndesign.co/s/RoMi_Desk_Stained_Maple_Driftwood.jpeg,Stained Maple - Slate: http://www.venndesign.co/s/RoMi_Desk_Stained_Maple_Slate.jpeg,Charcoal Paint: #636363,Bluesteel Paint: http://www.venndesign.co/s/RoMi_Desk_Bluesteel_Paint.jpeg,Blue Walnut: http://www.venndesign.co/s/RoMi_Desk_Blue_Walnut.jpeg,Stained Maple - Midnight: http://www.venndesign.co/s/RoMi_Desk_Stained_Maple_Midnight.jpeg,Black Paint: #000000"});</script>
1755 1756
1757<script>pluginSwatches({"optionName":"Leg Color","showTooltip":"true","backgrounds":"White Paint: #FFFFFF,Brushed Metal: http://www.venndesign.co/s/RoMi_Desk_Brushed_Metal.jpeg,Black Paint: #000000"});</script>
1757 1758 1759<!-- end Plugin Swatches --> 1760 1761 1762 1763 1764
1765<script> 1766 // CHANGE THE WORD BETWEEN THE QUOTES BELOW TO THE PATH NAME OF YOUR STORE PAGE 1767 // make sure to use the correct case 1768 var storePageName = "shop"; 1769 1770 1771 1772 // create a regex using the variable above that will be formatted like this: /\/store\/./ 1773 // the regex makes sure that "/store/" plus at least one character is in the text it's trying to match 1774 var storePageRegEx = new RegExp('\/' + storePageName + '\/.') 1775 1776 // so if we try to match it against the current page URL, we should get a positive match if we're on a product page 1777 if(document.URL.match(storePageRegEx)){ 1778 1779 var ssContextObject; 1780 1781 // grab all the scripts that have been loaded on the page thus far 1782 var ssAllScripts = document.querySelectorAll('script'); 1783 1784 // look for the one that has the checkout information we need 1785 for (var scriptIndex = 0; scriptIndex < ssAllScripts.length; scriptIndex++) { 1786 // the .match method returns 'null' if it doesn't find a match 1787 var ssContextObjectScriptHTML = ssAllScripts[scriptIndex].innerHTML.match(/Static\.SQUARESPACE_CONTEXT = (.+?\});/); 1788 1789 // if the match function above returned something, then we parse it as JSON and store it in our JSON variable 1790 if(ssContextObjectScriptHTML){ 1791 ssContextObject = JSON.parse(ssContextObjectScriptHTML[1]); 1792 1793 if(typeof(ssContextObject.product) != 'undefined'){ 1794 // STRIP SUPERFLUOUS INFORMATION 1795 // strip the information in the key "mainImage" from each product variant 1796 // it's a crazy mess of alphanumeric stuff that we don't need in our dataLayer 1797 var productVariants = ssContextObject.product.variants || []; 1798 1799 for(var i=0; i < productVariants.length; i++){ 1800 productVariants[i]['mainImage'] = {}; 1801 } 1802 1803 // SEARCH FOR CATEGORY TAGS -- THIS MIGHT BE UNRELIABLE 1804 // the following code attempts to scrape the DOM to find category information for the product 1805 // if the category information exists it should be found in the class names list within one of the elements in the page 1806 // if this element exists, it will have one or more classes that start with "category-" 1807 // so we will attempt to find it and then loop through its classes and find any class with "category-" in the title 1808 // remove the "category-" and append the rest of the class name to the categoryString variable 1809 // if there are more than one category it will place a "/" in between each category 1810 // it will stop looking after the 5th category to comply with Google Analytics 5 category depth limit 1811 var categoryClassesElement, categoryClasses, categoryString = ""; 1812 1813 categoryClassesElement = document.querySelector('[data-content-field="main-content"]'); 1814 1815 if(categoryClassesElement){ 1816 categoryClassesElement = categoryClassesElement.querySelector('[class*=category-]'); 1817 } 1818 else{ 1819 categoryClassesElement = document.querySelector('body [class*=category-]'); 1820 } 1821 1822 categoryClasses = (categoryClassesElement) ? categoryClassesElement.className.match(/\bcategory-[\S]*/g) : []; 1823 1824 for(var i=0; i < categoryClasses.length && i < 5; i++){ 1825 categoryString = categoryString + ( i!=0 ? "/" : "") + categoryClasses[i].replace(/category-/, ''); 1826 } 1827 1828 // CREATE AN OBJECT WITH THE RAW SQUARESPACE DATA 1829 var ssRawProductDetail = { 1830 "item": ssContextObject.item, 1831 "product": ssContextObject.product, 1832 "category": categoryString 1833 }; 1834 1835 1836 // PUSH TO DATALAYER 1837 window.dataLayer = window.dataLayer || []; 1838 window.dataLayer.push({ 1839 'event' : 'ssRawProductDetailPush', 1840 'ssRawProductDetail': ssRawProductDetail 1841 }); 1842 1843 break; 1844 } 1845 } 1846 } 1847 } 1848</script>
1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864
1865<script> 1866(function () { 1867 'use strict'; 1868 1869 if (window.__VENN_SQSP_HERO_RUNTIME_MOUNTED__) return; 1870 window.__VENN_SQSP_HERO_RUNTIME_MOUNTED__ = true; 1871 1872 var ROOT_SELECTOR = '.venn-lp'; 1873 var READY_CLASS = 'venn-native-bridge-ready'; 1874 var NATIVE_CLASS = 'venn-native-commerce'; 1875 var DEBUG_NATIVE = !!window.VENN_SQSP_DEBUG_NATIVE; 1876 var DASH = ' - '; 1877 var HERO_ASSETS = { 1878 roomScene: 'https://images.squarespace-cdn.com/content/5844c859d1758e37a12febc4/5b1fc90f-7eee-4277-b109-0be63d7f9300/venn-hero-gallery-movement-room.jpg?content-type=image%2Fjpeg', 1879 standardFern: 'https://images.squarespace-cdn.com/content/5844c859d1758e37a12febc4/5cfece8c-d7b2-49a5-bd8e-274c4f7110af/_Q0A3786-Hailey-Fern.jpg?content-type=image%2Fjpeg', 1880 officeScene: 'https://images.squarespace-cdn.com/content/5844c859d1758e37a12febc4/1714077360467-INGYT6CADP7A6BK6I2SX/Interior+rooms+project_home+office_tz6.jpg?content-type=image%2Fjpeg', 1881 movementRoom: 'https://images.squarespace-cdn.com/content/5844c859d1758e37a12febc4/1714077365937-R7181A9NK1GU6PGU7ZT0/Interior+rooms+project_studio+apartment_tz4.jpg?content-type=image%2Fjpeg', 1882 sittingCushion: 'https://images.squarespace-cdn.com/content/5844c859d1758e37a12febc4/d288e5e4-e7f9-4d2f-8769-5d7875282947/_Q0A4539-Carmen-Pink-Faux-Velvet.jpg?content-type=image%2Fjpeg' 1883 }; 1884 var CUSHION_MAP = {"generatedAt":"2026-06-20T00:00:00Z","source":"https://www.venndesign.co/shop/build-your-sitting-cushion","productTitle":"Build Your Sitting Cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","optionNames":["Finish"],"products":[{"key":"fern","family":"Standard","finish":"Fern","nativeFinish":"Standard â Fern","title":"Sitting Cushion - Fern","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"b7c537b9-7de3-4b3b-b8e8-464618fcb9f9","sku":"SQ3034822","price":189,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/adaf7a77-9692-411f-815c-8645762758be/_Q0A4626-Hailey-Fern.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/adaf7a77-9692-411f-815c-8645762758be/_Q0A4626-Hailey-Fern.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"steel","family":"Standard","finish":"Steel","nativeFinish":"Standard â Steel","title":"Sitting Cushion - Steel","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"56b01a67-a022-44f4-8b06-e9d5d9e9a231","sku":"SQ4546889","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3bf6f8ea550371932efc/1760508938627/_Q0A4554-Hailey-Steel.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3bf6f8ea550371932efc/1760508938627/_Q0A4554-Hailey-Steel.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"metal","family":"Standard","finish":"Metal","nativeFinish":"Standard â Metal","title":"Sitting Cushion - Metal","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"350ed286-5f93-4272-8a70-2c97448f353d","sku":"SQ8368202","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3b5a83a31912dc2d3561/1760508776947/_Q0A4620-Sugarshack-Metal.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3b5a83a31912dc2d3561/1760508776947/_Q0A4620-Sugarshack-Metal.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"sand","family":"Standard","finish":"Sand","nativeFinish":"Standard â Sand","title":"Sitting Cushion - Sand","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"781fbac1-af3b-454b
1884-9865-92792d135e93","sku":"SQ4181234","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3a8df8ea550371932e73/1760508569097/_Q0A4590-Belgian-Sand-Faux-Linen.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3a8df8ea550371932e73/1760508569097/_Q0A4590-Belgian-Sand-Faux-Linen.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"iron","family":"Standard","finish":"Iron","nativeFinish":"Standard â Iron","title":"Sitting Cushion - Iron","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"a7cd3a20-cb94-438a-b03e-81c60451b4c2","sku":"SQ7847408","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef39a1c8d07324547d660e/1760508335068/_Q0A4600-Belgian-Iron-Faux-Linen.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef39a1c8d07324547d660e/1760508335068/_Q0A4600-Belgian-Iron-Faux-Linen.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"lagoon","family":"Standard","finish":"Lagoon","nativeFinish":"Standard â Lagoon","title":"Sitting Cushion - Lagoon","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"3dc43c1c-d714-4eba-a2c0-b544350a0983","sku":"SQ4008433","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3839c8d07324547d657b/1760507989153/_Q0A4585-Belgian-Lagoon-Faux-Linen.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3839c8d07324547d657b/1760507989153/_Q0A4585-Belgian-Lagoon-Faux-Linen.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"camel","family":"Standard","finish":"Camel","nativeFinish":"Standard â Camel","title":"Sitting Cushion - Camel","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"3c3d8307-e839-446a-9147-9c9571947c38","sku":"SQ2714359","price":189,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/ae6068b1-e4a1-4550-9d11-632b80567052/_Q0A4544-Belgian-Camel-Faux-Linen.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/ae6068b1-e4a1-4550-9d11-632b80567052/_Q0A4544-Belgian-Camel-Faux-Linen.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"mint","family":"Standard","finish":"Mint","nativeFinish":"Standard â Mint","title":"Sitting Cushion - Mint","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"3737a275-ede8-456d-909a-2dc9bd20f209","sku":"SQ5360104","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef35c0f8ea550371932c5d/1760507348696/_Q0A4595-Downton-Mint-Herringbone.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef35c0f8ea550371932c5d/1760507348696/_Q0A4595-Downton-Mint-Herringbone.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"navy","family":"Standard","finish":"Navy","nativeFinish":"Standard â Navy","title":"Sitting Cushion - Navy","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"4a4b9b65-822f-4d26-8e25-309a81aecedf","sku":"SQ6008318","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef351886b63e5941e664b4/1760507182777/_Q0A4605-Murano-Navy-Boucle.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef351886b63e5941e664b4/1760507182777/_Q0A4605-Murano-Navy-Boucle.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"graphite","family":"Standard","finish":"Graphite","nativeFinish":"Standard â Graphite","t
1884itle":"Sitting Cushion - Graphite","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"4b6fa91e-65c1-4ddf-8608-1eacabded553","sku":"SQ8688495","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef344486b63e5941e66465/1760506998829/_Q0A4549-Murano-Graphite-Boucle.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef344486b63e5941e66465/1760506998829/_Q0A4549-Murano-Graphite-Boucle.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"cloud","family":"Standard","finish":"Cloud","nativeFinish":"Standard â Cloud","title":"Sitting Cushion - Cloud","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"4f054c72-71a9-4875-b412-efe8ddc97734","sku":"SQ2234940","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef329883a31912dc2d315a/1760506561001/_Q0A4569-Murano-Cloud-Boucle.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef329883a31912dc2d315a/1760506561001/_Q0A4569-Murano-Cloud-Boucle.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"natural","family":"Standard","finish":"Natural","nativeFinish":"Standard â Natural","title":"Sitting Cushion - Natural","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"e325310b-8802-47e7-bed1-b2861f5ba295","sku":"SQ4665266","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef31b9c8d07324547d624e/1760506312155/_Q0A4534-Murano-Natural-Boucle.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef31b9c8d07324547d624e/1760506312155/_Q0A4534-Murano-Natural-Boucle.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"cadet","family":"Standard","finish":"Cadet","nativeFinish":"Standard â Cadet","title":"Sitting Cushion - Cadet","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"d9fbd725-757a-4eb2-ae43-b19cb80eb0d8","sku":"SQ5138149","price":189,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3048c8d07324547d61ac/1760505973324/_Q0A4615-Macarena-Cadet-Slate.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3048c8d07324547d61ac/1760505973324/_Q0A4615-Macarena-Cadet-Slate.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"dusty-rose","family":"Standard","finish":"Dusty Rose","nativeFinish":"Standard â Dusty Rose","title":"Sitting Cushion - Dusty Rose","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"896a3ddf-fe94-49da-9bda-0a2c9e72fa35","sku":"SQ9984475","price":189,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/6602a4af-9de7-4c42-8382-656fea855a17/_Q0A4564-Carmen-Dusty-Rose-Faux-Velvet.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/6602a4af-9de7-4c42-8382-656fea855a17/_Q0A4564-Carmen-Dusty-Rose-Faux-Velvet.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"pink","family":"Standard","finish":"Pink","nativeFinish":"Standard â Pink","title":"Sitting Cushion - Pink","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"324e85f8-1fda-432b-bd3e-10cbca68fdfd","sku":"SQ8071029","price":189,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/d288e5e4-e7f9-4d2f-8769-5d7875282947/_Q0A4539-Carmen-Pink-Faux-Velvet.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/d288e5e4-e7f9-4d2f-8769-5d7875282947/_Q0A4539-Carmen-Pink-Faux-Velvet.jpg?format=300w","imageSource":"native-variant","productType":1}
1884,{"key":"dune","family":"Standard","finish":"Dune","nativeFinish":"Standard â Dune","title":"Sitting Cushion - Dune","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"888c71fe-ab27-42a0-baf8-f34ccf76588d","sku":"SQ2582088","price":209,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2da686b63e5941e66105/1760505304857/_Q0A4631-CurlyQ-Sand-Boucle.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2da686b63e5941e66105/1760505304857/_Q0A4631-CurlyQ-Sand-Boucle.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"atlas","family":"Standard","finish":"Atlas","nativeFinish":"Standard â Atlas","title":"Sitting Cushion - Atlas","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"c1a089a6-e070-48bd-b9ba-54e59acb6799","sku":"SQ2914629","price":209,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2d0c86b63e5941e660c4/1760505113087/_Q0A4636-Atlas-Cream.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2d0c86b63e5941e660c4/1760505113087/_Q0A4636-Atlas-Cream.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"down-under","family":"Standard","finish":"Down Under","nativeFinish":"Standard â Down Under","title":"Sitting Cushion - Down Under","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"182a9081-0a47-462b-9cd5-e643103dc3f9","sku":"SQ0540742","price":209,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2c8386b63e5941e6608f/1760504988716/_Q0A4559-Down-Under-Grey.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2c8386b63e5941e6608f/1760504988716/_Q0A4559-Down-Under-Grey.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"woof","family":"Standard","finish":"Woof","nativeFinish":"Standard â Woof","title":"Sitting Cushion - Woof","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"2b29563c-46c2-4d30-ad76-0c5cd2ca7fd1","sku":"SQ0220026","price":209,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/234c0ae2-8ee2-4234-a428-dfa8bebb3cb7/_Q0A4636-Atlas-Cream.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/234c0ae2-8ee2-4234-a428-dfa8bebb3cb7/_Q0A4636-Atlas-Cream.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"seastar","family":"Standard","finish":"Seastar","nativeFinish":"Standard â Seastar","title":"Sitting Cushion - Seastar","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"43b93185-f229-4742-b550-c267dd8d74e7","sku":"SQ5596218","price":209,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2b3dc8d07324547d5f7b/1760504656529/_Q0A4579-Seastar-Starfish-Bottle-Jacquard.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef2b3dc8d07324547d5f7b/1760504656529/_Q0A4579-Seastar-Starfish-Bottle-Jacquard.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"general-store","family":"Standard","finish":"General Store","nativeFinish":"Standard â General Store","title":"Sitting Cushion - General Store","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"e07f186d-7d34-4a7e-908b-e11c20376447","
1884sku":"SQ6811990","price":209,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/20e4b3c5-dd7a-4919-9162-2979ed642af2/_Q0A4574-General-Store-Navy.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/20e4b3c5-dd7a-4919-9162-2979ed642af2/_Q0A4574-General-Store-Navy.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"mango","family":"Standard","finish":"Mango","nativeFinish":"Standard â Mango","title":"Sitting Cushion - Mango","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"32ef842e-af6d-4fe2-bf04-0594416731b0","sku":"SQ0597927","price":209,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/27b3ee5d-1376-4cc7-b245-1f2cac634b32/_Q0A4525-Tree-of-Life-Mango-Jacquard.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/27b3ee5d-1376-4cc7-b245-1f2cac634b32/_Q0A4525-Tree-of-Life-Mango-Jacquard.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"brick","family":"Standard","finish":"Brick","nativeFinish":"Standard â Brick","title":"Sitting Cushion - Brick","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"25c8f0e5-303e-4bba-8e8b-a8b7f2c9a152","sku":"SQ2108561","price":209,"salePrice":null,"available":true,"image":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/214fd040-9739-4a54-89ca-cdd8b88ccc2e/_Q0A4610-Tree-of-Life-Brick-Jacquard.jpg?format=1500w","thumbnail":"https://images.squarespace-cdn.com/content/v1/5844c859d1758e37a12febc4/214fd040-9739-4a54-89ca-cdd8b88ccc2e/_Q0A4610-Tree-of-Life-Brick-Jacquard.jpg?format=300w","imageSource":"native-variant","productType":1},{"key":"hyacinth","family":"Pendleton","finish":"Hyacinth","nativeFinish":"Pendleton Wool â Hyacinth","title":"Sitting Cushion - Hyacinth","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"a8a833f8-195d-427a-9cc7-04f9f5e3d67f","sku":"SQ9482838","price":299,"salePrice":null,"available":true,"image":"","thumbnail":"","imageSource":"missing","productType":1},{"key":"marine","family":"Pendleton","finish":"Marine","nativeFinish":"Pendleton Wool â Marine","title":"Sitting Cushion - Marine","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"bc62a07a-ba9b-4ecd-bf44-9bc006c9c852","sku":"SQ9469672","price":299,"salePrice":null,"available":true,"image":"","thumbnail":"","imageSource":"missing","productType":1},{"key":"fern","family":"Pendleton","finish":"Fern","nativeFinish":"Pendleton Wool â Fern","title":"Sitting Cushion - Fern","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"dbcaf082-1c84-475d-8bf6-2e6a209f1ef2","sku":"SQ6306724","price":299,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3c99c8d07324547d674c/1760509081589/_Q0A4625-Hailey-Fern.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/68ef3c99c8d07324547d674c/1760509081589/_Q0A4625-Hailey-Fern.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"squash","family":"Pendleton","finish":"Squash","nativeFinish":"Pendleton Wool â Squash","title":"Sitting Cushion - Squash","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"0733a1fd-78c7-4e0e-ace4-6582325eccf1","sku":"SQ9417088","price":299,"salePrice":null,"available":true,"image":"","thumbnail":"","imageSource":"missing","productType":1},{"key":"mesquite","family":"Pendleton","finish":"Mesquite","nativeFinish":"Pendleton Wool â Mesquite","title":"Sitting Cushion - Mesquite","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"6d3a5d3f-f3e0-4df4-aebb-55cfdb9e5cf4","sku":"SQ0140185","price":299,"salePrice":null,"available":true,"image":"","thumbnail":"","imageSource":"missing","productType":1},{"key":"dusk-blue","family":"Pendleton","finish":"Dusk Blue","nativeFinish":"Pendleton Wool â Dusk Blue","title":"Sitting Cushion - Dusk Blue","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"3fd04532-83ef-4be9-b38e-3e
1884017e9cbbcf","sku":"SQ1918024","price":299,"salePrice":null,"available":true,"image":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/6285b1d8c55a5862104bb199/1652928989520/3Q0A1818-Edit.jpg?format=1500w","thumbnail":"https://static1.squarespace.com/static/5844c859d1758e37a12febc4/5844dfbd197aeafb4a1c3e69/6285b1d8c55a5862104bb199/1652928989520/3Q0A1818-Edit.jpg?format=300w","imageSource":"legacy-venn-thumbnail","productType":1},{"key":"buffalo","family":"Pendleton","finish":"Buffalo","nativeFinish":"Pendleton Jacquard â Buffalo","title":"Sitting Cushion - Buffalo","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"719f77e8-9c17-44e7-8f91-0b1d0e054034","sku":"SQ4350073","price":299,"salePrice":null,"available":true,"image":"","thumbnail":"","imageSource":"missing","productType":1},{"key":"buffalo-2","family":"Pendleton","finish":"Buffalo 2","nativeFinish":"Pendleton Jacquard â Buffalo 2","title":"Sitting Cushion - Buffalo 2","url":"https://www.venndesign.co/shop/build-your-sitting-cushion","itemId":"6a36fdcda65151502568ae4b","collectionId":"5844dfbd197aeafb4a1c3e69","variantId":"0055dad6-a5f4-48eb-90b4-a3dfebd56f0b","sku":"SQ9996075","price":299,"salePrice":null,"available":true,"image":"","thumbnail":"","imageSource":"missing","productType":1}],"skipped":[]}; 1885 function asset(path) { 1886 var map = { 1887 'assets/life-room-interior.jpg': HERO_ASSETS.roomScene, 1888 'assets/life-hero-fern.jpg': HERO_ASSETS.standardFern, 1889 'assets/life-womans-office.jpg': HERO_ASSETS.officeScene, 1890 'assets/solar-room.jpg': HERO_ASSETS.movementRoom, 1891 'assets/life-cushion.jpg': HERO_ASSETS.sittingCushion 1892 }; 1893 return map[path] || path; 1894 } 1895 1896 var SERIES = [ 1897 { key: 'standard', prefix: 'Standard', label: 'Standard Fabric', nativeLabel: 'Standard', base: 299 }, 1898 { key: 'solar', prefix: 'Solar', label: 'Solar Series', nativeLabel: 'Solar', base: 349 }, 1899 { key: 'sports', prefix: 'Sports', label: 'Sports Series', nativeLabel: 'Sports', base: 349 }, 1900 { key: 'pendleton', prefix: 'Pendleton Wool', label: 'Pendleton Wool', nativeLabel: 'Pendleton Wool', base: 399 }, 1901 { key: 'jacquard', prefix: 'Pendleton Jacquard', label: 'Pendleton Jacquard', nativeLabel: 'Pendleton Jacquard', base: 429 } 1902 ]; 1903 1904 var FALLBACK_FINISHES = [ 1905 'Standard \u2014 Fern','Standard \u2014 Steel','Standard \u2014 Metal','Standard \u2014 Sand','Standard \u2014 Iron','Standard \u2014 Lagoon','Standard \u2014 Camel','Standard \u2014 Mint','Standard \u2014 Navy','Standard \u2014 Graphite','Standard \u2014 Cloud','Standard \u2014 Natural','Standard \u2014 Cadet','Standard \u2014 Dusty Rose','Standard \u2014 Pink','Standard \u2014 Dune','Standard \u2014 Atlas','Standard \u2014 Down Under','Standard \u2014 Woof','Standard \u2014 Seastar','Standard \u2014 General Store','Standard \u2014 Mango','Standard \u2014 Brick', 1906 'Solar \u2014 Earth','Solar \u2014 Moon','Solar \u2014 Sol','Solar \u2014 Jupiter','Solar \u2014 Mars', 1907 'Sports \u2014 Basketball','Sports \u2014 Baseball','Sports \u2014 Soccer','Sports \u2014 Golf','Sports \u2014 Tennis','Sports \u2014 Pool','Sports \u2014 Bowling', 1908 'Pendleton Wool \u2014 Hyacinth','Pendleton Wool \u2014 Marine','Pendleton Wool \u2014 Fern','Pendleton Wool \u2014 Squash','Pendleton Wool \u2014 Mesquite','Pendleton Wool \u2014 Dusk Blue', 1909 'Pendleton Jacquard \u2014 Buffalo','Pendleton Jacquard \u2014 Buffalo 2' 1910 ]; 1911 1912 var GALLERY = [ 1913 { src: 'assets/life-room-interior.jpg', alt: 'A sunlit modern living room composed with Air Chairs at the desk and sofa and Sitting Cushions on the floor', cap: 'One room, more ways to sit - Air Chairs at the desk and sofa, Sitting Cushions on the floor', pos: 'center 42%' }, 1914 { src: 'assets/life-hero-fern.jpg', alt: 'Standard Fabric Air Chair in Fern', cap: 'Standard Fabric - Fern photographed in Venn Dallas studio' }, 1915 { src: 'assets/life-womans-office.jpg', alt: 'Standard Fabric Air Chairs in a sunlit home office', cap: 'All day at the desk and by the window - the task chair that keeps moving with you' }, 1916 { src: 'assets/solar-room.jpg', alt: 'A living room composed with Earth and Moon Air Chairs and Sitting Cushions', cap: 'Compose a room - Earth and Moon Air Chairs with Sitting Cushions on the floor', pos: 'center 46%' }, 1917 { src: 'assets/life-cushion.jpg', alt: 'Sitting Cushion in use on the floor', cap: 'The Sitting Cushion - buckwheat one side, pressed wool the other' } 1918 ]; 1919 1920 var PRESETS = [ 1921 { id: 'seat', name: 'The Seat', best: 'Your first chair - the desk gets better', total: 329, subtotal: 329, credit: 0, badge: '', items: [chair('Standard \u2014 Fern', 'Large')] }, 1922 { id: 'desk-floor', name: 'Desk + Floor', best: 'Work upright, reset on the ground', total: 478, subtotal: 518, credit: 40, badge: 'Save $40', items: [chair('Standard \u2014 Fern', 'Large'), cushion('Standard \u2014 Natural')] }, 1923 { id: 'movement', name: 'Movement Room', best: 'Desk, lounge, floor, stretch - covered', total: 986, subtotal: 1096, credit: 110, badge: 'Best value', items: [chair('Solar \u2014 Earth', 'Large'), chair('Standard \u2014 Fern', 'Small'), cushion('Standard \u2014 Pink'), cushion('Standard \u2014 Dusty Rose')] }, 1924 { id: 'family', name: 'Family / Studio', best: 'Shared rooms, kids, clinics, classes', total: 1526, subtotal: 1734, credit: 208, badge: 'Set pricing', items: [chair('Standard \u2014 Navy', 'Large'), chair('Standard \u2014 Camel', 'Large'), chair('Sports \u2014 Basketball', 'Small'), chair('Standard \u2014 Fern', 'Small'), cushion('Standard \u2014 Graphite'), cushion('Standard \u2014 Sand')] } 1925 ]; 1926 1927 var state = { 1928 root: null, 1929 mounted: false, 1930 nativeReady: false, 1931 syncing: false, 1932 series: 'standard', 1933 finish: 'Standard \u2014 Fern', 1934 size: 'Large', 1935 activePreset: 'seat', 1936 gallery: 0, 1937 editing: null, 1938 room: [withUid(chair('Standard \u2014 Fern', 'Large'))], 1939 price: 329, 1940 available: true, 1941 nativeImage: null, 1942 nativeObserver: null, 1943 nativeRetryTimer: null, 1944 productData: null, 1945 nativeFinishValues: [], 1946 nativeSizeValues: [], 1947 variantMap: {}, 1948 variantById: {}, 1949 variantBySku: {}, 1950 visualCache: {}, 1951 observerTimer: null, 1952 suppressObserver: false, 1953 galleryThumbsRendered: false, 1954 bound: false, 1955 renderedFinishSeries: '', 1956 cushionOpen: false, 1957 cushionFamily: 'Standard', 1958 selectedCushionKey: '', 1959 addingAirChair: false, 1960 airChairAdded: false, 1961 airChairTimer: null, 1962 addingCushion: false, 1963 cushionAdded: false, 1964 cushionTimer: null, 1965 cushionCartFallback: null, 1966 syncingCushion: false, 1967 cushionNativeReady: false, 1968 cushionNativeKey: '', 1969 cushionNativeError: '', 1970 nativeCartAdds: 0, 1971 cushionPendingProduct: null, 1972 roomAdding: false 1973 }; 1974 1975 function chair(finish, size) { return { type: 'chair', finish: finish, size: size || 'Large' }; } 1976 function cushion(finish) { return decorateCushionItem({ type: 'cushion', finish: finish, size: 'One Size' }); } 1977 function withUid(item) { 1978 var copy = {};
1979 Object.keys(item).forEach(function (k) { copy[k] = item[k]; }); 1980 if (copy.type === 'cushion') decorateCushionItem(copy); 1981 copy.cartStatus = copy.cartStatus || 'planned'; 1982 copy.uid = 'venn-' + Math.random().toString(36).slice(2, 10); 1983 return copy; 1984 } 1985 function money(n) { return '$' + Math.round(Number(n) || 0).toLocaleString('en-US'); } 1986 function esc(s) { return String(s == null ? '' : s).replace(/[&<>\"]/g, function (c) { return ({ '&': '&', '<': '<', '>': '>', '\"': '"' })[c]; }); } 1987 function qs(sel, root) { 1988 try { return (root || document).querySelector(sel); } 1989 catch (err) { return null; } 1990 } 1991 function qsa(sel, root) { 1992 try { return Array.prototype.slice.call((root || document).querySelectorAll(sel)); } 1993 catch (err) { return []; } 1994 } 1995 function normalize(s) { return String(s || '').replace(/\s+/g, ' ').trim(); } 1996 function key(s) { return normalize(s).toLowerCase().replace(/[\u2012\u2013\u2014\u2015-]+/g, ' ').replace(/[^a-z0-9]+/g, ' ').trim(); } 1997 function slug(s) { return key(s).replace(/\s+/g, '-').replace(/^-|-$/g, ''); } 1998 function displayFinish(finish) { 1999 var native = nativeFinishValue(finish); 2000 return native || normalize(finish).replace(/\\u2014/g, '\u2014'); 2001 } 2002 function seriesForFinish(finish) { 2003 var value = displayFinish(finish); 2004 return SERIES.find(function (s) { return key(value).indexOf(key(s.prefix)) === 0; }) || SERIES[0]; 2005 } 2006 function finishName(finish) { 2007 var value = displayFinish(finish); 2008 var s = seriesForFinish(value); 2009 if (key(value).indexOf(key(s.prefix)) === 0) return normalize(value.slice(s.prefix.length).replace(/^[\s\u2012\u2013\u2014\u2015-]+/, '')); 2010 return normalize(value); 2011 } 2012 function swatchClass(finish) { 2013 var s = seriesForFinish(finish); 2014 return 'venn-finish-chip is-' + s.key + ' is-' + slug(finishName(finish)); 2015 } 2016 function standardColor(finish) { 2017 var name = slug(finishName(finish)); 2018 var colors = { 2019 fern: '#7b846c', steel: '#858783', metal: '#b0aaa1', sand: '#d9c7aa', iron: '#4c4a45', lagoon: '#5d8f91', camel: '#b58c64', mint: '#a8c8b5', navy: '#252f46', graphite: '#53514d', cloud: '#e7e3da', natural: '#d8c8ae', cadet: '#69788e', 'dusty-rose': '#c88f94', pink: '#e0abb1', dune: '#cbb990', atlas: '#8a7359', 'down-under': '#77806f', woof: '#9a8066', seastar: '#86a7a3', 'general-store': '#a46b4b', mango: '#d99a3c', brick: '#a6503f' 2020 }; 2021 return colors[name] || '#d8cfc2'; 2022 } 2023 function imageFromVariant(variant) { 2024 var img = variant && variant.mainImage; 2025 return img && (img.url || (img.urls && img.urls.https)) || ''; 2026 } 2027 function thumbnailUrl(url) { 2028 if (!url) return ''; 2029 if (/images\.squarespace-cdn\.com/.test(url)) return url.replace(/\?.*$/, '') + '?format=300w'; 2030 return url; 2031 } 2032 function iconSvg(name) { 2033 if (name === 'edit') return '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4l10.5-10.5-4-4L4 16v4z"></path><path d="M13.5 5.5l1.8-1.8a1.4 1.4 0 0 1 2 0l3 3a1.4 1.4 0 0 1 0 2l-1.8 1.8"></path></svg>'; 2034 if (name === 'copy') return '<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="8" y="8" width="11" height="11" rx="2"></rect><path d="M5 16H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg>'; 2035 return '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6 6l12 12"></path><path d="M18 6L6 18"></path></svg>'; 2036 } 2037 function variantKey(finish, size) { return key(finish) + '|' + key(size); } 2038 function variantId(variant) { return variant && (variant.id || variant.variantId || variant.itemId || variant.productVariantId) || ''; } 2039 function variantSku(variant) { return variant && (variant.sku || variant.SKU || variant.stockKeepingUnit) || ''; } 2040 function nativeFinishValue(finish) { 2041 var wanted = key(finish); 2042 return state.nativeFinishValues.find(function (value) { return key(value) === wanted; }) || ''; 2043 } 2044 function nativeSizeValue(size) { 2045 var wanted = key(size); 2046 return state.nativeSizeValues.find(function (value) { return key(value) === wanted; }) || ''; 2047 } 2048 function variantFor(finish, size) { 2049 var nativeFinish = nativeFinishValue(finish) || finish; 2050 var nativeSize = nativeSizeValue(size) || size; 2051 return state.variantMap[variantKey(nativeFinish, nativeSize)] || null; 2052 } 2053 function variantForFinish(finish, size) { 2054 return variantFor(finish, size || state.size) || variantFor(finish, 'Large') || variantFor(finish, 'Small'); 2055 } 2056 function resolveAirChairVisual(input) { 2057 if (!input || input.type === 'cushion') return ''; 2058 readProductData(); 2059 var finish = input.finish || state.finish; 2060 var size = input.size || state.size; 2061 var nativeFinish = nativeFinishValue(finish) || displayFinish(finish); 2062 var series = seriesForFinish(finish); 2063 var cacheKey = [ 2064 input.variantId || '', 2065 input.sku || '', 2066 key(nativeFinish), 2067 key(series.key + ' ' + finishName(finish)), 2068 key(size) 2069 ].join('|'); 2070 if (state.visualCache[cacheKey] !== undefined) return state.visualCache[cacheKey]; 2071 var variant = null; 2072 if (input.variantId && state.variantById[input.variantId]) variant = state.variantById[input.variantId]; 2073 if (!variant && input.sku && state.variantBySku[key(input.sku)]) variant = state.variantBySku[key(input.sku)]; 2074 if (!variant) variant = variantFor(nativeFinish, size); 2075 if (!variant) variant = variantForFinish(nativeFinish, size); 2076 var url = thumbnailUrl(imageFromVariant(variant)); 2077 state.visualCache[cacheKey] = url; 2078 return url; 2079 } 2080 function imageForFinish(finish, size) { 2081 return imageFromVariant(variantForFinish(finish, size || state.size)); 2082 } 2083 function finishChipMarkup(finish, active, attr, extraClass) { 2084 var series = seriesForFinish(finish); 2085 var label = finishName(finish); 2086 var image = resolveAirChairVisual({ type: 'chair', finish: finish, size: state.size }); 2087 var style = !image && series.key === 'standard' ? ' style="--venn-swatch:' + standardColor(finish) + '"' : ''; 2088 var mark = image ? '<span class="venn-finish-mark has-img" aria-hidden="true"><img src="' + esc(image) + '" alt="" loading="lazy" decoding="async"></span>' : '<span class="venn-finish-mark" aria-hidden="true"></span>'; 2089 return '<button type="button" ' + attr + ' class="' + swatchClass(finish) + (image ? ' has-image' : '') + (extraClass ? ' ' + extraClass : '') + (active ? ' is-active' : '') + '" title="' + esc(label) + '" aria-label="' + esc(series.label + ' ' + label) + '"' + style + '>' + mark + '<span>' + esc(label) + '</span></button>'; 2090 } 2091 function cushionProducts(family) { 2092 return (CUSHION_MAP.products || []).filter(function (p) { return p.family === family && p.available; }); 2093 } 2094 function shortCushionName(productOrFinish) { 2095 var value = typeof productOrFinish === 'string' ? productOrFinish : productOrFinish && productOrFinish.finish || '';
2096 value = normalize(value).replace(/^Sitting Cushion\s*-\s*/i, '').replace(/\s*[\u2012\u2013\u2014\u2015-]\s*Pendleton Wool$/i, ''); 2097 return value; 2098 } 2099 function cushionFamilyForFinish(finish) { 2100 return /pendleton|walking rock|dusk blue|midnight|slate|charcoal|geranium/i.test(finish || '') ? 'Pendleton' : 'Standard'; 2101 } 2102 function cushionKeyForFinish(finish) { 2103 var value = normalize(finish || '').replace(/^Standard\s*[\u2012\u2013\u2014\u2015-]\s*/i, '').replace(/^Pendleton Wool\s*[\u2012\u2013\u2014\u2015-]\s*/i, ''); 2104 return key(shortCushionName(value)); 2105 } 2106 function cushionProductByKey(cushionKey, family) { 2107 return (CUSHION_MAP.products || []).find(function (p) { return p.family === family && (p.key === cushionKey || key(shortCushionName(p)) === cushionKey); }) || null; 2108 } 2109 function resolveCushionProduct(item) { 2110 if (!item || item.type !== 'cushion') return null; 2111 var products = CUSHION_MAP.products || []; 2112 if (item.variantId) { 2113 var byVariant = products.find(function (p) { return p.variantId === item.variantId; }); 2114 if (byVariant) return byVariant; 2115 } 2116 if (item.sku) { 2117 var bySku = products.find(function (p) { return key(p.sku) === key(item.sku); }); 2118 if (bySku) return bySku; 2119 } 2120 var family = item.family || cushionFamilyForFinish(item.finish); 2121 var byFinish = cushionProductByKey(item.cushionKey || cushionKeyForFinish(item.finish), family); 2122 if (byFinish) return byFinish; 2123 if (item.itemId) { 2124 var byItem = products.find(function (p) { return p.itemId === item.itemId && (!item.finish || key(p.nativeFinish || p.finish) === key(item.finish) || key(p.finish) === key(shortCushionName(item.finish))); }); 2125 if (byItem) return byItem; 2126 } 2127 return null; 2128 } 2129 function decorateCushionItem(item) { 2130 var product = resolveCushionProduct(item); 2131 if (!product) return item; 2132 return applyCushionProduct(item, product); 2133 } 2134 function applyCushionProduct(item, product) { 2135 if (!item || !product) return item; 2136 item.cushionKey = product.key; 2137 item.family = product.family; 2138 item.finish = product.family === 'Standard' ? 'Standard â ' + product.finish : (product.nativeFinish || product.finish); 2139 item.itemId = product.itemId; 2140 item.collectionId = product.collectionId; 2141 item.variantId = product.variantId; 2142 item.sku = product.sku; 2143 item.price = Number(product.salePrice || product.price || 189); 2144 item.productUrl = product.url; 2145 item.nativeFinish = product.nativeFinish || item.finish; 2146 item.nativeImage = product.thumbnail || product.image || ''; 2147 item.available = !!product.available; 2148 return item; 2149 } 2150 function resolveCushionVisual(item) { 2151 var product = resolveCushionProduct(item); 2152 return product && (product.thumbnail || product.image) || item && item.nativeImage || ''; 2153 } 2154 function cushionProductChip(product, active, attr, extraClass) { 2155 var label = shortCushionName(product); 2156 return '<button type="button" ' + attr + ' class="venn-cushion-chip' + (extraClass ? ' ' + extraClass : '') + (active ? ' is-active' : '') + '" title="' + esc(product.title) + '" aria-label="' + esc(product.family + ' Sitting Cushion ' + label + ', ' + money(product.salePrice || product.price)) + '">' + 2157 '<span class="venn-cushion-mark" aria-hidden="true">' + (product.thumbnail ? '<img src="' + esc(product.thumbnail) + '" alt="" loading="lazy" decoding="async">' : '') + '</span>' + 2158 '<span>' + esc(label) + '</span><small>' + money(product.salePrice || product.price) + '</small></button>'; 2159 } 2160 function itemTone(item) { 2161 var image = item && item.type === 'cushion' ? resolveCushionVisual(item) : resolveAirChairVisual(item) || item.nativeImage || ''; 2162 if (image) return 'background-image:url(' + esc(image) + ')'; 2163 var s = seriesForFinish(item.finish); 2164 if (s.key === 'standard') return 'background:' + standardColor(item.finish);
2165 return 'background:' + (s.key === 'solar' ? '#c9b15f' : s.key === 'sports' ? '#7d8baa' : s.key === 'pendleton' ? '#9b6d58' : '#76605a'); 2166 } 2167 function currentNativeImageFor(item) { 2168 if (item && item.type === 'cushion') return resolveCushionVisual(item); 2169 if (state.nativeImage && item && item.type === 'chair' && key(item.finish) === key(state.finish) && key(item.size) === key(state.size)) return state.nativeImage.url; 2170 return resolveAirChairVisual(item) || (item && item.nativeImage ? item.nativeImage : ''); 2171 } 2172 function imageAttrsForItem(item) { 2173 var url = currentNativeImageFor(item); 2174 return url ? ' style="background-image:url(' + esc(url) + ')"' : ' style="' + itemTone(item) + '"'; 2175 } 2176 function priceFor(item) { 2177 if (item.type === 'cushion') { 2178 var cushionProduct = resolveCushionProduct(item); 2179 return Number(item.price || cushionProduct && (cushionProduct.salePrice || cushionProduct.price) || 189); 2180 } 2181 var variant = variantFor(item.finish, item.size); 2182 if (variant && variant.salePrice && variant.salePrice.decimalValue) return Number(variant.salePrice.decimalValue); 2183 if (variant && variant.price && variant.price.decimalValue) return Number(variant.price.decimalValue); 2184 var s = seriesForFinish(item.finish); 2185 if (key(item.finish) === key(state.finish) && key(item.size) === key(state.size)) return state.price || s.base; 2186 if (s.key === 'standard') return item.size === 'Small' ? 299 : 329; 2187 if (s.key === 'solar' || s.key === 'sports') return 349; 2188 if (s.key === 'pendleton') return 399; 2189 return 429; 2190 } 2191 function creditFor(count, subtotal) { 2192 if (count >= 6) return Math.round(subtotal * 0.12); 2193 if (count >= 4) return 110; 2194 if (count >= 2) return 40; 2195 return 0; 2196 } 2197 function roomTotals() { 2198 var subtotal = state.room.reduce(function (sum, item) { return sum + priceFor(item); }, 0); 2199 var credit = creditFor(state.room.length, subtotal); 2200 return { subtotal: subtotal, credit: credit, total: subtotal - credit, count: state.room.length }; 2201 } 2202 function itemCartStatus(item) { 2203 return item && item.cartStatus || 'planned'; 2204 } 2205 function roomCartSummary() { 2206 var count = state.room.length; 2207 var added = state.room.filter(function (item) { return itemCartStatus(item) === 'added'; }).length; 2208 var adding = state.room.filter(function (item) { return itemCartStatus(item) === 'adding'; }).length; 2209 var failed = state.room.filter(function (item) { return itemCartStatus(item) === 'failed'; }).length; 2210 return { count: count, added: added, adding: adding, failed: failed, remaining: Math.max(0, count - added) }; 2211 } 2212 function sameChair(item, finish, size) { 2213 return item && item.type === 'chair' && key(item.finish) === key(finish) && key(item.size) === key(size); 2214 } 2215 function sameCushion(item, product) { 2216 if (!item || item.type !== 'cushion' || !product) return false; 2217 var resolved = resolveCushionProduct(item); 2218 return !!(resolved && (resolved.variantId === product.variantId || key(resolved.sku) === key(product.sku) || resolved.key === product.key)); 2219 } 2220 function firstPlannedRoomItem(match) { 2221 return state.room.find(function (item) { return itemCartStatus(item) !== 'added' && itemCartStatus(item) !== 'adding' && match(item); }) || null; 2222 } 2223 2224 function readProductData() { 2225 var product = window.Static && window.Static.SQUARESPACE_CONTEXT && window.Static.SQUARESPACE_CONTEXT.product; 2226 state.productData = product || state.productData || null; 2227 state.variantMap = {}; 2228 state.variantById = {}; 2229 state.variantBySku = {}; 2230 if (!product || !product.variants) return; 2231 state.nativeFinishValues = []; 2232 state.nativeSizeValues = [];
2233 product.variants.forEach(function (variant) { 2234 var attrs = variant.attributes || {}; 2235 if (attrs.Finish && !state.nativeFinishValues.some(function (v) { return key(v) === key(attrs.Finish); })) state.nativeFinishValues.push(attrs.Finish); 2236 if (attrs.Size && !state.nativeSizeValues.some(function (v) { return key(v) === key(attrs.Size); })) state.nativeSizeValues.push(attrs.Size); 2237 if (attrs.Finish && attrs.Size) state.variantMap[variantKey(attrs.Finish, attrs.Size)] = variant; 2238 if (variantId(variant)) state.variantById[variantId(variant)] = variant; 2239 if (variantSku(variant)) state.variantBySku[key(variantSku(variant))] = variant; 2240 }); 2241 } 2242 function productRoot() { 2243 return qs('article.ProductItem[data-item-id="6a359f921ae6ff3545098bae"]') || qs('article.ProductItem') || document; 2244 } 2245 function nativeControls() { 2246 readProductData(); 2247 var root = productRoot(); 2248 var details = qs('.ProductItem-details:not(.ProductItem-details--mobile)', root) || qs('.ProductItem-details', root) || root; 2249 var finishControl = findOptionControl('Finish', details); 2250 var sizeControl = findOptionControl('Size', details); 2251 var addButton = findAddButton(details) || findAddButton(root); 2252 return { finish: finishControl, size: sizeControl, add: addButton, root: details, productRoot: root }; 2253 } 2254 function findOptionControl(name, root) { 2255 root = root || productRoot(); 2256 var selector = '[data-variant-option-name="' + name + '"]'; 2257 var wrapper = qs(selector + '.variant-radiobtn-wrapper', root) || qs(selector, root); 2258 if (wrapper) { 2259 var choices = qsa('input[type="radio"], input[type="checkbox"]', wrapper); 2260 if (choices.length) return { type: 'choice', name: name, node: wrapper, choices: choices }; 2261 var select = qs('select', wrapper) || (wrapper.tagName && wrapper.tagName.toLowerCase() === 'select' ? wrapper : null); 2262 if (select) return { type: 'select', name: name, node: select }; 2263 } 2264 var direct = qs('select[data-variant-option-name="' + name + '"]', root) || qs('select[aria-label*="' + name + '"]', root); 2265 if (direct) return { type: 'select', name: name, node: direct }; 2266 var named = qsa('input[name="variant-option-' + name + '"]', root); 2267 if (named.length) return { type: 'choice', name: name, node: named[0].closest('.variant-radiobtn-wrapper') || named[0].parentElement, choices: named }; 2268 return null; 2269 } 2270 function labelFor(input) { 2271 if (input.id) { 2272 var label = qs('label[for="' + input.id.replace(/"/g, '\\"') + '"]'); 2273 if (label) return label.textContent; 2274 } 2275 var parent = input.closest('label'); 2276 return parent ? parent.textContent : ''; 2277 } 2278 function findAddButton(root) { 2279 root = root || productRoot(); 2280 return qs('.sqs-add-to-cart-button[data-item-id="6a359f921ae6ff3545098bae"]', root) || 2281 qs('.sqs-add-to-cart-button[role="button"]', root) || 2282 qsa('button, input[type="submit"], [role="button"]', root).find(function (button) { 2283 var text = normalize(button.textContent || button.value).toLowerCase(); 2284 return /add.*cart|add to bag|purchase/.test(text) && !button.closest(ROOT_SELECTOR); 2285 }) || null; 2286 } 2287 function cushionNativeFinish(product) { 2288 return product && (product.nativeFinish || (product.family === 'Standard' ? 'Standard â ' + product.finish : product.finish)) || ''; 2289 } 2290 function cushionProductRoot() { 2291 var itemId = CUSHION_MAP.itemId || '6a36fdcda65151502568ae4b'; 2292 var block = qs('#block-yui_3_17_2_1_1782003475875_34001 .product-block.sqs-block-product[data-product*="' + itemId + '"]'); 2293 if (block && !block.closest('.ProductItem-relatedProducts') && !block.closest(ROOT_SELECTOR)) return block; 2294 return qsa('.product-block.sqs-block-product[data-product*="' + itemId + '"], .sqs-block-product[data-product*="' + itemId + '"]').find(function (node) { 2295 return !node.closest('.ProductItem-relatedProducts') && !node.closest(ROOT_SELECTOR); 2296 }) || null; 2297 } 2298 function validateCushionProductBlock() { 2299 try { 2300 var itemId = CUSHION_MAP.itemId || '6a36fdcda65151502568ae4b'; 2301 var root = cushionProductRoot(); 2302 var custom = qs('[data-venn-add-cushion]', state.root); 2303 var productData = root && (root.getAttribute('data-product') || ''); 2304 var controls = cushionNativeControls(root);
2305 var valid = !!(root && controls.finish && controls.add && custom && productData.indexOf(itemId) > -1 && !root.closest('.ProductItem-relatedProducts') && !root.closest(ROOT_SELECTOR)); 2306 if (valid) { 2307 root.classList.add('venn-cushion-native-root'); 2308 document.body.classList.add('venn-cushion-native-ready'); 2309 state.cushionNativeError = ''; 2310 } else if (custom) { 2311 document.body.classList.remove('venn-cushion-native-ready'); 2312 state.cushionNativeError = 'Native Sitting Cushion inline Product Block controls were not found.'; 2313 setStatus(state.cushionNativeError, true); 2314 } 2315 return valid; 2316 } catch (err) { 2317 document.body.classList.remove('venn-cushion-native-ready'); 2318 state.cushionNativeError = err.message || 'Native Sitting Cushion inline Product Block controls were not found.'; 2319 setStatus(state.cushionNativeError, true); 2320 return false; 2321 } 2322 } 2323 function cushionNativeControls(root) { 2324 root = root || cushionProductRoot(); 2325 if (!root) return { finish: null, add: null, root: null, productRoot: cushionProductRoot(), variants: null, trigger: null }; 2326 var itemId = CUSHION_MAP.itemId || '6a36fdcda65151502568ae4b'; 2327 return { 2328 finish: findOptionControl('Finish', root), 2329 add: qs('.sqs-add-to-cart-button[data-item-id="' + itemId + '"]', root) || qs('.sqs-add-to-cart-button', root), 2330 root: root, 2331 productRoot: cushionProductRoot(), 2332 variants: qs('.product-variants[data-item-id="' + itemId + '"]', root), 2333 trigger: null 2334 }; 2335 } 2336 function cushionNativeVariant(product, controls) {
2337 if (!product || !controls || !controls.variants) return null; 2338 try { 2339 var variants = JSON.parse(controls.variants.getAttribute('data-variants') || '[]'); 2340 return variants.find(function (variant) { 2341 var finish = variant.attributes && variant.attributes.Finish; 2342 return variant.id === product.variantId || key(variant.sku) === key(product.sku) || key(finish) === key(cushionNativeFinish(product)); 2343 }) || null; 2344 } catch (err) { 2345 return null; 2346 } 2347 } 2348 function syncNativeCushion(product, inlineRoot) { 2349 if (!product) return Promise.resolve(false); 2350 return Promise.resolve().then(function () { 2351 var controls = cushionNativeControls(inlineRoot); 2352 if (!controls.productRoot) throw new Error('Native Sitting Cushion Product Block was not found.'); 2353 if (!controls.finish || !controls.add) throw new Error('Native Sitting Cushion inline controls were not found.'); 2354 var nativeVariant = cushionNativeVariant(product, controls); 2355 if (controls.variants && (!nativeVariant || (nativeVariant.id !== product.variantId && key(nativeVariant.sku) !== key(product.sku)))) throw new Error('Native Sitting Cushion variant did not match the selected finish.'); 2356 if (!setNativeValue(controls.finish, cushionNativeFinish(product))) throw new Error('Native Sitting Cushion Finish option was not found.'); 2357 return delay(240).then(function () { 2358 controls = cushionNativeControls(inlineRoot);
2359 var selected = key(selectedText(controls.finish)) === key(cushionNativeFinish(product)); 2360 var verified = cushionNativeVariant(product, controls); 2361 if (!selected || (controls.variants && (!verified || (verified.id !== product.variantId && key(verified.sku) !== key(product.sku))))) throw new Error('Native Sitting Cushion variant did not verify.'); 2362 state.cushionNativeReady = true; 2363 state.cushionNativeKey = product.key; 2364 state.cushionNativeError = ''; 2365 return true; 2366 }); 2367 }).catch(function (err) { 2368 state.cushionNativeReady = false; 2369 state.cushionNativeKey = ''; 2370 state.cushionNativeError = err.message; 2371 setStatus(err.message, true); 2372 return false; 2373 }); 2374 } 2375 function cartSignal() { 2376 return qsa('.sqs-cart-quantity, .sqs-cart-quantity-label, .cart-quantity, [data-test="cart-quantity"], [class*="cart"] [class*="quantity"]').map(function (node) { 2377 return normalize(node.textContent || node.getAttribute('aria-label') || ''); 2378 }).join('|'); 2379 } 2380 function nativeCushionAddError(root) { 2381 root = root || document; 2382 return qsa('.form-error, .field-error, .variant-out-of-stock, .product-mark.sold-out, [class*="error"]', root).find(function (node) { 2383 return normalize(node.textContent || '').length; 2384 }) || null; 2385 } 2386 function nativeCushionAddSuccess(root) { 2387 root = root || document; 2388 return qsa('.sqs-add-to-cart-button, .sqs-add-to-cart-button-wrapper, .cart-added, .sqs-cart-added, [class*="success"]', root).some(function (node) { 2389 return /added|view cart|checkout|success/i.test(normalize(node.textContent || node.getAttribute('aria-label') || node.getAttribute('title') || '')); 2390 }); 2391 } 2392 function waitForCushionAddResult(root, before, attempt) { 2393 attempt = attempt || 0; 2394 var err = nativeCushionAddError(root); 2395 if (err) return Promise.resolve(false); 2396 if (cartSignal() !== before && attempt > 0) return Promise.resolve(true); 2397 if (nativeCushionAddSuccess(root) && attempt > 0) return Promise.resolve(true); 2398 if (attempt >= 8) return Promise.resolve(false); 2399 return delay(180).then(function () { return waitForCushionAddResult(root, before, attempt + 1); }); 2400 } 2401 function cartAction() { 2402 return qs('a[href*="/cart"], a[href*="cart"], button[aria-label*="Cart"], [role="button"][aria-label*="Cart"], .header-actions-action--cart a, .sqs-cart-dropzone a') || 2403 qsa('a, button, [role="button"]').find(function (node) { 2404 return /cart|bag|checkout/i.test(normalize(node.getAttribute('aria-label') || node.getAttribute('title') || node.textContent || '')) && !node.closest(ROOT_SELECTOR); 2405 }) || null; 2406 } 2407 function openNativeCart() { 2408 var action = cartAction(); 2409 if (action && typeof action.click === 'function') { 2410 action.click(); 2411 return true; 2412 } 2413 if (action && action.href) { 2414 window.location.href = action.href; 2415 return true; 2416 } 2417 return false; 2418 } 2419 function nearestCommerceRoot(node) { 2420 return node ? (node.closest('.ProductItem-details') || node.closest('article.ProductItem') || node.parentElement) : null; 2421 } 2422 function selectedText(control) { 2423 if (!control) return ''; 2424 if (control.type === 'select') { 2425 var opt = control.node.options[control.node.selectedIndex]; 2426 return normalize(opt ? opt.textContent || opt.value : control.node.value); 2427 } 2428 if (control.type === 'choice') { 2429 var checked = control.choices.find(function (input) { return input.checked; }); 2430 return checked ? normalize(checked.value || labelFor(checked)) : ''; 2431 } 2432 return ''; 2433 } 2434 function optionValues(control) { 2435 if (!control) return []; 2436 if (control.type === 'select') return qsa('option', control.node).map(function (o) { return normalize(o.textContent || o.value); }).filter(Boolean); 2437 return control.choices.map(function (input) { return normalize(input.value || labelFor(input)); }).filter(Boolean); 2438 } 2439 function setNativeValue(control, intended) { 2440 if (!control) return false; 2441 var intendedKey = key(intended); 2442 if (control.type === 'select') { 2443 var options = qsa('option', control.node); 2444 var option = options.find(function (o) { return key(o.textContent || o.value) === intendedKey || key(o.value) === intendedKey; }); 2445 if (!option) return false;
2446 control.node.value = option.value; 2447 dispatchNative(control.node); 2448 return true; 2449 } 2450 if (control.type === 'choice') { 2451 var choice = control.choices.find(function (input) { return key(input.value) === intendedKey || key(labelFor(input)) === intendedKey; }); 2452 if (!choice) return false; 2453 var label = choice.id ? qs('label[for="' + choice.id.replace(/"/g, '\\"') + '"]') : null; 2454 if (label && typeof label.click === 'function') label.click(); 2455 if (typeof choice.click === 'function') choice.click(); 2456 choice.checked = true; 2457 dispatchNative(choice); 2458 return true; 2459 } 2460 return false; 2461 } 2462 function dispatchNative(node) { 2463 ['input', 'change'].forEach(function (type) { 2464 try { node.dispatchEvent(new Event(type, { bubbles: true, cancelable: true })); } catch (err) {} 2465 }); 2466 } 2467 function delay(ms) { return new Promise(function (resolve) { setTimeout(resolve, ms); }); } 2468 function syncNative(finish, size, retry) { 2469 if (state.syncing) return Promise.resolve(false); 2470 state.syncing = true; 2471 setStatus('Syncing native Squarespace variant...'); 2472 renderLock(true); 2473 return Promise.resolve().then(function () { 2474 var controls = nativeControls(); 2475 var nativeFinish = nativeFinishValue(finish) || displayFinish(finish); 2476 var nativeSize = nativeSizeValue(size) || size;
2477 if (!controls.finish || !controls.size || !controls.add) throw new Error('Native Finish, Size, or Add to Cart was not found.'); 2478 if (!setNativeValue(controls.finish, nativeFinish)) throw new Error('Native Finish option was not found: ' + nativeFinish); 2479 if (!setNativeValue(controls.size, nativeSize)) throw new Error('Native Size option was not found: ' + nativeSize); 2480 return delay(240).then(function () { 2481 controls = nativeControls(); 2482 var ok = key(selectedText(controls.finish)) === key(nativeFinish) && key(selectedText(controls.size)) === key(nativeSize); 2483 if (!ok && retry !== false) { 2484 state.syncing = false; 2485 renderLock(false); 2486 return syncNative(finish, size, false); 2487 } 2488 if (!ok) throw new Error('Native variant did not verify after retry.'); 2489 markReady(controls); 2490 readNativeState(controls); 2491 applyVariantImage(finish, size); 2492 observeNativeGallery(controls.productRoot); 2493 setStatus(state.available ? 'Ready to add through Squarespace.' : 'This variant may be unavailable.'); 2494 return true; 2495 }); 2496 }).catch(function (err) { 2497 setStatus(err.message, true); 2498 return false; 2499 }).then(function (ok) { 2500 state.syncing = false; 2501 renderLock(false); 2502 render(); 2503 return ok; 2504 }); 2505 } 2506 2507 function attr(node, names) { 2508 for (var i = 0; i < names.length; i++) { 2509 var value = node && node.getAttribute && node.getAttribute(names[i]); 2510 if (value) return value; 2511 } 2512 return ''; 2513 } 2514 function bestFromSrcset(srcset) { 2515 if (!srcset) return ''; 2516 var candidates = srcset.split(',').map(function (part) { 2517 var pieces = normalize(part).split(' '); 2518 var url = pieces[0]; 2519 var width = pieces[1] && /w$/.test(pieces[1]) ? parseInt(pieces[1], 10) : 0; 2520 return { url: url, width: width || 0 }; 2521 }).filter(function (item) { return item.url && item.url.indexOf('data:') !== 0; }); 2522 if (!candidates.length) return ''; 2523 candidates.sort(function (a, b) { return Math.abs((a.width || 1200) - 1200) - Math.abs((b.width || 1200) - 1200); }); 2524 return candidates[0].url; 2525 } 2526 function imageUrlFrom(node) { 2527 if (!node) return ''; 2528 if (node.tagName && node.tagName.toLowerCase() === 'picture') node = qs('img', node); 2529 var srcset = attr(node, ['srcset', 'data-srcset', 'data-image-srcset']); 2530 return bestFromSrcset(srcset) || node.currentSrc || node.src || attr(node, ['src', 'data-src', 'data-image', 'data-image-src', 'data-original']) || ''; 2531 } 2532 function isUsableImage(url) { 2533 return !!url && url.indexOf('data:') !== 0; 2534 } 2535 function findNativeProductImage() { 2536 var selectors = [ 2537 '.ProductItem-gallery img', '.ProductItem-gallery-slides img', '.product-gallery img', '.product-image img', 2538 '[data-test*="product"] img', '[class*="ProductItem"] img', '[class*="product"] img' 2539 ]; 2540 for (var i = 0; i < selectors.length; i++) { 2541 var images = qsa(selectors[i]).filter(function (img) { return !img.closest(ROOT_SELECTOR); }); 2542 for (var j = 0; j < images.length; j++) { 2543 var box = images[j].getBoundingClientRect ? images[j].getBoundingClientRect() : { width: 0, height: 0 }; 2544 var url = imageUrlFrom(images[j]); 2545 if (isUsableImage(url) && (box.width >= 80 || images[j].naturalWidth >= 300 || /squarespace|static1/.test(url))) return { url: url, srcset: attr(images[j], ['srcset', 'data-srcset', 'data-image-srcset']) }; 2546 } 2547 } 2548 return null; 2549 } 2550 function applyVariantImage(finish, size) { 2551 var image = imageForFinish(finish, size); 2552 if (!image) return false; 2553 state.nativeImage = { url: image, srcset: '' }; 2554 state.gallery = -1; 2555 var main = qs('[data-venn-gallery-main]', state.root); 2556 if (main) { 2557 state.suppressObserver = true; 2558 main.removeAttribute('srcset'); 2559 main.src = image; 2560 main.alt = finishName(finish) + ' Air Chair'; 2561 main.style.objectPosition = 'center'; 2562 setTimeout(function () { state.suppressObserver = false; }, 0); 2563 } 2564 return true; 2565 } 2566 function applyNativeImage(image) { 2567 if (!image || !isUsableImage(image.url)) return false;
2568 state.nativeImage = image; 2569 state.gallery = -1; 2570 var main = qs('[data-venn-gallery-main]', state.root); 2571 if (main) { 2572 state.suppressObserver = true; 2573 main.removeAttribute('srcset'); 2574 if (image.srcset) main.setAttribute('srcset', image.srcset); 2575 main.src = image.url; 2576 main.alt = finishName(state.finish) + ' Air Chair'; 2577 main.style.objectPosition = 'center'; 2578 setTimeout(function () { state.suppressObserver = false; }, 0); 2579 } 2580 renderRoom(); 2581 return true; 2582 } 2583 function updateNativeImageSoon(attempt, startedAt) { 2584 attempt = attempt || 0; 2585 startedAt = startedAt || Date.now(); 2586 if (Date.now() - startedAt > 5000) return; 2587 var image = findNativeProductImage(); 2588 if (applyNativeImage(image)) return; 2589 if (attempt < 5) { 2590 clearTimeout(state.nativeRetryTimer); 2591 state.nativeRetryTimer = setTimeout(function () { updateNativeImageSoon(attempt + 1, startedAt); }, 160 + attempt * 120); 2592 } 2593 } 2594 function nativeGalleryRoot(root) { 2595 return qs('.ProductItem-gallery', root || productRoot()) || qs('.product-gallery', root || productRoot()) || null; 2596 } 2597 function observeNativeGallery(root) { 2598 if (state.nativeObserver || !window.MutationObserver) return; 2599 var target = nativeGalleryRoot(root); 2600 if (!target) return; 2601 state.nativeObserver = new MutationObserver(function () { 2602 if (state.suppressObserver) return; 2603 clearTimeout(state.observerTimer); 2604 state.observerTimer = setTimeout(function () { updateNativeImageSoon(0, Date.now()); }, 120); 2605 }); 2606 state.nativeObserver.observe(target, { childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'srcset', 'data-src', 'data-srcset', 'data-image-src'] }); 2607 } 2608
2609 function readNativeState(controls) { 2610 var root = controls && controls.root ? controls.root : document; 2611 var variant = variantFor(state.finish, state.size); 2612 if (variant && variant.salePrice && variant.salePrice.decimalValue) state.price = Number(variant.salePrice.decimalValue); 2613 else if (variant && variant.price && variant.price.decimalValue) state.price = Number(variant.price.decimalValue); 2614 else { 2615 var priceNode = qs('[data-test*="price"], .product-price, .ProductItem-details-price, [class*="price"]', root) || qs('[data-test*="price"], .product-price, [class*="price"]'); 2616 if (priceNode) { 2617 var match = normalize(priceNode.textContent).match(/\$[\d,]+(?:\.\d{2})?/); 2618 if (match) state.price = Number(match[0].replace(/[$,]/g, '')); 2619 } 2620 } 2621 var add = controls && controls.add; 2622 var addText = normalize(add && (add.textContent || add.value) || ''); 2623 var soldOut = variant && variant.stock && variant.stock.unlimited === false && Number(variant.stock.quantity || 0) <= 0; 2624 state.available = !soldOut && !(add && (add.disabled || add.getAttribute('aria-disabled') === 'true' || /sold|unavailable|out of stock/i.test(addText))); 2625 } 2626 function markReady(controls) { 2627 if (state.mounted && state.root && state.productData && controls.root && controls.finish && controls.size && controls.add) { 2628 controls.root.classList.add(NATIVE_CLASS); 2629 state.nativeReady = true; 2630 if (!DEBUG_NATIVE) { 2631 document.body.classList.add(READY_CLASS); 2632 prepareNativeFocus(controls.productRoot || productRoot()); 2633 } 2634 } 2635 } 2636 function tryMarkNativeReady(attempt) { 2637 attempt = attempt || 0; 2638 try { 2639 readProductData(); 2640 var controls = nativeControls(); 2641 if (controls.finish && controls.size && controls.add && state.productData) { 2642 markReady(controls);
2643 readNativeState(controls); 2644 renderConfig(); 2645 return true; 2646 } 2647 } catch (err) { 2648 if (attempt >= 10) setStatus(err.message || 'Native Air Chair commerce bridge was not found.', true); 2649 } 2650 if (!state.nativeReady && attempt < 10) { 2651 clearTimeout(state.nativeRetryTimer); 2652 state.nativeRetryTimer = setTimeout(function () { tryMarkNativeReady(attempt + 1); }, 150); 2653 } else if (!state.nativeReady && attempt >= 10) { 2654 setStatus('Native Air Chair commerce bridge was not found.', true); 2655 } 2656 return false; 2657 } 2658 function prepareNativeFocus(root) { 2659 var wrappers = qsa('.ProductItem-gallery, .ProductItem-details-title, .ProductItem-details-price, .ProductItem-details-excerpt, .variant-option, .product-quantity-input, .sqs-add-to-cart-button-wrapper, .ProductItem-details-share', root || productRoot()).filter(function (node) { return !node.closest(ROOT_SELECTOR); }); 2660 wrappers.forEach(function (node) { 2661 qsa('a, button, input, select, textarea, [tabindex], [role="button"]', node).forEach(function (focusable) { 2662 if (!focusable.hasAttribute('data-venn-native-tabindex')) focusable.setAttribute('data-venn-native-tabindex', focusable.getAttribute('tabindex') || ''); 2663 focusable.setAttribute('tabindex', '-1'); 2664 }); 2665 }); 2666 } 2667 function setStatus(message, error) { 2668 state.status = message; 2669 state.statusError = !!error; 2670 var node = qs('[data-venn-status]', state.root); 2671 if (node) { 2672 node.textContent = message || ''; 2673 node.classList.toggle('is-error', !!error); 2674 } 2675 } 2676 function renderLock(locked) { 2677 if (!state.root) return; 2678 state.root.classList.toggle('venn-is-syncing', !!locked); 2679 qsa('button', state.root).forEach(function (button) { button.disabled = !!locked && !button.hasAttribute('data-venn-gallery'); }); 2680 } 2681 2682 function availableFinishes() { 2683 readProductData(); 2684 var values = state.nativeFinishValues.slice(); 2685 if (!values.length) { 2686 var controls = nativeControls(); 2687 values = optionValues(controls.finish); 2688 } 2689 return values.length ? values : FALLBACK_FINISHES.map(function (v) { return v.replace(/\\u2014/g, '\u2014'); }); 2690 } 2691 function finishesForSeries(seriesKey) { 2692 var series = SERIES.find(function (s) { return s.key === seriesKey; }) || SERIES[0]; 2693 return availableFinishes().filter(function (f) { return key(f).indexOf(key(series.prefix)) === 0; }); 2694 } 2695 function currentSeries() { return SERIES.find(function (s) { return s.key === state.series; }) || SERIES[0]; } 2696 2697 function canonicalFinish(finish) { 2698 var wanted = key(finish); 2699 return availableFinishes().find(function (f) { return key(f) === wanted; }) || normalize(finish).replace(/\\u2014/g, '\u2014'); 2700 } 2701 function availableCushionProductByKeys(keys, family) { 2702 var fams = family ? [family] : ['Standard', 'Pendleton']; 2703 for (var f = 0; f < fams.length; f += 1) { 2704 for (var i = 0; i < keys.length; i += 1) { 2705 var product = cushionProductByKey(keys[i], fams[f]); 2706 if (product && product.available) return product; 2707 } 2708 } 2709 return null; 2710 } 2711 function exactStandardCushionForFinish(finish) { 2712 var s = seriesForFinish(finish); 2713 if (s.key !== 'standard') return null; 2714 return cushionProductByKey(slug(finishName(finish)), 'Standard'); 2715 } 2716 function cushionForIntent(role, finish) { 2717 var exact = exactStandardCushionForFinish(finish); 2718 if (exact && (role === 'match' || role === 'primary')) return cushion(exact.nativeFinish || ('Standard \u2014 ' + exact.finish)); 2719 2720 var s = seriesForFinish(finish); 2721 var name = slug(finishName(finish)); 2722 var preferred = []; 2723 2724 if (s.key === 'standard') { 2725 if (['pink', 'dusty-rose', 'mango', 'brick'].indexOf(name) > -1) preferred = role === 'contrast' ? ['natural', 'cloud', 'sand'] : [name, 'dusty-rose', 'pink', 'natural']; 2726 else if (['fern', 'mint', 'lagoon'].indexOf(name) > -1) preferred = role === 'contrast' ? ['pink', 'dusty-rose', 'mango'] : [name, 'natural', 'cloud', 'sand']; 2727 else preferred = [name, 'natural', 'cloud', 'graphite', 'sand']; 2728 } else if (s.key === 'solar') { 2729 preferred = role === 'contrast' ? ['pink', 'dusty-rose', 'mango', 'lagoon'] : ['natural', 'cloud', 'graphite', 'sand', 'fern']; 2730 } else if (s.key === 'sports') { 2731 preferred = role === 'contrast' ? ['mango', 'pink', 'lagoon', 'dusty-rose'] : ['natural', 'graphite', 'sand', 'cloud']; 2732 } else { 2733 preferred = role === 'contrast' ? ['mango', 'dusty-rose', 'brick']
2733: ['natural', 'graphite', 'sand', 'cloud']; 2734 } 2735 2736 var product = availableCushionProductByKeys(preferred, 'Standard') || availableCushionProductByKeys(['natural', 'cloud', 'graphite', 'sand', 'fern'], 'Standard'); 2737 return product ? cushion(product.nativeFinish || ('Standard \u2014 ' + product.finish)) : cushion('Standard \u2014 Natural'); 2738 } 2739 function companionChairForIntent(finish, size) { 2740 var s = seriesForFinish(finish); 2741 var name = slug(finishName(finish)); 2742 var target = 'Standard \u2014 Fern'; 2743 2744 if (s.key === 'standard') { 2745 if (['pink', 'dusty-rose', 'mango', 'brick'].indexOf(name) > -1) target = 'Standard \u2014 Natural'; 2746 else if (['navy', 'graphite', 'iron'].indexOf(name) > -1) target = 'Standard \u2014 Cloud'; 2747 else target = 'Standard \u2014 Natural'; 2748 } else if (s.key === 'solar') { 2749 target = 'Standard \u2014 Fern'; 2750 } else if (s.key === 'sports') { 2751 target = 'Standard \u2014 Navy'; 2752 } else if (s.key === 'pendleton') { 2753 target = 'Standard \u2014 Natural'; 2754 } else if (s.key === 'jacquard') { 2755 target = 'Standard \u2014 Camel'; 2756 } 2757 2758 target = canonicalFinish(target); 2759 return chair(target, size === 'Large' ? 'Small' : 'Large'); 2760 } 2761 function studioPaletteForIntent(finish, size) { 2762 var primary = chair(finish, size || 'Large'); 2763 var s = seriesForFinish(finish); 2764 var second = companionChairForIntent(finish, size || 'Large'); 2765 var third = s.key === 'sports' ? chair(canonicalFinish('Sports \u2014 Basketball'), 'Small') : chair(canonicalFinish('Standard \u2014 Navy'), 'Large'); 2766 var fourth = chair(canonicalFinish('Standard \u2014 Fern'), 'Small'); 2767 return [primary, second, third, fourth, cushionForIntent('primary', finish), cushionForIntent('contrast', finish)]; 2768 } 2769 function setupItemsForPreset(preset) { 2770 var finish = canonicalFinish(state.finish); 2771 var size = state.size || 'Large'; 2772 if (!preset || preset.id === 'seat') return [chair(finish, size)]; 2773 if (preset.id === 'desk-floor') return [chair(finish, size), cushionForIntent('primary', finish)]; 2774 if (preset.id === 'movement') return [chair(finish, size), companionChairForIntent(finish, size), cushionForIntent('primary', finish), cushionForIntent('contrast', finish)]; 2775 if (preset.id === 'family') return studioPaletteForIntent(finish, size); 2776 return (preset.items || []).map(function (item) { return item.type === 'chair' ? chair(finish, item.size || size) : item; }); 2777 } 2778 function totalsForItems(items) { 2779 var subtotal = items.reduce(function (sum, item) { return sum + priceFor(item); }, 0); 2780 var credit = creditFor(items.length, subtotal); 2781 return { subtotal: subtotal, credit: credit, total: subtotal - credit, count: items.length }; 2782 } 2783 function applyIntentToActiveSetup() { 2784 var preset = PRESETS.find(function (p) { return p.id === state.activePreset; }) || PRESETS[0]; 2785 state.room = setupItemsForPreset(preset).map(function (item) { return withUid(item); }); 2786 state.editing = null; 2787 state.roomAdding = false; 2788 } 2789 function preloadVariantImage(finish, size) { 2790 var url = imageForFinish(finish, size || state.size); 2791 if (!url) return; 2792 var img = new Image(); 2793 img.src = thumbnailUrl(url).replace('format=300w', 'format=1000w'); 2794 } 2795 function selectAirChairIntent(finish, size, options) { 2796 options = options || {}; 2797 if (!finish) return false; 2798 state.finish = canonicalFinish(finish); 2799 state.size = size || state.size || 'Large'; 2800 state.series = seriesForFinish(state.finish).key; 2801 state.renderedFinishSeries = ''; 2802 preloadVariantImage(state.finish, state.size); 2803 applyVariantImage(state.finish, state.size); 2804 applyIntentToActiveSetup(); 2805 syncNative(state.finish, state.size); 2806 render(); 2807 if (options.scroll !== false && state.root) { 2808 requestAnimationFrame(function () { 2809 state.root.scrollIntoView({ behavior: options.instant ? 'auto' : 'smooth', block: 'start' }); 2810 }); 2811 } 2812 return true; 2813 } 2814 2815 2816 function render() { 2817 if (!state.root) return; 2818 renderGallery(); 2819 renderSetups(); 2820 renderConfig(); 2821 renderRoom(); 2822 setStatus(state.status || '', state.statusError); 2823 } 2824 function renderGallery() { 2825 var main = qs('[data-venn-gallery-main]', state.root); 2826 var caption = qs('[data-venn-gallery-caption]', state.root); 2827 var thumbs = qs('[data-venn-gallery-thumbs]', state.root); 2828 if (state.gallery < 0 && state.nativeImage && main) { 2829 main.removeAttribute('srcset'); 2830 if (state.nativeImage.srcset) main.setAttribute('srcset', state.nativeImage.srcset); 2831 main.src = state.nativeImage.url;
2832 main.alt = finishName(state.finish) + ' Air Chair'; 2833 main.style.objectPosition = 'center'; 2834 if (caption) caption.textContent = finishName(state.finish) + ' - selected product image'; 2835 } else { 2836 var g = GALLERY[state.gallery] || GALLERY[0]; 2837 if (main) { 2838 main.removeAttribute('srcset'); 2839 main.src = asset(g.src); 2840 main.alt = g.alt; 2841 main.style.objectPosition = g.pos || 'center'; 2842 } 2843 if (caption) caption.textContent = g.cap; 2844 } 2845 if (thumbs && !state.galleryThumbsRendered) { 2846 state.galleryThumbsRendered = true; 2847 thumbs.innerHTML = GALLERY.map(function (item, i) { 2848 return '<button type="button" data-venn-gallery="' + i + '" class="' + (i === state.gallery ? 'is-active' : '') + '" aria-label="' + esc(item.alt) + '"><img src="' + esc(asset(item.src)) + '" alt="" loading="lazy" decoding="async"></button>'; 2849 }).join(''); 2850 } 2851 } 2852 function renderSetups() { 2853 var row = qs('[data-venn-setups]', state.root); 2854 var selected = qs('[data-venn-selected-setup]', state.root); 2855 if (row) { 2856 row.innerHTML = PRESETS.map(function (p) { 2857 var items = setupItemsForPreset(p); 2858 var t = totalsForItems(items); 2859 var selectedClass = p.id === state.activePreset ? ' is-selected' : ''; 2860 var badge = p.id === 'movement' ? 'Best value' : p.id === 'family' ? 'Set pricing' : t.credit ? 'Save ' + money(t.credit) : ''; 2861 return '<button type="button" class="venn-setup-card' + selectedClass + '" data-venn-preset="' + p.id + '" aria-pressed="' + (p.id === state.activePreset) + '">' + 2862 '<span class="venn-setup-mini">' + dots(items) + '</span>' + 2863 '<span class="venn-setup-name">' + esc(p.name) + '</span>' + 2864 '<span class="venn-setup-desc">' + esc(p.best) + '</span>' + 2865 '<span class="venn-setup-price">' + money(t.total) + (t.credit ? ' <s>' + money(t.subtotal) + '</s>' : '') + '</span>' + 2866 (badge ? '<span class="venn-badge ' + (t.credit && p.id !== 'movement' ? 'is-save' : '') + '">' + esc(badge) + '</span>' : '') + 2867 '</button>'; 2868 }).join(''); 2869 } 2870 if (selected) { 2871 var p2 = PRESETS.find(function (p) { return p.id === state.activePreset; }) || PRESETS[0]; 2872 var items2 = setupItemsForPreset(p2); 2873 var t2 = totalsForItems(items2); 2874 selected.innerHTML = '<div class="venn-selected-copy"><span class="venn-selected-kicker">' + esc(p2.name) + '</span><div class="venn-selected-strip" aria-label="' + esc(p2.name + ' included products') + '">' + selectedDots(items2) + '</div><strong>' + esc(setupSummary(items2)) + '</strong><span>' + esc(p2.best) + '</span></div>' + 2875 '<div class="venn-selected-price"><span>Today</span><strong>' + money(t2.total) + '</strong>' + (t2.credit ? '<s>' + money(t2.subtotal) + '</s>' : '') + '<em>' + (t2.credit ? 'Room credit -' + money(t2.credit) : 'Ready now') + '</em></div>'; 2876 } 2877 } 2878 function renderConfig() { 2879 var seriesNode = qs('[data-venn-series]', state.root); 2880 var finishNode = qs('[data-venn-finishes]', state.root); 2881 var sizeNode = qs('[data-venn-sizes]', state.root); 2882 var labelSeries = qs('[data-venn-series-label]', state.root); 2883 var labelFinish = qs('[data-venn-finish-label]', state.root); 2884 var labelSize = qs('[data-venn-size-label]', state.root); 2885 var add = qs('[data-venn-add-air-chair]', state.root); 2886 var addCushion = qs('[data-venn-add-cushion]', state.root); 2887 var s = currentSeries(); 2888 var finishes = finishesForSeries(s.key); 2889 if (finishes.indexOf(state.finish) < 0 && !finishes.some(function (f) { return key(f) === key(state.finish); })) state.finish = finishes[0] || state.finish; 2890 if (labelSeries) labelSeries.textContent = s.label + ' - from ' + money(s.base); 2891 if (labelFinish) labelFinish.textContent = finishName(state.finish); 2892 if (labelSize) labelSize.textContent = state.size + (state.size === 'Large' ? ' - 65 cm' : ' - 55 cm'); 2893 if (seriesNode) { 2894 seriesNode.innerHTML = SERIES.map(function (item) { 2895 return '<button type="button" data-venn-series-key="' + item.key + '" class="' + (item.key === state.series ? 'is-active' : '') + '">' + esc(item.label) + '</button>'; 2896 }).join(''); 2897 } 2898 if (finishNode) { 2899 if (state.renderedFinishSeries !== state.series || !finishNode.children.length) { 2900 state.renderedFinishSeries = state.series; 2901 finishNode.innerHTML = finishes.map(function (finish) { 2902 return finishChipMarkup(finish, key(finish) === key(state.finish), 'data-venn-finish="' + esc(finish) + '"', ''); 2903 }).join(''); 2904 } else { 2905 qsa('[data-venn-finish]', finishNode).forEach(function (button) { 2906 button.classList.toggle('is-active', key(button.getAttribute('data-venn-finish')) === key(state.finish)); 2907 }); 2908 } 2909 } 2910 if (sizeNode) { 2911 sizeNode.innerHTML = ['Large', 'Small'].map(function (size) { 2912 return '<button type="button" data-venn-size="' + size + '" class="' + (size === state.size ? 'is-active' : '') + '"><strong>' + size + '</strong><small>' + (size === 'Large' ? '65 cm - desk & task' : '55 cm - lounge & kids') + '</small></button>'; 2913 }).join(''); 2914 } 2915 if (add) { 2916 add.disabled = state.addingAirChair || state.syncing || !state.available; 2917 if (state.addingAirChair) add.setAttribute('aria-busy', 'true'); 2918 else add.removeAttribute('aria-busy'); 2919 add.textContent = state.addingAirChair ? 'Adding...' : state.airChairAdded ? 'Added â' : state.available ? 'Add Air Chair - ' + money(state.price || s.base) : 'Unavailable'; 2920 } 2921 if (addCushion) { 2922 var selectedCushion = cushionProductByKey(state.selectedCushionKey, state.cushionFamily); 2923 addCushion.disabled = state.addingCushion || (state.cushionOpen && !selectedCushion); 2924 if (state.addingCushion) addCushion.setAttribute('aria-busy', 'true'); 2925 else addCushion.removeAttribute('aria-busy'); 2926 addCushion.textContent = state.addingCushion ? 'Adding...' : state.cushionAdded ? 'Added â' : !state.cushionOpen ? '+ Sitting Cushion - from $189' : selectedCushion ? 'Add ' + shortCushionName(selectedCushion) + ' Cushion - ' + money(selectedCushion.salePrice || selectedCushion.price) : 'Select a Cushion finish'; 2927 renderCushionSelector(addCushion); 2928 } 2929 } 2930 function renderCushionSelector(anchor) { 2931 if (!anchor || !anchor.parentElement) return; 2932 var node = qs('[data-venn-cushion-selector]', state.root); 2933 if (!state.cushionOpen) { 2934 if (node) node.remove(); 2935 return; 2936 } 2937 if (!node) { 2938 node = document.createElement('div'); 2939 node.className = 'venn-cushion-selector'; 2940 node.setAttribute('data-venn-cushion-selector', ''); 2941 anchor.parentElement.insertBefore(node, anchor.nextSibling); 2942 } 2943 var selected = cushionProductByKey(state.selectedCushionKey, state.cushionFamily); 2944 var families = ['Standard', 'Pendleton']; 2945 node.innerHTML = '<div class="venn-editor-label">Sitting Cushion</div>' + 2946 '<div class="venn-cushion-family" role="group" aria-label="Sitting Cushion family">' + families.map(function (family) { 2947 return '<button type="button" data-venn-cushion-family="' + family + '" class="' + (family === state.cushionFamily ? 'is-active' : '') + '">' + family + '</button>'; 2948 }).join('') + '</div>' + 2949 '<div class="venn-cushion-rail" role="group" aria-label="' + esc(state.cushionFamily) + ' Sitting Cushion products">' + cushionProducts(state.cushionFamily).map(function (product) { 2950 return cushionProductChip(product, selected && product.key === selected.key, 'data-venn-cushion-pick="' + esc(product.key) + '"', ''); 2951 }).join('') + '</div>' + 2952 (selected ? '<p class="venn-cushion-note">' + esc(selected.title) + ' - ' + money(selected.salePrice || selected.price) + '</p>' : '<p class="venn-cushion-note">Select a verified Cushion before adding.</p>') + 2953 (state.cushionNativeError ? '<p class="venn-cushion-note is-error">' + esc(state.cushionNativeError) + '</p>' : ''); 2954 } 2955 function roomUpgradeIncentiveMarkup(t) { 2956 if (!t || !t.count) return ''; 2957 var nextCount = t.count + 1; 2958 var nextCredit = creditFor(nextCount, t.subtotal + 189); 2959 if (t.count === 1) { 2960 return '<div class="venn-room-incentive"><strong>Add the floor posture.</strong><span>One Sitting Cushion starts your room credit at $40 and gives the setup a second w
2960ay to sit.</span></div>'; 2961 } 2962 if (t.count > 1 && t.count < 4) { 2963 var needed = 4 - t.count; 2964 return '<div class="venn-room-incentive"><strong>' + needed + ' more piece' + (needed === 1 ? '' : 's') + ' raises the room credit.</strong><span>Four-piece rooms get $110 back and cover desk, lounge, floor, and stretch.</span></div>'; 2965 } 2966 if (t.count >= 4 && t.count < 6) { 2967 var left = 6 - t.count; 2968 return '<div class="venn-room-incentive"><strong>' + left + ' more piece' + (left === 1 ? '' : 's') + ' unlocks set pricing.</strong><span>Six-piece rooms move to 12% room credit for shared spaces, kids, studios, and clinics.</span></div>'; 2969 } 2970 return '<div class="venn-room-incentive is-active"><strong>Set pricing is active.</strong><span>Your room already qualifies for the highest multi-piece credit.</span></div>'; 2971 } 2972 function roomTrustMarkup() { 2973 return '<div class="venn-room-trust" aria-label="Purchase confidence">' + 2974 '<span><b>Free USA</b><small>shipping</small></span>' + 2975 '<span><b>5-year</b><small>warranty</small></span>' + 2976 '<span><b>Pump</b><small>included</small></span>' + 2977 '<span><b>30-day</b><small>returns</small></span>' + 2978 '<span><b>Made</b><small>in USA</small></span>' + 2979 '</div>'; 2980 } 2981 function renderRoom() { 2982 var meta = qs('[data-venn-room-meta]', state.root); 2983 var plan = qs('[data-venn-room-plan]', state.root); 2984 var list = qs('[data-venn-room-items]', state.root); 2985 var chips = qs('[data-venn-chips]', state.root); 2986 var totals = qs('[data-venn-totals]', state.root); 2987 var clear = qs('[data-venn-clear-room]', state.root); 2988 var t = roomTotals(); 2989 if (meta) meta.textContent = t.count ? t.count + ' piece' + (t.count === 1 ? '' : 's') + (t.credit ? ', -' + money(t.credit) + ' credit' : '') : 'empty'; 2990 if (clear) clear.hidden = !t.count; 2991 if (plan) plan.innerHTML = t.count ? state.room.map(planPiece).join('') : '<span class="venn-empty">Pieces appear here as you add them.</span>'; 2992 if (list) list.innerHTML = t.count ? state.room.map(itemRow).join('') : '<div class="venn-empty">Your room is empty. Start with a setup above, or add a piece below.</div>'; 2993 if (chips) chips.innerHTML = ['Desk', 'Perch', 'Lounge', 'Floor', 'Stretch'].map(function (c) { return '<span class="venn-chip ' + (covered(c) ? 'is-on' : '') + '">' + c + '</span>'; }).join(''); 2994 if (totals) { 2995 totals.innerHTML = '<div class="venn-total-row"><span>Subtotal · ' + t.count + ' piece' + (t.count === 1 ? '' : 's') + '</span><strong>' + money(t.subtotal) + '</strong></div>' + 2996 (t.credit ? '<div class="venn-total-row is-credit"><span>Room credit</span><strong>-' + money(t.credit) + '</strong></div>' : '') + 2997 '<div class="venn-total-row is-total"><span>Today</span><strong>' + money(t.total) + '</strong></div>' + 2998 roomCheckoutMarkup(t.count); 2999 } 3000 } 3001 function roomCheckoutMarkup(count) { 3002 if (!count) return ''; 3003 var summary = roomCartSummary(); 3004 if (summary.count && summary.added === summary.count) { 3005 return '<div class="venn-room-checkout">' + roomTrustMarkup() + '<button type="button" class="venn-btn venn-btn-primary" data-venn-room-review>Review cart</button><p>' + summary.added + ' of ' + summary.count + ' piece' + (summary.count === 1 ? '' : 's') + ' added to cart.</p></div>'; 3006 } 3007 var label = summary.count === 1 ? 'Add to cart' : 'Add setup to cart'; 3008 var t = roomTotals(); 3009 return '<div class="venn-room-checkout">' + roomUpgradeIncentiveMarkup(t) + '<button type="button" class="venn-btn venn-btn-primary" data-venn-room-add-remaining ' + (state.roomAdding ? 'disabled aria-busy="true"' : '') + '>' + (state.roomAdding ? 'Adding to cart...' : label) + '</button>' + (summary.failed ? '<p class="is-error">One piece could not be added. Try again.</p>' : '') + roomTrustMarkup() + '</div>'; 3010 } 3011 function dots(items) { 3012 return items.map(function (it) { 3013 var d = it.type === 'cushion' ? 12 : it.size === 'Small' ? 18 : 22; 3014 return '<span class="venn-dot" style="width:' + d + 'px;height:' + d + 'px;' + itemTone(it) + '"></span>'; 3015 }).join(''); 3016 } 3017 function selectedDots(items) { 3018 return items.map(function (it) { 3019 var isCushion = it.type === 'cushion';
3020 var shortLabel = isCushion ? 'cushion' : it.size.toLowerCase(); 3021 var label = isCushion ? 'Sitting Cushion, ' + finishName(it.finish) : 'Air Chair, ' + finishName(it.finish) + ', ' + it.size; 3022 var url = currentNativeImageFor(it); 3023 var visual = url ? '<img src="' + esc(url) + '" alt="" loading="lazy" decoding="async">' : '<i' + imageAttrsForItem(it) + '></i>'; 3024 return '<span class="venn-selected-piece" role="img" aria-label="' + esc(label) + '" title="' + esc(label) + '"><span class="venn-selected-thumb">' + visual + '</span><small>' + esc(shortLabel) + '</small></span>'; 3025 }).join(''); 3026 } 3027 function setupSummary(items) { 3028 var chairs = items.filter(function (it) { return it.type === 'chair'; }).length; 3029 var cushions = items.filter(function (it) { return it.type === 'cushion'; }).length; 3030 var parts = []; 3031 if (chairs) parts.push(chairs + ' Air Chair' + (chairs === 1 ? '' : 's')); 3032 if (cushions) parts.push(cushions + ' Sitting Cushion' + (cushions === 1 ? '' : 's')); 3033 return parts.join(' + '); 3034 } 3035 function planPiece(item) { 3036 var d = item.type === 'cushion' ? 12 : item.size === 'Small' ? 18 : 22; 3037 return '<button type="button" class="venn-plan-piece" data-venn-edit="' + item.uid + '"><i style="width:' + d + 'px;height:' + d + 'px;' + itemTone(item) + '"></i><small>' + (item.type === 'cushion' ? 'cushion' : item.size.toLowerCase()) + '</small></button>'; 3038 } 3039 function itemRow(item) { 3040 var editing = state.editing === item.uid; 3041 var status = itemCartStatus(item); 3042 var statusText = status === 'added' ? 'Added to cart' : status === 'adding' ? 'Adding to cart' : status === 'failed' ? 'Add failed' : 'Planned'; 3043 return '<div class="venn-item"><div class="venn-item-row"><button type="button" class="venn-item-thumb" data-venn-edit="' + item.uid + '" aria-label="Edit ' + esc(finishName(item.finish)) + '" title="Edit"><span' + imageAttrsForItem(item) + '></span></button><div class="venn-item-info"><div class="venn-item-kind">' + (item.type === 'chair' ? 'Air Chair' : 'Sitting Cushion') + '</div><div class="venn-item-name">' + esc(finishName(item.finish)) + '</div><div class="venn-item-spec">' + esc(item.type === 'chair' ? item.size + ' - ' + (item.size === 'Large' ? '65 cm desk height' : '55 cm lounge height') : 'Buckwheat + wool') + ' <span class="venn-cart-state is-' + esc(status) + '">' + esc(statusText) + '</span></div></div><strong class="venn-item-price">' + money(priceFor(item)) + '</strong><div class="venn-item-actions"><button type="button" class="venn-icon-btn ' + (editing ? 'is-active' : '') + '" data-venn-edit="' + item.uid + '" aria-label="Edit" title="Edit">' + iconSvg('edit') + '</button><button type="button" class="venn-icon-btn" data-venn-duplicate="' + item.uid + '" aria-label="Duplicate" title="Duplicate">' + iconSvg('copy') + '</button><button type="button" class="venn-icon-btn" data-venn-remove="' + item.uid + '" aria-label="Remove" title="Remove">' + iconSvg('remove') + '</button></div></div>' + (editing ? editor(item) : '') + '</div>'; 3044 } 3045 function editor(item) { 3046 if (item.type !== 'chair') return cushionEditor(item); 3047 var itemSeries = seriesForFinish(item.finish).key; 3048 var finishes = finishesForSeries(itemSeries); 3049 return '<div class="venn-editor">' + 3050 '<div><div class="venn-editor-label">Series</div><div class="venn-editor-row venn-editor-series">' + SERIES.map(function (s) { return '<button type="button" data-venn-edit-series="' + item.uid + ':' + s.key + '" class="' + (s.key === itemSeries ? 'is-active' : '') + '">' + esc(s.label) + '</button>'; }).join('') + '</div></div>' + 3051 '<div><div class="venn-editor-label">Finish</div><div class="venn-editor-row venn-editor-finishes">' + finishes.map(function (finish) { return finishChipMarkup(finish, key(finish) === key(item.finish), 'data-venn-edit-finish="' + item.uid + ':' + esc(finish) + '"', 'venn-editor-finish'); }).join('') + '</div></div>' + 3052 '<div><div class="venn-editor-label">Size</div><div class="venn-editor-row">' + ['Large','Small'].map(function (size) { return '<button type="button" data-venn-edit-size="' + item.uid + ':' + size + '" class="' + (item.size === size ? 'is-active' : '') + '">' + size + '</button>'; }).join('') + '</div></div>' + 3053 '<button type="button" class="venn-btn venn-btn-secondary" data-venn-done>Done</button></div>'; 3054 } 3055 function cushionEditor(item) { 3056 decorateCushionItem(item); 3057 var family = item.family || 'Standard';
3058 var selected = resolveCushionProduct(item); 3059 return '<div class="venn-editor">' + 3060 '<div><div class="venn-editor-label">Family</div><div class="venn-editor-row venn-editor-series">' + ['Standard','Pendleton'].map(function (f) { return '<button type="button" data-venn-edit-cushion-family="' + item.uid + ':' + f + '" class="' + (f === family ? 'is-active' : '') + '">' + f + '</button>'; }).join('') + '</div></div>' + 3061 '<div><div class="venn-editor-label">Finish</div><div class="venn-editor-row venn-cushion-rail">' + cushionProducts(family).map(function (product) { return cushionProductChip(product, selected && product.key === selected.key, 'data-venn-edit-cushion="' + item.uid + ':' + esc(product.key) + '"', ''); }).join('') + '</div></div>' + 3062 '<p class="venn-cushion-note">' + (selected ? esc(selected.title) + ' - ' + money(selected.salePrice || selected.price) : 'Select a verified Cushion.') + '</p>' + 3063 '<button type="button" class="venn-btn venn-btn-secondary" data-venn-done>Done</button></div>'; 3064 } 3065 function covered(label) { 3066 return state.room.some(function (it) { 3067 if (label === 'Desk') return it.type === 'chair' && it.size === 'Large'; 3068 if (label === 'Perch') return it.type === 'chair'; 3069 if (label === 'Lounge' || label === 'Stretch') return it.type === 'chair' && it.size === 'Small'; 3070 if (label === 'Floor') return it.type === 'cushion'; 3071 return false; 3072 }); 3073 } 3074 3075 function usePreset(id) { 3076 var preset = PRESETS.find(function (p) { return p.id === id; }) || PRESETS[0]; 3077 state.activePreset = preset.id; 3078 applyIntentToActiveSetup(); 3079 syncNative(state.finish, state.size); 3080 applyVariantImage(state.finish, state.size); 3081 render(); 3082 } 3083 function addCurrentChair() { 3084 if (state.addingAirChair || !state.available) return; 3085 clearTimeout(state.airChairTimer); 3086 state.airChairAdded = false; 3087 state.addingAirChair = true; 3088 renderConfig(); 3089 syncNative(state.finish, state.size).then(function (ok) { 3090 if (!ok) { 3091 state.addingAirChair = false; 3092 setStatus('Could not add this Air Chair. Please try again.', true); 3093 renderConfig(); 3094 return; 3095 } 3096 var controls = nativeControls(); 3097 if (controls.add && !controls.add.disabled && controls.add.getAttribute('aria-disabled') !== 'true') { 3098 controls.add.click(); 3099 var planned = firstPlannedRoomItem(function (item) { return sameChair(item, state.finish, state.size); }); 3100 if (planned) { 3101 planned.cartStatus = 'added'; 3102 planned.nativeImage = imageForFinish(state.finish, state.size); 3103 } else { 3104 var openPlannedChair = state.room.find(function (item) { 3105 return item.type === 'chair' && itemCartStatus(item) !== 'added' && itemCartStatus(item) !== 'adding'; 3106 }); 3107 if (openPlannedChair) { 3108 openPlannedChair.finish = state.finish; 3109 openPlannedChair.size = state.size; 3110 openPlannedChair.nativeImage = imageForFinish(state.finish, state.size); 3111 openPlannedChair.cartStatus = 'added'; 3112 } else { 3113 var addedChair = withUid(chair(state.finish, state.size)); 3114 addedChair.cartStatus = 'added'; 3115 addedChair.nativeImage = imageForFinish(state.finish, state.size); 3116 state.room.push(addedChair); 3117 } 3118 } 3119 state.addingAirChair = false; 3120 state.airChairAdded = true; 3121 state.nativeCartAdds += 1; 3122 renderConfig(); 3123 renderRoom(); 3124 state.airChairTimer = setTimeout(function () { 3125 state.airChairAdded = false; 3126 renderConfig(); 3127 }, 1300); 3128 } else { 3129 state.addingAirChair = false; 3130 setStatus('Could not add this Air Chair. Please try again.', true); 3131 renderConfig(); 3132 } 3133 }); 3134 } 3135 function addChairRoomItemToCart(item) { 3136 item.cartStatus = 'adding'; 3137 renderRoom(); 3138 return syncNative(item.finish, item.size).then(function (ok) { 3139 if (!ok) throw new Error('Could not add this Air Chair.'); 3140 var controls = nativeControls(); 3141 if (!controls.add || controls.add.disabled || controls.add.getAttribute('aria-disabled') === 'true') throw new Error('Native Air Chair Add to Cart was not available.'); 3142 controls.add.click(); 3143 item.cartStatus = 'added'; 3144 state.nativeCartAdds += 1; 3145 renderRoom(); 3146 return true; 3147 }).catch(function (err) { 3148 item.cartStatus = 'failed'; 3149 renderRoom(); 3150 throw err; 3151 }); 3152 } 3153 function addCushionNativeProductToCart(mappedProduct) { 3154 if (!validateCushionProductBlock()) throw new Error(state.cushionNativeError || 'Native Sitting Cushion inline Product Block controls were not found.'); 3155 var productRoot = cushionProductRoot(); 3156 if (!productRoot) throw new Error('Native Sitting Cushion Product Block was not found.'); 3157 return syncNativeCushion(mappedProduct, productRoot).then(function (ok) { 3158 if (!ok) throw new Error(state.cushionNativeError || 'Native Sitting Cushion variant did n
3158ot verify.'); 3159 var controls = cushionNativeControls(productRoot); 3160 if (!controls.add) throw new Error('Native Sitting Cushion Add to Cart was not found.'); 3161 var before = cartSignal(); 3162 controls.add.click(); 3163 return waitForCushionAddResult(productRoot, before, 0).then(function (added) { 3164 if (!added) throw new Error('Squarespace did not confirm the Sitting Cushion add.'); 3165 state.nativeCartAdds += 1; 3166 return true; 3167 }); 3168 }); 3169 } 3170 function addCushionRoomItemToCart(item) { 3171 var product = resolveCushionProduct(item); 3172 if (!product) return Promise.reject(new Error('Could not resolve this Sitting Cushion.')); 3173 item.cartStatus = 'adding'; 3174 renderRoom(); 3175 return addCushionNativeProductToCart(product).then(function () { 3176 applyCushionProduct(item, product); 3177 item.cartStatus = 'added'; 3178 renderRoom(); 3179 return true; 3180 }).catch(function (err) { 3181 item.cartStatus = 'failed'; 3182 renderRoom(); 3183 throw err; 3184 }); 3185 } 3186 function addRoomItemToCart(item) { 3187 return item.type === 'cushion' ? addCushionRoomItemToCart(item) : addChairRoomItemToCart(item); 3188 } 3189 function addRemainingRoomItems() { 3190 if (state.roomAdding) return; 3191 var remaining = state.room.filter(function (item) { return itemCartStatus(item) !== 'added'; }); 3192 if (!remaining.length) return; 3193 state.roomAdding = true; 3194 renderRoom(); 3195 var chain = Promise.resolve(); 3196 remaining.forEach(function (item) { 3197 chain = chain.then(function () { return addRoomItemToCart(item); }); 3198 }); 3199 chain.then(function () { 3200 state.roomAdding = false; 3201 setStatus('Room pieces added to Squarespace cart.', false); 3202 renderRoom(); 3203 }).catch(function (err) { 3204 state.roomAdding = false; 3205 setStatus(err.message || 'Could not add every room piece.', true); 3206 renderRoom(); 3207 }); 3208 } 3209 function addMappedCushionToCart(mappedProduct) { 3210 state.cushionCartFallback = null; 3211 if (!mappedProduct || !mappedProduct.available || !mappedProduct.itemId || !mappedProduct.variantId || !mappedProduct.sku) { 3212 setStatus('Select an available Sitting Cushion before adding.', true); 3213 return false; 3214 } 3215 if (state.addingCushion) return false; 3216 clearTimeout(state.cushionTimer); 3217 state.cushionAdded = false; 3218 state.addingCushion = true; 3219 state.cushionPendingProduct = mappedProduct; 3220 renderConfig(); 3221 Promise.resolve().then(function () { 3222 return addCushionNativeProductToCart(mappedProduct).then(function () { 3223 var planned = firstPlannedRoomItem(function (item) { return sameCushion(item, mappedProduct); }); 3224 if (planned) { 3225 applyCushionProduct(planned, mappedProduct); 3226 planned.cartStatus = 'added'; 3227 } else { 3228 state.room.push(withUid(decorateCushionItem({ type: 'cushion', cushionKey: mappedProduct.key, family: mappedProduct.family, finish: mappedProduct.nativeFinish || mappedProduct.finish, size: 'One Size', variantId: mappedProduct.variantId, sku: mappedProduct.sku, itemId: mappedProduct.itemId, cartStatus: 'added' }))); 3229 } 3230 state.addingCushion = false; 3231 state.cushionAdded = true; 3232 state.cushionPendingProduct = null; 3233 setStatus('Sitting Cushion added through Squarespace.', false); 3234 render(); 3235 state.cushionTimer = setTimeout(function () { 3236 state.cushionAdded = false; 3237 renderConfig(); 3238 }, 1300); 3239 return true; 3240 }); 3241 }).catch(function (err) { 3242 state.addingCushion = false; 3243 state.cushionAdded = false; 3244 state.cushionNativeReady = false; 3245 state.cushionNativeKey = ''; 3246 state.cushionNativeError = err.message; 3247 state.cushionPendingProduct = null; 3248 setStatus(err.message || 'Could not add this Sitting Cushion. Please try again.', true); 3249 renderConfig(); 3250 return false; 3251 }); 3252 return false; 3253 } 3254 function bind() { 3255 if (state.bound || !state.root) return; 3256 state.bound = true; 3257 state.root.addEventListener('click', function (event) { 3258 var root = state.root; 3259 if (!root.contains(event.target)) return; 3260 var gallery = event.target.closest('[data-venn-gallery]'); 3261 var preset = event.target.closest('[data-venn-preset]'); 3262 var series = event.target.closest('[data-venn-series-key]'); 3263 var finish = event.target.closest('[data-venn-finish]'); 3264 var size = event.target.closest('[data-venn-size]'); 3265 var edit = event.target.closest('[data-venn-edit]'); 3266 var remove = event.target.closest('[data-venn-remove]');
3267 var duplicate = event.target.closest('[data-venn-duplicate]'); 3268 var editSize = event.target.closest('[data-venn-edit-size]'); 3269 var editSeries = event.target.closest('[data-venn-edit-series]'); 3270 var editFinish = event.target.closest('[data-venn-edit-finish]'); 3271 var cushionFamily = event.target.closest('[data-venn-cushion-family]'); 3272 var cushionPick = event.target.closest('[data-venn-cushion-pick]'); 3273 var editCushionFamily = event.target.closest('[data-venn-edit-cushion-family]'); 3274 var editCushion = event.target.closest('[data-venn-edit-cushion]'); 3275 if (gallery) { state.gallery = Number(gallery.getAttribute('data-venn-gallery')) || 0; renderGallery(); return; } 3276 if (preset) { usePreset(preset.getAttribute('data-venn-preset')); return; } 3277 if (series) { 3278 state.series = series.getAttribute('data-venn-series-key'); 3279 state.finish = finishesForSeries(state.series)[0] || state.finish; 3280 state.renderedFinishSeries = ''; 3281 applyIntentToActiveSetup(); 3282 syncNative(state.finish, state.size); 3283 applyVariantImage(state.finish, state.size); 3284 render(); 3285 return; 3286 } 3287 if (finish) { 3288 state.finish = finish.getAttribute('data-venn-finish'); 3289 state.series = seriesForFinish(state.finish).key; 3290 applyIntentToActiveSetup(); 3291 syncNative(state.finish, state.size); 3292 applyVariantImage(state.finish, state.size); 3293 render(); 3294 return; 3295 } 3296 if (size) { 3297 state.size = size.getAttribute('data-venn-size'); 3298 applyIntentToActiveSetup(); 3299 syncNative(state.finish, state.size); 3300 applyVariantImage(state.finish, state.size); 3301 render(); 3302 return; 3303 } 3304 if (event.target.closest('[data-venn-add-air-chair]')) { addCurrentChair(); return; } 3305 if (event.target.closest('[data-venn-room-review]')) { 3306 if (!openNativeCart()) setStatus('Open the Squarespace cart from the site header to checkout.', true); 3307 return; 3308 } 3309 if (event.target.closest('[data-venn-room-add-remaining]')) { 3310 addRemainingRoomItems(); 3311 return; 3312 } 3313 if (event.target.closest('[data-venn-add-cushion]')) { 3314 if (!state.cushionOpen) { 3315 state.cushionOpen = true; 3316 state.selectedCushionKey = ''; 3317 state.cushionCartFallback = null; 3318 state.cushionNativeReady = false; 3319 state.cushionNativeKey = ''; 3320 state.cushionNativeError = ''; 3321 renderConfig(); 3322 setStatus('Choose a Sitting Cushion finish.', false); 3323 return; 3324 } 3325 if (!state.selectedCushionKey) { 3326 state.cushionOpen = false; 3327 state.cushionCartFallback = null; 3328 state.cushionNativeReady = false; 3329 state.cushionNativeKey = ''; 3330 state.cushionNativeError = ''; 3331 renderConfig(); 3332 setStatus('', false); 3333 return; 3334 } 3335 addMappedCushionToCart(cushionProductByKey(state.selectedCushionKey, state.cushionFamily)); 3336 return; 3337 } 3338 if (cushionFamily) { 3339 state.cushionFamily = cushionFamily.getAttribute('data-venn-cushion-family'); 3340 state.selectedCushionKey = ''; 3341 state.cushionCartFallback = null; 3342 state.cushionNativeReady = false; 3343 state.cushionNativeKey = ''; 3344 state.cushionNativeError = ''; 3345 renderConfig(); 3346 return; 3347 } 3348 if (cushionPick) { 3349 state.selectedCushionKey = cushionPick.getAttribute('data-venn-cushion-pick'); 3350 state.cushionCartFallback = null; 3351 state.cushionNativeReady = false; 3352 state.cushionNativeKey = ''; 3353 state.cushionNativeError = ''; 3354 renderConfig(); 3355 return; 3356 } 3357 if (event.target.closest('[data-venn-clear-room]')) { state.room = []; state.editing = null; state.roomAdding = false; render(); return; } 3358 if (edit) { var editId = edit.getAttribute('data-venn-edit'); state.editing = state.editing === editId ? null : editId; renderRoom(); return; } 3359 if (remove) { state.room = state.room.filter(function (it) { return it.uid !== remove.getAttribute('data-venn-remove'); }); renderRoom(); return; } 3360 if (duplicate) { 3361 var src = state.room.find(function (it) { return it.uid === duplicate.getAttribute('data-venn-dupl
3361icate'); }); 3362 if (src) { 3363 var copy = withUid(src); 3364 copy.cartStatus = 'planned'; 3365 state.room.push(copy); 3366 } 3367 renderRoom(); 3368 return; 3369 } 3370 if (editSeries) { 3371 var seriesParts = editSeries.getAttribute('data-venn-edit-series').split(':'); 3372 var seriesItem = state.room.find(function (it) { return it.uid === seriesParts[0]; }); 3373 var firstFinish = finishesForSeries(seriesParts[1])[0]; 3374 if (seriesItem && firstFinish) { 3375 seriesItem.finish = firstFinish; 3376 seriesItem.nativeImage = imageForFinish(seriesItem.finish, seriesItem.size); 3377 seriesItem.cartStatus = 'planned'; 3378 state.finish = canonicalFinish(seriesItem.finish); 3379 state.size = seriesItem.size || state.size; 3380 state.series = seriesForFinish(state.finish).key; 3381 state.renderedFinishSeries = ''; 3382 syncNative(state.finish, state.size); 3383 } 3384 render(); 3385 return; 3386 } 3387 if (editFinish) { 3388 var finishValue = editFinish.getAttribute('data-venn-edit-finish'); 3389 var finishUid = finishValue.slice(0, finishValue.indexOf(':')); 3390 var nextFinish = finishValue.slice(finishValue.indexOf(':') + 1); 3391 var finishItem = state.room.find(function (it) { return it.uid === finishUid; }); 3392 if (finishItem) { 3393 finishItem.finish = nextFinish; 3394 finishItem.nativeImage = imageForFinish(finishItem.finish, finishItem.size); 3395 finishItem.cartStatus = 'planned'; 3396 state.finish = canonicalFinish(finishItem.finish); 3397 state.size = finishItem.size || state.size; 3398 state.series = seriesForFinish(state.finish).key; 3399 state.renderedFinishSeries = ''; 3400 syncNative(state.finish, state.size); 3401 } 3402 render(); 3403 return; 3404 } 3405 if (editSize) { 3406 var parts = editSize.getAttribute('data-venn-edit-size').split(':'); 3407 var item = state.room.find(function (it) { return it.uid === parts[0]; }); 3408 if (item) { 3409 item.size = parts[1]; 3410 item.nativeImage = imageForFinish(item.finish, item.size); 3411 item.cartStatus = 'planned'; 3412 if (item.type === 'chair') { 3413 state.finish = canonicalFinish(item.finish); 3414 state.size = item.size || state.size; 3415 state.series = seriesForFinish(state.finish).key; 3416 state.renderedFinishSeries = ''; 3417 syncNative(state.finish, state.size); 3418 } 3419 } 3420 render(); 3421 return; 3422 } 3423 if (editCushionFamily) { 3424 var cushionFamilyParts = editCushionFamily.getAttribute('data-venn-edit-cushion-family').split(':'); 3425 var cushionFamilyItem = state.room.find(function (it) { return it.uid === cushionFamilyParts[0]; }); 3426 var firstCushion = cushionProducts(cushionFamilyParts[1])[0]; 3427 if (cushionFamilyItem && firstCushion) { 3428 applyCushionProduct(cushionFamilyItem, firstCushion); 3429 cushionFamilyItem.cartStatus = 'planned'; 3430 } 3431 renderRoom(); 3432 return; 3433 } 3434 if (editCushion) { 3435 var cushionValue = editCushion.getAttribute('data-venn-edit-cushion'); 3436 var cushionUid = cushionValue.slice(0, cushionValue.indexOf(':')); 3437 var cushionKey = cushionValue.slice(cushionValue.indexOf(':') + 1); 3438 var cushionItem = state.room.find(function (it) { return it.uid === cushionUid; }); 3439 if (cushionItem) { 3440 var nextCushion = cushionProductByKey(cushionKey, cushionItem.family || 'Standard') || cushionProductByKey(cushionKey, 'Standard') || cushionProductByKey(cushionKey, 'Pendleton'); 3441 if (nextCushion) { 3442 applyCushionProduct(cushionItem, nextCushion); 3443 cushionItem.cartStatus = 'planned'; 3444 } 3445 } 3446 renderRoom(); 3447 return; 3448 } 3449 if (event.target.closest('[data-venn-done]')) { state.editing = null; renderRoom(); } 3450 }); 3451 } 3452 3453 function vafLabelFromThumb(node) { 3454 var img = qs('img', node); 3455 var small = qs('small', node); 3456 return normalize( 3457 node.getAttribute('data-vaf-finish') || 3458 node.getAttribute('title') || 3459 node.getAttribute('aria-label') || 3460 (img && img.alt) || 3461 (small && small.textContent) || 3462 node.textContent 3463 ).replace(/^Configure\s+/i, '').replace(/^Preview\s+/i, '').replace(/[ââ]/g, '').trim(); 3464 } 3465 function vafScope(node) { 3466 return node && (node.closest('.vaf-world-row') || node.closest('.vaf-world-row-dark') || node.closest('.vaf-world-sports-target') || node.closest('.vaf-pair-card') || node.closest('.vaf-section')); 3467 } 3468 function vafFamilyFromScope(scope) { 3469 var text = scope ? scope.textContent.toLowerCase() : ''; 3470 if (text.indexOf('pendleton jacquard') > -1) return 'Pendleton Jacquard'; 3471 if (text.indexOf('pendleton wool') > -1) return 'Pendleton Wool'; 3472 if (text.indexOf('sports series') > -1) return 'Sports'; 3473 if (text.indexOf('solar series') > -1) return 'Solar'; 3474 return 'Standard'; 3475 } 3476 function vafFinishFromNode(node) { 3477 var raw = node.getAttribute('data-vaf-finish'); 3478 if (raw) return normalize(raw).replace(/\\u2014/g, '\u2014'); 3479 var label = vafLabelFromThumb(node).replace(/\s*Air Chair\s*$/i, '').replace(/\s*Series\s*$/i, '').replace(/\s*360.*$/i, '').trim(); 3480 if (!label) return ''; 3481 if (label.indexOf('\u2014') > -1) return label; 3482 return vafFamilyFromScope(vafScope(node)) + ' \u2014 ' + label; 3483 } 3484 function vafImageFromNode(node) { 3485 var img = qs('img', node); 3486 var src = img && img.getAttribute('src'); 3487 if (!src) return ''; 3488 if (/squarespace-cdn\.com|static1\.squarespace\.com/.test(src)) return src.replace(/\?.*$/, '') + '?format=1000w'; 3489 return src; 3490 } 3491 function vafPreviewForScope(scope) { 3492 return scope && (qs('img[data-vaf-air-main]', scope) || qs('.vaf-world-image img', scope) || qs('figure img', scope)); 3493 } 3494 function vafSetActive(scope, node) { 3495 if (!scope || !node) return; 3496 qsa('.vaf-real-thumb, .vaf-sport-item', scope).forEach(function (item) { item.classList.remove('is-active'); }); 3497 node.classList.add('is-active'); 3498 } 3499 function vafUpdatePreview(node) { 3500 var scope = vafScope(node); 3501 var finish = vafFinishFromNode(node); 3502 var size = node.getAttribute('data-vaf-size') || (node.closest('[data-size]') && node.closest('[data-size]').getAttribute('data-size')) || 'Large'; 3503 var preview = vafPreviewForScope(scope); 3504 var src = vafImageFromNode(node); 3505 if (scope && finish) { 3506 scope.setAttribute('data-vaf-selected-finish', finish); 3507 scope.setAttribute('data-vaf-selected-size', size); 3508 } 3509 if (preview && src) { 3510 preview.removeAttribute('srcset'); 3511 preview.src = src; 3512 preview.setAttribute('data-vaf-air-main', finish); 3513 preview.setAttribute('data-vaf-size', size);
3514 preview.alt = finishName(finish) + ' Air Chair'; 3515 } 3516 if (finish) preloadVariantImage(finish, size); 3517 vafSetActive(scope, node); 3518 } 3519 function vafSelectedFromScope(scope) { 3520 var active = scope && (qs('.vaf-real-thumb.is-active', scope) || qs('.vaf-sport-item.is-active', scope)); 3521 var finish = scope && scope.getAttribute('data-vaf-selected-finish'); 3522 var size = scope && scope.getAttribute('data-vaf-selected-size') || 'Large'; 3523 if (!finish && active) { 3524 finish = vafFinishFromNode(active); 3525 size = active.getAttribute('data-vaf-size') || size; 3526 } 3527 if (!finish) { 3528 var preview = vafPreviewForScope(scope); 3529 finish = preview && preview.getAttribute('data-vaf-air-main'); 3530 size = preview && preview.getAttribute('data-vaf-size') || size; 3531 } 3532 if (!finish) { 3533 var first = scope && (qs('.vaf-real-thumb', scope) || qs('.vaf-sport-item', scope)); 3534 finish = first && vafFinishFromNode(first); 3535 size = first && first.getAttribute('data-vaf-size') || size; 3536 } 3537 return { finish: finish || '', size: size || 'Large' }; 3538 } 3539 function bindAfterHeroWorlds() { 3540 if (window.__VENN_AFTER_HERO_WORLDS_BOUND__) return; 3541 window.__VENN_AFTER_HERO_WORLDS_BOUND__ = true; 3542 3543 document.addEventListener('click', function (event) { 3544 var root = qs('#venn-worlds-and-sizes-final'); 3545 if (!root) return; 3546 3547 var thumb = event.target.closest('#venn-worlds-and-sizes-final .vaf-real-thumb, #venn-worlds-and-sizes-final .vaf-sport-item'); 3548 if (thumb) { 3549 event.preventDefault(); 3550 event.stopPropagation(); 3551 vafUpdatePreview(thumb); 3552 return; 3553 } 3554 3555 var link = event.target.closest('#venn-worlds-and-sizes-final .vaf-text-link'); 3556 if (link) { 3557 var selected = vafSelectedFromScope(vafScope(link)); 3558 if (selected.finish) { 3559 event.preventDefault(); 3560 event.stopPropagation(); 3561 selectAirChairIntent(selected.finish, selected.size, { scroll: true }); 3562 } 3563 } 3564 }, true); 3565 3566 var sizeRoot = qs('#venn-worlds-and-sizes-final .vaf-size-target'); 3567 if (sizeRoot) { 3568 var triggers = qsa('.vaf-size-tabs span, .vaf-size-tabs button, [data-view-trigger]', sizeRoot); 3569 ['room', 'large', 'small'].forEach(function (view, i) { 3570 var trigger = triggers[i]; 3571 if (!trigger) return; 3572 trigger.setAttribute('role', 'button'); 3573 trigger.setAttribute('tabindex', '0'); 3574 trigger.setAttribute('data-view-trigger', view); 3575 trigger.addEventListener('click', function () { 3576 sizeRoot.setAttribute('data-view', view); 3577 triggers.forEach(function (t) { t.classList.toggle('is-active', t === trigger); }); 3578 }); 3579 trigger.addEventListener('keydown', function (e) { 3580 if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); trigger.click(); } 3581 }); 3582 }); 3583 } 3584 3585 window.VENN_SELECT_AIR_CHAIR_INTENT = selectAirChairIntent; 3586 } 3587 3588 function init() { 3589 state.root = qs(ROOT_SELECTOR); 3590 if (!state.root || state.root.getAttribute('data-venn-mounted') === 'true') return; 3591 state.root.setAttribute('data-venn-mounted', 'true'); 3592 state.mounted = true; 3593 bind(); 3594 render(); 3595 tryMarkNativeReady(0); 3596 try { validateCushionProductBlock(); } 3597 catch (err) { 3598 state.cushionNativeError = err.message || 'Native Sitting Cushion bridge did not initialize.'; 3599 } 3600 renderConfig(); 3601 bindAfterHeroWorlds(); 3602 window.VENN_SELECT_AIR_CHAIR_INTENT = selectAirChairIntent; 3603 } 3604 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); 3605 else init(); 3606})(); 3607</script>
3607 3608 3609 3610 3611 3612<!-- Venn Motion Loader â V6 godmode choreography -->
3613<script> 3614(function () { 3615 if (window.__VENN_MOTION_LOADER_V6__) return; 3616 window.__VENN_MOTION_LOADER_V6__ = true; 3617 3618 var loaded = false; 3619 var loading = false; 3620 var base = 'https://venn-motion.pages.dev/'; 3621 3622 function appendScript(src, done) { 3623 var s = document.createElement('script'); 3624 s.src = src; 3625 s.async = true; 3626 s.onload = done || function () {}; 3627 s.onerror = function () { 3628 console.warn('Failed to load Venn motion file:', src); 3629 }; 3630 document.body.appendChild(s); 3631 } 3632 3633 function loadMotion() { 3634 if (loaded || loading) return; 3635 loading = true; 3636 3637 appendScript(base + 'motion-textures.js?v=6', function () { 3638 appendScript(base + 'motion.bundle.js?v=6', function () { 3639 loaded = true; 3640 }); 3641 }); 3642 } 3643 3644 function boot() { 3645 var movement = document.getElementById('movement'); 3646 if (!movement) return; 3647 3648 if (document.readyState === 'complete') { 3649 setTimeout(loadMotion, 300); 3650 } else { 3651 window.addEventListener('load', function () { 3652 setTimeout(loadMotion, 300); 3653 }, { once: true }); 3654 } 3655 3656 if ('IntersectionObserver' in window) { 3657 var io = new IntersectionObserver(function (entries) { 3658 if (entries.some(function (entry) { return entry.isIntersecting; })) { 3659 io.disconnect(); 3660 loadMotion(); 3661 } 3662 }, { rootMargin: '6500px 0px' }); 3663 3664 io.observe(movement); 3665 } 3666 3667 if (location.hash === '#movement') { 3668 loadMotion(); 3669 } 3670 } 3671 3672 if (document.readyState === 'loading') { 3673 document.addEventListener('DOMContentLoaded', boot); 3674 } else { 3675 boot(); 3676 } 3677})(); 3678</script>
3678<script data-sqs-type="imageloader-bootstrapper">if(window.ImageLoader) window.ImageLoader.bootstrap({}, document);</script>
3678<script>Squarespace.afterBodyLoad(Y);</script>
3678<svg xmlns="http://www.w3.org/2000/svg" version="1.1" style="display:none" data-usage="social-icons-svg"><symbol id="facebook-icon" viewBox="0 0 64 64"><path d="M34.1,47V33.3h4.6l0.7-5.3h-5.3v-3.4c0-1.5,0.4-2.6,2.6-2.6l2.8,0v-4.8c-0.5-0.1-2.2-0.2-4.1-0.2 c-4.1,0-6.9,2.5-6.9,7V28H24v5.3h4.6V47H34.1z"/></symbol><symbol id="facebook-mask" viewBox="0 0 64 64"><path d="M0,0v64h64V0H0z M39.6,22l-2.8,0c-2.2,0-2.6,1.1-2.6,2.6V28h5.3l-0.7,5.3h-4.6V47h-5.5V33.3H24V28h4.6V24 c0-4.6,2.8-7,6.9-7c2,0,3.6,0.1,4.1,0.2V22z"/></symbol><symbol id="instagram-unauth-icon" viewBox="0 0 64 64"><path d="M46.91,25.816c-0.073-1.597-0.326-2.687-0.697-3.641c-0.383-0.986-0.896-1.823-1.73-2.657c-0.834-0.834-1.67-1.347-2.657-1.73c-0.954-0.371-2.045-0.624-3.641-0.697C36.585,17.017,36.074,17,32,17s-4.585,0.017-6.184,0.09c-1.597,0.073-2.687,0.326-3.641,0.697c-0.986,0.383-1.823,0.896-2.657,1.73c-0.834,0.834-1.347,1.67-1.73,2.657c-0.371,0.954-0.624,2.045-0.697,3.641C17.017,27.415,17,27.926,17,32c0,4.074,0.017,4.585,0.09,6.184c0.073,1.597,0.326,2.687,0.697,3.641c0.383,0.986,0.896,1.823,1.73,2.657c0.834,0.834,1.67,1.347,2.657,1.73c0.954,0.371,2.045,0.624,3.641,0.697C27.415,46.983,27.926,47,32,47s4.585-0.017,6.184-0.09c1.597-0.073,2.687-0.326,3.641-0.697c0.986-0.383,1.823-0.896,2.657-1.73c0.834-0.834,1.347-1.67,1.73-2.657c0.371-0.954,0.624-2.045,0.697-3.641C46.983,36.585,47,36.074,47,32S46.983,27.415,46.91,25.816z M44.21,38.061c-0.067,1.462-0.311,2.257-0.516,2.785c-0.272,0.7-0.597,1.2-1.122,1.725c-0.525,0.525-1.025,0.85-1.725,1.122c-0.529,0.205-1.323,0.45-2.785,0.516c-1.581,0.072-2.056,0.087-6.061,0.087s-4.48-0.015-6.061-0.087c-1.462-0.067-2.257-0.311-2.785-0.516c-0.7-0.272-1.2-0.597-1.725-1.122c-0.525-0.525-0.85-1.025-1.122-1.725c-0.205-0.529-0.45-1.323-0.516-2.785c-0.072-1.582-0.087-2.056-0.087-6.061s0.015-4.48,0.087-6.061c0.067-1.462,0.311-2.257,0.516-2.785c0.272-0.7,0.597-1.2,1.122-1.725c0.525-0.525,1.025-0.85,1.725-1.122c0.529-0.205,1.323-0.45,2.785-0.516c1.582-0.072,2.056-0.087,6.061-0.087s4.48,0.015,6.061,0.087c1.462,0.067,2.257,0.311,2.785,0.516c0.7,0.272,1.2,0.597,1.725,1.122c0.525,0.525,0.85,1.025,1.122,1.725c0.205,0.529,0.45,1.323,0.516,2.785c0.072,1.582,0.087,2.056,0.087,6.061S44.282,36.48,44.21,38.061z M32,24.297c-4.254,0-7.703,3.449-7.703,7.703c0,4.254,3.449,7.703,7.703,7.703c4.254,0,7.703-3.449,7.703-7.703C39.703,27.746,36.254,24.297,32,24.297z M32,37c-2.761,0-5-2.239-5-5c0-2.761,2.239-5,5-5s5,2.239,5,5C37,34.761,34.761,37,32,37z M40.007,22.193c-0.994,0-1.8,0.806-1.8,1.8c0,0.994,0.806,1.8,1.8,1.8c0.994,0,1.8-0.806,1.8-1.8C41.807,22.999,41.001,22.193,40.007,22.193z"/></symbol><symbol id="instagram-unauth-mask" viewBox="0 0 64 64"><path d="M43.693,23.153c-0.272-0.7-0.597-1.2-1.122-1.725c-0.525-0.525-1.025-0.85-1.725-1.122c-0.529-0.205-1.323-0.45-2.785-0.517c-1.582-0.072-2.056-0.087-6.061-0.087s-4.48,0.015-6.061,0.087c-1.462,0.067-2.257,0.311-2.785,0.517c-0.7,0.272-1.2,0.597-1.725,1.122c-0.525,0.525-0.85,1.025-1.122,1.725c-0.205,0.529-0.45,1.323-0.516,2.785c-0.072,1.582-0.087,2.056-0.087,6.061s0.015,4.48,0.087,6.061c0.067,1.462,0.311,2.257,0.516,2.785c0.272,0.7,0.597,1.2,1.122,1.725s1.025,0.85,1.725,1.122c0.529,0.205,1.323,0.45,2.785,0.516c1.581,0.072,2.056,0.087,6.061,0.087s4.48-0.015,6.061-0.087c1.462-0.067,2.257-0.311,2.785-0.516c0.7-0.272,1.2-0.597,1.725-1.122s0.85-1.025,1.122-1.725c0.205-0.529,0.45-1.323,0.516-2.785c0.072-1.582,0.087-2.056,0.087-6.061s-0.015-4.48-0.087-6.061C44.143,24.476,43.899,23.682,43.693,23.153z M32,39.703c-4.254,0-7.703-3.449-7.703-7.703s3.449-7.703,7.703-7.703s7.703,3.449,7.703,7.703S36.254,39.703,32,39.703z M40.007,25.793c-0.994,0-1.8-0.806-1.8-1.8c0-0.994,0.806-1.8,1.8-1.8c0.994,0,1.8,0.806,1.8,1.8C41.807,24.987,41.001,25.793,40.007,25.793z M0,0v64h64V0H0z M46.91,38.184c-0.073,1.597-0.326,2.687-0.697,3.641c-0.383,0.986-0.896,1.823-1.73,2.657c-0.834,0.834-1.67,1.347-2.657,1.73c-0.954,0.371-2.044,0.624-3.641,0.697C36.585,46.983,36.074,47,32,47s-4.585-0.017-6.184-0.09c-1.597-0.073-2.687-0.326-3.641-0.697c-0.986-0.383-1.823-0.896-2.657-1.73c-0.834-0.834-1.347-1.67-1.73-2.657c-0.371-0.954-0.624-2.044-0.697-3.641C17.017,36.585,17,36.074,17,32c0-4.074,0.017-4.585,0.09-6.185c0.073-1.597,0.326-2.687,0.697-3.641c0.383-0.986,0.896-1.823,1.73-2.657c0.834-0.834,1.67-1.347,2.657-1.73c0.954-0.371,2.045-0.624,3.641-0.697C27.415,17.017,27.926,17,32,17s4.585,0.017,6.184,0.09c1.597,0.073,2.687,0.326,3.641,0.697c0.986,0.383,1.823,0.896,2.657,1.73c0.834,0.834,1.347,1.67,1.73,2.657c0.371,0.954,0.624,2.044,0.697,3.641C46.983,27.415,47,27.926,47,32C47,36.074,46.983,36.585,46.91,38.184z M32,27c-2.761,0-5,2.239-5,5s2.239,5,5,5s5-2.239,5-5S34.761,27,32,27z"/></symbol>
3678<symbol id="pinterest-unauth-icon" viewBox="0 0 64 64"><path d="M32,16c-8.8,0-16,7.2-16,16c0,6.6,3.9,12.2,9.6,14.7c0-1.1,0-2.5,0.3-3.7 c0.3-1.3,2.1-8.7,2.1-8.7s-0.5-1-0.5-2.5c0-2.4,1.4-4.1,3.1-4.1c1.5,0,2.2,1.1,2.2,2.4c0,1.5-0.9,3.7-1.4,5.7 c-0.4,1.7,0.9,3.1,2.5,3.1c3,0,5.1-3.9,5.1-8.5c0-3.5-2.4-6.1-6.7-6.1c-4.9,0-7.9,3.6-7.9,7.7c0,1.4,0.4,2.4,1.1,3.1 c0.3,0.3,0.3,0.5,0.2,0.9c-0.1,0.3-0.3,1-0.3,1.3c-0.1,0.4-0.4,0.6-0.8,0.4c-2.2-0.9-3.3-3.4-3.3-6.1c0-4.5,3.8-10,11.4-10 c6.1,0,10.1,4.4,10.1,9.2c0,6.3-3.5,11-8.6,11c-1.7,0-3.4-0.9-3.9-2c0,0-0.9,3.7-1.1,4.4c-0.3,1.2-1,2.5-1.6,3.4 c1.4,0.4,3,0.7,4.5,0.7c8.8,0,16-7.2,16-16C48,23.2,40.8,16,32,16z"/></symbol><symbol id="pinterest-unauth-mask" viewBox="0 0 64 64"><path d="M0,0v64h64V0H0z M32,48c-1.6,0-3.1-0.2-4.5-0.7c0.6-1,1.3-2.2,1.6-3.4c0.2-0.7,1.1-4.4,1.1-4.4 c0.6,1.1,2.2,2,3.9,2c5.1,0,8.6-4.7,8.6-11c0-4.7-4-9.2-10.1-9.2c-7.6,0-11.4,5.5-11.4,10c0,2.8,1,5.2,3.3,6.1 c0.4,0.1,0.7,0,0.8-0.4c0.1-0.3,0.2-1,0.3-1.3c0.1-0.4,0.1-0.5-0.2-0.9c-0.6-0.8-1.1-1.7-1.1-3.1c0-4,3-7.7,7.9-7.7 c4.3,0,6.7,2.6,6.7,6.1c0,4.6-2,8.5-5.1,8.5c-1.7,0-2.9-1.4-2.5-3.1c0.5-2,1.4-4.2,1.4-5.7c0-1.3-0.7-2.4-2.2-2.4 c-1.7,0-3.1,1.8-3.1,4.1c0,1.5,0.5,2.5,0.5,2.5s-1.8,7.4-2.1,8.7c-0.3,1.2-0.3,2.6-0.3,3.7C19.9,44.2,16,38.6,16,32 c0-8.8,7.2-16,16-16c8.8,0,16,7.2,16,16C48,40.8,40.8,48,32,48z"/></symbol><symbol id="twitter-unauth-icon" viewBox="0 0 64 64"><path d="M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z"/></symbol><symbol id="twitter-unauth-mask" viewBox="0 0 64 64"><path d="M0,0v64h64V0H0z M44.7,25.5c0,0.3,0,0.6,0,0.8C44.7,35,38.1,45,26.1,45c-3.7,0-7.2-1.1-10.1-2.9 c0.5,0.1,1,0.1,1.6,0.1c3.1,0,5.9-1,8.2-2.8c-2.9-0.1-5.3-2-6.1-4.6c0.4,0.1,0.8,0.1,1.2,0.1c0.6,0,1.2-0.1,1.7-0.2 c-3-0.6-5.3-3.3-5.3-6.4c0,0,0-0.1,0-0.1c0.9,0.5,1.9,0.8,3,0.8c-1.8-1.2-2.9-3.2-2.9-5.5c0-1.2,0.3-2.3,0.9-3.3 c3.2,4,8.1,6.6,13.5,6.9c-0.1-0.5-0.2-1-0.2-1.5c0-3.6,2.9-6.6,6.6-6.6c1.9,0,3.6,0.8,4.8,2.1c1.5-0.3,2.9-0.8,4.2-1.6 c-0.5,1.5-1.5,2.8-2.9,3.6c1.3-0.2,2.6-0.5,3.8-1C47.1,23.4,46,24.5,44.7,25.5z"/></symbol></svg> 3679 3680 </body> 3681</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.